Welche Sprache sollte ich verwenden, wenn ich einen Grundkurs in Computerprogrammierung unterrichte?

22

Unterrichten von Studenten im Grundstudium in einem Kurs mit dem Titel Einführung in die Computerprogrammierung. Ich bin ein bisschen verwirrt. In der Computerphysik verwenden Wissenschaftler C / C ++ oder Python oder Fortran, CUDA usw. ... dies ist die Zeit, um ihre Basis aufzubauen. Was soll ich benutzen? Ich weiß, dass Sie jederzeit in Ihrem Leben eine neue Programmiersprache lernen können, aber das ist eine klügere Wahl, wenn ich später alle grundlegenden Programmierkonzepte und OOP-Konzepte erarbeite.

Afnan Bashir
quelle
9
@ k20: Ich hoffe dein Vorschlag war ironisch; sonst wäre es ein schwerwiegender Verstoß gegen die akademische Ethik.
Christian Clason
6
@ k20: All dies ist nicht thematisch, aber die Auswahl von Software basierend auf Rückschlägen (jeglicher Art) für den Lehrer und nicht auf den zu unterrichtenden Inhalten ist definitiv unethisch. (Nur um es klar zu machen, es ist der "Trottel", den ich ablehne.) In der Regel stellen Unternehmen Software zu erheblich reduzierten Kosten (oder kostenlos) zur Verfügung.
Christian Clason
3
@ k20: Bedenken Sie auch, dass die Motivation des Softwareunternehmens nicht ganz uneigennützig ist: Ihre Schüler erhalten die Software möglicherweise jetzt kostenlos, aber es ist auch wahrscheinlich, dass sie die Software einige Zeit später in ihrem Leben kaufen (oder eine neue lernen müssen) Software).
Wrzlprmft
3
@ k20 Matlab und Mathematica werden für ernsthafte wissenschaftliche Berechnungen nicht viel verwendet. Sie sind eher Erkundungstools zum Ausprobieren von Ideen. Wenn der Zweck des Kurses darin besteht, grundlegende Algorithmen zu vermitteln, sind diese möglicherweise geeignet (insbesondere Matlab). Wenn es sich jedoch um allgemeine Programmierung handelt, sollten Sie eine allgemeinere Programmiersprache wie Python von C ++ verwenden.
Truman Ellis
2
MATLAB hat ein Design (wenn ich nicht diplomatisch wäre, würde ich sagen, fehlerhaft :)), das voraussetzt, was in anderen Sprachen schlechte Praktiken sind. Viele andere Dinge unterscheiden sich nur von allem anderen, so dass "Ausgehen" schwierig sein kann. Mathematica hat meiner Meinung nach ein wunderschönes Design, aber es ist keiner anderen Sprache ähnlich (außer vielleicht Lisp, aber es wird nicht in der Wissenschaft verwendet). Was Sie gelernt haben, ist also meistens nutzlos, um eine andere Sprache zu lernen. OTOH, C <-> Python ist viel einfacher.
Davidmh

Antworten:

32

Erstens, wenn Ihre Studenten wie wir sind und keine vorherige Einführung in Computer hatten, sollten Sie sich etwas Zeit nehmen, um ihnen den Umgang mit grundlegenden Dingen wie der Verwendung eines geeigneten Editors (dh nicht MS Word), der Befehlszeile usw. beizubringen.

Ich denke, die Antwort hängt etwas davon ab, wo Sie den Schwerpunkt Ihres Kurses setzen (oder was Sie unterrichten müssen). Zum Beispiel: Wie relevant sind die internen Funktionen des Computers? Benötigen Sie Klassen und andere fortgeschrittene OOP-Strukturen? Möchten Sie ihnen beibringen, wie man effiziente Programme erstellt, oder sind Sie froh, wenn sie überhaupt Arbeitsprogramme erstellen? Vergessen Sie auch nicht, dass Sie höchstwahrscheinlich kompetente Tutoren benötigen.

Aber nun etwas zu Vor- und Nachteilen der Sprachen, die ich kenne. Beachten Sie, dass dies hauptsächlich auf meiner Erfahrung als Computerphysiker beruht und dass einige davon von dem jeweiligen Fach, der Arbeitsgruppe, der Universität usw. abhängen können.

Python

Im Allgemeinen empfehle ich, Numpy von Anfang an zu verwenden, und gehe davon aus, dass es im Folgenden verwendet wird.

