Régi IDE-kre emlékszel-e még?

Valamikor a '90-es évek elején kezdtem programozással foglalkozni. Akkor még nem értettem pontosan mit is csinálok, de lenyűgöztek az általam használt eszközök, különös tekintettel a rendelkezésemre hardverek korlátaira.

Turbo C++

Azóta sok-sok év eltelt, rengeteget tanultam, így most nagyon szórakoztató tud lenni ezeket a régi eszközöket újra elővenni és nosztalgiázni rajtuk egy kicsit.

Akkoriban a tisztán szöveg alapú IDE-k (Integrated Develeopment Environment) uralták a piacot, a Windows még nem tarolta le a PC ipart. Ezeknek az IDE-knek nem nagyon kell szerénykedniük a maiakkal szemben, de mégis olyan mintha egy sötét korszakon mentünk volna keresztül, és elvesztettünk egy csomó olyan funkciót, ami csak most kezd újra a felszínre törni.

Az első szerkesztők és TUI-k

A '90-es években, majdnem minden DOS alkalmazás egy teljes képernyős TUI (Text User Interface) program volt. Karakterekből rajzoltak ablakokat a képernyőre, karakterekkel vetítettek árnyékokat egymásra az ablakok, de még az egér támogatás is megoldott volt. Valahogy így:

<DOS Editor

Minden program egy különálló sziget volt az alkalmazások tengerében, mindegyik egyedi felhasználói felülettel rendelkezett. Mivel a 80x25 karakter nem sok variációs lehetőséget adott, ezért eléggé hasonlítottak is egymásra, ráadásul a működésbeli, kezelhetőségbeli különbségek sem voltak jelentősök. Miután egyszer megtanultad, hogy az Alt billentyű megnyitja a menüket, a Tabbal lehet mozogni a beviteli mezők között, onnantól kezdve szinte bármelyik programot könnyen kezelted.

De most inkább beszéljünk a szövegszerkesztőkről. A Microsoft az 5-ös DOS-tól kezdődően az operációs rendszerrel együtt szállította a saját TUI szövegszerkesztőjét, az EDIT.COM-ot. Ez nem igazán programkódok írására volt kitalálva, de megoldható volt ezzel is: mentés, kilépés, fordítás, futtatás, és vissza szövegszerkesztőbe, fájl megnyitás, visszanavigálás oda, ahol abbahagytad, szerkesztés.

Az igazán profik ekkoriban SideKick Plus-t használtak, ami igazából nem kódszerkesztő volt. Leginkább PIM (Personal Information Management) alkalmazást volt, beépített szövegszerkesztővel. A menőség az volt ebben, hogy TSR (Terminate and Stay Resident) program volt, ami azt jelenti hogy képes volt a háttérben futni, és amikor szükség volt rá, akkor a Ctrl+Alt billentyű kombinációval elő lehetett hívni.

Borland SideKick Plus

Ezzel a TSR megoldással gyakorlatilag a multitaskingot nem támogató DOS-on is lehetett multitasking műveleteket végezni. Ez azért volt hasznos, mert a kód szerkesztés és a fordítás között gyorsan lehetett váltani.

Emellett, néhány éve már léteztek valódi IDE-k is. A Turbo Pascal 1.0 (1983) talán ez első integrált fejlesztői környezet, bár ekkortájt nem az ikonikus TUI felülete volt még. A QuickBASIC (1986) volt ez első "tradicionális" TUI alapú IDE. Ugyanaz volt mint az EDIT.COM, gyakorlatilag ugyanaz a szövegszerkesztő volt mindkettő. Az MS-DOS 5 már a QBasic-kel jött ki, ami a QuickBASIC butított verziója, nem tudott natív kódot fordítani, de kinézete ugyanaz maradt.

A Borland Turbo széria

Az IDE-k koronaékszere - véleményem szerint - a Borland Turbo széria volt: Turbo C++ (1990), Turbo Assmbler, Turbo Pascal. Ezek nyelv specifikus fejlesztői környezetek voltak, de mindegyiknek teljes képernyős, extrém hatékony TUI felülete volt. Ezt nézd! Szintaxis kiemelés:

Turbo C++ Syntax Highlighting

Fordító integráció és diagnosztika:

Turbo C++ Compiler Integration

Integrált projekt és fordító rendszer menedzsment:

Turbo C++ Integrated project and build management

Debugger töréspontokkal, verem figyeléssel:

Turbo C++ Breakpoints and Stack traces

Referencia kézikönyv:

Turbo C++ Reference Manual

Csak emlékeztetőül, több mint 30 évvel ezelőtt a '90-es évek elején.

A Turbo C++ és a Turbo Pascal lelkes felhasználója voltam, amikből sokat tanultam. Emlékszem, hogy a conio.h-t használtam a saját programjaim TUI-jainak megvalósítására, majd a graphics.h-t a grafikus felületekhez. Ja, és mindezt internet nélkül. Nem volt StackOverflow. Az IDE-k mindent tartalmaztak, ami program megírásához, fordításához kellett. Rengeteg idő, energia, kísérletezés árán tanultuk meg, hogyan működnek a dolgok.

