heutzutage noch sinnvoll Smalltalk zu erlernen?
-
kennt jemand denn eine kostenlose einfache smalltalk umgebung? bitte kommt mir nicht mit squeak ich möchte gern bisschen smalltalk im texteditor schreiben und das dann kompilieren und ausführen. das squeak rumgeklicke ist nichts für mich, oder kann man den squeak compiler und vm auch von der kommandozeile irgendwie verwenden?
-
Um mal eine Gegenmeinung zu äußern: Ich würde es für Zeitverschwendung halten, sich momentan mit Smalltalk zu beschäftigen. Es mag ja sein, dass das eine schöne objektorientierte Sprache ist. Aber Objektorientierung kann man auch mit Sprachen lernen, die mehr Praxisrelevanz haben. Falls einem die nicht objektorientiert genug sind, nimmt man sich halt noch ein theoretisches Buch über Objektorientierung dazu. Davon hat man in jedem Fall mehr, als eine Sprache zu lernen, die heutzutage kaum noch Anwendung findet.
Und was lese ich da von "historischen Aspekte von Programmiersprachen und -Konzepten"? Hä? Etwas irrelevanteres gibt es wohl überhaupt nicht. Programmiersprachen stellen Werkzeuge dar. Man eignet sich Kenntnisse über Programmiersprachen an, um damit etwas zu machen oder um seine Fähigkeiten bezüglich des Programmierens generell zu verbessern. In diesem Zusammenhang kann ich nachvollziehen, warum jemand eine funktionale oder deklarative Sprache lernt, die kaum Anwendung findet. Ich kann aber nicht nachvollziehen, warum man eine objektorientierte Sprache ohne Anwendung lernen sollte. Das Interesse an historischen Aspekten der Programmierung führt praktisch zu gar nichts.
Man kann sich natürlich auf den Standpunkt stellen, dass es immer sinnvoll ist, etwas neues zu lernen. ...wie ruediger das macht. Aber was Smalltalk betrifft, würde es durchaus relevanteres Wissen geben, in das man seine Zeit investieren könnte.
-
@frage
http://directory.fsf.org/smalltalk.html
http://de.wikipedia.org/wiki/StepTalkGregor schrieb:
Aber Objektorientierung kann man auch mit Sprachen lernen, die mehr Praxisrelevanz haben.
Was soll denn bitte "Praxisrelevanz" bedeuten? Man lernt doch keine Sprache anhand irgend welcher Statistiken über Job-Angebote. (Relevanz ist wohl nicht Objektiv) Mit den Standard Sprachen wie Java und C++ kommt man ja ohnehin irgend wie in Kontakt. An der Uni oder in der Ausbildung. Daher sollte man seine Freizeit wohl lieber darin investieren ein besserer Programmierer zu werden, anstelle blind der Masse zu folgen. Gerade blind der Masse oder Statistik folgen, ist sicher kein guter Ansatz, außer man will eben schön im "statistischen Mittel" landen...
Und die Sprachenvielfalt ist so enorm. Am Ende machst du dem op klar, er soll Java lernen und er lernt die nächsten 3 Jahre Java und kommt in einen Beruf, wo er irgend ein Programm in PL/I oder Telefonanlagen mit proprietären Sprachen aus den 70ern programmieren muss.
Immer dieses "Praxisrelevanz" Gerede
Lernt programmieren und keine Programmiersprachen. Denn wenn was für einen Programmierer Relevanz hat in der Praxis ist es Programmieren und nicht Programmiersprache X.
Das erinnert mich auch ein bisschen an das "Webdesigner"-Relevanz Gerede aus dem Ende der 90er. Da waren Webdesigner auf einmal das "praxisrelevanteste" was es gab und das Arbeitsamt hat Umschulungen bis zum Ende bezahlt. Hatte sich halt nur nicht so viel mit der Praxis am Ende...
Falls einem die nicht objektorientiert genug sind, nimmt man sich halt noch ein theoretisches Buch über Objektorientierung dazu. Davon hat man in jedem Fall mehr, als eine Sprache zu lernen, die heutzutage kaum noch Anwendung findet.
Ne, von einem theoretischen Buch hat man höchstens die Theorie. Aber ob sich selbst das wirklich verfestigt ist die Frage. Man muss das Gehirn schon mit Praxis füttern, wenn man so etwas verstehen und in seine Denkweise übernehmen will. Ganz zu schweigen davon, das Smalltalk durchaus noch verwendet wird (mehrere Firmen die davon leben Smalltalk-Kurse anzubieten und kommerzielle Umgebungen zu entwickeln, können ja sicher nicht von ihren zwei Kunden aus der Urzeit überleben...). Sicher gibt es Sprachen die Populärer sind. Aber so what?!
In diesem Zusammenhang kann ich nachvollziehen, warum jemand eine funktionale oder deklarative Sprache lernt, die kaum Anwendung findet.
Um sein Denken zu schulen und seine Herangehensweisen. Wie du sagtest: Programmiersprachen sind Werkzeuge. Sieh es wie mit einem Handwerker: Wenn man nur einen Hammer hat, dann ...
Nur eine Programmiersprache zu können ist nicht sinnvoll. Nur ein Programmierparadigma zu können ist nicht sinnvoll. Sich schwer damit zu tun neue Programmiersprachen, -Systeme oder Paradigmen zu lernen ist mitunter "tödlich".
-
@ruediger: Sicher ist es immer gut, den Horizont zu erweitern. Aber wenn diese Horizonterweiterung immer nur in "ich lerne eine neue Programmiersprache" ausartet, dann ist diese Horizonterweiterung auch nicht besonders groß. Kenntnisse über Programmiersprachen stellen keine "harten" Fähigkeiten dar. Die kommen und gehen. Warum nicht etwas lernen, von dem man auf Dauer mehr hat?
Und zur Praxisrelevanz: Das betrifft nicht nur die Jobstatistiken. Damit sind auch andere Dinge verbunden: Zum Beispiel die gesamte Infrastruktur um eine Sprache herum. Was Unterstützung von Werkzeugen, Bibliotheken usw. betrifft. ...oder zum Beispiel auch, was die Community betrifft.
-
Gregor schrieb:
@ruediger: Sicher ist es immer gut, den Horizont zu erweitern. Aber wenn diese Horizonterweiterung immer nur in "ich lerne eine neue Programmiersprache" ausartet, dann ist diese Horizonterweiterung auch nicht besonders groß. Kenntnisse über Programmiersprachen stellen keine "harten" Fähigkeiten dar. Die kommen und gehen. Warum nicht etwas lernen, von dem man auf Dauer mehr hat?
Wenn man eine Programmiersprache lernt, lernt man mehr als die konkrete Sprache. Außer man macht den Fehler, lauter verwandte Sprachen zu lernen. Und das, was man dann über die konkrete Sprache hinaus lernt, das ist etwas, von dem man auf Dauer etwas hat.
Vielleicht ist das allerdings auch ein bisschen Typ-Frage. Jeder interessiert sich ja für unterschiedliche Dinge.
-
Mr. N schrieb:
Wenn man eine Programmiersprache lernt, lernt man mehr als die konkrete Sprache. Außer man macht den Fehler, lauter verwandte Sprachen zu lernen. Und das, was man dann über die konkrete Sprache hinaus lernt, das ist etwas, von dem man auf Dauer etwas hat.
Welche Sprachen würdest Du als verwandt zu Smalltalk ansehen?
-
]
Gregor schrieb:
@ruediger: Sicher ist es immer gut, den Horizont zu erweitern. Aber wenn diese Horizonterweiterung immer nur in "ich lerne eine neue Programmiersprache" ausartet, dann ist diese Horizonterweiterung auch nicht besonders groß. Kenntnisse über Programmiersprachen stellen keine "harten" Fähigkeiten dar. Die kommen und gehen. Warum nicht etwas lernen, von dem man auf Dauer mehr hat?
Ich sehe das leider genau andersherum. Ich halte die Kenntnisse von Frameworks, IDEs, Tools, Libraries, etc. fuer "weiche" Faehigkeiten. Mit eben genannten Dingen vertraut zu werden stellt konzeptionell nichts anspruchsvolles dar und kommt fast einem sturen Auswendiglernen gleich.
Lernt man dagegen verschiedene Programmierparadigmen anhand verschiedener Programmiersprachen, so ist der nachhaltige Wert doch viel groesser, da sich eben die Paradigmen viel langsamer veraendern als IDEs und Frameworks.
-
Doktor Prokt schrieb:
]
Ich sehe das leider genau andersherum. Ich halte die Kenntnisse von Frameworks, IDEs, Tools, Libraries, etc. fuer "weiche" Faehigkeiten. Mit eben genannten Dingen vertraut zu werden stellt konzeptionell nichts anspruchsvolles dar und kommt fast einem sturen Auswendiglernen gleich.Oh, soetwas meinte ich nicht. IDEs, genau wie Programmiersprachen, würde ich zu einem "Werkzeugbereich" zählen. Ich würde diesbezüglich dann eher etwas aus dem Anwendungsbereich lernen. Es mag ja sein, dass man mit einem größeren Überblick über Programmiersprachen bessere Programme schreiben kann. Aber gute Programme kann man erst dann schreiben, wenn man auch entsprechendes Wissen über den Anwendungsbereich hat. ...bzw. aus so Zwischenbereichen, die einem ein systematischeres Herangehen an den Anwendungsbereich ermöglichen.
Abgesehen davon: Jeder hier kann sich mal eine Liste an Programmiersprachen machen, die er danach sortiert, welche er eher lernen würde. ...IMHO kommt Smalltalk auf so einer Liste vielleicht irgendwo auf Platz 10-15. Nicht vorher. Und an diesen Plätzen hat man schon einen sehr großen Horizont, was die Programmierung betrifft. die Horizonterweiterung von Smalltalk ist da sehr beschränkt.
-
rüdiger schrieb:
@frage
http://directory.fsf.org/smalltalk.html
http://de.wikipedia.org/wiki/StepTalkbin ich zu doof dafür? ich find da bei beiden keine binaries für windows
-
Gregor schrieb:
Mr. N schrieb:
Wenn man eine Programmiersprache lernt, lernt man mehr als die konkrete Sprache. Außer man macht den Fehler, lauter verwandte Sprachen zu lernen. Und das, was man dann über die konkrete Sprache hinaus lernt, das ist etwas, von dem man auf Dauer etwas hat.
Welche Sprachen würdest Du als verwandt zu Smalltalk ansehen?
Objective-C und Ruby wären verwandt. Python wäre auch noch verwandt genug.
-
Mr. N schrieb:
Gregor schrieb:
Mr. N schrieb:
Wenn man eine Programmiersprache lernt, lernt man mehr als die konkrete Sprache. Außer man macht den Fehler, lauter verwandte Sprachen zu lernen. Und das, was man dann über die konkrete Sprache hinaus lernt, das ist etwas, von dem man auf Dauer etwas hat.
Welche Sprachen würdest Du als verwandt zu Smalltalk ansehen?
Objective-C und Ruby wären verwandt. Python wäre auch noch verwandt genug.
Ok, da Du nicht lauter verwandte Sprachen lernen willst, würdest Du Dich diesbezüglich wohl für eine dieser 4 Sprachen entscheiden. ...maximal 2. Welche wären das? IMHO wären Python und Ruby vorne.
-
Gregor schrieb:
Mr. N schrieb:
Wenn man eine Programmiersprache lernt, lernt man mehr als die konkrete Sprache. Außer man macht den Fehler, lauter verwandte Sprachen zu lernen. Und das, was man dann über die konkrete Sprache hinaus lernt, das ist etwas, von dem man auf Dauer etwas hat.
Welche Sprachen würdest Du als verwandt zu Smalltalk ansehen?
java
-
Gregor schrieb:
Mr. N schrieb:
Objective-C und Ruby wären verwandt. Python wäre auch noch verwandt genug.
Ok, da Du nicht lauter verwandte Sprachen lernen willst, würdest Du Dich diesbezüglich wohl für eine dieser 4 Sprachen entscheiden. ...maximal 2. Welche wären das? IMHO wären Python und Ruby vorne.
Ehrlich gesagt finde ich die alle nicht soo spannend. Aber das ist meine ganz persönliche Meinung.
-
Gregor schrieb:
IMHO wären Python und Ruby vorne.
Python und Ruby sind sich aber sehr sehr ähnlich. Das hätte keinen Mehrwert. Aber du wählst die Sprachen wohl wirklich nach Hypes? :p
@ruediger: Sicher ist es immer gut, den Horizont zu erweitern. Aber wenn diese Horizonterweiterung immer nur in "ich lerne eine neue Programmiersprache" ausartet, dann ist diese Horizonterweiterung auch nicht besonders groß. Kenntnisse über Programmiersprachen stellen keine "harten" Fähigkeiten dar. Die kommen und gehen. Warum nicht etwas lernen, von dem man auf Dauer mehr hat?
Die Konkrete Kenntnis der Syntax-Elemente und Library kommt und geht (bzw. ist vielleicht nicht mehr so präsent, lässt sich aber schnell wieder auffrischen). Aber das höhere, als die Paradigmen und Methodik (=> Denkweise), die bleibt hängen. Das ist ja auch das wichtige.
-
rüdiger schrieb:
Gregor schrieb:
IMHO wären Python und Ruby vorne.
Python und Ruby sind sich aber sehr sehr ähnlich. Das hätte keinen Mehrwert. Aber du wählst die Sprachen wohl wirklich nach Hypes? :p
Es geht insgesamt darum, dass alle diese 4 Sprachen zu ähnlich sind bzw. zu wenig neues gegenüber den anderen bringen, um sie alle zu lernen.
-
rüdiger schrieb:
Die Konkrete Kenntnis der Syntax-Elemente und Library kommt und geht (bzw. ist vielleicht nicht mehr so präsent, lässt sich aber schnell wieder auffrischen). Aber das höhere, als die Paradigmen und Methodik (=> Denkweise), die bleibt hängen. Das ist ja auch das wichtige.
Eben: Das objektorientierte Paradigma kennen hier die meisten schon aus diversen anderen Sprachen. Warum also Smalltalk lernen? Das "mehr", was da hängen bleibt, ist dann doch relativ gering. Und wenn man die Objektorientierung noch nicht aus anderen Sprachen kennt: Würdest Du Smalltalk lernen, bevor Du Dir eine Sprache wie C++ aneignest (oder meinetwegen Java oder C#)?
-
Gregor schrieb:
rüdiger schrieb:
Gregor schrieb:
IMHO wären Python und Ruby vorne.
Python und Ruby sind sich aber sehr sehr ähnlich. Das hätte keinen Mehrwert. Aber du wählst die Sprachen wohl wirklich nach Hypes? :p
Es geht insgesamt darum, dass alle diese 4 Sprachen zu ähnlich sind bzw. zu wenig neues gegenüber den anderen bringen, um sie alle zu lernen.
Objective-C würde jemandem der nur Python kennt sicher einiges neues mit geben. Ruby dagegen nicht. Wie es mit Smalltalk aussieht weiß ich nicht, da ich es nicht kenne.
Eben: Das objektorientierte Paradigma kennen hier die meisten schon aus diversen anderen Sprachen. Warum also Smalltalk lernen? Das "mehr", was da hängen bleibt, ist dann doch relativ gering.
Dafür kenne ich Smalltalk zu wenig um das beurteilen zu können. Aber eine neue Sprache zu lernen lohnt sich fast immer. Selbst wenn es nur zur Gewohnheit ist mit anderer Syntax klar zu kommen (denn auch neue Sprachen lernen muss gelernt sein).
Würdest Du Smalltalk lernen, bevor Du Dir eine Sprache wie C++ aneignest (oder meinetwegen Java oder C#)?
Ich hab's nicht gelernt
-
@ruediger: Das ist doch eine Frage der Prioritäten. Wenn man 10 Sprachen beherrscht und darunter 3-4 Sprachen sind, die die Objektorientierte Programmierung unterstützen. Wieviel bringt es da noch, eine weitere OO-Sprache zu lernen, die vielleicht eine etwas "reinere" Objektorientierung realisiert, als es in Deinen 3-4 anderen Sprachen der Fall ist. Sollte man diese Sprache dann wirklich noch lernen, um damit seinen Horizont zu erweitern? IMHO sollte man dann an einem Punkt angelangt sein, an dem man sich sagt "Ich lerne diese Sprache, wenn ich sie für ein Projakt brauche. Zur Horizonterweiterung lerne ich jetzt erstmal andere Dinge".
Das ist meine Sichtweise. Und Smalltalk würde ich nicht bei den ersten 10 Sprachen einordnen, die man vielleicht noch aus Gründen der Horizonterweiterung lernt.
PS: Ich stelle auch fest, dass hier keiner, der das Erlernen von Smalltalk anregt, selbst schon Smalltalk gelernt hat (zumindest hat das keiner gesagt). Insofern scheinen die Prioritäten bezüglich dem, was man "zuerst" lernen sollte, gar nicht so weit auseinanderzugehen.
-
Gregor schrieb:
@ruediger: Das ist doch eine Frage der Prioritäten. Wenn man 10 Sprachen beherrscht und darunter 3-4 Sprachen sind, die die Objektorientierte Programmierung unterstützen. Wieviel bringt es da noch, eine weitere OO-Sprache zu lernen, die vielleicht eine etwas "reinere" Objektorientierung realisiert, als es in Deinen 3-4 anderen Sprachen der Fall ist. Sollte man diese Sprache dann wirklich noch lernen, um damit seinen Horizont zu erweitern? IMHO sollte man dann an einem Punkt angelangt sein, an dem man sich sagt "Ich lerne diese Sprache, wenn ich sie für ein Projakt brauche. Zur Horizonterweiterung lerne ich jetzt erstmal andere Dinge".
Klar. Man sollte natürlich auch möglichst viele unterschiedliche Paradigmen und Methoden sich anschauen. Aber es ging ja auch konkret nur um Smalltalk. Da bringt es wenig, wenn ich eine Liste von Sprachen hinknalle. Mir ging es nur drum, den OP dabei zu bestärken etwas neues zu lernen. Selbst wenn man nur zwei ziemlich ähnliche Sprachen lernt, bringt das imho mehr, als nur eine zu können
-
rüdiger schrieb:
Mir ging es nur drum, den OP dabei zu bestärken etwas neues zu lernen. Selbst wenn man nur zwei ziemlich ähnliche Sprachen lernt, bringt das imho mehr, als nur eine zu können
Ok, da hast Du natürlich Recht. Bevor man gar nichts macht, ist es natürlich besser, seine Zeit damit zu verbringen, Smalltalk zu lernen.