Programmeringsspråk: Hur Instagram är att tämja en multimiljon-line Python monster

0
118

Python är upphov ställer frågor av JavaScript: s dominans
Ökningen i frågor som drivs av intresse i Python och gemenskapen av nya programmerare.

Facebook ägda Instagram har närmare sin lösning för att förbättra programmet på ett sätt som förstärker Python ‘ s fördelar och minskar språket hinder för produktivitet i storskaliga projekt.

Bakom alla för-perfekt selfies på Instagram, den Facebook-ägda sociala nätverk är byggd på det populära programmeringsspråket Python.

Som Instagram ingenjörer detaljerad nyligen, Instagram Server – bakgrundsprogrammet av smartphone-app som miljontals millennials använda för att dela foton med vänner och sig själva – är nästan helt och hållet drivs av Python, den tredje mest populära språket bakom Java och JavaScript.

För att öka utvecklarnas produktivitet, Facebook ingenjörer har utvecklat open-source-verktyg som Python statisk typ checker, Bål, som Instagram använder för att analysera sin server kodbasen. Instagram ingenjörer har också skapat en utvecklare verktyg som LibCST för att analysera Python-kod.

Instagram ingenjörernas viktiga mål är att vara så produktiva som möjligt när du använder Python på en massiv skala, och de har visat hur de är att komma runt “ett par svaga punkter” när du använder språket.

Företaget vill också attrahera nya talanger, även om kodare är inte nödvändigtvis Python experter, vilket är anledningen till att man vill förklara för kodning kandidater hur det är att skapa verktyg för att hjälpa dem att bli mer produktiva.

Man vill också att hålla utvecklare som vill använda Python glad, så företaget driver Python utanför dess gränser. Det är därför Instagram ingenjörer har utvecklat strikt moduler ” för Python.

“En rimlig ta kan vara att vi som sträcker sig Python än vad det var avsett för. Det fungerar bra för mindre grupper på mindre codebases att upprätthålla god disciplin kring hur vi använder den, och vi bör byta till en mindre dynamisk språk”, skriver Instagram ingenjör Carl Meyer.

“Men vi är förbi den punkt codebase storlek där en omskrivning är även möjligt. Och ännu viktigare, trots att dessa smärtpunkter, det finns mycket mer som vi tycker om Python, och övergripande våra utvecklare tycker om att arbeta i Python. Så det är upp till oss att räkna ut hur vi kan göra Python arbeta på denna skala, och att fortsätta att arbeta som vi växer,” Meyer skriver.

Han förklarar att Python är lysande för snabb iteration eftersom du kan göra förändringar och se resultatet utan att behöva kompilera koden.

“Men med ett par miljoner rader kod (och en rörig beroendegraf), att utnyttja börjar surna”, skriver han.

Den Instagram-Server tar upp till en minut till start, vilket leder till en kritisk fördröjning när man testar nya funktioner och är långa nog för en utvecklare att vara upptagen med annat jobb och inte slutföra uppgiften.

Trots Python möjliggör snabbare utveckling av gånger, att det finns utmaningar med att använda det på omfattningen av Instagram.

“Eftersom importen kan ha godtyckliga biverkningar, det finns inget säkert sätt att stegvis uppdatera vår server [i Python]. Oavsett hur liten förändring, vi måste börja om från början varje gång, importera alla dessa moduler, åter-skapa alla de klasser och funktioner, kompilera alla dessa reguljära uttryck, etc,” Meyer skriver.

“Oftast, 99% av koden har inte ändrats sedan förra gången vi uppdaterade server, men vi måste göra om allt långsamt arbete ändå.”

Instagram utmaningar med hjälp av Python i skala spegel några av de svårigheter som hade Salesforce med det för sin CRM-analytics-produkten Einstein. Salesforce nyligen slagna ner Python-koden till förmån för Google-stödda Gå, eller Golang.

“Python är bra för att snabbt skriva högre nivå applikationer, men inte alltid leverera hög prestanda som behövs på ett företag,” en Salesforce-arkitekt förklaras.

I Instagram: s fall, Men tillägger att det inte bara skadar utvecklare, men medför en “betydande mängd slösat beräkna i produktionen”, eftersom Instagram kontinuerligt distribuerar och laddar en plats på produktionsservrar.

Meyer beskriver strikt moduler “som Instagram svar till Python’ s svagheter när det används i storskalig produktion miljöer

“Strikt moduler plats för några begränsningar på vad som kan hända på modul på högsta nivå. Alla modul-kod, inklusive inredare och funktioner/initializers kallas på grundnivå, måste vara ren (sidoeffekt gratis, ingen I/O). Detta verifieras statiskt vid kompileringen via abstrakta tolk, säger han.

“Detta innebär att strikt moduler sidoeffekt gratis på import: dålig interaktioner av import-tiden biverkningar är inte längre möjligt.”

Mer på Python och programmeringsspråk

Salesforce: Varför vi övergav Python för Googles Gå språket i Einstein Analytics
Python-inspirerade Nim: Version 1.0 av programmeringsspråk lanserar
Microsoft TypeScript-3.7: Programmeringsspråk beta landar med alla dessa funktioner
Google: Ta vår gratis Kotlin programmeringsspråk kurser för att skapa Android-apparMicrosoft: Vi vill att du ska lära dig Python programmering språk för gratisOracle: programmeringsspråket Java-13 är slut, det kommer göra dig mer produktivGoogle: Dart 2.5 programmeringsspråk SDK kommer att ‘förbättra’ utvecklareRaspberry Pi får MIT: s Skrapa 3 programmeringsspråk för RaspbianJulia programmeringsspråk: Användare att avslöja vad de älskar och hatar mest om detprogrammeringsspråket Python ‘s” existentiellt hot ” är en app distribution: Är detta svaret?Är Julia snabbast växande nytt programmeringsspråk? Statistik diagram snabba ökningen 2018Python vs R för data vetenskap: Professor priser programmeringsspråk rivalerProgrammering språk: Python förutspådde att köra C och Java i nästa 4 år Netflix: programmeringsspråket Python är bakom varje film du ström
Kan Maskin ersätta JavaScript? Användning av programmeringsspråk spin-off rusarÄr Julia nästa stora programmeringsspråk? MIT tänker så, som i version 1.0 landar TechRepublicMozilla radikala öppen källkod flytta hjälpte till att skriva om reglerna för teknisk CNET

Relaterade Ämnen:

CXO

Cloud

Big Data Analytics

Innovation

Tech och Arbete

Samarbete