( Zahy | 2016. 04. 11., h – 14:27 )

re 1)
- kivéve, amikor valaki inkompatibilis módon módosítja a runtime könyvtárat
- kivéve, amikor valaki olyasmit is felhasznál a runtime könyvtárból, amit nem kellett volna, csak szarul vagy sehogy se volt elrejtve
- kivéve amikor valaki feltételezi az eddigi működés alapján, hoghy a runtime könyvtár valamit ilyen/olyan módon old meg
- kivéve stb

Összefoglalva: ha a programozó *jól* programozik, akkor ilyenek nem történnek meg.

Látszólag sem offtopic, egy megtörtént eset száz évvel ezelőttről:

magyar számtech újságban elindul egy sorozat, a Modula-2 nevű csodanyelvet tanítja. (Gy.k. Wirth-nek a Pascal utáni nyelve, amiben aztán precizitás a végtelenségig, a Modula-2-höz képest a Pascal laza erkölcsű C-leszármazott.) Első részben a hozsanna meg a halleluja szól a nyelvről, meg arról, hogy a nyelv - és a fejlesztőkörnyezet - mennyire védi a programozót az ebben a szálban is emlegetett trehány, laza stílusból adódó hibáktól. Mellékinformációként elhangzik az, hogy aki a cikksorozat szerzője, az X cég PC-s Modula-2 fordítóját használja - nekem abban az időben Y cég Modula-2 fordítója volt elérhető. Szerencsére az a cikkben világosan és eléggé szájbarágósan szerepelt, hogy az ilyen fejlesztőkörnyezetbeli különbségek szerencsére nem okoznak problémát, mert nem lesznek olyan példák, amikben kihasználna bármi fordítóspecifikusat is.

Gondolom a bevezetőből ki lehet találni, de ha nem sikerült volna: Pontosan az első példaprogram begépelése és lefuttatása idejéig tartott a nagy lelkesedésem, mert a várt eredmény helyett a szoftver egészen mást produkált. Némi nyomozás után eléggé hamar kiderült, hogy egy egyszerű változóinicializálás maradt ki, és az ő rendszere 0-ra inicializálta azt, míg az enyém valami másra.

Szóval az nagyon szép, ha egy nyelv nyújt mindenféle védelmet, de attól még a fejlesztőnek értenie kell a rendszer, amit használ - amibe beleértendő a nyelv, és a használt eszközkészlet. És ugye nincs jobb, mint a a hiba, amikor feltételezel valamit, ami igazából csak az általad használt környezetre érvényes. Ezt pedig mindig és mindennel könnyű elfelejteni, hogy a másik esetleg nem pont ugyanolyan környezetben dolgozik, mint a fejlesztő.