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.

Multimédia az oktatásban 2019

NJSZT-MMO logó

NJSZT-MMO logóA Neumann János Számítógép-tudományi Társaság (NJSZT) „Multimédia az oktatásban” Szakosztály által – évente – szervezett XXV. Multimédia az oktatásban című nemzetközi konferencia az Ericsson Magyarország Kft. K+F Központjában került megrendezésre 2019. június 6-7-én.

A konferencia célja

  • elősegítse az oktatás, a kutatás és a fejlesztés különböző területein dolgozó szakemberek tapasztalatcseréjét és találkozását,
  • bemutatkozási lehetőséget adjon az oktatóknak, kutatóknak és PhD hallgatóknak az új kutatási eredmények széleskörű szakmai megismertetésére és megvitatására előadások, kiállítások és kiadványok segítségével.

21 témakörben hirdették meg az előadóknak a jelentkezési lehetőséget, köztük néhány hozzánk kötődő

  • multimédia alkalmazása,
  • mLearning/eLearning és környezete,
  • felhőalapú szolgáltatások,
  • multimédia és a tudományos kutatás összefonódása,
  • multimédiafejlesztések, eredmények, alkalmazások.

Letölthető a konferencia programja.

A plenáris előadásokról

Ez a 25. jubileumi rendezvény áttekintette a szakosztály eddigi tevékenységeit például a plenáris ülésen Dr. Berke József alapító tag, első szakosztályelnök „Multimédia az oktatásban szakosztály története” fényképes előadásával. Dr. Magyar Miklós professzor alapító tag, alelnök „Egy Baby Boomer rendhagyó gondolatai a multimédiáról”, című Skype-on keresztül tartott előadásával képet adott arról, hogy a „kortárs szemtanú az egymást követő generációkkal, nemzedékekkel együttműködve tapasztalhatta meg a változásokat, a fejlődés átalakulási szakaszainak történéseit”. Majd az elmúlt év kutatásairól, a szakma irányvonalairól, gyakorlati eredményeiről szóló előadások következtek két napon két-két szekcióban. Kerekasztal beszélgetés keretében a közeljövőben megvalósítandó felnőttkori kötetlen, önálló tanulásra szolgáló (multimédia) tananyagok minősítésének kidolgozandó rendszeréről beszélgettünk Dr. Elsayed Hassan, Dr. Gerő Péter, Dr. Seres György és Sulyok Tamás moderálásával.

MMO2019 résztvevők

A szekció-előadásokról

Már számos alkalommal részt vettem előadóként a nyár eleji MMO konferenciákon szakmai előadással, magyar és/vagy angol nyelvű cikkel, poszterrel az oktatói csapat tagjaival, illetve mentorált hallgatóimmal együtt. Legutóbb tavaly is, lásd Multimédia az oktatásban 2018.

2019-ben „A magyarországi felsőoktatásban oktatók és hallgatók e-eszközhasználati attitűdje – Egy félig strukturált interjús mintakutatás eredményei” címmel tartottam előadást 20 percben, amely a konferencia „Multimédia-fejlesztések, eredmények, alkalmazások bemutatása / mLearning, eLearning és környezete” szekciójába került.

Ahogy absztraktomban írtam, „Az előadásban a tanár–hallgató interjúalanyok e-learning attitűdjébe kapunk bepillantást annak kapcsán, hogy mit jelent számukra az e-learning, hogyan értelmezik, mi tartozik az elearning kifejezés ernyője alá? Tanítási/tanulási munkájuk során milyen arányban használnak e-eszközöket? Milyen e-eszközöket és miért, hogyan használnak? Hogyan fejlesztik e-eszköztárukat? Az e-elemek tanításba bevonása hogyan hat a hallgatói motivációra és eredményekre a tanárok és a hallgatók szerint? Ha nem lennének e-eszközök, mi hiányozna számukra a leginkább? Melyik, miért és mennyire fontos a hallgatók és a tanárok számára a következők közül: tananyag, tanári magyarázat, tudományos alapok, trendiség? A kutatás alapja lehet egy széleskörű, nagy létszámú magyarországi és határon túli tanári–hallgatói populációkat vizsgáló kvantitatív kutatásnak.”

Mentorált hallgatóim/volt hallgatóim kiváló előadásokat tartottak. Öt díjat nyertek el a már második évben meghirdetett szakdolgozatok és TDK-dolgozatok versenyben, illetve szekcióikban tartott előadásukkal, a konferencia-kiadványban megjelent cikkükkel.

