Kódolás órája az Óbudai Egyetemen 2023

Az Hour of Code egy 2013-ban kezdődött globális mozgalom 180-nál több országban. Több tíz millió embert érint világszerte. Célja, hogy mindenki megismerkedjen a programozás alapjaival, egy órányi közös tanulás alkalmával. Az Óbudai Egyetem Neumann Informatika Karán 7. alkalommal került sor a Kódolás órája rendezvényre 2023. december 18-án.

A rendezvény weboldalán megtalálható néhány hívószó, szemléletformáló gondolat:

  • Miért tanuljak programozni? Azért, mert megtanít gondolkodni! A programozás egy tanulható, elsajátítható készség, amely fejleszti a logikai érzéket és a rendszerszemléletet.

  • Világszerte, így hazánkban is, olyan általános igény van informatikusokra, amelyet az álláskeresők tömege sem tud kiszolgálni.

  • A munkaerőpiacon is értékes tudás a programozás ismerete.

Korábbi saját rendezvényeink (Programozd a jövőd! – IT a jövőd, STEM nyári tábor, Digitális Témahét, Kutatók éjszakája, CodeWeek.eu) résztvevői közül toboroztunk egy csapatot, regisztráltunk és részt vettünk a Kódolás órája rendezvényen.

9 órakor kezdődött a plenáris megnyitó.

9:30-kor indult a feladatmegoldás a NIK számítógépes laborjaiban. Kezdő és haladó szintű feladatok, kihívások, számítógépes játékokban való vezérlés, stratégia tervezése, megvalósítása, tesztelése. Mindez igény szerint egyénileg vagy kiscsoportosan zajlott. A használt online felület élményalapú tanulást, gamifikációt biztosított. Többféle programozási nyelv közül lehetett választani, attól függően, hogy kinek milyen előismeretei voltak. A többség Python vagy JavaScript nyelveket választott.

11 órától – újra plenárisan – a NIK bemutatkozására került sor. Dr. Kertész Gábor – a NIK kutatási dékánhelyettese – ismertette a kar képzéseit, az alapképzések felépítését és a választható specializációkat. Természetesen a nyílt napokra jellemző erősségeink, hallgatók támogatása, ipari kapcsolatok, kari kutatások, munkavállalás hallgatóként kötelező elemek sem maradtak ki.

12 órától két ismeretterjesztő előadás következett. Az első előadás – a NJSZT részéről – a Neumann 120 rendezvénysorozat alkalmából Neumann János életét és munkásságát összegezte. Dömölki Bálint Neumann, a polihisztor című kutatásából megtudtuk, hogy Neumann összesen hat különböző szakterületen publikált. Ezek: „tiszta” matematika; analízis, alkalmazott matematika; logika, halmazelmélet; fizika, kvantummechanika; számítástudomány; gazdaságtan, játékelmélet. A második előadás – a NIK részéről – egy kategóriájában nyertes TDK (Tudományos Diákkör) munka ismertetése volt. Csippán György – a NIK hallgatója mesterséges intelligencia szakirányon – tartotta Szavakon túl: beszédvizualizáció MI segítségével, az elragadó vizuális média létrehozásáért címmel. Ismertette a beszélt mondatok rögzítéséhez, videó létrehozásához, valós idejű futtatás biztosításához kötődő metodológiáját, valamint felhasznált két generatív modellt, amelyeket össze is hasonlított kutatómunkájában.

Végül 13 órától a résztvevők megtekintették – szakszerűen felkészült tárlatvezetővel – a kar épületének 1. emeletén található IT Evolúció 2.0 című kiállítást. Az 52 db vitrinben található eszközök az alábbi témakörökhöz, szakterületekhez kötődnek: nyelv és beszédtechnológia, írás és írástechnológia, műszaki rajzolás eszközei, könyvnyomtatás, hang- és képrögzítés, elektromos távközlés, számítógépek, személyi számítógépek, az internet hazai megvalósítása, mobil és okos technikák. A kiállítás Dr. Kutor László, az Óbudai Egyetem címzetes egyetemi tanárának több mint 40 évnyi gyűjtő és rendszerező munkájával kifejlődött magángyűjteményéből jött létre.

Táblázatos hőtérkép készítése

Ebben a projektben táblázatos hőtérképet készítünk Java és JS nyelveken. Java programot készítünk az adatok véletlenszerű előállításához és a sablon alapján történő HTML fájl generálásához. JavaScript program fogja a grafikont megjeleníteni a weboldalon. Tervezünk, kódolunk, tesztelünk. Lássunk hozzá!

Mi az a hőtérkép?

A hőtérkép (heatmap) olyan grafikon, amely könnyen áttekinthetővé tesz nagy mennyiségű adatot úgy, hogy kategorizál/csoportosít és az előfordulások tartományai alapján különböző színeket rendel azokhoz. A szín hozzárendelése egy intervallumból történik. Például a világosabb a ritkább, a sötétedő szín az egyre gyakoribb értékeket jelenti. A tipikus hőtérkép kétdimenziós és az előforduló adatok mennyiségét, azok arányait, eloszlását, szóródását (nem szórását), gyakoriságát jeleníti meg. A hőtérkép gyors vizuális összefoglalást, áttekintést biztosít. A projekt során sorokból és oszlopokból álló táblázatos hőtérképet készítünk.

A táblázatos hőtérkép nem összekeverendő a következő két megközelítéssel:

  • Ha az adatok lokációhoz kötődnek és térképen jelennek meg, akkor azt tematikus térképnek nevezzük. Erről már blogoltam korábban, lásd: Céline Dion – Courage World Tour, amikor az énekesnő USA-beli államokban előforduló koncertjeinek számát jelenítettem meg. Ehhez hasonlók az amerikai elnökválasztás során használt tematikus térképek, amelyek a(z egyes) jelöltek szavazatainak arányát ábrázolják meg szintén államonként.
  • Ha az adatok webergonómiához, bannervaksághoz, inkább fókuszban lévő tartalmakhoz, felhasználói élmény (UX) tervezéshez kötődnek, akkor a weboldal grafikus elemeihez (azok pozíciója) alapján rendelünk hozzá színeket attól függően, hogy mennyi ideig nézi azt a felhasználó.

Mi a feladat (koncepcionálisan)?

Adott egy konditerem, amely hétköznapokon egy megadott időintervallumban használható. Ehhez kulcsot kell felvenni és leadni. Az első belépő nyitja és az utolsó távozó zárja az ajtót. A teremhasználat offline nyilvántartott, így nehézkes bármiféle kimutatás, statisztika. A „menet közbeni” jövés-menést nem tudjuk követni. Természetesen adott számos szabály (felelősség, biztonság, balesetvédelem, létszámkorlát), amit most nem részletezek.

Elhelyezünk az ajtó mellett, belülről egy belépéshez és egy távozáshoz tartozó QR kódot. Készítünk egy egyszerű mobil alkalmazást és megkérjük a konditermek használóit, hogy belépéskor és távozáskor „csekkoljanak”. Anonim gyűjtjük a belépések és távozások időpontját (valahol egy szerveren, bármilyen fájlban, adatbázisban).

A konditermek használatára vonatkozó összesített adatokat könnyen átlátható módon szeretnénk weboldalon megjeleníteni: heti bontásban, a nyitva tartás időszakát órás blokkokra bontva az igénybevételtől függően jelenjenek meg az adatok táblázatos hőtérképen.

Ez az állapot átmeneti. Segítheti a konditermekbe tervezett – egyéni használattól független – események ütemezését. Ezeket akkor lenne célszerű időzíteni, amikor nem, alig, vagy kevésbé használt, foglalt az adott konditerem. A továbbfejlesztés következő állapotában könnyen lecserélhető a QR kód RFID alapú proximity kártyára, proxy kulcstartóra: először csak a jelenlét nyilvántartásához, később akár az ajtó nyitásához is.

Mit valósítunk meg mindebből Java nyelven?

