Lazarus 2.2.2

Címkék

Megjelent a (Free) Pascal-hoz használható, Delphi-kompatibilis, keresztplatformos, nyílt forráskódú és szabad szoftver Lazarus integrált fejlesztői környezet 2.2.2-es kiadása. Bejelentés itt.

Hozzászólások

Szerkesztve: 2022. 05. 20., p – 12:01

A végén átveszi a Delphi helyét. Az most úgyis bajban van, mert a fejlesztés jelentős részét Oroszországba szervezte ki az Embarcadero költséghatékonyság miatt. Ott pedig most vannak problémák. Ez pedig nem egy olyan fejlesztés amit csak úgy tovább lehetne vinni Indiába. 

Szerintem nem a költséghatékonyság miatt szerverzték ki, vagyis nem elsősorban, hanem ahogy nézem, ez az egész Delphi, Lazarus téma az orosz fejlesztőknél népszerű, pl. a Double Commander (orosz, ukrán fejlesztők szoftvere) is azt használ. Gondolom ők szeretik annyira, hogy foglalkoznak vele. Arrafelé még sokan mást használnak, nem váltottak modernebb trendekre, pl. a git-re se nagyon, hanem még sourceforge-on és egyebeken nyomják.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Hihetetlen, hogy ezt még mindig fejlesztik és használják is még. Eleve a Pascal, Delphi használata is meg szokott lepni, nem hogy a Lazarus IDE. Ugyanis ma már az IDE kb. mindegy, normiknak Visual Studio Code és Atom, haladóknak vim, neovim, Emacs és annak számos disztribje ott van, plusz micro, helix, kakoune, stb., a Notepad++/notepadqq, Sublime, stb.-ről nem is beszélve, szinte tengernyi a választék, és akkor még a valódi IDE-kre ki sem tértünk. Ráadásul a felsoroltak univerzális megoldások, nyelvfüggetlenek, stb.. Mindegy, azért becsülendő, hogy foglalkoznak egy ilyen régi projekttel, nem hagyják támogatatlanul veszni, csak nem értem a motivációt mögötte.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

csak nem értem a motivációt mögötte

Próbáld ki, majd megérted. Megírod a programodat és utána lefordítod oda, ahova akarod (már, ha támogatva van az az OS/CPU). Nem kell portolni, csak simán fordul (ritka kivételektől eltekintve). macOS, Linux, BSD-k, Solaris, mindenféle egzotikus platform és persze windows is.
A kapott kód sebessége nagyságrendekkel jobb, mint a manapság divatos nyelvekben írtaké, nem sokkal marad el a C++-ban írt kódoktól, sőt, adott esetben előzi is őket. (A C-nél már nagyobb az olló.) A függőségek integrálása miatt kapott bináris ugyan eleinte nagynak tűnhet az alaphangon 2 MB-tal, úgy, hogy még "nincs benne semmi", de amikor már egy elég komplex alkalmazást írtál meg benne és még mindig 4 MB alatt vagy, akkor már egyértelmű, hogy távolról sem egy bloatware-generátorról van szó...és mivel a függőségek nagy része be van építve a binárisba, ezért tkp. a GUI toolkit kivételével nem függ kb. semmitől. Maga a FreePascal is olyan binárisokat forgat, ami elfut egy csupasz kernelen, nem kell neki sem libc, sem semmi.
Apropó GUI toolkit: megírod az alkalmazásodat és egy mozdulattal forgatod le GTK1, GTK2, GTK3, Qt4, Qt5, Carbon, Cocoa, MUI és még a jóég tudja miféle bindinggel, nem kell neked megcsinálni a különféle bindingeket, mint C/C++ alatt, hanem egyszerűen oda fordítja az LCL hívásokat, ahova kéred. (Sajnos XForms, Motif, GNUStep és Qt3/TQt támogatás nincs még.)
Még GUI: Lazarusban pillanatok alatt lehet összekattingatni a legkomplexebb GUI-kat is, nem kell kínlódni a layoutokkal, minden összerakható, mozgatható, beállítható és felprogramozható vele. (Na, hát majdnem minden.) Pár éve a Qt5 GUI szerkesztőfelülete még sokkal gyengébb volt, mint a Lazarusé.
És a fordítási sebesség is nagyon jó: az én tíz éves gépemen egy komplexebb alkalmazás 2-3 másodperc alatt lefordul vele; ugyanez a hasonló volumenű C/C++ programoknál perceket jelent.

Nos, ez a motiváció mögötte. Egy nagyon jól kitalált és nagyon jól megvalósított nyelv, fordító és ökoszisztéma, amiben élvezet fejleszteni és élvezet használni a végeredményt is.

