IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Pharo 8.0 est disponible avec un nouveau moteur de complétion de code
Le langage s'annonce épuré et orienté objet avec un environnement immersif

Le , par Bill Fassinou

90PARTAGES

5  0 
Pharo est un langage de programmation dynamique, épuré et inspiré principalement de Smalltalk. Sa première version a été lancée en 2008 et est l’œuvre de Stephane Ducasse et Marcus Denker. Il est basé sur une machine virtuelle, écrite en large partie en Pharo lui-même, ce qui lui permet d'être multiplateforme (macOS, Windows, Linux, iOS, Android). La version 8.0 de Pharo vient d’être publiée avec de nouvelles fonctionnalités. Pour cette sortie, la version 64 bits est devenue la version recommandée pour Windows comme elle l'était pour Unix et OSX.

Selon sa documentation, Pharo est un langage de programmation purement orienté objet et un environnement puissant, axé sur la simplicité et le retour d'information immédiat. Il est entièrement open source : la pile complète de Pharo est publiée sous licence MIT. Le langage ne dispose pas de constructeurs, pas de déclaration de types, pas d'interfaces, et pas de types primitifs. Selon ses auteurs, c’est un langage puissant et élégant avec une syntaxe complète qui tient dans une carte postale. L'environnement Pharo comprend aussi un débogueur.

Ce dernier vous permet de parcourir le code, de relancer l'exécution des méthodes, de créer des méthodes à la volée, et bien plus encore. Le système est réflexif, car un programme peut modifier sa structure et son comportement lors de l’exécution. C’est un langage à typage dynamique par opposition aux langages à typage statique, qui forcent le développeur à indiquer de quel type est chaque variable. L'héritage avec Pharo est simple. Une classe hérite d'une seule autre et une classe peut être aussi composée de traits (ensemble de méthodes).


C’est un langage de programmation qui fait une gestion automatique de la mémoire. Il utilise un ramasse-miettes (ou garbage collector), comme les langages tels que LISP ou Java le font. Par ailleurs, un autre avantage de Pharo est qu'il n'est pas nécessaire de recompiler tout le code lors de la modification d'une méthode. Il est possible de modifier ou de créer une méthode au sein du débogueur et de reprendre le flot d'exécution juste avant la modification. Certains appellent cela la méthode « edit and continue » au lieu de la traditionnelle méthode « edit compile and run ».

Voici les fonctionnalités les plus mises en avant dans cette nouvelle version du langage :

  • Iceberg, le client git pour Pharo, a atteint sa version 1.6.5 avec plusieurs améliorations et corrections de bogues ;
  • Calypso, le navigateur système de Pharo, a de nouvelles et meilleures intégrations de refactoring et des suggestions basées sur AST pour les définitions de classes.
  • l'interface de fonction étrangère unifiée (UnifiedFFI) a été améliorée avec plus de support pour les objets littéraux, de meilleures coercions de type et plus de documentation.
  • Pharo 8.0 contient de nombreuses améliorations de la vitesse de recherche et de compilation du code ;
  • un nouveau moteur de complétion de code ;
  • amélioration de la documentation du processus d'amorçage ;
  • une meilleure intégration des créneaux horaires ;
  • une mise en œuvre plus rapide des collections ;
  • accélération des requêtes du système et de l'accès aux sources ;
  • des recherches Spotter plus rapides ;
  • une meilleure performance de construction de classe ;
  • flux de lecture-écriture compatibles SSD ;
  • etc.


En outre, cette version comprend plusieurs aperçus de nouveaux outils tels que le framework d'interface graphique Spec2 avec intégration native de widgets et le nouvel outil d'analyse des tests DrTests. Pharo 8.0 ouvre la porte aux prochaines machines virtuelles pour les serveurs et les FFI (Foreign Function Interface) non bloquantes. Environ 2805 problèmes ont été résolus dans cette version, y compris 1500 correctifs et améliorations. La page GitHub du projet contient encore plus d’informations sur les modifications apportées à Pharo 8.0.

Sources : Pharo, GitHub

Et vous ?

Que pensez-vous de Pharo 8.0 ?

Voir aussi

Pharo 5 : la nouvelle version du langage

Pharo 1.0, un environnement simple et épuré pour se mettre à Smalltalk