Egyetlen konditeremre fókuszálunk. A hétköznaponként nyitva tartás legyen 16 órától 21 óráig. Aki edzésre jön, véletlenszerűen 20 és 40 perc közötti időszakot tölt a konditeremben. 16 órától lehet belépni. Az utolsó belépés 20:40-kor lehet (érdemes). 21 órakor mindenki elhagyja a konditermet. Nem fordul elő, hogy valaki nem jelzi a belépését vagy a távozását. Mivel anonim a nyilvántartás, így elegendő a dátum/időhöz, időbélyeghez egyetlen állapotot tárolni: be vagy ki. Valaki belépett nyitáskor vagy valamikor utána, majd távozott 20-40 perccel később, de legfeljebb záráskor.

A szükséges adatokat véletlenszerűen állítjuk elő. Egy hétre vonatkozó adatokat generálunk. Ezek a fenti paramétereknek megfelelő, összetartozó belépéshez és távozáshoz köthető időpontok. Kiegészítve a napok ciklusban való léptetésével hétfőtől péntekig. Az adatokat feldolgozva, összegyűjtve, csoportosítva, kategorizálva olyan (kimeneti) formátumra alakítjuk, amely kompatibilis a táblázatos hőtérkép adatmodelljével (bemenetével). Mindez Java nyelven valósul meg.

Mi történik JavaScript nyelven?

A webes megjelenítéshez szükséges egy HTML fájl, amelyben beágyazva található meg egy téglalap alakú területként megjelenő táblázatos hőtérkép. Ez sokféleképpen testre szabható: adható hozzá felirat, beállítható a sorokhoz és oszlopokhoz tartozó szöveg és a táblázat celláiban megjelenő értékek, adott a lebegő, az egér kurzor helyzetétől függő – cellánként különböző – jelmagyarázat, és persze mindennek van formátuma (betűtípus, méret, szín, igazítás, kitöltés). A fix, adatoktól nem függő beállításokat tartalmazó weboldalt sablonként elkészítjük. Mindez JavaScript nyelven történik. Ezután Java program a weboldal sablonját kiegészíti (cseréli, behelyettesíti, feltölti) a szükséges adatokkal.

Hogyan alakul az időintervallumok átfedése?

A konditerem használatának alakulását követjük, amihez táblázatos hőtérképet készítünk. Ehhez a nyitva tartás időintervallumát órás blokkokra bontjuk. Blokkonként összesítjük a jelenlétet, azaz megszámoljuk, hogy éppen akkor hányan veszik igénybe a konditermet, hányan vannak jelen/benn.

A konkrét paraméterektől függően az alábbi képen látható 3 eset egyike fordulhat elő. A és B jelöli az órás blokk elejét és végén, tehát ez 60 perces intervallum. Tarthat például: 16:00:00-16:59:59-ig. X és Y jelöli a jelenlét intervallumát, azaz a belépés és távozás időpontjait. Ez 20 és 40 perc között alakul. Haladjunk balról jobbra az ábrán.

Az első esetben ugyanarra az órára esik a belépés és a távozás. Ez az eset egyértelmű. A másik két esetben átfedés van több órás blokk között, mert különböző órára esik a belépés és a távozás. El kell dönteni, hogy ekkor hogyan összesítjük a jelenlétet. Válasszunk az alábbi két módszer közül:

  • Az első módszer szerint mindkét órához – ahol átfedés van – összesítjük a jelenlétet 1-1 főként, hiszen ha nem is végig, de jelen volt mindkét órás blokkban. Például: egy 16:50:00-17:20:00 jelenlétet a 16 és 17 órás blokkban is figyelembe veszünk.
  • A második módszer szerint időarányosan tesszük mindezt, azaz súlyozunk aszerint, hogy milyen hosszú jelenlét esik az egymást követő órákban. Például: egy 16:50:00-17:20:00 jelenlétet a 16 órás blokk esetében egyharmad, a 17 órás blokk esetében kétharmad a jelenlét adott órára eső aránya, súlya.

Az első módszert valósítjuk meg. Ez a döntés jelentősen befolyásolja, hogyan kell értelmezni később az elkészült táblázatos hőtérképet.

Objektumorientált tervezés

A koncepcionális terv alapján modellezünk. A szükséges adatok tárolására és alapfunkcióira fókuszálunk. Az osztály tárolja az összetartozó adatokat és megvalósít rajtuk értelmezhető műveleteket. Az időintervallum/időtartam kezelését a Duration ősosztály oldja meg. Tárolja a start és stop – naptól független időpontokat tároló – adatok és a rájuk vonatkozó FORMAT – megjelenítéshez kötődő – konstanst. Biztosítja a szükséges műveleteket: konstruktor, getterek, megvalósítja az időintervallumok átfedését az isOverlapped() függvénnyel, valamint ad szöveges reprezentációt a toString() függvénnyel. Az ősosztályból öröklődik az utódosztály. A DurationMap osztály a naptól független időpontokat kibővíti a hozzájuk tartozó day nappal, valamint képes tárolni az összesített, megszámolt jelenlétet a count változóban. Részt vesz a megszámolás folyamatában azzal, hogy lépésenként meghívható az  incrementCount() eljárása.

A java.time csomagbeli LocalTime osztály képes a dátumtól független, napon belüli időpont tárolására és biztosít néhány alapvető funkciót a kezelésükre. Az adattárolás a napon belül eltelt időn alapul és nekünk (bőven) elegendő a másodperc alapú megjelenítés. A DateTimeFormatter alkalmas ezen időpontok formátumának tárolására, például óó:pp:mm alakban.

A Duration osztályból annyi objektum készül, ahány jelenlét adódik véletlenszerűen. Akár több száz is lehet. A DurationMap  osztályból generált objektumok száma jóval kevesebb. Heti 5 napra, napi 5 órás blokkra 25 db készül belőle.

A vezérléshez kötődő osztály tervezését nem részletezem.

Íme a Java forráskód

A Java forráskód minden megtervezett funkciót megvalósít, támogatva a koncepciót. Most nem részletezem a működését.

A véletlenszerűen előállított adatok

A lista görgethető:

A weboldal sablonja

HTML és JavaScript nyelvű forráskód vegyesen. A Java program a fájl 31. sorában lévő ##HEATMAP_DATA## szöveget cseréli le a táblázatos hőtérkép megjelenítéséhez szükséges véletlenszerűen előállított adatokra.

További részletekért, beállításra vonatkozó, testre szabási lehetőségekért érdemes tanulmányozni az AnyChart dokumentáció Heat Map Chart fejezetét.

Az eredmény

Az előállított weboldalt böngészőben megjelenítve ezt kaphatjuk eredményként (vagy a véletlenszerűen generált adatoktól függően hasonlót):

A táblázatos hőtérkép hasznos eszköz. Elemezve könnyen döntéseket hozhatunk a koncepcionális tervezés során vázoltak alapján.

Továbbfejlesztési lehetőségek

  • Lehetne több konditerem is. Ekkor rögtön felmerül az összehasonlítás lehetősége, egyben igénye is.
  • Lehetne hétköznaponként eltérő a konditerem nyitva tartása.
  • Az időpontok kezelési precíz. Egy másodpercen múlik, hogy nem fedik át egymást. Az időpontok megjelenítése lehetne óó:pp alapú is.
  • Az időintervallumok jelenleg állandóak, mindig 1 órásak. Könnyen megoldható lenne, hogy dinamikusak legyenek: például a népszerűbb időszakok felbonthatók lennének két 30 perces blokkra. A népszerűség értelmezhető minden nap (héten) másképp. Egyszerű képlettel: átlag felett, medián felett.
  • Általánosíthatnánk a létesítménygazdálkodáshoz kötődő erőforrást nem (feltétlenül) helyhez kötött, mozgatható, kölcsönözhető eszközökre is: hangszer, projektor, stúdió felszerelés.
  • Másképpen valósulna meg az adatgyűjtés, ha egyetlen QR kód állna rendelkezésre és back-end helyett a „mobil alkalmazás emlékezne” a belépésre és távozásra. Ez jelentheti legalább az aznapi adatokat, de tárolható historikusan is.
  • Hibát is kellene, lehetne kezelni. Például a kiléptetés lehetne automatikus a nyitva tartás végén. A jelenlét igazából igaz-hamis állapot: ha eddig hamis volt és történt valami, akkor igaz lesz és fordítva. Ha van mögötte állapotmegőrző emlékezet (mivel programozunk, így nyilvánvalóan azonnal objektumra gondolunk, vagy annak valamilyen fájlba vagy adatbázisba történő leképezésére).
  • A nyilvántartás könnyen megvalósítható személy hozzárendelésével, azaz lehetne nem anonim is a jelenlét.
  • Egymást átfedő időpontok esetén (ha nincsenek a hosszukra vonatkozó korlátozó feltételek) általánosítva 6 eset fordulhat elő. Például ha a jelenlét lehetne 60 percnél hosszabb, de 120 percnél rövidebb is, akkor nem lenne elegendő a fenti 3 esetet kezelni a jelenlét összesítése során.
  • Valósítsuk meg az időintervallumok átfedésénél bemutatott második – időarányos – módszert!
  • A napi jelenlét 20 fővel valósul meg a programban. Lehetne ez a paraméter is véletlenszerű, például 15-30 fő között, vagy esetleg népszerűbb a péntek.
  • Jelenleg a táblázatos hőtérkép statikus. Csak a (befejezett egész heti) múltbeli adatokat tudja megjeleníteni. Az aktuális, jelenlegi állapothoz szinkronizáció, ütemezés kell. Óránként (a blokkok végén automatizáltan), de akár 5 percenként is aktualizálható a hőtérkép.
  • A táblázatos hőtérkép megjelenítése önálló weboldal helyett beágyazható widget felületén is történhet.
  • Többféleképpen is készítettünk már grafikonokat, íme néhány a szakmai blogunkból: Kockadobás kliens-szerver alkalmazás, Sankey-diagram készítése, JFreeChart grafikon készítése.

