Huhh, az első és az utolsó mondat mintha kizárná egymást...
Kb. így hangzik: Mi egy nagyon jó focicsapat vagyunk, de állandó jelleggel rosszul focizunk. :-)
Megpróbálom pontosabban megfogalmazni az autodidakta programozás tanulással kapcsolatos véleményemet.
Ha valaki sose járt semmiféle programozói iskolába, de egy jól programozó csapatban megismerte és átvette a tapasztaltabbak módszereit, az nem autodidakta. Sőt, ez a legjobb, mert olyanoktól tanult, aki értenek is hozzá. (A gyorstalpaló tanfolyamokról, egyes főiskolák programozás tanításáról nagyon rossz a véleményem.)
Ha az illető esetleg egy idő után szükségét érezte hogy bővítse az elméleti tudását, és úgy ment el tanulni, hogy ki tudta választani azokat az előadásokat, amit érdemes is meghallgatni, esetleg kiküldték továbbképzésekre külföldi egyetemekre vagy cégekhez - kb. ez a csúcs.
Egy másik modell, amivel nincs jó tapasztalatom: Programozgatni kezdett otthon, saját szórakozásra. Később elvállalt kisebb munkákat, ezeket sikerrel megoldotta. Elterjedt a környezetében, hogy ért a programozáshoz, évekig dolgozott teljesen önállóan. Programozni nem tudó környezete felnézett rá, ő "értett a számítógéphez".
Kialakul egy önálló, stabil stílusa, ami több szempontból élesen ellentétes mindennel, ami a team munkához kell. A programot úgy kezdi el, hogy programsorokat ír le, és folyamatosan írja, alakítja, amíg kész nem lesz. (nem terv alapján kódol, nem dokumentált a programja, nem írja le mi mire való és mit csinál, nem különíti el a user interface-t a végrehajtó részektől, driver funkciók keverednek be, nem ismeri és így nem használja a szabványos hívásokat, megkerül rendszerfunkciókat, elszórtan sőt számok formájában szerepelnek olyan konstansok amelyek egy másik rendszer paraméterei és változhatnak, a változásokat nem dokumentálja, régi hibás szemét keveredik be, és így tovább)
Ehhez hasonló problémák miatt olvashatatlan a kód, és egy év múlva ő maga se ismeri ki magát benne. Ha mások kódjához kapcsolódik, állandóan bedől, és nem lehet tudni, miért. Régi hibák térnek vissza, és mikor nagynehezen elfogják, kiderül hogy egy már korábban javított hiba, csak visszaette a fene, mert nem a hazavitt merevlemezen levő új kód, hanem valami féléves szemét fordult be.
Ugyanakkor mélyen meg van arról győződve arról, hogy ő a menő, és értelmetlen hülyeségekkel zaklatják. Ha edig jó volt, most miért nem az?
Én egy nagyon jó csapatban dolgozom jelenleg, mégsem tudtam ezeket megtanulni. Mert nincs rá idő. Sajnos jelenleg egy átlagos programra 3-6 hónap áll rendelkezésre. Ez a tervezéshez és igényfelméréshez szükséges idő fele! Szóval a programok ahogy-esik-úgy-puffan technológiával szoknak készülni :)
1: nagyon meg vagyok sértődve :)
2: a nagy projekteket is fel lehet osztani kisebb projektekre és akkor már hatékonyan alkalmazhatók az ilyen emberek is (mint pl én)
3: az "autodidakta programozók" is képesek együttműködni, csak kevesen nem tudják bevallani, hogy nem tudnak mindent...
Természetesen hallottam a JIT-ről. És valóban sokkal gyorsabb lett tőle a Java. De a fordítás is ideig tart. Tehát ha nem olyan tesztet futtatsz, ahol valamit 10000000000000000 szor kell végrehajtani, akkor a fordítási időt is figyelembe kell venni. (például egy Java-s program mindig lassabban indul el, mint egy natív)
A túl sok szemetelés sem olyan ritka nagy programrendszerek esetén, mint azt gondolnád. Nagyon ügyes trükkök kellenek ahhoz, hogy a Java ne szemeteljen ész nélkül :)
Az autodidakta programozók kis projectekben képesek jól teljesíteni. Nagy, együttműködést igénylő munkában az én tapasztalatom szerint nem sokat ér a megszerzett tudásuk. Sőt, inkább akadályozza a helyes módszerek átvételét.
Én úgy látom, jelenleg jól programozni kizárólag egy hatékony programozói team tagjaként lehet megtanulni. Ott lehet csak stílust, módszereket, tervezést, együttmúködést, tesztelési módszereket tanulni.
Az egyetem leginkább arra kell, hogy egy ilyen helyre felvegyenek.
Engem inkább az zavar, hogy a tanárok, akik tanítanak, vagyis inkább tanítani próbálnak, vagy semmivel sem tudnak többet, mint mi, akiket tanítanak, mert ők is éppen most tanulják. Vagy tudják ugyan amit tanítanak, de minek kell egyáltalán tanulnunk, hiszen már évtizedekkel ezelőtt elavult...
Úgyhogy olyan GUIra van szükség, amit még egy mókus is tudna használni! Ezzel messzemenôkig egyetértek. Azzal nem értettem egyet, hogy a GUI megtervezése lenne a lényeg, hiszen legtöbbször ez a legkönnyebb feladat, és nem ezen múlik, hogy jó-e a rendszerterv.
Szerinted miben írták a JVM-et? Talán assemblyben? Természetesen az is C/C++-ban készült. És ilyen szempontból természetesen a Java program egy speciális C/C++ programnak tekinthető. áljunk meg egy szóra...
Elôször is, mond neked valamit az a technológia, hogy JIT?
Másodszor: hogyan fordítasz virtuális függvényt assemblyre C++-ról.
Na most gondold el, hogy a JIT virtuális függvényhívást is inline-osíthat adott esetben.
Egyébként ez csak egy extrém példa. én sem hiszem, hogy egy JAVA kód gyakran gyorsabb lenne, mint egy C++-os, de a különbség egyre kisebb, gyakorlatilag csak a túl sokat szemetelô JAVA programok okoznak ma már gondot...
Az informatika létező szakma, de te jártál programozó szakra? Én jártam (sőt még járok, mert halasztanom kellett az államvizsgát). És az égegyadtavilágon semmit sem tanultam ott. Szóval azon kívül, hogy lesz majd egy szép pecsétes parpirom, nem fogok semmivel sem többet tudni annál, aki nem végezte el az egyetemet, hanem autodidakta módon képezte önmagát.
Őszintén, hány végfelhasználóval találkoztál összesen? Egy átlag felhasználónak az egér használatát kell tanítani! Úgyhogy olyan GUIra van szükség, amit még egy mókus is tudna használni!
Viszont teljesen igazad van a GUI függetlenségében!
Szerinted miben írták a JVM-et? Talán assemblyben? Természetesen az is C/C++-ban készült. És ilyen szempontból természetesen a Java program egy speciális C/C++ programnak tekinthető. Ebből nyilván egyértelmű, hogy soha nem sikerülhet olyan Java programot írnod, amit nem lehet legalább elérni sebességben C++-ban!
A belinkelt kódba csak bele néztem, de ezt egyből kiszúrtam: "cout << fib(n) << endl;" Nagyon szépen meg van csinálva C++-ban a stream kezelés. De olyan félelmetesen lassú, hogy azt már büntetni kéne...
OFF
Ez elvileg szerintem úgy van, hogy ha Magyarországon egy tudományegyetemen Prog-Mat-on végeztél, akkor hivatalosan (gondolom) Programozó-Matematikus vagy, vagy Programtervezô Matematikus? Ha egy můszaki egyetemen Můszaki Informatika szakon, akkor hivatalosan Mérnök-Informatikus. (nekem ez van a diplomámban.)
Aztán, hogy a gyakorlatban végül fejlesztôi, rendszergazdai, vagy más munkakörben köt ki az ember, az szerintem egyénfüggô.
ON
Úgy látom ennek a topiknak már úgyis annyi... szóval kifene az imformatikus? Én ismerek sok programozót, szervezőt, rendszergazdát, operátort, adatbázis-adminisztrátort és hasonlókat, de ki az az informatikus?
Az informatikus egy létezo" szakma, diplomát adnak hozzá. Számomra elég visszatetszo", ha valaki anélkül nevezi magát informatikusnak (még akkor is ha csak úgy mondja, hogy "mondjuk rá"), hogy lenne informatikusdiplomája. Ezek után még mi jöhet? Elolvasok egy orvosi kézikönyvet, ennek alapján családtagjaimnak ajánlok ido"nként gyógyszereket, s ezek után ha megkérdezik, orvos vagyok-e, azt mondhatom: "mondjuk rá!"?
Nem értem mit problémázol! Te hajlandó lennél musaic vagy akárki szakértelmét minősíteni olyan területeken, ahol még nem alakult ki intézmény rendszer erre?
Amúgy ez a probléma nem ismeretlen a tudomány elött sem. Érdemes elolvasni James Gleick könyvét a káosz tudományának kialakulásáról.
Voltak olyan doktoranduszok, akik saját maguk aktívan részt vettek ennek az új tudománynak a megalapozásában, ezért aztán jó kis helybetopi volt a részük. Másokhoz képest késve tudtak ledoktorálni többek között mivel nem volt ki elött vizsgázni. És akkor még a szokásos rosszindulatról nem is beszéltünk.
"Nem hiszem, hogy valaha is komolyan programoztál."
Hinni a templomban kell.. Tőled (egy komoly tudóstól?) ilyen mondatokat nem tűrök el.. :)
"Azonkívül szerintem nem volt korrekt részedről, hogy az "informatikus vagy?" kérdésre azt válaszoltad: "mondjuk rá". Milyen diplomád is van?"
Hadd tegyem meg kedves Silan, hogy azt mondjam, amit jónak látok. Lécci, lécci, lécci!
Nálam a "mondjuk rá" azt jelenti, hogy "szűk értelemben véve", nem a köznapiban.
"Akinek nincs informatikusdiplomája, az ne nevezze magát informatikusnak. Pont."
Csak hogy tisztázzuk: Nem neveztem magam annak. Csak te hallgatólagosan annak vetted.
Egyébként, ha valaki a lent írott munkákat végzi, minek neveznéd? Számítástechnikai betanított munkás? Vagy mi? Akkor eléggé tróger vagyok, a mögöttem álló 20 évvel..
Nem igaz?
"De azt nem árt leszögezni, hogy szerintem teljesen más jellegů munka a grafikai designolás, meg mondjuk a legújabb QUAKE engine tervezése, optimalizálása."
Természetesen. Más jellegű, így van. Én csak annyit mondtam, hogy egyik munkakör sem előbbrevaló a másiknál.
"Tehát, ha csak annyit mondassz, hogy játékszoftver fejlesztô vagy a legtágabb értelemben, az kb. olyan, mintha azt mondanád, hogy hangszerekkel foglalkozol. Nem?"
Tényleg lehet, hogy annak tűnik.
Lehet hogy hihetetlen, de játékszoftverfejlesztésben nem pusztán egy kategóriába tartozom. És ezzel nem vagyok egyedül. Ül még itt néhány ilyen ember..
A cv-ben pl. ilyenek vannak..:
"1997 januárjától saját csapattal (Redward Studios), megkezdtük egy 3D-akció űrszimulátor
fejlesztését, Drift címmel. A projectben 3D modell tervezéssel (csapatunk saját tervezőrendszerével és engine-ével), hangeffektus készítéssel, speciális vizuális effektekkel és 3D vektoros animációkészítéssel foglalkoztam.
A fejlesztési idő alatt több, mint:
-1400db 3D objektumot
-1000db audio szinkronhangot és effektet, kb.
-130db specális (vizuális) effektet, ezek összesen kb.
-1500db különálló effektet tartalmaznak, és kb.
-20db bázist és scene-t
terveztem meg, és tartottam kézben. Mindezeken kívül az összes renderelt és realtime 3D mozi, VHS kiadvány, promóciós videó vágását, hangeffektezését és szinkronját készítettem el. Feladatom volt még a játék egységes grafikai megjelenésének biztosítása, a többi grafikus munkájának összehangolása, felülvizsgálata/szűrése által. A 3D objektumok: az űrhajók, az adatbankban látható fegyverek és tool-ok 150-600 polygonból állnak, az akkori időben kiadott programokhoz képest meglehetősen részletes kidolgozottsággal, olyan technológiákat tartalmazva, amelyek még ma sem túl gyakoriak. Ezen technológiák kifejlesztésében is részt vettem.
1999 Októberétől az Appaloosa Multimediánál dolgoztam, a már kiadott munkák közül részt vettem az Ecco the dolphin projectben (dreamcast és ps2). Feladataim közé tartozott a pályaépítés-bevilágítás, térkép, speciális effektek, realtime 3d mozik készítése, stb. Az általános projectfejlesztés mellett 2001-2002-ben két webes java játékban is dolgoztam grafika/hang/pályakészítés munkakörben: http://www.bonus.com (super dino, streetball)
2002 novemberében adták ki Amerikában saját magáncsapatunk játékát, Drift: when worlds collide címmel. Jelenleg otthoni szabadidőmben saját 3D-s játékkal, modellekkel, hangokkal, filmvágással, digitális fotózással, statikus weboldalak fejlesztésével foglalkozom, valamint részt vettem a fővárosban látható új Taxi állomások modellezésében, és a pályázati dokumentációjának elkészítésében."
Bocs ha hosszú lettem.. Ennyire offtopic témát ide..
Hehe, csak hogy teljes legyen a fogalmi zurzavar, en egy szoftverfejleszto cegnel vagyok architekt es designer, ugy, hogy semmi kozom a program kinezetehez/vizualis dizajnjahoz. :)
OFF
Nem érdemes általánosítani, de szerintem a GUI a leglényegtelenebb része leggtöbbször a rendszernek. (A munkahelyi projektünkben mondjuk pl. nincs is.) Egyébként a GUI-t legjobb minél jobban leválasztani a rendszerrôl, hogy aztán bármikor lecserélhetô legyen. (Vagy lehet párhuzamosan pl. web-es, GUI-s, API-s, parancssoros interface.)
ON
OFF
Nekem még sosem sikerült Java-ban jobb kódot írnom, mint C-ben... Ha ilyet csinálnál az csoda lenne! Vagy béna a C programozó. Ugyanis a JVM is eszik némi erőforrást. A nagyon profi programozók szerint 3-5 ször lassabb a Java (plussz amennyi a GC ideje) Nem tudom, hogy kik ezek a nagyon profi programozók. Ahogy HondaVuk leírta, a Java manapság jellemzôen max 50%-al lassab, mint a C++.
Persze minden az aktuális tesztprogramok jellegén múlik, de nem ritkák az olyan tesztek sem, ahol gyakorlatilag egyezik a tlejesítmény, sôt esetenként a JAVA gyorsabb.
Ez elvileg is elôfordulhat, mert a JIT inline-olni tudja a virtuális függvényeket, amit egy C++ fordító nem tud megtenni.
Szerintem jelenleg a legfontosabb része egy szoftver fejlesztésének a felület, a GUI megtervezése! Az egymással versengő programok tudásban szinte teljesen megegyeznek, csak külsőben, felhasználó-barátságban térnek el!
Ez most már tényleg az ucsó OFF volt. Megigérem. De még sosem sikerült egy igéretemet se betartanom!
Silan: Még nekem sincs diplomám, ennek ellenére cirka 5 éve ebből élek. És csak önkormányzatoknak, minisztériumoknak írogatok pici rendszereket (pl: pénzügyi rendszert)
Ha van olyan szakma, ahol nem számít a diploma, akkor az a programozás és tágabb értelemben az informatika is ilyen. Nem az a fontos, hogy diplomád legyen, hanem hogy programozni tudj!
Nexus: Igazából nagyon hülye vagyok mindenfajta grafikához. Inkább a programozás másik vége érdekel: a tervezés, az adatbázisok, az algoritmusok.
Nekem még sosem sikerült Java-ban jobb kódot írnom, mint C-ben... Ha ilyet csinálnál az csoda lenne! Vagy béna a C programozó. Ugyanis a JVM is eszik némi erőforrást. A nagyon profi programozók szerint 3-5 ször lassabb a Java (plussz amennyi a GC ideje)
Szerintem egyébként a leginkább hasznos programozási nyelv a Java jelenleg: egyszerű, könnyen programozható, de kellő ismeretekkel mindent meg lehet benne csinálni...
Nem hiszem, hogy valaha is komolyan programoztál. Azonkívül szerintem nem volt korrekt részedről, hogy az "informatikus vagy?" kérdésre azt válaszoltad: "mondjuk rá". Milyen diplomád is van?
Általános az a hozzáállás(főleg "adatbázis" programozóknál), miszerint a programozóknál alábbvaló minden más munkakör. Szerintem egyik munkakör sem alábbvaló a másiknál, fôleg, hogy mindet lehet nagyon profin, meg sz@rul is csinálni. Pl. ha a projektnek profi tesztstartégiája van, és a teszter profi, az sokat segít.
De azt nem árt leszögezni, hogy szerintem teljesen más jellegů munka a grafikai designolás, meg mondjuk a legújabb QUAKE engine tervezése, optimalizálása. Gondolom kb. olyan a viszony, mint a hangszerszekesztô, meg a zenész között.
Tehát, ha csak annyit mondassz, hogy játékszoftver fejlesztô vagy a legtágabb értelemben, az kb. olyan, mintha azt mondanád, hogy hangszerekkel foglalkozol. Nem?