Ohjelmointi

Julia vs. Python: Mikä on parasta datatieteelle?

Pythonin kattamien monien käyttötapausten joukosta data-analytiikasta on tullut ehkä suurin ja merkittävin. Python-ekosysteemi on ladattu kirjastoilla, työkaluilla ja sovelluksilla, jotka tekevät tieteellisen laskennan ja tietojen analysoinnin työstä nopeaa ja kätevää.

Mutta Julia-kielen takana oleville kehittäjille - pyritään erityisesti "tieteelliseen laskentaan, koneoppimiseen, tiedonlouhintaan, laajamittaiseen lineaariseen algebraan, hajautettuun ja rinnakkaislaskentaan" - Python ei ole nopea tai kätevä tarpeeksi. Julian tavoitteena on antaa tutkijoille ja data-analyytikoille paitsi nopea ja kätevä kehitys, myös nopea toteutusnopeus.

Mikä on Julian kieli?

Neljän hengen tiimin vuonna 2009 luoman ja yleisölle vuonna 2012 julkistetun Julian on tarkoitus korjata puutteita Pythonissa ja muissa kielissä ja sovelluksissa, joita käytetään tieteelliseen laskentaan ja tietojenkäsittelyyn. "Olemme ahneita", he kirjoittivat. He halusivat lisää:

Haluamme avoimen lähdekoodin kielen, jolla on liberaali lisenssi. Haluamme C: n nopeuden Rubyn dynaamisuudella. Haluamme kielen, joka on homoikoninen, oikeilla makroilla, kuten Lisp, mutta jolla on ilmeinen, tuttu matemaattinen merkintätapa kuten Matlab. Haluamme jotain yhtä käyttökelpoista yleiseen ohjelmointiin kuin Python, yhtä helppoa tilastoille kuin R, yhtä luonnollista merkkijonojen käsittelylle kuin Perl, yhtä voimakasta lineaariselle algebralle kuin Matlab, yhtä hyvää ohjelmien liimaamista kuin kuori. Jotain lika on helppo oppia, mutta pitää vakavimmat hakkerit onnellisina. Haluamme sen olevan vuorovaikutteinen ja koottu.

(Mainitsimmeko sen, että sen pitäisi olla yhtä nopea kuin C?)

Tässä on joitain tapoja, joilla Julia toteuttaa nämä pyrkimykset:

  • Julia on koottu, ei tulkittu. Nopeampaa ajonaikaa varten Julia on juuri oikeaan aikaan (JIT) käännetty LLVM-kääntäjän kehyksen avulla. Parhaimmillaan Julia voi lähestyä tai verrata C-nopeutta.
  • Julia on vuorovaikutteinen. Julia sisältää REPL (read-eval-print loop) tai interaktiivisen komentorivin, samanlainen kuin mitä Python tarjoaa. Nopeat kertaluonteiset komentosarjat ja komennot voidaan lyödä suoraan sisään.
  • Julialla on suoraviivainen syntakse. Julian syntakse on samanlainen kuin Pythonin - lyhyt, mutta myös ilmeikäs ja voimakas.
  • Julia yhdistää dynaamisen ja staattisen kirjoittamisen edut. Voit määrittää tyypit muuttujille, kuten "allekirjoittamaton 32-bittinen kokonaisluku". Mutta voit myös luoda tyyppihierarkioita, jotta yleistapaukset tietyntyyppisten muuttujien käsittelemiseksi ovat sallittuja - esimerkiksi kirjoittaa funktio, joka hyväksyy kokonaisluvut määrittelemättä kokonaisluvun pituutta tai allekirjoitusta. Voit jopa tehdä kirjoittamatta kokonaan, jos sitä ei tarvita tietyssä tilanteessa.
  • Julia voi soittaa Python-, C- ja Fortran-kirjastoihin. Julia voi olla suoraan yhteydessä ulkoisiin kirjastoihin, jotka on kirjoitettu C: ssä ja Fortranissa. PyCall-kirjastoon voidaan myös liittyä Python-koodilla ja jopa jakaa tietoja Pythonin ja Julian välillä.
  • Julia tukee metaprogrammointia. Julia-ohjelmat voivat luoda muita Julia-ohjelmia ja jopa muokata omaa koodiaan tavalla, joka muistuttaa kieliä, kuten Lisp.
  • Julialla on monipuolinen virheenkorjausohjelma. Julia 1.1 esitteli virheenkorjauspaketin, joka suorittaa koodin paikallisessa REPL: ssä ja jonka avulla voit selata tuloksia, tarkastaa muuttujia ja lisätä katkaisupisteitä koodiin. Voit jopa suorittaa tarkkoja tehtäviä, kuten käydä läpi koodin luoman toiminnon.

