Programmēšana

Java pret Google's Go: episka cīņa par izstrādātāja domu kopīgošanu

Go vs Java nav labi saskaņota cīņa starp vienādiem. Viens no tiem ir zvērīgs smagsvars, kas gadiem ilgi ir dominējis nozarē. Otrs ir niecīgs, viegls jaunpienācējs, kurš parāda daudz jaunības un sola, bet kuram ir tikai daži sitieni.

Java un Go risina arī dažādas nišas. Viens no tiem ir tieši vērsts uz servera puses tīmekļa lietotnēm, jomu, kurā otrs kādreiz bija nozīmīgs spēlētājs. Otrs ir pāraudzis dzīvi plauktos un tagad ir populāra ierīču izvēle.

Bet ne visi ir attālinājušies no Java tīmekļa lietojumprogrammu servera pusē, teritorija Go uzbrūk, apēdot Java bāzi. Un slēdzis nav ārkārtīgi liels lēciens, jo abi ir daudzos aspektos līdzīgi. Abi mīl ciešanu pret C, ja ne zem tā, vismaz uz virsmas, kur daudzi izstrādātāji savu dzīvi pavada, cīnoties ar sintaksi. Tie ir gan vienkārši, gan obligāti ar pietiekamu strukturālo līdzību, ka nav grūti konvertēt kodu starp abiem. (Piemēram, TardisGo projekts ir viens rīks, kas pārvērsīs Go par Java, C # vai JavaScript.)

Apsveriet šo būru spēli, kurā divi brālēni no dažādām programmēšanas celiņu pusēm sacenšas par nākamo lietojumprogrammu kaudzi.

Java ilgajā vēsturē ir tīkla efekti, kas palīdz visiem

Java pastāv kopš 1995. gada, katru gadu piesaistot vairāk domu. Pateicoties tās veiklajai, tieši savlaicīgajai virtuālajai mašīnai, viss, sākot no sīkiem iegultiem procesoriem līdz milzīgām servera mikroshēmām, ātri un efektīvi palaiž Java. Android ir kļuvis par labu Java, kas līdz šim ir vispopulārākā platforma mobilajā pasaulē. Tāpēc Java joprojām ir labākais suns tādos reitingos kā Tiobe indekss un PyPL. Šī plašā pieņemšana nozīmē, ka ir daudz kodu atkārtotai izmantošanai, un liela daļa no tā ir atvērta pirmkoda, lai vienkāršotu jūsu dzīvi. Kad jūs sākat sašūt baziljona brīvi pieejamā Java koda rindas, jūs stāvēsit uz milžu pleciem.

Go īsā vēsture padara to uzreiz aktuālu

Protams, ir forši izlaupīt bezmaksas Java kodu no tīmekļa. Bet pagaidiet, tas ir rakstīts Java 1.3, un jūsu priekšnieks vēlas, lai jūs izmantotu Java 1.8. Neuztraucieties, iespējams, ka to atkal varēsit darbināt, nedaudz pārrakstot. Pārcelsim šo termiņu vēlreiz ... un atkal. Vecais kods var šķist dāvana, taču tas ne vienmēr ir slam dunk, un dažreiz tas ir vairāk problēmu, nekā tas ir vērts.

Savukārt Go īsā vēsture nozīmē, ka tā ir rakstīta mūsdienu tīmekļa standartiem. No tiem laikiem, kad pasaulē dominēja sīklietotnes, vairs nav atlicis. Nav jau sen aizmirstu ideju, piemēram, Java Beans vai J2EE, kas sēdētu kā vilinoši traucēkļi. Tas ir vienkārši jauns un izstrādāts tam, kā cilvēki šodien veido tīmekli.

Java ļauj pieskarties citām valodām

JVM ir pamats desmitiem interesantu valodu, kas izpildes laikā ir atkarīgas no Java. Katru no tām var viegli saistīt ar jūsu kodu, ļaujot vienu daļu rakstīt Kotlinā, otru Scala un, iespējams, salīmēt to visu kopā ar Clojure. Ja vēlaties izmantot tādas valodas kā Python, JavaScript vai Ruby, visas trīs var darboties tieši Java zemē, izmantojot emulatorus, kas bieži ir pirmā izvēle. Java dod jums iespēju ļaut katram apakšgrupam un apakšprojektam izvēlēties pareizo darba valodu, vienlaikus darbojoties tajā pašā JVM. Jums tas nav jāizmanto, taču iespēja vienmēr ir.

Go veicina harmoniju

Jā, jūs varat adīt kopā ļoti gudru lietojumprogrammu, kas apvieno labāko no jaunā un modernā, izvēloties absolūti labāko valodu katrai sava brīnišķīgā magnēta opusa daļai JVM. Jūs pat varat sajaukt tādus vecus ļaudis kā Rexx un Common Lisp, lai godinātu viņu vietu 70. gadu laikmeta skaitļošanas vēsturē. Lai veicas atrast cilvēku ar vienādām gaumēm un talantiem, kurš uzturēs šo Bābeles torni. Līdztekus dažu labi izveidotu bibliotēku sajaukšanai, izstrādājot labu kodu, ne vienmēr ir labs plāns līdzināties Rube Goldbergam. Dažreiz tas ir lietderīgi un nepieciešams, taču tas nenozīmē, ka tas ir labs plāns. Harmonija un konsekvence atvieglo dzīvi visiem. Go pasaule to nodrošina.

Java JVM ir slaids un spēcīgs

Java klases failus bieži mēra simtiem baitu. JAR faili, kas tos saista, parasti ir tikai daži megabaiti. Java kods pats par sevi ir mazs, jo virtuālajai mašīnai ir tik daudz enerģijas atmiņas pārvaldībai un drošībai. Ja plānojat pārvietoties pa daudziem kodiem, ir lietderīgi atstāt funkcionalitāti kopējā izpildlaika rīkā. Centralizācijai ir arī citas priekšrocības. Ja drošības problēma parādās Java zemākajos līmeņos, nav nepieciešams atkārtoti apkopot un atkārtoti saistīt visu kodu. Daudzas problēmas tiek atrisinātas, vien modernizējot JVM.

Go izveido pilnu paketi

JVM ir brīnišķīgs, līdz atklājat, ka instalēta nepareiza versija. Ja vēlaties palaist JAR ar Java 1.8, bet jums ir tikai JVM 1.6 versija, jūs nekur nedosit, kamēr to neatradīsit. Go kompilators rada bināros failus, kas ir gatavi darbībai. Jā, tie ir nedaudz lieli, bet tas ir tāpēc, ka Go pievieno visu papildu kodu binārā failā. Tas viss ir vienā ērtā iepakojumā.

Java padara pavedienus mirušus vienkāršus

Dažādu programmas daļu patstāvīga palaišana nav viegls uzdevums. Java ieguva agrīnos fanus, jo tā pavedienu modelis bija pietiekami vienkāršs, lai to saprastu, bet pietiekami spēcīgs, lai būtu noderīgs. JVM veic labu darbu, kartējot pavedienus dažādiem mašīnas kodoliem. To nav viegli izdarīt, bet tas ir problēmas sarežģītības dēļ, nevis Java. Go lietotājiem, iespējams, patīk viņu gorutines un kanāli, taču viņi jau uzpūtīgajam putram pievieno vēl vienu mezglainu sarežģītības slāni. Jūs atradīsit sev jautājumu, vai tas ir zaļš pavediens vai OS pavediens. Tad jūs interesēsieties par sinhronizācijas kanālu sarežģītību. Java ir vienkāršāka.

Go atvieglo vītnes slodzi, saprātīgi

Java pavedieni un sinhronizācijas primitīvi var paveikt šo darbu, taču par dārgu cenu. Vītņu veidošana un iznīcināšana ir tik darbietilpīga un aizņem daudz atmiņas, ka Java programmētāji tos vienmēr pārstrādā ar pavedienu kopām. Java ir zaudējusi saķeri serverī, jo katram vietnes trāpījumam ir nepieciešams savs pavediens. Go ir mazāks svars un elastīgāki objekti, kurus sauc par gorutines, kas ir saistīti ar inteliģentām sinhronizācijas rindām, ko sauc par kanāliem. Lai gan šķiet, ka lielākajai daļai serveru ir 1000 vai varbūt 10 000 Java pavedienu, cilvēki regulāri ziņo, ka tajā pašā aparatūrā darbojas simtiem tūkstošu gorutīnu.

Go modelis ir sarežģītāks un modernāks, jo ir jaunāks. Šis lauks ir daudz iemācījies par sarežģītu daudzprocesoru algoritmu piegādi, un jūs to varētu arī izmantot.

Java rīki ir pārbaudīti un patiesi

Java briedums nozīmē, ka jums ir daudz lielisku rīku iespēju: Eclipse, IntelliJ un daudz ko citu. Ir sarežģīti veidošanas rīki, piemēram, Ant un Maven, un galvenie krātuves ir optimizēti, lai apstrādātu Java kodu. Ir arī meta kodu analīze, sākot no koda noteikumu ieviešanas līdz sacensību apstākļu meklēšanai. Viņi var nedarboties ar jūsu koda versiju, taču bieži vien darbojas. Tāpēc Java ir tik juggernaut.

Go rīki ir moderni un jauni

Go tika izveidots mūsdienu daudzjoslu pasaulei, un kodu rīki ir optimizēti mūsdienu izaicinājumiem. Atkļūdotājā un izpildlaikā ir iebūvēts sacensību apstākļu detektors, tāpēc daudz vienkāršāk ir tikt galā ar nepatīkamām problēmām. Avota kodu var pārbaudīt ar golintu un statisko analizatoru ar nosaukumu “go vet”, kuram ir vairākas heiristikas, lai uztvertu sliktu vai pat slikti uzrakstītu Go kodu. Visi šie un vēl vairāk ir optimizēti, lai jūsu kods ātri darbotos daudzkodolu mašīnā.

Java ir vēlamās konstrukcijas

Gadu gaitā Java kopiena ir vēlējusies daudzas funkcijas; kādu laiku tie ir piešķirti. Ir pievienoti slēgumi, vispārīgie medikamenti, lambdas un citi. Ja programmēšanas valodās ir jauna ideja, pastāv lielas iespējas, ka kāds to ir ieviesis Java pasaulē. Varbūt tas nav ideāli, bet iespējas ir. Pateicoties Java notiekošajai evolūcijai, jūs varat uzrakstīt izcilu kodu, ko jūsu smadzenes iedomājas.

Go izvairās no neskaidrībām

Brīvība izmantot desmitiem gudru kodēšanas struktūru izklausās lieliski, līdz visi komandas dalībnieki to sāk darīt. Tad kāda cita koda lasīšana kļūst grūtāka, jo viņi izmanto gudru funkciju A, kamēr jūsu smadzenes ir pieradušas pie gudras funkcijas B. Kombinatoriskais apjukums apvienojas ar katru izstrādātāju, kurš iemeta iecienītāko konstrukciju maisījumā.

No otras puses, Go bija paredzēts vienkārši. Tas tika skaidri izveidots tā, lai labs programmētājs varētu iemācīties Go dažu stundu laikā. Nav desmitiem gudru ideju, kas aizpildītu simtiem lappušu dokumentācijas. Tas, iespējams, ir ierobežojošs, rakstot kodu, taču tas ir relaksējoši, lasot kodu no citiem komandas dalībniekiem. Visi izmanto vienas un tās pašas idiomas, jo visi izmanto vienas un tās pašas galvenās iezīmes. Tā nav tikai komandas veidošanas pieredze, piemēram, Outward Bound. Tas ir par efektivitāti.

Java ir nobriedusi

Vecums sniedz gudrību, briedumu un stabilitāti - visus iemeslus, kāpēc izvēlēties plašu, labi izveidotu koda bāzi, kas ir vairāk nekā divus gadu desmitus dziļa. Bērni mūsdienās turpina mācīties Java sava datorzinātnes sākumā, un uz tā ir veidota dominējošākā platforma Android. Ja vien nav pamatota iemesla pārmaiņām, jums jāievēro labākie.

Go ir tīrs šīferis

Dažreiz vislabāk ir atstāt pagātni aiz muguras. Galu galā progress bieži nozīmē sākt no jauna. Go piedāvā jums iespēju strādāt ar tīru, kraukšķīgu, mūsdienīgu rīku, kas ir optimizēts šodien darāmajam. Tas ļauj izbaudīt pagātnes atstāšanas vienkāršību un brīvību.

Un vienkārši tāpēc, ka Google sāka Go, lai ieviestu zināmu vienkāršību to bezgalīgo serveru fermu kodēšanai, tas nenozīmē, ka tas to nevar pāraugt. Daži to jau izmanto, lai palaistu bezpilota lidaparātus, robotus un citas ierīces. Vai viedtālruņi var būt tālu aiz muguras?

Saistītie raksti

  • Pieskarieties Google Go valodas iespējām
  • Labākie Go valodas IDE un redaktori
  • Pārskats: Salīdzināti lielie četri Java IDE
  • "Angular vs React": episka cīņa par izstrādātāja domu dalīšanos
  • Java pret Node.js: episka cīņa par izstrādātāja domu daļu
  • PHP pret Node.js: episka cīņa par izstrādātāja domu daļu
  • Python vs R: Cīņa par datu zinātnieku domu dalīšanos
  • 21 karsta programmēšanas tendence - un 21 auksta
  • 9 meli, ko programmētāji sev saka
  • Karjeras uzlaušana: profesionāli un nederīgi izstrādātājiem
$config[zx-auto] not found$config[zx-overlay] not found