Quels sont les langages de programmation les plus utilisés par les développeurs ? Une analyse des évènements publics sur GitHub

Microsoft Research lance Bosque, un nouveau langage de programmation sans boucles et open source, inspiré par TypeScript

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de richard
Membre éclairé https://www.developpez.com
Le 30/11/2021 à 22:48
Je suis en train d'apprendre le langage avec leur MOOC (bien fait). Il y a aussi pas mal de livres en libre téléchargement sur leur site. Le langage est en effet très intéressant et beaucoup plus régulier que Python, que je pratique aussi depuis assez longtemps. C'est du full object : pas de constructeur, toutes les méthodes sont dynamiques et publiques, et virtuellement liées (pas de mot-clé "Public" en Pharo).

Bref il n'y a que des objets, des messages et des closures (appelées "block". Ce qui m'intéresse c'est qu'on peut allier l'approche full object avec la programmation fonctionnelle (en partie), le code qui en sort me paraît très propre.

En plus il est "test-driven" presque "naturellement" avec l'IDE, bref je pense que je vais l'adopter pour certains projets. Je précise que je ne suis pas développeur professionnel mais je développe des choses aussi bien pour mon boulot que mes loisirs : essentiellement la musique.
J'attends de finir ma petite plongée dans l'écosystème de Pharo pour décider totalement. Ce qui me chagrine pour l'instant c'est le manque de bibliothèque notamment pour l'audio. J'aurais aimé un binding vers SuperCollider et une bibliothèque son comme pyo d'Olivier Belanger qui fonctionne en Python.

Je ne suis pas assez fort en programmation pour utiliser le C++ avec fluidité, je peux comprendre que pour ces programmeurs-là Pharo ne soit d'aucune utilité puisqu'on peut faire quasiment tout en C++ mais au prix d'une complexité assez effrayante (pour moi) quoique le C++ 17 me paraisse infiniment plus clair et digeste à mon petit niveau. Le problème c'est que j'ai eu beaucoup de bibliothèques en C++ qui était inabouties, buguées ou quasiment incompréhensibles car très mal documentées. C'est sans doute un commentaire sur mes (in)capacités de programmeur et pas sur les bibliothèques, mais j'ai trop souvent jeté l'éponge à cause de cela. Les bibliothèques existantes en Pharo sont peu nombreuses mais elles ont toutes été validées et sont utilisables en 10mn - 1/4 d'h, elles sont exemptes de bugs visiblement.
0  0 
Avatar de richard
Membre éclairé https://www.developpez.com
Le 02/12/2021 à 18:17
Petite précision : au moment où j'écris ces lignes, Pharo en est à la version 9.0.0, en tout cas c'est celle que j'ai installée sur mon Ubuntu 20.04.

Voici les principales améliorations :

  • Full redesign of the Spec UI framework (new logic, application, style, GTK3 back-end)
  • new playground,
  • new object centric inspector,
  • new object centric debugger.
  • better and new Refactorings
  • class comments are now written in Microdown format (Markdown compatible)
  • classes now can be defined using a "fluid" api (Preview)
  • new completion framework that adapts better to edition contexts and is customizable
  • Fast universal non-blocking FFI which now uses libFFI as backend.
  • Pharo now supports Windows, OSX, Linux (Ubuntu, Debian, Fedora, openSUSE, Arch, Raspbian) and multiple architectures (Intel/ARM 32/64bits).
  • Virtual Machine
  • Idle VM
  • Support for ARM 64bits
  • Support for Apple M1
  • More than 3000 tests
  • Built for Ubuntu 18.04, 19.04, 20.04, 21.04, 21.10; Debian 9, 10, Testing; Fedora 32, 32, 34; openSUSE 15.1, 15.2, Tumbleweed; Manjaro; Arch Uses SDL 2.0 as back-end by default.
  • It supports extended event handling, including trackpad support.
  • General speed up due to compiler optimisations and UI simplification.


Il y a beaucoup d'optimisations mais aussi pas mal de travail sur les outils de développement et le langage lui-même. C'est la preuve que l'équipe travaille activement sur le projet, ce qui me rassure quant à l'investissement en temps sur le langage et l'IDE.
0  0