Ülök a gép előtt, programozok, és arra gondolok, hogy vajon miért csak mi tesszük ezt, „programozók”. Az a ki tudja, hány százezer muki, akinek hozzám hasonlóan szokása – vagy éppen fizetett munkája –, hogy programokat bütyköl össze. Merthogy a többség csak a meglevőket használja, amiket mi csinálunk.
Valaha nem így volt. Aki számítógéphez nyúlt, az programozó volt, mást nem is engedtek oda. Később már csak minimális programozói tudás kellett a géphez, felhasználók tömegei nem ismertek többet a LOAD és a RUN utasításnál, meg esetleg a POKE-nál, amivel közvetlenül a memóriába lehetett írni. Kis cédulákra föl voltak nekik írva ilyenek, ezeket beírták a játék betöltése után, és örültek. De azért elég sok emberke programozott is.
Ma már nagyon kevesen. 1,4 milliárd ember használja a netet a világon, számítógépet feltehetően még valamicskével többen. Ennek csak elenyésző töredéke programoz.
Pedig tök jó dolog.
Programozói szemszögből kétféle program létezik. Felhasználói szemszögből csak egyféle, mert a felhasználó csak az egyikkel találkozik: a „felnőtt” programmal, ami csinos kis csomagban érkezik, installálásra, bocsánat, telepítésre készen, az ikonja megjelenik a Start menüben és az asztalon, kattintásra indul, mindent megcsinál, ha elakadunk, ott a használati utasítás, szóval minden szempontból komplett, forgalomképes piaci termék.
De a programozó a másik fajtát is ismeri. Sokszor csak a sajátjait, mert megírja őket, használja, de soha nem adja tovább, nem is lenne értelme, mert kifejezetten a saját szükségleteire készült, más nemigen venné hasznát. Mint az én programindító programom. A nevét nem mondhatom meg, mert nincsen neki; programot írni sokkal könnyebb, mint a programnak nevet találni, ezért ha nem muszáj, ezzel nem szenvedek.
Programindító programom arra szolgál, hogy elindítsa a programokat. Én nem tartok ikonokat az asztalomon, nem is kotorászok a Start menüben, csak megnyomok egy hotkeyt és elindul a program. Meg mindenféle programok mindenféle funkcióira is vannak makróim, amik másnak aligha kellenének.
Ilyeneket az olvasó is nagyon könnyen csinálhat. Az Autoit 3 egy univerzális scriptnyelv, amiben Windows alatt szinte mindent meg lehet írni. Komplett programokat is; a website fórumában rengeteget lehet találni. A címlapon levő Download gombbal töltse le az Autoitet (hét mega), indítsa el, és amint az installálás lefutott, írhat programokat. Akár a Jegyzettömbben is. Akarja a programjait egy-egy billentyűkombinációval indítani? Tessék:
hotkeyset("#j", "jegyzettomb")
while 1
sleep(1000)
wend
func jegyzettomb()
run("c:windowsnotepad.exe")
endfunc
Hogyan lesz az ember programozó – akár csak olyan amatőr is, mint jómagam? Úgy, hogy megtanul egy programnyelvet, elkezdi használni, programokat írogat rajta, és amikor úgy tartja kedve, nekiáll megtanulni még egy programnyelvet. Választék szerencsére van bőven, tessék egy kimerítő lista a Wikipédiáról, kategóriák szerinti bontásban. A legfontosabb kategóriák:
Compiled languages (lefordított nyelvek). Ezek némelyike (BASIC, C és C, Delphi, Java, Pascal) alkalmas a legkorszerűbb önálló programok írására. (Önálló program az, aminek a futtatásához nincs szükség az eredeti fejlesztőkörnyezetre, ami egy elég nagy és persze drága szoftver.)
//Interpreted languages// (értelmezett nyelvek). Itt viszont éppen ellenkezőleg, a programot a nyelv folyamatosan olvassa, tehát önálló programot nem lehet írni. (Persze nagyon sok nyelv értelmezővel és fordítóval egyaránt el van látva, fejlesztés közben az értelmezőt használjuk, aztán amikor kész a program, lefordítjuk és most már önállóan is megáll.) Ezek közül az Autoit, a Perl, a Python és a VBScript érdemel fokozott figyelmet.
//List-based languages// (listaalapú nyelvek). Itt található a Logo nyelv, ami nagyon érdekes, egyrészt a Logo védjegyévé vált (bár persze más nyelvekben is ismert) teknőcgrafika miatt, másrészt viszont a nyelv egésze is az.
//Logic-based languages// (logikai alapú nyelvek). Itt találjuk a Prolog nyelvet, ami nagyon különleges, „hagyományos fejű” programozó nem is boldogul vele könnyen. Az összes többi nyelven utasítjuk a gépet: csináld ezt, csináld azt. A Prolog és rokon nyelvei viszont állításokat fogalmaznak meg, amikből logikai láncok jönnek létre, aztán a gép dolga levonni a következtetéseket.
//Macro languages// (makrónyelvek). A Wikipédia ez alatt azt érti, hogy szövegbe ágyazunk végrehajtható programrészleteket – ennek a módszernek legfontosabb képviselője a PHP nyelv. De makrónyelvnek hívjuk azokat a nyelveket is, amiket egy-egy alkalmazás részeként lehet használni. Például a Microsoft Wordnek van egy makrónyelve, amiben nagyon fejlett programokat írhatunk – amik aztán természetesen csak a Wordön belül működnek, de ott bármit meg tudnak tenni. Az ilyen makrónyelveket is érdemes megtanulni: ha az olvasó használ olyan alkalmazást (Wordöt, Excelt stb.), aminek van saját makrónyelve, akkor sokkal hatékonyabban tud dolgozni a programmal.
//Object-oriented languages// (objektumorientált nyelvek). A Wikipédia ezeket még tovább osztja, de ez számunkra most nem fontos. Objektumorientált nyelveken lehet olyan programokat írni, amik például Windows alatt tevékenykednek, ablakokkal, gombokkal, miegyebekkel. A már említett nyelvek közül is jó néhány objektumorientált, vagy van olyan változata, amelyik az, vagy ugyanazt a változatot lehet használni objektumorientált vagy nem objektumorientált módon.
//Scripting languages// (scriptnyelvek). Itt említi a Javascriptet (és az Autoitnek meg az Autohotkeynek is itt lenne a helye). Hasonlítanak a makrónyelvekre.
Azért persze a legtöbb programozójelölt örül, ha //egy// nyelvet megtanul. (Megnyugtatom az olvasót, én se ismerem mindet azok közül, amiket felsoroltam, pláne nem jól.) Melyik legyen az az egy?
Ízlés dolga. Régen a BASIC volt a kezdők egyeduralkodó nyelve, mert minden gépen rajta volt, egyből lehetett tanulni. Ma már ez nem szempont, mindegyiket egyformán le lehet tölteni. Azazhogy egy részüket persze csak megvenni lehet. Lehet egy BASIC-kel kezdeni, amilyen a [[http://pagesperso-orange.fr/panoramic-language
$img=$argv[1]; $i=imagecreatefromjpeg($img); if($i && imagefilter($i, IMG_FILTER_COLORIZE, $argv[2], $argv[3], $argv[4])) imagejpeg($i, str_replace('.', '_recolor.', $img));