Meilleure réponse
Longue histoire.
La version TL; DR est la suivante de mon point de vue:
- On peut lire les livres originaux de Smalltalk et en tirer de la valeur en utilisant Pharo, donc, il y a certainement un solide héritage Smalltalk.
- Sur le plan de loutillage, il y a Il existe plusieurs avancées dans Pharo qui le rendent assez unique et différent de Smalltalk 80. Par exemple:
- GToolkit, avec des inspecteurs super puissants
- Spotter, permettant un moyen vraiment intéressant daccéder aux éléments de le système etc
- Spec et Bloc pour dautres façons de faire linterface utilisateur que MVC et Morphic
- Nettoyages et ajouts aux packages standard de Squeak
- Zinc, NeoJson, STON,… tous provenaient de la communauté Pharo
- Roassal2, pour les visualisations, également originaire de la communauté Pharo
- La VM, qui est maintenant une OpenSmalltalk / opensmalltalk-vm leffort avec des zones Pharo spécifiques est plus rapide, w avec un meilleur JIT et un autre ensemble de bytecode. La gestion de la mémoire avec la transmission du pointeur rend: beaucoup plus rapide. Vérifiez Réglage du ramasse-miettes Pharo , vérifiez résumé en 7 points du gestionnaire de mémoire Spur , Eh bien, vérifiez tout sur ce blog, ça tombe juste.
- Nous avons des traits. Nous avons XStreams. Nous avons Calypso. Nous avons Iceberg. Nous avons le truc des critiques. Nous avons le compilateur Opal. Nous avons Rubrik pour lédition de texte. Nous avons Ring comme modèle de code. Nous pouvons inspecter AST pour les méthodes. Nous avons Beacon pour un cadre de journalisation dobjets. Nous avons des WeakReferences. Nous avons UnifiedFFI. Nous avons 64 bits. Nous avons du carburant. Nous avons Seaside3. Nous avons des CommandLineHandlers sympas. Nous avons Scale pour le travail CLI. Nous avons Epicea pour les changements de code. Nous avons une API FileSystem repensée. Nous avons HelpSystem. Nous avons une infrastructure de travail avec CI et Git et le suivi des problèmes, etc. qui fonctionnent bien ensemble. Nous avons Pillar pour produire des livres. Nous avons TaskIT pour un travail facile avec les futurs. Nous avons un système KeyMapping décent. Nous avons un Morphic nettoyé (encore plus à faire). Nous avons OSWindow. Nous avons Refactorings et CodeRewriter. Nous avons des MetaLinks avec réflectivité. Nous avons Athènes pour les graphiques. Nous avons un support IoT.
Donc, oui, cest inspiré de Smalltalk. Mais certainement pas Smalltalk-80. Cest Pharo. Nous utilisons un phare comme logo. Parce que nous aimons quand il y a une lumière vive ouvrant la voie au bonheur des développeurs.
Smalltalk est génial.
Pharo est meilleur lorsquil sagit dobtenir des résultats commerciaux en utilisant la technologie du 21e siècle . Parce que combiner les outils Pharo les uns avec les autres conduit à des résultats puissants.
Et oui, je suis opiniâtre.
Réponse
Pharo est un dialecte de Smalltalk. Dans sa syntaxe, sa sémantique et son implémentation, Pharo est une version de Smalltalk-80, et un parent très proche des dialectes Squeak et Cuis. Tous trois descendent directement du Smalltalk-80 v1 quApple a reçu de Xerox dans le cadre du processus décriture de «Smalltalk-80: le langage et son implémentation», alias «le livre bleu». Alan Kay a dirigé une équipe chez Apple dans les années 90 qui a développé le dialecte Squeak et sa mise en œuvre à partir de Smalltalk-80 v1. Plus tard, Cuis et Pharo ont bifurqué de Squeak. Mais tous les trois sont passés à ma machine virtuelle Spur, une évolution de la machine virtuelle JIT que jai dérivée en 2008/09/10 de la machine virtuelle dinterprétation Back-to-the-future originale pour Squeak.
Ces trois dialectes «Le plus proche parent lun de lautre est VisualWorks Smalltalk, qui descend directement de Smalltalk-80 v2, la version finale développée chez Xerox PARC. Tous les quatre se distinguent des autres Smalltalks en prenant en charge les contextes (les enregistrements dactivation de première classe de Smalltalk) via la pseudo-variable thisContext. Un contexte est un enregistrement dactivation; cest lobjet qui contient létat dune méthode en cours ou dune fermeture de bloc. Une différence de surface est que la famille Squeak prend en charge les tuples (une construction Array pratique) et une instruction case, alors que VisualWorks a un système despace de noms et une forme littérale BindingReference pour accéder aux objets à travers les limites de lespace de noms.
Smalltalk et ses proches parents Self et Newspeak est que les systèmes se définissent eux-mêmes; les classes, les méthodes et les contextes sont tous des objets de première classe définis en termes de classes et de méthodes. Cela sétend à leur compilateur et débogueur, au système dexceptions, etc. cela permet à Smalltalk dévoluer au niveau du langage. Les tuples, linstruction case et les espaces de noms ont tous été implémentés dans leurs systèmes respectifs sans avoir à modifier une machine virtuelle sous-jacente. Cette capacité à évoluer rend la définition exacte de ce que Smalltalk est quelque peu problématique. Un Smalltalk sain est un Smalltalk en évolution; une cible en mouvement.
Certains, peut-être beaucoup, dans la communauté Pharo pensent que Smalltalk a eu une mauvaise réputation dans les années 90, et certains sont mécontents du manque de soutien aux développeurs et se concentrent sur les Etoys que léquipe de recherche dAlan Kay avait, naturellement comme dailleurs Etoys était lobjectif de léquipe. Par conséquent, Pharo a une orientation très différente et souhaite passer du support multimédia désormais vieillissant de Squeak à une meilleure intégration avec l’écosystème informatique actuel, tel que github, et à réinventer la programmation en tant que processus d’exploration beaucoup plus dynamique; voir par exemple le travail de visualisation agile ci-dessus Rossal et la boîte à outils GT. Par conséquent, certains membres de la communauté pharo veulent nier que Pharo est un dialecte de Smalltalk. Cest une position que je comprends mais que je trouve à la fois fausse en réalité (indéniablement, dans sa syntaxe, sémantique et implémentation Pharo / is / a version de Smalltalk-80) et quelque peu irrespectueuse et ingrate (Pharo est un excellent environnement de programmation, à la fois parce quil a des gens formidables qui font un excellent travail et en sont capables car il sagit dun Smalltalk). Mais tant pis. Pharo repose sur ses mérites, un dialecte de Smalltalk puissant et en évolution rapide offrant des avantages de productivité radicaux aux programmeurs. Jespère que vous y jetterez plus quun rapide coup dœil. Ça va.