"Ha komoly terveid vannak a programozással és tényleg érteni akarod hogyan működik a számítógép, akkor C/C++,"
Ugyan, mi a bánat köze van a választott programnyelvnek a számítógép működéséhez?
Amúgy, nagyon jó a nicked. Passzol a hsz-eid valóságtartalmához.
My final year project at The University of Hong Kong. An experimental programming language support object state transition with good readability.
Features
====
* Object-Oriented features
* Familiar syntax
* Built-in state machine syntax
* Communicates between state machines
* Event parallelization
* Intuitive concurrency syntax
* Indentation rules
Compiler
====
It is written in pure Object Pascal.
Assembly: pár éve olvastam egy érdekes cikket, most sajnos nem találom, hogy a 90-es években japánban középiskolásokat assembly-ben tanítottak programozni nagyon jó eredménnyel (zsebszámítógépeken!). Ha meg az eladott darabszámot nézzük meglepő lenne az eredmény (jó pár éve benne voltam egy kisebb fejlesztésben, assembly-ben fejlesztettünk egy háztartási gépbe szoftvert, eleve a megrendelő úgy számolt, hogy csak ebből pár év alatt 1-1,5 millió darabot akar eladni világszerte). Sajnos ha valaki Pythonban és vagy C++-ban (vagy bármi ami objektum orientált) kezd nagyon nehéz átállnia asssembly-re, fordítva egyszerűbb.
Fortran: valaki írta "30 éve nem használt szar": 2002-ben még fejlesztettünk fortranban. És van néhány hely ahol a mai napig használják arra amire való. Való igaz, hogy az utolsó néhány évben kezd teljesen eltűnni.
Divatnyelvek: én azoktól tartanék. Mindig van egy aktuális divatirányzat és azt kell tanulni. Majd pár év múlva jön a következő. Most éppen Python a divatos nyelv. 15 éve a Pascal volt az.
Kérdés, hogy a mi a cél? Kiszolgálni azt az igényt ami ma van, vagy gondolni arra, hogy a programozó nem 2-3 évig lesz programozó hanem kb. 30-40 évig és olyan alap tudás kell ami elég lesz neki 30-40 évre? Ismertem olyan programozót aki még a 60-as évek közepén lett programozó (külföldön) és akkor megtanulta az alapokat. Azt mesélte, hogy amikor bejött a C++ arra átállnia nagyon gyorsan sikerült (pedig nem volt már fiatal). Ha számolunk egy kicsit, ha ma valaki programozóként kezdi akkor kb.20-25 éves kora között van, kb. 65 éves koráig biztosan fog dolgozni, így amit most megtanul 40 évig kell használnia és nem 2 v. 3 év ami ma divatos. Érdemes úgy megtanítani a programozókat programozni, hogy az alapk nagyon stabilak legyenek, erre nagyon jók a procedurális nyelvek (pl. pascal, tradicionális C) majd ha az megvan akkor tovább lépni Python, C++, Java akármi. Esetleg abból még az assembly felé is lehet tovább lépni. OK, hogy a UNIX C-ben van megírva(újabbak C++-ban, meg is látszik az eredmény). Egyébként ez egy nehéz kérdés.
Ha igazán szakmailag nézem nagyon korán kéne specializálódni ma már. Kinek mihez van affinitása, melyik terület érdekli, mert ma már nincs olyan, hogy "programozó" (és igen ez az oktatás nehézsége is).Egészen más alapok kellenek annak aki nagyon mély hardver közeli programozást akar végezni (esetleg proci mikrokódot akar fejleszteni), és egészen más annak aki egy web áruházat, meg megint más aki egy játék 3D modeljéhez szükséges programokra vágyik. Nyilván sok közös rész van, de teljesen más alapok kellenek.Nyilván az alap elemek (változó, elágazás, ciklus, eljárás hívás stb.) közösek (kis leegyszerűsítéssel), de a konkrétumok nagyon durván eltérnek (pl. nézd meg egy objektum orientált nyelv működését, felépítését, és pl. akár csak egy pascal, vagy egy lenézett fortran programét, vagy ami ma megint előkerül az, hogy ki fog belenyúlni az 50-60 éves Cobol programokba...).
"#11 Ha elvégeztél volna egy villamosmérnöki BSC+MSC-t, értenéd :)"
Én elvégeztem, csak te nem.
Ha tetted volna, nem írtál volna ilyen hülyeségeket.
"ha tényleg nem érted miről van szó."
Fogd már fel, ember, Te vagy az, aki nem érti miről van szó.
A kérdező kérdése arra irányul, hogy megtudja, a programozás TANULÁSÁHOZ melyik a legideálisabb nyelv. A C/C++ pedig abszolút nem ideális ilyen célra, de azt láttatja, hogy te el sem tudod képzelni, milyen az, hogy valaki több nyelv elsajátításába is fektet energiát.
Abban is tévedsz, hogy azt sugalmazod, a C vagy a C++ tanulása közelebb visz a hardver megértéséhez. Hát, erről szó sincs. Ez butaság.
Nem jártál te semmiféle egyetemre, de még egy nyomorult középiskolai szakkörbe sem. Ez az igazság.
BME VIK-re jártam, első félévben prog1-ből C-t, második félévben prog2-ből C++t és digit2-ből assemblyt tanítottak. De biztos hülyék ehhez a BME-n. A C után pedig minden más programnyelv szintaktikáját órák kérdése megtanulni. És nem csak a C-nek magának a szintaktikáját tanultuk, hanem azt is hogyan fordul le, a hova töltődik be a memóriába, hogyan történik az utasításvégrehajtás, regiszterkezelés C-ből, assembly kód beágyazása C kódba, stb. És nagyon sok nyelv a C-re épül, ilyenek a C++, C#, Java. Igen, a C egy nagyon jó kezdő nyelv, már csak a pointerek miatt is, ami után már nagyon könnyű megérteni a memóriakezelést és az objektumorientált nyelvek működését. Erre még az is rájön, hogy a beágyazott rendszerek 99%-át C-ben írták/írják, mert olyan közeli hardver hozzáférést tesz lehetővé olyan egyszerűen, amit más programnyelvek nem.
Ellenben te még semmilyen nyelvet nem javasoltál a kérdezőnek, csak belekötöttél a válaszomba, leszóltad a C/C++t anélkül hogy bármivel is megindokoltad volna. Ha annyira értesz hozzá, válaszold meg a kérdést indoklással.
"Abban is tévedsz, hogy azt sugalmazod, a C vagy a C++ tanulása közelebb visz a hardver megértéséhez. Hát, erről szó sincs. Ez butaság."
Pacsi:) (Főleg az elejéhez). Ez egy ma nagyon népszerű tévedés "szakemberek" és "megmondó emberek" világában, hogy a C/C++ "hardver közeli nyelv" és segít a hardver megértésében.
Hát nagyon nem az... Az, igaz, hogy volt két fószer aki ezelőtt kb. 50 évvel berágott a világra és kitalálta a C nyelvet és kitalálták hozzá a Unixot, hogy bebizonyítsák, hogy mindeki hülye csak mi vagyunk helikopterek... A C/C++ Nagyon nem a hardverről szól. Ez látszik a unixokon és látszik az egész mai informatikán. Valóban van egy nagy előnye a C-nek és leánykáinak, hogy egy "viszonylag" egyserűen megtanulható nyelv, elég sok mindent meg lehet benne írni (különösen a "Hello, world!" programot), de a hardvertől irtózatosan messze van. A C++ meg még távolabb van. Eleve ott kezdődik ami objektum orientált (és ilyen a C++) brutál távol áll a hardvertől mert ma még nem létezik egyetlen olyan processzor sem a világon amelyik támogatná az objektum orientált programozást (egyszer nézd meg mire fordít egy olyan objektum átadást amikor az objektumban benne van 15 függvény és néhány megabyte adat, és miért zabálja fel a teremtő összes RAMját egy egyszerű program egy kis rekurzióval). Tehát minden ami objektum orientált nem hardver közeli és semmivel nem visz közelebb a hardver megértéséhez. SŐT! pont ez a lényege ezeknek a nyelveknek (és ezért nevezzük őket magas szintű nyelveknek, már aki legalább 20 éve tanulta a szakmát, ma nem tudom mit tanítanak),mert függetlenek attól a hardvertől amin futnak. Gyakorlatilag ez az egyetlen előnye, hogy a unixot C-ben írták, mert így "viszonylag" egyszerűen portolható más és más hardverekre (igaz kilométeres #ifdef procitipus ... részek azért vannak benne szóval miről is beszélünk?).
A hardvert megérteni nem programnyelv kell hanem a digitális technika ismerete, logikai függvények, kombinációs és sorrendi hálózatok. Nem egy hobby projekt van ma, hogy építsünk diszkrét számítógépet. Amikor tényleg kapu áramkörökből építjük fel a gépet. Baromi jó játék. Azzal megérthető maga a számítógép és a hardver működése. De a világon egyetlen programnyelv sem fogja ezt neked támogatni. Bocs ez már kicsit off de elszállt az agyam...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!