Vidovenyecz Zsolt, volt konzultáltam, barátom idén is elhozta „utazó kiállítás” keretében gyűjteménye egy részét, amelyhez kapcsolódva „A magyar számítástechnika hőskorának „leg”-jei” címmel tartott tárlatvezetést. Virtuális múzeuma a https://www.holdcomputers.com/-on tekinthető meg.

MMO2019 Régi magyar számítógépek kiállítás, Hungarian Old Computers kiállítás

Kaczur Sándor kolléga minden résztvevő számára érdekes multimédiás előadást tartott az MMO 2019 konferencián „Térképek dinamikus ábrázolása Google Charts, Java és JavaScript eszközökkel” címmel. Ez az előadás a „Multimédia és a tudományos kutatás összefonódása/ Multimédiafejlesztések, eredmények, alkalmazások bemutatása” szekcióba került.

„A Google Charts egy weblapokba beágyazható, JavaScript-re épülő keretrendszer/példatár, amely kiválóan használható az oktatásban úgy, hogy különféle adatforrásból származó – vagy dinamikusan előállított – adatokból egyszerű, látványos, weblapokon könnyen megjeleníthető grafikus objektumokat hozunk létre. A hozzá kapcsolódó felhő alapú szolgáltatások ingyenes és fizetős formában is rendelkezésre állnak. Az ismertetett esettanulmány egy hálózatos Java projekt, amely webről összegyűjtött adatok alapján, többféle Google Charts objektumot állít elő. A termék JavaScript-re épülő weboldalak sokasága, amely tipikus felhasználói igényeket/követelményeket kielégíthet. A megvalósítás kivételkezelést alkalmaz, HTML és JSON tartalmat olvas és generál, valamint elvégzi/elvégezteti az adatok térképen való megjelenítéséhez szükséges geokódolást. Az előadás ismerteti a specifikáció és a tervezés lépéseit, az implementációt, a tesztelést, valamint továbbfejlesztési javaslatokat is ad.” – írja Sándor absztraktjában.

Sándor előadásának prezentációját ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Sándor előadásának témája a Java EE szoftverfejlesztő tanfolyam 1–4. óra: Elosztott alkalmazások, webszolgáltatások és 13–16. óra: JSON feldolgozás alkalmaihoz kapcsolódik.

A fotópályázatról

Az MMO Szakosztály által meghirdetett fotópályázaton Táj kategóriában Szűcs Tibor különdíjban részesült Pirkadat című pályamunkájával:

Az MMO Szakosztály által meghirdetett fotópályázaton Táj kategóriában Szűcs Tibor különdíjban részesült Pirkadat című pályamunkájával

„A fotó 2018. július 2-án készült, Japán legmagasabb hegyén/vulkánján a Fujin. Július elején a napfelkelte nagyjából 4 órára esik, ám már fél órával korábban elkezd világosodni az égbolt alja, és a napfelkelte nagyjából egy órán át nyújt számunkra fényekben gazdag izgalmakat. A Fujiról fontos megemlíteni, hogy sok esetben mágnesként vonzza a felhőket. Nekünk mázlink volt. Nem is kicsi, ugyanis végig csillagos ég alatt másztunk, a napfelkelte felhőmentes volt, ám miután leértünk a hegy lábához, az egész vulkán felhőbe öltözött.

A terv az volt, hogy éjszaka felmászunk a vulkán peremére, majd a keleti oldalon megvárjuk a napfelkeltét, hiszen a felkelő nap országának legmagasabb pontjáról megnézni a felkelő napot meglehetősen vagányul hangzik. De ott fent lenni nem csak egy menő gondolat beteljesedése, hanem olyan élmény, melyet mindenkinek látnia kellene. Egyetlen baj van vele: elkezd a nap felkelni, aztán a következő pillanatban huss, már magasan jár. Természetesen ha nem is a szó szoros értelmében vett pillanatról van szó, de azért a kb. 10 percnyi páratlanul csodás élményért – amíg a nap felbukkan a horizonton – megéri hat órán keresztül hegyet mászni – a metsző szélben és közel zéró fokos hőmérsékletben fagyoskodni -, valamint kihagyni az éjszakai alvást, és másnap kókadozni.

