Hvordan skrive fire millioner linjer med Python: Leksjoner fra Dropbox om å bruke programmeringsspråket i skala

De verste programmeringsspråkene å lære i 2019 Codementor lister opp de sliter språkene som kanskje ikke er verdt tiden din.

Mens Python er et enormt populært programmeringsspråk, har det begrensninger, ikke minst hvor vanskelig det er å skrive veldig store og sammensatte kodebaser.

Må-lese utviklerinnhold

  • Java og JavaScript dominerte programvareutvikling på 2010-tallet
  • Hvordan bli utvikler: Et jukseark
  • 10 måter å forhindre utbrenthet av utviklere (gratis PDF)
  • Python spiser verden: Hvordan en utviklerens sideprosjekt ble det hotteste programmeringsspråket på planeten

Hvis det er noe selskap som er kjent med utfordringene ved å bruke Python i skala, er det skylagringsselskapet Dropbox.

Dropbox har distribuert mer enn fire millioner linjer med Python-kode og er et av et økende antall selskaper som kommenterer kode skrevet på det dynamiske programmeringsspråket for å gjøre det lettere å feilsøke og forstå.

Ved å kommentere Python-kode kan utviklere indikere datatyper for variabler, samt typer for funksjonsargumenter og returverdier. Denne praksisen har forskjellige fordeler, hvorav den ene bruker en statisk type kontroller.

En type kontroller som mypy lar utviklere få øye på en klasse av feil som ellers kan gli gjennom i programvare, ved å gjøre det lettere å kjøre sjekker før koden blir utført. Disse kontrollene kan bekrefte forskjellige operasjoner, for eksempel om dataene som sendes til og fra funksjoner er av riktig type.

Mens Python fremdeles er et dynamisk maskinskrevet språk, fikk Python 3.5 i 2015 støtte for Type Hints, som lar utviklere inkludere merknader som kan granskes av en type kontrollør som mypy.

Python spiser verden: Hvordan en utviklerens sideprosjekt ble det hotteste programmeringsspråket på planeten (cover story PDF)

Disse merknadene er valgfrie og utføres ikke, slik at utvikleren kan bruke en blanding av dynamisk og statisk inntasting, og er designet for ikke å påvirke hastigheten som koden kjøres på.

Ulempen er at å legge til merknader med type betyr litt mer arbeid for utvikleren på forhånd, eller senere hvis man kommenterer gammel kode, ettersom de nå må spesifisere datatyper eksplisitt.

Jukka Lehtosalo, hovedutvikler av mypy og ingeniør i Dropbox, sier imidlertid at kostnadene er mer enn verdt det når du jobber med millioner av linjer med Python-kode.

"I vår skala - millioner av linjer med Python - gjorde den dynamiske inntastingen i Python unødvendig vanskelig å forstå og begynte å påvirke produktiviteten alvorlig, " skriver han.

Faktisk blir typesjekk og merknader viktige i et dynamisk språk som Python lenge før du treffer millioner av kodelinjer, legger han til.

"Når prosjektet ditt er titusenvis av kodelinjer, og flere ingeniører jobber med det, forteller vår erfaring at forståelse av kode blir nøkkelen til å opprettholde utviklerens produktivitet, " sier han.

"Uten å skrive merknader, blir grunnleggende resonnementer som å finne ut de gyldige argumentene for en funksjon eller mulige returtypetyper, et vanskelig problem."

Men å kommentere fire millioner linjer med Python-kode på denne måten er ikke en grei oppgave, her er noen av de mindre kjente fordelene og hvordan Dropbox utførte oppgaven.

Mindre åpenbare fordeler

Det gjør refactoring enklere

"Ombygging er mye enklere, ettersom typeskontrolleren ofte vil fortelle nøyaktig hvilken kode som må endres, " sier Lehtosalo.
"Vi trenger ikke å håpe på 100% testdekning, noe som vanligvis er upraktisk uansett. Vi trenger ikke å undersøke dype stablingsspor for å forstå hva som gikk galt."

Det gjør testing enklere

"Selv i et stort prosjekt kan mypy ofte utføre en full type sjekk på et brøkdel av et sekund, " sier han.
"Det går ofte titusener eller minutter å løpe tester. Typesjekk gir rask tilbakemelding og lar oss iterere raskere. Vi trenger ikke å skrive skjøre, vanskelig å vedlikeholde enhetstester som håner og lapper verden for å få raske tilbakemeldinger ."

