La génération de code automatisée dans le langage Smalltalk est un sujet fascinant qui s'inscrit parfaitement dans l'esprit dynamique et exploratoire de ce langage orienté objet. Smalltalk, créé dans les années 1970 au Xerox PARC, est connu pour son environnement de développement intégré et son système basé sur des objets vivants, ce qui facilite l'automatisation et la modification en temps réel du code généré.
Dans le contexte de la génération de code automatisée, Smalltalk offre plusieurs avantages clés :
Flexibilité du modèle objet : Smalltalk est entièrement basé sur des objets vivants pouvant être modifiés à la volée. Cela permet à des outils de génération de code d'inspecter, modifier et étendre dynamiquement les classes et objets générés, ce qui est très pratique pour l'expérimentation et le prototypage rapide.
Génération de code à partir de spécifications : Des systèmes comme ViennaTalk permettent de générer automatiquement du code Smalltalk à partir de spécifications formelles telles que VDM-SL. Ces générateurs traduisent des modèles de haut niveau en classes, objets anonymes et scripts Smalltalk, avec des propriétés importantes comme la traçabilité entre code généré et spécifications, et une lisibilité proche du code écrit à la main. Cela ouvre la porte à l'exploration itérative et à la vérification rapide des modèles grâce à un lien étroit entre la spécification et l'exécution.
Liveness et interactivité : Contrairement à des générateurs de code classiques qui produisent du code compilé devant être construit et exécuté, Smalltalk permet d'exécuter immédiatement le code généré dans son environnement. Par exemple, sous ViennaTalk, le code Smalltalk généré peut être modifié et régénéré à la volée pendant que les objets sont encore en cours d'exécution, ce qui facilite un cycle itératif de développement extrêmement rapide et interactif.
Optimisation et inlining : Des recherches récentes montrent l'amélioration des performances de Smalltalk grâce à la génération de code inliné lors de la compilation, c’est-à-dire que certaines séquences de messages sont intégrées directement dans le corps de la méthode pour réduire les appels de messages et favoriser les optimisations du compilateur. Cela montre que la génération de code automatisée en Smalltalk peut aussi s’orienter vers la production de code très performant.
Interopérabilité et génération de code cible : Il existe aussi des approches diverses où Smalltalk sert à générer d’autres langages (par exemple du C ou du C++), notamment pour intégrer des composants à partir d’un environnement Smalltalk. Cependant, l’aspect le plus caractéristique reste la génération et manipulation directe du code et des objets Smalltalk dans son environnement vivant.
Ainsi, la génération de code automatisée en Smalltalk est à la fois un processus puissant, interactif et intégré, qui bénéficie pleinement de la nature réflexive et orientée objet du langage. Elle permet non seulement de transformer des spécifications abstraites en code exécutable, mais aussi d’adopter un cycle de développement fluide où le code peut être généré, testé, modifié, et régénéré en continu, offrant une grande productivité aux développeurs.
En résumé, la génération de code automatisée dans le langage Smalltalk se caractérise par sa capacité à produire du code clair, traçable et modifiable, ainsi que par l'interactivité et la "vivacité" uniques à son environnement, ce qui favorise une approche exploratoire du développement logiciel. Elle illustre parfaitement la philosophie de Smalltalk où le code est un objet vivant au cœur d'un environnement de programmation dynamique et puissant.
- https://www.overturetool.org/publications/papers/04OdaEtAl.pdf
- https://ceur-ws.org/Vol-3893/Paper06.pdf
- https://www.youtube.com/watch?v=kQ4Bgi2B9L4
- https://wiki.c2.com/?GeneratingCppFromSmalltalk
- https://www.reddit.com/r/smalltalk/comments/9g9wo1/generating_c_code_with_smalltalk_syntax/
- https://en.wikipedia.org/wiki/Smalltalk
- https://book.gtoolkit.com/smalltalk-history-2oiurgue84cv8xerpds2kphqh
- https://www.overturetool.org/workshops/14/TomohiroOda-SmalltalkCG.pdf
- https://live.exept.de/doc/online/english/tools/misc/TOP.html
- https://worrydream.com/EarlyHistoryOfSmalltalk/
- https://www.slideshare.net/slideshow/inlined-code-generation-for-smalltalk-from-iwst2024/272187068
- https://learnxinyminutes.com/smalltalk/
- https://ericnormand.me/podcast/the-early-history-of-smalltalk
- https://sync-sys.com/smalltalk-modernization/
- https://rmod-files.lille.inria.fr/FreeBooks/BitsOfHistory/BitsOfHistory.pdf
- https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=7e11d58c3e0797f5f899fa207557cd82138bfc29
- https://cse.buffalo.edu/~eblanton/course/cse410-2025-0s/materials/12-smalltalk-history.pdf
- https://news.ycombinator.com/item?id=17913668
- https://computerhistory.org/blog/smalltalk-at-50/
- https://legacy.codeproject.com/Articles/1241904/Introduction-to-the-Smalltalk-Programming-Language