Existe-t-il un moyen de développer Smalltalk sans utiliser de machine virtuelle?

Je commence vraiment à apprendre Smalltalk. Maintenant, j’utilise Squeak , mais il y a un moyen de développer dans Smalltalk sans utiliser de VM, mais quelque chose comme un IDE?

Une image dans Smalltalk est analogue à une machine VMware: il s’agit simplement d’un état figé d’une application Smalltalk en cours d’exécution. Tous les Smalltalks utilisent des images, et développer avec un seul est la manière préférée de faire du développement dans tous les Smalltalks. De même, tous les Smalltalks comstacknt en bytecode et s’exécutent sur des machines virtuelles, tout comme Java, .NET, Python et d’autres. Mais cela n’a rien à voir avec le programme que vous utilisez pour développer un programme Smalltalk, et à quel point l’expérience est native.

Comme d’autres l’ont mentionné, Squeak est livré avec un IDE extrêmement performant, à savoir Squeak. Cependant, je ne pense pas que ce soit ce que vous demandez réellement. Pour autant que je sache, votre question est soit les deux, soit les deux:

  1. Puis-je développer pour Smalltalk des outils que je connais bien, des méthodes qui me sont familières? Par exemple, fichier par fichier, dans un éditeur de texte normal?
  2. Puis-je créer des applications d’apparence normale en utilisant Smalltalk?

Puis-je développer pour Smalltalk des outils que je connais bien?

En réponse à la première: pour presque tous les Smalltalks, non. Le format de fichier de Smalltalk était conçu pour être manipulé dans un IDE Smalltalk, plutôt que directement dans un éditeur de texte. C’est pourquoi Squeak, Pharo, VisualWorks, VisualAge et tous les autres Smalltalk que j’ai utilisés évitent que vous modifiiez directement la source et fournissiez plutôt leurs propres IDE personnalisés. Étant donné que ces outils sont multi plates-formes, leurs IDE ne sont généralement pas natifs, mais représentent plutôt une émulation multi-plateforme. Bien que vous puissiez modifier la source directement pour tous ces systèmes (par exemple, vous pouvez modifier le fichier foo.sources pour une image Squeak, puis utiliser le navigateur de modifications pour charger vos modifications), personne ne le fait réellement.

Deux voies peuvent vous rendre plus heureux à cet égard. Tout d’abord, comme d’autres l’ont fait remarquer, GNU Smalltalk franchit le pas et dispose en fait d’un format basé sur les fichiers, adapté aux éditeurs. GNU Smalltalk ne fonctionnait pas correctement sous Windows, j’ai vérifié, et est sous licence GPL, ce qui peut être un problème pour vous. Mais cela vous permet d’utiliser l’éditeur de votre choix. Vim et Emacs ont tous deux mis en évidence la syntaxe de GNU Smalltalk, et même si je ne connais pas de paquet pour NetBeans, Emacs ou l’un des principaux IDE, il ne serait pas très difficile d’en écrire un.

La deuxième voie à suivre, si votre seul souci est que Squeak ait l’air “moche”, serait d’utiliser Dolphin Smalltalk . Dolphin Smalltalk est une version Windows native de Smalltalk. Bien que son avenir soit déroutant pour le moment, vous voudrez peut-être y jeter un coup d’œil, car vous vous sentiriez probablement beaucoup plus à l’aise dans son environnement natal, si Squeak vous dérange.

Puis-je créer des applications natives?

Si vous voulez vraiment des widgets natifs, vous avez peu d’options pour le moment. Dolphin fournit des widgets natifs, mais, comme je l’ai mentionné précédemment, son avenir est actuellement incertain. Squeak, VisualWorks et GNU Smalltalk fournissent de bons systèmes FFI, et vous pourriez donc créer des interfaces utilisateur natives, mais cela serait relativement difficile et compliqué. Donc, en gros: si cela est très important pour vous, alors, en ce moment , utiliser Smalltalk n’est peut-être pas votre meilleure option.

