Programiranje

Julia proti Pythonu: Kaj je najbolje za podatkovno znanost?

Med številnimi primeri uporabe, ki jih pokriva Python, je analitika podatkov postala morda največja in najpomembnejša. Ekosistem Python je naložen s knjižnicami, orodji in aplikacijami, ki omogočajo hitro in priročno delo na področju znanstvenega računalništva in analize podatkov.

Toda za razvijalce, ki stojijo za jezikom Julia - namenjen posebej „znanstvenemu računalništvu, strojnem učenju, rudarjenju podatkov, obsežni linearni algebri, porazdeljenemu in vzporednemu računalništvu“ - Python ni hiter ali priročen dovolj. Julia želi znanstvenikom in analitikom podatkov omogočiti ne le hiter in priročen razvoj, temveč tudi izjemno hitrost izvajanja.

Kaj je jezik Julia?

Julia, ki jo je leta 2009 ustvarila štiričlanska ekipa, javnosti pa jo je predstavila leta 2012, naj bi odpravila pomanjkljivosti v Pythonu in drugih jezikih ter aplikacijah, ki se uporabljajo za znanstveno računalništvo in obdelavo podatkov. "Pohlepni smo," so zapisali. Želeli so več:

Želimo jezik z odprto kodo z liberalno licenco. Hitrost C želimo z dinamičnostjo Rubyja. Želimo jezik, ki je homoikonski, z resničnimi makri, kot je Lisp, vendar z očitnimi, znanimi matematičnimi zapisi, kot je Matlab. Želimo nekaj tako uporabnega za splošno programiranje, kot je Python, tako enostavno za statistiko kot R, tako naravno za obdelavo nizov kot Perl, tako zmogljivo za linearno algebro kot Matlab, tako dobro pri lepljenju programov kot lupina. Nečesa, česar se je preprosto naučiti, a resne hekerje osrečuje. Želimo interaktivno in želimo, da je sestavljena.

(Ali smo omenili, da mora biti tako hiter kot C?)

Tu je nekaj načinov, kako Julia uresničuje te želje:

  • Julia je sestavljena, ne interpretirana. Za hitrejšo zmogljivost izvajalnega okolja je Julia sestavljena s pomočjo okvira prevajalnika LLVM ravno ob času (JIT). V najboljšem primeru se Julia lahko približa hitrosti C.
  • Julia je interaktivna. Julia vključuje REPL (zanko za branje-eval-tiskanje) ali interaktivno ukazno vrstico, podobno kot Python ponuja. Hitre enkratne skripte in ukaze lahko vstavite takoj.
  • Julia ima preprosto sintakso. Sintaksa Julije je podobna Pythonovi - kratka, a hkrati izrazita in močna.
  • Julia združuje prednosti dinamičnega tipkanja in statičnega tipkanja. Za spremenljivke lahko določite vrste, na primer »nepodpisano 32-bitno celo število.« Lahko pa ustvarite tudi hierarhije tipov, da omogočite splošne primere za obdelavo spremenljivk določenih tipov - na primer, da napišete funkcijo, ki sprejema cela števila, ne da bi določila dolžino ali podpis celote. Lahko celo storite, če v celoti ne vtipkate, če v določenem kontekstu ni potrebno.
  • Julia lahko pokliče knjižnice Python, C in Fortran. Julia se lahko neposredno poveže z zunanjimi knjižnicami, napisanimi v jeziku C in Fortran. Mogoče je tudi vmesnik s kodo Python prek knjižnice PyCall in celo izmenjavo podatkov med Pythonom in Julijo.
  • Julia podpira metaprogramiranje. Programi Julia lahko ustvarijo druge programe Julia in celo spremenijo lastno kodo na način, ki spominja na jezike, kot je Lisp.
  • Julia ima popoln razhroščevalec. Julia 1.1 je predstavila paket za odpravljanje napak, ki izvaja kodo v lokalnem REPL-u in vam omogoča, da pregledujete rezultate, pregledate spremenljivke in dodate točke prekinitve v kodo. Izvajate lahko celo natančno določena opravila, kot je prehod skozi funkcijo, ki jo generira koda.

Povezani video: Kako Python olajša programiranje

Kot nalašč za IT, Python poenostavlja številne vrste dela, od avtomatizacije sistema do dela na najsodobnejših področjih, kot je strojno učenje.

Julia vs. Python: Julijske jezikovne prednosti