És mi volt a helyzet a Linuxszal akkoriban?

Lássuk. Linus Torvalds 1991-ben jelentette be a Linux fejlesztésének kezdetét. Ekkoriban a Linux programok is mind szöveg alapúak voltak, de nem rendelkeztek teljes képernyős TUI-val. Ez egyszerűen nem a "the Unix way". Amikor a Linux megjelent és elkezdett terjedni én már sokkal jobban kinéző programokat írtam.

Mindenesetre, ez nem akadályozott meg abban, hogy nem használjam a Windowst. A Linuxot akkoriban mint valami mellék/hobbi projektként kezeltem. Egyszerűen nem értettem a Vim, sem az Emacs működését. Az sem volt világos, hogy mások miért dicsérték ezeket. Bár teljes képernyősök voltak, de nekem ezek erő visszalépésnek tűntek. A Vimben volt valami szintaxis kiemelés is, de messze nem volt IDE-nek nevezhető. Az Emacs-et be lehetett állítani, hogy integrálódjon néhány, kódolást segítő funkcióval és hasonlókkal, de Turbo IDE család közelébe sem ért.

Csak meg kell nézni az alapértelmezett Emacs konfigurációt. Ez ma is így néz ki, nem sokat változott már ha változott egyáltalán) Vannak ugyan ablakai, de dekoráció nélküliek, így elég nehéz megkülönböztetni őket. A színekkel is elég fukarul bánik. Menüsorra hajazó valami is van benne. Ha megnyomod az M-et ahogy az instrukció mondja, egy nagyon fura felületet kapsz a menüben való navigációhoz, ami miatt elgondolkodik az ember, hogy vajon miért áldoztak fel egy teljes képernyősort egy olyan menüsor megjelenítésére, ami nem csinál semmit.

Emacs

Próbáld ezt most odaadni egy kezdőnek, hogy ebben írjon, fordítson és debuggoljon egy programot. Kínlódás szenvedés lesz a navigáció is a szerkesztőben, nem hogy a fordítás meg a projekt menedzsment.

Csak összehasonlításképpen: a post írásakor elindítottam a Turbo C++-t DOSBoxban, percek alatt írtam egy "hello word" programot, könnyedén eligazodtam a környezetben, mindezt úgy, hogy majdnem 30 éve használtam utoljára. Viszont a teljesen integrált és intuitív környezet nem hazudtolta meg magát. Na jó, mire a végére értem, már előjöttek az emlékek is.

Kortárs TUI IDE-k

Mindegy is. Felejtsük el a múltat, és nézzük meg, mi van ma a TUI-világban. Nem akarok a GUI-kkal foglalkozni, mert... nos, a Visual Basic volt a grafikai programozás csúcsa, és azt sem használjuk már, ami szintén egy másik poszt témája lehet. (Nos, jó, van a Gambas... de azt ki ismeri?)

A Borland Turbo C++ környezet legközelebbi, modernebb megfelelője az RHIDE. Ahogy az alábbi képen látható, hihetetlenül hasonlít - és elnézést kérhet, aki azt gondolja, hogy ez Turbo C++. Sajnálatos módon ez csak DOS rendszeren fut, és úgy tűnik, hogy nagyrészt elhagyatott, legutóbbi kiadása már 7 éve történt.

RHIDE

Aztán van még Free Pascal. Ez áll a legközelebb a régi élményhez, de egy modern kódbázissal, amely natívan fut Unix rendszereken és bármilyen méretű terminálon.

Free Pascal

És végül van QB64. Ez nagyon hasonlít a Microsoft QuickBasic-re, de… ne hagyd, hogy becsapjon: bár úgy néz ki, mint egy TUI, valójában egy GUI-alkalmazás, amely egy TUI-t szimulál. A QB64 nem tud terminálban futni.

A Free Pascal, és a QB64 is karbantartott és viszonylag aktív fejlesztés alatt áll, a legutóbbi kiadások 2021-ben jelentek meg… de többnyire figyelmen kívül hagyják őket, mert olyan nyelveket tárnak használnak, amelyek a legtöbb embert nem érdeklik manapság.

Személyes kedvencem a Free Pascal:

FreePascal

Van egy-két multiplatform projekt, ami Free Pascalban készül, mivel GUI alkalmazások, nem a FP IDE-ben készülnek, hanem Lazarusban. Ezzel kb egy nyílt forráskódú Delphit kapunk. Az Free Pascal IDE-nek van magyar vonatkozása is. Az egyik fejlesztője Bérczi Gábor, ismertebb nevén Sting a Prog.hu és a PC Fórum főszerkesztője.

"Valóban" kortárs konzol IDE-k

Mi marad tehát ma a modern nyelvekhez?

