A programozási nyelvek után megvizsgáljuk, milyen szempontok alapján mérhetők a fejlesztői környezetek, amelyeken keresztül bontakozhatnak ki a nyelvek érdemei, és – esetleges – gyengeségei.
A fejlesztői környezetek szokásos funkciói: programszerkesztés, fordítás (compiling+building), futtatás, nyomkövetés, esetleg beépített tesztelési lehetőség, refaktorizáció vagy segítség a dokumentáció generálásában.
A refaktorizáció alatt a program kódjának átszervezését értjük; például egy több modulból álló projekt esetében egy azonosító megváltoztatását a teljes forráskódban, vagy egy kódrészlet eljárássá alakítását.
2.3.1.1. Forráskód szerkesztés – felület – statikus támogatás
Az első részfeladat rábízható a legegyszerűbb szövegszerkesztőkre is. Mára már számos programszerkesztésre specializálódott szoftver került a piacra, amelyek rendelkeznek a legalapvetőbb szolgáltatásokkal: strukturált tagolás, programozási nyelv-függő ún. kódkiemelés (code highlighting). Ilyenek például: BSEdit, Notepad++.
Komplett fejlesztői környezetek közül néhányat kiragadunk, hozzájuk rendelve azon programozási nyelveket, amelyek szerkesztéséhez ajánlják: Geany – Pascal, PHP, Java, Python...; NetBeans – Java, PHP; Visual Studio-C++, C#,BASIC...; Code::Blocks – C, C++, MATHLAB;... Elvárható szolgáltatásaik a fentebbi minimumokon túl az automatikus szintaxis buborékok (hint vagy intellisense) megjelenítés, illetve az ún. kódkiegészítés (code completion), amelyek gyorsabbá és biztonságosabbá tehetik a kódolást. Egyes fejlesztői környezetekben az intellisense a felhasználó által leggyakrabban használt lehetőségeket kínálják fel elsőként.
Hint alatt mi egy statikus szintaxis buborékot értünk, intellisense alatt pedig egy jóval többet tudót.
Az oktathatóság szempontjából különösen nagy jelentőséggel bír a súgók léte, milyensége. Nagy nehézséget jelent, ha a súgás kimerül egy internetcímre való utalásban. Így volt a FreePascal, és a Lazarus piacra kerülés korai szakaszában. Komoly problémát jelenthet, ha a tanuló – főleg a fiatalabb korosztály – a súgót nem éri el a saját anyanyelvén.
A menüvezérelt súgó kívánja meg a legtöbb humán beruházást: hosszas keresést, rossz esetben nyelvi nehézségeket okoz (idegen nyelvű, félig lefordított, érthetetlenül fordított szövegek miatt); garantált a kudarcélmény. A speciális billentyűvel vezérelt menüs szoftverek sokszor rendelkeznek a helyzetérzékenységgel, azaz olajozzák a problémamegoldást.
Léteznek olyan rendszerek, amelyek természetes nyelvi változatok (menük, súgók) létrejöttének elébe mennek azzal, hogy publikálják az átírás módszerét. Jó példa erre a Notepad++ kódszerkesztő.
notepad-plus-plus.org/contribute/binary-translation-howto.html
A kódírást segíti a leggyakrabban használt kódrészletek (code snippets) újrahasznosításának lehetősége:
Itt is a Visual Studio-t hozva fel példának, a kódrészleteket a ToolBox-ra húzhatjuk és később innen egy mozdulattal a kódba húzhatjuk ezeket, mintha vezérlőket használnánk. Nagyon hasznos szolgáltatás lehet, ha a fel nem ismert típusok vagy névterek esetében a fejlesztői környezet kérésre megkeresi és használatba veszi a névteret, illetve deklarálja a megfelelő típust, ahogy a Visual Studio teszi.
Szintén a kódolásban segít, ha könyvjelzőket tehetünk egy-egy kódsorhoz, vagy ha feladatlistákat hozhatunk létre, pl. a Visual Studio-ban vagy a Code::Blocks-ban speciális megjegyzésekkel (ToDo) megjelölhetjük azokat a helyeket, ahová vissza akarunk térni.
A Visual Studio vagy az Eclipse mindezeken túl a refaktorálásban is segítséget nyújt.
Komoly figyelmeztetés azonban mind az ELAN, mind az LCN Logo erőszakos programszerkesztője. Ez annál is inkább elgondolkodtató, mivel mindkettő dicséretes módszertani okból tette. Az ELAN-probléma: a felülről lefelé programtervezést a kódolás szintjére úgy viszi tovább, hogy a programozó mindig csak egyetlen finomítást láthat maga előtt. Ez a csőlátás nem mindig előnyös.
Az LCN Logo a tagolással kényszeríti a szerkezetek alárendeltségi viszonyainak kifejezését, akárcsak a Python, csakhogy a szerkesztő ezt hihetetlenül ügyetlenül teszi: ha a programozó véletlenül kilép a megfelelő szintről, javítási céllal hihetetlen körülményesen tud csak visszakecmeregni.
Dicséretes szolgáltatása pl. a Code::Blocks-nak a forráskód egy adott stílusúvá (bekezdés-struktúrájúvá) átszervezés.
Egyes fejlesztői környezetek, így a Visual Studio Ultimate is (egy kiegészítés telepítésével Architecture and Modeling Tools) képes bizonyos szinten az UML terv alapján automatikus kódgenerálást is végrehajtani. A programkészítés szerves része a dokumentáció készítése, bizonyos fejlesztői környezetek ebben is segítséget nyújtanak pl. a Delphi IDE vagy az Eclipse a javadoc segédprogram felhasználásával.
2.3.1.2. Futás, nyomkövetés – dinamikus támogatás
A fejlesztői környezetek nagy többsége a fordítást és a nyomkövetést (ha egyáltalán ez utóbbit szolgáltatja) külső programokra bízza. Biztos, hogy előnyösebb az a fejlesztői környezet, amelyben beállítható, hogy mely külső program végezze ezeket a funkciókat.
A Geany nem kínál nyomkövetési szolgáltatásokat, a Code::Blocks, a NetBeans GUI, a Turbo IDE igen, a Visual Studio még a különböző nyelveken készült projektek között váltva is képes erre.
A több-ablakos megjelenítésű nyomkövetési rendszerre mutat példát a következő ábra, mégpedig a konzolos világból. Erre természetesen a fejlettebb GUI-s társai is képesek. A futó program ilyen sokoldalú elemzésével lényegesen pontosabb képet nyerhetünk a programról, mint egy egyszerű futtatással. A nyomkövetésnek, különösen több-ablakosnak az oktatás kezdeti stádiumában éppúgy, mint később, komoly hasznát vehetjük, tehát didaktikai jelentőséggel bír. Kezdetben a program működésének kézzelfoghatóvá tételét biztosíthatja.
Fordítási kalibrálhatóságának is jelentősége lehet. A biztonságos vagy hatékony kód generálása közötti választást akár globálisan (a program egészére), akár lokálisan (egy-egy kóddarabra fókuszálva) fölkínálja-e. Ez egy fontos kérdés, hiszen a biztonságos kód maximálisan szükséges a fejlesztés közben, amíg a hatékonyság a végeredményül született kódnak jó tulajdonsága.
Alapvető elvárás, hogy hibafelderítő mechanizmusok (indextúllépés, típussértés) legyenek beépíthetők, illetve kikapcsolhatók.
A feltételes fordítás lehetősége a haladóbb programozás oktatásnál programozottan finomabb kontrollt biztosíthat egy olyan programozási nyelv+fejlesztői környezet esetében is, amely nem ad lehetőséget futás közben programállapot ellenőrzésére (előfeltételek, invariáns állítások teljesülése), hiba esetén kivétel dobására. Ilyenre mutat példát a [SzP4] dokumentum.
A böngészőben futó (szkript) nyelvek helyzeti előnyben vannak a többiekkel szemben azáltal, hogy mindig kéznél van a futtató környezet. Ha ezzel megelégszünk, gyakran le kell mondanunk a nyomkövetés hasznos funkciójáról. Bizonyos böngészők esetében beépülő, szkript kontrollt lehetővé tevő pluginek állnak rendelkezésünkre (Firefox – Web Developer’s Toolbox; Explorer – IE Developer Toolbar; Chrome, Safari – Developer Tools).
![]() ![]() |
![]() |
![]() |
A tananyag az ELTESCORM keretrendszerrel készült