Vorteile:

  • Es ist leicht zu erlernen und liest auch den Code anderer Personen (z. B. Ihren Beispielcode, aber auch den Code der Schüler für die Tutoren).
  • Input und Output (die nicht im Mittelpunkt Ihres Kurses stehen sollten) können von print, Numpy's savetxtund loadtxtund vielleicht vollständig abgedeckt werden sys.argv. Es kann im laufenden Betrieb eingeführt werden und verbraucht nicht viel Programmierzeit.
  • Sie müssen sich nicht oder nur wenig mit Details wie Zahlendarstellung, Speicherverwaltung und Datentypen befassen. Somit ist es schnell zu programmieren und Sie können sich auf die eigentlichen Algorithmen konzentrieren.
  • Es ist keine kompilierte Sprache. Dies hat zwei Vorteile: Die Schüler müssen sich nicht mit einem Compiler auseinandersetzen, und die Schüler können direkt in der Konsole testen, ohne das Programm kompilieren, neu starten und erneut ausführen zu müssen. Dementsprechend ist das Debuggen einfacher.
  • Es gibt benutzerfreundliche Bibliotheken für fast alles.
  • Sie müssen keine zusätzlichen Skriptsprachen wie Shell-Skripte, Make, Gnuplot usw. lernen - all dies kann in Python erfolgen.
  • Es gibt viele gute Tutorials (kostenlos).

Nachteile:

  • Es ist nicht kompiliert. Daher können Python-Programme in einigen Fällen, die für die Computerphysik relevant sind, drastisch langsamer sein als kompilierte Programme. In anderen Fällen können Bibliotheken (insbesondere Numpy) jedoch eine vergleichbare Leistung erbringen. Eine andere Möglichkeit, mit Python gute Leistungen zu erzielen, besteht darin, die entsprechenden Codeausschnitte in einer anderen Sprache wie C¹ zu schreiben. Natürlich müssen Sie diese Sprache dafür lernen, aber dies kann später erfolgen und Ihre Zeit für das Erlernen von Python wird nicht verschwendet.
  • Es ist schwieriger, Details wie Zahlendarstellung, Speicherverwaltung, Datentypen und ihre Fallstricke zu vermitteln, da sie etwas verschleiert sind.

C / C ++

Vorteile:

  • Es ist kompiliert und daher einfacher, effizienten Code zu erstellen.
  • Sie beschäftigen sich direkt mit der Darstellung von Zahlen, der Speicherverwaltung und den Datentypen, und daher ist es intuitiver, diese zu lehren - Ihre Schüler werden näher an das herangehen, was in ihrem Computer wirklich passiert.
  • Es gibt Bibliotheken für praktisch alles, außer dass das Verstehen und Verwenden einer Bibliothek einige Arbeit erfordert.
  • In C / C ++ ist eine relevante Menge an Code vorhanden. Daher müssen die Schüler die Sprache lernen, wenn sie mit diesem Code arbeiten möchten.
  • Wenn Sie C / C ++ bereits kennen, können Sie Python (zum Beispiel) sehr schnell erlernen.

Nachteile:

  • Es wird kompiliert und Ihre Schüler müssen sich mit dem Compiler, dem Präprozessor, den Headern usw. auseinandersetzen. Es würde Sie überraschen, wie viele Studierende auch am Ende des Semesters an diesem Schritt scheitern.
  • Es ist auch langsamer zu lernen und es dauert länger, um Arbeitscode zu produzieren.
  • Der Umgang mit Randbemerkungen wie Input und Output nimmt sowohl beim Unterrichten als auch beim Programmieren einige Zeit in Anspruch. In C ++ gibt es eine zusätzliche Syntax für Ein- und Ausgabe.
  • Compiler- und Betriebssystemabhängigkeiten.
  • Sie müssen sich mit der C / C ++ - Verwirrung auseinandersetzen.
  • Das Lesen des Codes anderer Benutzer, insbesondere in C ++, kann aufgrund der Vielzahl von Syntaxfunktionen recht schwierig sein.

Die Hauptvorteile von C ++ gegenüber C (Klassen, Vorlagen) sollten für Ihren Kurs nicht relevant sein und werden nur für größere Projekte relevant. Daher würde ich C von beiden wählen, da es prägnanter ist.

Andere

