22 Stimmen

Unterricht in Programmierung und formalen Methoden

Ich habe eine etwas merkwürdige Frage. Ich bin gerade dabei, ein Buch über das Erlernen des Programmierens mit formalen Methoden zu schreiben, und ich werde es auf Leute mit einiger Programmiererfahrung ausrichten. Die Idee ist, ihnen beizubringen, hochwertige Programmierer zu werden.

Die grundlegende Notation wird von Dijkstra's Disziplin der Programmierung zusammen mit einigen Erweiterungen für Gleichzeitigkeit und Kommunikation.

Anders als bei der EWD möchte ich, dass meine Schüler letztendlich tatsächlich ausführbare Programme schreiben. Das bedeutet, dass sie irgendwann von der EWD-Notation in eine andere Sprache übersetzen müssen. Als ich mit dem formalen Programmieren anfing, habe ich C ins Auge gefasst, aber das bedeutet, dass man viel Klempnerarbeit leisten muss, und außerdem gibt es all die Komplexität bei der Behandlung von Zeigern usw. Ruby ist ein offensichtliches mögliches Ziel, ebenso wie Scheme oder Lisp. Aber es gibt auch die verschiedenen Funktionssprachen; da ich mich besonders für Gleichzeitigkeit interessiere, scheint Erlang eine Möglichkeit zu sein.

Nun zu meiner Frage: Welche Sprache(n) sollte(n) ich meinen Lesern beibringen, damit sie ihre formell entwickelten Programme gezielt einsetzen können?

1 Stimmen

Das klingt nach einem wirklich interessanten Buch!

0 Stimmen

Danke, ich werde Kapitel zum Kommentieren einstellen, wahrscheinlich verlinkt von chasrmartin.com. Wenn ich Kapitel habe.

2 Stimmen

"Alles Gute" für Ihr Buch Marty, ich habe gerade gesucht und die Bedeutung von "formalen Methoden" gefunden.

1voto

Svante Punkte 49287

Ich denke, dass Sie selbst einige Erfahrung in der Sprache haben sollten, die Sie für Ihr Buch verwenden, oder jemanden, der Ihren Code überprüfen kann.

Ich persönlich würde Common Lisp verwenden, da ich damit vertraut bin und es eine großartige Sprache ist, um jedes Konzept zu implementieren. Andere Optionen wären Erlang, Haskell, Ruby oder Python, vielleicht sogar ein ML-Dialekt. Ich bin voreingenommen gegenüber der C-Familie (einschließlich C# und Java), sie scheinen auf einer niedrigeren Ebene des Denkens über Konzepte festzustecken.

0 Stimmen

Ich bin wirklich hin- und hergerissen in dieser Sache. Ich fühle mich in jeder der von mir genannten Optionen ziemlich wohl, also ist das kein Problem, und verdammt, nach 40 Jahren sehen sie sowieso alle irgendwie gleich aus. Ihr Punkt bezüglich C/Java ist genau richtig, aber deshalb mache ich es in zwei Schritten: Zuerst den EWD-Code, dann die Übersetzung in die Zielsprache.

1voto

dc42 Punkte 156

Es gibt eine ganze Reihe von Universitäten, die Perfect Developer für die Lehre formaler Methoden einsetzen (Haftungsausschluss: Ich bin mit diesem Produkt verbunden). Es basiert auf einer Sprache zur Formulierung von Spezifikationen, Datenverfeinerung und Algorithmen. Es verfügt über einen automatischen Theorembeweiser zur Überprüfung und einen Codegenerator, der C++, C# und Java erzeugen kann. Das Design von PD wurde stark von "A Discipline of Programming" inspiriert, allerdings fanden wir die Notation für große Systeme eher unpraktisch, so dass die Notation etwas von der von Dijktra abweicht.

0 Stimmen

Okay, das sieht faszinierend aus. Ich werde mir das genauer ansehen müssen, aber ich weiß den Hinweis zu schätzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X