Dans chaque publication technique, et également sur ce site, les gens comparent toujours les langues OO à Smalltalk . Mon expérience est en Java: Smalltalk est-il si important que je devrais l'étudier?
Réponses
Trop de publicités?Smalltalk est l'un des premiers de l'orienté objet (OO) langues (avec d'autres comme Simula et Eiffel) et peut être dit d'être très "pur" dans un OO sens:
- Tout est un objet et les objets ne sont communiquées via l'envoi de messages
- Pas de primitives (pas de
int
s,boolean
s etc) - Pas de structures de contrôle (pas de
for
,while
,if
etc). Semble impossible, mais c'est vrai! - Pas statique
Il a également été le pionnier de certains autres, désormais commune, des trucs:
- la machine virtuelle (et compilation JIT)
- Débogage par l'inspection
- "Hotswapping" l'exécution de code
- les IDE modernes
- Fermetures
- Duck-typing
- Modèle-Vue-Contrôleur (MVC) architecture de l'Isu
- Développement piloté par les tests (TDD) et de la méthodologie agile
Et il y a d'autres choses connecté avec Smalltalk, qui n'a pas vraiment le faire dans le courant dominant:
- "Image"à base de système plutôt que basé sur des fichiers.
- Bases de données orientées objet
Et il est juste de dire que le Java collections de l'API et de l' apache commons collections de l'API sont fortement influencés par le langage Smalltalk.
Je ne dis pas que vous devriez apprendre à Smalltalk en soi, mais une familiarité avec les principes de base de ces caractéristiques (aujourd'hui présent dans de nombreuses autres langues) est certainement avantageux pour vous.
Notez qu'il existe actuellement seulement 123 questions ici à propos de la langue, qui a été initialement conçu comme un enseignement de la langue (c'est à dire visant les enfants) par son créateur, Alan Kay. Il n'est pas particulièrement lourd, plus utilisé. Cela ne veut pas dire qu'il n'est pas utilisé. JPMorgan, par exemple, a un grand dérivés exotiques de gestion des risques système écrit.
Smalltalk a beaucoup des innovations brillantes - les choses que nous sommes tous en prenant pour acquis aujourd'hui, y compris:
- étant le premier IDE
- fournir un appui programmatique pour une interface graphique avec la souris Si vous apprenez l'interface de programmation Smalltalk, vous l'aurez compris MVC correctement.
- construit à partir d'un petit nombre d'idées puissantes qui fonctionnent très bien ensemble
- Le Smalltalk n'est pas de crash sur le comportement inattendu - c'est de s'adapter. Si vous envoyez un message à un objet qui ne le comprennent pas, le débogueur est en place et vous invite à écrire la méthode... donc il fournit un excellent support pour le développement incrémental.
- L'IDE, l'application que vous êtes en train de rédiger et de vos données font partie d'un même système, de sorte que vous pouvez écrire vos propres outils et de débogage de l'instrumentation beaucoup plus facilement.
- Le TDD ensemble d'outils en Smalltalk est toujours mieux que n'importe quelle autre langue (voir ci-dessous).
- Bruit Smalltalk a un peu de design d'avant-garde de la recherche:
- le morphiques de l'INTERFACE utilisateur - vous pouvez vous familiariser avec le concept de "liveness"
- le bord de mer framework web - apprendre ce qu'est un prolongement du serveur est et comment il est radicalement différent
- Squeak a une forte connexion avec l'OLPC logiciel (un ordinateur portable par enfant) projet - et pourrait encore avoir une grande influence sur le monde.
- Savoir ce qu'est un "trait" est...
- Jouer avec le radical 3D immersive environnement Ouvert de Croquet.
- Parce que Smalltalk est un plus petit, plus simple et plus cohérente de la langue, il est intégré dans l'environnement, il est beaucoup moins difficile de commencer l'enseignement de la programmation orientée objet. Les personnes qui choisissent cette voie, finissent par être mieux de Java, Ruby et C#, programmeurs, car ils peuvent apprendre des notions de programmation orientée objet, sans le désordre des incohérences d'un courant de langues.
- Certains commerciaux Smalltalks ont incroyable, multi-nœuds distribués OO base de données des environnements. Je suis en train de réfléchir de pierres précieuses.
- Voulez savoir la différence entre le Modèle-Vue-Contrôleur et Model-View-Presenter - regarder Dauphin Smalltalk...
La raison la plus importante pour apprendre Smalltalk aujourd'hui, c'est que l'extreme programming et scrum fois obtenu inventé dans la Causerie de la communauté... et hautement interactif style de programmation que vous avez de l'expérience dans Smalltalk est plus simple, plus puissante et directe que tout ce que vous pouvez faire avec Java ou C# ou Ruby... et vous ne pouvez pas vraiment comprendre comment les méthodes agiles peuvent travailler jusqu'à ce que vous avez essayé de faire l'extreme programming en Smalltalk. Quelques autres langues (pas les plus grands de toute façon) ont un ensemble de fonctionnalités comparables.
... pour vraiment comprendre ce que TDD peut-être vous avez besoin d'utiliser SUnit. JUnit vous montre où vos tests a échoué. SUnit permet en fait vous cliquez sur dans le débogueur au moment où le test a échoué et voir les objets et comment ils sont connectés de sorte que vous pouvez voir, vivre dans le débogueur la façon dont le code a échoué et le fixer droit.
Oui, Smalltalk est si important que vous devez étudier. Pourquoi? Vous pouvez comprendre la programmation orientée objet dans la pure, la forme simple. Ce que les gens oublient, c'est que le langage Smalltalk-80 "Livre Bleu" a seulement environ 90 pages consacrées à la langue—la langue est aussi simple que cela. L'autre de 300 pages parler de la classe prédéfinie de la hiérarchie, qui est un chef-d'œuvre de la conception pour une classe de base, langage orienté objet qui utilise l'héritage simple. Vous obtiendrez une bien meilleure compréhension des objets (par exemple, les classes sont des objets, et ils ont metaclasses, et ainsi de suite à l'infini... sauf le noeud est soigneusement attaché à maintenir le système finis) que vous n'auriez jamais obtenir à partir de l'étude d'une langue hybride, comme le Java ou le C++. Smalltalk questions non seulement en raison de son histoire, mais en raison de sa simplicité:
Assez Simple pour que vous compreniez l' ensemble de la langue et les bibliothèques
Montre une idée (les objets sont tous vous avez besoin d') poussé à son extrême logique
Tout le monde a quelque chose à apprendre de Smalltalk!
Smalltalk est l'une des deux premières d'origine programmation orientée objet, les langues, l'autre étant Simula-67. Par conséquent, il existe deux grandes familles - la statiquement typé modèle centré autour de l'invocation de méthode, développée par Simula (C++, Java, C# appartiennent tous ici), et le typées dynamiquement modèle centré autour de la transmission de message, lancé par Smalltalk (Python, Ruby appartiennent ici).
Aujourd'hui, Smalltalk n'est pas particulièrement important sur son propre - il y a certaines personnes continuent de l'utiliser pour écrire des trucs, mais c'est vraiment pas courant. L'apprentissage, il vous donnera une idée sur le comment et le pourquoi de la programmation orientée objet a néanmoins évolué.
Lors d'une conférence tenue le mois dernier, j'ai consacré environ 5 minutes à une présentation sur l'histoire et l'influence de Smalltalk. Voir Développement basé sur une image avec Smalltalk . Un des concepts les plus étrangers aux programmeurs actuels est le développement "basé sur l'image". Il existe de bonnes analogies, notamment un SGBD et un tableur.