Liittyvä video: Kuinka Python tekee ohjelmoinnista helpompaa

IT-tekniikalle täydellinen Python yksinkertaistaa monenlaista työtä järjestelmän automaatiosta huipputeknisillä aloilla, kuten koneoppiminen.

Julia vs. Python: Julian kielietuja

Julia suunniteltiin alusta alkaen tieteelliseen ja numeeriseen laskentaan. Ei siis ole mikään yllätys, että Julialla on monia ominaisuuksia, jotka ovat hyödyllisiä tällaisissa käyttötapauksissa:

  • Julia on nopea. Julian JIT-kokoelmat ja tyyppikohtaiset ilmoitukset tarkoittavat, että se voi rutiininomaisesti voittaa ”puhtaan”, optimoimattoman Pythonin suuruusluokittain. Python voi olla tehty nopeammin ulkoisten kirjastojen, kolmansien osapuolten JIT-kääntäjien (PyPy) ja optimointien avulla Cythonin kaltaisilla työkaluilla, mutta Julia on suunniteltu nopeammaksi heti portista.
  • Julialla on matematiikkaystävällinen syntakse. Julian tärkein kohdeyleisö on tieteellisten tietokonekielien ja ympäristöjen, kuten Matlab, R, Mathematica ja Octave, käyttäjät. Julian matemaattisten toimintojen syntaksi näyttää enemmän kuin tapa, jolla matemaattiset kaavat kirjoitetaan tietokonemaailman ulkopuolella, mikä helpottaa muiden kuin ohjelmoijien poimimista.
  • Julialla on automaattinen muistinhallinta. Kuten Python, Julia ei rasita käyttäjää muistin jakamisen ja vapauttamisen yksityiskohdilla, ja se tarjoaa jonkin verran manuaalista valvontaa roskien keräyksessä. Ajatuksena on, että jos vaihdat Juliaan, et menetä yhtä Pythonin yleisistä mukavuuksista.
  • Julia tarjoaa ylivertaista rinnakkaisuutta. Matematiikka ja tieteellinen laskenta kukoistavat, kun voit hyödyntää tietyllä koneella käytettävissä olevia resursseja, etenkin useita ytimiä. Sekä Python että Julia voivat suorittaa toimintoja rinnakkain. Pythonin toimintojen rinnakkaistamismenetelmät vaativat kuitenkin usein tietojen sarjallisuuden ja deserialisoinnin ketjujen tai solmujen välillä, kun taas Julian rinnakkaistaminen on tarkempaa. Lisäksi Julian yhdensuuntaistamisen syntakse on vähemmän raskasta kuin Python, mikä alentaa kynnystä sen käyttöön.
  • Julia kehittää omia koneoppimiskirjastoja. Flux on Julian koneoppimiskirjasto, jolla on monia olemassa olevia mallimalleja yleisiin käyttötapauksiin. Koska se on kirjoitettu kokonaan Juliassa, sitä voidaan muokata käyttäjän tarpeen mukaan, ja se käyttää Julian natiivia juuri oikeaan aikaan -kokoelmaa projektien optimointiin sisältäpäin.

Julia vs. Python: Pythonin edut

Vaikka Julia on tarkoitettu tietojenkäsittelyyn, kun taas Python on enemmän tai vähemmän kehittynyt rooliksi, Python tarjoaa datatieteilijälle joitain pakottavia etuja. Jotkut syyt "yleiskäyttöiseen" Pythoniin saattavat olla parempi valinta tietojenkäsittelytyöhön:

  • Python käyttää nollapohjaista taulukon indeksointia. Useimmilla kielillä, mukaan lukien Python ja C, taulukon ensimmäiseen osaan pääsee nollalla - esim. merkkijono [0] Pythonissa merkkijonon ensimmäiselle merkille. Julia käyttää yhtä matriisin ensimmäisessä elementissä. Tämä ei ole mielivaltainen päätös; monet muut matematiikan ja luonnontieteiden sovellukset, kuten Mathematica, käyttävät 1-indeksointia, ja Julian on tarkoitus houkutella kyseistä yleisöä. Julian nollan indeksointia voidaan tukea kokeellisella ominaisuudella, mutta oletusarvoisesti 1-indeksointi voi olla esteenä yleisemmälle yleisölle, jolla on vakiintuneita ohjelmointitottumuksia.
  • Pythonilla on vähemmän käynnistyskustannuksia. Python-ohjelmat voivat olla hitaampia kuin Julia-ohjelmat, mutta itse Python-ajonaika on kevyempi, ja yleensä kestää vähemmän aikaa, ennen kuin Python-ohjelmat käynnistyvät ja tuottavat ensimmäiset tulokset. Vaikka JIT-kokoelma nopeuttaa Julia-ohjelmien suoritusaikaa, se tulee hitaamman käynnistyksen kustannuksella. Paljon työtä on tehty, jotta Julia aloittaisi nopeammin, mutta Pythonilla on silti etu tässä.
  • Python on kypsä. Julian kieli on nuori. Juliaa on kehitetty vasta vuodesta 2009, ja matkan varrella on käynyt läpi melkoisen määrän ominaisuuksia. Sitä vastoin Python on ollut käytössä melkein 30 vuotta.
  • Pythonilla on paljon enemmän kolmannen osapuolen paketteja. Pythonin kolmansien osapuolten pakettikulttuurin laajuus ja hyödyllisyys ovat edelleen yksi kielen suurimmista nähtävyyksistä. Jälleen Julian suhteellinen uutuus tarkoittaa, että ohjelmistokulttuuri sen ympärillä on edelleen pieni. Osa siitä kompensoituu kyvyllä käyttää olemassa olevia C- ja Python-kirjastoja, mutta Julia tarvitsee omia kirjastoja menestyäkseen. Fluxin ja Knetin kaltaiset kirjastot tekevät Juliasta hyödyllisen koneoppimisessa ja syvällisessä oppimisessa, mutta valtaosa työstä tehdään silti TensorFlow- tai PyTorch-ohjelmalla.
  • Pythonilla on miljoonia käyttäjiä. Kieli ei ole mikään ilman sitä ympäröivää suurta, omistautunutta ja aktiivista yhteisöä. Julian ympärillä oleva yhteisö on innostunut ja kasvava, mutta se on silti vain murto-osa Python-yhteisön koosta. Pythonin valtava yhteisö on valtava etu.
  • Python on nopeutumassa. Python-tulkkien parannusten lisäksi (mukaan lukien parannukset moniytimiseen ja rinnakkaisprosessointiin) Python on nopeutunut. Mypyc-projekti kääntää tyypin merkityn Pythonin natiiviksi C: ksi, paljon vähemmän kömpelösti kuin Cython. Se tuottaa tyypillisesti nelinkertaisen suorituskyvyn parannuksen ja usein paljon enemmän puhtaille matemaattisille operaatioille.
$config[zx-auto] not found$config[zx-overlay] not found