Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue111:tutoriel2 [2016/08/20 18:36] – auntiee | issue111:tutoriel2 [2016/08/23 18:51] (Version actuelle) – andre_domenech |
---|
Il y a pas mal de temps, beaucoup de programmeurs sur PC ont commencé avec l'un des produits Borland. Turbo-Pascal et Turbo C tournaient tous les deux sur le système d'exploitation MS-DOS, et avaient d'excellents environnements de développement intégrés comprenant non seulement le compilateur lui-même, mais aussi un superbe éditeur. Ce qui nous intéresse, c'est qu'ils contenaient aussi un système de gadgets à base de texte (boutons, boutons-radio, zones d'édition, menus...) appelés Turbo Vision qui était non seulement utilisé pour construire l'environnement de développement lui-même, mais était aussi à la disposition des programmeurs pour leurs propres applications. | Il y a pas mal de temps, beaucoup de programmeurs sur PC ont commencé avec l'un des produits Borland. Turbo-Pascal et Turbo C tournaient tous les deux sur le système d'exploitation MS-DOS, et avaient d'excellents environnements de développement intégrés comprenant non seulement le compilateur lui-même, mais aussi un superbe éditeur. Ce qui nous intéresse, c'est qu'ils contenaient aussi un système de gadgets à base de texte (boutons, boutons-radio, zones d'édition, menus...) appelés Turbo Vision qui était non seulement utilisé pour construire l'environnement de développement lui-même, mais était aussi à la disposition des programmeurs pour leurs propres applications. |
| |
Pour la simplicité et l'élégance, cette interface homme-machine en mode texte n'a pas encore été surclassée. Ce n'est pas que ma modeste opinion, mais aussi celle de certains autres - comme on le voit sur Internet. Aussi, cela doit être vrai. C'est avec intérêt que j'ai découvert l'existence de FreePascal (www.freepascal.org), un projet conduit par Florian Paul Klämpfl, dont le but est de ressusciter un compilateur comme celui du Pascal, mais en Open Source et adaptable à beaucoup architectures différentes. Il comporte aussi l'environnement d'interface, mais adapté aux temps présents. Celui-ci est appelé Free Vision. À cet égard, Lazarus (http://wiki.freepascal.org/Lazarus_Faq) est un projet compagnon qui perpétue les mêmes lignes que l'interface de développement graphique du Delphi de Borland ; Vince DuBeau nous donna une courte description de ce projet-là dans le FCM n° 77. | Pour la simplicité et l'élégance, cette interface homme-machine en mode texte n'a pas encore été surclassée. Ce n'est pas que ma modeste opinion, mais aussi celle de certains autres, comme on le voit sur Internet. Ainsi, cela doit être vrai. C'est avec intérêt que j'ai découvert l'existence de FreePascal (www.freepascal.org), un projet conduit par Florian Paul Klämpfl, dont le but est de ressusciter un compilateur comme celui du Pascal, mais en Open Source et adaptable à beaucoup d'architectures différentes. Il comporte aussi l'environnement d'interface, mais adapté aux temps présents. Celui-ci est appelé Free Vision. À cet égard, Lazarus (http://wiki.freepascal.org/Lazarus_Faq) est un projet compagnon qui perpétue les mêmes lignes que l'interface de développement graphique du Delphi de Borland ; Vince DuBeau nous a donné une courte description de ce projet-là dans le FCM n° 77. |
| |
**In this series of articles, I will be building a text-based application with Free Pascal, using its text-based interface for user interaction. This will be combined with other, more modern, technologies such as database access using SQL, and Web access with HTTP. The final aim of the project is to demonstrate how Pascal can be used to build a modern application, while avoiding the overhead associated with a graphical interface (using a widget set such as GTK or Qt). This first part will describe installing the tools and writing some simple programs.** | **In this series of articles, I will be building a text-based application with Free Pascal, using its text-based interface for user interaction. This will be combined with other, more modern, technologies such as database access using SQL, and Web access with HTTP. The final aim of the project is to demonstrate how Pascal can be used to build a modern application, while avoiding the overhead associated with a graphical interface (using a widget set such as GTK or Qt). This first part will describe installing the tools and writing some simple programs.** |
Pourquoi ? | Pourquoi ? |
| |
Avant de plonger dans la complexité technique du paramétrage d'une combinaison de FreePascal et de Free Vision, il serait peut-être judicieux de répondre à cette simple question : pourquoi ça vaudrait-il le coup pour moi de passer du temps sur cette technologie ? Après tout, il y a pléthore d'autres langages parmi lesquels le programmeur peut choisir, tel que Go, Swift, Haskell, ... pour n'en nommer que quelques-uns. La réponse évidente est : « La vitesse ! » Comme ça, avec un point d'exclamation. Ce truc est sacrément léger, et donc il tourne sacrément vite. À un point tel qu'un Raspberry Pi faisant tourner une interface écrite en Free Vision peut battre un ordinateur vraiment moderne, avec un CPU multi-cœur et un SSD, qui ferait tourner la même application, mais avec une interface Web. Ce qui est logique, d'une certaine façon, car le Rpi dispose d'une puissance de calcul supérieure à un 286 ou 386 sur lesquels la plupart des programmes Turbo Pascal ont été faits. | Avant de plonger dans la complexité technique du paramétrage d'une combinaison de FreePascal et de Free Vision, il serait peut-être judicieux de répondre à cette simple question : pourquoi cela vaudrait-il le coup pour moi de passer du temps sur cette technologie ? Après tout, il y a pléthore d'autres langages parmi lesquels le programmeur peut choisir, tels que Go, Swift, Haskell..., pour n'en nommer que quelques-uns. La réponse évidente est : « La vitesse ! » Comme ça, avec un point d'exclamation. Ce truc est sacrément léger, et donc il tourne sacrément vite. À un point tel qu'un Raspberry Pi faisant tourner une interface écrite en Free Vision peut battre un ordinateur vraiment moderne, avec un CPU multi-cœur et un SSD, qui ferait tourner la même application, mais avec une interface Web. Ce qui est logique, d'une certaine façon, car le Rpi dispose d'une puissance de calcul supérieure à un 286 ou 386 sur lesquels la plupart des programmes Turbo Pascal ont été faits. |
| |
En attendant, le programme utilisant Free Vision est un binaire exécutable compilé qui n'a pas besoin d'affronter les bizarreries d'une interface graphique ou d'un serveur HTTP. Ceux-ci sont disponibles, mais les programmeurs n'ont pas à gaspiller du CPU ou de la RAM pour eux, sauf s'ils sont vraiment utiles pour ce qu'ils font. | En attendant, le programme utilisant Free Vision est un binaire exécutable compilé qui n'a pas besoin d'affronter les bizarreries d'une interface graphique ou d'un serveur HTTP. Ceux-ci sont disponibles, mais les programmeurs n'ont pas à gaspiller du CPU ou de la RAM pour eux, sauf s'ils sont vraiment utiles pour ce qu'ils font. |
Installation | Installation |
| |
Free Pascal s'installe avec les outils classiques (apt, synaptic, ...) à partir des dépôts d'Ubuntu 16.04, où il est identifié comme le paquet fp-ide. Le paquet fp-units-base sera aussi nécessaire pour disposer des unités standard, tout comme fp-units-fv pour Free Vision, fp-units-db pour l'accès aux bases de données, etc. | Free Pascal s'installe avec les outils classiques (apt, synaptic...), à partir des dépôts d'Ubuntu 16.04, où il est identifié comme le paquet fp-ide. Le paquet fp-units-base sera aussi nécessaire pour disposer des unités standard, tout comme fp-units-fv pour Free Vision, fp-units-db pour l'accès aux bases de données, etc. |
| |
Juste pour voir s'il y a des différences avec la version originale du développeur, j'ai téléchargé FreePascal dans la version 3.0.0 pour l'architecture Intel 86-64 (64-bit), depuis la page du projet sur http://www.freepascal.org/download.var. Le fichier téléchargé est un .tar, qui contient trois fichiers compressés (dans les formats .tar et .tar.gz) qui contiennent le compilateur lui-même en format binaire ou exécutable, des exemples de programmes et la documentation. Un script d'installation est aussi fourni. | Juste pour voir s'il y a des différences avec la version originale du développeur, j'ai téléchargé FreePascal dans la version 3.0.0 pour l'architecture Intel 86-64 (64-bit), depuis la page du projet sur http://www.freepascal.org/download.var. Le fichier téléchargé est un .tar, qui contient trois fichiers compressés (dans les formats .tar et .tar.gz) qui contiennent le compilateur lui-même en format binaire ou exécutable, des exemples de programmes et la documentation. Un script d'installation est aussi fourni. |
The first line is to include the unit directory itself, while the second also includes any subdirectories within the search path.** | The first line is to include the unit directory itself, while the second also includes any subdirectories within the search path.** |
| |
Il n'y a pas de différence visible avec la version des dépôts. La dernière commande lance l'IDE (Integrated Development Environment - Environnement de Développement Intégré) intégré à Pascal, qui va rafraîchir la mémoire des programmeurs en Turbo Pascal. Certains d'entre nous ont passé des heures à fixer cet écran. | Il n'y a pas de différence visible avec la version des dépôts. La dernière commande lance l'IDE (Integrated Development Environment - Environnement de Développement Intégré) intégré à Pascal, qui rappellera des souvenirs aux programmeurs en Turbo Pascal. Certains d'entre nous ont passé des heures à fixer cet écran. |
| |
Un fichier de configuration pour l'environnement est créé dans ce répertoire. À partir de là, nous pouvons commencer immédiatement à programmer. Cependant, si nous devons utiliser des unités comme Crt, nous aurons besoin de rediriger l'IDE pour utiliser le répertoire approprié de cette unité. C'est une point dont l'installeur ne se soucie pas. Simplement, choisissez Options > Directories dans le menu principal, et apjoutez les deux lignes suivantes. Si vous vous êtes installé dans /usr plutôt que dans /user/local, faites les modifications appropriées : | Un fichier de configuration pour l'environnement est créé dans ce répertoire. À ce stade, nous pouvons commencer immédiatement à programmer. Cependant, si nous devons utiliser des unités comme Crt, nous aurons besoin de rediriger l'IDE pour utiliser le répertoire approprié de cette unité. C'est un point dont l'installeur ne se soucie pas. Simplement, choisissez Options > Directories dans le menu principal, et ajoutez les deux lignes suivantes. Si vous l'avez installé dans /usr plutôt que dans /user/local, faites les modifications appropriées : |
| |
/usr/local/lib/fpc/3.0.0/units/x86_64-linux | /usr/local/lib/fpc/3.0.0/units/x86_64-linux |
Compiler un programme à la console | Compiler un programme à la console |
| |
Pour commencer, écrivons un programme très simple. Il servira juste à tester le processus de compilation et voir si les unités sont bien correctement détectées. Choisissez Files > New dans le menu et tapez un programme de test (tel que http://pastebin.com/wJhgry5A). Le raccourci clavier F2 commande la sauvegarde du fichier (avec l'extension .pas) et F9 le compile (en haut à droite). | Pour commencer, écrivons un programme très simple. Il servira juste à tester le processus de compilation et voir si les unités sont bien correctement détectées. Choisissez File > New dans le menu et tapez un programme de test (tel que http://pastebin.com/wJhgry5A). Le raccourci clavier F2 commande la sauvegarde du fichier (avec l'extension .pas) et F9 le compile (en haut à droite). |
| |
Le programme peut être compilé et exécuté en une étape en utilisant Ctrl-F9. Le résultat est présenté sur le terminal et l'exécution retourne à l'IDE dès que vous appuyez sur une touche quelconque. | Le programme peut être compilé et exécuté en une étape en utilisant Ctrl-F9. Le résultat est présenté sur le terminal et l'exécution retourne à l'IDE dès que vous appuyez sur une touche quelconque. |
/usr/local/lib/fpc/3.0.0/units/x86_64-linux/fv | /usr/local/lib/fpc/3.0.0/units/x86_64-linux/fv |
| |
La premierère à utiliser est l'unité de l'application elle-même. Avec les 10 lignes sur http://pastebin.com/13UfNBNS, nous pouvons préparer un exemple d'application en mode texte. | La première à utiliser est l'unité de l'application elle-même. Avec les 10 lignes sur http://pastebin.com/13UfNBNS, nous pouvons préparer un exemple d'application en mode texte. |
| |
Le code correspondant est très minimaliste. Nous avons simplement créé un nouveau type d'application, TMyApp, basé sur TApplication pré-existant. Cette application est ensuite instanciée dans une variable. L'application est initialisée dans la méthode Init. La méthode Run est la boucle principale, où les événements clavier et souris de l'utilisateur sont gérés. Enfin, nous nettoyons tout avec la méthode Done. C'est tout - mais c'est déjà une application qui fonctionne, écrite en moins de lignes de codes que ce qui a été nécessaire pour la description du processus. | Le code correspondant est très minimaliste. Nous avons simplement créé un nouveau type d'application, TMyApp, basé sur TApplication pré-existant. Cette application est ensuite instanciée dans une variable. L'application est initialisée dans la méthode Init. La méthode Run est la boucle principale, où les événements clavier et souris de l'utilisateur sont gérés. Enfin, nous nettoyons tout avec la méthode Done. C'est tout, mais c'est déjà une application qui fonctionne, écrite en moins de lignes de codes que ce qui a été nécessaire pour la description du processus. |
| |
var MyApp : TMyApp; | var MyApp : TMyApp; |
This will be all for this first part in our series on Free Pascal - and Free Vision. In the next part, we will make the user interface responsive, and create some simple dialog windows.** | This will be all for this first part in our series on Free Pascal - and Free Vision. In the next part, we will make the user interface responsive, and create some simple dialog windows.** |
| |
Un point qui peut être noté est que les fichiers exécutables résultants sont plutôt petits, même en utilisant Free Vision. Le premier - utilisant seulement Crt - prend environ 400 Ko, et le second - avec fv - prend moins de 800 Ko. C'est vraiment petit pour les standards actuels. | Un point qui peut être noté est que les fichiers exécutables résultants sont plutôt petits, même en utilisant Free Vision. Le premier, utilisant seulement Crt, prend environ 400 Ko, et le second, avec fv, prend moins de 800 Ko. C'est vraiment petit selon les normes modernes. |
| |
$ ls -lh test? test?.pas | $ ls -lh test? test?.pas |
-rw-rw-r-- 1 alan alan 162 jun 7 08:45 test2.pas | -rw-rw-r-- 1 alan alan 162 jun 7 08:45 test2.pas |
| |
Ce sera tout pour cette première partie de notre série sur Free Pascal - et Free Vision. Dans la prochaine partie, nous construirons une interface utilisateur interactive et nous créerons quelques simples fenêtres de dialogue. | Ce sera tout pour cette première partie de notre série sur Free Pascal et Free Vision. Dans la prochaine partie, nous construirons une interface utilisateur interactive et nous créerons quelques simples fenêtres de dialogue. |