Ich versuche, Smalltalk zu lernen, indem ich so etwas mache, damit ich die Syntax und den Stil im Griff habe, indem ich eine einfache "Matrix" -Klasse baue.
Zunächst wäre ich dankbar, wenn es mit einem guten Smalltak-Tutorial verknüpft wäre (obwohl dies völlig optional ist), vorzugsweise eines, das die GUIs nicht verwendet (ich würde lieber mein .st
s als Fisch eingeben) um den Hierarchie-Explorer, um die Methoden an ihre Stelle zu setzen).
Dann auf TDD: Für dieses Projekt rufe ich gst-sunit -f matrix.st -f matrix-test.st BaseMatrixTests
an, und es wird bestimmt einen besseren Weg geben. Gibt es?
Und schließlich behauptet on: Ich versuche eine Methode zu schreiben und setze Behauptungen in, zB:
%Vor%Wie kann ich diese Art von Behauptungen machen?
Bearbeiten: Fragen markiert explizit.
Okay, mehrere Stücke hier.
Erstens stimme ich mit markusQ überein, obwohl ich voll und ganz mitfühlend bin: Ich wäre lieber in der Lage, meinen Code direkt in EMACS zu schreiben. Eines der Dinge über Smalltalk ist, dass es wirklich sehr unversöhnlich ist für Leute, die nicht den Smalltalk Way machen wollen. In diesem Fall verwendet der Smalltalk Way die Browser.
Zweitens ist Teil des Grundes, dass dies die Smalltalk-Methode ist, dass Smalltalk in vielerlei Hinsicht anderen Sprachen nicht ähnlich ist. Es gibt wirklich, praktisch gesehen, keine Möglichkeit, eine "separate" Smalltalk-Programmdatei zu erstellen: Alles, was Sie tun können, ist ein Image von Smalltalk mit einigen relativ kleinen Fragmenten Ihres eigenen Codes. Wenn Sie Code mit einem externen Editor schreiben Wie bei der Syntax, die Sie zeigen, geben Sie buchstäblich nur ein Import- / Exportformat ein, das etwas einfacher zu handhaben ist als XML. Aber nur etwas.
Die Moral ist, machen Sie es Smalltalk mit den Browsern.
Es gibt einige ziemlich gute Tutorials für Smalltalk. Normalerweise benutze ich Squeak, also verwenden die, die ich gesehen habe, Squeak, als hier .
Bei TDD hast du Glück, weil Smalltalk der erste Ort war, an dem du xUnit bekommst. Für Smalltalk heißt es SUnit, und hier gibt es ein gutes Tutorial .
Sie verwenden dort Behauptungen, die scheinbar im Prinzip ein "Design by Contract" -Ansatz sind. Es wurde bereits an Smalltalk gearbeitet, um das Design vertraglich zu ergänzen, als hier . Für einfache Assertionen können Sie Code wie in diese SO-Frage hinzufügen.
%Vor%Ich hasse es zu sagen (weil du deutlich gesagt hast, dass du es nicht hören willst), aber geh in die IDE. Der Versuch, sich mit Smalltalk zu beschäftigen, ohne die IDE zu benutzen, ist wie nach Paris zu gehen und bei McDonalds zu essen. Sicher, du bist in Paris, aber du stellst dich nicht wirklich aus, worum es geht.
Das Wichtigste an Smalltalk ist, dass alle Objekte sind. Ganz unten (Ganzzahlen und Zeichen sind Objekte) und ganz oben (Klassen, Methoden, Browser, IDE selbst) sind alle Objekte . Wenn Sie darauf bestehen, dagegen anzukämpfen, haben Sie so viel Glück wie jemand, der lernen möchte, C durch Drag & Drop zu schreiben.
Wenn Sie Cincom Smalltalk Non-Commercial heruntergeladen haben, gibt es eine Reihe von Online-Tutorials. Beginnen Sie hier:
Wenn du Squeak heruntergeladen hast, starte hier:
Und ja, Sie müssen wirklich die IDE verwenden, um effektiv mit Smalltalk zu arbeiten.
Laden Sie beim Testen SUnit. In Cincom Smalltalk ist es eine ladbare Komponente; Ich habe das Laden (und Verwenden) in den oben verlinkten Video-Tutorials behandelt. Ich weiß nicht genau, wie ich es für Squeak laden soll, oder ob es Teil der Basis dort ist, aber es ist sicherlich dafür verfügbar.
Abgesehen von einer Anfrage für ein Tutorial, sehe ich hier keine Frage. Können Sie erklären, was Sie wissen möchten?
Eine gute Liste von Ressourcen für einen Anfänger finden Sie in dieser Frage: Ссылка
Also behauptet Squeak Smalltalk bereits, dass Object & gt; & gt; Also, ich nehme an, Sie können tun:
%Vor%Wenn Sie GNU Smalltalk verwenden, könnte dies die folgenden Anweisungen beantworten: Smalltalk und Assertions
Niko
Betreffend Behauptungen, schauen Sie sich bitte die andere Frage an, die kürzlich gepostet wurde.
In Bezug auf TDD, ja, ist gst-sunit -f matrix.st -f matrix-test.st BaseMatrixTests
eine Art der beste Weg. Alles andere baut darauf auf, zum Beispiel könnten das die Alternativen sein:
AllMatrixTests*
sagen können (wenn Sie weitere Tests hinzufügen). gst-sunit -pMatrix
. Ссылка (Sie finden auch den Link zum Herunterladen der PDF-Datei)
Ich würde lieber meine .sts eingeben als um den Hierarchie-Explorer herumfischen, um die Methoden an ihre Stelle zu setzen.
Sie sagen das jetzt und ich fühlte den gleichen Weg, bis ich etwas Zeit investiert habe, um zu lernen, wie man diese Werkzeuge benutzt.
Und ich sage das als ein aktueller Benutzer von Vim und ehemaliger Benutzer von Emacs. Mit dem Klassenbrowser und anderen Tools in Pharo bin ich jetzt ziemlich produktiv geworden, nachdem ich gelernt habe, was los ist.
Wenn Sie wirklich Ihren eigenen Weg gehen wollen, ist GNU Smalltalk die richtige Wahl für Sie.
Ich möchte an dieser Stelle jedoch darauf hinweisen, dass zumindest Pharo eine Matrix-Klasse hat, die Sie zur Inspiration verwenden können. Quietschen sollte auch. Vielleicht erfahren Sie, wie nützlich der Klassenbrowser Matrix ist. ;)
Smalltalk Primer ist eine Einführung in Die Grundlagen von Message-Oriented Programmieren mit Smalltalk