Amikben gyengébb, mint a C/C++, az az abszolút kódsebesség, a bináris mérete (bár C/C++ esetén a külső a függőségek miatt ez csalóka) és hát en-bloc a hordozhatóság, hiszen C/C++ mindenre van, még kenyérpirítóra és öngyújtóra is, Pascal meg nincs. Valamint az, hogy több nagyságrenddel kevesebb ember használja. Ez persze már nem magának a nyelvnek/ökoszisztémának a hibája, csak ha bajod van, akkor kevesebb eséllyel találsz rá megoldást a neten és ha van egy Pascalos rendszered, akkor kevesebb eséllyel találsz rá embert is.
Viszont cserébe a Pascalosok centralizáltabb közösséget alkotnak; míg a többi nyelvnek nincs defacto fóruma, addig a FreePascal/Lazarusnak van, ott tömörül a Pascal userek többsége és ott a legtöbbször tudnak rajtad segíteni, ha bajod van, bár sajnos nem mindig. (A másik ilyen centrum az Embarcadero fóruma, azzal még nincs tapasztalatom, ott a Borland Pascal/Delphi userek tömörülnek, bár egyébként az átfedés viszonylag nagy, mind a felhasználók, mind a két nyelv/ökoszisztéma között, de nem 100%.)

Jó tudni. Használtam én is Lazarust, de csak tanulgatás képpen, volt az jó 15-16 éve is. GUI-t sose építettem alatta, csak meglévő pascal-os programokat fordítottam le vele újra. Bajom nem volt vele, de ahogy írod, a C/C++ mellett csak redundánsnak tűnik az egész, mert a C-család nyelvei portolhatóbbak, gyorsabbak, többféle IDE-megoldás is elérhető hozzájuk. A Pascal/Delphi kicsit úgy járt, hogy a fordítók korlátosak maradtak hozzá, megrekedt oktatónyelv szintjén. Ugyanez volt a BASIC-kel (azokhoz még rosszabb fordítók voltak, meg interpretált szutykok), pedig ezekkel a nyelvekkel nem lenne baj, csak olyan jó fordítókat meg libeket, stb. nem kaptak, meg nem portolták őket át olyan sok platformra, mint a C-család nyelveit, és így csak elhalt az egész. Mondom, ez nem a nyelv korlátja, hanem a köré kiépült ökoszisztémáé.

GUI építésben nem vagyok otthon, minimálisan tisztában vagyok a toolkit-ekkel, Gtk, Qt, motif, fltk, wxWidgets, stb., de én sose foglalkoznék ilyennel, főleg, hogy átálltam csak CLI/TUI alkalmazásokra, amik szerintem sokkal hatékonyabbak.

Az is igaz, hogy vannak a Pascal-nál, Delphinél régebbi redundáns nyelvek is életben, pl. Fortran-t életben tartotta a sok matekszoftver, ami ráépül, meg a GPU computing, a Cobol-t az üzleti mainframe világ, stb.. Sok nyelv réginek számít ma már, Lisp, C, POSIX shell script, de azok meg nem életben vannak tartva, hanem ténylegesen maradt fent annyira széles használati körük, hogy sose kezdték meg az elavulást, annyira aktívan használva vannak folyamatosan, tömegesen, és nem tudják őket kiszorítani a modernebb alternatívák sem, Closure, Racket, Haskell, valamint C++, Go, Rust, Python, stb.. Utóbbiak nagyobb szeletet hasítottak ki, népszerűbbek, ebben nincs kétség, de a nagy elődöket nem tudták annyira megszorongatni, hogy azok kihaljanak vagy rétegnyelvnek szoruljanak vissza.

Kicsit a Perl-t is redundásnak érzem, annak ellenére, hogy pl. használgatom elvétve, plain text és markup alapú szótárformátumokat konvertálgatok vele regexpek mentén, meg flat adatbázisokat bizergálok, arra bőven jó, gyors, nem kell PHP-t meg 50 kiló Python libet telepíteni, és a shell scriptes megoldásnál meg nagyságrendekkel gyorsabb, C-nél viszont egyszerűbb, mert nem kell kézzel fordítgatni. Tehát nem az, hogy baj lenne vele, annak ellenére, hogy a Pyhton, PHP mellett redundáns szerintem.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

a C-család nyelvei portolhatóbbak

Ez nem feltétlenül igaz. Igen, több platformra elérhető C/C++ fordító, viszont ahova elérhető a Pascal, azon platformok között sokkal könnyebb az átjárás Pascal alatt, mint C/C++ alatt.

többféle IDE-megoldás is elérhető hozzájuk

Viszont a Lazarus übereli mindet. ;)

A Pascal/Delphi kicsit úgy járt, hogy a fordítók korlátosak maradtak hozzá, megrekedt oktatónyelv szintjén.

Mióta? Idehaza pl. volt egy időszak, amikor a fél ország vállalatirányítása és mindenféle belső intézményi szoftvere Delphi alapokon ment.

így csak elhalt az egész

Dehogy halt el, hát nem látod, hogy él is virul? Csak underground. De a C/C++ régen is sokkal populárisabb volt.