Einige Kommentare zu den anderen Sprachen:

  • Fortran: Dies wird immer noch von vielen Gruppen verwendet und es gibt viele ältere Codes, aber Sie können sich nicht mit den alten Standards und ihren enormen Einschränkungen und Fallstricken abfinden (viele Leute arbeiten immer noch mit Fortran 77). Außerdem wird es viel schwieriger sein, Tutorials, Hilfe im Internet und so weiter zu finden.
  • Matlab / Mathematica: Alle Probleme proprietärer Software. Berücksichtigen Sie insbesondere, dass Ihre Schüler wahrscheinlich mit Personen zusammenarbeiten, die keinen Zugriff auf diese Software haben, und die sich daraus ergebenden Probleme.
  • Cuda: Dies ist nur für bestimmte Probleme relevant, wenn es auf die Leistung ankommt. Nach allem, was ich weiß, möchten Sie das Programmieren auf diese Weise nicht lernen.

¹ Welches ist der Standard-Workflow zumindest in unserer Gruppe.

Wrzlprmft
quelle
Sehr genaue Antwort
Afnan Bashir
1
Ich würde auch sagen, dass einer der unerwähnten Vorteile von Python darin besteht, dass es eine Reihe wissenschaftlicher Distributionen (Anaconda / Enthought / PythonXY / SAGE) gibt, die den Prozess wirklich reibungslos machen, alle auf dieselbe Computerseite zu bringen. Noch cooler sind die webbasierten Ansätze (Wakari und SAGE), die alles über einen Browser (auch bekannt als 0-installierte Software) bereitstellen. Das Unterrichten von Studenten in C ++ oder Fortran führt dazu, dass mehr Zeit für das Kämpfen mit einem Compiler verloren geht als für die Geschwindigkeit des Codes.
Meawoppl
In Python gibt es ein erstaunliches Ökosystem für die Computerphysik. Numpy, Scipy für die Bereitstellung der Basisinfrastruktur, Mayavi, TVTK für Visualisierungen. Python ist in der wissenschaftlichen Computer-Community ziemlich ausgereift. Ich benutze C ++ in der Produktion, aber egal was es ist, es ist ein Schmerz zu benutzen.
Sai Venkat
@meawoppl: „Das Unterrichten von Studenten in C ++ oder Fortran führt dazu, dass mehr Zeit für das Kämpfen mit einem Compiler verloren geht als für die Code-Geschwindigkeit.“ - Es kommt nicht auf die Code-Geschwindigkeit der Übungen für den Kurs an (die Programme sind in beiden Fällen sehr schnell). es sei denn, die Übungen wurden speziell so erstellt, dass dies nicht der Fall ist), aber die Codegeschwindigkeit der Programme, die sie für das wirkliche Leben oder ähnliches schreiben. Und es gibt einige Dinge, die nur in Python effizient erledigt werden können.
Wrzlprmft
1
Ich würde sagen, dass CUDA für einen Allzweckkurs nicht in Frage kommt, da es Hardware erfordert, die nicht jeder hat. Und wenn Sie nur einen Laptop ohne haben, können Sie fast keinen installieren.
Davidmh
22

2014 hätte ich Python gesagt. 2017 glaube ich von ganzem Herzen, dass die Sprache, in der die Studenten unterrichten, Julia ist.

Beim Unterrichten geht es immer um einen Kompromiss. Einerseits möchten Sie etwas auswählen, das so einfach ist, dass es leicht zu erfassen ist. Aber zweitens möchten Sie etwas lehren, das Ausdauer hat, dh etwas, das mit Ihnen wachsen kann. Die gängigen dynamischen Sprachen (Python / MATLAB / R) fallen alle leicht in Kategorie 1, da sie nicht über einen Kesselcode verfügen und es einfach ist, einen Interpreter zu öffnen und Code auszuspucken, während C / C ++ / Fortran in die zweite Kategorie fällt Die Sprachen, mit denen die leistungsfähige Kernsoftware der heutigen Welt geschrieben wurde.

Es gibt jedoch Probleme bei der Verwendung einer Sprache, die die andere Kategorie nicht vollständig erfasst. Wenn Sie eine Sprache wie Python verwenden, werden Dinge wie Typen und Integer-Überlauf auf angenehme Weise abstrahiert. Das ist gut, um im ersten Semester Informatik zu unterrichten, aber da Sie immer tiefer in die Arbeitsweise von Python eintauchen möchten, ist die Sprache von Python zu weit entfernt vom zugrunde liegenden Metall, um ein gutes Lehrmittel zu sein. Aber C / C ++ / Fortran (oder Java ... Ich habe zuerst Java gelernt ...) haben alle so hohe Startkosten, dass es am schwierigsten ist zu lernen, wie man Header einrichtet und mainkompiliert, was vom tatsächlichen Erlernen des Programmierens ablenkt .

