Concepts
Les principaux concepts de Smalltalk sont :
- « Tout est objet. » Les chaînes de caractères, les entiers, les booléens, les définitions de classes, les blocs de code, les piles et la mémoire sont représentés en tant qu'objets.
- Tout est modifiable. Le langage permet par exemple de changer d'IDE en cours d'utilisation, sans recompiler ni redémarrer l'application. De même, il est possible de créer de nouvelles instructions de contrôle dans le langage. Certaines implémentations permettent de changer la syntaxe du langage, ou la façon dont le ramasse-miettes fonctionne.
- Le typage est dynamique, donnant une certaine concision au langage.
- Un ramasse-miettes mémoire est intégré et transparent pour le développeur.
- Un système de gestion d'exceptions avec reprise est fourni.
- Les programmes Smalltalk sont généralement compilés en bytecode, exécutés par une machine virtuelle.
- La traduction dynamique : les machines virtuelles commerciales modernes compilent le bytecode vers le code machine natif de façon à obtenir de meilleures performances, une technique dont Smalltalk-80 a été le pionnier, développé par ParcPlace Systems au milieu des années 1980. Cette idée a été adoptée par le langage de programmation Java quelques dix ans après et renommée « compilation just-in-time », ou JIT.
- Une classe peut hériter d'une seule autre classe (héritage simple).