Elhiszem. Nem is azt írtam, hogy a Delphi meg a Lazarus rossz, csak hogy elhalt (ezen én is az undergrounddá válást értem), és meglep, hogy így életben van tartva mégis. Igen, a 90-es években marha népszerű volt, mert akkor a legtöbb helyen az országban Pascal-t tanítottak általános progtárgynak, mindenki azt ismerte, azért. C-t akkor csak a kiváltságosabb kör ugatta, ha valahol tanították neki, vagy olyan körökben forgott, hogy hozzájutott. Gyerekként én is Pascalt tanultam egyéniben, mert ahhoz volt könyvem, meg beszerzett Turbo Pascal 5 programcsomagom (utána meglett a 6-os is, majd később a 7-es, ami már Borland Pascal néven futott). Később szereztem C könyvet, de C-hez nem volt olyan ismerősöm, aki odaadta volna a telepítőjét (csak egy demó Turbo C-hez fértem hozzá, de az meg korlátos volt, nem használható), és ne felejtsük, hogy akkoriban még a legtöbb embernek nem volt internete, ahonnan ezt olyan könnyen le lehetett tölteni, mint ma. Még egy ingyenes gcc-hez is Linux kellett, és hiába volt ingyenes, ahhoz meg valami újságmelléklet kellett, vagy a CD-t megrendelni, meg kellett alá kompatibilis hardver, meg csomó lemezhely (meg egy CD olvasó), ezért sok embernek nem volt opció (míg a közkézen forgó Turhó Paszkál meg egy netről valahonnan letöltött, kisebb adatméretű freepascal compiler). Legalábbis az olyan nem szakmai körökben forgó, ergya gépes, DOS és Windows Matyiknak, mint én is voltam akkoriban.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

meglep, hogy így életben van tartva mégis

Azért ez nem egy lélegeztetőgépes sztori, többszázezer júzerrel.

a 90-es években marha népszerű volt

Meg még a 2000-es években is, legalábbis idehaza...

Egyébként a C/C++ sem volt beszerezhetetlen; a kalózoktól be lehetett szerezni Amigára, MS-DOS-ra és windowsra is.

Szerintem felreerted. Ez nem csak egy IDE. Olyan kornyezetet mondj ami out of the box tud GUI-t csinalni platformfuggetlenul, integralva. Nem vagyok egy Lazarus fan, regebben hasznaltam kicsit hobbi/tanulas celra, se munkam se hobby projektem nincs amiben GUI-t kellene csinalnom, de ha most hirtelen megis kellene nem tudom hogy allnek hozza...

Szeretem a Lazarust. Gyors, mindenhol elfut, még Raspberry Pi-n is! Ha GUI alkalmazást kell fejleszteni, nekem ez a svájci bicska. Nyilván ez azért van, mert az iskolában, először Turbo Pascalt tanultam. Utána C-t, C++-t és Delphit. Sokáig Delphivel kerestem a kenyerem. Később, oktatási rendszeren kívül jött a PHP, a Java és a Python. Ezek közül a Python lett a kedvenc, de ezt csak saját kis QGIS szkriptjeimhez és CLI cuccokhoz használom. Na de maradjunk a Lazarusnál! Rengeteg olyan osztályt, komponenst tartalmaz alapból, amit bármilyen más nyelvnél neked kell megírnod, vagy ha lusta vagy, valahonnan összeollózni. Azt szoktam mondani, hogy alkalmazást rajzolok. Tényleg. Tök szépen össze lehet kattintgatni szinte bármilyen felületet, bár én inkább az egyszerűség híve vagyok. Na jó, annyira talán nem mint a TCH féle YTFE, de semmi túlvariálás, csicsa. A Delphis cuccaimat szép lassan, különösebb erőfeszítés nélkül áttettem Lazarus alá úgy, hogy a felhasználók nem vettek észre semmit! 

Lehet, hogy oldschool, de engem pl a hideg kiráz tőle, hogy egy GUI-t (pl Python / Tkinter [ocsmány]) kódból rakjak össze (bár a PySimpleGUI tök jól leegyszerűsíti). Lekódolok egy gombot, meg mondjuk egy beviteli mezőt, amit nem látok, amig nem futtatom. Lefuttatom, nem jó, kicsit máshogy kellene, kilép, átír, futtat, goto 0. Ez egy egyszerű, egyablakos programnál még nem is vészes. De egy komplexebb több/sok ablakos programnál, ahol az adott ablakot, nem is látom rögtön a futtatáskor, hanem mókolni kell valamit, amivel előcsalogatom, horror.

Néha belefutok a YouTube-on egy-egy programozós vieóba, ahol a csávó úgy ír GUI appot, hogy csak egy Vim, meg egy természetesen mechanikus billentyűzet van előtte tudod, az az oldschool/retró féle, amin még numerikus billentyűzet sincs külön. Baromi menő, tényleg, ahogy zsonglőrködik abban a vacakban, amiből még normálisan kilépni se lehet. A meló jelentős része persze a GUI összepakolása XAML-ben. A lényegi kód meg kb a munka 1/3-a. Nem lenne jobb fordítva?