-
szigetva: @Sándorné Szatmári: Kérlek, fejezd be a hülyeséget. Egyszer-kétszer talán vicces, de most ...2024. 11. 13, 12:05 Szótekerészeti agybukfenc
-
Sándorné Szatmári: @Sándorné Szatmári: 12 kiegészítés: -A mai angolban a "kulcs" szó időben csak oda helyezhe...2024. 11. 13, 11:33 Szótekerészeti agybukfenc
-
Sándorné Szatmári: @szigetva: "..„ké” milyen meggondolásból jelentene 'eszközt', abba bele se merek gondolni....2024. 11. 13, 10:55 Szótekerészeti agybukfenc
-
szigetva: @Sándorné Szatmári: Metaforák helyett akkor mondd azt, hogy nt > nn. (Egyébként ezt se ...2024. 11. 13, 10:42 Szótekerészeti agybukfenc
-
Sándorné Szatmári: @szigetva: 9 Gondolom félre értettél..: "....Csakhogy akkor a „keményebbé vált” volna" írt...2024. 11. 13, 10:06 Szótekerészeti agybukfenc
Kálmán László nyelvész, a nyest szerkesztőségének alapembere, a hazai nyelvtudomány és nyelvi ismeretterjesztés legendás alakjának rovata volt ez.
- Elhunyt Kálmán László, a Nyelvész, aki megmondja
- Így műveld a nyelvedet
- Utoljára a bicigliről
- Start nyelvstratégia!
- Változás és „igénytelenség”
Kálmán László korábbi cikkeit itt találja.
Ha legutóbb kimaradt, most itt az új lehetőség!
Ha ma csak egyetlen nyelvészeti kísérletben vesz részt, mindenképp ez legyen az!
Finnugor nyelvrokonság: hazugság
A határozott névelő, ami azt jelenti, hogy ‘te’
Az oroszok már a fejünkön vannak!
Egy program forráskódja, modern festmény, esetleg ételrecept? Néha nem is olyan könnyű eldönteni, mit látunk éppen. Vannak, akik hobbiból furcsa, de működő programnyelveket terveznek... Hogyan kódolnak az aranyos cicák és mit (ne) főzzünk ma este?
A legtöbb programozási nyelvet úgy tervezik, hogy könnyen megtanulható és használható legyen. Azonban vannak olyan emberek is, akik hobbiból minél szokatlanabb programozási nyelveket készítenek, sőt ezeken a nyelveken működő, futtatható programokat is írnak! Az úgynevezett ezoterikus programnyelveknek a gyakorlati haszna nem sok, de szórakoztató és tanulságos lehet velük foglalkozni, csakúgy, mint más mesterséges nyelvekkel. Ha pedig idegenkedünk a számítástechnikától, akkor olvashatjuk a következő cikket egyfajta szent borzadállyal...
Akármit lehet, de minek?
A programozási nyelvek feladata, hogy közvetítsenek a felhasználójuk és a számítógép között. A számítógép olyan utasításokat tud végrehajtani, amelyek egyesek és nullák sorozataiból állnak, de ilyen utasításokat rendkívül nehéz összeállítani. Így a gyakorlatban (kissé leegyszerűsítve) az történik, hogy a felhasználó valamilyen, emberi nyelvre és/vagy matematikára legalább nyomokban hasonlító programozási nyelven írja meg az utasításokat – ez a forráskód –, majd a forráskódból egy fordítóprogram készít gépi kódot.
(Forrás: Wikimedia Commons / Fotothek / CC BY-SA 3.0)
Egy programozási nyelv gyakorlatilag bármilyen lehet, amíg van hozzá fordítóprogram. Egyesek ezt a lehetőséget ki is használják, és szadista, vicces vagy éppen művészi programozási nyelveket készítenek. Hogy minek? Leginkább azért, mert csak.
Kaotikus krikszkrakszok
A legközismertebb bizarr programozási nyelv talán a körülbelül „agyfasz”-ként fordítható nevű brainfuck. A szigorúan kisbetűvel írandó brainfuck összesen nyolc utasítást használ, és mind a nyolc egyetlen karakterből áll – például a „.” kiírja a tárolóban lévő adatot, a „+” pedig egyet ad hozzá. Ebből természetesen emberek által szinte teljesen olvashatatlan végeredmény születik. Mégis vannak olyan megszállottak, akik képesek brainfuck nyelven programozni...
Csak hogy lássuk, hogy néz ki ez a szörnyszülött a gyakorlatban – a következő brainfuck forráskód a „Sziasztok, nyestek!” szöveget jeleníti meg (aki nem hiszi, ide bemásolva futtathatja):
>+++++++++[<+++++++++>-]<++.>++++++[<++++++>-]<+++.>++++[<---->-]<-.--------.>++++[<++++>-]<++.+++++++.------.-----.----.>+++++++[<------->-]<--------------.>+++[<--->-]<---.>++++++++[<++++++++>-]<++++++++++++++.>+++[<+++>-]<++.>++++[<---->-]<----.>+++[<+++>-]<+++++.+.>+++[<--->-]<------.++++++.>++++++++[<-------->-]<----------.
Akár olyan programozási nyelveket is lehet találni, amelyek csak egyetlen utasítást használnak. Rögtön felmerül a kérdés, hogy mit csinál az egyetlen utasítás, hogy bármilyen programot meg lehet írni a segítségével? Többféle lehetőség adódik, a legegyszerűbb a „mozgass valamit valahova”.
Az oldal az ajánló után folytatódik...
Művészet?
Vannak olyan programozási nyelvek is, amelyek utasítások sorozataként nem szöveget, hanem képeket vagy zenét fogadnak el. A Velato nyelv MIDI formátumú zenéből állít elő futtatható utasításokat. Hogy a zene maga mennyire élvezhető, az más kérdés, habár a Velato készítője, Daniel Temkin állítása szerint sokat tett az ügy érdekében. A lentebbi – kottának tűnő – forráskód ide kattintva meghallgatható:
Más programozási nyelvek szintén arra törekszenek, hogy a forráskód egyben önállóan befogadható produktum is legyen. Talán a legextrémebb példa a Chef (’Séf’) nyelv, David Morgan-Mar alkotása. A Chef programok nemcsak hogy receptre hasonlítanak, de igény szerint meg is főzhetőek! Mi nem mertük kipróbálni – a mintapéldák esetében gyanúsan sok alapanyagot kell összekutyulni...
Morgan-Mar más érdekes nyelveket is készített. Másik kedvencünk tőle a Piet Mondrian absztrakt festőről elnevezett Piet nyelv, ennek a bemenetei színes képek. Mindez a gyakorlatban úgy működik, hogy a kép pixelei tartoznak konkrét parancsokhoz. Egyesek elképesztő dolgokat is létrehoztak e módon – van például Piet nyelvű brainfuck fordítóprogram. A Piet elég rugalmas, így magukat a programokat pusztán dekoratív elemekkel is kombinálhatja a lelkes programozó. A következő kép Joshua Schulter munkája, egy gyakran használt eljárást ültet át Piet nyelvre:
(Forrás: Joshua Schulter / GNU GPL)
A gyűjteményből kiemelendő még az a Piet program, ami a pí értékét számítja ki egy kör területéből és átmérőjéből; keressük a nagy piros kört!
A jó, a rossz és a csúf
Olyan ezoterikus programnyelvek is vannak, amelyeknél szemlátomást az volt a készítő első számú szempontja, hogy a végeredmény furcsán nézzen ki, vagy éppen ne nézzen ki sehogy! A Whitespace (’üres hely’) nyelv alkotórészei a hagyományosabb programnyelvek által rendszerint messze elkerült helykitöltő elemek – a szóköz, a tabulátor és az enter. A következő kép egy működő Whitespace programot ábrázol, kiszínezve, hogy lássunk is valamit:
A Whitespace hatalmas (?) előnye, hogy mivel más programozási nyelveket nem különösebben zavar, ha a kelleténél több üres helyet hagyunk, akár el is rejthetünk egy Whitespace programot más nyelven íródott forráskódunkban. Hogy ezt miért tennénk, az persze más kérdés...
A LOLCODE szintén furcsán fest, de egészen másképp, mint a Whitespace; ezt a nyelvet a cicás internetes mémek ihlették. Ha esetleg valaki még nem látott lolmacskát: ezek az interneten 2007-ben végigsöpört képek vicces, szándékosan hibás nyelvtanú, csupa nagybetűs mondatokat tartalmaznak, macskák fotói alá írva. Hasonló stílusban készült a LOLCODE is; a nyelv parancsait a tipikus lolmacska szófordulatok ihlették, például a programok a HAI utasítással kezdődnek és a KTHXBYE utasítással végződnek. Érdeklődők az angol Wikipédián találhatnak rengeteg példát. A következő LOLCODE forráskód egy szöveges állományt nyit meg, illetve ha ez nem sikerül neki, hibaüzenetet ad:
HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERRROR!"
KTHXBYE
Tömény szenvedés
A legvégére hagytuk azokat a nyelveket, amelyeknek az a nyíltan bevallott céljuk, hogy a programozó dolgát minél jobban megnehezítsék. (A fentebbi programnyelveknél a brainfuck kivételével ez nem feltétlenül volt szándékos, egyszerűen csak így alakult.) Egyesek a a hasonló nyelvek létezését kihívásnak veszik, és mindent megtesznek, hogy programokat írjanak az adott nyelveken.
Talán a legborzasztóbb ilyen nyelv a Malbolge, Ben Olmstead műve. Olmstead célja az volt, hogy olyan programnyelvet hozzon létre, amin ember nem képes futtatható programot írni, annak ellenére, hogy ez elvileg lehetséges.
Két évbe tellett, mire az első Malbolge program megszületett, és ezt sem ember írta, hanem egy olyan számítógépprogram, ami módszeresen végigpróbálgatott különböző lehetőségeket. Később valódi, ember által készített Malbolge programok is napvilágot láttak, sőt ma már programozási útmutatók is léteznek. Vállalkozó szellemű olvasóink számára sok bátorságot kívánunk... Cikkünket egy kis Malbolge forráskóddal zárjuk, a témával foglalkozó Esolang wikiről.
(aBA@?>=<;:9876543210/.-,JH)('&%$#"!~}|{zy\J6utsrq
ponmlkjihgJ%dcba`_^]\[ZYXWVUTSRQPONMLKJIHGF('C%$$^
K~<;4987654321a/.-,\*)
j
!~%|{zya}|{zyxwvutsrqSonmlO
jLhg`edcba`_^]\[ZYXWV8TSRQ4
ONM/KJIBGFE>CBA@?>=<;{9876w
43210/.-m+*)('&%$#"!~}|{zy\
wvunslqponmlkjihgfedcEa`_^A
\>ZYXWPUTSRQPONMLKJIH*FEDC&
A@?>=<;:9876543210/.-m+*)(i
&%$#"!~}|{zyxwvutsrqpRnmlkN
ihgfedcba`_^]\[ZYXWVU7SRQP3
NMLKJIHGFEDCBA@?>=<;:z8765v
3210/.-,+*)('&%$#"!~}_{zyx[
vutsrqjonmlejihgfedcba`_^]@
[ZYXWVUTSRo
Mint látható, valószínűleg még az egyesekkel és nullákkal is jobban járnánk. Ez a program beolvas egy adatsort, majd kiírja azt. Most
képzeljünk el bonyolultabb programokat... vagy inkább mégsem?
További olvasnivaló, felhasznált irodalom
Esolang wiki – az ezoterikus programnyelvek gyűjtőhelye
Webes brainfuck fordító
Velato
Piet
LOLCODE az angol Wikipédián