A bejegyzéshez tartozó forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A projektfeladat – attól függően, milyen szinten valósítjuk meg – kapcsolódhat több tanfolyamunk tematikájához. A fenti forráskód a Java SE szoftverfejlesztő tanfolyam 17-28. óra: Objektumorientált programozás és a 37-44. óra Fájlkezelés alkalmaihoz kötődik. Ha többrétegű, elosztott alkalmazásként valósítjuk meg, akkor a Java EE szoftverfejlesztő tanfolyam a 9-16. óra: XML és JSON feldolgozás, dinamikusan generált weboldalba beépítve a 33-40. óra: Java Server Pages alkalmaihoz kapcsolódik. Ha fájlok helyett egyszerű adatbázist használnánk, akkor a Java SE szoftverfejlesztő tanfolyam 45-52. óra: Adatbázis-kezelés JDBC alapon, ha objektumrelációs leképezéssel oldanánk meg, akkor a Java EE szoftverfejlesztő tanfolyam 25-32. óra: Adatbázis-kezelés JPA alapon alkalmakhoz kötődhet.

Kutatók éjszakája 2023

Kutatók éjszakája logó

Kutatók éjszakája logó

A Kutatók éjszakája nemzetközi rendezvénysorozat 2005-ben indult. Magyarország 2006-ban csatlakozott. Azóta évről-évre egyre több intézmény nyitja meg hazánkban kapuit, szervez érdekes programokat, sok-sok településen, több száz helyszínen, több ezer eseményt meghirdetve sok tízezer érdeklődő/résztvevő látogatónak biztosít tartalmas estét.

Bár a kezdeményezés elsősorban a kutatói pálya népszerűsítését szolgálja, ezért leginkább a tizen- és huszonévesekre számít, az események vonzók és elég érdekesek ahhoz, hogy a kisgyerekektől a legidősebbekig mindenki megtalálja a számára izgalmas programokat. Korábban nagyobb felsőoktatási intézmények és kutatóintézetek szerepeltek döntően, de az utóbbi néhány évben egyre több kisebb intézmény, tehetséggondozással foglalkozó középiskola, cég, egyesület is csatlakozott a rendezvényhez. A Kutatók éjszakája rendezvény minden meghirdetett programja ingyenes.

Rendezvényünk plakátja

Az it-tanfolyam.hu 2023-ban is hirdetett programokat az eseményhez kötődően. Programjainkat elsődlegesen követőinknek, aktív hallgatóinknak és az alumni csoportunkban hirdettük meg, de persze nyílt rendezvényként valósult meg. Az eseményekre regisztrálni kellett a weblapon. A regisztrációs időszak másfél hétig tartott, szeptember 18-28-ig. Programjainkra szeptember 29-én 21:00-23:55-ig került sor.

21:00-21:30 – Kiss Balázs: Az ipari forradalom evolúciója: ipar 4.0 és 5.0, okos gyár
Az előadó áttekinti az ipari forradalom evolúcióját. Címszavakban: ipar 1.0 – gépek gőzzel/vízzel és ipari termelés (1780), ipar 2.0 – villamosítás és sorozatgyártás (1870), ipar 3.0 – automatizálás számítógépekkel/elektronikával (1970), ipar 4.0 – digitális transzformáció, AI, IoT, adatelemzés, kiberfizikai rendszerek (jelenleg), ipar 5.0 – emberközpontú megközelítés, fenntarthatóság, fokozott ellenálló képesség (legújabb iteráció). Az Európai Parlament 2016-os állásfoglalásából kiindulva, az okos gyárak koncepciójának ismertetésével folytatva, valamint praktikus tanácsok is előkerülhetnek zárásként – igény szerint. Az előadó évek óta foglalkozik okos architektúrák fejlődésének történetével, koncepciójával, szoftveres integrációjával és konfigurációjával. Szívesen osztja meg gondolatait, kutatási eredményeit a témáról, beszél saját kisebb és nagyobb léptékű okos projektjeiről. A program a Java tanfolyamaink orientáló moduljához kötődik.

21:35-22:10 – Kaczur Sándor: Algoritmusok vesebeteg-donorok párosítására
Hogyan működik 2007 óta Nagy-Britanniában a vesebeteg-donorok párosítása? Sima csere 2 pár esetén adódik. 3 pár esetén körbeadják a vesét egymásnak – ez már jóval összetettebb. A felépített óriási adatbázisban akár több száz lehetőség is adódhat. A probléma megfelelő párosítási algoritmus és számítógép nélkül, pusztán emberi erővel megoldhatatlan lenne. Az implementált algoritmus futási ideje mindössze 30 perc. A párosítást követően a következő lépés a műtétek egyidejűsége, és a donor szervek „utaztatása” minden lehetséges földi, vízi, légi úton és lehetséges közlekedési eszközzel. Hogyan működik mindez a gyakorlatban? Milyen korlátok, problémák vannak? Milyen adatok alapján dönthető el a betegek „kompatibilitása”? Ezek közül mi kapcsolódik az egészségügyhöz és a szállításhoz? Az előadó próbál válaszokat adni, de lehet, hogy a végén több lesz a kérdés, mint a válasz. Vajon egyáltalán felmerül a párosítási algoritmus hatékonysága ekkora társadalmi hasznosság mellett? A tavalyi előadás kibővült: újabb algoritmusokkal egészült ki. A program a Java tanfolyamaink orientáló moduljához kötődik.

22:15-22:40 – Kaczur Sándor: Naprendszer szimuláció: elméleti háttér, objektumorientált tervezés, megvalósítás, tesztelés Java és JavaScript nyelveken
Az előadó ismerteti a feladatspecifikációt, ennek objektumorientált tervezését, a térben elhelyezkedő objektumok pozíciójának leképezését a síkra, a tömegvonzás közelítő kiszámítását a modelltérben, és a megjelenítést. A megvalósítás során különböző technológiákat hasonlít össze, például HTML5 canvas és JavaScript, Java2D. A felépítés a szoftverfejlesztés klasszikus lépéseinek megfelel. Némi tesztelés is előkerül. Adódnak továbbfejlesztési lehetőségek is. Elengedhetetlen némi matematikai, fizikai háttér áttekintése látványosan (animáció, szimuláció, gamifikáció) történik. A program a Java SE szoftverfejlesztő tanfolyamunk tematikájához kötődik.

