(Mis) Smalltalk und TDD verstehen

7

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.

    
Tordek 22.03.2009, 00:46
quelle

10 Antworten

11

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%     
Charlie Martin 22.03.2009, 07:07
quelle
9

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.

    
MarkusQ 22.03.2009 05:57
quelle
6

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.

    
jarober 22.03.2009 15:57
quelle
3

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: Ссылка

    
Steve Rowe 22.03.2009 05:54
quelle
1

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

    
nes1983 22.03.2009 17:20
quelle
1

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:

  • Lassen Sie alle TestCase-Unterklassen für Ihr Paket von einer falschen Unterklasse erben, so dass Sie in der Befehlszeile von gst-sunit AllMatrixTests* sagen können (wenn Sie weitere Tests hinzufügen).
  • Datei in matrix.st von matrix-test.st, wodurch eine -f-Option eliminiert wird.
  • Erstellen Sie eine Makefile- und package.xml-Datei, um eine .star-Datei für Ihr Paket zu erstellen, wie hier beschrieben . Dann können Sie nur gst-sunit -pMatrix .
  • tun
Paolo Bonzini 23.03.2009 08:46
quelle
1

Es wurde oben vorgeschlagen, #assert: zu Object hinzuzufügen, aber ich würde #assert zu BlockClosure hinzufügen (oder was auch immer [] class in GNU Smalltalk ist).

%Vor%

und damit wie in

verwenden %Vor%

und so weiter.

    
akuhn 23.03.2009 12:16
quelle
0

Ссылка (Sie finden auch den Link zum Herunterladen der PDF-Datei)

    
Germán Arduino 24.12.2009 16:11
quelle
0
  

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. ;)

    
Kristoff vdH 16.08.2011 03:53
quelle
0

Smalltalk Primer ist eine Einführung in Die Grundlagen von Message-Oriented Programmieren mit Smalltalk

    
Alan Lovejoy 22.03.2009 18:33
quelle

Tags und Links