Overview of Free Pascal and Lazarus/fr

From Free Pascal wiki

Deutsch (de) English (en) español (es) suomi (fi) français (fr) magyar (hu) Bahasa Indonesia (id) italiano (it) 日本語 (ja) 한국어 (ko) polski (pl) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)

Vue d'ensemble de Free Pascal et Lazarus

Le compilateur Free Pascal (FPC) est un compilateur Pascal open-source qui à deux avantages notables : son degré élevé de compatibilité avec Delphi et sa disponibilité sur divers plateformes, y compris Windows, Mac OS X et Linux. La compatibilité de Free Pascal avec Delphi inclut non seulement le support du même langage de programmation que Delphi (le Pascal Objet), mais également un grand nombre de librairies, de routines puissantes et de classes qui font la réputation de Delphi. Ceci inclut les unités System, SysUtils, StrUtils, DateUtils, Classes, Variants, Math, IniFiles et Registry, incluses dans Free Pascal sous toutes les plateformes supportées. Free Pascal inclut également les unités Windows, ShellAPI, BaseUnix, Unix et DynLibs pour les dispositifs d'accès spécifiques aux systèmes d'exploitation. Cette douzaine d'unités composent le noyau de ce qui est désigné habituellement sous le nom de Free Pascal Run-Time Library (RTL), la bibliothèque d'exécution de Free Pascal.
Lazarus est un environnement open-source construit à partir du compilateur Free Pascal, y ajoutant un Environnement de Développement Intégré (EDI), incluant un éditeur de code à coloration syntaxique, un éditeur visuel de formulaires, une bibliothèque de composants fortement compatibles avec la bibliothèque de composants visuels de Delphi (VCL : Visual Component Library). La bibliothèque de composants de Lazarus (LCL : Lazarus Component Library) inclut des équivalents pour quelques uns des composants VCL les plus familiers comme les formulaires, boutons, zones de saisie de textes, etc. de manière à créer une application avec une interface graphique pour l'utilisateur (GUI : Graphical User Interface).
Free Pascal et Lazarus sont écrits en FreePascal. Le code source complet est disponible non seulement pour le compilateur Free Pascal et l'EDI Lazarus, mais également pour toutes les unités qui composent la RTL de Free Pascal et la LCL de Lazarus.
Comme Delphi, Free Pascal et Lazarus sont deux outils de programmation d'usage universel, ce qui veut dire que vous pouvez développer une grande variété de programmes avec eux, y compris ce qui suit :

Applications console

Les applications console sont "non GUI". C'est à dire qu'elles sont lancées à partir de la console, lisent les informations entrantes de la console, et renvoient les informations sortantes vers la console.

  • Sous Windows la console est généralement désignée sous le nom "Invite de commandes".
  • Sous OS X et Linux, la console est désignée sous le nom de "terminal".

Les applications console incluent des programmes qui vont du petit utilitaire, tel que le programme de Windows COPY pour copier des fichiers, ou les commandes Unix cd et cp, aux puissantes applications de jeux, calculs, modelages, ou programmes de traitement de données qui n'ont pas forcément besoin d'un GUI superflu, parce qu'ils se suffisent à eux-mêmes, qu'ils sont utilisés par d'autres programmes ou à partir de fichiers séquentiels (batch). Le compilateur Free Pascal, et les programmes utilitaires inclus avec lui, sont tous des applications console, ce qui signifie qu'ils peuvent être lancés de la console, d'un fichier séquentiel (batch), ou de l'EDI Lazarus.

Vous pouvez créer une application console en utilisant un simple éditeur de texte et le compilateur de Free Pascal. Il n'est pas nécessaire d'utiliser Lazarus pour développer des applications console. Cependant, si vous préférez travailler dans un environnement intégré, vous pouvez employer Lazarus pour créer un projet destiné à la console et pour éditer et compiler le code dans le l'IDE Lazarus. Pour créer un programme console sous Lazarus il faut aller dans Fichier/Nouveau/Projet/Programme.

Exemple de programme console :

program Project1;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { add your units here };
begin
   //Ecrire 'bonjour' sur l'écran et revenir à la ligne
   WriteLn('Bonjour !');
   //Information utilisateur
   Write('Veuillez taper une touche pour terminer le programme merci : ');
   //Attendre une saisie avant de terminer le programme
   ReadLn;