22:45-23:10 – Falus Anita, Tóth-Szabó Tamás, Horváth Zoltán Miklós: Karrierváltás után – az álláskeresés és néhány hónap KKV-s tapasztalatai szoftverfejlesztőként
Mennyire könnyű ma szoftverfejlesztőként elhelyezkedni szakirányú felsőfokú végzettség nélkül? Milyen kihívásokkal találkozhatunk a felvételi folyamat során? Milyen elvárásokat támasztanak a munkaadók egy junior szakemberrel szemben? Hogyan telnek a beilleszkedés után a hétköznapok junior fejlesztőként kis létszámmal működő informatikai profilú kisvállalkozásnál? A tanfolyamainkon 2021-ben és 2022-ben végzett előadók karrierváltó junior szakemberként személyes tapasztalataikról számolnak be és válaszolnak a kérdésekre. A program a Java tanfolyamaink orientáló moduljához kötődik.

23:30-23:55 – Szegedi Kristóf, Hollós Gábor: Gondolkodjunk logikusan!
Az előadás során áttekintjük az intelligencia, a kreatív problémamegoldó és logikus gondolkodás összefüggéseit és izgalmas feladatokból válogatva közösen megoldunk néhány fejtörő feladatot. Néhány példa: Hány éves a kapitány?CHOO + CHOO = TRAIN, Logikus gondolkodás teszt. Minden feladathoz adunk rávezető példákat – ha esetleg egyik-másik nem menne, akkor ebből ki fog derülni, hogy miket érdemes gyakorolni ahhoz, hogy sikerüljön.

 

A programjaink népszerűek voltak. 43 érdeklődő látogatót fogadtunk. Többségükben végig velünk tartottak. Elgondolkodtató párbeszéd alakult ki a vesebeteg-donorok párosításáról, valamint sok-sok kreatív ötlet került elő a logikus gondolkodás program fejtörőivel kapcsolatosan. Néhányan megragadták a lehetőséget, hogy több budapesti helyszínt is meglátogassanak – ahogyan ez megszokott a Kutatók éjszakája rendezvényeken hosszú évek óta. Kellemes hangulatban, tartalmasan töltöttük együtt az időt, aminek igazán örülök.

Szeretném megköszönni az előadó oktató kollégák és alumni hallgatóink színvonalas munkáját, igényes felkészülését. Köszönjük mindenkinek, aki részt vett a Kutatók éjszakája 2023 rendezvényünkön. Az előadások prezentációit tanfolyamaink hallgatói számára – a témához kapcsolódó témakörökhöz, ILIAS-ra feltöltve – tesszük elérhetővé.

Programozási nyelvek népszerűsége

programming-language-java-logo

programming-language-java-logoIgen érdekli a programozást most tanulni kezdőket, a magukat átképzőket és a cégeket is, hogy aktuálisan melyek a legkurrensebb programozási nyelvek, illetve melyeket használják rendszereik fejlesztéséhez.

Az alábbiakban felhasználási területet és egyéb szempontokat figyelembe véve tekintjük át a programozási nyelvek népszerűségének mérését, illetve azok között azt, hogy a Java jelenleg hol helyezkedik el, hogyan változott az elmúlt néhány évben népszerűsége. Mindez a kezdő programozóknak iránymutatás, a haladóknak megerősítés lehet. Láthatják a Java használatának trendjét, és hogy „jó nyelvre tettek”, hosszú távon is megtérül befektetésük magas szintű elsajátításába. A blogbejegyzés végén napjainkban a webprogramozáshoz használt legkedveltebb nyelveket tekintjük át és a profi webfejlesztővé válás javasolt hét lépését.

Tartalom

A programozási nyelvek iránti érdeklődés

A Google szerint a legkeresettebb programozási nyelvekre angolul keresve a találatok száma 2019 augusztusának közepén – amikor a többség nyaral és lassan a fű sem nő –, az alábbi volt:

  • programming languages toplist: 586 * 103;
  • top programming languages: 159 * 106.

A Google Trends segítségével azt is vizualizálhatjuk, hogy a Föld és Magyarország mely részein kiugróan magas például a „programming” szövegre keresés, illetve hogy ahhoz milyen kapcsolódó témakörökre keresések kiugróak. Például: https://trends.google.com/trends/explore?q=programming vagy https://trends.google.hu/trends/explore?geo=HU&q=programming. A témakörök között világviszonylatban a nyelvek közül 4-5. helyen megjelent a C, illetve a Python. Magyarországon 5. helyen áll a Kotlin.

google-trends

A „programming” kifejezésre világszerte (balra) és Magyarországon (jobbra),
az elmúlt egy évben, minden kategóriában,
internetes keresővel végzett keresések a Google Trends szerint
(2019. augusztus 18.)

A legszélesebb körben használt programozási nyelvek a legfelkapottabbak a kezdő programozók körében, hiszen nagy az ezeket ismerők iránti kereslet. De nem egyszerű meghatározni, hogy mely programozási nyelveket használják a legszélesebb körben, illetve a nyelvek közötti választás attól is függ, hogy milyen felhasználási terület vagy egyéb szempont szerint választanak a megbízók, mit igényel fejlesztési projektünk.

Felhasználási területüket nézve a nyelveknek, futnak ma is vállalati adatközpontokban, nagygépeken 30-40 éve Cobolban írt banki rendszerek. A Fortran használata erős a számítástechnikában és a mérnöki munkában. C-t érdemes használni beágyazott alkalmazások és operációs rendszerek írásához. És vannak programozási nyelvek, amelyek sokféle területen használhatók. További szempont lehet a programozási nyelvek elterjedtségének vizsgálatára a befektetendő programozói óra, szükséges kódsor, CPU-felhasználási igény stb.

A programozási nyelvek jellemzői és a közülük való választás

A programozási nyelvet, vagyis olyan jelölésrendszert, amely segít az algoritmusként azonosított programok megírásában, már a számítógépek feltalálása előtt is alkottak, azóta pedig több ezer született, illetve folyamatosan hoznak létre újakat.

A nyelvek több szempont szerint csoportosíthatók, például általános célú és specifikus nyelvek; számítási modell szerinti (Neumann-elvű, automata elvű, funkcionális, logikai) nyelvek; alacsony és magas szintű nyelvek. A különböző csoportokon, a különböző célokra írt nyelvek között is eltérő tulajdonságokkal és erősségekkel rendelkeznek a nyelvek. Például batch nyelv helyett nem fogunk XML-alapút választani, gépközeli programozáshoz sem objektumorientáltat, vagy szóelemző nyelv helyett szkriptkezelőt.

A mai hardver-/szoftverfejlesztők lényegesen több programozási nyelvvel dolgoznak, mint elődeik. Az informatikai cégek is számos nyelvet alkalmaznak, hogy a különféle típusú alkalmazásaikat elkészíthessék. A választható nyelvek sokfélesége miatt esetenként nem kis feladat megtalálniuk a megfelelő nyelveket ismerő programozókat.

A programozási nyelvek jellemzőire tulajdonságaikkal hivatkozhatunk, amelyek közül a legfontosabb három az absztrakciók, a funkció és cél, valamint a kifejezőerő [forrás: Martin, 2015].

  • Absztrakciók. A programozási nyelvek rendelkeznek szabályokkal – például az adatszerkezetek megadásához/jelöléséhez, a parancsok végrehajtásához –, amelyeket absztrakcióknak nevezünk. Az absztrakció elve bizonyos esetekben az absztrakciók felhasználására adott ajánlásokból származik.
  • Funkció és cél. A programozási nyelv teljes meghatározásába beleértjük azt a dokumentációt vagy hardveregységet is, amelyet az adott nyelvre optimalizáltak. Ez is oka annak, hogy a programozási nyelvek eltérnek az emberi interakció nyelveitől.
  • Kifejező erő. A nyelveket többnyire az általuk kifejezhető számítások alapján osztályozzák.