Notez qu’il existe de nombreuses applications pour lesquelles avoir des widgets natifs n’est pas important. Les jeux et les kiosques n’ont certainement pas besoin d’utiliser des widgets standard, mais si vous regardez autour de vous, très peu d’applications traditionnelles les utilisent. Les produits propres à Microsoft sont réputés pour leur aspect et leur apparence personnalisés, Chrome semble amuser sur toutes les plates-formes sur lesquelles il s’exécute. ITunes est extrêmement populaire malgré son aspect vraiment bizarre sur les systèmes Windows, etc. La pléthore d’interfaces sur les sites Web a également mieux adapté les personnes aux interfaces non standard. Il y a donc une réelle possibilité que vous ne vous souciez tout simplement pas – et comme l’interface de Squeak est hautement thématisable, la rendre “jolie” lorsque vous êtes près de l’expédition ne sera pas difficile.

(GNU Smalltalk a de très bonnes liaisons Gtk +, ce qui peut vous convenir, selon ce que vous essayez de faire. Je vous pardonnerai de ne pas considérer cela comme une option viable.)

Ma recommandation

Pour être honnête, je vous encourage fortement à trouver l’un des Smalltalks avec un IDE que vous aimez et à l’utiliser. Vous serez beaucoup plus productif que d’essayer d’utiliser un éditeur de texte, qu’il s’agisse d’un éditeur saturé comme Eclipse, ou d’un éditeur de mauvaise qualité comme Scite. Vous manquerez énormément de grandeur de Smalltalk si vous allez sur d’autres routes: pas de REPL, débogage inférieur, navigation de code inférieure, etc.

Si vous insistez pour utiliser un environnement de développement traditionnel, la meilleure option est GNU Smalltalk. Vous devriez soigneusement évaluer si vous êtes satisfait de sa stabilité et de ses performances sous Windows avant de l’utiliser, et assurez-vous que vous êtes à l’aise avec les implications de sa licence GPL, mais si c’est le cas, modèle de développement basé sur des fichiers.

Squeak est un IDE. Le concept de “IDE” vient sans doute de Smalltalk! Voulez-vous peut-être un workflow “orienté fichier”? GNU Smalltalk est une implémentation qui fonctionne de cette façon.

Généralement, la réponse est non, car Smalltalk n’est pas simplement un langage, c’est aussi l’environnement, y compris les modifications que vous y apportez. Vous pourriez le traduire dans un système plus statique avec un framework plutôt qu’un univers d’objects vivants, mais ce serait différent. C’est ce que NeXTSTEP et donc Cocoa ont fait. Donc, la réponse pourrait être “sûr, il s’appelle Objective-C”.

EDIT: Tout cela dit, voir la référence de Logan à GNU Smalltalk.

L’utilisation d’une VM ne vous empêche pas d’utiliser un IDE. La question que vous devriez vous poser est de savoir quel IDE a une bonne intégration Smalltalk. Squeak est certainement la voie à suivre pour un IDE Smalltalk

Peut-être que d’autres ont d’autres IDE en tête, puisque vous utilisez déjà Squeak et que vous ne semblez pas être content. Qu’est-ce que vous cherchez exactement que Squeak ne fournit pas?

Travailler dans une image Squeak peut être très amusant.

L’environnement est un peu déroutant au début, mais il est très puissant.

Travailler dans un système en direct facilite l’exploration et le changement. Vous pouvez prendre un object sur son écran, jouer avec lui, parcourir la classe d’objects, exécuter du code et voir le monde changer.

Le navigateur Smalltalk est également beaucoup plus concentré sur la “navigation” du code que sur son écriture. Vous pouvez rapidement trouver tous les endroits où une classe est utilisée (du compilateur au serveur HTTP) et comprendre comment tout s’assemble.

Essayez de vous habituer à l’image pendant un certain temps. Je pense que vous perdriez quelque chose en utilisant un IDE externe.

Si vous chargez le projet SVI depuis squeaksource, vous pouvez utiliser les liaisons VI dans les outils Smalltalk. Je l’ai mis à jour pour fonctionner dans Squeak 4.1, pas sûr de 4.2.