Ebbe a kb. 10 percbe kell belezsúfolni mindent, az egyszerű emlékfotót, a pillanatról készült kiváló képeket, és természetesen a napfelkeltében elmerengeni. Nem egyszerű, mindenesetre mozgalmas, izgalmas, lenyűgöző, szívbe markoló és legfőképpen egy életre szóló élmény.” – írja a fényképről Tibor.

Hogyan írjunk szakmai CV-t?

Hogyan írjunk curriculum vitae-t vagy resume-t, magyarul önéletrajzot, ha álláspályázatra kívánjuk beküldeni? Tanfolyamaink orientáló moduljának 17-20. óra: Soft skill tréning alkalmán foglalkozunk ezzel (is). Részletes ILIAS-os tananyagot állítottunk össze önéletrajzírással kapcsolatosan. Az alábbi kérdésekre adunk választ, figyelembe véve a tipikus IT-s, szoftverfejlesztő szakterületre jellemző sajátosságokat.

1. A CV termék saját marketingünkhöz

  • Mi a CV funkciója, célja?
  • Miért fontos, hogy tartalmilag és megjelenésében is megfelelő legyen CV-nk?
  • Miért kell minden jelentkezéskor testre szabni a CV-t?

2. Alap-CV készítése

  • Áttekintjük a különböző CV-k típusait: amerikai, Europass, gerilla, irodalmi.
  • Milyen kötelező elemekből (adattartalom) áll a CV?
  • Hogyan szabjuk testre az alap-CV-t az egyes kiválasztott cégekre?
  • Hivatkozunk kifejezetten IT-sok számára készített CV mintákat.

2.1. Terjedelem

  • Hogyan legyünk lényegre törők?
  • Mit hangsúlyozzanak a pályakezdők?
  • Mit hagyjanak ki azok, akiknek sok tapasztalata van?

2.2. Személyes adatok

  • Szükséges fénykép? Ha igen, akkor milyen legyen a fényképünk?
  • Miért fontos a lakhelyünk a munkaadónak?
  • Kell-e az életkorunk?
  • Milyen elérhetőségeinket adjuk meg?

2.3. Kronológiailag rendezhető részek

  • Milyen sorrendben adjuk meg végzettségeinket, munkahelyeinket?
  • Milyen adatokat adjuk meg végzettségeink, továbbképzéseink, nyelvvizsgáink esetén?
  • Hogyan adjunk képet eddigi karrierünkről, szakmai tapasztalatainkról?
  • Hogyan derül ki a munkaadó számára a CV-nkből, hogy meg tudjuk-e oldani a náluk felmerülő konkrét feladatokat?
  • Hogyan adjunk meg referenciákat?
  • Mit hangsúlyozzanak a pályakezdők?

2.4. Egyéb releváns adatok

  • Milyen nyelvet tudunk szakmai szempontból használni?
  • Milyen vezetői engedéllyel rendelkezünk?
  • Milyen informatikai ismeretekkel rendelkezünk (általánosan)?
  • Milyen hobbijaink, szabadidős tevékenységeink vannak, illetve mi iránt érdeklődünk?
  • Hogyan rangsoroljunk, ha ez a rész túl hosszú lenne?

2.5. Ne tegyük

  • Adjunk-e meg bérigényt? Ha igen, akkor hogyan? Ha nem, akkor miért nem?
  • Vannak-e kényes információk, amelyeket nem érdemes megadni a CV-ben?
  • Kézzel vagy szövegszerkesztővel készítsünk CV-t?

2.6. Ellenőrzés

  • Beadás előtt ellenőrizzük: helyesírást, ragozást, rövidítéseket, dátumokat, fájl nevét.

3. CV „cégre szabása”

3.1. Tájékozódás

  • Mik derülnek ki egyértelműen az álláspályázatból? Mi van a sorok között?
  • Mit és hogyan, milyen formában kérnek?

3.2. Átlátható formátum

  • Hogyan készítsünk letisztult megjelenésű CV-t?
  • Hasznosak-e a letölthető CV sablonok? Érdemes ezeket testre szabni?
  • Mikre figyeljünk, ha szakmai CV-t generáló honlapot használunk?

3.3. Ellenőrzés

  • Felsoroltunk minden – a pozíció szempontjából lényeges/szükséges – információt?
  • Megfelelő a dokumentum – mint grafika – a képernyőn és nyomtatva is?
  • Milyen visszajelzést adott családtagunk vagy barátunk, akitől véleményt, kritikát kértünk CV-nkel kapcsolatosan?
  • Megfelelő a fájl mérete?