A programozási nyelvek változatossága miatt a fejlesztőknek nehézséget okozhat a használandó(k) kiválasztása. Az alábbiakban a választást segítő tényezőket tekintjük át: célplatform, nyelvtartomány-egyezés, hatékonyság, rugalmasság és teljesítmény, könyvtárak elérhetősége, projekt mérete, kifejezőképesség és gyártási idő, eszköztámogatás [forrás: Martin, 2015].

  • Célplatform. Először is azt kell meghatározni, hogy milyen PC-s és/vagy mobilplatformon, beágyazott rendszerben stb. kell futnia a készítendő programnak. Ha változatos platformokon, akkor fordítókat, interpretereket is kell futtatni.
  • Nyelvtartomány-egyezés. A nyelvet a meglévő problématartomány alapján kell kiválasztani. Ehhez megvizsgálhatjuk azt a nyelvet, amelyet az adott szakterületen, iparágban mások használnak, vagy megpróbálhatunk a problémánkat megoldandó kódot is keresni.
  • Hatékonyság. Hogy a nyelvi platform gyors legyen, a nyelvvel együtt futó compilernek is hatékonynak kell lennie.
  • Rugalmasság és teljesítmény. A választott nyelvnek elég rugalmasnak kell lennie további programok vagy funkciók implementálásához. Ezen kívül általános teljesítményének meg kell felelnie igényeinknek.
  • Könyvtárak elérhetősége. A programozási nyelvnek rendelkeznie kell olyan könyvtárakkal, amelyek meg tudják oldani például a webfejlesztéshez kiválasztott nyelvvel kapcsolatos összes problémánkat.
  • Projekt mérete. Olyan nyelvet kell választani, amely támogat a kis vagy nagy projektünk magvalósításában.
  • Kifejezőképesség és gyártási idő. Kifejező nyelvet válasszunk, és a programok/kódok elkészítéséhez szükséges idő ne érintsen hátrányosan.
  • Eszköztámogatás. Eszközorientált nyelvet válasszunk, amely segít a szerkesztésben, vezérlésben, illetve a munkában.

A következőkben a felhasználási területtől független és egyéb szempontokat nem figyelembe véve tekintjük át a programozási nyelvek népszerűségének mérését, illetve azok között azt, hogy a Java jelenleg hol helyezkedik el, hogyan változott az elmúlt években népszerűsége. Mindez a kezdő programozóknak iránymutatás, a haladóknak megerősítés lehet. Láthatják a Java használatának trendjét, és hogy „jó nyelvre tettek”, hosszú távon is megtérül befektetésük magas szintű elsajátításába.

A programozási nyelvek népszerűségének mérése

A programozási nyelvek népszerűségének mérésére több, más-más szempont szerinti (elfogódottságú) módszert javasoltak. Ezek közül rangsoraik készítéséhez a https://en.wikipedia.org/wiki/Measuring_programming_language_popularity forrásaik megjelölésével az alábbi módszereket gyűjtötte össze az egyes programozási nyelvek esetén:

  • nevükre keresés internetes keresőmotorral;
  • internetes keresésekben említésük (például Google Trends);
  • nevüket tartalmazó álláshirdetések száma;
  • tanító/bemutató eladott könyvek száma;
  • rajtuk írt kódsorok számának becslése – alábecsülheti a nyilvános keresésekkel ritkán talált nyelveket;
  • a felhasználó projektek száma a SourceForge-on és a GitHubon;
  • az egyes programozási nyelv Usenet hírcsoportjaiban a hozzászólások száma;
  • az Open Hubon nyílt forrású projektekben előforduló vagy módosított forrássoraiknak a száma;
  • a bootcamp-ek eladott tanfolyamainak száma;
  • képzésekre a világon beiratkozottak száma;
  • hozzájuk megjelenő videók száma a YouTube-on;
  • hozzászólásaik száma a Redditen vagy a Stack Overflow-n.

Ezek mellett gyakran találunk az interneten például blogbejegyzéseket, amelyeket programozás-szakmabeliek készítenek saját tapasztalataik és véleményeik alapján.

A TIOBE és a PYPL programozási nyelvek ranglistája

A Google szerint 2019 augusztusának közepén a széles körben hivatkozott két ranglistára keresve az alábbi számú találat volt:

  • TIOBE programming languages: 157 * 103;
  • PYPL programming language: 160 * 103.

A TIOBE (The Importance of Being Earnest) programozási közösségi indexet, amely a nyelvek népszerűségének közismert mutatója, havonta aktualizálja a hollandiabeli TIOBE Company. Az egyes nyelveket használó mérnökök, tanfolyamok és harmadik fél gyártók számán alapul. Számításaihoz figyelembe veszi a népszerű keresőmotorok használatát (Google, Bing, Yahoo!), valamint a Wikipedia-n, az Amazonon, a YouTube-on és a Baidu-n kereséseket. A TIOBE listából tehát azt tudhatjuk meg, hogy programozási készségeink naprakészek-e; stratégiai döntést hozhatunk új szoftverrendszer fejlesztésekor programozási nyelv alkalmazásáról. A TIOBE a Turing-teljes nyelvekre összpontosít, ezért nem nyújt információt például a HTML népszerűségéről. A TIOBE-n 2019 augusztusában is vezetett a Java.

A TIOBE listájával szemben leggyakrabban a PYPL (PopularitY of Programming Language) indexszel találkozhatunk, amelyet Pierre Carbonnelle készít 2004 óta. A Google-n elemzi Föld- és öt ország (US, India, Németország, Egyesült Királyság, Franciaország) szintjén, hogy milyen gyakori a programnyelv tutoriáljaira keresés. (Ugyanezzel a módszerrel a legnépszerűbb integrált fejlesztői környezeteket, online fejlesztői környezeteket és adatbázisokat is listázza.) Nyers adatai a Google Trends-ből származnak. A PYPL index szerint a Java elől van, de 2018 elejétől második helyre csúszott.

tiobe-pypl

A TIOBE (fent) és a PYPL (lent) index szerinti első öt legnépszerűbb programozási nyelv
(2019. augusztus 18.)

Az alábbi diagramon megfigyelhető, hogy a legkedveltebb tíz nyelv közül a TIOBE index szerint 2002 és 2018 augusztusa között még mindig a Java az első.

tiobe

A legkedveltebb tíz nyelv a TIOBE index szerint 2002 és 2018 augusztusa között
(2019. augusztus 18.)

Ingyenes közösségi platformok, szakmai oldalak ranglistái

A GitHub a kódkezelés és -megosztás legnépszerűbb platformja, több mint 31 millió felhasználó dolgozott már rajta, összesen 337 programozási nyelven. Ezért ideális hely annak vizsgálatára, hogy mely programozási nyelvek a legnépszerűbbek a projektek számát tekintve. Ezek közül Martins D. Okoi 2019 áprilisának végén a nyelvhasználat aktvitását tekintve a hét legnépszerűbb nyelvet emelte ki. Ezek rangsor szerint: JavaScript, Java, Python, PHP, C++, C#, TypeScript.

A Black Duck Open Hub ingyenes közösség és nyilvános könyvtár a szabad és a nyílt forráskódú szoftverek (FOSS) számára. Elemzési és keresési szolgáltatásokat nyújt a nyílt forráskódokhoz és projektekhez. A BlackDuck OpenHub az általunk kiválasztott programozási nyelveken végzett kódsormódosításokat mutatja. A legutóbbi hónap adatait nem ábrázolják, hiszen még nem állnak rendelkezésükre az adatok. Ezen közösség szerint is, mint más indexek szerint meredeken emelkedik a Python használata, és fej-fej mellett van a Java és JavaScript.

black-duck-open-hub

Havi commitek (a teljes százalékában) az Open Hub szerint
(2019. augusztus 18.)

Programozási nyelvek hozzászólásainak száma a szakmai oldalakon

Az elmúlt évtizedben a vezető programozási nyelvek esetén a velük dolgozók munkájának megkönnyítésére összpontosítottak. Ha a programozási szakmát művelők nyelvek iránti vonzalmát vizsgáljuk, nem járhatunk rossz úton, ha a szakmai-közösségi oldalaikat vizsgáljuk. Az érdeklődési kör egyértelműen megjelenik a témákban, hozzászólásokban. A GitHub és a Stack Overflow méretük miatt és az elemzéshez szükséges adatok nyilvános megjelenése miatt érdemel külön figyelmet.

A Stack Exchange Inc. tulajdonában levő Stack Overflow tudáspiac széles körben tartalmaz programozással kapcsolatos kérdéseket és válaszokat. A weblap szlogenje: Where Developers Learn, Share, & Build Careers. A felhasználók kérdéseket tehetnek fel, amelyekre tagtársaik segítőkészen válaszolnak. A kérdések-válaszok wikistílusban szerkeszthetők, valamint pozitív/negatív értékeléssel láthatók el. A felhasználók további elismeréseket is szerezhetnek (hírnév pontokat [Reputation points], majd kitüntetéseket [Badges]). A növekvő elismertségi szinttel új jogosultságok érhetők el (szavazhatnak, kommentálhatnak, más hozzászólásait szerkeszthetik).

