Gibt es einen guten Grund, noch Uni Kurse „akademisch“ Sprachen wie Modula2 benutzen?

StackOverflow https://stackoverflow.com/questions/2677326

  •  30-09-2019
  •  | 
  •  

Frage

Diese Frage Prompts, mich zu fragen - warum Universitäten immer noch teach in Sprachen wie Modula2, wenn moderne Sprachen verbessert stehen kostenlos zur Verfügung?

Gibt es uni ist, die noch Pascal lehren, zum Beispiel? Ich meine, es war vor 30 Jahren gut, aber ... jetzt? Warum?

Warum nicht Java, C #, Haskell?

Siehe auch: Ist es nach hinten noch teach LISP?


Ist das eine doppelte Frage? Wenn nicht, ich denke, es sollte ein Community Wiki Thema.

War es hilfreich?

Lösung

Die Aufgabe der Universität ist nicht, dass Sie eine Programmiersprache zu lehren, ist es Sie Programmierung Konzepte zu lehren. Die Sprache, die sie benutzen, ist nur relevant in Bezug auf das Unterrichtsmaterial haben sie bereits aus anderen Quellen erzeugt oder zu verwenden.

Ich stelle mir vor, dass ein Lehrplan redoing ist so etwas wie eine große Anwendung Umschreiben -. Etwas, das man nur tun, wenn Sie einen zwingenden Grund haben, und selbst dann denken Sie zweimal darüber

Andere Tipps

  