A legkorszerűbbnek tűnik a Neovim, a Doom Emacs vagy akár a Helix. Ezek a szerkesztők nagyon erősek, és a különféle bővítményeknek köszönhetően ésszerű IDE-szerű élményt kínálnak. Ennek ellenére, ha engem kérdeznek, ezek egyike sem nyújt olyan élményt, mint a korábbi Borland termékek: felületeik homályosak, és többnyelvűségük miatt szinte mindenben jól működnek, de mindenre nem jók.

Mindenesetre részemről az előnyben részesített "egyszerű" TUI-szerkesztő, úgy tűnik, hogy… GNU Nano… ami rendben van, működik, de nem IDE, a megjelenése pedig a CP/M időkben szerzett első tapasztalataimat juttatja eszembe a szövegszerkesztővel. Tessék, nézd csak:

GNU Nano

Tehát annak ellenére, hogy manapság vannak hatékony konzolszerkesztőink, nem egészen ugyanazt az élményt nyújtják, mint 30 évvel ezelőtt. Valójában úgy tűnik, ez alatt a 30 év alatt sok szempontból visszafejlődtünk, és csak most érjük el a jellemzők egyenrangúságát néhány korábbi funkcióval.

Természetes, hogy a TUI-k népszerűsége csökkent, miután a grafikus operációs rendszerek elterjedtek, és kissé érdekes, hogy most térnek vissza. Ami az okát illeti, azt hiszem, az LSP feltalálásának kell köszönnünk az ezen a területen elért közelmúltbeli előrelépések nagy részét. A TUI-szerkesztők sok éven át "tartásban" voltak, mert az IDE-funkciók kiépítése sok erőfeszítést igényelt, és a kis karbantartói bázisuk nem engedhette meg magának ezek megvalósítását. Az LSP hozzáférést biztosított a meglévő nyelvspecifikus integrációkhoz, és újra felkeltette az érdeklődést a régi és megbízható Vim és Emacs iránt. Remélhetőleg a közelgő BSP még többet tesz azért, hogy ezek a TUI-k IDE-szerűbbé váljanak.

De mért is kellene TUI IDE manapság?

Teljesen jogos feltenni a kérdést: "Kit érdekel? Most már minden asztali számítógépen és laptopon grafikus operációs rendszer fut!"

Az első az, hogy a TUI IDE kiválóan alkalmas távoli gépeken végzett munkához – még a VSCode-nál is jobb. Bármely gépre könnyedén lehet SSH-t tenni, és már indítható is az IDE. Tmux-szal kombinálva, és "teljes" multitaskingot kapsz. Igen, lehetne távoli asztali klienst használni az SSH helyett, de mindig is nehézkesnek találtam őket a késés és a helyi asztali parancsikonokkal való nem megfelelő integráció miatt.

A második az, hogy a VSCode távoli bővítményei nem nyílt forráskódúak, ami nem nagy probléma… kivéve azt a tényt, hogy nem működnek, mondjuk, FreeBSD-n, és nincs mód a javításukra. Így ez lehetetlenné teszi számomra, hogy a VSCode segítségével távolról fejlesszek az elsődleges fejlesztői szerveremen.

A harmadik pedig… sokkal kevesebb erőforrás-felhasználás.

Bloat mindenhol

Év végül pár szó a "bloat"-ról. A Borland Turbo C++ az összes mindenével (a felhasználói felület, a C++ toolchain, az integrált kézikönyvek…) kevesebb, mint 9 MB a telepítés után, és 640 kb RAM-on belül futott.

Összehasonlításképpen, a Helix 16 MB a lemezen, ami elég lenyűgöző (és őszintén szólva váratlan), de a Doom Emacs körülbelül 500 MB, és sok MB RAM-ot fogyaszt. Ne feledjük azonban, hogy ezek a számok egyike sem a nyelvi toolchianeket vagy súgórendszereknek nem tartalmazzák, ezek még súlyos GByteokat foglalnak a térhelyünkön..

Ahhoz, hogy "igazi" IDE-ket kapjunk, olyan grafikus programokra kell váltanunk, mint az IntelliJ vagy a VSCode. A VSCode például körülbelül 350 MB-ot foglal a lemezen (meglepő módon kevesebb, mint a Doom Emacs), de megeszi a számítógépet ebédre: végülis ez is Electron. Azt vettem észre, hogy nagyon jelentős megtakarítást értem el a laptop akkumulátorának élettartama terén, miután elhagytam a VSCode-ot, és a Doom Emacs-re váltottam.

Tehát a kérdés: tényleg sokat fejlődtünk 30 év alatt? A modern IDE-k rendelkeznek néhány jobb refaktoring eszközzel, jobb funkcióval és több nyelvet támogatnak, de alapvetően… nem sokat változtak. Az egyetlen jelentős különbség, amit kezdünk látni, a mesterséges intelligencia által támogatott kódolás lehet, de ezt többnyire távoli szolgáltatás biztosítja, nem a telepített kód!

Ennyi. A magam részéről helyzettől függően a Doom Emacs-ot, a GNU Nanot, VSCode-ot, vagy az IntelliJ használom.

Doom Emacs:

Doom Emacs

Címkék: