Почему Matlab был записан в C вместо Фортрана?

У меня только что была такая проблема - когда выпадающее меню Bootstrap 3 navbar не открывалось на iPad mini 2 (но работало на iPhone 7 и различных настольных компьютерах / ноутбуках). После отладки непосредственно на iPad, я обнаружил, что проблема заключалась в использовании «let» вместо «var» внутри функции js. Как только я переключил «давай на», все было хорошо. Просто хотел добавить это здесь на случай, если это (или удаление аналогичной устаревшей функции) окажется исправлением и для кого-то еще!

7
задан Rook 29 May 2009 в 17:18
поделиться

5 ответов

Чтобы ответить на ваш первоначальный вопрос: Matlab изначально был написан на Фортране. Но одна из первых вещей, которые создатель Matlab, Клив Молер и его партнер сделали в 1983 году, - это переписать все приложение Matlab на C:

Джек Литтл оставил свою работу в консалтинговой компании и купил новый Портативный компьютер COMPAQ в Sears. В у машины было всего 256 КБ памяти и нет жесткого диска; Джеку пришлось поменяться местами 5-1 / 4-дюймовые дискеты для компиляции программы. Джеку и Стиву потребовался год полтора, чтобы переписать MATLAB на C, добавляя новые функции, которые у них были sioned. ( Развитие MATLAB и MathWorks за два десятилетия )

Я думаю, что более актуальным вопросом на сегодня будет вопрос: почему они перешли на C еще в 1983 году?

Я предполагаю, что что у C, вероятно, были определенные функции, которых не было у Fortran, и поэтому переключение было больше вызвано необходимостью и в интересах поддержки кода.

Одной убойной функцией, отсутствующей в Fortran77, было динамическое выделение памяти (динамическая память распределение было добавлено только в Fortran90). Обойти это единственное ограничение, на мой взгляд, было бы ужасным нарушением условий сделки.

РЕДАКТИРОВАТЬ:

Ответ dmckee дает прекрасное объяснение того, почему использование Fortran77 было бы болезненным.

20
ответ дан 6 December 2019 в 04:45
поделиться

Гадание на основе опыта:

Управление памятью.

Фортран (ну, фортран, который существовал, когда Matlab был написано) не поддерживает динамическое управление памятью. Это затрудняет выполнение большой работы (см., Например, CERNLIB ).

CERNLIB решает проблему, размещая колоссально большой массив в общем блоке, и реализация malloc-подобного (де) распределителя для ячеек массива. Неуклюже, но работает: смещения массива эквивалентны указателям, и вперед ...

17
ответ дан 6 December 2019 в 04:45
поделиться

Вы можете найти некоторую информацию о происхождении Matlab, просмотрев видео на их веб-сайте, в частности, на странице главного ученого Клива Молера.

3
ответ дан 6 December 2019 в 04:45
поделиться

Насколько я понимаю, Matlab написан на мешанине языков, включая, помимо прочего, C, FORTRAN, Java и сам Matlab.

Я считаю, что он использует лучшее из -породные библиотеки за кулисами, включая LAPACK (FORTRAN), FFTW (C) и, вероятно, многие другие.

Я думаю, что исходная версия была чистым FORTRAN, но по мере того, как она стала более отточенной и коммерческой, они не стеснялись использовать правильный язык для каждого компонента. Я их не виню - мне не хотелось бы писать парсер или графический интерфейс на ФОРТРАНЕ!

11
ответ дан 6 December 2019 в 04:45
поделиться

I want to qualify this answer with the following statement - I know nothing about Fortran or Matlab

However i think you almost answer your own question in your question.

Why would you not use a scientific language to write a kernel. You would use the most appropriate language for the task at hand. A kernel would be best written in C as it is better suited to working with low level tasks like kernels (working with memory management etc)

A Kernel is not a scientific application therefore you wouldn't use a scientific language.

Again, i may be completely off the mark but i think that is a highly logical answer.

9
ответ дан 6 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: