Programmēšana

Jūlija pret Python: kas ir labākais datu zinātnei?

Starp daudzajiem Python izmantotajiem gadījumiem datu analīze, iespējams, ir kļuvusi par vislielāko un nozīmīgāko. Python ekosistēma ir aprīkota ar bibliotēkām, rīkiem un lietojumprogrammām, kas padara zinātniskās skaitļošanas un datu analīzes darbu ātru un ērtu.

Bet izstrādātājiem, kas darbojas Džūlijas valodā - tas ir īpaši paredzēts “zinātniskai skaitļošanai, mašīnmācībai, datu ieguvei, liela mēroga lineārai algebrai, izplatītai un paralēlai skaitļošanai” - Python nav ātrs vai ērts pietiekami. Jūlijas mērķis ir dot zinātniekiem un datu analītiķiem ne tikai ātru un ērtu attīstību, bet arī izcilu izpildes ātrumu.

Kas ir Jūlijas valoda?

Džūlija, kuru 2009. gadā izveidoja četru cilvēku komanda un kas tika atklāta sabiedrībai 2012. gadā, ir domāta, lai novērstu trūkumus Python un citās valodās un lietojumprogrammās, kuras izmanto zinātniskai skaitļošanai un datu apstrādei. "Mēs esam alkatīgi," viņi rakstīja. Viņi vēlējās vairāk:

Mēs vēlamies, lai valoda būtu atvērta pirmkoda ar liberālu licenci. Mēs vēlamies C ātrumu ar Rubīna dinamiku. Mēs vēlamies valodu, kas ir homoikoniska, ar patiesiem makro, piemēram, Lisp, bet ar acīmredzamu, pazīstamu matemātisku apzīmējumu, piemēram, Matlab. Mēs vēlamies kaut ko tikpat izmantojamu vispārīgai programmēšanai kā Python, tikpat viegli statistikai kā R, tikpat dabiski virkņu apstrādei kā Perls, tikpat spēcīgu lineārai algebrai kā Matlab, tikpat labi salīmējot programmas kā čaulu. Kaut ko tādu, ko ir viegli iemācīties, tomēr tas sagādā prieku visnopietnākajiem hakeriem. Mēs vēlamies, lai tas būtu interaktīvs un mēs to vēlētos apkopot.

(Vai mēs pieminējām, ka tam vajadzētu būt tikpat ātram kā C?)

Šeit ir daži veidi, kā Džūlija īsteno šos centienus:

  • Jūlija ir apkopota, nevis interpretēta. Ātrākai izpildlaika veiktspējai Džūlija ir sagatavota tieši laikā (JIT), izmantojot LLVM kompilatora ietvaru. Labākajā gadījumā Džūlija var tuvoties C ātrumam vai pielīdzināt tam.
  • Jūlija ir interaktīva. Jūlija iekļauj REPL (read-eval-print loop) jeb interaktīvu komandrindu, līdzīgi kā piedāvā Python. Ātros vienreizējos skriptus un komandas var ievadīt uzreiz.
  • Jūlijai ir tieša sintakse. Jūlijas sintakse ir līdzīga Python - saīsināta, bet arī izteiksmīga un spēcīga.
  • Džūlija apvieno dinamiskās un statiskās rakstīšanas priekšrocības. Varat norādīt mainīgo tipus, piemēram, “neparakstīts 32 bitu vesels skaitlis”. Bet jūs varat arī izveidot tipu hierarhijas, lai atļautu vispārīgus gadījumus konkrētu tipu mainīgo apstrādei, piemēram, lai ierakstītu funkciju, kas pieņem veselus skaitļus, nenorādot veselā skaitļa garumu vai parakstu. Varat arī iztikt, pilnībā nerakstot, ja tas nav vajadzīgs konkrētā kontekstā.
  • Jūlija var izsaukt Python, C un Fortran bibliotēkas. Jūlija var tieši sazināties ar ārējām bibliotēkām, kas rakstītas C un Fortran. Ir iespējams arī sazināties ar Python kodu, izmantojot PyCall bibliotēku, un pat koplietot datus starp Python un Julia.
  • Jūlija atbalsta metaprogrammēšanu. Jūlijas programmas var ģenerēt citas Jūlijas programmas un pat modificēt savu kodu tādā veidā, kas atgādina tādas valodas kā Lisp.
  • Jūlijai ir pilnu funkciju atkļūdotājs. Jūlija 1.1 iepazīstināja ar atkļūdošanas komplektu, kas izpilda kodu vietējā REPL un ļauj jums pārskatīt rezultātus, pārbaudīt mainīgos un kodā pievienot pārtraukuma punktus. Jūs pat varat veikt precīzus uzdevumus, piemēram, pārejot caur kodu ģenerētu funkciju.

Saistītais video: kā Python atvieglo programmēšanu

Ideāli piemērots IT, Python vienkāršo daudzu veidu darbu, sākot no sistēmas automatizācijas līdz darbam tādās modernās jomās kā mašīnmācīšanās.

Džūlija pret Python: Jūlijas valodas priekšrocības

Jūlija jau no paša sākuma tika izstrādāta zinātniskai un skaitliskai aprēķināšanai. Tāpēc nav pārsteigums, ka Džūlijai ir daudzas funkcijas, kas ir izdevīgas šādos lietošanas gadījumos:

  • Jūlija ir ātra. Jūlijas JIT kompilācija un tipa deklarācijas nozīmē, ka tā var regulāri pārspēt “tīru”, neoptimizētu Python pēc lieluma pakāpēm. Python var būt izgatavots ātrāk, izmantojot ārējās bibliotēkas, trešo pušu JIT kompilatorus (PyPy) un optimizāciju, izmantojot tādus rīkus kā Cython, taču Džūlija ir paredzēta ātrākai tieši no vārtiem.
  • Jūlijai ir matemātikai piemērota sintakse. Jūlijas galvenā mērķauditorija ir zinātnisko skaitļošanas valodu un tādu lietotāju kā Matlab, R, Mathematica un Octave lietotāji. Jūlijas matemātisko darbību sintakse vairāk izskatās pēc tā, kā matemātikas formulas tiek rakstītas ārpus skaitļošanas pasaules, tādējādi programmētājiem, kas nav programmētāji, ir vieglāk to uzņemt.
  • Jūlijai ir automātiska atmiņas pārvaldība. Tāpat kā Python, arī Džūlija nenoslogo lietotāju ar sīkāku informāciju par atmiņas piešķiršanu un atbrīvošanu, un tas nodrošina manuālu kontroli pār atkritumu savākšanu. Ideja ir tāda, ka, pārejot uz Jūliju, jūs nezaudējat vienu no Python kopīgajām ērtībām.
  • Jūlija piedāvā pārāku paralēlismu. Matemātika un zinātniskā skaitļošana plaukst, kad varat izmantot visus attiecīgajā mašīnā pieejamos resursus, īpaši vairākus kodolus. Gan Python, gan Julia var veikt operācijas paralēli. Tomēr, izmantojot Python darbības paralēlizēšanas metodes, bieži vien datus jāserializē un deserializē starp pavedieniem vai mezgliem, savukārt Džūlijas paralelizācija ir precīzāka. Turklāt Jūlijas paralelizācijas sintakse ir mazāk smaga nekā Python, tādējādi samazinot tās izmantošanas slieksni.
  • Jūlija izstrādā savas dzimtās mašīnmācīšanās bibliotēkas. Flux ir mašīnmācīšanās bibliotēka Jūlijai, kurai ir daudz esošo modeļu modeļu parastās lietošanas gadījumiem. Tā kā tas ir pilnībā rakstīts Jūlijā, to var modificēt pēc lietotāja nepieciešamības, un tas izmanto Jūlijas vietējo kompilāciju tieši laikā, lai optimizētu projektus no iekšpuses.

Jūlija pret Python: Python priekšrocības

Neskatoties uz to, ka Džūlija ir paredzēta datu zinātnei, turpretī Python ir vairāk vai mazāk attīstījies par lomu, Python datu zinātniekam piedāvā dažas pārliecinošas priekšrocības. Daži no galvenajiem iemesliem, kāpēc Python var būt labāka izvēle datu zinātnes darbā:

  • Python izmanto masīvu indeksēšanu uz nulles bāzes. Vairumā valodu, ieskaitot Python un C, masīva pirmajam elementam piekļūst ar nulli, piemēram, virkne [0] Pitonā - pirmajai rakstzīmei virknē. Džūlija masīva pirmajam elementam izmanto 1. Tas nav patvaļīgs lēmums; Daudzās citās matemātikas un zinātnes lietojumprogrammās, piemēram, Mathematica, tiek izmantota 1 indeksēšana, un Džūlija ir domāta, lai uzrunātu šo auditoriju. Jūlijā ir iespējams atbalstīt nulles indeksēšanu ar eksperimentālu funkciju, taču 1 indeksēšana pēc noklusējuma var traucēt vispārīgāk izmantojamas auditorijas ar iesakņotiem programmēšanas paradumiem pieņemšanu.
  • Python ir mazāk startēšanas pieskaitāmās izmaksas. Python programmas var būt lēnākas nekā Julia programmas, taču pats Python izpildlaiks ir vieglāks, un parasti Python programmu startēšana un pirmo rezultātu sniegšana prasa mazāk laika. Lai arī JIT kompilācija paātrina Jūlijas programmu izpildes laiku, tas nāk par lēnākas palaišanas cenu. Ir paveikts liels darbs, lai Džūlija sāktu ātrāk, taču Python šeit joprojām ir priekšrocības.
  • Pitons ir nobriedis. Jūlijas valoda ir jauna. Džūlija tika izstrādāta tikai kopš 2009. gada, un pa ceļam tai bija pakļauts diezgan daudz funkciju. Turpretī Python pastāv jau gandrīz 30 gadus.
  • Python ir daudz vairāk trešo pušu pakotņu. Trešo personu pakešu Python kultūras plašums un lietderība joprojām ir viena no valodas lielākajām atrakcijām. Atkal Džūlijas relatīvais jaunums nozīmē, ka programmatūras kultūra ap to joprojām ir maza. Daļu no tā kompensē spēja izmantot esošās C un Python bibliotēkas, taču Džūlijai ir nepieciešamas pašas bibliotēkas, lai tās varētu uzplaukt. Bibliotēkas, piemēram, Flux un Knet, padara Džūliju noderīgu mašīnmācībai un dziļām mācībām, taču lielāko daļu šī darba joprojām veic ar TensorFlow vai PyTorch.
  • Python ir miljoniem lietotāju. Valoda nav nekas, ja ap to nav liela, uzticīga un aktīva kopiena. Kopiena ap Jūliju ir entuziasma pilna un pieaug, taču tā joprojām ir tikai daļa no Python kopienas lieluma. Python milzīgā kopiena ir milzīga priekšrocība.
  • Python kļūst ātrāks. Līdztekus Python tulka uzlabojumu iegūšanai (ieskaitot daudzkodolu un paralēlās apstrādes uzlabojumus), Python ir kļuvis vieglāk paātrināt. Mypyc projekts pārveido Python ar piezīmēm vietējā C valodā, kas ir daudz mazāk sarežģīta nekā Cython. Parasti tas uzlabo veiktspēju četrreiz, un tīri matemātiskām operācijām bieži vien ir daudz vairāk.
$config[zx-auto] not found$config[zx-overlay] not found