Is The Go Programming Language Worth Learning?
Melyik programnyelv használatában érdemes elmélyülni hosszabb távon?
■ H | K | Sze | Cs | P | Szo | V |
---|---|---|---|---|---|---|
24 | 25 | 26 | 27 | 28 | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | 1 | 2 | 3 | 4 | 5 | 6 |
Nyaf :)
Azok a butaságok meg, hogy valami 20+ másodpercig tart .NET-ben/Javaban, míg C-ben ugyanez pár pillanat... Aki ezt valóban el is hiszi, azt nem is csodálom, hogy nem veszik fel egy adott nyelv specifikus interjún :) Nem azt kétlem, hogy ennyire el lehet b***ni valamit egy high-level nyelvben, hanem hogy valakinek X év programozói tapasztalattal nem tűnik fel, hogy ez tervezési/implementációs hiba, nem a nyelv ilyen lassú, ha már gépi kódra fordul. Már pl ha tudja, hogy arra fordul és nem azt hiszi, hogy pl a Java interpretált nyelv, mert nem exére fordul :) Ha nem tudja, akkor meg azért.
Ja, és még valami. Akinek a tudása elavul a munkahelyén, az meg is érdemli. Ez több dolgot is jelenthet:
- Nem tudja, hogy elévül a tudása
- Tudja, de nem érdekli, hogy elévül a tudása
- Tudja, érdekli is, de nem mer váltani
Ki melyik típust venné fel szívesen?
A szerző szerint a Go nyelv
Egyetértek, nekem is a hiszti
Egyrészt nem hiszem, hogy C++ programozóra ne lenne kereslet, főleg ha jó. Másrészt ha annyira kell neki munka, és olyan rohadt gyorsan sajátít el egy nyelvet, elmehetne bárhova Javascript/Java/PHP/akármi programozónak, felveszik kevesebb tapasztalattal is (ha tényleg olyan jó, mint mondja), mert nagy a kereslet. Csak akkor valószínűleg végig hisztizne, hogy milyen béna nyelveken kell programoznia, őt senki sem érti meg, ez a kor nem érett meg az ő zsenijére - ami nyilván rontja a teljesítményét.
Előre meg ki tudná megmondani, hogy egy nyelv népszerű lesz-e, 5 év múlva lesz-e rá kereslet?
Bármelyik oo nyelvben
A go egy jó nyelv. Belenéztem, tetszett. Ami nekem nem jött be, hogy kevés hírt hallok róla, ami meg valószínűleg azt jelenti, hogy kicsi a közössége. Ami meg azt jelenti, hogy kevés az olyan eszköz, amit mások leprogramoztak. Ha ez igaz, akkor nem különösebben van értelme foglalkozni vele, hacsak nem olyan projekted van, amihez tökéletesen megfelel a go jelenlegi eszköztára is. Én a feltételezett kis közösség miatt nem igazán mélyültem el benne. Lehet, hogy én tévedtem...
en a helyeben Javascriptben
Az béna nyelv, mert lassú
ohh :D
Go
Sem pedig osztály, objektum.
Érdekes nyelvnek tűnik, kíváncsi leszek merre fog menni. De szvsz én nem gondolom, hogy a go lesz a következő nagy világmegváltó nyelv. Aztán persze majd kiderül.
Valószínűleg a következők
Arguments against OOP
2 dolgot említ a hozzászólás írója: több core, és memory access. A kettőnek kb semmi köze egymáshoz, teljesen más problémát hoznak be.
Memory access: Ez ugye nem újdonság. Talán ismerősen hangzik, hogy "RAM is the new disk", vagy ennek egy másik verziója. A lényeg, hogy a mai processzorok sokkal gyorsabbak, mint amilyen gyorsan elérhető a memória, és egy rosszul szervezett adatszerkezettel kb lábon lehet lőni a legszebb kódot, és a legjobban kitalált algoritmust is. Konkrétan a jelenlegi processzorok kb 200x (!!!) annyi idő alatt érik el a memóriában lévő adatot, mint ami kéznél van (regiszterek, belső bufferek, L1 cache). Ezt nyilván az Intelnél is tudják :), ezért a mérnökök mindenféle spekulatív okosságokkal spékelték meg a procikat. Ami idevág, az a prefetching. Ez azt jelenti, hogy a processzor azt feltételezi, hogy okos adatszerkezetekkel dolgozunk (gyakorlatilag tömb), ezért arra számítva, hogy szépen végigmegyünk rajta (és miért ne tennénk, a programjaink valójában adatszerkezetek köré épült ciklusok és elágazások), betöltögeti nekünk a szomszédos memória területet a cache-be majd jó lesz az valamire alapon. És ha a programozó ezzel tisztában van, akkor jó is lesz :) És itt jön képbe az, amiért az OOP-t szokták bántani, nevezetesen a dinamikusan röptében létrehozogatott objektumok össze-vissza helyezked(het)nek el a memóriában, ezért az ilyen objektumokkal dolgozó kód igen nagy arányú cache miss-re van ítélve, ami azt fogja jelenteni, hogy a proci tökjót malmozik, miközben mi úgy látjuk, hogy vörösen izzik a gép, mert egész kelet-kína a mi kódunkat hajtja. Ezzel nagyon nem lehet vitatkozni, ez tény. De miért kéne ezt mindenképpen így csinálni? OOP kódban bűn a tömb, meg a szekvenciális adatszerkezetek? Én nem így látom, és szerencsére sokan nem így látják, ezért készülnek igen gyors kódok OOP alapokon. Sőt, pl a világ pénzügyi rendszerének igen tekintélyes része nemhogy OOP-ban, de Javaban készül. És gyors. Nagyon gyors :) Pár százalékkal lassabb, mintha C-ben írnák, de bőven elég gyors ahhoz, hogy ésszerű kompromisszum legyen a sebesség vs karbantarthatóság örök kérdésben. Nyilván nem az EJB-s horrorokra kell itt gondolni természetesen. Ráadásul OOP-vel egy belül bonyolultabb, szétoptimalizált kódot is el tudsz fedni szép interface-szel, procedurális kódban ez azért macerásabb. És ott is lehet csúfságokat elkövetni adatszerkezet téren, elég pl egy linked-list és unbounded queue házasságra gondolni. Lényegében azt kell látni, hogy az OOP kód is ugyanarra fordul, mint a procedurális, a processzor csak egyfélét ismer.
Ami a sok core-t illeti, ez nyilván többszálú programoknál kihívás. Szinkronizálni a szálakat, lockok, hogyan és mennyire skálázhatók az egyes algoritmusok stb. Az se véletlen, hogy bizonyos alkalmazási területeken inkább egyszálú programokat írnak, hogy ne kelljen a fentiekből adódó lassulással számolni. De ennek aztán tényleg nem sok köze van ahhoz, hogy OOP, vagy sem.
OOP
Úgy gondolom, hogy az elkövetkezendő években teljesítményigényes szoftvereknél az OOP szép lassan vissza fog szorulni, és a funkcionális programozás veszi át a fentiek miatt (párhuzamos programozás) sok esetben a helyét. Mondjuk szerveroldalon valószínűleg tovább fogja tartani magát, mert ott könnyebb a hardvert bővíteni.
Az általad leírt tapasztalatokat hány év alatt és milyen IQ-val lehet összeszedni?
Úgy gondolom, hogy az
Erre én 0.1% esélyt látok, de majd megbeszéljük 5 év múlva... :D
Az általad leírt
Es az altalad osszehordott badarsagokat?
Mondjuk az IQ-nak nem tudom mi koze van ehhez, de te biztosan tudod azt is.
Az általam összehordott
Az nem ertheto, hogy miert
Mert nincs meg az egyensúly,
Konkrétan mit támasztottam
Arról ne felejtkezz el, hogy
OOP kódban bűn a tömb, meg a
A helyzet az, hogy ezekről
Egyébként ha már ezzel a példával jöttél elő :) Liskov substitution principle
Arra gondoltál, hogy az
Akár. De ez így picit
Nem vagyok egy expert
Hogy a témához is hozzászóljak, én ritkának tartom az olyan eseteket, amikor az ügyfél külön fizetni szeretne azért, hogy szénné legyen optimalizálva a kód. Ez mondjuk az én tapasztalatom, de várom a véleményeket ezzel kapcsolatban.
Hogy mi a lassú, az relatív.
Hogy költenek-e rá? Valóban, nem nagyon. Mert nincs is rá szükségük. Ahol kell, ott nem tudják kikerülni úgyse, hogy költsenek rá. Se szakértőben, se infrastruktúrában.
Gondolkodtam azokon, amit
:)
app engine és böngésző