Programmering

Julia vs. Python: Hva er best for datavitenskap?

Blant de mange brukssakene Python dekker, har dataanalyse blitt den største og mest betydningsfulle. Python-økosystemet er lastet med biblioteker, verktøy og applikasjoner som gjør arbeidet med vitenskapelig databehandling og dataanalyse raskt og praktisk.

Men for utviklerne bak Julia-språket - spesielt rettet mot "vitenskapelig databehandling, maskinlæring, datautvinning, storskala lineær algebra, distribuert og parallell databehandling" - Python er ikke raskt eller praktisk nok. Julia har som mål å gi forskere og dataanalytikere ikke bare rask og praktisk utvikling, men også brennende kjøringshastighet.

Hva er Julia-språket?

Julia ble opprettet i 2009 av et team for fire personer og ble presentert for publikum i 2012, og er ment å løse manglene i Python og andre språk og applikasjoner som brukes til vitenskapelig databehandling og databehandling. "Vi er grådige," skrev de. De ønsket mer:

Vi ønsker et språk med åpen kildekode, med en liberal lisens. Vi vil ha hastigheten på C med dynamikken til Ruby. Vi vil ha et språk som er homoonic, med ekte makroer som Lisp, men med åpenbare, kjente matematiske notasjoner som Matlab. Vi vil ha noe så brukbart for generell programmering som Python, like enkelt for statistikk som R, like naturlig for strengbehandling som Perl, like kraftig for lineær algebra som Matlab, like god til å lime programmer sammen som skallet. Noe som er skitt enkelt å lære, men likevel holder de mest alvorlige hackerne fornøyde. Vi vil ha det interaktivt og vi vil at det skal samles.

(Nevnte vi at det skulle være like raskt som C?)

Her er noen av måtene Julia implementerer disse ambisjonene:

  • Julia er samlet, ikke tolket. For raskere kjøretidsytelse er Julia just-in-time (JIT) samlet ved hjelp av LLVM-kompilatorrammeverket. På sitt beste kan Julia nærme seg eller matche hastigheten på C.
  • Julia er interaktiv. Julia inkluderer en REPL (read-eval-print loop) eller interaktiv kommandolinje, som ligner på hva Python tilbyr. Raske engangsskript og -kommandoer kan stanses rett inn.
  • Julia har en rett syntaks. Julias syntaks er lik Pythons - kortfattet, men også uttrykksfull og kraftig.
  • Julia kombinerer fordelene med dynamisk skriving og statisk skriving. Du kan spesifisere typer for variabler, for eksempel “usignert 32-biters heltall.” Men du kan også opprette hierarkier av typer for å tillate generelle tilfeller for håndtering av variabler av bestemte typer - for eksempel for å skrive en funksjon som godtar heltall uten å spesifisere lengden eller signeringen av heltallet. Du kan til og med gjøre uten å skrive helt hvis det ikke er nødvendig i en bestemt sammenheng.
  • Julia kan ringe Python, C og Fortran biblioteker. Julia kan grensesnitt direkte med eksterne biblioteker skrevet i C og Fortran. Det er også mulig å grensesnitt med Python-kode ved hjelp av PyCall-biblioteket, og til og med dele data mellom Python og Julia.
  • Julia støtter metaprogrammering. Julia-programmer kan generere andre Julia-programmer, og til og med endre sin egen kode, på en måte som minner om språk som Lisp.
  • Julia har en fullstendig feilsøking. Julia 1.1 introduserte en feilsøkingspakke som utfører kode i en lokal REPL og lar deg gå gjennom resultatene, inspisere variabler og legge til brytpunkter i koden. Du kan til og med utføre finkornede oppgaver som å gå gjennom en funksjon generert av kode.

Relatert video: Hvordan Python gjør programmeringen enklere

Perfekt for IT, forenkler Python mange typer arbeid, fra systemautomatisering til arbeid i banebrytende felt som maskinlæring.

Julia vs. Python: fordeler ved språket i Julia

