Warum wurde Matlab in C anstelle von Fortran geschrieben?

7

Wie Sie vielleicht wissen, ist Fortran eine Sprache für wissenschaftliches Rechnen. Der Kern der berühmtesten Hochsprache für wissenschaftliches Rechnen wurde jedoch in C anstelle von Fortran geschrieben. Warum?

    
Kamran Bigdely 29.05.2009, 10:47
quelle

6 Antworten

20

Um Ihre ursprüngliche Frage zu beantworten: Matlab wurde ursprünglich in Fortran geschrieben. Aber eines der ersten Dinge, die der Schöpfer von Matlab, Cleve Moler und seinem Partner 1983 tat, war das gesamte Matlab neu zu schreiben App in C:

  

Jack Little hat seinen Job bei der   Beratungsunternehmen und kaufte ein neues   COMPAQ tragbarer Computer bei Sears. Das   Maschine hatte nur 256 KB Speicher und   keine Festplatte; Jack musste tauschen   5-1 / 4-Zoll-Disketten zum kompilieren   Programme. Jack und Steve brauchten ein Jahr   und eine Hälfte, MATLAB in C neu zu schreiben,   Hinzufügen neuer Funktionen, die sie   sioned. ( Das Wachstum von MATLAB und The MathWorks über zwei Jahrzehnte )

Ich denke, eine wichtigere Frage für heute wäre die Frage: Warum haben sie 1983 zu C gewechselt?

Meine Vermutung ist, dass C wahrscheinlich bestimmte Eigenschaften hatte, die Fortran nicht hatte, und daher war der Wechsel mehr aus Notwendigkeit und im Interesse der Wartbarkeit des Codes.

Eine Killer -Funktion, die in Fortran77 fehlt, war die dynamische Speicherzuweisung (die dynamische Speicherzuweisung wurde nur in Fortran90 hinzugefügt). Um diese einzige Einschränkung herumzukommen wäre meiner Meinung nach ein schrecklicher Deal-Breaker.

BEARBEITEN:

dmckees Antwort hat eine großartige Erklärung, warum die Verwendung von Fortran77 schmerzhaft sein würde.

    
Trevor Boyd Smith 29.05.2009, 13:59
quelle
17

Auf der Grundlage der Erfahrung erraten:

  

Speicherverwaltung.

Fortran (naja, der Fortran, der bei Matlab geschrieben wurde) hat keine Unterstützung für dynamisches Speichermanagement. Das macht es für große Arbeit schwierig (siehe zum Beispiel CERNLIB ).

CERNLIB löst das Problem, indem es ein sattes großes Array in einem gemeinsamen Block zuweist und einen malloc-ähnlichen (De-) Zuordner für die Zellen des Arrays implementiert. Clunky aber funktioniert: Array-Offsets sind Zeigeräquivalente, und weg Sie gehen ...

    
dmckee 29.05.2009 13:17
quelle
11

Mein Verständnis ist, dass Matlab in einer Vielzahl von Sprachen geschrieben ist, einschließlich, aber nicht beschränkt auf C, FORTRAN, Java und Matlab selbst.

Ich glaube, dass es hinter den Kulissen Best-of-Breed-Bibliotheken verwendet, einschließlich LAPACK (FORTRAN), FFTW (C) und wahrscheinlich noch viel mehr.

Ich denke, dass die ursprüngliche Version reines FORTRAN war, aber als es polierter und kommerzieller wurde, scheuten sie sich nicht, die richtige Sprache für jede Komponente zu verwenden. Ich beschuldige sie nicht - ich würde es hassen, einen Parser oder eine GUI in FORTRAN zu schreiben!

    
Drew Hall 29.05.2009 11:03
quelle
10

Ich möchte diese Antwort mit der folgenden Aussage qualifizieren - ich weiß nichts über Fortran oder Matlab

Aber ich denke, dass Sie fast Ihre eigene Frage in Ihrer Frage beantworten.

Warum sollten Sie keine wissenschaftliche Sprache verwenden, um einen Kernel zu schreiben? Sie würden die für die jeweilige Aufgabe am besten geeignete Sprache verwenden. Ein Kernel wäre am besten in C geschrieben, da er besser für die Arbeit mit Low-Level-Aufgaben wie Kernel geeignet ist (mit Speicherverwaltung usw.)

Ein Kernel ist keine wissenschaftliche Anwendung, daher würden Sie keine wissenschaftliche Sprache verwenden.

Auch hier mag ich völlig daneben liegen, aber ich denke, das ist eine höchst logische Antwort.

    
Dafydd Giddins 29.05.2009 10:57
quelle
3

Sie können einige Informationen über die Ursprünge von Matlab finden, indem Sie ein Video auf ihrer Website ansehen, insbesondere auf der Seite des Chefwissenschaftlers Cleve Moler.

    
tvanfosson 29.05.2009 10:54
quelle
3

Matlab wurde ursprünglich in Fortran geschrieben, es war mehr ein weniger Wrapper für einen Haufen von Fortran-Routinen. Also die Frage ist, warum es in c umschreiben? Warum hat Fortran tatsächlich verloren? out zu c und anderen Sprachen, die nicht wirklich für das numerische Rechnen geeignet waren. Die Antwort ist, dass Fortran sehr unter der Politik gelitten hat. Aus verschiedenen Gründen konnte sich das Standardkomitee für einen Ersatz für Fortran 77 entscheiden. Als Fortran 90 schließlich herauskam, hatte Fortran viel Grund zu anderen Sprachen verloren. Diese Situation wurde jetzt korrigiert. Fortran 2003, das mehr oder weniger im GNU-Compiler implementiert ist, ist eine nette Sprache, die gut geeignet ist für numerische und zusätzlich dynamische Zuordnung schnell io und OO ish Konstrukte Polymorphismus abgeleitet Typ usw. (Fortran 2008 wird noch besser)

Modern Fortran ist nicht zum Schreiben von GUI-Interfaces gedacht, sondern zum Aufruf und Aufruf von C und anderen Sprachen. Wenn also die Matlab-Übung heute wiederholt wird, ist es durchaus möglich, dass die numerischen Bits in Fortran und die Benutzeroberfläche in etwas anderes geschrieben werden.

    
ps123 12.02.2011 01:39
quelle