Egyre több programozó cég teszi „kötelezővé” a Stack Overflow aktív használatát programozói számára munkájuk támogatásához Magyarországon is. 2019 januárjától a Stack Overflow regisztrált felhasználóinak száma 10 millió fölött van, lekérdezéseinek száma pedig 2018 közepén meghaladta a 16 millió kérdést. A kérdésekhez rendelt címkék típusa alapján a webhely nyolc legélénkebb témája: JavaScript, Java, C#, PHP, Android, Python, jQuery és HTML – többnyire a webprogramozáshoz kötődva.

A felhasználókat kb. 20 perces kérdőív kitöltésére kérik meg, amelyek segítségével változatos szempontok szerint mérik fel a programozás világát. Tudják, hogy vannak rendszerszintű mintavételi problémáik, és azokat korrigálják is súlyozással (például ha a kitöltők között alulreprezentáltak a nők, vagy felülreprezentáltak az USA-beliek).

stack-overflow1

2019 augusztus havi Stack Overflow látogatások

Ahol releváns, rákérdeznek a leginkább kedvelt, megtanulni kívánt, keresett eszközökre, technológiákra, stb. A legnépszerűbb technológiák között (programozás, szkriptelés, jelölőnyelvek terén) minden válaszadó és a professzionális fejlesztők között is megegyezik az első nyolc sorrendje, amelyben a Java az 5. helyen van.

stack-overflow2

A legnépszerűbb technológiák arányai (programozás, szkriptelés, jelölőnyelvek terén)
2019-ben a Stack Overflow szerin

A Stack Overflow a munkavállalók és a munkaadó számára több eszközt is biztosít, hogy egymásra találhassanak. Havonta kb. 50 millió tanulni, tudást megosztani, karriert építeni látogatója van. Közülük kb. 21 millió profi fejlesztő vagy egyetemi hallgató.

A 2019-es év legfontosabb eredményeiből szemezgetve a Stack Overflow kiemelte például, hogy a Python a leggyorsabban terjedő fő programozási nyelv. 2019-ben megelőzte a Java-t és a második legkedveltebb nyelv. A fejlesztők a Stack Overflow-t használva heti 30-90 percet takarítanak meg.

Stack Overflow 2019-es felmérésének anonimizált eredményei letölthetők az Open Database License (ODbL) alatt.

A Reddit közösségi weboldal 2005-ben alapított vállalkozás. Jelmondata: The front page of the internet (az internet kezdőlapja). Az Alexa Internet szerint 2019 júliusától a Reddit az USA 5. leglátogatottabb és világszerte a 13. leglátogatottabb webhelye. A regisztrált felhasználók megoszthatják híreiket, képeiket és cikkeiket az ún. „alredditeken”, illetve értékelhetik a már meglevőeket „fel” és „le” nyilakkal.

A Reddit bejegyzései alapján a nyolc legaktívabban használt nyelv helyezési sorrenben: Python, Java, C++, C#, Rubby, Javascript, PHP, Go.

reddit

A legnépszerűbb programnyelvek a Reddit szerint 2019-ben

A RedMonk szoftverfejlesztőkre koncentráló iparági elemző cég USA-beli székhellyel, figyelembe veszi a kereskedelmi szoftverek változó szerepét. A szoftveripar trendeket tekintettel állítja elő programozási nyelvi rangsorát a GitHub használatának és a Stack Overflow-n folyó beszélgetéseknek a korrelációjából származtatva. Elemzése GitHub részéhez használt adatforrása a GitHub Archive. A RedMonk hasonló lekérdezést használ, mint a GitHub a nyelvek 2016 októberi állapotának összeállításához, továbbá a RedMonk lekérdezéseit összehasonlíthatóvá teszi. Rangsorai nem a programozási nyelvek általános felhasználását mutatják, hanem két olyan populáció közötti korrelációt vizsgálnak, amelyekről úgy gondolja, hogy előrejelzik a nyelvek jövőbeli felhasználását, ezért értéküket.

2019 harmadik negyedévében első helyen a RedMonknál is a JavaScript áll, az élbolyban követi a Java, Python, PHP, C++, C# és CSS.

redmonk

A RedMonk programozási nyelvek ranglistája 2019 3. negyedévére

A Krihelinator nyílt forráskódú projekt rangsorolása alternatíva a GitHubhoz. Az egyes adattárak kriheliméterét az elmúlt heti szerzők száma, kérések, problémák és commitek alapján számítja: Krihelimeter = 20 * authors + 8 * merged and proposed pull requests + 8 * new and closed issues + 1 * commits.

A szerző szerint a GitHubot biztonsági mentési szolgáltatásként használják, hetente több száz commitot automatizálva. Ezen projektek kiszűrése érdekében csak egynél több szerzővel rendelkező projektek lépnek be a Krihelinator adatbázisba. Tehát számítása azon alapul, hogy milyen arányú a fejlesztők saját hozzájárulásának aránya a programozási nyelvek használatához a GitHubon. Itt a Java a 4. leginkább használt nyelv.

Álláskereső portálokon készített ranglisták

Az Indeed 2004 novemberétől működik. Az egész világon elérhető keresőmotor álláskereséshez, több mint 60 országban, 28 nyelven. Portálján a legkeresettebb a Java programozó volt 2019 januárjában is.

indeed

A legkeresettebb programozási nyelvek
az Indeed álláskereső portálon 2017-2019 között

A Trendy Skills a népszerű hirdetési webhelyekről a munkáltatók által keresett készségekről és technológiákról végez kutatásokat és készít kivonatot. Kategóriáit osztályozza, amelyek közül az egyik a programozási nyelvek. Ez lehetővé teszi a felhasználó számára, hogy a meghatározott időtartományokban megfigyelhessék egy vagy több készség vagy kategória trendjeit. Az adatok nyilvános API-n keresztül is elérhetők, így bárki elkészítheti saját statisztikáit. Trendy Skills szerint a legkedveltebb programozási nyelv 2019. január 1 – augusztus 18 közötti időszakban messze a Java volt.

trendy-skills

A Trendy Skills listája az első tíz legkedveltebb programozási nyelvről
2019. január 1 – augusztus 18 közötti időszakra

Ahogy a fenti képernyőkép bal oldalán látható, az első fülön több szűrési lehetőség adható meg a programozási nyelvek rangsorolásához: időszak, kulcsszó/kategória, ország. A második fülön állásokra kereshetünk.

Az IEEE Spectrum rangsora

Az IEEE Spectrum az év legjobb programozási nyelveinek rangsorolásához 10 forrásból 12 mutatót szintetizál. A különféle mutatókat a GitHub, a Google Search and Trends, a Twitter, a Stack Overflow, a Reddit, a Hacker News, a Career Builder, a Dice.com és az IEEE Xplore Digital Library alapján gyűjti. Az interaktív rangsoroló alkalmazás lehetővé teszi a mutatók súlyának beállítását, a nyelvek szűrését típus (web, mobil, enterprise, beágyazott) szerint. Rangsorát évente készíti, alább a 2018-as első 10 helyezettje látható a teljes IEEE spektrumra. A Java itt 2. helyen van.

ieee-spectrum

Az IEEE Spectrum interaktív rangsoroló alkalmazásában
a 2018. évi első legjobb 10 programozási nyelve

Iparbeli események

A programozási nyelvek, például a Java kedveltségi, felhasználási rangsorbeli helyezésére események is hatnak. Például 2004 áprilisában a Google igyekezett megszabadulni bizonyos weboldalaktól, amely eredményeként a TIOBE indexben a Java és a C++ nyelvek óriásit zuhantak vissza. Az ilyen nagy ingadozások kivédésére az MSN és Yahoo! keresőmotort is elkezdték használni néhány hónap múlva a TIOBE index készítéséhez.

A Groovy, amely Java-kompatibilis, először 2016-ban került be az első 20 programozási nyelv közé, mert a Jenkins folyamatos integrációs eszközt főként Groovy-ban írták. 2019 augusztusára a 13. helyig lépett elő, mert az egyre népszerűbb Gradle build automatizációs rendszer is Groovy-t használ szkripteléséhez.

