Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Достоинства и недостатки языка Fortran

Ответить
Настройки темы
Достоинства и недостатки языка Fortran

Старожил


Сообщения: 198
Благодарности: 51


Конфигурация

Профиль | Отправить PM | Цитировать


Извините за оффтоп, но я не бородатый старый программер, а студент еще...
Цитата lxa85:
Большая часть мат. вычислений пишется на Фортране. »
Никак нигде не могу найти ответ, что в нем таком. Сам на нем проги не писал никогда, только читал, и не понял, что в нем такого привлекательного для математиков.
Один страрый АСУшник поведал мне, что фортран стал языком для математиков, потому что там впервые была реализована двойная точность для вычислений с плавающей точкой. Сейчас она есть везде, вроде даже уже четверная есть в gcc.
Да, для него много библиотек с математикой, но многие библиотеки для серьезной математики я видел и для си, и для фортрана (MPI, например).
Суммируя, что ж в нем такого? Киньте ссылки или разъясните в 2 словах. Буду благодарен.

Отправлено: 17:15, 20-06-2011

 

Ветеран


Сообщения: 1853
Благодарности: 146

Профиль | Отправить PM | Цитировать


Считать можно все на всем, хоть на Фортране, хоть на С++, хоть на Паскале. Хоть на Хаскеле с Прологом. Проблема в том, на чем считать быстрее и удобнее. Фортран изначально был как бы высокоуровневым заменителем ассемблера. То есть он не компилировался, а прямо перегонялся в машинный код. Поэтому он был изначально заточен именно на легкость такого преобразования, а не на легкость написания программ. И поэтому постоянно лидировал в скорости вычислений. Но некогда, с точки зрения человека, был жутко, невыносимо корявым языком. Фортран-IV и Алгол-66 - ну земля и небо! То есть, язык очень неудобный, но очень быстрый. В те времена скорость расчетов очень ценилась, поэтому Фортран и пошел в гору. Опять же, Ай-Би-Эма-мать (Фортрановская, ибо во всю продвигала) сильно поспособствовала...

Хотя в те времена все языки перегонялись в машинный код, как Ассемблер. И заявление Кернигана и Ричи, что С - это портируемый Ассемблер, в те времена было абсолютно верным (но не сейчас!). Однако, Фортран очень долгое время оперировал до дебильности простой моделью компьютера. В которой память под все переменные выделяется сразу и навсегда, и потом ничего сверх этого отводить не надо. Зато как при этом все быстро считается! Плата за это неслабая: вплоть до стандарта Фортрана-90 (чудовищно поздно, по сравнению с другими языками) не было никаких динамически размещаемых в памяти массивов.

Но жить-то как-то надо! В результате в реальной практике под массив приходилось заказывать памяти с избытком. Т.е. некое фиксированное количество, которое в любом случае перекроет все разумные потребности. А потом использовать под данные только ту часть из общего объема массива, которая нужна. Это еще цветочки, ягодки - это концепция псевдодинамического распределения памяти, или как там она называлась... Это вообще гроб! Точнее, такая братская могила, причем одномерная. То есть, заказывался неслабых размеров одномерный массив, а потом в него в разных местах пихались все промежуточные переменные, в том числе и массивы. И, опять же, в том числе и многомерные. Запихивались в разные порции этой братской могилы. Выглядит это обычно так: в описании некоторой подпрограммы некая переменная описана как массив (возможно, многомерный), а при реальном вызове этой подпрограммы этой переменной (массиву!) ставится в соответствие некий единичный элемент описанного выше временного массива. Скажем, а(12). И массив этот пишется во временное хранилище, начиная с 12 элемента. И еще в такие массивы, объявленные как массив действительных переменных, запихивали даже целочисленные переменные, и это было в порядке вещей.

Короче, в действительно серьезных программах, написанных по такой методе, разобраться детально просто не реально. Тем более перевести на другие языки. Тут или все похоронить, или так и использовать. А поскольку динамических массивов не было до 90-х годов, то кода такого накопилось дофига, и Фортран теперь просто непотопляем!
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:59, 05-07-2011 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Tau_0

Ветеран


Сообщения: 6211
Благодарности: 1393

Профиль | Отправить PM | Цитировать


Цитата XPEHOMETP:
Фортран изначально был как бы высокоуровневым заменителем ассемблера. То есть он не компилировался, а прямо перегонялся в машинный код. »
Было время, и энтузиасты на Фортране компилятор Фортрана писали…
Цитата XPEHOMETP:
То есть, заказывался неслабых размеров одномерный массив, а потом в него в разных местах пихались все промежуточные переменные, в том числе и массивы. »
Угу я и сам так делал --- всю свободную память (на этапе компиляции под массив…) мне это было удобно. Наряду с этим большим массивом заказывались ещё и управляющие массивы указателей (просто индексы типа INTEGER). Таким образом реализовывалось собственное управление памятью, причём в динамике…

Простой пример --- проекционно сеточные методы (конечные, граничные элементы, да и конечно-разностные схемы тоже). Там получались симметричные сильно разреженные матрицы --- много нулей. Хранить их в виде массива 2х2 глупо --- использовались ленточные и профильные схемы. Более того, применялись различные алгоритмы перенумерации узлов для минимизации ширины ленты и профиля. Делалось для повышения скорости вычислений и экономии памяти. Матрицы были слабо обусловленными и так просто эти СЛАУ не решались --- серьёзная кухня использовалась.

Это оправдывало себя. А динамическое распределение памяти печально знаменито тем, что хороший мусорщик в общем случае очень трудно реализовать. Память есть, но она дробится --- не непрерывным блоком, а с дырками это всё равно, что её нет. Страничный обмен не спасает ---- для цифродробилки высокая скорость нужна, а тут толкотня страниц…

ЗЫ Хорошая задача и суперкомпьютер положит…

ЗЗЫ Что до гроба --- в том и состояло искусство программиста, чтобы реже хоронить… Грубая проза жизни --- прошло время настоящих профи ...

ЗЗЗы Стандарты 2003 и 2008 ещё не смотрел --- интересно --- чего там ещё накрутили…???...
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:41, 05-07-2011 | #22


Ветеран


Сообщения: 1853
Благодарности: 146

Профиль | Отправить PM | Цитировать


Tau_0
Я как бы программист не профессиональный, надо было результаты обрабатывать, причем не тривиально... Влез в Фортран, поскольку язык обманчиво простой, типа Бейсика (ну, на самом деле, это именно Бейсик типа Фортрана, но не будем об этом...). Но, по ходу дела, выяснилось, что простота эта совершенно обманчива. Нет другого такого языка программирования, в котором можно написать программу, которая будет абсолютно превратно понята. Если не указать условия компилирования. Скажем, ключик, разрешающий старинный глючный цикл Фортрана, который сначала выполнится, а потом уже будет проверено условие его выполнения. Да даже если этот ключик указать, фига с два теперешние программеры, не программировавшие на Фортране-IV, поймут его смысл. Почти что язык только для посвященных, если захотеть...
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:16, 05-07-2011 | #23


Аватара для Tau_0

Ветеран


Сообщения: 6211
Благодарности: 1393

Профиль | Отправить PM | Цитировать


Цитата XPEHOMETP:
ключик, разрешающий старинный глючный цикл Фортрана, который сначала выполнится, а потом уже будет проверено условие его выполнения. »


Наш ответ Керзону…

Цитата:
Да, конечно, некоторые изготовители ЭВМ выпустили компиляторы Фортрана-77, но каждый из них оставил возможность перейти в режим компилятора Фортрана-66 с помощью удаления дной перфокарты - чтобы компилировать циклы DO как предписано богом.
25 лет назад я увидел этот опус… У нас тогда только первые персаналки начали появляться и Паскаль вместе с ними. Мы были настоящими программистами, но приняли Паскаль. А Modula-2 я даже полюбил. Но Фортран есть Фортран --- на пюбом писать готов, только теперь это никому не надо…

Прочтите до ко конца --- там мой полный ответ прикопан...

Настоящие программисты не используют Паскаль
http://lib.ru/ANEKDOTY/non_pas.txt

Последний раз редактировалось Tau_0, 05-07-2011 в 17:59.


Отправлено: 17:49, 05-07-2011 | #24



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Достоинства и недостатки языка Fortran

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Облачные вычисления: достоинства и недостатки OSZone News Новости информационных технологий 2 09-05-2012 07:42
Windows Live Essentials 2011: достоинства и недостатки финальной версии OSZone News Новости и события Microsoft 1 05-10-2010 01:42
Разное - Fortran lxa85 Программирование и базы данных 7 03-04-2010 16:43
Главные достоинства Windows 7 OSZone News Новости и события Microsoft 22 04-08-2009 21:34
Fortran vs. C/C++ Zar Программирование и базы данных 6 21-02-2004 17:08




 
Переход