Julia ble designet fra starten av for vitenskapelig og numerisk beregning. Derfor er det ingen overraskelse at Julia har mange funksjoner som er fordelaktige for slike brukstilfeller:

  • Julia er rask. Julias JIT-kompilering og typedeklarasjoner betyr at den rutinemessig kan slå “ren”, uoptimert Python i størrelsesorden. Python kan være laget raskere ved hjelp av eksterne biblioteker, tredjeparts JIT-kompilatorer (PyPy) og optimaliseringer med verktøy som Cython, men Julia er designet for å være raskere rett ut av porten.
  • Julia har en mattevennlig syntaks. En viktig målgruppe for Julia er brukere av vitenskapelige dataspråk og miljøer som Matlab, R, Mathematica og Octave. Julias syntaks for matteoperasjoner ser mer ut som måten matteformler skrives utenfor databehandlingen, noe som gjør det lettere for ikke-programmerere å ta tak i det.
  • Julia har automatisk minnehåndtering. I likhet med Python, belaster ikke Julia brukerne med detaljene for å tildele og frigjøre minne, og det gir en viss grad av manuell kontroll over søppeloppsamling. Tanken er at hvis du bytter til Julia, mister du ikke en av Pythons vanlige bekvemmeligheter.
  • Julia tilbyr overlegen parallellitet. Matematikk og vitenskapelig databehandling trives når du kan bruke alle ressursene som er tilgjengelige på en gitt maskin, spesielt flere kjerner. Både Python og Julia kan kjøre operasjoner parallelt. Imidlertid krever Pythons metoder for parallellisering av operasjoner ofte at data serialiseres og deserialiseres mellom tråder eller noder, mens Julias parallellisering er mer raffinert. Videre er Julias parallellisering-syntaks mindre topptung enn Pythons, og senker terskelen til bruk.
  • Julia utvikler sine egne innfødte maskinlæringsbiblioteker. Flux er et maskinlæringsbibliotek for Julia som har mange eksisterende modellmønstre for vanlige brukssaker. Siden den er skrevet helt i Julia, kan den endres etter behov av brukeren, og den bruker Julias opprinnelige just-in-time kompilering for å optimalisere prosjekter fra innsiden og ut.

Julia vs. Python: Fordeler med Python

Selv om Julia er spesialbygd for datavitenskap, mens Python mer eller mindre har utviklet seg til rollen, tilbyr Python dataoverbevisende noen overbevisende fordeler. Noen av grunnene til at "Python for generelt formål" kan være det bedre valget for datavitenskapelig arbeid:

  • Python bruker nullbasert matriseindeksering. På de fleste språk, inkludert Python og C, får du tilgang til det første elementet i en matrise med null - f.eks. streng [0] i Python for det første tegnet i en streng. Julia bruker 1 for det første elementet i en matrise. Dette er ikke en vilkårlig beslutning; mange andre matte- og naturvitenskapelige applikasjoner, som Mathematica, bruker 1-indeksering, og Julia er ment å appellere til publikum. Det er mulig å støtte nullindeksering i Julia med en eksperimentell funksjon, men 1-indeksering kan som standard være i veien for adopsjon av et mer generelt publikum med inngrodd programmeringsvaner.
  • Python har mindre oppstartskostnader. Python-programmer kan være tregere enn Julia-programmer, men selve Python-kjøretiden er lettere, og det tar vanligvis kortere tid for Python-programmer å starte og levere de første resultatene. Mens JIT-kompilering øker kjøringstiden for Julia-programmer, koster det også tregere oppstart. Mye arbeid er gjort for å få Julia til å begynne raskere, men Python har fortsatt kanten her.
  • Python er moden. Juliaspråket er ungt. Julia har bare vært under utvikling siden 2009, og har gjennomgått en god del funksjonsløp underveis. Derimot har Python eksistert i nesten 30 år.
  • Python har langt flere tredjepartspakker. Bredden og nytten av Pythons kultur av tredjepartspakker er fortsatt en av språkets største attraksjoner. Igjen, Julias relative nyhet betyr at programvarekulturen rundt den fortsatt er liten. Noe av det blir oppveid av muligheten til å bruke eksisterende C- og Python-biblioteker, men Julia trenger egne biblioteker for å trives. Biblioteker som Flux og Knet gjør Julia nyttig for maskinlæring og dyp læring, men de aller fleste av dette arbeidet er fortsatt gjort med TensorFlow eller PyTorch.
  • Python har millioner av brukere. Et språk er ingenting uten et stort, hengiven og aktivt samfunn rundt det. Samfunnet rundt Julia er entusiastisk og vokser, men det er fortsatt bare en brøkdel av størrelsen på Python-samfunnet. Pythons enorme samfunn er en stor fordel.
  • Python blir raskere. Bortsett fra å få forbedringer av Python-tolken (inkludert forbedringer av multi-core og parallell prosessering), har Python blitt lettere å øke hastigheten. Mypyc-prosjektet oversetter typekommentert Python til innfødt C, langt mindre klumpete enn Cython. Det gir vanligvis fire ganger ytelsesforbedringer, og ofte mye mer for rene matematiske operasjoner.
$config[zx-auto] not found$config[zx-overlay] not found