( AszaltSzilva | 2018. 09. 18., k – 22:44 )

A kezdő programozási nyelvről már igen különböző teóriákat hallottam. Szerintem ez attól is függ, hogy kinek oktatjuk.

Nem tudtam elérni, hogy a mérnök informatikusaink a NAND2Tetris alapján tanuljanak meg programozni. A kolozsvári kollégák mindenkinek a torkán lenyomják az asm-t. Szerintem egy gazdaságinformatikust (főleg ha azért jött erre a szakra, mert a közgáz fizetős lenne) ezzel lehet világgá üldözni. Számára gyakran annyi elég, hogy a matematikai modellt meg tudja fogalmazni, és ki tudja próbálni adott paraméterek mentén.

Versenyfeladatok megoldása során a C++ verzióhoz képest harmada, negyede a Python-ban írt megoldás (ahol gyakran 5 hosszabb sor [max 80 karakter!] is elég a középiskolai verseny országos döntőjén!). A map/dict, vector/list mindkettőben rendesen fel van használva, azaz nem C++-ban írt C programokról van szó, ami gyakori a középiskolákban. A Python verzió megírása gyakran tizedannyi időbe telik a dict of sets vagy list of dicts, stb szerkezeteknek köszönhetően. Ha már olyan a verseny, hogy a futási idő is számít (lásd BME), a Python könnyen elvérezhet. De gyakran még akkor is megéri az Python-ban megírt és tesztelt algoritmust átírni C++-ba, mint C++-ban írosgatni és eldobni a prototípusokat.

Ha valaki még egyáltalán nem tud programozni, akkor neki meg kellene tanítani az alapokat: elágazások, különféle ciklusok, adattípusok, adatszerkezetek, input/output, stb.
C-ben ez jóval bonyolultabb, mint Python-ban. Nem kell megtanítani a referenciakönyvet az első oldaltól az utolsóig, arra akkor lesz szükség, ha valaki az adott nyelvből fog megélni.

Szívem szerint én az ABC-t tanítanám, tanterembe ideális lett volna, de én sem tettem rá a kezem 25 éve.

A programtervező informatikus képzés (pl. ELTE) esetén a középiskolában vagy az egyetemen a Prog0 keretében addig kell eljutni, hogy a Prog1 során rendszerezett információkat fel tudja fogni, tudja már az általa tanultakhoz kapcsolni, és pár hét alatt képes legyen bármilyen programozási nyelvet megtanulni, abban elkezdeni dolgozni. Nagyjából ez érvényes a mérnök informatikus (lásd BME) képzésnél is, bár itt az IoT esetén alapvetően a C++ és néhány speciális esetben a C-re lesz jellemzően szükség. (De miért kell kínozni a scanf-fel az embereket, amikor C++-ban az jóval kulturáltabban megoldható? Mert történetileg ez volt a sorrend? Főleg, hogy a beágyazott rendszereknél is a C++ egyre inkább lenyomja a C-t. De nekem akkor is az xs=[int(x) for x in input().split()] tetszik, ahol nem kell azzal foglalkozni, hogy hány adat várható a sorban.)

Fizikus, vegyész, társadalomtudós esetén az adatait kell feldolgoznia, minél egyszerűbb módon. Őket nem igazán fogja érdekelni, hogy a duplapontos valósai hogyan és hol tárolódnak. Nekik egy script-nyelv (vagy valami annak látszó, mint például a Matlab konkurrens Julia) tökéletes választás lehet.