Melyik programozási nyelvet érdemes tanulni?
Valahol a 2 között van a helyes megoldás.
Ha erős a C++, akkor a Java is nagyon jó következő nyelv.
"Mikor érdemes Linked Listet és sima tömböt használni?"
A mai szegényes, keresleti IT munkapiacon vajon mi értelme egy ilyen interjú kérdésnek? Max. arra jó, hogy az interjúztató recskázhasson egyet a tudományos felvilágultságára, vagy elégedetten összekacsinthasson az interjú alannyal.
Manapság egyre kevésbé számít a tudományos fokozatod. Ami számít, hogy az adott rendszerbe, az adott team-be mennyire tudsz beilleszkedni, milyen gyorsan tanulod meg az ott bevett szokásokat és mennyi bitet tudsz lapátolni egységnyi idő alatt.
Ha dolgozol, ezt te is tudod.
Jó pár fejlesztővel találkoztam az elmúlt 5 évben, akik úgy használtak design pattern-eket, meg hasonló elméleti gyökerű megoldásokat, hogy fogalmuk sem volt róla mi az eredetileg, de az adott rendszernek (amiben dolgoztak) ezek voltak az "előírásai" és hatékonyan használták is őket.
#8
"Ez az alulról építkezés egy ugyanolyan valóságtól elvont elmélet"
Egyébként pont nem. Ez az alulról építkezés pont kifejezetten valóság közeli.
LEegyszerűsítve, ha így adták le neked (jól), akkor te nem agyatlanul bemagolod, hogy mikor milyen sort kell érni adott esetben, hogy történjen valami, hanem lesz elképzelésed, hogy a sorok mögött, amiket írsz mi van.
Nyilván, ha valaki örök junior akar lenni, akkor neki mindegy, de egy általános, sokkal mélyebb ismeret már szükséges lesz, amikor seniorokról vagy afölötti szintről beszélünk.
"mint amikor az Orosz azt mondta"
Orosznak igaza volt.
Az volt az üzenet mögötte, hogy a matek, az elméleti ismeret az, ami minden programozási nyelv mögött ugyanaz, míg a nyelvi szabályok változnak.
Az előbbit kell megtanulni, hogy jó programozó legyél, mert az utóbbi nem fog kihívást jelenteni.
"Na pontosan emiatt olyan mocskosul unalmas, szürke és elborult az egész felsőoktatásunk."
A felsőoktatással az a baj, hogy alulfinanszírozott, elsősorban. Ez sok mindenen javítana.
Egy másik hatalmas probléma, hogy azt is oktatásra kényszeríti, aki nem akar, mivel ha nem oktat, akkor nem kutathat.
"Ha szerzel némi élettapasztalatot és fel tudod adni ezeket a berögződéseket, gyorsan belátod, hogy ez általában pont fordítva működik."
Multinál dolgozom és eddig minden saját, illetve ismerőseim más cégnél szerzett tapasztata is azt támasztja alá, amit leírtam.
Ha túl akarsz lépni az alapokon, akkor kell egy általános szemléletmód, amit elsősorban, de nem kizárólag az egyetem ad.
"Pl. egy cégnél elkezdesz valamit Pythonban gányolni nulla C++ varázslói tudással"
Vagy van egy kis agyad és felfogod, hogy a programozási nyelvek múlandóak, így ha egyetlen egy nyelvből gyúrtad ki magad úgy, hogy sosem láttál más nyelvet, akkor baromi nehéz X év fejlesztői tapasztalattal megérteni, átszokni egy másik nyelvre.
Viszont ha a programozás tanuklás során számtalan nyelvvel ismerkedsz, adott esetben sokkal körülményesebb nyelvekkel, akkor nem lesz ilyen gondod.
Amit te leírtál, mint példád, arról üvölt az örök junior szemlélet mód. Ez a bootcamp-en is leadott PR duma, hogy mindenki milliárdos fejlesztő lesz, miközben nem.
#12
"Ha dolgozol, ezt te is tudod."
Igen, ha junior szint fölé nem lövünk, akkor tényleg erről van szó.
"az adott rendszernek (amiben dolgoztak) ezek voltak az "előírásai" és hatékonyan használták is őket"
Itt gyakorlatilag le is írod, hogy a kezükbe nyomták, hogy ezt kell használni és maguktól erre nem jöttek volna rá.
Igen, ezért maradnak juniorok.
Megcáfolom az utópiád egy másik, még nagyobbra tartott tudománnyal: a matematikával.
Vegyük az analízist. Éveken keresztül traktálják az embert a deriválással, integrálással, differenciál számítással. A világ legszárazabb, legunalmasabb alapozása. Az emberek 99%-a soha semmire nem fogja használni, mégis a mérnöki oktatás alapját képzi. Ez érthető is, ha megnézzük, az informatika oktatás milyen tudományok oktatásából származtatódik. Oké.
De azt a kérdést feltette valaha is valaki, hogy mi a tosz ez az egész és minek találták ki?
Unatkozó matematikusok, akik fel akartak találni valami újat?
Nem, igazából fizikusok találták fel, fizikai problémák megoldására, módszerek egyszerűsítésére, ami persze aztán általánosan is kiterjeszthetővé vált.
Miért lényeges ez? Mert a fentről lefele építkezésnél jelen volt a közvetlen motiváció a probléma megoldására.
A lentről felfele építkezésnél nincs semmilyen motiváció. Nem látod a célt, nincs közvetlen probléma, csak az általános hasznosság ígérete és reménye.
"mire perspektíva manapság a C++, azon kívül, hogy egy bizonyos egyetemen ez a berögződés"
Például a magasabb szintű nyelvek könyvtárait érdemes ebben írni. Nem mondom, hogy egy átlag fejlesztőnek ez kell, de elég sokan használják.
#14
Elég vicces, hogy egyszerre érvelsz valami mellett és közben mondasz magadnak ellent.
"módszerek egyszerűsítésére, ami persze aztán általánosan is kiterjeszthetővé vált."
Vagyis itt leírtad, hogy miért jó alulról építkezni. Ha felülről indulsz, akkor egy specifikus problémát tudsz bemutatni, amivel az emberek többsége nem fog foglalkozni.
Viszotn alulról egy általános, jól kiterjeszthető ismeretanyagot adsz át.
(Egyébként a matematikai is lentről felfelé építkezett, a deriválás nem jött előbb létre, mitn a szorzás.)
"Mert a fentről lefele építkezésnél jelen volt a közvetlen motiváció a probléma megoldására."
Csak neked nem egy problémát már kell újra, nulláról megoldani.
Vegyük a korábbi design pattern-ös példád. Ha azoknak az embereknek nulláról kellett volna kitalálnia, akik használják, mivel "előírás", akkor egyrészt sokkal tovább tartott volna megoldani a problémát, másrészt simán tele lehetett volna hibákkal.
Neked az egyetemen nem a spanyolviaszt kell feltalálnod, hanem megértened, megtanulnod, hogy a különböző spanyol viaszokat, amiket feltaláltak, azokból mit vihetsz tovább.
"A lentről felfele építkezésnél nincs semmilyen motiváció."
Még ha el is fogadom, hgoy fentről lefelé építkeztek korábban, ami nem igaz.
Abban sincs motiváció, ha fentről lefelé építkezel, ha valami olyan tudást kell átadni, ami már létezik.
Arról nem beszélve, hogy ezzel azt érnéd el, hogy rossz szabályok rögzülnének, mivel arra emlékezne, amit ő csinált, ami tele lehet hibával is, illetve sokkal több időt pazarolsz vele egy olyan ismeret átadására, amit még távolról sem fog hasznosítani SOHA.
Mivel ahogy írtad, ha fentről építkezel, akkor 1-1 specifikus dologgal tudsz foglalkozni, aminek semmi értelme, amikor a képzés lényege, hogy sok mindent bemutass, hogy átlássák az IT szektort is.
"Nem látod a célt, nincs közvetlen probléma, csak az általános hasznosság ígérete és reménye."
Ami jó, mivel a konkrét probléma átadása elvonja a hallgató figyelmét arról, hogy általános miért jó az.
A képzésednek az lenne a vége, hogy ha szembejön az az adott probléma, amit leadtál, akkor meg tudják oldani, viszont ha ugyanazzal a technikával megoldható más feladat jön szembe, akkor nem tudják.
Ha feltételezed, hogy mégis meg tudják, mivel olyan szintű absztrakciós képességeik vannak, akkor a lentről felfelé történő építkezést is átlátnák, mivel ugyanaz a képesség kell mindkettőhöz, csak a tied 5-ször annyi ideig tart és adott esetben rosszul tanulnak meg valamit.
"Például a magasabb szintű nyelvek könyvtárait érdemes ebben írni. Nem mondom, hogy egy átlag fejlesztőnek ez kell, de elég sokan használják."
Ehhez nem értek, de nem nagyon hallottam még olyat, hogy cpp-ben valaki lib-et írt a javához és azt mondjuk az Oracle beforgatta, de ezt csak így laikusan írom. A JVM fejlesztői tuti sok cpp-t használnak, de az nem valami széles fejlesztői kör. Vagy az? Nemtom.
16-os:
Az nem megy át neked, hogy az emberi természet, az emberi motiváció, az agy így működik, ahogy írom és kb. az összes felfedezés, feltalálás, mittomén, az fentről lefele indult és haladt.
Én nem a dolgok újrafeltalálásáról magyarázok, hanem a megismerés természetes irányáról. Pl. meg kellett tanulnom anno kb. 50 algoritmust pontosan, hatékonysággal, lépés számmal, blabla... együtt, ötöst kaptam belőle, többször is, de fél év után a garbage collector kb. teljesen kitakarította az agyamból. Persze valami halvány foszlányok megmaradtak elszórtan.
Később a munkám során szembejött, hogy db. query plan-eket kellett elemeznem és ránézésre fogalmam sem volt, hogy melyik "végrehajtási mód" mekkora költségű lesz és egyáltalán hogyan működik, pedig beágyazott ciklust is, b fát is, láncolt listát is láttam jó párat. Itt viszont már volt egy cél, amiért utána kellett járnom a kérdésnek és sokkal érdekfeszítőbb volt, mert rájöttem, mi az értelme az egésznek.
Nyilván nem találtam fel újra az algoritmusokat, hanem rákerestem google-ban a leírásokra és elolvastam őket. Valamennyit persze segített az általános tudásom a témában, de ehhez a felfedező művelethez éppen elég lett volna anno egy fél órás átbeszélése a témának, ahelyett, hogy sz*rá magoljam, aztán meg vizsgán szívassanak vele.
#17
Jó sok hülyeséget írsz. Szerintem nem neked kéne meghatároznod, hogy a Cpp-t hányan használják és mire.
A Cpp a tiobe index szerint a negyedik nyelv, ergo, olyan rohadtul perifériális, mint amit se sugalmazol, nem lehet.
Az egy dolog, hogy a te agyadból mit takarított ki a GC, de ehhez annyit fűznék hozzá, hogy én kb. másfél-két évente újra tanulom a Luát, mert jelzett időközönként egyszer megkeresnek, hogy abban piszmogjak el 1-2 napot, jó pénzért. Ha nem lenne alap, amire építkezzek, akkor baxhatnám.
Aki magol, azt nem szivatják vizsgán, mert nincs is rá szükség. Az ugyanis saját magát szivatja, de jó erősen.
"A Cpp a tiobe index szerint a negyedik nyelv, ergo, olyan rohadtul perifériális, mint amit se sugalmazol, nem lehet."
Vezesd le akkor nekem, hogy a jelenlegi pénzes IT piacon milyen távlatai vannak! szerver appokat írnak benne, vagy mi?
Nagyon jó nyelv, nagyon sokat lehet belőle tanulni, de programozzon benne az, akinek két anyja van!
IT sec szempontból is csak imádkozni lehet, hogy minél hamarabb a süllyesztőbe kerüljön a C-vel és az összes kódbázisukkal együtt.
#19
Nagyon sok terület van, ahova a cpp az ideális választás. A linux részaránya nagyon erős a szerver szegmensben, ott nyilván elsőbbséget élvez a cpp. A cloud computing, a párhuzamos adatfeldolgozás, a beágyazott rendszerek, a klf driverek, eszközmeghajtó programok, a szerver modulok, desktop vonalon meg ott a CAD, a statisztika, a valós idejű alkalmazások, a VR és a GAME szegmentum is kimarkol egy szép vastag szeletet magának. De adat kompresszorokat, dekompresszorokat, média lejátszókat sem fognak soha pythonban írni.
A tiobére hivatkozom ismét, az első nyelv és a negyedik (ez a cpp) között a százalékos különbség a következő: 12.20 - 9.63 %
Csak a viszonyítás kedvéért: a c# 6.1, a JavaScript 2.1, a php penetrációja pedig mindössze 1.25 százalék!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!