Tritt ein Julia. Wenn Sie Julia zum ersten Mal verwenden, können Sie die gesamte Idee von Typen abstrahieren und wie MATLAB oder Python verwenden. Aber wenn Sie mehr lernen möchten, steckt in der Sprache ein "Kaninchenbau" voller Tiefe. Da es sich in Wirklichkeit um eine Abstraktionsschicht handelt, die auf einem Typsystem + Mehrfachversand über LLVM basiert, ist dies im Wesentlichen "eine einfache Möglichkeit, statisch kompilierten Code zu schreiben" (und typstabile Funktionen können tatsächlich statisch kompiliert werden). Dies bedeutet, dass auf die Details von C / C ++ ebenfalls zugegriffen werden kann. Sie können lernen, wie Sie einfache Schleifen und Funktionen ohne Boilerplate-Code schreiben und dann in die Funktionszeiger graben. Mit den Metaprogrammierungsfunktionen von Julia können Sie direkt auf den AST zugreifen, und es gibt Makros, die jeden Teil der Kompilierungskette darstellen. Als Lisp ist es auch für funktionale Programmierstile zugänglich. Und es verfügt über viele parallele Rechenfunktionen. Ideen wie parametrische Typisierung und Typstabilität sind in Julia ziemlich einzigartig und tief verwurzelt.

Wenn Sie die Programmiersprachen selbst lernen möchten, können Sie die Schritte zur Kompilierung anhand @code_loweredderer lernen, um festzustellen , was eine Senkung ist. Sehen Sie sich das typisierte AST mit @code_typed, das LLVM IR mit @code_llvmund schließlich den nativen Assembler-Code mit an @code_native. Dies kann verwendet werden, um zu zeigen, wie hoch die Kosten für dynamische Variablen sind und wie das "variable Boxen" genau funktioniert. In diesem Blogbeitrag wird gezeigt, wie diese Introspection-Tools verwendet werden können, um zu lehren, wie Compiler-Optimierungen durchgeführt werden können / nicht.

Es gibt nicht nur Ideen für Informatik und Softwaretechnik zu erforschen, sondern auch reichhaltige mathematische Ideen. Da die Hauptbibliotheken von Julia im Hinblick auf die generische Typisierung geschrieben wurden, ist es trivial, matrixfreie Operatoren zu erstellen und mit IterativeSolvers.jl GMRES mit diesen durchzuführen. Sie können Introspection-Tools verwenden @which, um genau zu zeigen, wie etwas implementiert wurde. Wie funktioniert das zum Beispiel \?

@which rand(10,10)\rand(10)
#\(A::AbstractArray{T,2} where T, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.LinAlg at linalg\generic.jl:805

Das zeigt mir direkt die Definition von \ . Es ist in Julia implementiert, sodass jemand, der Julia kennt, den Algorithmus und seine Funktionsweise durch Identifizieren von Matrixuntertypen und Spezialisieren, wenn möglich, erlernen kann (Zurückgreifen auf die Gaußsche Eliminierung). Da Julias Code MIT-lizenziert ist (und fast alle Pakete MIT-lizenziert sind), können die Schüler diese Ideen in ihrem eigenen Code (mit Namensnennung) verwenden (wenn der Code GPL-lizenziert ist, wie dies bei den meisten MATLAB- und R-Paketen der Fall ist). Sie müssen vorsichtig mit Lizenzproblemen sein!).

Da der Sprachkern aus einer sehr aktiven Open-Source-Community besteht, gibt es auch eine umfangreiche Ressource zur Geschichte der Sprachentwicklung: die Github-Themen . Verstehen Sie Sprachfragen, wie z. B., was eine Matrix wirklich transponiert? kann sehr aufschlussreich sein, um diese mathematischen Objekte genauer zu verstehen.

Aber zum Schluss möchten Sie Ihren Schülern beibringen, wie man schafft. Leider bedeutet das Erlernen von Python oder R nicht unbedingt, dass Sie das Zeug dazu haben, Python / R zu entwickeln, da die meisten der weit verbreiteten und gut optimierten Pakete eine erhebliche Menge an C / C ++ / Fortran-Code enthalten um Leistung zu erhalten. Damit diese Schüler einen Beitrag zum wissenschaftlichen Ökosystem dieser Sprachen leisten können, müssen sie irgendwann eine andere Sprache lernen. Während das nicht ganz schrecklich ist, ist es jetzt, da Julia existiert, suboptimal. Da die typstabile Julia die Geschwindigkeit von C / Fortran erreichen kann, handelt es sich bei den meisten Paketen im Julia-Ökosystem um reinen Julia-Code. Julia lernen heißt, man hat gelernt, Julia zu entwickeln. Und da Base Julia auch meistens Julia-Code ist (nur ein paar Primitive und der Parser nicht),

