Pourquoi Matlab a été écrit en C au lieu de Fortran?
Comme vous le savez, le Fortran est un langage de calcul scientifique. cependant, le noyau de la plus célèbre langage de haut niveau pour le calcul scientifique a été écrit en C au lieu de Fortran. Pourquoi?
Ce n'est pas logique - le titre et la question diffèrent. Voulez-vous dire pourquoi matlab a été écrit en C ou pourquoi Fortran a été écrit en C?
Je pense que c'est assez clair, il signifie que l'ancien. Fortran est un langage de bas niveau et en fait pré-dates de C, de sorte que ce dernier n'aurait pas de sens de toute façon.
Je pense que le noyau de matlab doit avoir été écrit en Fortran pas C en supposant que le Fortran est mieux pour le calcul scientifique.
Je ne vais même pas essayer de résoudre le nœud gordien de ces observations. Je pense qu'il veut dire pourquoi MATLAB a été écrit en C, et ne sont pas écrits en fortran. Parce que, tout simplement, fortran n'est pas le meilleur outil pour un tel travail. C est mieux. De nos jours, les compilateurs fortran sont également écrits en C et un peu plus bas niveau de langues de haute optimisation. Quel compilateur pour un langage qui est écrit, n'a rien à voir avec la langue - c'est la résolution de problèmes en temps dans cette langue et exécutez-le temps requis pour exécuter le problème lors de l'utilisation du programme écrit dans ce langage que les questions.
Je suis en total désaccord avec le "subjectif" de la balise. Matlab est le choix de C au cours de Fortran n'est PAS subjective de/un choix personnel à ce sujet! Si les autres sont d'accord, je voudrais vous proposons d'éditer les tags de supprimer subjective.
Je pense que c'est assez clair, il signifie que l'ancien. Fortran est un langage de bas niveau et en fait pré-dates de C, de sorte que ce dernier n'aurait pas de sens de toute façon.
Je pense que le noyau de matlab doit avoir été écrit en Fortran pas C en supposant que le Fortran est mieux pour le calcul scientifique.
Je ne vais même pas essayer de résoudre le nœud gordien de ces observations. Je pense qu'il veut dire pourquoi MATLAB a été écrit en C, et ne sont pas écrits en fortran. Parce que, tout simplement, fortran n'est pas le meilleur outil pour un tel travail. C est mieux. De nos jours, les compilateurs fortran sont également écrits en C et un peu plus bas niveau de langues de haute optimisation. Quel compilateur pour un langage qui est écrit, n'a rien à voir avec la langue - c'est la résolution de problèmes en temps dans cette langue et exécutez-le temps requis pour exécuter le problème lors de l'utilisation du programme écrit dans ce langage que les questions.
Je suis en total désaccord avec le "subjectif" de la balise. Matlab est le choix de C au cours de Fortran n'est PAS subjective de/un choix personnel à ce sujet! Si les autres sont d'accord, je voudrais vous proposons d'éditer les tags de supprimer subjective.
OriginalL'auteur Kamran Bigdely | 2009-05-29
Vous devez vous connecter pour publier un commentaire.
Pour répondre à votre question initiale: Matlab a été initialement écrit en Fortran. Mais l'une des premières choses que le créateur de Matlab, Cleve Moler, et son partenaire n'en 1983 a été de réécrire l'ensemble de l'application Matlab en C:
, Je pense, une question plus pertinente pour, aujourd'hui, serait de se demander: pourquoi ont-ils passer à C en 1983 ?
Ma conjecture est que C probablement eu certains de ses traits qui Fortran n'ont pas, et donc le changement a été plus de la nécessité et de l'intérêt de la maintenabilité du code.
Un killer fonctionnalité manquante en Fortran77 était allocation dynamique de la mémoire (allocation Dynamique de la mémoire n'a été ajouté en Fortran90). Qu' unique limitation serait un horrible briseur d'affaire à mon avis.
EDIT:
dmckee la réponse a une bonne explication de pourquoi à l'aide de Fortran77 serait douloureux.
OriginalL'auteur Trevor Boyd Smith
Devinettes sur la base de l'expérience:
Fortran (ainsi, le fortran qui était autour de lors de matlab a été écrit) n'a pas de support pour la gestion dynamique de la mémoire. Ce qui en fait une douleur pour les gros travaux (voir, par exemple, CERNLIB).
CERNLIB résout le problème par l'attribution d'un énorme grand tableau dans un bloc commun, et la mise en œuvre d'un malloc comme (de)l'allocation pour les cellules de la matrice. Maladroit mais de travail: tableau des décalages de pointeur sont équivalents, et vous allez loin...
Pièces de CERNLIB date du début des années 1960. Par moment c est venu autour, ils avaient déjà beaucoup de code. Je crois que de grandes parties ont été réécrit plusieurs fois, mais le disjoncteur a été: les physiciens. Même dans les années 80, la plupart des physiciens ne parlait que le fortran.
"Qu'est-ce qui était le "météore" qui a forcé les Physiciens à changer dans les années 80?" Pour les étudiants qui connaissaient le Pascal et le c? Ou la montée d'unix? Mais le changement a été/est progressive et est toujours en cours. CERNLIB a été largement supplanté par la RACINE, mais il y a des millions de LOC, et qu'il est toujours activement soutenu. Zut, j'ai écrit le code contre il a tout juste 18 mois.
Boyd Smith - je ne dirais pas qu'il était un météore. De nos jours, la plupart des ingénieurs et des physiciens sont familiers avec fortran - à mon collège (de la valeur liquidative. arch) qui nous a été enseigné fortran, certains ont appris py et matlab, mais aucun appris C. C est la langue de la cs des étudiants - la plupart des ingénieurs ne pas l'utiliser, sauf s'ils sont de programmation incliné (mais c'est leur affaire personnelle). Et soyons francs, quand il vient à des fins scientifiques fortran est encore beaucoup mieux adapté que C, python, ou la plupart des autres (matlab est gentil, mais il a quelques inconvénients lors de la performance, est dans la course)
> je déteste les dinosaures. Vous disposez d'une bibliothèque avec KLocs de Fortran écrits par des experts de plus de 40years - vous allez juste pour le convertir en C. pensez-vous de comprendre toutes ces équations? Toutes les erreurs d'arrondi? Tous les cas de bord? Et vous allez le faire dans une langue qui n'a pas de matrices ou des nombres complexes comme norme encore.
OriginalL'auteur dmckee
Ma compréhension est que Matlab est écrit dans un méli-mélo de langues, y compris mais non limité à C, FORTRAN, Java, Matlab lui-même.
Je crois qu'il emploie best-of-breed bibliothèques derrière les scènes, y compris LAPACK (FORTRAN), FFTW (C), et probablement beaucoup plus.
Je pense que la version originale était de la pure FORTRAN, mais comme il est devenu de plus poli et commerciale ils n'étaient pas timide au sujet de l'aide de la langue de droite pour chaque composant. Je ne les blâme pas--je déteste écrire un analyseur ou un GUI en FORTRAN!
Bien sûr, aujourd'hui, il ya un tas de choses là.
+1 pour la précision. Matlab fonctionne sur Java JRE. Sans doute beaucoup de est en .m des fichiers ou en Java, w/ l'exception de critiques en temps des trucs qui s'est avérée être plus rapide lors de la mise en œuvre dans le code natif. Je me souviens quand ils sont passés à une version de Java; il a ralenti les choses, mais maintenant que le JRE a été fait plus vite, il est pas mal & certainement la peine d'être en mesure d'utiliser des objets Java dans MATLAB.
Un jour je vais apprendre à utiliser des objets Java dans Matlab... un jour.
OriginalL'auteur Drew Hall
Je veux qualifier cette réponse avec la déclaration suivante - je ne sais rien à propos de Fortran et Matlab
Cependant, je pense que vous avez presque répondre à votre propre question dans votre question.
Pourquoi ne pas utiliser un langage scientifique pour écrire un noyau. Vous utiliserez le langage le plus approprié pour la tâche à portée de main. Un noyau serait mieux écrites en C car c'est mieux adaptées à l'utilisation avec un faible niveau des tâches comme des noyaux (en collaboration avec la gestion de la mémoire, etc)
Un Noyau n'est pas une application scientifique, par conséquent, vous ne voudriez pas utiliser un langage scientifique.
Encore une fois, je suis peut-être complètement à côté de la marque, mais je pense que c'est très logique de réponse.
OriginalL'auteur Dafydd Giddins
Vous pouvez trouver quelques informations sur les origines de Matlab par le visionnage d'une vidéo sur leur site web, en particulier sur la page de l'expert Scientifique en Chef, Cleve Moler.
OriginalL'auteur tvanfosson
Matlab a été initialement écrit en Fortran, il a été plus d'un moins un wrapper pour un tas
de routines Fortran. Donc la question est pourquoi le réécrire en c? Au fait, pourquoi ne Fortran perdre
à c et à d'autres langues qui n'étaient pas vraiment adapté au calcul numérique. La réponse est le Fortran a fortement souffert de la politique. Pour diverses raisons, le comité pourrait décider de remplacement pour Fortran 77. Ainsi, par le temps Fortran 90 finalement sorti Fortran avait perdu beaucoup de terrain à d'autres langues. Cette situation a été corrigée. Fortran 2003, qui est plus ou moins mis en œuvre dans le compilateur gnu, est une belle langue que ses bien adapté au numérique et a en outre l'allocation dynamique io rapide et OO ish constructions polymorphisme de type dérivé etc. (Fortran 2008 sera encore mieux)
Moderne Fortran n'est pas conçu pour écrire des interfaces gui, mais il est conçu pour appeler et d'être appelé à partir de C et d'autres langues. Donc, si l'matlab exercice a été répété aujourd'hui son tout à fait possible que le numérique bits serait écrit en Fortran et l'interface utilisateur à quelque chose d'autre.
OriginalL'auteur ps123