Programozás sablon
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ó.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License