[Screencasts] Interpreter in Python

Gute Links und Tutorials könnt ihr hier posten.
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ob's gemäß dem Forumsuntertitel gute Links sind, möchte ich nicht beurteilen, aber ich habe zwei neue Screencasts gebaut - diesmal der etwas längeren Art: In http://vimeo.com/8383919 bastle ich mir ein Ad-Hoc-Ruby-Laufzeitsystem und in http://vimeo.com/8407944 einen BASIC-Interpreter für ein Spiel, das schon alt war, als ich's vor vielen, vielen Jahre das erste Mal gespielt hatte.

Ich würde mich freuen, wenn's sich jemand anschaut und es gefällt.

Stefan
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Die Screencasts sind durchaus interessant. Ich denke nicht dass die Versprecher/-schreiber stören, zumindest mich nicht, weil du recht gelassen und ruhig darauf reagierst und keine Aufmerksamkeit darauf ziehst.

Sehr positiv fällt auch deine Stimme auf, durchgehend deutlich und ruhig ohne dabei monoton oder künstlich zu wirken.
BlackJack

@sma: So gegen Minute 20 beim BASIC-Interpreter redest Du von Deinem Python-Interpreter und das bei *Java* ursprünglich ``LET`` vor Zuweisungen stehen musste. ;-)

Sonst gefällt's mir gut.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Ja, hat mir gut gefallen, auch wenn ich bei „ich habe diese Klassen schon einmal vorbereitet“ unwillkürlich an eine Kochsendung denken musste. ;)

PS: Und wenn der komplette Interpreter fertig ist gibts dann das WSGI-kompatible Ruby-on-Snails Webframework. ;)
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ich finde es verwirrend, bei einem englischen Titel einen deutschsprachigen Screencast zu bekommen. Hab mir die Videos ehrlich gesagt nicht genau angeguckt (weil ich Angst vor Ruby habe :twisted: ), kann also nicht mehr dazu sagen. Scheint aber generell gut anzukommen ;)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Jean Pütz, Hobbythek - das verbinde ich mit dem Spruch - und nicht nur ich, sondern auch die Wikipedia wie ich gerade sah...

Meine Verwechslung von Java und BASIC bitte ich zu verzeihen, die Unterschiede sind dann ja auch minimal ;) Na, okay, das let gibt es natürlich nur bei JavaScript (und Lisp bzw. Scheme) und nicht bei Java.

Zu den englischen Titeln: Das war so eine Idee von mir vorhin. Da habe ich sie geändert. Warum genau, weiß ich eigentlich nicht, zudem ja auch die Beschreibung wieder deutsch ist. Vielleicht eine Konditionierung von der Firma, wo wir auch alle Präsentationen und Dokumente auf Englisch machen, selbst wenn wir's dann auf deutsch erzählen.

Ansonsten freue ich mich sehr über die positiven Worte.

Stefan
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:Jean Pütz, Hobbythek - das verbinde ich mit dem Spruch - und nicht nur ich, sondern auch die Wikipedia wie ich gerade sah...
Ich wollte gerade sagen, da bin ich wohl noch zu jung für, aber das lief ja tatsächlich bis 2004, dachte das wäre vor Jahren abgesetzt worden.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

sma hat geschrieben:Ich würde mich freuen, wenn's sich jemand anschaut und es gefällt.
Tendentiell ist es in diesem Forum so, dass gezeigter Code o.ä. selten gelobt wird - irgendwie findet man ja auch bei ziemlich gutem Code immer irgendetwas, an dem man herumnörgeln kann. Kommen keine Hinweise auf Verbesserungsbedürftiges, dann heißt das faktisch "gut gemacht" - sagt dann bloß in der Regel keiner.

Ich habe mir den BASIC-Hammurabi-Screencast (etwa zur Hälfte; die Entwurfsgeschwindigkeit ist für mich zu schnell bzw. ich brauche länger zum Nachvollziehen als du zum Entwickeln ...) angesehen und finde das absolut hochwertig. Abgesehen von dem, was man inhaltlich lernen kann über den Entwurf eines BASIC-Interpreters in Python, ist es auch eine nicht zu unterschätzende Leistung, einen solchen Interpreter quasi (beinahe) live und in Echtzeit zu entwerfen und das Ganze dann auch noch qualitativ hochwertig, ruhig und gut verständlich zu erläutern. Als Gesamtleistung wirklich beeindruckend.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

@sma: Was ich bei deinem Laufzeitsystem nicht verstehe, warum hast du Rb_Block nicht von Rb_Object erben lassen? Dann hättest du dir die block_class sparen können. Oder übersehe ich da was?
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

