2013-06-15 6 views
8

Immer wenn ich eine Sprache lernen möchte, ist das erste, was ich tue, eine ausführbare Datei in dieser Sprache (es könnte ein kompiliertes Programm oder ein Skript sein), die beim Drucken hallo , Welt‘und ein newline an stdout:Kompilieren 'Hallo, Welt' GNU Smalltalk

[email protected]:~/Code$ ./hello 
hello, world 

nach etwa einer Stunde um mit GNU Smalltalk Ausmisten, habe ich nicht herausgefunden, wie dies zu tun.

(Ich weiß, dass das Hallo Welt Programm kann in einer Sitzung als

'hello, world' printNl 

trifft Dies gilt nicht meine stdout Anforderungen ausgedrückt werden)

Ich verstehe, dass es in Smalltalk keine Fern ist. Ich bin also ziemlich fasziniert, welche Art von Textplatte notwendig sein könnte, um dies zu ermöglichen. Auch hier muss die Datei nicht unbedingt kompiliert werden, aber das Endergebnis der Übung muss Smalltalk-Code sein, der zu dem obigen Sitzungsextrakt führt.

PS. yesyesyes Ich weiß,, dass ich es falsch mache, indem ich nicht die "Image-basierte Programmierung" -Philosophie umarmen. Es ist mir egal. Ich bin nicht dagegen zu lernen, wie man mit dem Image und der IDE arbeitet und all das, aber ich habe wirklich nur ein minimales Interesse. Was mir wichtig ist, ist die Smalltalk Sprache selbst. Syntaktisch, philosophisch und typografisch ist es ziemlich schön. Ich fühle mich wohl dabei, Programmiersprachen von einem Kommandozeilen-Interpreter und einem Texteditor zu lernen. :)

Antwort

12

In GNU Smalltalk gibt es so ziemlich kein Boilerplate. Sie könnten nur Ihre einzige Zeile in einer .st Datei setzen, und führen Sie es mit gst hello.st

Wenn Sie eine Klasse anstelle von direkt Anweisungen ausgeführt erkunden wollen, dann ist das zu einfach, bestanden die folgenden in einer Datei gst wird der Trick:

Object subclass: Hello [ 
    greet [ 
      'Hello, World' displayNl 
    ] 
]. 
greeting := Hello new. 
greeting greet. 

Dateien zu gst auf der Kommandozeile übergeben werden analysiert und in der Reihenfolge ausgeführt werden, so dass Sie die obige Liste in zwei separate Dateien aufgeteilt könnte - man die Klasse und die zweite erklären/übersetzen um es tatsächlich zu betreiben. Nachdem Sie Ihr Programm entwickelt haben, können Sie das Flag -S verwenden, um das Bild nach dem Laden der Klassen zu speichern, so dass Sie nicht jedes Mal den Kompilierungsaufwand haben und stattdessen nur Ihre Startup-Anweisung ausführen können .

gst hat auch Shebang-Unterstützung, so können Sie #! /usr/bin/gst -f an der Spitze Ihrer Datei setzen, wenn Sie es nicht manuell an gst übergeben möchten. (Weitere Informationen finden Sie in der Dokumentation zu invocation, einschließlich der Vorgehensweise ohne Feststellen der Position gst)