Warum wurde Matlab in C geschrieben statt Fortran?
Wie Sie vielleicht wissen, Fortran ist eine Programmiersprache für wissenschaftliches rechnen. allerdings, der kernel der bekanntesten high-level language for scientific computing in C geschrieben statt Fortran. Warum?
- Das ergibt keinen Sinn - den Titel und die Frage unterscheiden. Meinst du warum wurde matlab in C geschrieben oder warum wurde Fortran in C geschrieben?
- Ich denke, es ist ziemlich klar, er meint ersteres. Fortran ist eine low-level Sprache und in der Tat, pre-dates C, so ist letzteres würde keinen Sinn ergeben irgendwie.
- Ich denke der kernel von matlab geschrieben in Fortran nicht C vorausgesetzt Fortran ist besser für wissenschaftliches rechnen.
- Nicht zu pedantisch ist, aber nicht FORTRAN die bekannteste Sprache im wissenschaftlichen rechnen? Oder bin ich einfach nur stecken in den 1970er und 1980er Jahren? Ich bin sicher, dass alle modernen Fortran Compiler, geschrieben in C oder C++ und haben seit vielen Jahren.
- Ich werde nicht einmal versuchen, zu lösen der Gordische Knoten diese Kommentare gemacht. Ich glaube er meint, warum wurde MATLAB in C geschrieben, und nicht in fortran geschrieben. Einfach weil die fortran ist nicht das beste Werkzeug für diesen job. C ist besser. Heute, fortran-Compiler sind auch in C geschrieben ist und ein wenig niedriger level-Sprachen für eine hohe Optimierung. Was für ein compiler für eine Sprache geschrieben werden, hat nichts damit zu tun, dass die Sprache - es ist das problem-die Lösung-die Zeit in Sprache und Zeit, die erforderlich ist zum ausführen des Problems, während mit dem Programm geschrieben in dieser Sprache, die ankommt.
- Für wissenschaftliche problem fortran ist eine ausgezeichnete exanmple der low-level Sprache. Matlab ist ein wenig höher orientiert, aber neigt dazu, langsamer (disclaimer: Lesen Sie den letzten Teil mit Vorsicht zu genießen).
- Ich habe nicht die rep noch an diesem tag, wie subjektiv, so würde jemand anderes Verstand, es zu tun?
- Ich Stimme überhaupt nicht mit der "subjektiven" - tag. Matlab Wahl von C über Fortran ist NICHT eine subjektive/persönliche Wahl in diesem speziellen Thema! Wenn die anderen einverstanden sind würde ich vorschlagen, Bearbeiten Sie die tags zu entfernen, subjektiv.
- Hier, habe ich es entfernt - wenn jemand es will, lassen Sie ihn setzen es selbst um. Ich kann sehen, Trevors Sicht obwohl; C oder besser zu sagen, C++ ist Objektiv eine bessere Sprache zum schreiben eine vollständige geblasen Anwendung (ich möchte nicht schreiben Sie es in reinem C entweder, es ist nur manchmal betrachte ich diese als ein und dasselbe in Diskussionen).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Beantwortung deiner ursprünglichen Frage: Matlab wurde ursprünglich in Fortran geschrieben. Aber eines der ersten Dinge, die der Schöpfer in Matlab von Cleve Moler, und sein partner Tat im Jahr 1983 war, zu schreiben, die gesamte Matlab-app in C:
Ich glaube, eine wichtige Frage für heute wäre zu Fragen: warum haben Sie die wechseln Sie zu C zurück in 1983 ?
Meine Vermutung ist, dass C hatte wohl bestimmte Eigenschaften, die Fortran nicht haben und somit der Schalter war mehr aus der not heraus und im Interesse des code-Wartbarkeit.
Einer killer fehlende Funktion in Fortran77 war die dynamische Speicherverwaltung (Dynamic memory allocation wurde nur Hinzugefügt, in Fortran90). Um das single Einschränkung wäre ein schrecklicher deal breaker meiner Meinung nach.
EDIT:
dmckee die Antwort hat eine große Erklärung, warum der Einsatz Fortran77 wäre schmerzhaft.
Erraten auf der basis der Erfahrung:
Fortran (gut, die fortran-das war es schon, wenn Sie matlab geschrieben wurde) hat keine Unterstützung für dynamic memory management. Das macht es ein Schmerz für die große Arbeit (siehe, zum Beispiel, CERNLIB).
CERNLIB löst das problem durch die Zuweisung eine satte big-array in einen gemeinsamen block, und die Implementierung von malloc wie (de) - Zuweisung für die Zellen des Arrays. Klobig, aber funktioniert: array offsets sind Zeiger Entsprechungen, und gehen Sie Weg...
Mein Verständnis ist, dass Matlab geschrieben ist, in ein Sammelsurium von Sprachen, einschließlich, aber nicht beschränkt auf C -, FORTRAN -, Java-und Matlab selbst.
Ich glaube, es beschäftigt best-of-breed-Bibliotheken hinter den kulissen, einschließlich LAPACK (FORTRAN), FFTW (C) und wahrscheinlich noch viele mehr.
Ich denke, die ursprüngliche version war eine Reine FORTRAN, aber es wurde Poliert und kommerziell waren Sie nicht schüchtern über die Verwendung der richtigen Sprache für jede Komponente. Ich gebe Ihnen keine Schuld-ich würde es hassen, zu schreiben, einen parser oder eine GUI in FORTRAN!
Ich soll zu qualifizieren, dass diese Antwort mit der folgenden Anweisung - ich weiß nichts über Fortran oder Matlab
Aber ich denke, dass Sie fast Ihre eigene Frage zu beantworten Ihre Frage.
Warum würden Sie nicht verwenden, eine wissenschaftliche Sprache zu schreiben, ein kernel. Verwenden Sie die am besten geeignete Sprache für die Aufgabe zur hand. Ein kernel wäre am besten in C geschrieben ist, wie es ist besser geeignet für die Arbeit mit low-level-Aufgaben-wie-Kernel (arbeiten mit Speicher-management, etc)
Kernel ist nicht eine wissenschaftliche Anwendung daher, Sie würden nicht mit einer wissenschaftlichen Sprache.
Wieder, ich kann vollkommen daneben, aber ich denke, das ist eine sehr logische Antwort.
Finden Sie einige Informationen über die Herkunft von Matlab durch das ansehen eines Videos auf Ihre web-site, die speziell auf die Seite des Chief Scientist, Cleve Moler.
Matlab wurde ursprünglich in Fortran geschrieben war, war es mehr eine weniger ein wrapper für eine Reihe
der Fortran-Routinen. Die Frage ist also, warum es in c neu schreiben? In der Tat, warum hast Fortran verlieren
aus c und anderen Sprachen, waren nicht wirklich geeignet, um numerische computing. Die Antwort ist Fortran arg gelitten von der Politik. Aus verschiedenen Gründen das standard-Komitee entscheiden konnte, auf einen Ersatz für Fortran 77. Also, durch die Zeit, die Fortran 90 schließlich kam Fortran hatte viel Boden verloren zu anderen Sprachen. Diese situation wurde nun korrigiert. Fortran 2003, die mehr oder weniger umgesetzt, die in der gnu compiler ist eine schöne Sprache sein, gut geeignet für numerische und hat zusätzlich die dynamische Zuordnung schnelle ein - /Ausgängen und OO ish Konstrukte Polymorphismus abgeleiteten Typ etc. (Fortran 2008) noch besser sein
Modernen Fortran ist nicht darauf ausgelegt zu schreiben, gui-Schnittstelle, aber es ist so konzipiert, anrufen und angerufen werden, die aus C und anderen Sprachen. Also, wenn die matlab-übung wurde wiederholt heute seine durchaus möglich, dass die numerischen bits wäre in Fortran geschrieben und die Benutzeroberfläche in etwas anderes.