Das heißt, es gibt einige Nachteile bei der Auswahl von Julia. Zum einen ist es viel neuer als diese anderen Sprachen und daher etwas knapper in Bezug auf Ressourcen. Sie müssen sich eine Menge Lehrmittel selbst einfallen lassen oder Ressourcen im Web nutzen, die auf der Julia-Website aufgelistet sind . Außerdem sind die Sprachdetails noch nicht ganz geklärt, obwohl 1.0 in Kürze (Ende 2017) veröffentlicht wird. Und es ist auch sehr wahrscheinlich, dass Sie, die potenzielle Lehrerin eines Julia-Kurses, selbst nicht so viel Erfahrung mit der Sprache haben. Dies sind jedoch die Probleme, die mit der Zeit verschwinden, während die Vorteile von Julia, die ich oben erwähnte, für die Sprachen selbst wesentlich zentraler sind.

Chris Rackauckas
quelle
Ich frage mich, ob die Verwendung einer wenig verwendeten Sprache sinnvoll ist, da die Kenntnis der Syntax wahrscheinlich verloren geht und nicht garantiert werden kann, dass die Schüler mehrere Sprachen lernen. Vielleicht ist Python in dieser Hinsicht immer noch eine gute Einstellung.
Xavier Combelle
1
Deshalb hätte ich Julia vorher nicht gesagt, aber jetzt, da es ziemlich üblich ist, kannst du es genauso gut benutzen.
Chris Rackauckas
Ich denke Julia ist noch zu neu. In der Industrie wird von den Schülern erwartet, dass sie Python, C ++, (ew) MATLAB und R kennen. Ich denke, es ist besser, als zweite oder dritte Sprache zu lernen, als bereichernde Erfahrung. Es ist unwahrscheinlich, dass Schüler Julia in naher Zukunft wieder verwenden.
Mateen Ulhaq
2
Die Schüler sollten übertragbare Fähigkeiten erlernen, keine Vorlage zum Kopieren und Einfügen. In diesem Sinne abstrahiert Python / MATLAB / R zu weit vom Computer entfernt, um ein gutes Lehrmittel zu sein, das über die einfachste Programmierung hinausgeht, aber C ++ ist zu niedrig, um ein gutes Lehrmittel zu sein. Sicher, wenn Sie eine andere Sprache als in einem Kurs zur numerischen Analyse haben möchten, tun Sie, was Sie verwenden, da es in dem Kurs nicht um Programmierung geht. Aber wenn es um Programmierkonzepte geht, ist Julia so ziemlich die einzige einfache Sprache, die tatsächlich die meisten Konzepte in ihrem Design hat.
Chris Rackauckas
2

Als nicht allzu weit entfernter Student zu sprechen und davon auszugehen, dass Sie nicht in der CS-Abteilung unterrichten, wäre für mich eine Katastrophe, wenn Sie die Schüler mit so etwas wie C, C ++ oder Fortran (oder Gott sei Dank) an die Computerprogrammierung heranführen würden CUDA), obwohl andere darauf hingewiesen haben, dass sie wahrscheinlich der Status Quo im wissenschaftlichen Rechnen sind.

Wenn Sie erwarten, dass Sie den Studenten das wissenschaftliche Rechnen beibringen und sie im selben Kurs in die Programmierung einführen, würde ich wetten, dass dies zu viel ist, um in einem Semester behandelt zu werden, es sei denn, Sie halten sich an eine interpretierte Sprache wie Matlab oder Python. Nach meiner Erfahrung werden die meisten Kurse im wissenschaftlichen Rechnen im Grundstudium in einem dieser beiden Kurse unterrichtet, und Python wird als Produktionssprache von Tag zu Tag nützlicher, sodass es als praktische Fertigkeit immer noch nützlich ist ( Ich meine).

Nur meine zwei Cent.