end.

Bibliothèques de liaison dynamique (dynamically loadable library)

Une bibliothèque de liaison dynamique est habituellement une collection de fonctions compilées qui peuvent être appelées par d'autres programmes. Comme son nom l'indique, la bibliothèque (library) n'est pas incorporée (linked) dans votre exécutable au moment de la compilation, mais est chargée au moment de l'exécution.

  • Sous Windows, un fichier de bibliothèque a l'extension .dll (dynamic-link library, ou DLL).
  • Sous OS X, un fichier de bibliothèque a une extension .dylib (dynamic shared library).
  • Sous Linux, un fichier de bibliothèque a une extension .so (shared object library ).

Des bibliothèques de liaison dynamique sont habituellement employées pour développer des additifs (add-ons) pour d'autres programmes, pour développer des bibliothèques qui peuvent êtres appelées par des programmes écrits dans d'autres langages tels que C et C++, ou pour diviser de grands projets en morceaux, de sorte que les développeurs d'un même projet ne se marchent pas sur les pieds. Windows lui-même se compose de centaines de DLLs, de même que beaucoup d'autres grandes applications telles qu'OpenOffice.org.

Comme pour les applications console, vous n'avez besoin que d'un éditeur de texte et du compilateur Free Pascal pour développer une bibliothèque, bien que vous puissiez également créer un projet Lazarus pour la bibliothèque et développer la bibliothèque dans l'EDI Lazarus. Pour créer une bibliothèque sous Lazarus il faut aller dans Fichier/Nouveau/Projet/Librairie.

Sous Windows, les DLLs ont la réputation imméritée d'être extrêmement complexes et instables. Ceci a plus à voir avec la manière dont elles ont parfois été installées qu'avec les DLLs elles-mêmes. En fait, tant que les informations envoyées aux DLLs sont passées avec des types de données standards et simples (plutôt qu'avec des objets ou des structures spécifiques à un langage), elles ne doivent pas pauser de problèmes. Cette nécessité incite les développeurs à faire plus attention à ce qu'ils font. Si cette étape est bien faite, cela peut avoir comme conséquence des programmes de meilleurs qualité et plus stables.

Applications avec interface graphique (GUI)

La plupart des programmes que nous utilisons quotidiennement sont des applications GUI, y compris les traitements de texte, les navigateurs Web, les tableurs, et même beaucoup d'outils de développement. Lazarus et Delphi sont deux bons exemples d'applications complètes GUI. En développant une application GUI avec Lazarus, non seulement vous développez vos unités en code Pascal, mais vous concevez également des formulaires contenant des commandes visuelles telles que des boutons et des boîtes de liste. Comme Delphi, la conception de formulaires sous Lazarus est faite visuellement. Les propriétés d'un composant peuvent être initialisées dans l'EDI ou le code.

Puisque les composants de la LCL sont disponibles sous toutes les plateformes soutenues, une application GUI développée sous une plateforme (par exemple, Windows) peut être compilée sur une autre plateforme (par exemple, OS X ou Linux) sans aucun changement au formulaire ou au code source. Pour créer une application GUI sous Lazarus, il faut aller dans Fichier/Nouveau/Projet/Application, c'est le type d'application par défaut.

Architecture de Lazarus

Les programmes écrit avec Lazarus suivent l'architecture schématisée là :

Lazarus App Architecture.png

et la LCL elle-même suit l'architecture suivante :

LCL Architecture.png

La LCL a des unités indépendantes de la plate-forme, comme les contrôles graphiques, fiches, boutons et grilles. Ils ne peuvent pas fonctionner par eux-mêmes. Ils sont abstraits et demandent un arrière-plan (backend). La LCL fournit plusieurs interfaces de LCL qui communiquent avec l'arrière-plan ou les "jeux de widgets" (win32, gtk, qt, carbon, cocoa, ...). Un arrière-plan est compilé en utilisant simplement le paquet LCL et en ajoutant l'unité "interfaces" comme l'une des premières unités de votre programme. Quand vous créez une applicaiton avec l'EDI Lazarus, c'est fait automatiquement. L'arrière-plan est choisi à la compilation et ne peut être changé à l'exécution.