Friday, December 16, 2011

Ma a harmadik fejezetnél jártam

Imádom, amikor észreveszem, hogy épp hol vagyok és körülnézhetek. 

Portia Nelson
Önéletrajz öt rövid fejezetben

I.
Sétálok az utcán.
          Egy mély lyuk van a járdán.
          Beleesem.
          Elvesztem... Nincs segítség.
          Nem az én hibám.
Egy örökkévalóság kell, hogy kitaláljak.

II.
Ugyanazon az utcán sétálok.
          Egy mély lyuk van a járdán.
          Úgy csinálok, mintha nem látnám.
          Újra beleesem.
Nem tudom elhinni, hogy ugyanott vagyok.
          De nem az én hibám.
Még nagyon hosszú idő telik el, míg ki tudok jönni.

III.
Ugyanazon az utcán sétálok.
          Egy mély lyuk van a járdán.
          Látom, hogy ott van.
          Mégis beleesem... ez puszta megszokás.
A szemem nyitva van.
Tudom, hol vagyok.
          Az én hibám.
Azonnal kijövök.

IV.
Ugyanazon az utcán sétálok végig.
          Egy mély lyuk van a járdán.
          Megkerülöm.

V.
Egy másik utcán sétálok végig.

Friday, December 9, 2011

A programozásról


Az én felfogásomban a számítógépek egyesekből és nullákból állnak, és bármi, ami a gépben történik, ezek összeadásából vagy szorzásából áll. Az összeadás és a szorzás pedig egzakt műveletek, jól meghatározott értékeik vannak. Ezért állok úgy hozzá a gépekhez, hogy ami a két számjeggyel leírható, az megvalósítható gépekkel is, és ez mindig determinisztikus lesz. Ez az absztrakció rémisztően hangozhat, és persze én se így használom a gépeket a mindennapokban, de amikor egy makacs programozási problémával találkozom, akkor így gondolok rá és eddig  (emlékeim szerint) mindent meg tudtam oldani. A megoldásban ez a szemlélet úgy segít, hogy rávilágít arra, hogy ha feltételezem, hogy az alapműveletek hibátlanok (ez az elv eddig csak egy Pentium esetén sérült [1]), és a hiba valahol az észlelési szint és a gépi műveletek közt van, ami a megfelelő eszközökkel felderíthető és kijavítható.
Ez még viszont nem magyarázza, hogy miért lehet ezt szeretni. Észrevettem, hogy a természetes nyelveket is szeretem használni és művelni (most ezek közt a magyar, az angol és a spanyol van), valószínűleg nem véletlen a kapcsolat a nyelvek szeretete és a programozás szeretete között. A programozási nyelveket nem hiába hívják nyelveknek, mert ezek valóban nyelvek, és vannak nyelvjárásaik is [2]. A programozási nyelv az, amivel beszélgetni lehet a géppel [3]. A nagy különbség az, hogy a számítógép determinisztikus, így szó szerint érti azt, amit mondok neki. Cserébe elvárható, hogy én is szó szerint értelmezzem, amit a gép mond, ezt fura megtanulni, de a használata már nagyon kényelmes, mert ez a fegyelmezett párbeszéd tiszta logikán alapul, ami bennem, emberben, egy tanulható dolog. És ezzel egy olyan "beszélgetőtársra" akadtam, aki sose érti félre, amit mondok neki, mindig engedelmeskedik (ha úgy fejezem ki magamat, amit megért) és nagyon különleges képességei vannak (egy szempillantás alatt készít nekem 10 milliárd pszeudo-véletlen1 számot, miközben zenét játszik le, filmet tölt le, irányít több tucat eszközt és fűti a szobámat). Ebben a szemléletben a programozási nyelv típusa lényegtelen, mindegyiken lehet beszélgetni, csak egyikben több, másikban kevesebb fogalmat tudok leírni a rendelkezésre álló nyelvi eszközökkel.


[1]: http://en.wikipedia.org/wiki/Pentium_FDIV_bug
[2]: például a Fortrannak már 11 változata van: http://en.wikipedia.org/wiki/Fortran
[3]: https://inf.nyme.hu/~soossandor/programozas.html

1: update, valóban nem tud valódi véletlen számokat készíteni a determinisztikus számítógép, csak véletlennek tűnőket. Valódi véletlen számokhoz külső forrást (emberi input, hálózati forgalom) kell használnia.