Sumedh Joshi
quelle
4
Katastrophen sind ein zu starkes Wort, um zu beschreiben, wie man Schüler in C, C ++ oder Fortran unterrichtet. In jeder dieser Sprachen (C, C ++, Fortran oder Python) können Sie Programmieren und wissenschaftliches Rechnen unterrichten, je nachdem, wie Sie es tun.
Bill Barth
1
Nach meiner Erfahrung mit einer Klasse der CS-Abteilung (C ++) und einer Klasse für Astronomen (Fortran 77) bietet C / C ++ / Fortran im Vergleich zu Python für völlig neue Programmierer keine ausreichende Hilfe (Segfaults vs. Exceptions). Die Verwendung von C / C ++ / Fortran erfordert entweder das Erlernen der Verwendung eines Debuggers (oder der Verwendung einer IDE), während Python allein verwendet werden kann.
James Tocknell
0

C, C ++ und Fortran (in keiner bestimmten Reihenfolge aufgeführt) sind die drei wichtigsten Programmiersprachen für die rechnergestützte Mathematik / Physik, wenn Sie große Probleme auf Supercomputern lösen möchten. Ich denke, CUDA wird als Bibliothek betrachtet, die in Verbindung mit anderen Sprachen für beschleunigtes GPU-Computing verwendet wird. Matlab und Python eignen sich hervorragend zum Ausführen von Ausgabediagnosen und zum Erstellen von Prototypmodellen. Sie sind auch einfacher zu erlernen und eignen sich möglicherweise besser für einen Kurs, in dem Sie Algorithmen kennenlernen und lernen möchten, wie man programmiert.

Wenn es in Ihrem Kurs also nur um Programmierung geht, würde ich C ++ oder, wenn dies das erste Mal für die Studenten ist, Python wählen. Beide Sprachen sind außerhalb der Welt des wissenschaftlichen Rechnens von großem Nutzen. Wenn sich der Kurs auf das Erlernen von Algorithmen zur Lösung physikbasierter Probleme konzentriert, ist Matlab zweifellos der Gewinner.

James
quelle
0

kurz: Beachten Sie, dass das wissenschaftliche Rechnen selbst kompliziert ist. Möchten Sie wirklich, dass die Programmiersprache ins Spiel kommt?

Die Mathematik verwendet die Abstraktion, um Probleme zu lösen, die nicht durch Intuition gelöst werden können. Konzepte haben daher die Tendenz, abstrakt zu sein. Aus diesem Grund ist es nicht trivial zu verstehen, welche Konzepte eingekapselt werden müssen. Im wissenschaftlichen Rechnen sind die üblichen Beispiele für Klassen wie "Tier" oder "Fahrzeug" eher unbrauchbar. Dies gilt für die objektorientierte Programmierung, aber ich glaube, dass die Reproduktion abstrakter Konzepte auf einem Computer auch bei der imperativen Programmierung nicht trivial ist.

Aus diesem Grund glaube ich, dass es hier um zwei verschiedene Ansätze geht: Programmieren auf der einen Seite und wissenschaftliches Rechnen auf der anderen Seite. Bei Studenten mit heterogenen Hintergründen können Sie am Ende zwei verschiedene Dinge gleichzeitig unterrichten.

Wenn es Ihr Ziel ist, wissenschaftliches Rechnen zu unterrichten, finde ich das schwierig genug. Eine zusätzliche Barriere als Programmiersprache (wir sind uns alle einig, dass C ++ eine Schulung erfordert) würde einen guten Teil der Schüler demotivieren. Aus diesem Grund empfehle ich, Python zu verwenden.

Wenn Ihr Kurs "Introduction to SC" ist, glaube ich, dass Python das beste Ergebnis / Aufwand-Verhältnis hat.

PS: Jetzt haben wir ziemlich gute Computer, wir brauchen nicht wirklich nach Effizienz zu suchen.

Nicola Cavallini
quelle
In Bezug auf Ihre PS: Warum ist die Leistung nicht nur für Studenten von Bedeutung? Abgesehen von der Tatsache, dass es einfach ist, Aufgaben für Studenten zu konzipieren, bei denen es auf Leistung ankommt, sind es nicht die Aufgaben, für die sie Leistung lernen, sondern das wirkliche Leben. Auch die Geschwindigkeit des Computers ist möglicherweise höher geworden, aber auch unsere Erwartungen.
Wrzlprmft
Entschuldigung, ich war zu scharf. Lassen Sie es mich umformulieren in "Schüler können zufriedenstellende große Anwendungen mit einer interpretierten Sprache ausführen, bevor sie sich mit Codeoptimierung befassen und dann zu einer kompilierten Sprache wechseln".
Nicola Cavallini