Table of Contents
|
Bevezető
lng-intro
Áttekintés
Ide pár fő gondolat kerül a nyelvről, kiemelve elsődleges ill. legfontosabb használati területét.
Telepítés
Ide kerül az, hogy hogyan kell telepíteni a fő komponenseket: a fordítót, esetleg a legfontosabb IDE-t.
Indítás
Ez alapvetően a Helló, világ! program bemutatását jelenti: egy abszolút minimalista program készítése, valamint indításának pontos lépései.
Ha van interaktív mód, akkor azt is itt kell bemutatni; azzal érdemes kezdeni.
Alapelemek
A nyelv alapelemei kerülnek ide:
- utasítások és azok lezárásai (pl. kell-e pontosvessző);
- blokk létrehozása (pl. kapcsos zárójel, behúzás);
- megjegyzések (egy soros, több soros);
Mindezt egy olyan példával illusztrálva, ami:
- tartalmaz egy összeadás függvényt,
- a függvénynek két paramétere van,
- az összeadás eredményét egy változóba teszi,
- visszatér a változó értékével
- a főprogram meghívja az összeadást 3-mal és 2-vel,
- az eredményt egy változóba teszi,
- az eredményt kiírja,
- tartalmaz megjegyzéseket is.
Könyvtárak telepítése
Annak bemutatása, hogy hogyan lehet küldő könyvtárat telepíteni.
Segítség
Ajánlott online tananyagok, ill. egyéb segítség.
IDE
Az adott programozási nyelv legfontosabb integrált fejlesztőeszközeinek részletes ismertetése. Témák:
- debugging
- automatikus formázás
Build rendszerek
Azok a rendszerek, amelyek automatizálják a fordítást, a függőségek kezelését stb.
Egységtesztelés
A unit test részleteit kell itt ismertetni, beleértve az integrációs tesztet is.
Memóriakezelés
Témák:
- szemétgyűjtés
- profiling
Keretrendszerek
Itt csak felsorolás szintjén. Szükség esetén az egyes rendszerek kerüljenek új oldalra.
Nyelvi elemek
lng-lang
Változók
Áttekintés
Ide az adott nyelv változó kezelésével kapcsolatos áttekintő információt kerülnek:
- erősen vagy gyengén típusos-e a nyelv,
- hogyan kell változót létrehozni (szintaxis),
- ha lehet, hogyan kell törölni,
- áttekintés a primitív típusokról.
Számok
Az összes szám típus felsorolása:
- egész és lebegőpontos;
- különböző bájt hosszú,
- előjeles ill. előjel nélküli,
- ha van komplex szám, akkor azt is meg kell említeni.
A számokkal végezhető műveleteket is itt kell felsorolni:
- összeadás,
- kivonás,
- szorzás,
- osztás,
- egész osztás,
- egész osztás maradéka,
- hatványozás.
Egészeken bitműveletek:
- bitenkénti logikai ÉS,
- bitenkénti logikai VAGY,
- bitenkénti logikai tagadás,
- bitek mozgatása jobbra,
- bitek mozgatása jobbra előjelesen,
- bitek mozgatása balra,
Meg kell említeni, hogy a += és a ++ (és hasonló többi) művelet itt használható-e.
Típuskonverziók:
- nagyobb méretű szám konvertálása kisebbe,
- lebegőpontos szám konvertálása egésszé és vissza,
- string konvertálása számmá,
- szám konvertálása stringgé.
Kell egy általános leírás, amelyben a lebegőpontos számábrázolás problémái vannak megemlítve (0.2 + 0.1).
Az alapvető matematikai műveleteket is itt kell bemutatni. Ez döntőrészt valamilyen belső könyvtár használatát jelenti. A következő műveleteket kell felsorolni:
- gyökvonás,
- alap szögfüggvények: szinusz, koszinusz, tangens,
- kerekítések (matematikai, felfelé, lefelé),
- logaritmus (kettes alapú, tízes alapú, természetes alapú)
- konstansok (elsősorban a pi és az e),
- az olyan speciális értékek bemutatása, mint pl. a NaN vagy az Inf.
Véletlen szám generálás is ide kerül, külön megemlítve azt, hogy hogyan generálunk véletlen számot két egész között, pl. kockadobás esetén 1…6.
Szöveg
Ide a karakterek és a stringek kerülnek, azok műveleteivel:
- string felbontása karakterekre,
- karakterek átalakítása stringgé,
- egysoros és többsoros string,
- stringek formázása
- behelyettesítő string,
- két string összehasonlítása, lexikografikusan is,
- alstring,
- kisbetűssé/nagybetűssé alakítás,
- stringek összefűzése adott elválasztóval,
- stringek felbontása adott elválasztó mentén,
- tartalmazás vizsgálat, beleértve azt, hogy egy adott stringgel kezdődik vagy fejeződik-e,
- fehér karakterek törlése,
- csere,
- speciális karakterek, escape szekvencia,
- lekérdezések: kisbetűs-e, nagybetűs-e, csak alfanumerikus karaktereket tartalmaz-e, csak számokat tartalmaz-e stb.,
- reguláris kifejezések.
Logikai
A logikai adattípus részletei kerülnek ide, valamint a leggyakoribb logikai műveletek:
- logikai ÉS,
- logikai VAGY,
- logikai tagadás.
Ha van egyéb logikai művelet (pl. kizáró vagy), azt is itt kell megemlíteni.
Azokat a műveleteket is itt kell felsorolni, amelyek logikai eredményt adnak:
- egyenlőség (különbözőség) vizsgálat,
- egyenlőtlenség vizsgálat,
Ha más típusok is értelmezhetőek logikaiként (pl. 0: hamis, bármilyen másik szám: igaz), akkor azt is itt kell megemlíteni.
Felsorolás
A felsorolás típus kerül ide, melyek gyakori formája enum vagy factor: hogyan kell létrehozni ill. hivatkozni rá.
Tömb
Itt csak a primitív tömbre szorítkozunk, ami nyelvi alapelem. Szinte minden nyelv rendelkezik fejlettebb tömb típussal; arról a gyűjtemények bemutatásánál kell írni. Ide a következő kerülnek:
- tömb létrehozása,
- adott indexű elem lekérdezése,
- adott indexű elem módosítása,
- több dimenziós tömb.
Hatókör
Az adott nyelvben szokásos hatókörök ismertetése. Általában: globális és lokális, vagy adott blokkon belüli. Ha a globális változó speciális kezelést kíván, akkor itt kell megemlíteni. Mivel a korábban már volt egy példafüggvény, ezért azt tudjuk használni.
Feltételkezelés
Egyszerű feltétel
Az if … else struktúra bemutatása történik itt:
- csak egy if ágat tartalmazó példa,
- egy if és egy else ágat tartalmazó példa,
- köztes if-et tartalmazó példa (van, ahol ez elif).
Többszörös választás
Ide kerül a switch…case struktúra. Ahol van mintaillesztés, az is.
Ciklus
Számláló ciklus
A for ciklus kerül ide, egy példával,a melyik elszámol 1-től 10-ig. A yield-et is meg kell említeni, ha van.
Lépkedő ciklus
A foreach kerül ide. Példaként egy gyümölcsökből álló listát hozzunk létre, amelynek elemein végiglépked a program.
Elöltesztelő ciklus
A while ciklus kerül ide, 10-ig számolós példával. Ha van a végén else, azt is itt kell megemlíteni.
Hátultesztelő ciklus
A do … while ciklus kerül ide, ha van.
Ugró utasítások
Ha van goto, azt itt kell megemlíteni.
A break és a continue utasítást is itt kell részletezni, egy-egy példával.
Függvények
Alap függvények
Egy olyan függvény létrehozása (pl. say hello), ami kiír valamit. Nincs bemenő paramétere, se visszatérési értéke.
Arról is szót kell ejteni, ha az adott nyelvben lehet függvényen belül függvényt létrehozni.
Visszatérési érték
A visszatérési érték bemutatása: összeadás példával. Ebben tehát van paraméter is; azt is be kell mutatni.
Paraméterek
Ide a paraméterekkel kapcsolatos további részletek kerülnek:
- alapértelmezett értékek,
- változó paraméterhossz,
- név szerinti paraméterátadás.
Túlterhelés
Ugyanaz a függvénynév, de eltérő a paraméter lista.
Rekurzió
A függvény saját magát hívja. Példa: faktoriális.
Funkcionális programozás
Lehet-e egy függvénynek egy másik függvény a paramétere ill. visszatérési értéke? Ill. milyen megoldások vannak? Példa: kétváltozós művelet, összeadás, szorzás.
Lehet pár szót ejteni a closure-ről.
Ha van currying, arról külön alfejezetben.
Név nélküli függvények
Más néven anonymous függvény. Vannak nyelvek, amelyek ezt is lehetővé teszik; azokban ezt meg kell említeni.
Lambda
Hasonló a név nélküli függvényekhez. Sok esetben nyíl függvénynek (arrow function) nevezik.
Objektumorientáltság
Pár gondolat az adott nyelv objektumorientáltságáról. Itt lehet megemlíteni az adott nyelv null értékét.
Struktúrák
Objektumorientáltság a nyelvek jó részében nincs, de struktúra szinte minden programozási nyelvben van. Ha van, azt itt kel részletezni. Lehet, hogy csak osztály van, külön struktúra nincs, akkor ezt az alfejezetet ki kell hagyni.
Osztályok
Itt kell bemutatni azt, hogy hogyan hozunk létre osztályt:
- konstruktor, ill. ha van, destruktor,
- metódusok,
- osztályváltozók,
- példányosítás.
Egy példát kell létre hozni: személy (Person), akinek van neve és életkora. Az egyik metódus kiírja a személy adatait, egy másik pedig megváltoztatja az életkorát. Néhány személyt példányosítani kell.
Ha a nyelv enged osztályváltozók és metódusok kívülről történő hozzáadását, azt is itt kell megemlíteni.
Öröklődés
Arról szól ez a rész, hogy hogyan lehet örököltetni. Példa: ember - alkalmazott; az alkalmazottnak van munkahelye is.
Itt kell megemlíteni azt is, hogy van-e többszörös öröklődés.
Felüldefiniálás
A leszármazott osztályban hogyan tudunk felüldefiniálni ősosztályban létrehozott függvényt.
Absztrakt osztályok
A absztrakt osztályok mellett itt kell szót ejteni az absztrakt függvényekről is.
Interfészek
Ha van külön interfész típus, akkor arról itt kell írni.
Ha van még egyéb osztály jellegű nyelvi elem (pl. trait, case class), azokat az interfészekhez hasonlóan, külön alfejezetekben ismertessük.
Láthatóság
Az egyes komponensek láthatóságai (pl. public, protected, private, esetleg más is, ha van); mi honnan látszik.
Statikus elemek
Nem az objektumhoz, hanem magához az osztályhoz köthető osztályváltozók és metódusok. A statikus blokkokról is itt kell szót ejteni.
Típuskonverzió
Az alábbi témákat kell itt érinteni:
- statikus és dinamikus típus,
- típus lekérdezése,
- típus konvertálása.
Operátor túlterhelés
Egyes programozási nyelvek megengedik azt, hogy az operátoroknak osztály specifikus jelentést adjunk.
Gyakori metódusok
Példák:
- egyenlőség vizsgálat,
- egyenlőtlenség vizsgálat,
- függvénnyé alakítás,
- stringgé alakítás.
Csomagoló osztályok
idegen szóval wrapper osztályok. Ezek becsomagolják a primitív típusokat, hogy osztályként tudjunk hivatkozi rájuk. Ha a nyelvben van ilyen, azt itt kell ismertetni.
Generikus típusok
A téma általános említése mellett a variancia (invariáns, kovariáns, kontravariáns) témáról is ejtsünk szót.
Kivételkezelés
A try…catch…finally adott nyelvi megfelelőjének az ismertetése kerül ide. Ha a nyelvnek van saját kivétel hierarchiája, az is ide kerül. Valamint az is, hogy hogyan tudunk mi magunk kivételt létrehozni, kiváltani, elkapni.
Annotációk
Ha létezik az adott nyelvben annotáció, akkor az ide kerül.
Források szervezése
Logikai egységek
Egy program forrását általában nagyobb logikai egységekbe tudjuk szervezni. Ennek a neve lehet csomag, névtér, assembly; ebben ezeket kell leírni.
Könyvtárak
Szinte nem létezik olyan programozási nyelv, melyben ne lennének könyvtárak. Ez a fejezet a következőkről szól:
- Külső könyvtárak telepítése.
- Saját könyvtár létrehozása.
- Saját könyvtár publikálása.
Belső könyvtárak
A legfontosabb belső könyvtárak, felsorolás és rövid (egy-két mondatos) ismertetés szintjén.
Külső könyvtárak
A legnépszerűbb külső könyvtárak felsorolása.
Gyűjtemények
lng-collections
Tömb
A programozási nyelvek szinte mindegyike tartalmazza nyelvi elemként a tömböt. Az viszont többnyire nagyon alap dolgokat tartalmaz csak. A programozási nyelvek többsége vagy beépített könyvtárként, vagy külső könyvtárként szokott tartalmazni fejlettebb és hatékonyabb tömb megvalósítást. Itt erről kell írni.
A többdimenziós tömbökről is itt kell írni.
Sok esetben létezik a bájt tömb fogalma: a bájtok felsorolásával alakul ki az eredmény. Azt is itt kell ismertetni.
Lista
Az egyik leggyakoribb gyűjtemény típus a lista. Többnyire a tömb és a lista elkülönül, bár sok hasonlóság van a kettő között. Az alábbi műveleteket kell itt ismertetni:
- lista létrehozása,
- lista bejárása,
- elem hozzáadása,
- hossz lekérdezése,
- adott indexű elem lekérdezése
- adott indexű elem módosítása,
- elem törlése,
- elem keresése,
- listák összefűzése,
- rendezés (és kapcsolódó témák, pl. összehasonlító függvény).
Ha van nem megváltoztatható lista, azt is itt kell ismertetni.
Ha van különböző megvalósítás, pl. tömb alapú lista, láncolt lista, azokat meg kell említeni.
Halmaz
A halmaz szintén gyakori gyűjtemény típus. Ezeket ismertetni kell, valamint a leggyakoribb halmazműveleteket:
- halmaz létrehozása,
- a halmaz elemeinek bejárása,
- elem hozzáadása,
- hossz lekérdezése,
- tartalmazás vizsgálat,
- elem törlése,
- unió,
- metszet,
- különbség,
- egyéb halmazműveletek.
A különböző halmaz megvalósításokra is ki kell térni, úgy mint:
- nem megváltoztatható halmaz,
- sorba rendezett halmaz,
- a beszúrás sorrendjét megjegyző halmaz,
- kiegyensúlyozott keresőfával megvalósított halmaz,
- kupac segítségével megvalósított halmaz.
Szótár
A szótár adattípusnak számos neve van: asszociatív tömb, map, hash. Kulcs-érték párokból áll. A leggyakoribb műveleteket kell itt ismertetni:
- szótár létrehozása,
- adott kulcsú elem beszúrása / megváltoztatása,
- adott kulcsú elem lekérdezése,
- adott kulcsú elem törlése,
- bejárás a kulcs-érték párokon,
- a kulcsok lekérdezése
- hossz lekérdezése,
- két szótár összefűzése.
Ki kell térni az alábbi témákra:
- null kulcs,
- nem megváltoztatható szótár,
- szótár alapértelmezett értékkel.
Bejárók
Idegen szóval iterátorok. A nyelvek többnyire tartalmaznak olyan mechanizmust, amelyben le tudjuk kérdezni, hogy van-e még elem, és le tudjuk kérni a következő elemet. Azt kell itt ismertetni.
Opcionális
Számos programozási nyelvben létezik opcionális típus, ami vagy tartalmaz elemet, vagy nem. Ez eltér attól, hogy egy objektum vagy null vagy nem. Ha van, azt itt kell ismertetni.
Adat keret
Idegen szóval data frame. Van olyan nyelv, ami alapból tartalmazza, de olyan is, ahova külső könyvtárt kell használni. A leggyakoribb adat keret műveleteket kell bemutatni:
- létrehozás,
- oszlop(ok) lekérdezése,
- oszlop hozzáadása
- oszlop megváltoztatása,
- több adatkeret összefűzése közös oszlop alapján (merge),
- rendezés adott oszlop értékei alapján,
- szűrés adott sorokra, adott oszlopérték alapján,
- adott indexű sor kiválasztása.
Egyéb gyűjtemény típusok
Ha vannak egyéb gyűjtemény típusok, azokat külön alfejezetben kell ismertetni.
Folyam
Idegen szóval stream. A leggyakoribb folyam műveleteket kell itt ismertetni:
- folyam létrehozása,
- adott elem megváltoztatása (map),
- szűrés (filter),
- rendezés (sort),
- összevonás (reduce),
- művelet végrehajtása mindegyik elemen (consume),
- alap gyűjtemény típussá alakítás.
Statisztika
Az esetleges statisztikai modult itt kell ismertetni.
Rendszer
lng-system
Argumentumok
A parancssori argumentumok feldolgozása kerül ide.
User input
Beolvasás konzolról.
Operációs rendszer elérés
A operációs rendszerrel kapcsolatos utasítások:
- rendszerparancsok kiadása,
- aktuális munkakönyvtár műveletek (lekérdezés, beállítás).
Dátumkezelés
Műveletek:
- időpont létrehozása,
- aktuális rendszeridő lekérdezése,
- időpont alapadatainak lekérdezése, pl. hányadik nap a héten,
- idő hozzáadása időponthoz (pl. + 2 nap, +3 hónap),
- két időpont közötti eltérés.
Többszálúság
Műveletek:
- szálak létrehozása,
- szálak indítása,
- szinkronizálási problémák (lock, semaphore),
- egyszerűsítések, pl. Future,
- ütemezés,
- stb.
Nyelvi részletek
Ide tartozik a reflection is. Műveletek:
- adott függvény neve, paraméterei, visszatérési típusa,
- változók listája, egyes változók adatai.
Natív
Behívás más programozási nyelvben megírt komponensbe.
lng-text
Szövegkezelés
CSV
Beolvasás CSV-ből kiírás CSV-be.
A témához kapcsolódik az Excel feldolgozás is (bár az nem szövegfeldolgozás).
XML
XM feldolgozása:
- DOM felépítése,
- XPath lekérdezések,
- stream jellegű feldolgozás.
JSON
Objektum konvertálása JSOn formátummá és vissza.
HTML
HTML feldolgozás.
Sablonkezelés
Behelyettesítés sablonokba. (Ilyen pl. az Apache Velocity vagy a Mustache.)
Lokalizáció
Közvetlen kiírás helyett kulcs és szótár használata.
Naplózás
Angolul logolás. A következőket tartalmazza:
- naplózó keretrendszerek,
- naplózó szintek: fatal, error, warning, info, debug, trace (stb.),
- naplózás formátuma,
- naplózás eredménye (fájl, konzol).
lng-graphics
Grafikus felület
Vastag kliens
Itt azt kell bemutatni hogy hogyan lehet vastag kliens létrehozni adott nyelvben (már ha lehetséges).
Komponensek:
- folyószöveg,
- paragrafusok,
- felsorolás,
- felirat,
- nyomógomb,
- egysoros beviteli mező,
- jelszó,
- többsoros beviteli mező,
- jelölő négyzet,
- rádiógomb,
- csúszka,
- táblázat,
- fül,
- menü,
- vászon,
- videó,
- zene,
- stb.
Vászon műveletek:
- háttérszín,
- kép betöltése,
- rajzolás (pont, egyenes, kör),
- mozgatás,
- stb.
Elrendezések:
- táblázatos,
- folyamatos,
- irány,
- kártya,
- stb.
Események:
- kattintás,
- billentyű műveletek (lenyomás, elengedés),
- időzítés,
- stb.
Webes kliens
A fentiekhez hasonló.
Mobil alkalmazás
A fentiekhez hasonló. Itt megjelennek pluszban a mobil specifikus elemek.
Diagramok
Fontosabb diagram típusok:
- oszlopdiagram (vízszintes, függőleges, egymás mellé helyezés, egymásra helyezés; hisztogram),
- vonaldiagram (beleértve a terület diagramot),
- kördiagram (torta, fánk),
- fatérkép (treemap),
- térkép,
- stb.
Külső rendszerek
lng-external
Fájlkezelés
Műveletek:
- fájl létének ellenőrzése,
- írás fájlba,
- hozzáfűzés,
- fájl törlése,
- olvasás fájlból,
- stb.
Szerializáció
Objektum átalakítása tárolásra ill. továbbításra. A marshalling-unmarshalling folyamatot kell itt bemutatni.
Adatbázis elérés
Műveletek:
- csatlakozás különböző adatbázisokhoz (pl. MySQL, H2 stb.),
- SQL parancsok kiadása,
- NoSQL,
- stb.
Nagy mennyiségű adatformátum
Pl. HDF5 vagy egyéb big data fájlok kezelése.
Távoli metódushívás
Pl. CORBA, WSDL stb.
Webszerver létrehozása
Kétféle lehetőség:
- REST API (praktikusan JSON adatformátum),
- általános web szolgáltatás.
Webes lekérdezés
Az előző kliense.
Üzenetkezelés
Kapcsolódás a különböző queue szolgáltatásokhoz (pl. ActiveMQ, HornetQ). Főbb lehetőségek, a legfontosabb parancsokkal:
- request-response:
- üzenet küldése
- üzenet fogadása
- queue:
- adat küldése queue-ba,
- kiolvasás queue-ból
- topic
- feliratkozás/leiratkozás
- üzenet küldése
- üzenet fogadása
Itt lehet még megemlíteni a külső stream szolgáltatásokat is, pl. Kafka.
Egyéb rendszerek
Bármi egyéb külső rendszer ide kerül.
Biztonság
Az előzőekkel szorosan összefügg. Témák:
- adatok titkosítása,
- autentikáció,
- autorizáció.