Ce n’est sans doute pas Niklaus Wirth, le père du Pascal, qui se retournera dans sa tombe. Le 28 août, Lazarus est passé en version 1 (puis 1.02).
Lazarus est un environnement de développement intégré permettant de programmer en Pascal objet en utilisant le compilateur Free Pascal et une bibliothèque de composants la LCL (Lazarus Component Library). Autrement dit, un clone libre de Delphi.
NdM : merci à olivierweb, baud123, Amine « nh2 » Brikci‐Nigassa, Professeur Méphisto, maboiteaspam et Nÿco pour avoir contribué à cette dépêche.
Sommaire
Du Pascal
Le Pascal est un langage de programmation impératif, procédural, statiquement typé, créé en 1970 pour enseigner la programmation structurée. Il est normalisé par deux standards : ISO 71851:1990 et ISO 10206.
Pascal-P et UCSD Pascal
Si le Pascal a connu un certain succès, c’est avant tout grâce à la disponibilité de compilateurs, peu onéreux et portables. Tout commença en 1969. Niklaus Wirth, en spécifiant le langage, essaya d’implémenter un compilateur en Fortran. Ce à quoi il renonça vite. Finalement, son équipe à l’EPF de Zurich produit un tout premier compilateur pour les CDC 6000. Il y eut d’autres implémentations, mais c’est le compilateur Pascal-P (également implémenté à Zurich) qui, en 1973, fut le premier vrai grand succès. Indépendant de la plate‐forme, il générait du code portable (le P‐code) exécuté par une machine virtuelle. Ce qui le rendit particulièrement facile à porter (6502, 8080, Z80 et DEC PDP-11, entre autres).
À partir du Pascal-P2, l’UCSD a créé une implémentation très populaire. Elle ajoute les unités (unit
) permettant de modulariser le code et un type String
. La machine virtuelle, P-System prend de l’ampleur et est considérée comme un véritable système d’exploitation. Nous sommes en 1978. C’est notamment l’origine de l’Apple Pascal distribué avec les Apple II comme alternative au couple DOS‐BASIC. Une partie de Mac OS Classic restera écrite en Pascal jusqu’à la version 7 (1991).
Borland
En 1983, Borland commercialise pour un coût modeste le compilateur Turbo Pascal. Générant du code natif, celui‐ci est bien plus rapide que ses prédécesseurs. Il a rapidement raison de l’UCSD, et même Microsoft avec le Quick Pascal n’arrive pas à rivaliser. Au fil des versions, Borland étoffe ses outils. En 4 années et 4 versions, Turbo Pascal devient un véritable EDI. En 1989, la version 5.5 ajoute le support de la Programmation Orientée Objet. À la sortie de sa 8e version, le produit fut renommé Delphi, c’était en 1995.
Delphi apporte un renouveau du modèle objet, ainsi qu’une bibliothèque de composants réutilisables : la VCL. Il est créé dans l’optique de faire du développement rapide d’applications (RAD — Rapid Application Development). Avec Delphi, le Pascal de Borland perd sa portabilité. Malgré une tentative tardive et ratée d’un portage sous GNU/Linux (Kylix) basé sur Qt, il restera axé sur le développement pour Windows.
Compilateurs libres
Il existe au moins deux compilateurs Pascal libres. GNU Pascal, écrit en C, est un frontal pour GCC datant de 1988. Il offre un bonne prise en charge du standard et du Turbo Pascal 7, ainsi que quelques éléments de Delphi. Le projet semble être au point mort depuis quelque temps.
FreePascal est un projet d’une toute autre ampleur. Il a démarré lorsque Borland a annoncé que Turbo Pascal ne prendrait plus en charge MS-DOS. Florian Paul Klämpfl a alors entamé le développement d’un compilateur alternatif directement écrit en Pascal. Celui‐ci prend aujourd’hui en charge de nombreux systèmes (GNU/Linux, FreeBSD, Haiku, Mac OS X/iOS/Darwin, DOS, Win32, Win64, WinCE, OS/2, MorphOS, Nintendo GBA, Nintendo DS, et Nintendo Wii) et les architectures Intel x86, AMD64/x86-64, PowerPC, PowerPC64, SPARC, ARM et tout récemment MIPS, 68000 et ColdFire. Il sait compiler le code Turbo Pascal 7 et la plupart du code Delphi, ainsi que l’Objective-Pascal (pendant de l’Objective-C). FreePascal est sous licence GPL. Le moteur d’exécution — runtime — et les paquetages sont sous licence LGPL modifiée.
De Lazarus
Lazarus est donc un EDI libre (licence GPL) multi‐plate‐forme, au‐dessus de FreePascal, qui poursuit deux objectifs : être un équivalent de Delphi et permettre d’écrire du code portable — Write Once, Compile AnyWhere. Le projet a débuté en 1999. Il lui a donc fallu 13 ans pour atteindre la version 1.
Fonctionnalités
LCL
L’objectif de la bibliothèque est de fournir des composants portables. Un composant peut être un élément visuel (bouton, étiquette…) ou non (connexion vers une base de données, thread, timer…). Chaque élément de celle‐ci possède une implémentation utilisant différentes bibliothèques graphiques. Cela permet de produire du code natif pour la plate‐forme cible.
Actuellement Lazarus prend en charge GTK (obsolète), GTK2, Qt, win32 (32 et 64 bits), WinCE et Carbon. Il est donc possible de compiler votre projet dans toutes les déclinaisons de systèmes, de bibliothèques graphiques et architectures. Par exemple, Mac OS X / QT / amd64, Windows / Natif / i686, GNU/Linux / GTK / PowerPC. Ceci, bien entendu, si votre projet se limite aux composants pleinement pris en charge par toutes les cibles. Une page résume l’état des différents portages vers les différentes bibliothèques graphiques. Cela reste donc très dépendant de la nature du programme à compiler, mais l’effort de développement va dans ce sens. Il est également possible d’utiliser directement la bibliothèque graphique (le code n’est alors plus portable).
var
GDIObject: PGDIObject;
Bitmap: TBitmap;
AImage: PGtkWidget;
begin
...
GDIObject := PgdiObject(Bitmap.Handle);
AImage := gtk_image_new_from_pixmap(GDIObject^.GDIPixmapObject,
GDIObject^.GDIBitmapMaskObject);
gtk_widget_show(AImage);
gtk_container_add(GTK_CONTAINER(MyForm.Handle), AImage);
end;
La version 1 voit l’introduction de LCL-CustomDrawn. Cette bibliothèque devrait permettre de dessiner les composants graphiques avec un minimum de primitives natives, et donc d’être plus indépendant de la bibliothèque graphique sous‐jacente (mais forcement moins bien intégrée). C’est la première interface à prendre en charge Android. Elle est également disponible pour X11, Windows et Mac OS X (Cocoa). La prise en charge des iPhone est prévue.
uses lazcanvas, lclintf;
var
MyLazCanvas: TLazCanvas:
begin
if nctLazCanvas in LCLIntf.GetAvailableNativeCanvasTypes(MyCanvas.Handle) then
begin
MyLazCanvas := TLazCanvas(LCLIntf.GetNativeCanvas(MyCanvas.Handle, nctLazCanvas));
// do something here with TLazCanvas
end;
L’autre grande nouveauté est que la LCL est désormais considérée comme une bibliothèque quelconque et, à ce titre, est donc recompilée automatiquement au besoin. Cela facilite grandement le portage d’un projet sur des plates‐formes différentes.
Il y a également eu un grand nombre de corrections de bogues et d’améliorations qui sont détaillées dans les notes de version.
EDI
Dans la lignée de Delphi, il s’agit d’un RAD, autrement dit d’un outil permettant le développement d’applications par glisser‐déposer. L’interface est multi‐fenêtre (à la GIMP) et demandera donc un peu de réglage lorsqu’on utilise un gestionnaire de fenêtres pavant.
Elle connaît de nombreuses améliorations : réorganisation de certains menus, boîtes de dialogue plus cohérentes et généralement moins de questions. L’éditeur bénéficie d’un pliage de code — folding — amélioré, d’un enregistreur de macro et affiche le nom de la classe/procédure en train d’être éditée dans sa barre de titre. Le désassembleur peut désormais mettre en corrélation le code binaire et les sources. Il gère par ailleurs les points d’arrêt. Le débogueur subit bien d’autres améliorations : meilleur affichage des registres, meilleure gestion des threads, plus de journalisation des événements, point d’arrêt dans les données, etc.
Avenir
Clairement le prochain enjeu sera le portage des applications sur les plates‐formes mobiles, avec en particulier la prise en charge d’Android et le développement de LCL-CustomDrawn. La version 1.2 qui est dans les tuyaux apportera également son lot de corrections de bogues et toutes les nouveautés liées aux évolutions du compilateur.
Bref, comme depuis 13 ans, Lazarus avance doucement, mais sûrement, avec ses ressources limitées et ses fans. Sa communauté, qui s’organise autour d’un forum, produit du code et de la documentation à son rythme, suivant les bonnes volontés et les envies de chacun. Lazarus ne gagne pas vraiment de parts de marché, et n’en perd pas non plus. Il n’a pas l’ambition de remplacer Delphi demain, mais reste, par sa place dans l’histoire du Pascal, par sa longévité et son évolution constante, un parfait exemple de projet libre réussi.
Aller plus loin
- L’annonce officielle (254 clics)
- Site du projet (525 clics)
- Site du compilateur Free Pascal (98 clics)
- Page du projet sur SourceForge (38 clics)
- Notes de version (31 clics)
# non, Pascal objet...
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
En fait, que ce projet soit encore actif n'indique pas que Lazarus n'est pas mort mais que : le pascal objet (Objective-Pascal et Delphi) est encore utilisé ; tout comme ce genre de RAD (on s'en doute bien que les plate-forme Visual-truc en toujours le vent en poupe) !
Merci pour cette belle dépêche.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# Merci
Posté par manuker . Évalué à 10.
Merci pour cette belle dépèche.
Ancien développeur Delphi, j'ai suivi Lazarus depuis presque le début et je suis ravi de voir le chemin parcouru et le professionnalisme du résultat.
Je ne suis plus du tout dans l'informatique mais je reste accroché à ce langage qui m'a passionné!
Longue vie à Lazarus et bravo aux développeurs!
# Précision
Posté par Arnaud Launay (site web personnel) . Évalué à 10.
Pour ça, il faudrait déjà qu'il soit décédé… Or, il est toujours bien vivant.
[^] # Loi de Wirth
Posté par Arthur Accroc . Évalué à 10.
À noter la loi de Wirth : (je cite Wikipédia)
Comme quoi Microsoft respecte bien la loi.
Certains logiciels libres aussi, mais pas tous heureusement !
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Précision
Posté par Amine "nh2" Brikci-Nigassa (site web personnel) . Évalué à 6.
Lazarus (Lazare) pas mort, pas de résurrection, Wirth vivant, pas mort, pas retourné dans sa tombe…
GNU's Not Unix / LINUX Is Not Unix Xernel
[^] # Re: Précision
Posté par FantastIX . Évalué à 3.
… sauf s'il a fait creuser une tombe de son vivant et qu'il y est retourné vérifier le résultat.
[^] # Re: Précision
Posté par Ontologia (site web personnel) . Évalué à 2.
C'est ça avec les langages turing-complet, on a pas la preuve que ça finisse un jour…
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
# Un peu d'histoire
Posté par Pierre Jarillon (site web personnel) . Évalué à 10.
J'ai beaucoup aimé Pascal sous DOS : Ses règles d'exportation de variables et de fonctions ainsi que son typage fort en faisaient un langage un peu verbeux mais qui permettait d'écrire des programmes très sûrs.
Quand Windows est arrivé, Microsoft n'a pas révélé toutes les API de son système. Ainsi Borland produisait un environnement de développement qui fonctionnait un peu moins bien que celui de Microsoft. Nous n'avons pas eu le choix, nous avons dû prendre celui qui fonctionnait le mieux. D'autres industriels ont aussi dû en faire autant. C'est ainsi que Microsoft a tué Borland et mis un grand coup de frein aux logiciels qui pourraient entrer en concurrence avec ses produits.
Je connais l'argument de Microsoft : les API non révélées étaient destinées à un usage interne… Mais Microsoft les utilisait dans des programmes en concurrence avec Borland en particulier. Ceux qui ont fait de l'ingénierie inverse pour Wine en savent quelque chose !
Je pense que Microsoft a sciemment tout fait pour empêcher Borland et Pascal d'avoir le destin qui aurait été le leur sans distorsion de concurrence. L'informatique a perdu une bonne dizaine d'années.
# Envie de me remettre au Pascal
Posté par will . Évalué à 3.
Bonjour à tous.
En effet, merci pour cet article.
Il m'a donné envie de revenir au Pascal (je l'avais abandonné suite à mon passage sous Linux il y a quelque années).
Je vais de ce pas (enfin demain je pense, vu l'heure) essayer cet IDE.
[^] # Re: Envie de me remettre au Pascal
Posté par Amine "nh2" Brikci-Nigassa (site web personnel) . Évalué à 5. Dernière modification le 28 octobre 2012 à 09:56.
Justement, vu l'heure, tu voulais peut-être dire aujourd'hui, non ?
Aujourd'hui peut-être, ou alors demain…
GNU's Not Unix / LINUX Is Not Unix Xernel
[^] # Re: Envie de me remettre au Pascal
Posté par will . Évalué à 2.
Ah ouais, tien, j'avais pas fait gaffe. A 1 min près…
Bref, c'est fait depuis ce matin (dimanche 28 octobre).
Aucune difficulté d'installation sous Debian.
# pour les nostalgiques du Pascal
Posté par chamandier . Évalué à 10.
et qui n'ont jamais entendu parler du langage Ada,
ils seraient bien avisés d'y jeter un oeil !
[^] # Re: pour les nostalgiques du Pascal
Posté par fielog . Évalué à 5.
Bonjour,
Je me demande l'intérêt de développer en Pascal de nos jours, alors qu'il existe des langages comme ADA qui est moderne et plus robuste !
[^] # Re: pour les nostalgiques du Pascal
Posté par will . Évalué à 2.
Bah, puisqu'on dit que c'est pour les (vieux) nostalgiques.
Ceux dont je fais parti d'ailleurs.
[^] # Re: pour les nostalgiques du Pascal
Posté par Guillaume Denry (site web personnel) . Évalué à 4.
Ayant pratiqué le Delphi pendant une dizaine d'années dans le milieu professionnel, je n'ai pourtant aucune nostalgie vis-à-vis des try finally quasi-systématiques, des redéfinitions de TList à tire-larigot, du bordel immonde de la VCL où il fallait par exemple aller chercher dans des méthodes procédurales MAIS AUSSI objet (la classe string) pour les outils de manipulation des chaînes…
Néanmoins, je garde le souvenir d'un outil effectivement très rapide à prendre en main pour son époque, "ouvrir un projet => poser un bouton sur un formulaire => double-cliquer pour écrire le code du click => compiler => executer". C'est pour moi son principal mérite.
[^] # Re: pour les nostalgiques du Pascal
Posté par Patrick Lamaizière (site web personnel) . Évalué à 3.
Je suis bien d'accord, la gestion de la mémoire est super chiante. Il manque un garbage collector.
Pour les listes, il me semble que l'on peut faire de la généricité maintenant ? (me suis arrêté à Delphi 5 et ça manquait cruellement de conteneurs).
Ceci dit pour faire des IHM c'était pas mal, mais fallait pas aller beaucoup plus loin.
les pixels au peuple !
[^] # Re: pour les nostalgiques du Pascal
Posté par Amine "nh2" Brikci-Nigassa (site web personnel) . Évalué à 3.
(pub déguisée pour l'atelier de Starinux)
GNU's Not Unix / LINUX Is Not Unix Xernel
[^] # Re: pour les nostalgiques du Pascal
Posté par fielog . Évalué à 2.
:-)
Je me rappelle qd j'ai commencé a programmer en ADA, je ne l'ai pas aimé car je le trouvais trop verbeux, mais j'ai vite compris la puissance de ce langage!
Je ne peux malheureusement me rendre a cette conf, Je voudrais savoir s'il y a un groupe sur Toulouse!
[^] # Re: pour les nostalgiques du Pascal
Posté par devnewton 🍺 (site web personnel) . Évalué à 4.
On peut faire du RAD en Ada?
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: pour les nostalgiques du Pascal
Posté par fielog . Évalué à 1.
Qtada!
[^] # Re: pour les nostalgiques du Pascal
Posté par NanoTech . Évalué à 2.
Ce n'est pas vraiment dans l'esprit Ada.
Le principe du RAD, c'est de développer vite une solution qui semble marcher à peu près… Donc, il vaut mieux un langage très permissif, qui convertit n'importe quel type de données en n'importe quel autre sans prévenir.
Tout l'opposé d'Ada.
[^] # Re: pour les nostalgiques du Pascal
Posté par fielog . Évalué à 3.
Programmer avec une hache quoi…
[^] # Re: pour les nostalgiques du Pascal
Posté par Amine "nh2" Brikci-Nigassa (site web personnel) . Évalué à 7.
Non, pas avec une hache, mais avec la méthodologie de l’International Institute of La RACHE ! C'est plus sérieux, voyons !
GNU's Not Unix / LINUX Is Not Unix Xernel
[^] # Re: pour les nostalgiques du Pascal
Posté par mornik . Évalué à 7. Dernière modification le 28 octobre 2012 à 20:39.
Ce n'est pas le cas du pascal/delphi/lazarus. La conversion ne se fait pas de manière magique.
Il y a comme un excédent de poils je trouve.
[^] # Re: pour les nostalgiques du Pascal
Posté par Thierry Thomas (site web personnel, Mastodon) . Évalué à 3.
Lapin compris le radada ?
[^] # Re: pour les nostalgiques du Pascal
Posté par Amine "nh2" Brikci-Nigassa (site web personnel) . Évalué à 3.
GNAVI ?
http://sourceforge.net/projects/gnavi/
GNU's Not Unix / LINUX Is Not Unix Xernel
[^] # Re: pour les nostalgiques du Pascal
Posté par Amine "nh2" Brikci-Nigassa (site web personnel) . Évalué à 2.
Vraiment ? Quelqu'un l'a essayé ici ?
GNU's Not Unix / LINUX Is Not Unix Xernel
# Excellent outil
Posté par Ontologia (site web personnel) . Évalué à 10.
Pour un développement client spécifique, je dois réaliser une petite appli faisant une acquisition d'une plateforme externe connectée en USB, et (grrrr) uniquement sous windows (driver oblige).
J'ai utilisé Lazarus pour aller donner les ordres d'acquisitions et manipuler les résultats. Je n'ai eu besoin de que deux lignes pour déclarer les fonctions à utiliser dans la DLL, et ça a marché tout de suite.
L'outil est facile à prendre en main, et bien que je n'ai pas codé en Pascal depuis 15 ans, j'ai très très vite obtenu des résultats.
Excellent outil, vraiment, bravo aux bénévoles de ce projet !
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.