Det gjør det lettere å skrive Python

"IDEer og redaktører som PyCharm og Visual Studio Code drar fordel av typeanmerkninger for å gi fullføring av kode, for å fremheve feil og for å støtte bedre gå til definisjonsfunksjonalitet - og dette er bare noen av de nyttige funksjonstypene aktiverer, " sier han.
"For noen programmerere er dette den største og raskeste gevinsten."

Det gir bekreftet dokumentasjon

Mens du kan dokumentere typer i dokumenter, sier Lehtosalo at bruk av en type kontroller kommer seg rundt dette problemet med inkonsekvent eller uklar dokumentasjon ved å håndheve en enkelt stil.
"En type sjekker som mypy løser dette problemet ved å tilby et formelt språk for å beskrive typer, og ved å validere at de oppgitte typene samsvarer med implementeringen (og eventuelt at de eksisterer). I hovedsak gir den bekreftet dokumentasjon, " sier han.

Hvordan Dropbox gjorde det

Annotert arvkode gradvis med ukentlig kontroll av dekningen

"Vi sender ukentlige e-postrapporter til lag som fremhever merknadsdekningen deres og foreslår ting med høyeste verdi å kommentere."

Økt strenghet over tid

"Vi økte gradvis strenghetskravene for ny kode, " sier han.
"Vi startet med råd fra linters som ba om å skrive kommentarer i filer som allerede hadde noen. Vi krever nå type merknader i nye Python-filer og de fleste eksisterende filer."

Tok skritt for å forbedre ytelsen

Å sjekke en så stor mengde kode vil åpenbart ta mye tid, og Lehtosalo sier "et øyeblikkelig hinder for økende mypybruk var ytelse".
Imidlertid var Dropbox i stand til å forbedre ytelsen via trinnvis kontroll - bare sjekke modifiserte filer og deres avhengigheter, utvikle en mypy-demon med forskjellige effektiviteter og utvikle en kompilert versjon av mypy som kjører 4x raskere.

Ga foredrag om fordelene ved typekontroll

"Vi holdt foredrag om mypy og snakket med team for å hjelpe dem i gang."

Sjekket regelmessig inn med ansatte om frustrasjoner

"Vi kjører periodiske brukerundersøkelser for å finne de beste smertepunktene, og vi jobber veldig for å adressere dem (så langt som å oppfinne et nytt språk for å gjøre mypy raskere!)."

Levert integrering av kodedigerer

"Vi ga integrasjoner for å kjøre mypy for redaksjoner som er populære på Dropbox, inkludert PyCharm, Vim og VS Code. Disse gjør det mye enklere å iterere på kommentarer, noe som skjer mye når du kommenterer legacy code."

Eksperimentert med automatisk konvertering

Etter at et tidligere automatisert annoteringsverktøy i stor grad viste seg å være ineffektivt, eksperimenterer Dropbox med et selvbygget statisk analyseverktøy i stedet.
"Vi skrev et verktøy for å utlede underskrifter av funksjoner ved bruk av statisk analyse. Det kan bare håndtere tilstrekkelig enkle saker, men det hjalp oss med å øke dekningen uten for mye krefter, " sier Lehtosalo.

Tekniske nyheter du kan bruke nyhetsbrev

Vi leverer de nyeste teknologiske nyhetshistoriene om selskapene, menneskene og produktene som revolusjonerer planeten. Leveres daglig

Registrer deg i dag

Se også

  • Skaperen av Python om hvordan programmeringsspråket lærer av TypeScript (TechRepublic)

  • Hvordan bli utvikler: Et jukseark (TechRepublic)

  • Implementering av DevOps: En guide for IT-proffer (gratis PDF) (TechRepublic)

  • Cheatark for telefonintervju: Programvareutvikler (TechRepublic Premium)

  • Programmeringsspråk: Utviklere avslører mest elskede, mest avsky, hva som lønner seg best (ZDNet)

  • Det krever arbeid å holde dataene dine private online. Disse appene kan hjelpe (CNET)

  • Programmeringsspråk og karriereressurser for utviklere (TechRepublic på Flipboard)

© Copyright 2020 | mobilegn.com