Programavimas

Julia vs Python: Kuris yra geriausias duomenų mokslui?

Tarp daugybės „Python“ naudojimo atvejų duomenų analizė tapo bene didžiausia ir reikšmingiausia. „Python“ ekosistema yra apkrauta bibliotekomis, įrankiais ir programomis, dėl kurių mokslinis skaičiavimas ir duomenų analizė yra greita ir patogi.

„Julia“ kalbos kūrėjams, skirtiems „moksliniam skaičiavimui, mašininiam mokymuisi, duomenų gavybai, didelio masto linijinei algebrai, paskirstytam ir lygiagrečiam skaičiavimui“, „Python“ nėra greitas ar patogus pakanka. Julija siekia suteikti mokslininkams ir duomenų analitikams ne tik greitą ir patogią plėtrą, bet ir žaibišką vykdymo greitį.

Kas yra Julijos kalba?

Keturių asmenų komandos sukurta 2009 m. Ir 2012 m. Pristatyta visuomenei Julia skirta pašalinti „Python“ ir kitų kalbų bei programų, naudojamų moksliniam skaičiavimui ir duomenų apdorojimui, trūkumams pašalinti. „Mes godūs“, - rašė jie. Jie norėjo daugiau:

Mes norime, kad kalba būtų atviro kodo, turinti liberalią licenciją. Mes norime C greičio su Ruby dinamiškumu. Mes norime kalbos, kuri yra homoikoninė, su tikromis makrokomandomis, tokiomis kaip Lisp, bet su akivaizdžiu, pažįstamu matematiniu užrašymu, pavyzdžiui, Matlab. Mes norime ko nors, ko būtų galima naudoti bendram programavimui, kaip „Python“, taip pat lengva statistikai kaip „R“, taip pat natūralu eilutėms apdoroti kaip „Perl“, taip pat galinga linijinei algebrai kaip „Matlab“, taip pat gerai klijuoti programas kaip apvalkalą. Tai, ko išmokti yra nešvaru, tačiau rimtus įsilaužėlius džiugina. Mes norime, kad jis būtų interaktyvus ir kad jis būtų sudarytas.

(Ar minėjome, kad jis turėtų būti toks pat greitas kaip C?)

Štai keli būdai, kuriais Julija įgyvendina šiuos siekius:

  • Julija yra sudaryta, o ne interpretuojama. Kad veikimas būtų greitesnis, „Julia“ yra parengta laiku (JIT), sudaryta naudojant LLVM kompiliatoriaus sistemą. Geriausiu atveju Julija gali priartėti prie C greičio arba prilygti jam.
  • Julija yra interaktyvi. Julija apima REPL (read-eval-print loop) arba interaktyvią komandinę eilutę, panašią į tai, ką siūlo „Python“. Greitus vienkartinius scenarijus ir komandas galima sujungti iškart.
  • Julija turi tiesmuką sintaksę. Julijos sintaksė yra panaši į „Python“ - griežta, bet taip pat išraiškinga ir galinga.
  • Julija sujungia dinaminio spausdinimo ir statinio spausdinimo privalumus. Galite nurodyti kintamųjų tipus, pvz., „Nepasirašytas 32 bitų sveikasis skaičius“. Tačiau taip pat galite sukurti tipų hierarchijas, kad leistumėte bendrais atvejais tvarkyti konkrečių tipų kintamuosius, pvz., Parašyti funkciją, kuri priima sveikuosius skaičius nenurodant sveiko skaičiaus ilgio ar pasirašymo. Galite net ir visiškai nerašyti, jei to nereikia tam tikrame kontekste.
  • Julija gali paskambinti „Python“, „C“ ir „Fortran“ bibliotekoms. Julija gali tiesiogiai sąveikauti su išorinėmis bibliotekomis, parašytomis C ir Fortran. Taip pat galima sąveikauti su „Python“ kodu per „PyCall“ biblioteką ir netgi dalytis duomenimis tarp „Python“ ir „Julia“.
  • Julija palaiko metaprogramavimą. „Julia“ programos gali sugeneruoti kitas „Julia“ programas ir netgi modifikuoti jų pačių kodą tokiu būdu, kuris primena tokias kalbas kaip „Lisp“.
  • Julija turi visų funkcijų derintoją. „Julia 1.1“ pristatė derinimo paketą, kuris vykdo kodą vietiniame REPL ir leidžia jums peržiūrėti rezultatus, tikrinti kintamuosius ir pridėti kodo lūžio taškus. Jūs netgi galite atlikti smulkias užduotis, pavyzdžiui, pereiti per kodo sugeneruotą funkciją.

Susijęs vaizdo įrašas: Kaip „Python“ palengvina programavimą

Puikiai IT, „Python“ supaprastina daugybę rūšių darbų, pradedant sistemos automatizavimu ir baigiant darbais pažangiose srityse, tokiose kaip mašininis mokymasis.

Julia vs Python: Julijos kalbos pranašumai