Julia je bila že od začetka zasnovana za znanstvene in numerične izračune. Zato ni presenetljivo, da ima Julia veliko funkcij, ugodnih za takšne primere uporabe:

  • Julia je hitra. Julijina kompilacija JIT in izjave o tipih pomenijo, da lahko redno premaguje "čisti", neoptimizirani Python. Python je lahko narejeno hitreje z zunanjimi knjižnicami, zunanjimi prevajalniki JIT (PyPy) in optimizacijami z orodji, kot je Cython, vendar je Julia zasnovana tako, da je hitrejša že pred vrati.
  • Julia ima matematiko prijazno sintakso. Glavna ciljna skupina za Julijo so uporabniki znanstvenih računalniških jezikov in okolij, kot so Matlab, R, Mathematica in Octave. Julijina sintaksa za matematične operacije je bolj podobna načinu pisanja matematičnih formul zunaj računalniškega sveta, kar ne-programerjem olajša.
  • Julia ima samodejno upravljanje pomnilnika. Tako kot Python tudi Julia uporabnika ne obremenjuje s podrobnostmi dodeljevanja in sproščanja pomnilnika ter zagotavlja nekaj mere ročnega nadzora nad zbiranjem smeti. Ideja je, da če preklopite na Julijo, ne boste izgubili ene od pogostih Pythonovih ugodnosti.
  • Julia ponuja vrhunsko vzporednost. Matematika in znanstveno računalništvo uspevata, ko lahko izkoristiš vse vire, ki so na voljo na določenem računalniku, zlasti več jeder. Tako Python kot Julia lahko izvajata operacije vzporedno. Vendar Pythonove metode paralelnih operacij pogosto zahtevajo serializacijo in deserializacijo podatkov med nitmi ali vozlišči, medtem ko je Julijina paralelizacija bolj izpopolnjena. Poleg tega je Julijina sintaksa paralelizacije manj težka od Pythonove, kar znižuje prag njene uporabe.
  • Julia razvija lastne knjižnice strojnega učenja. Flux je knjižnica strojnega učenja za Julijo, ki ima številne obstoječe vzorčne vzorce za običajne primere uporabe. Ker je v celoti napisan v Juliji, ga lahko po potrebi spremeni uporabnik, za optimizacijo projektov od znotraj pa uporablja Julijino pravočasno pravočasno kompilacijo.

Julia proti Pythonu: prednosti Pythona

Čeprav je Julia namensko zasnovana za podatkovno znanost, medtem ko se je Python bolj ali manj razvil v vlogo, Python ponuja nekaj prepričljivih prednosti za podatkovnega znanstvenika. Nekateri razlogi za "splošni namen" Pythona so morda boljša izbira za delo na področju znanosti o podatkih:

  • Python uporablja indeksiranje nizov na osnovi nič. V večini jezikov, vključno s Pythonom in C, se do prvega elementa matrike dostopa z ničlo - npr. niz [0] v Pythonu za prvi znak v nizu. Julia za prvi element v polju uporabi 1. To ni samovoljna odločitev; številne druge matematične in naravoslovne aplikacije, kot je Mathematica, uporabljajo 1-indeksiranje, Julia pa naj bi pritegnila to občinstvo. Ničelno indeksiranje je v Juliji mogoče podpreti z eksperimentalno funkcijo, toda privzeto 1-indeksiranje lahko ovira sprejetje splošnejše publike z zakoreninjenimi programskimi navadami.
  • Python ima manj zagonskih stroškov. Programi Python so lahko počasnejši od programov Julia, vendar je samo izvajanje Pythona bolj majhno in na splošno traja manj časa, da programi Python zaženejo in prinesejo prve rezultate. Medtem ko kompilacija JIT pospeši čas izvajanja programov Julia, gre za ceno počasnejšega zagona. Veliko dela je bilo narejenega, da je Julia začela hitreje, a Python je tu še vedno prednost.
  • Python je zrel. Jezik Julia je mlad. Julia je bila v razvoju šele od leta 2009 in je na tej poti doživela precejšnjo količino filmov. Nasprotno pa Python obstaja že skoraj 30 let.
  • Python ima veliko več neodvisnih paketov. Širina in uporabnost Pythonove kulture tujih paketov ostaja ena največjih zanimivosti jezika. Tudi Julijina relativna novost pomeni, da je kultura programske opreme okrog nje še vedno majhna. Nekaj ​​tega nadomešča možnost uporabe obstoječih knjižnic C in Python, toda Julia potrebuje lastne knjižnice, da bi uspevala. Knjižnici, kot sta Flux in Knet, omogočata, da je Julia koristna za strojno učenje in globoko učenje, toda velika večina dela še vedno poteka s TensorFlow ali PyTorch.
  • Python ima milijone uporabnikov. Jezik ni nič brez velike, predane in aktivne skupnosti okoli sebe. Skupnost okoli Julije je navdušena in narašča, vendar je še vedno le delček velikosti skupnosti Python. Ogromna skupnost Pythona je velika prednost.
  • Python postaja hitrejši. Poleg izboljšanja tolmača Python (vključno z izboljšavami večjedrne in vzporedne obdelave) je Python lažje pospeševati. Projekt mypyc prevede Python, označen s tipom, v domači C, veliko manj neroden kot Cython. Običajno prinese štirikratne izboljšave zmogljivosti in pogosto veliko več za zgolj matematične operacije.
$config[zx-auto] not found$config[zx-overlay] not found