Verbesserte moderne Sprachen (Java, C #, Haskell) stehen kostenlos zur Verfügung?

So von „verbessert“ Sie bedeuten, mächtig, beladen mit externen Bibliotheken und Frameworks, und irrsinnig kompliziert? Mit einem Gewirr von kurvigen kleinen Features, in denen Anfänger leicht verloren gehen können? Und wenn sie verloren gehen, sie Fehlermeldungen erhalten, dass kein Anfänger kann unmöglich verstehen?

Gute Universitäten widerstehen dem Druck der populären Sprachen des Tages zu unterrichten, weil unsere Arbeit ist zeitlose Wahrheiten und Fertigkeiten zu vermitteln, die noch in 50 Jahren relevant sein wird. Unsere besten Tools (heutigen Studenten können mindestens bis zum Alter von 70 zu arbeiten erwarten) für die Einfachheit, Einfachheit und Einfachheit. Modula-2 ist eine ziemlich gute Wahl. (So ??ist der Anfang Studentensprache PLT Scheme .

Ich liebe Haskell, verwenden Sie es stark in der Forschung, haben sie in fortgeschrittenen Klassen unterrichtet. Sie können mich nicht zahlen genug, um es in einem Einführungskurs-Id mir werden zu lehren Schneiden eigenen Hals.

  

Warum nicht Java, C #, ...

In Abwesenheit von Anforderungen mit bestehenden Code-Basen zu interagieren, was den Vorteil hat Java oder C # über, sagen wir, Smalltalk? Ich bin ein C # -Programmierer für Tag (und frühere Java-Programmierer) und es gibt einige gute Dinge über sie und einige schlechte Dinge, aber eine Sache, die wirklich herausragt ist, wie unglaublich komplex es ist. Schauen Sie, wie viele Fragen gibt es hier über die Feinheiten der C # Syntax und Semantik. Sie würden Ihr ganzes Semester oder Jahr Unterricht Trivia verschwenden. Modula-2 ist viel einfacher und völlig ausreichend für viele Probleme.

Sie müssen Montag lernen, auch, und zwar von Modula-2 bis zur Montage viel einfacher Schritt als C # Montag ist. Ich würde nicht wollen, um zu versuchen, Montag von Studenten zu einem Bündel zu unterrichten, die Microsofts professionelle Tools nur wussten.

  

Siehe auch: Ist es nach hinten noch teach LISP

(Es gibt etwa 50 verschiedene Möglichkeiten, dies zu interpretieren ...)

Ich sehe nicht, was ist „rückwärts“ über sie, es sei denn, Sie sehen es gelehrt {vor, nach} einer niedrigeren Ebene Sprache und denke, es gelehrt werden sollte {nach, bevor} statt.

Kann vorschlagen, dass Sie eine andere Sprache, die tut, was es tut? (???? Smalltalk Forth Icon Factor) zum Beispiel, wenn Sie das Design eines echten OO-Systems (und wohl auch einen leistungsfähigeren als Java oder C #) sehen möchten, können Sie abholen AMOP und das ganze in einem kurzen Buch sehen, einschließlich der vollständigen Quellcode. (Common Lisp ist nicht die einfachste Lisp-Dialekt, aber es ist viel einfacher, als C # oder Java, und AMOP verwendet einen relativ kleinen Teil der es trotzdem.) Wie würden Sie lehren Metaprogrammierung oder sogar mehrere Versand, mit Java?

Oder: der ursprüngliche Zweck von Lisp war für den Aufbau von Algorithmen Turingmaschinen als Konstrukt zu ersetzen. (Es passiert einfach wirklich nützlich zu sein für echte Programme zu schreiben!) Behaupten Sie, dass Sie eher Maschinen Turing mit würde Algorithmen für den Unterricht? Oder C # für die Berechnung der Modellierung? Eine Turing-Maschine ist ein 7-Tupel - ich kann mir nicht vorstellen, wie viele Komponenten der C # Berechnungsmodell haben würde! Lisp überbrückt die Lücke perfekt, und ich habe nur ein oder zwei anderen Sprachen in diesem Raum zu sehen -. Forth in den Sinn kommt, aber aus welchem ??Grund auch immer, es ist nicht populär geworden in der Wissenschaft

  

... Haskell?

Ich denke, es ist eine großartige Idee. Ich lernte es in der Schule. Dann wieder, ich glaube, jedes Mitglied dieser Sprachfamilie fein tun würde. Wenn Sie ML statt in der Schule lernen, ich glaube nicht, Sie werden schlechter gestellt sein. Die Konzepte sind die gleichen.

Es ist wie Maschinenbau in Berlin gegen Chicago zu studieren: die Sprache verschieden sein können, aber die Konzepte sind die gleichen. Aber wenn Sie wissen nichts, nicht einmal eine Sprache, macht es Sinn, mit der einfachstenen Sprache möglich zu starten. Wenn Sie ein Ingenieur in Berlin sein wollen, aber sprechen kein Deutsch, macht es Sinn, Studium Maschinenbau und auch Deutsch zu studieren, aber das konventionelle Denken ist, dass es weniger effektiv ist mit Deutsch-only-Engineering-Klassen zu starten.

Zwei Gründe, warum ich denken kann, ein gutes, ein nicht. (Und ich war ein prof.)

Der Grund: die Lehre zu vereinfachen. Intro Studenten zu unterrichten ist wie Herden leben Küken auf einem Sprungbrett. Wenn es einen Weg für sie fallen auf, sie werden. Wenn ich C zu lehren hätte, würde ich mir die Haare aus zerreißt, was mit char, unsigned char, char*, char**, char*[], char[10]*, und so weiter alle gültigen gesetzlichen und anderen, und das ist nur ein paar Splitter auf dem Baum. Für einen zweiten oder dritten Natürlich ist es eine andere Geschichte.

Der schlechte Grund: die akademische Freiheit. Wir hatten eine Person etwas weit aus interpretierte Sprache unterrichten, weil er es mochte. Ein anderer auf dem Unterricht Tabelle Programmierung darauf bestanden, denn das ist die „Welle der Zukunft“ war.

Obwohl diese Frage scheint einige Zeit behandelt worden zu sein, vor ich wollte etwas hinzufügen (da ich bin die Fragesteller von der erwähnten Frage :)) Warum wir Modula2 in unserem ersten Jahr lernen: Neben all den bereits genannten Gründen ist es für den Griff bekommen, wie grundlegende Dinge (zum Beispiel Zeiger) Arbeit, bevor sie mit so etwas wie Java einzulassen, wo all das Zeug ziemlich unsichtbar für den Programmierer ist:)

Ich weiß, diese Frage ist ziemlich alt und es gibt viele gute Antworten. Trotzdem möchte ich Läuten wie in.

Die meisten Antworten sind Variationen des „Modula-2 ist einfacher und damit leichter zu lehren / lernen“ Thema. Obwohl dies richtig ist, ist es nicht die dies disqualifiziert-all-else Gründe, warum eine Universität entscheiden sollte Modula-2 zu unterrichten.

Der wichtigste Vorteil des Unterrichtens Modula-2 auf Bachelor-Informatik-Studenten ist, dass es gut ist Gewohnheit bilden und Disziplin Einträufeln.

Siehe auch „Was sind die wichtigsten Vorteile von Modula-2?“ an:

http://modula-2.info/m2info/pmwiki.php/ Allgemein / FAQ

Es gibt nur sehr wenige Sprachen gibt, die lehren strenge Programmierung Disziplin, die Einhaltung der technischen Prinzipien und gute Gewohnheiten. Die meisten modernen und besonders beliebte Sprachen das Gegenteil tatsächlich tun, lehren sie schlechte Gewohnheiten.

Unter den strengen Sprachen, Modula-2 ist die kleinste, und unter den kleinen Sprachen, Modula-2 ist die strengste ein.

Diese Kombination macht Modula-2 ist die perfekte Wahl für jede Universität, die nicht nur will, für Software-Mechanik eine Berufsschule sein.

Das mag hart klingen, aber wenn Software-Entwickler streben Software-Ingenieure genannt werden, dann sollten sie wie Ingenieure ausgebildet werden, denken wie Ingenieure und vor allem, verhalten sich wie Ingenieure, wenn sie an die Arbeit.

elektrische, mechanische und Bauingenieure haben eine Verpflichtung zu bauen Dinge, die zuallererst sicher und zuverlässig. Mit wenigen Ausnahmen ist Software nicht ganz zu diesem Standard gerecht und das Fehlen eines klassischen Ingenieur mindset ist ein wichtiger Faktor hier. Zum Beispiel „vorzeitige Entlassung, fix später“ die populäre Vorstellung von diametral zu technischen Prinzipien gegenüber.

Die Frage der Lisp / ADA vs C / Java ist die gleiche wie Informatik vs Programmierung. Eine davon ist eine Wissenschaft, die andere ist ein Handwerk.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top