4. Álláskeresés és pályázati anyag beküldése

4.1. Lehetőségek

  • Álláshirdetések, állásközvetítő, személyes kapcsolat, direkt jelentkezés, állásbörze…

4.2. Motivációs és kísérőlevél

  • Mire való a motivációs levél?
  • Milyen elemei vannak a motivációs levélnek?
  • Mire való a kísérőlevél?
  • Milyen elemei vannak a kísérőlevélnek?
  • Mintákat hivatkozunk…

4.3. Internetes felületen jelentkezés

  • Mikre figyeljünk webes űrlapok kitöltésekor?
  • Hogyan használjuk a LinkedInt?

4.4. Automatikusan feldolgozott CV-k

  • Milyen kulcsszavak használata célszerű, ha adatbázisba került adatok alapján szűr/válogat a cég?
  • Milyen releváns szakkifejezések a tipikusak?

ASCII művészet Java-ban

ASCII Art 4

ASCII Art 1Átte­kint­jük a ka­rak­ter­a­la­pú raj­zo­lás le­he­tő­sé­ge­it Java 2D gra­fi­ká­val, illetve a ka­rak­ter­fü­zé­rek kép­ként va­ló ke­ze­lé­sé­nek újabb le­he­tő­sé­ge­it is.

Az ASCII művészet jelentése és kezdete

Az ábécék betűiből/szövegeiből kialakított ábrák egyidősek lehetnek az írásbeliséggel. A technológiától függetlenül a karakterekből kialakított kép megjeleníthető: papír és penna vagy írógép, illetve számítógép és nyomtató vagy monitor segítségével.
Az ASCII művészet (ASCII art) tágabb értelemben a szövegalapú vizuális művészetre vonatkozik. Szűkebb értelemben véve a számítógépes grafika részterületének tekinthető. Az ASCII művészet számítógépet használ nyomtatható standard ASCII kompatibilis karakterekből álló képek készítéséhez és megjelenítéséhez. A képeken a képi elemek a nyomtatható karakterek, amelyek a pointilizmushoz hasonló optikai effektust mutatnak.
A művészeti ág indulása arra vezethető vissza, hogy a korai nyomtatókkal nem lehetett grafikát nyomtatni, a monitorokon nem lehetett grafikát megjeleníteni. Cégek, programok bannerjeinek, logóinak készítésére pedig akkor is volt igény. Ezek mellett például prezentációkhoz, kapcsolási rajzokhoz is használták az ASCII művészetet, valamint természetesen a korai e-mailekben is. A grafikus kártyák megjelenése előtti időkben pedig a videójátékok „grafikája” is ezzel a technikával készült.
Most nézzünk meg néhány lehetőséget saját programmal való képkészítésre.

ASCII képek rajzolása programozási alapismeretek tanulásakor

Saját programmal már az alapok tanulásakor készíthetők ASCII képek a vezérlő szerkezetek megismerése kapcsán. Az alábbi képek bemutatják a lehetőségeket.

ASCII Art 2

További sok-sok kép található az alábbi weboldalakon:

A 2D grafikával való szövegrajzoláshoz használható BufferedImage osztály

A BufferedImage osztály a java.awt.image csomag része. Az Image osztály utódja. Hozzáférhető képadat-puffert tartalmaz, colorModel-ből és képadatok raster-éből áll. A raster sampleModel-jében a sávok számának és típusainak illeszkedniük kell a színt és átlátszó (alpha) komponenseket megadó colorModel által megkívánt számhoz és típusokhoz. A BufferedImage típusú objektumnak van bal felső koordinátája (0, 0), ezért a létrehozásához használt raster-nek kell legyen minX=0 és minY=0 értéke. A BufferedImage osztály a raster fetch és set metódusaira, valamint a colorModel színmódosítási módszereire támaszkodik.

Szöveg képként megjelenítése karakterekkel a konzolon

