• kvp
    #32
    A go eseteben a lenyeg nem a forditasi ido vagy a futtatasi sebesseg. A lenyeg, hogy ez meg kozelebb van a klasszikus 1973-ban megalmodott smalltalk-hoz, mint a java. Akit a sebesseg erdekel, az leforditja mindkettot nativ kodda. (java-bol is lehet x86-os gepi kodot gyartani es akkor pont olyan gyors lesz mint a c)

    A go elonyei:
    -nincsennek objektum leszarmazasok, egy objekum akkor felel meg egy adott interface-nek ha minden szukseges fuggveny megvan benne
    -nincs oparator overloading, tehat nem kell azt keresni, hogy ma eppen mit jelent az osszeadas jel
    -nincsennek benne implicit operatorok, tehat az amikor egy muvelet nem csak kiszamol valamit, hanem modosit is az adatokon a nelkul, hogy ez latszana
    -nincs benne pointer aritmetika, tehat nem lehet olyan kodot irni, a tul/alul/felul/stb csordul
    -nincsennek parameter fuggo fuggvenyhivasok, tehat nem kell azon gondolkodni, hogy x fuggveny helyett melyik fog futni, ha masfajta adatot kap, a nevek egyertelmuek
    -egyelore nincsennek template-ek, stl es boost, tehat az a kaosz amit a c++ bizottsagok eves gyulesei behoznak a szabvanyokba (es evente ujrairnak)
    -van futasideju reflexio, tehat a programok latjak a sajat kodjukat es az adatszerkezetuket, igy nem kell mindent kezzel megadni, sokmindent magatol letrehoz a fordito (a kod akar sajat magat is fejlesztheti menet kozben)
    -automatikus a szemetgyujtes, tehat nem fordulhat elo, hogy programozoi hibabol egy program tobb memoriat egyen, mint amennyit tenyleg fel is hasznal

    Egyebkent a tovabbfejlesztett c++-t hivjak c#-nak, az ujragondolt c++-t hivjak java-nak, es most itt az ujragondolt c, a go. Egyebkent a go elvei szerint eddig is lehetett c-ben is fejleszteni, csak mivel nem volt letiltva egy csomo veszelyes c-s muvelet es hianyzott par egyszerusites ezert nem hivtak kulon nyelvnek es sokkal jobban oda kellett figyelni, hogy nehogy valami benasagot elkovessen az ember. A go-bol ezeket a lehetosegeket kiszedtek es cserebe jott egy csomo fejlesztesi kenyelmet szolgalo egyszerusites.

    ps: A programozas elmelete egyszeru, egy klasszikus neumann gep altalaban a kovetkezoket tudja:
    -aritmetikai muveletek: osszeadas, kivonas, szorzas, osztas, maradekkepzes
    -logikai muveletek: es, vagy, nem, kizaro vagy
    -osszehasonlitas: egyenlo, nem egyenlo, kisebb, nagyobb, kisebb egyenlo, nagyobb egyenlo
    -felteteles es feltetel nelkuli vezerlesatadas: menj oda (goto), ha-akkor-egyebkent (if-then-else)
    -memoria irasa es olvasasa: ertekadas es valtozok (let, var)
    -adatformatumok kezelese: valtozotipusok (egesz, lebegopontos, byte, stb.)

    Az osszes tobbi bonyolult programozasi szerkezet es elv ezekbol az alapelvekbol szarmazik es az egeszet le lehet bontai a fenti elemekre. (erre valok a forditoprogramok es a programnyelvek, csak az utobbi idoben valahol a szabvanyositoknak sikerult elveszteniuk a fonalat es az uj szabvanyokat kovetve bonyolultabb megirni valamit mint a regieket hasznalva)