A webprogramozáshoz használt legkedveltebb nyelvek

Az internet egyre intenzívebb használatának eredményeként gyorsan fejlődik a webhelyek és a webes alkalmazások fejlesztése. A vállalatok folyamatosan foglalkoznak webfejlesztési szolgáltatásokkal, azzal, hogy weboldalaik és webes alkalmazásaik a lehető legszélesebb célközönséget vonzzák be.

A webfejlesztéshez programozási nyelvek, adatbázisok és kommunikációs hálózatok széles skálája tartozik. A webprogramozással foglalkozóknak nem elegendő csak egy nyelvben és az ahhoz szorosan kapcsolódó például fejlesztői környezet(ek)ben profinak lenni, minden általában használt és feltörekvő nyelvben otthonosan kell mozogniuk. Az alábbi röviden jellemzett nyelvek mellett mindenekelőtt ezeket a nyelveket, keretrendszereket, futtatási környezetet, adatbázist stb. kell ismerniük napjainkban: HTML és CSS, jQuery, Bootstrap, React.js, MySQL, Node.js.

A Stone River eLearning szerint a webprogramozáshoz használt nyelvek 2017 végén gyakoriságuk sorrendjében: HTML5, Javascript, PHP, Java, Python, .NET, Ruby volt. 2018-ban a FreelancingGig szerint a 100 milliónyi felhasználót kiszolgáló webszájt készítéséhez legmegfelelőbb programnyelvek: PHP, Java, Python, Final Verdict. A Webby Giants szerint 2019-ben a nyolc legmegfelelőbb nyelv: Python, Rust, Java, Go, JavaScript, TypeScript, C#, PHP.

Ahogy láttuk, a Python jelenleg, és növekedési ütemét tekintve még jó ideig biztosan az egyik legszélesebb körben használt magas szintű programozási nyelv. Ez a nyílt forráskódú nyelv az elemzők és a fejlesztők számára is a legjobb választás szabványos könyvtárával, megvalósítási funkcióival, beépített API-jaival, illetve háttérszolgáltatásaival a biztonság és az URL megbízhatóságának mérésére. Támogatja sikerét számos webfejlesztési keretrendszer is, például a Django, a Pyramid, a Turbo Gear és a Flash. Használják ipari alkalmazások, webes alkalmazások, webhelyek, asztali alkalmazások, gépi tanulás, adatelemzés, hálózatépítés és még sok más területen.

A 2018-ban a Stackoverflow Developers felmérésen keresztül bevezetett Rust forradalmasíthatja a szoftveripart. Alacsony szintű programozási nyelv, teljesítménykritikus feladatok megvalósításához való. Fejlesztése során cél volt, hogy elkerüljék a függő mutatókat, a puffertúlcsordulásokat, a szintaxis- és memóriahibákat.

Évtizedek óta a Java-t tartják a legnépszerűbb objektumorientált programozási nyelvnek. Bár a rangsorokban nem mindenütt az első, csak az első közötti, értékét és megbízhatóságát alátámasztja, hogy platformfüggetlen – write once tun anywhere, vagyis írd meg egyszer, és fut bárhol (ahol fut a Java Virtual Machine).

A nyílt forráskódú Go-t a Python ihlette, nyelve is hasonló ahhoz, egyszerűbb szintaxisú, a C/C ++-hoz hasonló hatékony erőforrásokkal. A Go-t többmagos alkalmazásokhoz, konkurens programok készítéséhez javasolják funkciói és továbbfejlesztett forrásai miatt. A nyelv egyesíti a funkcionális és az objektumorientált alapú programozási nyelvek legjobb aspektusait többek között beépített fejlesztési eszközökkel.

A JavaScript magas szintű, interpreter típusú, objektumorientált programozási nyelv, amely viselkedést vált ki a weboldalakon. A nyelv fontos szerepet játszik a front-end fejlesztésében. Leginkább a közösségi média platformjai számoltak be arról, hogy a JavaScript intuitív módon nyújt statikus és dinamikus weboldalakat zökkenőmentesen.

A JavaScript több böngészővel kompatibilis, felépítése logikus. Mivel front-end fejlesztési nyelv, számos népszerű keretrendszerben is használják, például AngularJS, Node.js és React.js keretrendszerekben. A 2018-as statisztikák szerint a JavaScript az egyik legnépszerűbb programozási nyelv, amely előrelép a játékfejlesztés, a dolgok internete és a robotika területén.

A JavaScript által ihletett TypeScript nyílt forráskódú programozási nyelv. Elsősorban nagyszabású alkalmazásfejlesztéshez használják. Nemcsak a front-end fejlesztésben elterjedt, hanem manapság hibrid mobil alkalmazások, mesterséges neurális hálózatok és mesterséges intelligencia alapú robotok programozásában is használt.

A C# domináns alkalmazásprogramozási nyelv Windows-ra, webalapú és mobil alkalmazásokhoz, illetve a Microsoft platform egyéb tagjaira. A C# szintaxisstruktúrája a C/C++-éból származik, de azoknál könnyebb használata azok számára, akik ismerik a C/C++ családot.

A C# tartalmazza az általában webhelyek és webalapú alkalmazások készítéséhez használt ASP.NET-keretrendszert, amely gyors alkalmazásfejlesztést tesz lehetővé. Virtuális valóság alkalmazások esetén is érdemes a C# tanulásába fektetni, továbbá 2D és a 3D videojátékok fejlesztéséhez a Unity 3D platform választása esetén is ez az ajánlott nyelv.

Az egész világon a PHP a legnépszerűbb szerveroldali szkriptnyelv. Folyamatosan fejlesztik, frissíthetjük verziónkat, ha a soros kódrészleteket statikus HTML fájlokban valósítottuk meg. A PHP ideális a professzionális webfejlesztők és a hatékonyan programozni kívánók számára azért is, mert számos keretrendszerrel együttműködik, például Laravel, Code Igniter és Symphony keretrendszerrel.

De ennyi nyelvet hogyan sajátítson el a kezdő programozó? Jean-Baptiste Jung (2019 július) az alábbi hét lépést javasolja a professzionális webfejlesztést megcélzóknak:

  1. Specializálódás. Szakosodhat a front-end vagy a back-end webfejlesztésre. A full stack fejlesztést megcélzóknak a front-enddel kell kezdeniük.
  2. Programozási nyelvtudás megszerzése. A szakosodásból következik, hogy mely programozási nyelveket kell megtanulni.
  3. Kis projektekben részvétel, saját online portfólió létrehozása. Kis projektekkel kezdve egyre nagyobbakat kell végigvinni. A nagy és összetett webhelyek egyszerű elveken alapulnak, kis projektek során felépíthetők. A kis projektekben létrehozott eredmények beépítve a saját weboldalba bemutatják a fejlesztő készségeit, tapasztatait. A közösségi média, illetve szakmai közösségekben jelenlét is ajánlott a programozási tudás megmutatására, a többi kódolóval találkozáshoz és a projektek kidolgozásához.
  4. Türelmes tesztelés és hibakeresés. A kódokat alaposan ellenőrizni kell, és ha türelemesek vagyunk a hibakeresés során, a jövőben a nagyobb projektekben kisebb eséllyel ismételjük meg hibáinkat.
  5. Webfejlesztői fórumhoz csatlakozás. Ezeken a fórumokon tanulhatunk mások hibáiból, megítélhetjük mások munkáit, tájékozódhatunk a fontos frissítésekről és hírekről, kérhetünk szakmai segítséget.
  6. Webhelyekről tanulás. Számos webhely nyújt újrafelhasználható kódokat is, amelyek beépíthetők a saját projektbe, segítve a gyorsabb tanulást.
  7. Gyakorlás. A sikeres weboldalak mögött hatalmas mennyiségű képzésben részvétel és gyakorlat rejlik. Ez csak önálló gyakorlással érhető el.

Összegzés