A kép méretét beállítjuk. A Graphics2D osztály drawString() metódusával String-et képként jeleníthetünk meg. Bár elég „munkás”, de Java-ban gyakran BufferedImage példány létrehozásával oldjuk ezt meg, és a Graphics példányt attól kérjük el. A Graphics2D osztály karakterfüzérek rajzolásakor egyszerű mátrixszerű technikát használ. A String-et kirajzoló mátrixrészek nullától különböző értéket kapnak. A megjelenítendő terület értékét egyszerű adatként, például int-ként kell megadnunk, nem RGB színértékekkel. Ehhez a képtípust int-módba állítottuk: BufferedImage.TYPE_INT_RGB. Az ASCII képek alapötlete az, hogy a képmátrix nem nulla indexeihez hozzárendelt értékeket a kívánt művészi karakterrel helyettesítjük. A nulla értékű mátrixindexeknek szóközt adunk. A nulla integer-módban -16777216-tal egyenlő. Ezután a Java 2D grafika haladó renderelő beállításainak használatához kasztoljuk a Graphics objektumot Graphics2D példánnyá. Majd beállítjuk a kívánt renderelési paramétereket, végül meghívjuk a drawString() metódust egy karakterlánccal.

Íme az elkészült szöveg/képernyőkép:

ASCII Art 3

A karakterek cserélgetésével a pozitív képből könnyen kaphatunk inverz/negatív képet is. A generált/renderelt képet fájlban is tárolhatjuk, például a javax.imageio.ImageIO osztállyal és adott a lehetőség a kép méretének megadására, a rajta megjelenő szöveg betűtípusának beállítására, háttérszín és szövegszín alkalmazására is.

A Java BufferedImage osztály néhány lehetőségének áttekintése után jó szórakozást kívánunk az ASCII képek létrehozásához, a lehetőségek további tanulmányozásához. Aki nem programból szeretne karakterekből/szövegekből felépülő képeket készíteni, használhat online alkalmazásokat is, például az Image to HTML/ASCII-t.

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

A feladat a Java SE szoftverfejlesztő tanfolyam szakmai moduljának 21-24. óra: Objektumorientált programozás, 2. rész alkalmához kötődik.

MIt hoz a következő 50 év? – NJSZT jubileumi konferencia

njszt_50_logo2

njszt_50_logoA Neumann János Számítógép-tudományi Társaság (NJSZT) 2018. október 17-én tartotta a Magyar Tudományos Akadémia (MTA) 2. emeleti dísztermében 50. jubileumi konferenciáját. A Társaság méltó helyszínen, nagyszerű programmal készült a szép számban megjelent tagságnak és vendégeknek.

Az előadások

A konferencián előadó matematikusok és mérnökök nagyszerű, magukkal ragadó előadásokkal tették emlékezetessé az NJSZT 50. jubileumi konferenciáját. „Magas szinten könnyedén” (ahogy az LSI Kiadó tankönyvsorozatának címe is mondta) adtak áttekintő képet a rendezvényre választott témájukról, mutattak hozzá példákat kutatásaikból, és természetesen vázolták, hogy hol tartunk most és merre fejlődik világunk az Ő tudományterületükről nézve. Előadásaikat 10-10 oldalban is nehéz lenne összefoglalni, ezért csak pár, engem megragadó gondolatot elemek ki.

Lovász László: Kell-e matematika a számítógép-tudományhoz?

Lovász László, az idén 70 éves, energikus matematikus, egyetemi tanár, az MTA rendes tagja előadását „Kell-e matematika a számítógép-tudományhoz?” címmel tartotta. Lovász tanár úr fő területe a gráfelmélet, amelynek gyakorlatbeli alkalmazásában is számos területen részt vett (közlekedés, távközlési hálózatok, munkaszervezés).

Előadásában áttekintő képet adott a gráfelméleti kérdések kapcsán matematikai, bonyolultság-elméleti kérdésekről. Ezen a területen az egyik alapvető fogalom a polinomiális idő. Már Neumann János felvetette egy 1951-es előadásában egy játékelmélettel kapcsolatos algoritmusáról, hogy polinomiális idejű. (Egy algoritmus polinomiális idejű, ha lépésszáma korlátozható egy nk függvénnyel, ahol k rögzített szám.)

Lovász László

Lovász László egyik záró gondolata az utóbbi hónapokban hallott egy kijelentéshez kapcsolódott: „A mélytanulás ma már olyan gyors, hogy nem érdemes a matematikájával bajlódni.” Úgy tűnik, hogy a mélytanulás mélyén is gráfokra vonatkozó tétel van, a Szemerédi-féle regularitási lemma (sejtése).

Szász Domonkos: Neumann János egy kedves eredménye, az ergod-tétel

