Outils pour utilisateurs

Outils du site


issue111:tutoriel2

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue111:tutoriel2 [2016/08/18 08:43] d52frissue111:tutoriel2 [2016/08/23 18:51] (Version actuelle) andre_domenech
Ligne 3: Ligne 3:
 For simplicity and for elegance, it has not yet been surpassed as a text-oriented human interface. This is not only my own very honest opinion, but also that of some others - as seen on the Internet. So, it must be true. It was with interest that I discovered the existence of Free Pascal (www.freepascal.org), a project led by Florian Paul Klämpfl, that aims to bring back a similar Pascal compiler, but open-source and adaptable to many different architectures. It also contains the interface environment, but adapted to modern times. This has been named Free Vision. As an aside, Lazarus (http://wiki.freepascal.org/Lazarus_Faq) is a companion project that continues along the same lines as the Borland Delphi graphical development interface; Vince DuBeau gave us a brief description of that project some time back in FCM#77 (http://fullcirclemagazine.org/issue-77/).** For simplicity and for elegance, it has not yet been surpassed as a text-oriented human interface. This is not only my own very honest opinion, but also that of some others - as seen on the Internet. So, it must be true. It was with interest that I discovered the existence of Free Pascal (www.freepascal.org), a project led by Florian Paul Klämpfl, that aims to bring back a similar Pascal compiler, but open-source and adaptable to many different architectures. It also contains the interface environment, but adapted to modern times. This has been named Free Vision. As an aside, Lazarus (http://wiki.freepascal.org/Lazarus_Faq) is a companion project that continues along the same lines as the Borland Delphi graphical development interface; Vince DuBeau gave us a brief description of that project some time back in FCM#77 (http://fullcirclemagazine.org/issue-77/).**
  
-Beaucoup de programmeurs sur PC ont commencé avec l'un des produits Borland, avant. 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 comprenant non seulement le compilateur lui-même, mais aussi un superbe éditeur. À leur crédit, ils contenaient aussi un système de gadgets à base de texte (boutons, boutons-radios, zones d'édition, menus...) appelés Turbo Vision qui étaient non seulement utilisés pour construire l'environnement de développement lui-même, mais 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éressec'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, une telle 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. Aussice 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 adaptable à beaucoup architectures différentes. Il comporrte aussi un environnement d'interface, mais adapté aux temps présents. Celui-ci est appelé Free Vision. À côté, 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 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 autrescomme on le voit sur Internet. Ainsicela 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.**
  
-Dans cette série d'articles, je construirai des applications texte avec FreePascal, en utilisant son interface à base de texte pour l'interaction avec l'utilisateur. Ceci, en combinaison avec d'autres technologies plus actuelles comme une accès à une base de données utilisant SQL et un accès Web avec HTTP. Le but final du projet est de démontrer comment PAscal peut être utilisé pour construire une application moderne, tout en évitant la surcharge associée à une interface graphique (utilisant un ensemble de gadgets tels que GTK ou Qt). La première partie décrira l'installation des outils et l'écriture de programmes simples. +Dans cette série d'articles, je construirai des applications texte avec FreePascal, en me servant de son interface en mode texte pour l'interaction avec l'utilisateur. Ceci, en combinaison avec d'autres technologies plus actuellescomme l'accès à une base de données utilisant SQL et un accès Web avec HTTP. Le but final du projet est de démontrer comment Pascal peut être utilisé pour construire une application moderne, tout en évitant la surcharge associée à une interface graphique (utilisant un ensemble de gadgets tels que GTK ou Qt). La première partie décrira l'installation des outils et l'écriture de programmes simples. 
  
 **Why? **Why?
Ligne 21: Ligne 21:
 Pourquoi ? Pourquoi ?
  
-Avant de plonger dans la complexité technique du paramétrage d'une combinaison de FrePascal et de FreeVision, il serait peut-être judicieux de répondre à cette simple question : pourquoi ça vaudrait 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 vraiment léger, et donc il tourne vraiment 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 a aussi du sens, 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 que vous faites.+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.
  