sma hat geschrieben:Jean Pütz, Hobbythek - das verbinde ich mit dem Spruch - und nicht nur ich, sondern auch die Wikipedia wie ich gerade sah...
Oh ja, ein sehr witziger: http://www.youtube.com/watch?v=9PpymGEr51I :roll:
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Darii hat geschrieben:@sma: Was ich bei deinem Laufzeitsystem nicht verstehe, warum hast du Rb_Block nicht von Rb_Object erben lassen? Dann hättest du dir die block_class sparen können. Oder übersehe ich da was?
Das ist eine sehr gute Frage. Die Antwort ist leider nicht einfach. Ich habe dazu einen Screencast gemacht ;) http://vimeo.com/8438003.

Stefan
Zuletzt geändert von sma am Mittwoch 30. Dezember 2009, 14:10, insgesamt 1-mal geändert.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Danke, interessant. ObjC Objekte sind ja genauso aufgebaut. Pointer auf die Klasse und danach ein Array der Instanzvariablen. Ist spontan auch der einfachste Entwurf der mir einfällt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Das Video zum BASIC Interpreter in Python fand ich sehr interessant. Mich hat es auch schon direkt in den Fingern gekitzelt das nach zu bauen ;)

Bitte weiter so!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Darii hat geschrieben:Danke, interessant. ObjC Objekte sind ja genauso aufgebaut. Pointer auf die Klasse und danach ein Array der Instanzvariablen. Ist spontan auch der einfachste Entwurf der mir einfällt.
Jein. Dictionaries sind robuster gegen Änderungen. Wenn Objekte Exemplare von Klassen sein müssen und diese über eine Liste (aka Vektor aka Array) definieren, wie die Exemplarvariablen heißen und man alles in der Sprache ändern kann, muss man sehr aufpassen, dass man die Zuordnung nicht verliert. Ändert man beispielsweise in Smalltalk (woher ObjC das natürlich hat) die Vererbungshierarchie, müssen alle Methoden der betroffenen Klassen neu übersetzt werden. Fummelt man an den Variablen selbst herum, müssen alle existierenden Objekte transformiert werden. Diese im Speicher zu finden, ist etwas, das man bei einer JVM-basierten Sprache gar nicht leisten kann. Ich glaube, bei ObjC ist das kein Problem, denn im Gegensatz zu Smalltalk kann man da ein laufendes System nicht verändern.

Stefan
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:Ich glaube, bei ObjC ist das kein Problem, denn im Gegensatz zu Smalltalk kann man da ein laufendes System nicht verändern.
Ja, da sind ja categories vermutlich das Höchste der Gefühle. Wie genau die Instanzvariablen zur Laufzeit aufgelöst werden weiß ich allerdings nicht, da müsste man sich vermutlich mal angucken, was der Compiler mit den Methoden anstellt. Allerdings gibt es ja schon einige verdächtige Funktionen in der runtime z.B. class_addIvar oder class_setSuperclass.
Benutzeravatar
Klip
User
Beiträge: 98
Registriert: Donnerstag 10. August 2006, 20:39

Hallo sma,

das war ein äußerst interessanter Screencast, hat richtig Spaß gemacht dir zuzusehen. Super! Würde mich freuen in Zukunft mehr davon zu sehen ;)

Beste Grüße

Klip
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Darii hat geschrieben:Ja, da sind ja categories vermutlich das Höchste der Gefühle. Wie genau die Instanzvariablen zur Laufzeit aufgelöst werden weiß ich allerdings nicht, da müsste man sich vermutlich mal angucken, was der Compiler mit den Methoden anstellt. Allerdings gibt es ja schon einige verdächtige Funktionen in der runtime z.B. class_addIvar oder class_setSuperclass.
In der Tat. Hier gibt es mehr Metafunktionen, als ich gedacht hätte. Muss mir mal bei Gelegenheit anschauen, wie ObjC eigentlich implementiert wird.

Bezeichnend finde ich, dass man zwar Ivars hinzufügen, aber nicht entfernen kann. Außerdem sagt die Beschreibung "Adding an instance variable to an existing class is not supported." Das scheint mir nur zur Initialisierung zu taugen.

Stefan
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Hab auch gerade mal in einen deiner Screencasts geschaut und hat mir soweit auch ganz gut gefallen, obwohl ich mir nur Ausschnitte davon angesehen habe. Positiv ist mir auch das Syntaxhighlightning aufgefallen... das verwende ich auch immer...;)
Antworten