A második előadó Szász Domonkos matematikus, egyetemi tanár, akadémikus volt, aki lelkesedéssel és 77 éve tudásával beszélt Neumann János egy kedves eredményéről, az ergod-tételről. Az ergod-elmélet a XVII. századi fizikából származik, a nyomás és a térfogat szorzata konstans (pV = k) összefüggésből. Ezt a fenomelógiai tételt (közvetlenül észlelhető leírást) a nagy fizikusok igyekeztek aztán pontosan megfogalmazni. Neumann 1932-ben tette közzé ergod-elméleti tételét, amelynek a statisztikus fizika matematikai megalapozása szempontjából alapvető jelentősége van. Az ergod-tétel a nagy számok törvényének általánosítása, valamint az is érdekes, hogy a káoszelmélethez, az időjárási jelenségek vizsgálatához és a pillangóhatáshoz is elvezetett. (A pillangóeffektus kifejezés a kiindulási tényezők fontosságát foglalja magába a káoszelméletben.)

Bár az ergod-tételt nem Neumann publikálta először az Akadémiai Közleményekben, hanem Birkhof rövidebb cikkben és más érveléssel, általános pontokra bizonyítva. Később Neumann több írásában elemezte az ergod-tétel fontosságát.

Szász Domonkos

Az előadó Szász Domonkos is foglalkozott a tétellel. Ennek kapcsán például a statisztikus fizika egyik alapjaként szolgáló Boltzmann–Sinai ergodikus hipotézis igazolásában ért el áttörést. Eszerint egy dinamikai rendszer időbeli fejlődése során a fázistér szinte minden pontjába eljut.

Charaf Hassan: A mesterséges intelligencia kihívásai

A szünet után Charaf Hassan, a BME Automatizálási és Alkalmazott Informatikai Tanszék tanszékvezetője, egyetemi tanára a mesterséges intelligencia (MI) kihívásairól tartotta igen tempós előadást. Bevezetőjében áttekintést adott az MI mindössze 70 éves evolúciójáról: Artifical Intelligence, Machine Learning, Deep Learning, amely kiegészült aztán a Data Mininggel, Data Science-szel és Big Data-val.

A gartneri hájpolt ciklus (Gartner Hype Cycle) szerint az MI területén már a vállalatirányítás intelligens gépi irányítása van soron, mindenüvé beférkőzik életünkbe, azonnali (real-time) eredményekre van szükség, a neurális hálózatokkal mélytanulás zajlik stb. Mi is tapasztalhatjuk, hogy egyre „intelligensebb” a használt keresőmotor és a fényképezőgépünk, hogy emberi beszéddel (angolul) adhatunk parancsokat a navigációs stb. alkalmazásnak, használhatjuk multifunkciós nyomtatónkban a karakterfelismerő programot stb.

Az MI-ben mindehhez adott a folyamatos, nagy mennyiségű, sok fajta adat az egyre több kézi számítógépből, szenzorokból, közösségi oldalakról. Csökken az adattárolás költsége; a számolási költség (gondoljunk például a GPU-kra [Graphics Processing Unit]). Az igények növekednek, a nagy IT cégek fejlesztései gyorsak. A CISCO szerint 2022-re 50 millió mobileszköz lesz a Földön, amelyek képességei is nőnek. Továbbá erősödnek a felhőszolgáltatások, valamint az IoT használata (de már ma is része lehet otthonainknak). Az ipar a 4.0 verziójánál tart, amely az automatizálási és adatcsere a gyártási technológiákban. (Az ipar 3.0 a számítógépesítés és automatizálás volt; az ipar 2.0 a tömeggyártás, szerelőszalag, elektromosság; az ipar 1.0 a mechanizáció, a víz- és gőzerő használata.)

Charaf Hassan

A gépi tanulás célja például ma már, hogy olyan gépeket alkossunk, amelyek saját tapasztalatikból indulnak ki. Intenzíven kutatják például a kognitív intelligencia területén a beszéd- és képfeldolgozást, a természetes nyelveket, az emberi szokások megtanulását, a cikkek hangulatának megállapítását, a környezetérzékelést. Fontos területet képeznek az orvosi alkalmazások, például a stroke és infarktus megelőzéséhez vagy a szemfenékvizsgálathoz. Természetesen hallottunk példákat a BME-n folytatott számos MI alap-, alkalmazott és szakterület-specifikus kutatásból is.

