Naja. Zwar bedient sich Ruby einiger Konzepte Smalltalks, aber
»MatzLisp« als »Smalltalk im Perlgewand« zu beschreiben, finde ich dann doch etwas gewagt. Von anderen Unterschieden abgesehen ist Smalltalk
homoikonisch und konsequent objektorientiert (macht z.b. nicht vor Verzweigungen halt).
Des Weiteren umfasst Smalltalk – von nicht unbedingt überzeugenden »Exoten« wie GNU Smalltalk abgesehen – nicht nur die Sprache an sich, sondern auch die damit verbundene graphische (zur Laufzeit veränderbare) Umgebung, sowie generell das Arbeiten in einem Image. Dem steht der unixtypische dateiorientierte Ansatz Rubys kontrastierend gegenüber.
Alles in Allem ist es schon ein riesengroßer Unterschied.
Ich sagte ja uch nicht, dass Ruby Smalltalk ist.
Smalltalk ist vor allem DIE objektorientierte Sprache. Sie ist kaum vergleichbar mit dem was in C++ oder Java an C rangepatzt wurde. Ich weiß, was Smalltalk noch alles ist (ich beschäftige mich schon lang genug mit Smalltalk (vor allem Sqeak)), aber es ging mir vor allem darum. Außerdem sieht man da für gewöhnlich auch schönes MVC, was ja der Hauptgrund für die Verwendung von Ruby (bzw. Rails) ist.
Auch Ruby schreibt objektorientiere Programmierung (und MVC in Rails) groß. Du tust dir sicher leichter von Ruby zu Smalltalk und umgekehrt zu wechseln, als bei den meisten anderen breit verwendeten Sprachen. Deshalb Smalltalk.
Ich spreche höufig von Perl, Python, PHP und Ruby in einem Atemzug, weil sie sehr vieles teilen. Sie sind (standardmäßig) dynamisch und werden sehr häufig in Skripten (u.a. als Shellalternative) und Webapplikationen genutzt. Sie haben allesamt relativ große Standardbibliotheken und viele Keywords (im Gegendatz zu Smalltalk).
Vielleicht hätte ich eher Sagen sollen, dass Ruby eine experimentelle Kreuzung von einigen Smalltalk-Konzepten und Skriptsprachen, wie Perl ist. Es ging mir um den "Alles ist ein Objekt"-Ansatz, der in Smalltalk (und Ruby) wesentlich stärker ausgeprägt ist, als zum Beispiel bei Python.
Aber cool, dass du offensichtlich Smalltalk kennst. Nutzt du es auch?
Ich glaube häufig, dass es nur von Leuten, die Computersprachen erforschen oder lehren genutzt wird. Das war auch ein Grund, warum ich sie angesprochen habe. Viele Leute sagen, Ruby ist cool, aber hat noch ein paar Kinderkrankheiten und dann frage ich mich, warum man nicht einfach Smalltalk nimmt. Ruby ist ja vor allem deshalb so berühmt, weil es sich einige Ideen von Smalltalk nahm und das ganze so verpackt hat, dass es auch ein C(++/Java)/PHP/Python/Perl/...-Programmierer sofort versteht.
Ich glaube die Anderen Sprachen[1] sind vor allem deshalb nicht so populär, weil sie nicht wie C aussehen. Pseudocode ist immer im C-Stil geschrieben. Ich meine den Programmaufbau. Klar, man kann Klammern verwenden oder mit then, end, ... arbeiten. Man kann das Semikolon nutzen und Sigils können vorhanden sein und verschiedenste Bedeutungen haben. Auch die Typisierung macht nicht viele Unterschiede.
Zur Einsatzerklärung von Smalltalk und Ruby für Leute, die eine der Sprachen nicht kennen reicht es IMO. Es lässt zwar auch vieles ausgeklammert, aber nur weil das eigentlich zwei verschiedene Sprachen sind.
Wenn es mal darum geht, dass man sich Objekte wirklich als Objekte zu sehen und nicht nur als einen Haufen von Variablen und Funktionen und Kontrollstrukturen auf das reduziert werden, was sie wirklich sind, dann meint so mancher Programmierer, dass ihm der Boden unter den Füßen weggezogen wird. Selbst, wenn man das ganze sehr schnell lernen und effektiv nutzen kann.
Das ganze ist jetzt etwas zusammengekürzt, weil es hier ja eigentlich nicht um Programmiersprachen geht. Wenn jemand antworten will, dann bitte per PM (und schreib mir mal einen besseren Vergleich

). Ich lass das jetzt mal hier, damit erklärt ist, was ich mit Smalltalk im Perlgewand gemeint hab und weil ich gern mit anderen Smalltalk-Fans plaudern würde. Ich fühle mich ein wenig isoliert und auch, wenn ich denke das wichtigste verstanden zu haben noch ein Neuling bin. Mir fehlt es an Stoff zum implementieren. Alles was ich mache sind Algorithmen und Snippets, damit ich sie habe, wenn ich sie mal brauche.
[1] also andere, als C(++), Java, Perl, Python, Ruby,...