A Java compiler típusú, általános célú, magas szintű, objektumorientált programozási nyelv. Világszerte minimum 15 milliárd eszközt irányít, és több mint 10 millió fejlesztő dolgozik vele. Az SE fejlődése töretlen. Hatékonyan készíthetők vele platformfüggetlen szoftverek, amelyek bárhol futtathatók, ahol van telepítve Java virtuális gép („compile once, run anywhere”). Használják Android- és asztali alkalmazások, adatbázisok fejlesztésére, és gyakorlatilag az elsődleges nyelv az ügyviteli, vállalati rendszerekhez, a szerver-architektúrákhoz és a felhőben történő fejlesztéshez. A legnépszerűbb weboldalak többségénél használják a Java-t (is) szerveroldalon.

Első programozási nyelvnek kiváló a Java. Azért is, mert a tanulás kezdetén online is lehet tanulni a kódolást. Később az EE fejlesztői környezet kialakítása már komolyabb tervezést és fejlesztést igényel.

A fent bemutatott rangsorok alapján is látható, hogy a Java tanulásába előnyös fektetni. Nem minden feladathoz legjobb választás a Java, illetve minden nyelvnek megvannak az előnyei és a hátrányai. Mindig a feladat igényeire kell összpontosítani, hiszen a népszerűségen kívül sok más tényező is meghatározza a szoftverek fejlesztéséhez legmegfelelőbb programozási nyelve(ke)t.

HWSW – Szeptemberi dupla – Android/Kotlin és full-stack JavaScript fejlesztői meetup

HWSW logó

HWSW logó2018. szeptember 11-én és 12-én délután a HWSW szervezésében a Szeptemberi dupla: Android/Kotlin és full-stack JavaScript fejlesztői meetup-okon vettem részt az AnKERT-ben.

Szeptemberi dupla - Android/Kotlin és full-stack JavaScript fejlesztői meetup

Kedd – Android/Kotlin fejlesztői meetup

Kedden az első előadó Ekler Péter volt, Android Pie újdonságai fejlesztői szemszögből című előadásával. Az általános újdonságokat követte néhány példa az energiafogyasztáshoz és testreszabáshoz kötődően: az Android rendszer:

  • úgy működjön, ahogyan a felhasználók jobban szeretnék használni – és persze ezáltal a Google még jobban megismerjen bennünket ;-),
  • alkalmazkodik a rendszer a mi életstílusunkhoz,
  • adaptívan korlátozni tudja a ritkán használt appoknál az akkumulátor-használatot (digitális jólét néven eladva),
  • adaptívan képes a fényerő beállítására (szürkeárnyalatos esti megjelenítés),
  • támogat új notification-öket (ez örökösen átalakul).

Elhangzó körkérdések voltak:

  • Mennyi ideig használunk egy-egy mobil alkalmazást?
  • Hány darab mobil alkalmazást használ a felhasználók többsége?
  • Ki találja hasznosnak a digitális jólét szolgáltatásokat?
  • Vajon mennyi változott (hány százalékot) az API 25-26-ra, 26-27-re, illetve 27-28-ra?

A válaszok érdekesnek, néha meglepőnek hatottak. Hasznos ötleteket kaptunk appok fejlesztéséhez, alkalmazkodva a felhasználói szokásokhoz.

A második előadás címe Kotlin 1.3 újdonságok volt, Balogh Tamás tartotta. Hasznos tippeket kaptunk a Kotlin konfigurációhoz, illetve függőségeinek megoldásához többféle fejlesztői eszközt érintve a gyakorló fejlesztő tapasztalataira építve. Újdonságok:

  • coroutine-ok experimental megjegyzéssel (működik, stabil, de egy későbbi új API verzióban fenntartott a jog, hogy megváltozhatnak és így törődni kell még velük),
  • előjel nélküli adattípusok példákkal (nem mintha ez lenne a legfontosabb, de néha kifejezetten hasznos lehet),
  • inline class-ok, intelligens bájtkód-beillesztésként magyarázható analógiával, mintegy kibővítve a korábbi inline function-ök lehetőségeit (nagyon tanulságos és eltalált volt a példaként bemutatott forráskód),
  • contract-ok (szerződés a fejlesztő és a fordító között).

A harmadik előadó Polacsek Attila volt és A pontonhíd az RxJava és a Data Binding között című bemutatójában körüljárta a reaktív UI-ban rendelkezésre álló adatkötés lehetőségeit, korlátjait, mindezt sok apró részletet is tartalmazó forráskód-részletekkel ismertetve.

Szeptemberi dupla - Android/Kotlin és full-stack JavaScript fejlesztői meetup

Szerda – Full stack JavaScript fejlesztői meetup

Szerdán négy előadást hallgattam meg a JavaScript nyelvhez kapcsolódóan. Az első előadó Szabolcsi-Tóth Szabolcs volt, aki a nyelv eredetét, fejlődését ismertette. A JavaScript nyelv az Európai Számítógépgyártók Szövetsége (ECMA) által felügyelt, ECMA-262 számon és ECMA Script néven gondozott szabvány (https://www.ecma-international.org/publications-and-standards/standards/ecma-262/) egyik implementációja. Elsősorban webes alkalmazások számára készült. Az ECMA évente jelentet meg új változatot a szabványból. A nyelv fejlesztése teljesen nyitott, bárki küldhet be ajánlást egy-egy új funkció beépítésére. A koordináció github-on (https://tc39.es/ecma262/) keresztül zajlik. Az ECMA-262 tagok döntésén múlik, hogy az egyes ajánlások közül mi kerül be ténylegesen a nyelvbe – szigorúan szabályozott lépések sorozatát követően.

A második előadó Czibik Péter volt, aki 4 év full stack fejlesztői tapasztalatait osztotta meg velünk. Elmondta, hogy mi a különbség egy specialista és a full stack fejlesztő között, milyen előnyökkel illetve hátrányokkal járnak az egyes szerepek. Megerősített minket abban a hitünkben, hogy bár mindenhez nem lehet egyszerre érteni, ennek ellenére lehetséges olyan szerteágazó tudásra szert tenni (itt az adatbázis-backend-frontend hármasra gondolok) ami hatékonyan használható a munkában. Tapasztalata szerint náluk a RisingStack nevű cégnél először specialistákat képeznek, és onnan indulhatnak el a munkatársak a full stack irányba. Ismeretes náluk, hogy a full stack-es kollégák közül ki melyik szakterülethez ért a leginkább és ezen információ birtokában hatékonyabban tudnak együtt dolgozni az egyes projektek kivitelezése közben.

A harmadik előadóként Séra Bálint következett. Ő egy saját tapasztalatát mutatta be: hogyan lehet egy frontend-es számára optimális sorrendben betölteni a weboldalon az egyes JavaScript modulokat a lehető leggyorsabban úgy, hogy ne kelljen a felhasználónak egy üresnek látszó weboldal előtt várakoznia. Saját kódpéldákon keresztül mutatta be azt a folyamatot, ahogyan a JavaScript nyelv fejlődésével párhuzamosan bővültek a programozó lehetőségei. Először csak statikusan lehetett felsorolni a modulokat az oldal kódjában, ezzel rögtön egy sorrendiséget is meghatározva. Később erre a feladatra különböző keretrendszerek készültek. Az ES6-os JavaScript verziótól kezdve pedig szabványos eszköz áll a fejlesztő rendelkezésére, az import formájában.

Utolsó előadóként Miklós Bertalant hallgattuk meg. Ő is a nyelv fejlődésére épített, de sokkal inkább a felhasználó által tapasztalt élmény szemszögéből megközelítve a fejlesztő lehetőségeit. A JavaScript nyelv irányába is régebb óta megvolt az az igény, hogy gazdag animációs lehetőségeket tudjon biztosítani, mint a mára már elavult Flash vagy Silverlight technológiák. Ahogy ezek a lehetőségek elkezdtek megjelenni a nyelvben, úgy kezdtek megszületni a különböző keretrendszerek is, mint például a React, az Angular vagy a Single-page alkalmazások. Szerinte a mai weboldalak a progresszív megközelítést kell, hogy használják, ami egy-egy keretrendszerrel való megoldások készítése helyett inkább sok-sok kicsi ötletre épít, figyelembe véve az adott projekt szükségleteit, és ennek megfelelően alkalmazva néhány – a tarsolyban lapuló – eszköz keverékét.

Néhány előadás prezentációja letölthető.