A minap néztem az M3-at és éppen a számítógépről illetve annak programozásáról beszélgettek. Egy 1983-as ismeretterjesztő sorozat egyik epizódjába botlottam, a címe: Mi és a computer.
Tovább nézve az epizódot mindjárt tudtam hogy valahogy meg kell néznem minden epizódját, hiszen amiről bezséltek, amilyen gépeket és programokat használtak azok pontosan azok voltak amiket én magam is használtam akkor amikor összetalálkoztam az informatikával. A riportokban az akkori kissrácok ugyan azokról a dolgokról érzésekről bezsélnek amit én éreztem és átéltem.
Szerencsére a youtube-on elérhető a sorozat minden része.
A programozni tanulóknak is ajánlom, mert vannak benne feladványok, magyarázatok a programozással kapcsolatosan, gyakran nem is olyan egyszerűek ezek. Meg lehet próbálni megoldani ezeket a feladatokat.
Az egyik ilyen feladat pl az volt hogy egy maximum 10 soros verset elemezzünk és adjuk meg a rímképletét. Izgalmas és nem feltétlenül egyszerű feladat, Oldjuk meg! :)
"Ennek az oktatási módszernek előnye, hogy a numerikus ismereteken túlmenően 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]
2014. augusztus 23., szombat
2014. július 21., hétfő
Programozás oktatás (www.learneroo.com)
A napokban találtam egy weboldalt ahol különféle programozással kapcsolatos oktatóanyagok vannak. Az oldal néhány programozási nyelv mellett főként az alábbi témákat oktatja:
Programozási nyelvek közül az aktuális trendnek megfelelően a Java, JavaScript, Python és Ruby nyelveket oktatja rengeteg rövid, gyakorlati feladatok használatával.
Ami leginkább megtetszett az az, hogy a példák megoldását nem a saját fejlesztői környezetünkkel kell megoldani, hanem az oldalba beépített emulátor segítségével. Kapunk egy "teljes" fejlesztői környezetet, editorral, debugerrel együtt, és ott kell megírni a kért feladatokat, amit a mellékelt tesztadatokon le is futtat.
Nekem nagyon tetszik ez a megoldás.
Az említett programozási nyelvek alapjai mellett algoritmusokat, matematikai problémákat illetve különféle praktikus programozási fogásokat is oktató modulokat is találunk a weboldalon. Ezek alap esetben Java nyelven oldhatók meg, de lehet választani más (PHP, C++, Python stb) nyelvek közül is.
Az oldal nyelve angol. Azt gondolom hogy aki programozásra adja a fejét és komolyan is gondolja azt, annak elkerülhetetlen az angol nyelv értő olvasása. Az oldal nyelvezete egyszerű, minimális nyelvtudással könnyen érthető. Ennyire tudni kell minden programozónak angolul.
Ajánlom az oldalt a kezdőknek és haladóknak egyaránt. A kezdők megtanulhatják az alapokat és még egy picit többet is, a haladók pedig tesztelhetik, frissen tarthatják tudásukat.
Még egy megjegyzés! Az oldal üzemeltetője a kickstarter.com-on indított egy gyűjtést az oldal fejlesztésére. Bárki felajánlhat bármekkora összeget. 4000 dollárt célzott meg ami szükséges lenne az oldal fejlesztésére, jelenleg 406$ van felajánlva. Aki teheti támogassa az oldal fejlesztését.
2014. január 18., szombat
Helló világ!
Van egy program, amit minden C nyelvet tanulni kezdő ember megír. Ez a Hello world!
A program elhíresült és alap példává vált. Szerintem ez az a program amit a legtöbben megírnak.
Brian Kernighan és Dennis Ritchie által írt The C Programming Language című könyv a C nyelv bibliájaként ismert. Ezt maguk a nyelv kitalálói írták és a mai napig a leghíresebb C könyv, ami minden programozónak a polcán ott kell hogy legyen, már csak tiszteletből is. Ez olyan mint a gitározásban a Hey Joe Jimmy Hendrixtől. Mindenkinek, aki komolyan gondolja... :)
Szóval nézzük a példát:
#include
void main() {
printf("hello world\n");
}
A programot beírjuk egy hello.c fájlba, majd lefordítjuk és futtatjuk akkor a program kiírja a képernyőre hello world üzenetet.
Tesztnek nem rossz... :)
A program elhíresült és alap példává vált. Szerintem ez az a program amit a legtöbben megírnak.
Brian Kernighan és Dennis Ritchie által írt The C Programming Language című könyv a C nyelv bibliájaként ismert. Ezt maguk a nyelv kitalálói írták és a mai napig a leghíresebb C könyv, ami minden programozónak a polcán ott kell hogy legyen, már csak tiszteletből is. Ez olyan mint a gitározásban a Hey Joe Jimmy Hendrixtől. Mindenkinek, aki komolyan gondolja... :)
Szóval nézzük a példát:
#include
void main() {
printf("hello world\n");
}
A programot beírjuk egy hello.c fájlba, majd lefordítjuk és futtatjuk akkor a program kiírja a képernyőre hello world üzenetet.
Tesztnek nem rossz... :)
A C nyelvről
Én a programozást BASIC nyelvvel kezdtem. Ez egy nagyon egyszerű, magas szintű programozási nyelv volt, amivel kényelmesen lehetett megfogalmazni a programokat. A következő az assembly nyelv volt, még Z80 mikroprocesszoros gépeken.
A két nyelv között a különbség abban rejlett, hogy a BASIC nagyon egyszerű és könnyen elsajátítható volt. Rendelkezésre álltak a különféle ciklusműveletek, feltételes vezérlésátadás, szubrutinok írása és hívása. Viszont a nyelv nagyon lassú volt mivel interpretált futtatást (azaz minden programsorra külön értelmezés, fordítás, futtatás) tett lehetővé. Az assembly nyelv nagyon gyors gépi kódú programokat készítését tette lehetővé, ezzel szemben a ciklusszervezést, az utasítások sorozatát mind alacsony szinten kellett megvalósítani, ami sokkal nagyobb hibázási lehetőséget teremtett.
Később a Pascal nyelven folytattam programozói tevékenységemet, amire komoly típusosság volt jellemző és erős szigorral ellenőrzött minden egyes programsoromat.
Van egy számomra misztikus nyelv, a C nyelv, ami gyors is és magas szintűnek is nevezhető, ugyanakkor nagyon "hanyag" lazaság is jellemzi a típusszigorát.. A típusossága nagyban hasonlít az assemblyhez, a mutatók használata - ami a komolyabb programozás alapja - kényelmes. Fordítója kifejlett és gyakorlatilag assembly programot állít elő (a mai fordítók persze ezt a lépést kihagyják, de kikényszeríthető ez a kimenet is). A lényeg hogy ez a fura nyelv, a maga fura gondolkodásával igazi forradalom volt a maga idejében a '70-es évek elején. Akkoriban egy operációs rendszert készítettek a segítségével, mégpedig a Unixot, ami napjainkban is hihetetlen népszerű, hatékony és biztonságos operációs rendszer. Erre azért felkapja egy programozó a fejét. Operációs rendszert írni magas szintű nyelven? Hmmm.
Ez aztán a csemege. Így találkoztam a C nyelvvel. Akkoriban én a Pascal mellett döntöttem, mint általános célú programozási nyelv mellett. A C-be csak az egyetemi tanulmányok kapcsán merültem bele.
Szóval most elkezdenék egy újabb témát itt a Programozz! blogon. Ez pedig a C nyelv használata lesz.
Nem akarom bemutatni a különféle agyafúrt C-s pointerezést, meg az előfordító adta csodás lehetőségeket (írtak C-ben PC emulátort is, aminek forráskód hossza belefért 2000 karakterbe). Egyszerűen alapszintű megoldásokat, alap programozási feladatokat szeretnék bemutatni a segítségével.
A cikkeket a C címkével jelölöm.
A két nyelv között a különbség abban rejlett, hogy a BASIC nagyon egyszerű és könnyen elsajátítható volt. Rendelkezésre álltak a különféle ciklusműveletek, feltételes vezérlésátadás, szubrutinok írása és hívása. Viszont a nyelv nagyon lassú volt mivel interpretált futtatást (azaz minden programsorra külön értelmezés, fordítás, futtatás) tett lehetővé. Az assembly nyelv nagyon gyors gépi kódú programokat készítését tette lehetővé, ezzel szemben a ciklusszervezést, az utasítások sorozatát mind alacsony szinten kellett megvalósítani, ami sokkal nagyobb hibázási lehetőséget teremtett.
Később a Pascal nyelven folytattam programozói tevékenységemet, amire komoly típusosság volt jellemző és erős szigorral ellenőrzött minden egyes programsoromat.
Van egy számomra misztikus nyelv, a C nyelv, ami gyors is és magas szintűnek is nevezhető, ugyanakkor nagyon "hanyag" lazaság is jellemzi a típusszigorát.. A típusossága nagyban hasonlít az assemblyhez, a mutatók használata - ami a komolyabb programozás alapja - kényelmes. Fordítója kifejlett és gyakorlatilag assembly programot állít elő (a mai fordítók persze ezt a lépést kihagyják, de kikényszeríthető ez a kimenet is). A lényeg hogy ez a fura nyelv, a maga fura gondolkodásával igazi forradalom volt a maga idejében a '70-es évek elején. Akkoriban egy operációs rendszert készítettek a segítségével, mégpedig a Unixot, ami napjainkban is hihetetlen népszerű, hatékony és biztonságos operációs rendszer. Erre azért felkapja egy programozó a fejét. Operációs rendszert írni magas szintű nyelven? Hmmm.
Ez aztán a csemege. Így találkoztam a C nyelvvel. Akkoriban én a Pascal mellett döntöttem, mint általános célú programozási nyelv mellett. A C-be csak az egyetemi tanulmányok kapcsán merültem bele.
Szóval most elkezdenék egy újabb témát itt a Programozz! blogon. Ez pedig a C nyelv használata lesz.
Nem akarom bemutatni a különféle agyafúrt C-s pointerezést, meg az előfordító adta csodás lehetőségeket (írtak C-ben PC emulátort is, aminek forráskód hossza belefért 2000 karakterbe). Egyszerűen alapszintű megoldásokat, alap programozási feladatokat szeretnék bemutatni a segítségével.
A cikkeket a C címkével jelölöm.
2013. február 15., péntek
Tojásrántotta algoritmusa
Az alapvető gondolkodásmód elsajátításához egy hétköznapi példa következik!
Mint korábban már többször írtam, jót tesz a megfelelő gondolkodásmód kialakításához az, ha hétköznapi tevékenységeket is "algoritmizálunk". Ennek érdekében, most tojásrántottát fogunk készíteni!
Tojásrántotta készítése
Kérdezzük meg hány tojásból készítsük a rántottát! Nézzük meg van-e annyi tojásunk, ha van akkor készítsük el, ha nincs akkor pedig jelezzük hogy nincs ennyi tojásunk.
Csodálatos algoritmus! Egy nagy szelekció fogja keretbe az algoritmust (van-e elegendő tojás?) Majd a szekvenciák sorozata következik, közben két iterációval, ráadásul hátultesztelőkkel (olajmelegítés, sütés)
Erről jut eszembe egy vicc!
A programozót elküldi a barátnője boltba a következő utasítással:
- "Drágám! Menj el a boltba! Hozzál halat, ha van tojás akkor tízet!"
A programozó elmegy a boltba, majd miután bevásárolt hazajön és odaadja kedvesének a táskát, benne a bevásárolt dolgokkal. A barátnője megnézi, majd megkérdezi:
- "Miért hoztál tíz halat? És hol a tojás? Vagy az nem volt?"
- "De volt!" - mondja a programozó!
:)
Szóval a programozó mindig úgy végzi el a feladatot, ahogy az meg van fogalmazva. Abból baj nem lehet..... Legfeljebb át kell fogalmazni a feladatot, ha nem a megfelelő eredmény születik!
Gondolkozz el ezen! Hogyan kellett volna mondani a barátnőnek, hogy megértse szerencsétlen programozó, hogy mit is akar tőle a kedvese?
Mint korábban már többször írtam, jót tesz a megfelelő gondolkodásmód kialakításához az, ha hétköznapi tevékenységeket is "algoritmizálunk". Ennek érdekében, most tojásrántottát fogunk készíteni!
Tojásrántotta készítése
Kérdezzük meg hány tojásból készítsük a rántottát! Nézzük meg van-e annyi tojásunk, ha van akkor készítsük el, ha nincs akkor pedig jelezzük hogy nincs ennyi tojásunk.
Be: Hány tojásból készüljön?
HA van elegendő tojás AKKOR
Törjük fel a tojásokat és tegyük tálba
Verjük fel a tojásokat
CSINÁLD
Melegítsünk olajat
AMÍG olaj eléggé forró
Öntsd a tojást a forró olajba
CSINÁLD
Lassan kevergesd a tűzön
AMÍG megfelelően megsül
Tedd tányérba
KI: A rántotta kész! Jó étvágyat
KÜLÖNBEN
KI: Nincs ennyi tojás így sajnos nem tudom elkészíteni!
Csodálatos algoritmus! Egy nagy szelekció fogja keretbe az algoritmust (van-e elegendő tojás?) Majd a szekvenciák sorozata következik, közben két iterációval, ráadásul hátultesztelőkkel (olajmelegítés, sütés)
Erről jut eszembe egy vicc!
A programozót elküldi a barátnője boltba a következő utasítással:
- "Drágám! Menj el a boltba! Hozzál halat, ha van tojás akkor tízet!"
A programozó elmegy a boltba, majd miután bevásárolt hazajön és odaadja kedvesének a táskát, benne a bevásárolt dolgokkal. A barátnője megnézi, majd megkérdezi:
- "Miért hoztál tíz halat? És hol a tojás? Vagy az nem volt?"
- "De volt!" - mondja a programozó!
:)
Szóval a programozó mindig úgy végzi el a feladatot, ahogy az meg van fogalmazva. Abból baj nem lehet..... Legfeljebb át kell fogalmazni a feladatot, ha nem a megfelelő eredmény születik!
Gondolkozz el ezen! Hogyan kellett volna mondani a barátnőnek, hogy megértse szerencsétlen programozó, hogy mit is akar tőle a kedvese?
2013. február 12., kedd
Legnagyobb szám kiválasztása
A következő bejegyzésben egy egyszerű algoritmust készítek el. A cél, hogy megmutassak egyfajta gondolkodásmenetet.
Elvárt ismeretek: adatbekérés, kiírás, összehasonlítás, elágazás, iteráció
Feladat: A bekért pozitív számok közül írassuk ki a legnagyobbat!
Az adatbekérést nem ellenőrizzük, feltételezzük hogy egész számokat kapunk. Feltételezzük hogy nem kell megjegyezni az összes bekért adatot.
Olvassuk el és értelmezzük a feladatot.
Először célszerű valamilyen szabványos általános jelölésrendszert alkalmazva a programot leírni. Később már erre nem lesz szükség egyszerűbb feladatnál, de most tegyük meg.
Picit pontosítani kell a feladatot. Honnan tudjuk, hogy van-e még további kiértékelendő szám? A feladat kiírásában az szerepel, hogy pozitív számokkal kell dolgozni. Ezért most hozunk egy olyan döntést, hogy ha 0-át kapunk kiértékelésre, az azt jelenti hogy nincs több kiértékelendő adat.
(Itt jegyzem meg, hogy az ilyen döntéseket mindig egyeztetni kell a megrendelővel és azt el kell fogadtatni vele, hiszen ő tudja hogy pontosan mit is szeretne megvalósítani!)
Ezzel a döntéssel már elkészíthető az alkalmazás.
Az adatmodell és a pszeudó nyelvű megoldás:
Ennyi volt a legnagyobb számot kiírató programocska.
A feladat elején megfogalmazott ismeretek birtokában elkészíthetők az alábbi módosított feladatok is! A feladatok egyre összetettebbek, de mind megoldható szelekcióval és iterációval.
Próbálj ezek közül minél többet elkészíteni pszeudó nyelven és az éppen tanult programnyelven is (C/Pascal)
Ha elküldöd emailen a megoldást, szívesen véleményezem!
Írd át a programot, hogy kiírja a legnagyobb és a legkisebb számot is!
Írd át a programot, hogy kiírja azt is hogy hány szám lett összesen megadva!
Írd át úgy a programot, hogy pozitív számok mellett a 0 is szerepelhessen input adatként!
Írd át úgy a programot, hogy összesen 10 adatot kell bekérni és azok közül kiválasztani a legnagyobbat stb...
Írd át úgy a programot, hogy először megkérdezi, hogy hány adatot szeretnék megadni és fogadjon el negatív számokat is.
Elvárt ismeretek: adatbekérés, kiírás, összehasonlítás, elágazás, iteráció
Feladat: A bekért pozitív számok közül írassuk ki a legnagyobbat!
Az adatbekérést nem ellenőrizzük, feltételezzük hogy egész számokat kapunk. Feltételezzük hogy nem kell megjegyezni az összes bekért adatot.
Olvassuk el és értelmezzük a feladatot.
Mit csinálunk? Bekérünk számokat.
Mi lesz ezekkel a számokkal? Kiíratjuk a legnagyobbat.
Ez eddig elég egyszerűnek hangzik, de gondoljunk bele egy picit mélyebben.
Hogyan határozzuk meg a legnagyobbat? Nyilván összehasonlítással.
Sorra kell vennünk az adatokat és a nagyobbat megjegyezve ismételni az összehasonlítást addig, míg az összes adatot égig nem vettük.
Éppen ezt a tevékenységet kellene programozni!
- az aktuális legnagyobb számnak jegyezzük meg a 0 értéket. Ennél csak nagyobbakkal kell foglalkozni.
- Kérjük be a soron következő számot.
- hasonlítsuk össze az aktuális legnagyobb számmal
- ha nagyobb mint az aktuális legnagyobb, akkor felejtsük el az eddigi legnagyobbat és helyette jegyezzük meg az éppen soron lévőt legnagyobbként.
- ha van még további bekért szám akkor vegyük a következőt és folytassuk a 2. pontnál
- írassuk ki a megjegyzett legnagyobb számot.
Először célszerű valamilyen szabványos általános jelölésrendszert alkalmazva a programot leírni. Később már erre nem lesz szükség egyszerűbb feladatnál, de most tegyük meg.
Picit pontosítani kell a feladatot. Honnan tudjuk, hogy van-e még további kiértékelendő szám? A feladat kiírásában az szerepel, hogy pozitív számokkal kell dolgozni. Ezért most hozunk egy olyan döntést, hogy ha 0-át kapunk kiértékelésre, az azt jelenti hogy nincs több kiértékelendő adat.
(Itt jegyzem meg, hogy az ilyen döntéseket mindig egyeztetni kell a megrendelővel és azt el kell fogadtatni vele, hiszen ő tudja hogy pontosan mit is szeretne megvalósítani!)
Ezzel a döntéssel már elkészíthető az alkalmazás.
Az adatmodell és a pszeudó nyelvű megoldás:
A REPEAT...UNTIL iteráció úgynevezett hátul tesztelő ciklus. Ez azt jelenti, hogy a ciklusmag lefutása után értékelődik ki a ciklus feltétele. Tehát a ciklusmag legalább egyszer lefut. Az UNTIL után megadott feltétel a kilépés feltétele.
Ennyi volt a legnagyobb számot kiírató programocska.
A feladat elején megfogalmazott ismeretek birtokában elkészíthetők az alábbi módosított feladatok is! A feladatok egyre összetettebbek, de mind megoldható szelekcióval és iterációval.
Próbálj ezek közül minél többet elkészíteni pszeudó nyelven és az éppen tanult programnyelven is (C/Pascal)
Ha elküldöd emailen a megoldást, szívesen véleményezem!
Írd át a programot, hogy kiírja a legnagyobb és a legkisebb számot is!
Írd át a programot, hogy kiírja azt is hogy hány szám lett összesen megadva!
Írd át úgy a programot, hogy pozitív számok mellett a 0 is szerepelhessen input adatként!
Írd át úgy a programot, hogy összesen 10 adatot kell bekérni és azok közül kiválasztani a legnagyobbat stb...
Írd át úgy a programot, hogy először megkérdezi, hogy hány adatot szeretnék megadni és fogadjon el negatív számokat is.
Programnyelvek, programozás őstörténete
Minap egy antikváriumba, megláttam egy FORTRAN programozással kapcsolatos könyvet, mely kiadásának dátuma 1970 volt. Eltöprengtem azon, hogy a könyv egy évvel idősebb nálam. Azt tudom, hogy a számítógép programozás nem éppen újkeletű dolog, de azt hogy magyar nyelvű szakirodalom már ilyen korán megjelent, nem gondoltam. (messze a PC-s korszak még, szűk réteg aki számítógéphez fér)
A könyv akkor 12 Ft volt most 275 Ft-ot kért érte az antikvárium. Gyorsan körülnéztem még és végül megvásároltam néhány régi, programozási nyelvekről szóló szakkönyvet.
Mindig is érdekeltek a különféle programozási nyelvek. Nem maga a hatékonyság, vagy a használhatóság az ami felkeltette az érdeklődésemet, hanem magának a nyelvnek a logikája, működése, szintaktikája. A régi nyelvek meg azért érdekesek, mert látni lehet a fejlődést, ahogy egyik a másikból építkezve egy újat - talán jobbat - hoz létre. Nem ismerem a régi nyelveket. BASIC majd PASCAL voltak a tanulónyelveim. Mellette kis gépikód és Assembly is adódott. Utána megismerkedtem a dBase/Clipper nyelvekkel, amik az adatbáziskezelési feladatokhoz voltak nagyszerű eszközök, majd jött a C és végül az obejktumorientált progrmaozás a JAVA, a C++ és a C# nyelveken keresztül.
Most elhatároztam hogy meg fogok ismerkedni néhány régi programozási nyelvvel. Nem feltétlenül azért, hogy használjam, hanem hogy megismerjem a programozás történelmét.
Szeretem a régi szakkönyvek előszavait, bevezető fejezeteit olvasni, mert sok érdekesség van benne. A FORTRAN könyvben is találtam egy érdekes gondolatot a programozással kapcsolatban:
Később ezt írja:
A gondolat nagyon sokatmondó! A Programozz! blog bevezetőjében említettem hogy ki kell alakulnia az algoritmikus gondolkodásnak ahhoz, hogy valaki tudjon programozni. Írtam ugyan itt, hogy sokan azt mondják: "Pascalban ezt simán megírom, de C-ben nem megy!"
Nos aki ezt mondja azzal az a helyzet, hogy sajnos nem tud programozni. Tud "pascalul", de nem tud programozni. Ismeri a nyelvet és az használja is, de nem tud algoritmust alkotni. Ez nagy baj! Egy programozónak a nyelv "csak" egy eszköz. A holt képletek élő programmá történő átvarázsolásához ennél több kell és ezt hívják programozásnak.
Még egy érdekes dolog, amit a könyv elszavát olvasgatva érzek. A programozás mérnöki feladat, a kódolás szakmunka. Például annak idején a programozói tevékenység nem terminál előtt zajlott, hanem programkártyákon kézzel, ceruzával írta meg a programozó a programot, majd ezt átadták a kódolónak, aki a megfelelő módon bevitte a gépbe és elkészítette a lyukkártyát, amin a betölthető programok voltak.
A példa nem teljesen "ül", hiszen itt gyakorlatilag a kódoló gépi kódra fordította (compiler) át a FORTRAN programot. Manapság a kódoláson azt értjük, hogy adott programnyelven leírunk egy algoritmust.
Ha belegondolunk mégiscsak helyes a hasonlat. Aki kódol, az egy működő modellt valósít meg. Aki programozik az magát a modellt készíti el. A kettő a programozás mai értelmében összeolvad és egyben jelenti az algoritmizálási képesség és egy programnyelv ismeretét, de a kettőt külön kell tudni választani ahhoz, hogy programozni tudjunk! Először algoritmust tervezünk, majd lekódoljuk valamely programnyelven.
Ez az átvarázsolás lesz az, amit a programozónak tudnia kell, különben csak egy ócska bűvésztrükk betanulására és többé kevésbé sikeres bemutatására lesz képes...
A könyv akkor 12 Ft volt most 275 Ft-ot kért érte az antikvárium. Gyorsan körülnéztem még és végül megvásároltam néhány régi, programozási nyelvekről szóló szakkönyvet.
Mindig is érdekeltek a különféle programozási nyelvek. Nem maga a hatékonyság, vagy a használhatóság az ami felkeltette az érdeklődésemet, hanem magának a nyelvnek a logikája, működése, szintaktikája. A régi nyelvek meg azért érdekesek, mert látni lehet a fejlődést, ahogy egyik a másikból építkezve egy újat - talán jobbat - hoz létre. Nem ismerem a régi nyelveket. BASIC majd PASCAL voltak a tanulónyelveim. Mellette kis gépikód és Assembly is adódott. Utána megismerkedtem a dBase/Clipper nyelvekkel, amik az adatbáziskezelési feladatokhoz voltak nagyszerű eszközök, majd jött a C és végül az obejktumorientált progrmaozás a JAVA, a C++ és a C# nyelveken keresztül.
Most elhatároztam hogy meg fogok ismerkedni néhány régi programozási nyelvvel. Nem feltétlenül azért, hogy használjam, hanem hogy megismerjem a programozás történelmét.
Szeretem a régi szakkönyvek előszavait, bevezető fejezeteit olvasni, mert sok érdekesség van benne. A FORTRAN könyvben is találtam egy érdekes gondolatot a programozással kapcsolatban:
"...nem a programozási nyelv oktatásáról van szó, hanem a programozási nyelvnek mint eszköznek a felhasználásával a megfelelő szaktudomány oktatásáról."Itt arra utal a szerző, hogy egy programozási nyelv oktatása, megismerése nem azonos a programozás szaktudományának oktatásával, megismerésével.
Később ezt írja:
"A lényeges különbség a hagyományos oktatási módszerrel szemben itt az, hogy az egyes eljárásokat nem csak formulák hanem egyúttal programok formájában is megfogalmazzák. Ehhez természetesen elkerülhetetlen valamelyik konkrét algoritmikus nyelv ismerete, azonban a hangsúly nem ezen van. Ennek az oktatási módszernek előnye, hogy a numerikus ismereteken túlmenően 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 6. oldal)
A gondolat nagyon sokatmondó! A Programozz! blog bevezetőjében említettem hogy ki kell alakulnia az algoritmikus gondolkodásnak ahhoz, hogy valaki tudjon programozni. Írtam ugyan itt, hogy sokan azt mondják: "Pascalban ezt simán megírom, de C-ben nem megy!"
Nos aki ezt mondja azzal az a helyzet, hogy sajnos nem tud programozni. Tud "pascalul", de nem tud programozni. Ismeri a nyelvet és az használja is, de nem tud algoritmust alkotni. Ez nagy baj! Egy programozónak a nyelv "csak" egy eszköz. A holt képletek élő programmá történő átvarázsolásához ennél több kell és ezt hívják programozásnak.
Még egy érdekes dolog, amit a könyv elszavát olvasgatva érzek. A programozás mérnöki feladat, a kódolás szakmunka. Például annak idején a programozói tevékenység nem terminál előtt zajlott, hanem programkártyákon kézzel, ceruzával írta meg a programozó a programot, majd ezt átadták a kódolónak, aki a megfelelő módon bevitte a gépbe és elkészítette a lyukkártyát, amin a betölthető programok voltak.
A példa nem teljesen "ül", hiszen itt gyakorlatilag a kódoló gépi kódra fordította (compiler) át a FORTRAN programot. Manapság a kódoláson azt értjük, hogy adott programnyelven leírunk egy algoritmust.
Ha belegondolunk mégiscsak helyes a hasonlat. Aki kódol, az egy működő modellt valósít meg. Aki programozik az magát a modellt készíti el. A kettő a programozás mai értelmében összeolvad és egyben jelenti az algoritmizálási képesség és egy programnyelv ismeretét, de a kettőt külön kell tudni választani ahhoz, hogy programozni tudjunk! Először algoritmust tervezünk, majd lekódoljuk valamely programnyelven.
Ez az átvarázsolás lesz az, amit a programozónak tudnia kell, különben csak egy ócska bűvésztrükk betanulására és többé kevésbé sikeres bemutatására lesz képes...
2010. július 20., kedd
Adattípusok
Már megbeszéltük korábban, hogy egy program elkészítéséhez meg kell határoznunk a bemenő adatokat és az azokon elvégzendő műveleteket annak érdekében hogy a megfelelő kimenetet kapjuk.
A bemenő adatok meghatározása egy igen fontos dolog. Egy adatot a programozás során változóként, illetve konstansként tudjuk kezelni. A változó egy oylan hivatkozás, amin keresztül elérhető és megváltoztatható az adat amit reprezentál. A konstans ezzel szemben egy fix értéket ábrázol, annak értéke nem módosítható.
Egy adatnak két jellemzője van. Az adatot reprezentáló változó vagy konstans neve és típusa.
A változó neve egy általunk szabadon választott - az adott programozási nyelv szabályainak megfelelő - karaktersorozat.
Pl.
Karakteres típusok:
A bemenő adatok meghatározása egy igen fontos dolog. Egy adatot a programozás során változóként, illetve konstansként tudjuk kezelni. A változó egy oylan hivatkozás, amin keresztül elérhető és megváltoztatható az adat amit reprezentál. A konstans ezzel szemben egy fix értéket ábrázol, annak értéke nem módosítható.
Egy adatnak két jellemzője van. Az adatot reprezentáló változó vagy konstans neve és típusa.
A változó neve egy általunk szabadon választott - az adott programozási nyelv szabályainak megfelelő - karaktersorozat.
Pl.
- a háromszög oldalainak jelölésére célszerű a matematikában megszokott a, b, c változóneveket használni.
- ha valakinek a keresztnevét szeretnénk tárolni a programban, akkor jó választás lehet a knev változónévnek.
- valamilyen indexelési műveletnél én az i és j változóneveket használom
- koordináták jelölésére természetesen az x és y nevek egyértelműek.
- irányítószám tárolása lehet az irsz változóban
- egy érték maximumát jelölheti az YMAX konstans.
Mint látható ezek célszerű, rövid a tartalmukat valamilyen logika szerint jelző nevek. A gyakorlatok során kialakul egy konvenció ami alapján elnevezzük majd a változóinkat. Használjunk rövi egyszerű, de mégis beszédes változóneveket!
A másik lényeges tulajdonsága a változóknak a nevük mellett azok típusa. A típus azért fontos mert meghatározza hogy az adott változót hogyan kell értelmezni, mik a határai, mekkora adat fér bele, azokkal milyen műveleteket lehet végezni. Pl két szöveget nagyon nehéz összeszorozni, de egy betűt egy számmal összeadni sem nagyon lehet (bár C-ben éppenséggel lehetséges :) )
Az egyszerű adattípusok azok amiket az adott nyelv eleve implementál.
Pascal esetében a leggyakrabban használt típusok /az összes típus a nyelv referencialeírásában/:
Egészek:
- Byte: 0..255 közti egész
- Integer: -32768 .. 32767 közti egész
- Word: 0 .. 65535 közti egész
- Longint: -2147483648 .. 2147483647
- Longword: 0 .. 4294967295
Logikai típus:
- Boolean: értéke true vagy false lehet, ami logikai igaz és hamis értékeket jelöl.
Valós típusok:
- Real: 1.5E-45 .. 3.4E38 közti valós szám
- Double: 5.0E-324 .. 1.7E308 közti valós szám
- Extended: 1.9E-4932 .. 1.1E4932 közti valós szám
- Char: egyetlen karakter.
- String: karakterfüzér, aminek maximális hossza 255 lehet.
2010. július 2., péntek
Kollár Zoli "hogyan kezdődött..." sztorija (I. rész)
Sziasztok!
Megosztom én is veletek a "hogyan kezdődött..." történetemet:
'83 végén, '84 elején kezdődött a számítógép iránti érdeklődésem. Ugyanis híradástechnikai szakközépiskolába jártam, és sok osztálytársammal ellentétben engem érdekelt is a szakma. Ezért a zsebpénzemet nem bulizásra költöttem, hanem alkatrészekre, újságokra. És ekkor jelent meg a '84-es Rádiótechnika évkövny, amiben elég jó leírás volt a 8085-ös mikroprocesszorról. Napokon-éjszakákon át ezerszer is elolvastam a cikket, próbáltam megérteni, hogy hogyan működik a processzor. Pár nap múlva azt vettem észre, hogy ez tök egyszerűnek tűnik. Értelmes, logikus utasítások tömkelege, amiket megfelelően sorba lehet rendezni.
'84-ben harmadikos voltam, amikor kapott az iskola egy HT1080Z számítógépet. Szó szerint az iskola kapta, mert diákok nem nagyon nyúlhattak hozzá, csak a tanárok. Ez a gép történetesen a szakmai gyakorlatot tanító tanárom asztalára került. Távolról, sóvárogva néztem a gépet...
Kaptam egy Basic könyvet kölcsön az egyik iskolatársamtól (nem a mi osztályunkba járt). Azt is hamar átolvastam és az is tök egyszerűnek tünt. Aztán egyszer megkérdeztem a tanárunktól, hogy oda ülhetek-e elé? És megengedte, a szünetekben. Mondanom se kell, hogy ezután az összes szünetet ott töltöttem a gép előtt. Első programom ha jól emlékszem egy torpedójáték volt. Aztán a Basic nem nagyon érdekelt, és közben kiderítettem, hogy a gép Z80-as processzora majdnem teljesen kompatibilis az általam már "ismert" 8085-el. Otthon papíron kezdtem el írogatni assembly-ben az egyszerűbbnél egyszerűbb programokat, a suliban már csak a lefordított kódot kellett gyorsan bepötyögni, és örülni, ha működött elsőre. Olyasmiket írtam, hogy az egész képernyőt kitölti egy karakterrel, aztán egymás után növeli őket és megdöbbentő volt számomra a Basic és a "gépi kód" közti különbség. Soha többé nem akartam Basic-et :)
'84 nyarán a telefongyárban töltöttem a szokásos szakmai gyakorlatomat és ekkor kerültem közelebbi kapcsolatba a TAP-34-es számítógéppel. Soha ennyire lelkesen nem töltöttem még szakmai gyakorlatot, mint abban az egy hónapban. Az első pár nap Star-Trekezései után nekiálltam programozni. Milyen programot is írjak? Az a gép nem volt olyan egyszerű felépítésű mint a HT, ezért eleinte maradtam a Basic-nél, és írtam egy Disassembler programot. Persze mutogattam boldog-boldogtalannak, amíg egyszer csak az ottani főnök fel nem hívta Sz. Zolit. Zoli mai szemmel rendszergazda volt egy TPA1148-as "miniszámítógépen", de ami a sorsomat meghatározta az az volt, hogy a barátnője (ma a felesége és két gyermekük anyja) a Számítástechnikai Fejlesztési Főosztályon dolgozott. Zolinak baromira megtetszett a programom, elkérte és el is kezdte terjeszeni a gyárban, mert kiderült, hogy ilyen még nem is volt a géphez.
A '84-es év további része és a '85-ös év az érettségiig nagyrészt azzal telt el, hogy kifényképeztem a HT ROM tartalmát (csak hexadecimális kódok voltak), és papírra vetettem. Ez elég sok estémet és éjszakámat emésztette fel, főként, hogy csak negatívon voltak meg a képek és diavetítővel kellett kinagyítanom. Aztán elkeztem visszafejteni a kódokat. Készült belőle egy "nyers" változat és egy "javított". Pont tele lett vele egy A4-es spirálfüzet. Ennek a munkámnak a későbbiekben igen nagy hasznát vettem.
http://ht.homeserver.hu/doc/listak/htrom/htrom.html
Alig vártam, hogy leérettségizzek és mehessek dolgozni a Telefongyárba, mivel szerződésem volt velük, hogy suli után ott fogok dolgozni. Zolival tartottam a kapcsolatot, mivel 4.-ben is a telefongyárba (is) jártam szakmai gyakorlatra év közben is, meg mint kiderült, a "Klub"-nak is meghatározó tagja volt. Legfőképp itt találkoztunk, és szóba került az elhelyezkedésem. Megkérte a barátnőjét, hogy kérdezze meg, van-e lehetőségem az ő osztályukon elhelyezkedni. És volt!
Első nap "kezelésbe" vettek az új kollégáim, akik egytől-egyig egyetemet végzett mérnökök voltak, és nem értették, hogy mit keresek én ott. T. Lajos volt az, akinek a legnagyobb hangja volt köztük, és aszondta, ha akarok egy gépet magamnak, akkor rakjak össze egyet. Ő úgy gondolta, hogy kifogott rajtam - hát nagyot tévedett! Volt ott egy prototípus TAP-34 teljesen kibelezve, és én két-három nap alatt életet leheltem bele, mindenféle segítség nélkül. Azaz ez pontosan nem igaz, mert a Floppy meghajtók működésképtelenek voltak, és ehhez segítségül kellett hívnom egy "specialistát", aki fél óra alatt beállította az elektronikát. (Akkoriban még így működtek a floppyk :)
Egy-két hétig csak ismerkedtem a géppel, a ROM-jaival, a HW elemek címzésével, működésével, a fejlesztői programokat gyűjtögettem össze, ismerkedtem az assemblerrel. A telefongyár nagyon jó hely volt, minden műszaki leírás ot volt a polcon, az eredeti Intel katalógusoktól kezdve mittudom én már, hogy mikig.
Aztán kitaláltam, hogy írok egy jobb Basic Interpretert, mint amit a Telefongyár tákolt össze. Senki nem akarta elhinni nekem, hogy képes vagyok rá. És itt jön a képbe a füzetem: visszafejtés közben meg is értettem az interpreter működését, és képes voltam szétválasztani a nyelvhez és a hardverhez kötődő részeket. (Egy kis visszaemlékezés: a suliban az egyik iskolatársamnak volt otthon egy C64-es gépe, apja olyan helyen dolgozott, ahol ez volt a munkaszköze, így azzal is volt szerencsém párszor találkozni). Nekem a C64-ből nagyon megtetszett a "Full Screen Editora", így teljesen újra kellett írni a beviteli-szerkesztési részeket. Kazettás magnó helyett Floppy funkciókat kellett írni, úgyhogy a HT kódnak (nem akarok hülyeséget mondani, de ) kb. 70-80%-át használtam fel, a többi teljesen saját kód volt. A "gyári" basic a gép rom rutinjait használta fel a képernyőre íráshoz, és az a 8275-ös CRT kontroller miatt elég lassúra sikeredett. Nekem nem is tetszett, ezért azt is teljesen újra írtam és ez volt az a része a programnak, amivel a 19.-ik születésnapomon 32.000 Ft-ot kerestem! :) A lényeg az, hogy nagyjából fél év alatt sikerült egy sokkal jobb és jóval gyorsabb Basic Interpretert írnom, és ezzel kivívnom mérnök kollégáim elismerését.
Lajos lett a "menedzserem" és elkezdte fusiban árulni a programomat. Két szervízes srác talált is rá vevőt, a szolnoki vízműveket. Egy feltételük volt, jóval gyorsabbnak kellett lennie mint a régi és kompatibilisnek kellett vele lennie.
Pont a 19.-is születésnapomon került sor a bemutatóra Szolnokon. És mekkora mázlim volt! :) Valami nyilvántartó programjuk volt, ami adatgyűjtés vagy mittomén mi közben folyamatosan írt a képernyőre ezáltal baromira lelassítva a programjukat. És mivel én átírtam a megjelenítést, így az addigi 6 óra helyett kevesebb mint két óra alatt futott le a programjuk, hibátlanul. Kérdés se volt ezután, hogy megveszik. A szerzői jogvédőn keresztül fizettek, miután mindenki levette a sápot még nekem is maradt egy otthoni számítógépre való pénzem.
Folytatása követketik...
Megosztom én is veletek a "hogyan kezdődött..." történetemet:
'83 végén, '84 elején kezdődött a számítógép iránti érdeklődésem. Ugyanis híradástechnikai szakközépiskolába jártam, és sok osztálytársammal ellentétben engem érdekelt is a szakma. Ezért a zsebpénzemet nem bulizásra költöttem, hanem alkatrészekre, újságokra. És ekkor jelent meg a '84-es Rádiótechnika évkövny, amiben elég jó leírás volt a 8085-ös mikroprocesszorról. Napokon-éjszakákon át ezerszer is elolvastam a cikket, próbáltam megérteni, hogy hogyan működik a processzor. Pár nap múlva azt vettem észre, hogy ez tök egyszerűnek tűnik. Értelmes, logikus utasítások tömkelege, amiket megfelelően sorba lehet rendezni.
'84-ben harmadikos voltam, amikor kapott az iskola egy HT1080Z számítógépet. Szó szerint az iskola kapta, mert diákok nem nagyon nyúlhattak hozzá, csak a tanárok. Ez a gép történetesen a szakmai gyakorlatot tanító tanárom asztalára került. Távolról, sóvárogva néztem a gépet...
Kaptam egy Basic könyvet kölcsön az egyik iskolatársamtól (nem a mi osztályunkba járt). Azt is hamar átolvastam és az is tök egyszerűnek tünt. Aztán egyszer megkérdeztem a tanárunktól, hogy oda ülhetek-e elé? És megengedte, a szünetekben. Mondanom se kell, hogy ezután az összes szünetet ott töltöttem a gép előtt. Első programom ha jól emlékszem egy torpedójáték volt. Aztán a Basic nem nagyon érdekelt, és közben kiderítettem, hogy a gép Z80-as processzora majdnem teljesen kompatibilis az általam már "ismert" 8085-el. Otthon papíron kezdtem el írogatni assembly-ben az egyszerűbbnél egyszerűbb programokat, a suliban már csak a lefordított kódot kellett gyorsan bepötyögni, és örülni, ha működött elsőre. Olyasmiket írtam, hogy az egész képernyőt kitölti egy karakterrel, aztán egymás után növeli őket és megdöbbentő volt számomra a Basic és a "gépi kód" közti különbség. Soha többé nem akartam Basic-et :)
'84 nyarán a telefongyárban töltöttem a szokásos szakmai gyakorlatomat és ekkor kerültem közelebbi kapcsolatba a TAP-34-es számítógéppel. Soha ennyire lelkesen nem töltöttem még szakmai gyakorlatot, mint abban az egy hónapban. Az első pár nap Star-Trekezései után nekiálltam programozni. Milyen programot is írjak? Az a gép nem volt olyan egyszerű felépítésű mint a HT, ezért eleinte maradtam a Basic-nél, és írtam egy Disassembler programot. Persze mutogattam boldog-boldogtalannak, amíg egyszer csak az ottani főnök fel nem hívta Sz. Zolit. Zoli mai szemmel rendszergazda volt egy TPA1148-as "miniszámítógépen", de ami a sorsomat meghatározta az az volt, hogy a barátnője (ma a felesége és két gyermekük anyja) a Számítástechnikai Fejlesztési Főosztályon dolgozott. Zolinak baromira megtetszett a programom, elkérte és el is kezdte terjeszeni a gyárban, mert kiderült, hogy ilyen még nem is volt a géphez.
A '84-es év további része és a '85-ös év az érettségiig nagyrészt azzal telt el, hogy kifényképeztem a HT ROM tartalmát (csak hexadecimális kódok voltak), és papírra vetettem. Ez elég sok estémet és éjszakámat emésztette fel, főként, hogy csak negatívon voltak meg a képek és diavetítővel kellett kinagyítanom. Aztán elkeztem visszafejteni a kódokat. Készült belőle egy "nyers" változat és egy "javított". Pont tele lett vele egy A4-es spirálfüzet. Ennek a munkámnak a későbbiekben igen nagy hasznát vettem.
http://ht.homeserver.hu/doc/listak/htrom/htrom.html
Alig vártam, hogy leérettségizzek és mehessek dolgozni a Telefongyárba, mivel szerződésem volt velük, hogy suli után ott fogok dolgozni. Zolival tartottam a kapcsolatot, mivel 4.-ben is a telefongyárba (is) jártam szakmai gyakorlatra év közben is, meg mint kiderült, a "Klub"-nak is meghatározó tagja volt. Legfőképp itt találkoztunk, és szóba került az elhelyezkedésem. Megkérte a barátnőjét, hogy kérdezze meg, van-e lehetőségem az ő osztályukon elhelyezkedni. És volt!
Első nap "kezelésbe" vettek az új kollégáim, akik egytől-egyig egyetemet végzett mérnökök voltak, és nem értették, hogy mit keresek én ott. T. Lajos volt az, akinek a legnagyobb hangja volt köztük, és aszondta, ha akarok egy gépet magamnak, akkor rakjak össze egyet. Ő úgy gondolta, hogy kifogott rajtam - hát nagyot tévedett! Volt ott egy prototípus TAP-34 teljesen kibelezve, és én két-három nap alatt életet leheltem bele, mindenféle segítség nélkül. Azaz ez pontosan nem igaz, mert a Floppy meghajtók működésképtelenek voltak, és ehhez segítségül kellett hívnom egy "specialistát", aki fél óra alatt beállította az elektronikát. (Akkoriban még így működtek a floppyk :)
Egy-két hétig csak ismerkedtem a géppel, a ROM-jaival, a HW elemek címzésével, működésével, a fejlesztői programokat gyűjtögettem össze, ismerkedtem az assemblerrel. A telefongyár nagyon jó hely volt, minden műszaki leírás ot volt a polcon, az eredeti Intel katalógusoktól kezdve mittudom én már, hogy mikig.
Aztán kitaláltam, hogy írok egy jobb Basic Interpretert, mint amit a Telefongyár tákolt össze. Senki nem akarta elhinni nekem, hogy képes vagyok rá. És itt jön a képbe a füzetem: visszafejtés közben meg is értettem az interpreter működését, és képes voltam szétválasztani a nyelvhez és a hardverhez kötődő részeket. (Egy kis visszaemlékezés: a suliban az egyik iskolatársamnak volt otthon egy C64-es gépe, apja olyan helyen dolgozott, ahol ez volt a munkaszköze, így azzal is volt szerencsém párszor találkozni). Nekem a C64-ből nagyon megtetszett a "Full Screen Editora", így teljesen újra kellett írni a beviteli-szerkesztési részeket. Kazettás magnó helyett Floppy funkciókat kellett írni, úgyhogy a HT kódnak (nem akarok hülyeséget mondani, de ) kb. 70-80%-át használtam fel, a többi teljesen saját kód volt. A "gyári" basic a gép rom rutinjait használta fel a képernyőre íráshoz, és az a 8275-ös CRT kontroller miatt elég lassúra sikeredett. Nekem nem is tetszett, ezért azt is teljesen újra írtam és ez volt az a része a programnak, amivel a 19.-ik születésnapomon 32.000 Ft-ot kerestem! :) A lényeg az, hogy nagyjából fél év alatt sikerült egy sokkal jobb és jóval gyorsabb Basic Interpretert írnom, és ezzel kivívnom mérnök kollégáim elismerését.
Lajos lett a "menedzserem" és elkezdte fusiban árulni a programomat. Két szervízes srác talált is rá vevőt, a szolnoki vízműveket. Egy feltételük volt, jóval gyorsabbnak kellett lennie mint a régi és kompatibilisnek kellett vele lennie.
Pont a 19.-is születésnapomon került sor a bemutatóra Szolnokon. És mekkora mázlim volt! :) Valami nyilvántartó programjuk volt, ami adatgyűjtés vagy mittomén mi közben folyamatosan írt a képernyőre ezáltal baromira lelassítva a programjukat. És mivel én átírtam a megjelenítést, így az addigi 6 óra helyett kevesebb mint két óra alatt futott le a programjuk, hibátlanul. Kérdés se volt ezután, hogy megveszik. A szerzői jogvédőn keresztül fizettek, miután mindenki levette a sápot még nekem is maradt egy otthoni számítógépre való pénzem.
Folytatása követketik...
II. rész - CP/M
A Telefongyárnak is haladnia kellett a korral, ezért mindenkinek a TAP-34-es gépét átalakították CP/M-esre. Ez nem volt különösen nagy hardverigényű "beavatkozás", egy-két fóliát kellett átvágni a CPU panelen és a ROM-okat kicserélni statikus RAM-okra. Eleinte idegenkedtem az "új rendszertől", de ez csak addig tartott, amíg az én gépemre is sor került. Egy egészen új világ tárult elém, olyan programokkal mint a WordStar, Microsoft Assembler, DDT és sorolhatnám őket a végtelenségig. Az egyik legfontosabb program a DBase volt, ami hamarosan meghatározta a jövőmet. Én képes voltam reggel 6-tól este 6-ig nyúzni a gépet, pedig hivatalosan munkám nem volt. Magyarul két és fél évig csak tanultam a programozást és a hardverekkel ismerkedtem. Sorozatban gyártottam például az ébresztős-zenélős mikroprocesszoros órákat. Fejlesztési Főosztály révén alkatrészben nem volt hiány, nem kellett elszámolni velük. 10-15 óra készült el körülbelül, az enyém még mindig megvan, bár már nem működik, mert huszonév alatt elfelejtette az eprom a tartalmát. Bár megvan még a forráskód eljárt felette az idő. Nagyon szerettem azt az órát, úgy 15 évig ébredtem a C16-ra írt Kikstart játékból "kölcsönzött" kétszólamú zenéjére. Egyébként 8085-ös proci volt benne, mert az volt a raktárban feleslegbe... A főosztályon egyetlen egy eprom égető volt, amire napokig kellett várni, hogy használhassam. Ezt is megelégeltem és csináltam magamnak :)
Aztán jött a katonaság. Én sosem éreztem magamat harcias alkatnak meg hazafi se akartam lenni, ezért próbáltam minél könnyebbé tenni magamnak azt a másfél évet, amit elvettek az életemből. Kezdtem azzal, hogy rögtön első nap a budaörsi laktanyában összefutottam K. Attilával, aki szintén telefongyári és jó haverom is volt. A vállapján több csillag volt mint az égen :) Kiderült, hogy az egyik alezredes feleségénél dolgozik a számítógépteremben. Aztán még aznap elvittek debrecenbe egy hónapra kiképezni. Csakhogy én szemüveges vagyok és ezért "B" kategóriát kaptam. Ezzel nagyjából három hetet át is vészeltem - se lövészet, se sárban csúszkálás, se konyha -, mígnem valamelyik nagytudású őrvezetőnek eszébe nem jutott, hogy nem a szívemmel van baj :(
Ezalatt az egy hónap alatt se tétlenkedtem a programozással: a telefongyárban megismerkedtem egy furcsa viselkedésű sráccal, R. Palival. Szakmáját tekintve vegyész volt, de őt is inkább a számítógépek érdekelték és volt tehetsége hozzá. Nem nálunk dolgozott, hanem egy másik osztályon, de senki nem tudta megmondani, hogy neki igazából mi is a munkája. A lényeg az, hogy másik munkahely után kezdett nézelődni, és saját fejlesztésű CP/M-es gépet tervezett az oroszoknak. A termináljába a már említett 8275-ös CRT kontroller került, amit szerintem addigra magyarországon én ismertem a legjobban. Papíron, egy kockás füzetbe megírtam a terminál teljes programját, többször "lefuttattam" fejben. Mikor visszakerültem Budaörsre és kiengedtek pár napra, első utam Palihoz vezetett, ahol még aznap éjszaka beírtuk a programot. Kisebb javítások után kifogástalanul működött :)
Visszatérve a laktanyába a századparancsnok irodájában találtam magamat. Tényleg százados volt és pontosan olyan vörös volt a feje mint a szovjet zászló. Azt kérdezte (inkább üvöltötte), hogy miért nem jó nekem ott, miért kell nekem hátszél, miért akarok máshová menni? Fogalmam se volt róla, hogy miről beszél. Még aznap kiderült, hogy Attila - akivel első nap összefutottam - "intézkedett", és az alezredesnél találtam magam, mint "személyi programozója". Egy C128-as gépe volt neki, amin futott a CP/M, és meg volt neki minden programja, ami szükséges lehetett. Úgyhogy DBase tudásomat felfrissítve mindenféle nyilvántartó programokat írkáltam neki - amikor épp nem játszottam :) Cserébe csak hétköznap reggel 7-től délután 4-ig kellett a laktanyában lennem, úgyhogy király életem volt. Ezért említettem korábban, hogy fontos dolog volt az életemben a DBase.
A folytatásban az első PC-m építése következik...
Programozási nyelvek, értelmezők és fordítók
Itt az idő hogy konkrétan belevágjunk a programozásba és igazi programot készítsünk, igazi exe-t amit tudunk futtatni (PC és Windows esetében).
Ahhoz hogy a megalkotott programokat a gép számára is érthető és végrehajtható formába öntsük, szükség van egy eszközre ami ezt megteszi. A valamilyen programozási nyelven megírt programunkat a gép számára érthető gépi kódra kell fordítani. Alapvetően kétféle megvalósítás létezik. Az egyik az értelmező (interpreter) a másik a fordító (compiler).
Röviden összefoglalva az interpretrek jellemzője hogy a forrásprogram utasításait akkor fordítja le amikor végre kell azt hajtani, míg a compilerek az egész forrásprogramot lefordítják gépi kódra, majd a linkelés után (ezt szintén nem szeretném most részletezni) létrejövő programfájl (exe) már közvetlenül futtatható.
Ebben a blogban a manapság leggyakrabban alkalmazott nyelveket, a C és a PASCAL nyelvet fogom példaként használni. A két nyelv között nagyon sok elvi különbség van. Szinte vallási fanatizmussal vetekszenek a különböző felfogások. "Miért jobb a C mint a Pascal?" típusú kérdések köré már filozófikus mélységű elemzések és eszmefuttatások kötődnek.
Jelenleg részünkről a különbség a jelölésmódban áll. Gyakorlatilag a C hardverközelibb, a Pascal meg szigorúan típusos és sokkal szebb, tisztább, olvashatóbb kód készíthető vele. De nem akarok belemenni most az ilyen szintű elmélkedésekbe.
Windows alatt Pascalhoz a Free Pascal környezetet ajánlom, C-hez pedig a Code::Blocks fejlesztőkörnyezetet. Ha a telepítésekkel probléma van írjatok! Mindkét fejlesztőeszköz ingyenesen és legálisan használható.
Ahhoz hogy a megalkotott programokat a gép számára is érthető és végrehajtható formába öntsük, szükség van egy eszközre ami ezt megteszi. A valamilyen programozási nyelven megírt programunkat a gép számára érthető gépi kódra kell fordítani. Alapvetően kétféle megvalósítás létezik. Az egyik az értelmező (interpreter) a másik a fordító (compiler).
Röviden összefoglalva az interpretrek jellemzője hogy a forrásprogram utasításait akkor fordítja le amikor végre kell azt hajtani, míg a compilerek az egész forrásprogramot lefordítják gépi kódra, majd a linkelés után (ezt szintén nem szeretném most részletezni) létrejövő programfájl (exe) már közvetlenül futtatható.
Ebben a blogban a manapság leggyakrabban alkalmazott nyelveket, a C és a PASCAL nyelvet fogom példaként használni. A két nyelv között nagyon sok elvi különbség van. Szinte vallási fanatizmussal vetekszenek a különböző felfogások. "Miért jobb a C mint a Pascal?" típusú kérdések köré már filozófikus mélységű elemzések és eszmefuttatások kötődnek.
Jelenleg részünkről a különbség a jelölésmódban áll. Gyakorlatilag a C hardverközelibb, a Pascal meg szigorúan típusos és sokkal szebb, tisztább, olvashatóbb kód készíthető vele. De nem akarok belemenni most az ilyen szintű elmélkedésekbe.
Windows alatt Pascalhoz a Free Pascal környezetet ajánlom, C-hez pedig a Code::Blocks fejlesztőkörnyezetet. Ha a telepítésekkel probléma van írjatok! Mindkét fejlesztőeszköz ingyenesen és legálisan használható.
Feliratkozás:
Bejegyzések (Atom)