Julija nuo pat pradžių buvo sukurta moksliniam ir skaitiniam skaičiavimui. Taigi nenuostabu, kad Julija turi daugybę funkcijų, pranašių tokiems naudojimo atvejams:

  • Julija greita. Julijos JIT rinkinys ir tipo deklaracijos reiškia, kad jis gali reguliariai įveikti „gryną“, neoptimizuotą „Python“ pagal dydžius. Python gali būti pagamintas greičiau naudojant išorines bibliotekas, trečiųjų šalių JIT kompiliatorius (PyPy) ir optimizavimą naudojant tokius įrankius kaip „Cython“, tačiau „Julia“ sukurta taip, kad būtų greitesnė iškart pro vartus.
  • Julija turi matematikai tinkamą sintaksę. Pagrindinė tikslinė Julijos auditorija yra mokslinių skaičiavimo kalbų ir aplinkos, tokios kaip Matlab, R, Mathematica ir Octave, vartotojai. Julijos matematikos operacijų sintaksė labiau panaši į tai, kaip matematikos formulės rašomos už skaičiavimo pasaulio ribų, todėl ne programuotojams lengviau pasirinkti.
  • Julija turi automatinį atminties valdymą. Kaip ir „Python“, Julija neapkrauna vartotojo atminties paskirstymo ir atlaisvinimo detalėmis, be to, ši priemonė suteikia rankinį šiukšlių surinkimo kontrolę. Idėja yra ta, kad jei persijungsite į Juliją, neprarasite vieno iš bendrų „Python“ patogumų.
  • Julija siūlo pranašesnį lygiagretumą. Matematika ir moksliniai skaičiavimai klesti, kai galite išnaudoti visus tam tikroje mašinoje esančius išteklius, ypač kelis branduolius. Tiek „Python“, tiek „Julia“ gali vykdyti operacijas lygiagrečiai. Tačiau „Python“ metodai, skirti lygiagrečioms operacijoms, reikalauja, kad duomenys būtų nuoseklūs ir deserializuoti tarp gijų ar mazgų, tuo tarpu Julijos lygiagretinimas yra labiau patobulintas. Be to, Julijos lygiagretinimo sintaksė yra mažiau sunki nei „Python“, todėl jos naudojimo slenkstis sumažėja.
  • Julija kuria savo gimtąsias mašininio mokymosi bibliotekas. „Flux“ yra Julijos mašininio mokymosi biblioteka, turinti daugybę įprasto naudojimo atvejų modelių modelių. Kadangi jis parašytas tik „Julia“, jį galima modifikuoti pagal vartotojo poreikius, o norint optimizuoti projektus iš vidaus, jis naudoja gimtąją Julia kompiliaciją „just-in-time“.

Julija prieš Python: „Python“ privalumai

Nors Julija sukurta tikslui duomenų mokslui, o „Python“ daugiau ar mažiau pavirto vaidmeniu, „Python“ duomenų mokslininkui siūlo keletą įtikinamų pranašumų. Kai kurios „Python“ paskirties priežastys gali būti geresnis pasirinkimas duomenų mokslui:

  • „Python“ naudoja nulinį masyvo indeksavimą. Daugumoje kalbų, įskaitant „Python“ ir „C“, prie pirmo masyvo elemento pasiekiama nulis, pvz., eilutė [0] „Python“ - pirmajam simboliui eilutėje. Pirmam masyvo elementui Julija naudoja 1. Tai nėra savavališkas sprendimas; daugelyje kitų matematikos ir gamtos mokslų programų, pavyzdžiui, „Mathematica“, naudojamas 1 indeksavimas, o Julija yra skirta tai auditorijai patikti. Galima palaikyti nulinį indeksavimą Julijoje naudojant eksperimentinę funkciją, tačiau 1 indeksavimas pagal numatytuosius nustatymus gali trukdyti pritaikyti plačiau naudojamai auditorijai, turinčiai įsišaknijusius programavimo įpročius.
  • „Python“ turi mažiau paleidimo pridėtinių išlaidų. „Python“ programos gali būti lėtesnės nei „Julia“ programos, tačiau pats „Python“ vykdymo laikas yra lengvesnis, ir paprastai užtrunka mažiau laiko, kol „Python“ programos pradeda ir pateikia pirmuosius rezultatus. Be to, nors JIT kompiliacija pagreitina „Julia“ programų vykdymo laiką, tai kainuoja lėtesnis paleidimas. Buvo padaryta daugybė darbų, kad Julija pradėtų greičiau, tačiau „Python“ čia vis dar turi pranašumų.
  • Pitonas yra subrendęs. Julijos kalba yra jauna. Julija buvo kuriama tik nuo 2009 m., O pakeliui buvo atlikta nemažai funkcijų. Priešingai, „Python“ egzistuoja beveik 30 metų.
  • „Python“ turi kur kas daugiau trečiųjų šalių paketų. Trečiųjų šalių paketų „Python“ kultūros platumas ir naudingumas išlieka viena didžiausių kalbos traukos vietų. Vėlgi, santykinis Julijos naujumas reiškia, kad programinės įrangos kultūra aplink ją vis dar yra maža. Dalį to kompensuoja galimybė naudoti esamas C ir Python bibliotekas, tačiau Julijai klestėti reikia savo bibliotekų. Bibliotekos, tokios kaip „Flux“ ir „Knet“, daro Juliją naudinga mokytis mašinomis ir giliai mokytis, tačiau didžioji šio darbo dalis vis tiek atliekama naudojant „TensorFlow“ arba „PyTorch“.
  • „Python“ turi milijonus vartotojų. Kalba yra niekas be aplink ją esančios didelės, atsidavusios ir aktyvios bendruomenės. Juliją supanti bendruomenė yra entuziastinga ir auga, tačiau ji vis dar yra tik dalis „Python“ bendruomenės dydžio. Didžiulė „Python“ bendruomenė yra didžiulis pranašumas.
  • „Python“ tampa vis greitesnis. Be „Python“ vertėjo patobulinimų (įskaitant daugiagyslių ir lygiagrečių procesų patobulinimus), „Python“ tapo lengviau pagreitinti. Projektas „mypyc“ paverčia „Python“ tipo komentarus į gimtąjį C, kur kas mažiau klastingą nei „Cython“. Paprastai tai pagerina keturis kartus našumą ir dažnai daug daugiau grynoms matematinėms operacijoms.