Alapvető szemlélet

Összefoglalás.
Mi is a programozás? Erről írtam a blogban részletesen. A lényeg abban áll, hogy a problémát először gondolatban elemezni kell úgy, hogy milyen bemenő adatok állnak rendelkezésre, azokon milyen műveletek kell végrehajtanunk hogy produkálni tudjuk a várt kimenetet. Röviden ez a lényeg.
  1. Fogalmazzuk meg szavakkal, hogy milyen adataink vannak és azok milyen jellegűek (input, output, munkaközi adat)
  2. Gondolkodjunk el a feladaton, figyelembe véve azt hogy milyen adatokat határoztunk meg az előzőekben.
  3. Fogalmazzuk meg szóban, hogy az első pontban meghatározott adatok felhasználásával milyen műveleti lépéseket kell végrehajtanunk egészen addig, míg elő nem áll a kimeneti adat.
Gyakorlatilag itt van vége a programozásnak. Ezután már "csak" az következik, hogy egy adott eszköz segítségével a számítógép számára is érthetővé tegyük. Ez az eszköz a fordítóprogram, ami egy adott programozási nyelven megírt programot a gép számára érthető tárgykóddá alakít, majd ezt egy linker nevű segédprogram futtatható állapotba alakítja.

A fenti három pont a lényeges. Ha azokat megoldod, akkor már a kódolás egy mechanikus átírás. Alapvetően az a probléma hogy egyből nekiugranak az emberek a kódolásnak. Egy idő után természetesen így fog történni, reflexszerűen menni fog a kódírás, de amíg azt érzed hogy ezt te nem érted, addig az első 3 lépéssel van a baj. A későbbiekben rájössz majd, hogy teljesen mindegy hogy BASIC, Pascal vagy C a programnyelv amit használsz. Az algoritmus megalkotása (azaz a lépések amiket végre kell hajtani) nem a programnyelven múlik. Nem a programnyelv az oka hogy mennyire nehéz vagy könnyű a segítségével összerakni egy adott programot.
Sokat hallani hogy "Pascalban simán megírom, de a C annyira bonyolult hogy nem lehet ezt megírni". Ez kb olyan állítás, mintha azt mondaná valaki, hogy magyarul sokkal könnyebb beszélni mint angolul. Persze a magyar anyanyelvűnek igen, de az angolnak nem. Aztán ha a magyar anyanyelvű kimegy külföldre és kénytelen angolul beszélni, néhány hét múlva nem lesz bonyolult angolul sem megfogalmazni dolgokat.
Ebből azt akarom kihozni, hogyha megvan a készség (fentebbi 3 pont), akkor jöhet a gyakorlás. Ugyanis az hogy mennyire bonyolult vagy egyszerű egy adott programnyelven megfogalmazni valamit, az csak azon múlik hogy mennyit gyakorlod. C vizsgára úgy kell elmenni hogy előtte 2 hétig legalább (de minél hosszabb ideig annál jobb) írogatod az egyszerű programokat.
Korábban bevált gyakorlat volt az egyetemeken/főiskolákon, hogy féléves feladatot kellet készíteni. Ez egy nagyon jó dolog volt, kár hogy manapság nem adnak féléves feladatokat (legalábbis a SZE-n). Ugyanis az ilyen nagyobb volumenű munka segített abban hogy belemerüljön a diák az adott nyelvbe és gyakorolja. Persze voltak olyanok is akik bérbe adták a feladatot és megíratták valamelyik hozzáértővel.

Egy régi FORTRAN könyvben találtam egy nagyon jó gondolatot az alapvető szemlélettel kapcsolatban:
"... kifejleszti a hallgatóban az 'algoritmus teremtés' készségét, amelyre egy holt képletnek élő programmá való 'átvarázsolásához' van szükség. Tulajdonképpen ez az amit programozásnak nevezünk." 
[Lőcs-Vigassy: FORTRAN programozási nyelv]