10
votes

Différences entre Smalltalk et Python?

J'étudie Smalltalk en ce moment. Cela ressemble beaucoup à Python (en fait, le contraire, Python est très similaire à Smalltalk), alors je me demandais, comme un passionné de python, si cela vaut vraiment la peine de l'étudier.

Outre le passage du message, quelles sont les autres différences conceptuelles notables entre Smalltalk et Python qui pourrait me permettre de voir de nouveaux horizons de programmation?


2 commentaires

Question offtopique: qu'est-ce que vous utilisez pour courir SmallTalk? La seule chose que j'ai trouvée il y a des années était grincante que je n'ai pas trop aimé. Qu'est-ce que tu utilises pour apprendre.


Je viens d'installer des grincements, mais il y a aussi gnu smalltalk. Malheureusement, j'ai besoin de fins pour ce dernier et je suis trop paresseux d'installer Fink sur mon ancien ordinateur portable.


5 Réponses :


18
votes

en python, les constructions "de base" telles que si / else , les opérateurs booléens à court-circuit et les boucles font partie de la langue elle-même. En Smalltalk, ce sont tous des messages seulement. En ce sens, tandis que Python et SmallTalk contentent que "tout est un objet", Smalltalk va plus loin dans la mesure où il affirme aussi que "tout est un message".

[modifier] quelques exemples.

Déclaration conditionnelle dans SmallTalk: xxx

NOTE Comment et: est un message sur booléen (lui-même produit en conséquence de message de passage > à x ) et le deuxième argument de et: n'est pas une expression simple, mais un bloc, permettant à la paresse (c'est-à-dire Évaluation à court-circuit). Cela produit un autre objet boolean , qui prend également en charge le message iftrue: iffalse: , en prenant deux autres blocs (c.-à-d. Lambdas) comme des arguments et d'exécuter l'un ou l'autre en fonction de la valeur du booléen.


3 commentaires

Tout-est-a-a-mutable-tout méta-folie ... J'aime beaucoup ça.


Regardez la recherche sur les points de vue ... qui vous souffleront.


Assez proche. iftrue: est un message à Boolean qui prend un bloc comme un argument.



7
votes

SmallTalk Historiquement a eu une incroyable IDE intégrée. J'ai manqué cette IDE sur de nombreuses langues.

SmallTalk a également la belle propriété qu'il s'agit généralement d'un système de vie. Vous commencez propre et commencez à modifier les choses. Ceci est fondamentalement un système de stockage persistant objet. Cela étant dit, c'est à la fois bon et mauvais. Ce que vous exécutez fait partie de votre système et fait partie de ce que vous expédiez. Le système peut être configuré assez bien avant d'être distribué. Le côté bas, est que le système a tout ce que vous exécutez dans le cadre de ce que vous expédiez. Vous devez être un emballage très minutieux pour la redistribution.

Maintenant, cela étant dit, cela fait longtemps que je travaille avec SmallTalk (environ 20 ans). Oui, je sais, moments amusants pour ceux qui font les maths. SmallTalk est une belle langue, amusante à programmer, amusante à apprendre, mais j'ai trouvé un peu difficile à expédier les choses.

aime jouer avec elle si vous le faites. J'ai joué avec Python et je l'aime.

jacob


1 commentaires

L'IDE a l'air assez mignon. Maintenant, si je pouvais voir du code ... ce serait encore mieux ..



2
votes

L'aspect linguistique n'est souvent pas si important et de nombreuses langues sont tout à fait même ,

De ce que je vois, Python et Smalltalk Partager des idéaux OOP ... mais sont très différents dans leur mise en œuvre et la puissance de l'interface de langue présentée.

La valeur réelle vient dans ce que les différences subtiles dans la syntaxe permettent en termes de mise en œuvre . Jetez un coup d'œil à soi-même et à d'autres langues méta-lourdes.

Regardez au-delà de la syntaxe et de la sémantique immédiate à ce que les différences subtiles permettent à la mise en œuvre de faire.

Par exemple:

Tout dans SmallTalk-80 est disponible pour modification de l'intérieur d'un programme en cours d'exécution

Quelles différences entre Python et SmallTalk permettent une maniplation plus profonde de la maniplation? Comment la langue active la mise en œuvre du compilateur / d'exécution?


0 commentaires

10
votes

Comme quelqu'un de nouveau pour Smalltalk, les deux choses qui me frappent vraiment sont le système basé sur l'image et que la réflexion est partout. Ces deux faits simples semblent donner naissance à tout ce qui est cool dans le système:

  • L'image signifie que vous faites tout en manipulant des objets, y compris l'écriture et la compilation de code
  • la réflexion vous permet d'inspecter l'état de n'importe quel objet. Étant donné que les classes sont des objets et que leurs sources sont des objets, vous pouvez inspecter et manipuler le code
  • Vous avez accès au contexte d'exécution en cours, vous pouvez donc consulter la pile, et à partir de là, le code compilé et la source de ce code et ainsi de suite sur
  • La pile est un objet, vous pouvez donc l'enregistrer puis reprendre la suite plus tard. Bingo, Continuations!

    Tout ce qui précède commence à se réunir de manière cool:

    • Le navigateur vous permet d'explorer la source de tout, y compris la machine virtuelle dans Squeak
    • Vous pouvez apporter des modifications qui affectent votre programme en direct. Il n'est donc pas nécessaire de redémarrer et de naviguer sur tout ce que vous travaillez sur
    • Encore meilleur, lorsque votre programme jette une exception, vous pouvez déboguer le code en direct. Vous réparez le bogue, mettez à jour l'état s'il est devenu incohérent et que votre programme continue.
    • Le navigateur vous dira s'il pense que vous avez fait une typographie
    • Il est absurdement facile de parcourir la hiérarchie de la classe, ou découvrez quels messages un objet répond ou quel code envoie un message donné, ou quels objets peuvent recevoir un message donné
    • Vous pouvez inspecter et manipuler l'état de tout objet dans le système
    • Vous pouvez effectuer deux objets de basculer littéralement des endroits avec deviennent:, ce qui vous permet de faire des choses folles telles que l'objet de tout objet puis de le tirer en parotuellement d'ailleurs s'il est envoyé un message.

      Le système d'image et la réflexion ont fait toutes ces choses parfaitement naturelles et normales pour un smallTalker pendant environ trente ans.


0 commentaires

3
votes

La langue SmallTalk elle-même est très importante. Il comprend un petit ensemble de fonctionnalités orthogonales puissantes qui rend la langue très extensible. Comme Alan Lovejoy dit: "SmallTalk est également amusant, car la définition et l'utilisation de langues spécifiques sur le domaine n'est pas une réflexion après coup, c'est la seule façon qui fonctionne de Smalltalk Works du tout." La notation linguistique est essentiellement importante car: "Les différences de la puissance expressive de la notation de programmation utilisée font de compte." Pour plus, lisez l'article complet ici .


0 commentaires