2018. február 26., hétfő

PROGRAMOZÁS: AMIT NEM MUSZÁJ, DE HASZNOS

QUBIT
Szerző: KÁLMÁN LÁSZLÓ
2018.02.25.


Kérdezték tőlem, hogy voltaképpen mi is a célom ezzel az egésszel, mire jó a programozásról elemi szinten, vagy még annál is dedósabban sorozatot írni, mikor bármelyik programozási nyelvet számtalan helyen meg lehet tanulni, akár segítséggel, akár önállóan, sokkal gyorsabban, mint ha valaki az én lassú és egyáltalán nem célratörő csapongásaimat olvasgatja. Való igaz, hogy nem az a szándékom, hogy az olvasó gyors sikert érjen el úgy, hogy máris tud írni egy programocskát, ami valami mulatságosat csinál. Még egy konkrét programozási nyelvet se választottam, amibe szépen bevezetem az olvasót. Pláne nem törekszem arra, hogy áttekintést adjak sok különböző „paradigma” alapötleteiről vagy technikai megoldásairól. Ehelyett különböző részleteket ragadok ki különböző nyelvek különböző lehetőségeiből, mert valójában nem a számítógépről szeretnék mesélni, meg a programokról, amiket futtatni lehet rajta, hanem a programozó ember gondolkodásáról, amint a saját, nem informatikai gondolatait próbálja megfogalmazni olyan pontossággal, hogy abból akár automatikusan működő számítógépes rendszer is épülhessen.

Azok a csodálatos modulok

Eddig csupa olyanról beszéltem, amit nem lehet megkerülni, ami feltétlenül velejárója az ilyen gondolkozásnak: eljárások formájába kell öntenie algoritmusokat, és ábrázolást kell kitalálnia az adataihoz. Ma viszont olyasmiről lesz szó, amire elvileg nem lenne szükség, csak a gyakorlatban rettentő hasznos. Arról, hogy a programunkat hogyan lehet egészen kicsi, egymástól nagyjából független (és ezért külön-külön lecserélhető) modulokból összeállítani. Rengeteg olyan program van, ami nem így készül, és azok is tök jól működhetnek, csak sokkal nehezebb őket karbantartani, folytatni, a részeiket máshol felhasználni, másokkal megosztani vagy együttműködni a továbbfejlesztésükön, mint ha moduláris módon írták volna meg őket.

Vegyük megint a francia kártya 52 lapját. A múltkor is jeleztem, de talán nem elég hangsúlyosan, hogy számtalan módon lehet őket ábrázolni a memóriában. Akkor azt mutattam meg, hogy tekinthetjük a sorba rakott lapokat, a paklit egy 104 számból álló tömbnek, amiben minden páros 2 * i sorszámú elem az i sorszámú lap színét kódolja, a 2 * i + 1 sorszámú elem pedig ugyanennek a lapnak az értékét. Választhattam volna azt is, hogy a színeket meg a lapértékeket nem számok ábrázolják, hanem csak néhány bites sorozatok, hiszen messze nincs annyi szín meg érték, mint ahány szám. Lehetett volna azt is csinálni, hogy két 52 elemű tömböt használunk, az egyikben az i indexnél az i-edig lap színét, a másikban ugyanannál az indexnél ugyanannak a lapnak az értékét. És így tovább, mindenféle lehetőségek vannak. A lényeg az, hogy ha moduláris módon programozunk, akkor nem szabad számítania, hogy melyik megoldást választjuk, amikor valamit csinálni akarunk a kártyapaklival, akkor ezt egyáltalán nem kell tudnunk. Ha a programnak egy másik részét, mondjuk azt, amiben a játékosok döntéseit modellezzük, másvalaki írja, akkor neki ne is kelljen belenéznie abba a részbe, ahol a lapok és a pakli ábrázolását megoldottuk...

Nincsenek megjegyzések:

Megjegyzés küldése

Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.