És a jövő? Mutatja a gartneri hájpolt ciklus. Charaf Hassan előadása végén az XAI-t (Explanainable AI vagy Transparent AI), magyarul a megmagyarázható vagy más kifejezéssel átlátszó mesterséges intelligenciát emelte ki. Ennek az MI-nek az akciói könnyen érthetőek az ember számára. Bár még a tervezők sem tudják, hogyan és miért jutott az MI az adott döntéshez. A cél, hogy pontosabb eredményeket adjon. Kihívások az XAI-t tekintve a költségek, a kultúra a technológiaválasztáshoz, illetve a pontos célok meghatározása. Szerencsére Magyarországon is van kutatására állami támogatás, bár hiányzik még a nemzetközi összefogás.

A több szemeszternyi tananyag igen dinamikus összefoglalása után végül Hassan a „The Future of Machine Intelligence”, nem rég megjelent könyvet ajánlotta.

Kroó Norbert: A nanotechnológiától a kvantumtechnológiákig

Az utolsó előadó Kroó Norbert elismert szilárdtestfizika kutató, az MTA rendes tagja volt. A 84 éves kutató rengeteg képpel, ábrával és animációval illusztrált diasora mentén a tranzisztoroktól a nano- és kvantumtechnológiáig tekintette át a fejlődést, és tett összehasonlításokat. Például az 1947-ben létrehozott tranzisztortól mára eljutottunk a szembe ültethető chipekig. Célunk az agyi működéshez jobban hasonlító technológiák létrehozása. Az IBM 2014-ben készített TrueNorth chipje például neuromorf CMOS integrált áramkör.

A miniatürizálást a „The Scale of Things – Nanometers and More” képpel is érzékeltette Kroó Norbert. A jövő, amelynek kutatása már folyik, kiterjed többek között a molekuláris elektronikára, a karbon felhasználására, a spintronikára, a kvantum- és az optikai nanotechnológiára. Ezután hallottunk többek között a plazmonikáról, amely a plazmonokkal foglalkozó tudomány. A kutatók a fény segítségével a fémfelületen lévő ún. vezetési elektronokat hullámszerű mozgásra kényszerítik. A mozgásban sűrűsödések és ritkulások váltják egymást, amelyek hullámhossza rövidebb a gerjesztő fény hullámhosszánál. Ennek az új típusú fénynek a neve felületi plazmon. Kroó Norbert maga is készített mikroszkópot a plazmonok vizsgálatához.

Ezután áttekintést kaptunk a kvantumforradalmakról: az első a múlt században volt, amikor megfogalmazták az alapjelentéseit és megalkották valószínűségi elméletét; a második ebben a században, amikor megtanultuk manipulálni a kvantummechanikai folyamatokat. Ő is megjegyezte, hogy most sem kell attól tartania az embernek, hogy nem lesz munkája az új technológiák miatt, mert magasan képzett szakemberekre bőven lesz szükség. Említésre került a kvantumkriptográfiai is, valamint hogy mesterséges leveleket készítenek kvantum fotoszintézishez, amelyek lényegesen jobb hatásfokkal működnek, mint a mai áramtermelésre használt technológiák.

Kroó Norbert

Kroó Norbert előadását azzal zárta, hogy a vörösbegy vándorlása során navigációjához kvantummechanikával leírható jelenségeket is használ. Ennek mechanizmusa nagy vonalakban úgy zajlik, hogy a szemében lévő kriptokróm molekulák kémiai tulajdonságait közvetve befolyásolják a Föld mágneses mezejének finom változásai, mert eltéríthetik az elektronok kvantum-állapotát (spinjét). (Speciális kalitkába zárva madarakat és mérve a körülöttük lévő mágneses tér frekvenciáját, erejét, polaritását, a kutatók azt állapították meg, hogy a Föld mágnesesmező-erejének akár már 3000-ed része is megváltoztatta repülési irányukat, ami pedig csak az atomoknál is kisebb részecskék kvantumfolyamataival magyarázható.) És minden bizonnyal agyunk is kvantummechanikus…

Az NJSZT rendezvények ajánlása

Én évente több NJSZT rendezvényre elmegyek, amelyeken színvonalas tudományos, illetve ismeretterjesztő előadásokat hallhatok impozáns környezetekben – bár kétségtelen, hogy az MTA dísztermei kiemelkednek közülük. Ajánlom e blogbejegyzés olvasóinak is, hogy látogassanak el a közeljövőben valamelyik NJSZT-konferenciára.