-Une seconde réponse, tout aussi valable, pourrait être : « En souvenir du passé ». Pascal est aussi un beau et clair langage de programmation structurée, qui peut nous aider à prendre de bonnes habitudes - des habitudes que Javascript n'est connu pour donner, pour prendre un rapide exemple.+Une seconde réponse, tout aussi valable, pourrait être : « En souvenir du passé ». Pascal est aussi un beau et clair langage de programmation structurée, qui peut nous aider à acquérir de bonnes habitudes - des habitudes que Javascript ne crée quasiment pas, pour prendre un rapide exemple.
  
 **Installation **Installation
Ligne 40: Ligne 40:
  
 fp** fp**
 +
 +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.
 +
 +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.
 +
 +Le lancement du script d'installation en tant que root nous permettra d'installer beaucoup de choses, en choisissant entre /usr et /usr/local comme point de départ de nos fichiers. Le processus de décompression est rapide et sans problème. Une fois fait, nous avons le jeu de variables PATH adéquat dans notre système, et nous pouvons procéder à la création d'un répertoire pour nos fichiers source et l'ouvrir depuis un terminal. Quelque chose comme :
 +
 +mkdir Desktop/pascal
 +
 +cd Desktop/pascal
 +
 +fp
  
 **There were no detectable differences with the version from the repositories. The final command launches the integrated Pascal IDE (Integrated Development Environment), which will bring back memories to users of Turbo Pascal. Some of us have spent hours staring at this screen. **There were no detectable differences with the version from the repositories. The final command launches the integrated Pascal IDE (Integrated Development Environment), which will bring back memories to users of Turbo Pascal. Some of us have spent hours staring at this screen.
Ligne 50: Ligne 64:
  
 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 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. À 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/*
 +
 +La première ligne est pour inclure le répertoire propre de l'unité, alors qu'avec la deuxième, tous les sous-répertoires sont inclus dans le chemin de recherche.
  
 **Compiling a console program **Compiling a console program
Ligne 56: Ligne 80:
  
 The program can be both compiled and executed in one step using command Ctrl+F9. The result is shown in the terminal, and execution goes back to the IDE whenever a key is pressed.** The program can be both compiled and executed in one step using command Ctrl+F9. The result is shown in the terminal, and execution goes back to the IDE whenever a key is pressed.**
 +
 +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 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.
  
 **A first Free Vision application **A first Free Vision application
Ligne 74: Ligne 104:
     MyApp.Done;     MyApp.Done;
 end.** end.**
 +
 +Une première application avec Free Vision
 +
 +Continuons en utilisant l'équivalent moderne de l'interface utilisateur en mode texte Turbo Vision de Borland, maintenant appelée Free Vision. Les unités correspondantes sont groupées dans le sous-répertoire : 
 +
 +/usr/local/lib/fpc/3.0.0/units/x86_64-linux/fv
 +
 +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.
 +
 +var MyApp : TMyApp;
 +
 +begin
 +    MyApp.Init;
 +    MyApp.Run;
 +    MyApp.Done;
 +end.
  
 **One point that can be noticed is that the resulting executable files are rather small, even if using FreeVision. The first one - using merely Crt - takes up about 400 kBytes, and the second - with fv - takes less than 800 kBytes. This is quite small by modern standards. **One point that can be noticed is that the resulting executable files are rather small, even if using FreeVision. The first one - using merely Crt - takes up about 400 kBytes, and the second - with fv - takes less than 800 kBytes. This is quite small by modern standards.
Ligne 84: Ligne 132:
  
 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 selon les normes modernes.
 +
 +$ ls -lh test? test?.pas
 +-rwxrwxr-x 1 alan alan 416K jun  7 09:05 test1
 +-rw-rw-r-- 1 alan alan  175 jun  7 09:04 test1.pas
 +-rwxrwxr-x 1 alan alan 781K jun  7 09:06 test2
 +-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.
issue111/tutoriel2.1471502598.txt.gz · Dernière modification : 2016/08/18 08:43 de d52fr