Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Достоинства и недостатки языка Fortran (http://forum.oszone.net/showthread.php?t=210506)

PhilB 20-06-2011 17:15 1698279

Извините за оффтоп, но я не бородатый старый программер, а студент еще...
Цитата:

Цитата lxa85
Большая часть мат. вычислений пишется на Фортране. »

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

amel27 20-06-2011 18:13 1698314

Цитата:

Цитата PhilB
Киньте ссылки »

баян: http://www.google.ru/#sclient=psy&hl...w=1263&bih=770

Цитата:

Цитата PhilB
что в нем такого привлекательного для математиков »

не знаю, мы его изучали как физики, математики в это время учили паскаль

PhilB 20-06-2011 18:53 1698337

Цитата:

Цитата amel27

Google я не забыл, говорю ж, ничего толкового не нашел.
Тем более любопытно, видя, что lxa85 хочет провести пару семестров на онном.

Iska 20-06-2011 19:34 1698381

Цитата:

Цитата PhilB
Никак нигде не могу найти ответ, что в нем таком. »

Не там ищете: Фортран.

Его библиотеки проверены очень и очень серьёзно. В них вложено огромное количество человеко-лет труда. Переделывать их, отлаживать (и, само собой, внедрять) — весьма затратно.

Tau_0 02-07-2011 01:34 1705524

Цитата:

Цитата PhilB
Один страрый АСУшник поведал мне, что фортран стал языком для математиков, потому что там впервые была реализована двойная точность для вычислений с плавающей точкой. Сейчас она есть везде, вроде даже уже четверная есть в gcc. »

АСУшник ни в коем случае не фортранщик..

Чтобы почувствовать язык надо на нём писать… Я писал на разных ассемблерах, Модуле-2, С и С++ и десть лет на Фортране, начиная с четвертого (60-го) м заканчивая 90-ым. Это мой любимый язык --- прост (не перегружен) и лаконично красив (в последних версиях даже изящен) --- науке не нужны излишние навороты…

Фортран стал языком научной братии: физиков, механиков и инженеров. Но не математиков --- математика это совсем иное… Академическое общество в этом смысле разумно консервативно --- пользуется проверенным надёжным инструментов --- его на C++ не пересадишь…
Поэтому и жив Фортран по пору сию…

lxa85 02-07-2011 08:27 1705555

Tau_0, можно вас попросить уточнить разницу между физиками, механиками и математиками? Разница для меня пока не столь очевидна, т.к. данные науки тесно сплетаются между собой. Дополняя и "раскрывая" друг друга.

Iska 02-07-2011 10:16 1705581

;) Учитель, можно я? Можно мне ответить?!

Математика является основой, базовой составляющей, которая даёт численный аппарат как для теоретического обоснования, так и для реализации задач перечисленной научной и инженерной братии. Без математического аппарата, что физика, что механика — мертва.

Так я понимаю это.

ferget 02-07-2011 10:26 1705586

тема вопроса
Цитата:

Цитата Tau_0
Фортран стал языком научной братии: физиков, механиков и инженеров. Но не математиков --- математика это совсем иное… »

не раскрыта :)

AlexMakienko 02-07-2011 14:10 1705681

Tau_0 Считал раньше на Fortrane еще в 1968 году динамику полета экранопланов Орленок,
Касп. Монстр, Лунь и т.д. Накоплены данные расчето, проверенные по результатам летных испытаний. Пробовал использовать MatLab. Уранения и исх. данные те же, но выходные переходные процессы сильно отличаются.
Считать приходится систему нормальных дифф. урвнений 5-го порядка методом Рунге_Кутта.
Сейчас попрежнему использую Fortran (Fortran Power Station ) для расчетов все классно.

Вопрос. Можно ли считать системы дифференциальных уравнений (нормальных) и в частных производных с помощью программ С++

Tau_0 02-07-2011 16:01 1705723

Цитата:

Цитата lxa85
можно вас попросить уточнить разницу между физиками, механиками и математиками? »

Конечно эти науки сплетаются.
Но раз есть разные слова, то значит, есть и разница --- даже в тонкостях мышления. Математика она очень большая --- есть логики и абстрактные алгебраисты --- им вроде машина ник чему. Хотя кто его знает…???....

Раскрыть разницу не берусь --- будет много слов, и мало толка… Но я эту разницу чувствую и ощущаю --- тесно работал с ними рядом.

Ну вот Вам вариация одной старой шутки…
Цитата:

Едут в купе поезда инженер, физик, математик и логик. Видят стадо овец. Инженер говорит: "А овцы белые". Физик: "Неправильно. Надо говорить точнее: в этой местности
овцы белые." Математик говорит это не так: "Пасущиеся перед нами овцы - белые".На это логик отвечает: " И это не показать полностью..
ЗЫ Исаак Ньютон был един в трёх лицах…
Цитата:

Цитата AlexMakienko
Вопрос. Можно ли считать системы дифференциальных уравнений (нормальных) и в частных производных с помощью программ С++ »

Конечно можно, но мне было бы неудобно... Мои задачи были исследовательскими (высокоскоростные процессы обработки металлов давлением вплоть до задач пробивания брони…), и я сам не знал куда кривая выведет…

Хотя и старался применять технологии структурного программировании, но многое по пять раз перекраивал и переписывал… По крайней мере для меня это было неизведанным…
Какое здесь объектное программирование --- оно только мешает сосредоточится….

AlexMakienko 02-07-2011 18:38 1705766

Tau_0
Код:

Конечно можно, но мне было бы неудобно..
Я так все таки понял что не считали . Так и я вот ни разу не слышал и не видел
примеров решений в С++ систем дифференциальных уравнений (нормальных) и тем более в частных производных

amel27 03-07-2011 09:15 1705955

Цитата:

Цитата Tau_0
Раскрыть разницу не берусь --- будет много слов, и мало толка… »

Ну если только по ощущениям... В отношении к программированию физик ближе к инженеру, т.е. для него компУтер - "большой калькулятор" (я до сих пор так считаю), поэтому программировать он берётся только если не находит на "калькуляторе" нужной "кнопки"... "Математикам-чистикам" (мы их так называли) наоборот, чем абстрактней язык, тем больше возможностей для реализации своих "мысленных построений" и тем менее он понятен простым смертным (взять хоть F#). Прикладные математики выполняют роль "переводчиков" - т.е. пишут те самые "калькуляторы" для физиков и инженеров.

megaloman 03-07-2011 17:38 1706160

Не знаю, что такое Фортран сейчас, в своё время отдал 14 лет F-4, и немного Fortran-77. Моё твёрдое убеждение - ни в каком другом языке нельзя так просто работать с комплексными переменными (+ куча стандартных функций для них), как в Фортране. Прежде всего это нужно физикам, инженерам-физикам: электротехника, электродинамика - вот естественная область применения. А любая задача на любом языке прежде всего связана с методикой решения: вот конкретная задача, вот придумали метод (в научных расчётах -99% успешного результата и эффективности конечного кода) - а уж потом - программа. Уже порядочное время мощная альтернатива Фортрану - MathCad.
Правда, существует очень давнее обидное высказывание какого-то гуру от программирования: "Кто начал изучение программирования с Бейсика - потерянный для программирования человек. Начавший с Фортрана - недалеко от них ушел". Но Бейсик сейчас другой. Наверное, и Фортран не тот.
Цитата:

Цитата lxa85
можно вас попросить уточнить разницу между физиками, механиками и математиками? »

Элементарно, Ватсон! У математика есть иллюзия, что все задачи решаются точно, физик всегда понимает, что задача решается приближенно, и очень важно сознавать границы этого приближения. Физик живёт в реальном пространстве-времени, математик витает в эмпиреях.

yurfed 03-07-2011 17:49 1706163

Цитата:

Цитата Tau_0
Я писал на разных ассемблерах, »

О, будем иметь ввиду.
Фортран, он ещё жив? Есть книга по работе с ним. Осталось только найти её. Постараюсь.
Цитата:

Цитата KarinchiK 01
17-06-2011 »

Вы ещё этого хотите и вам это нужно?

Tau_0 03-07-2011 19:07 1706179

Цитата:

Цитата AlexMakienko
Так и я вот ни разу не слышал и не видел
примеров решений в С++ систем дифференциальных уравнений (нормальных) и тем более в частных производных »

Да нет и на C++ серьёзные алгоритмы (численные методы…) тоже реализуют. Но, как правило, это задачи уже решённые, доводимые до промышленных пакетов… Это просто мне на Fortrane сподручнее.

Вот интересная дискуссия на эту тему --- три странички всего…
Научный форум dxdy
Фортран

http://dxdy.ru/topic27402.html

AlexMakienko 03-07-2011 19:33 1706185

Tau_0 Я без подначки. Мне просто интересно знать.
Цитата:

серьёзные алгоритмы (численные методы…) тоже реализуют.
Численные методы друг другу рознь.
Именно решение систем дифференциальных уравнений на С++ реально?
Я его просто не знаю

Tau_0 03-07-2011 21:02 1706231

Цитата:

Цитата AlexMakienko
Численные методы друг другу рознь.
Именно решение систем дифференциальных уравнений на С++ реально?
Я его просто не знаю »

Вы невнимательно посмотрели на dxdy…
См., что там написано
Цитата:

Последний релиз одной из самых известных библиотек численных методов NAG Mark 22 вышел в октябре 2009 года. Версия на С тоже есть, но описания несколько отличаются (http://www.nag.com)
А это с rutracker.org
Цитата:

NAG Fortran Библиотеки

Год выпуска: 1997 (MARK 18)
Разработчик: Numerical Algorithms Group
Совместимость с Vista: полная
Системные требования: Любой Fortran компилятор
Язык интерфейса: только английский
Таблэтка: Не требуется
Описание: Наибольшая коллекция числовых алгоритмов, коммерчески доступных

Произведенная экспертами NAG Fortran Библиотека имеет всемирную репутацию, и, с более чем 1 600 полностью документированными и проверенными исходными кодами, это - наибольшая коллекция математических и статистических доступных алгоритмов.

Содержание Библиотеки

Ключевые численные и статистические способности Библиотеки ФОРТРАНа перечислены ниже.

Численные

* Оптимизация, и Местная и Глобальная
* Линейное, квадратичное, целочисленное и нелинейное программирование и проблема наименьших квадратов
* Обычные и частичные дифференциальные уравнения
* Решение плотных, соединенных и редких линейных уравнений и проблем собственного значения
* Решение линейных и нелинейных проблем наименьших квадратов
* Интерполяция кривой и поверхностнью
* Специальные функции
* Численное интегрирование и интегральные уравнения
* Корни нелинейных уравнений (включая полиномиалы)
* Вейвлет-преобразования

Статистические

* Генерация случайных чисел
* Простые вычисления статистических данных
* Анализ корреляции и регрессии
* Многомерные методы
* Дисперсионный анализ
* Анализ временного ряда
* Непараметрическая статистика

AlexMakienko 03-07-2011 22:10 1706266

Tau_0

1. Посмотрел на dxdy… Ну и что ? Разные компиляторы ( да есть комбинированные) под разные классы задач.
Цитата:

Последний релиз одной из самых известных библиотек численных методов NAG Mark 22 вышел в октябре 2009 года. Версия на С тоже есть, но описания несколько отличаются (http://www.nag.com)
В том то и дело так отличаются, что динамику полета ( сист. дифф уранений для нее ) не посчитать. Кстати ссылка что то не работает

2. На rutracker.org мы уже обсудили.
Цитата:

NAG Fortran Библиотеки
Системные требования: Любой Fortran компилятор
Это и есть Фортран. Я использую компилятор Microsoft Fortran Power Station
Классно работает
Может я все же не понял о чем Вы говорите?

Tau_0 03-07-2011 23:51 1706339

Цитата:

Цитата AlexMakienko
Кстати ссылка что то не работает »

Пардон, пошарьте здесь.
http://www.nag.co.uk/

А документацмя по Mark 18 лежит вот тут.
NAG Fortran Library, Mark 18
http://nag.co.uk/numeric/fl/manual19/html/mark18.html

Цитата:

Цитата AlexMakienko
В том то и дело так отличаются, что динамику полета ( сист. дифф уранений для нее ) не посчитать. »

Ну нет для C++ таких мощных готовых библиотек, как для Fortran'а --- ну и что с того --- напишите собственные. Кто или что мешает...???...

Я и для фортрана в большинстве своём писал собственные подпрограммы и функции --- стандартные порой плохо подходили, или их у меня не было, или не так надо было делать.... Впрочем, были у меня исходные тексты с очень неплохой документацией. Но то было для серии DEC VAX, а надо было на IBM 360/370 --- куча машинно зависимых констант. Разбирал и правил исходные тексты, что очень утомительно.

Повторяю, --- написать на C ничто не запрещает. Вот только готовых библиотек маловато будет, а FORTRAN за 55 лет столько ВСЕГО накопил...!!!... Да и не люблю я на этом "телеграфном коде" (C, C++ кодировать....)

Цитата:

Цитата AlexMakienko
Я использую компилятор Microsoft Fortran Power Station
Классно работает »

Ещё бы --- оно так и есть:), но я вот стащил с варёзки Intel.Visual.Fortran.Compiler.v11.0.061-TBE, а он у меня не пошёл --- железо не то... Так что пока пользую Compaq Visual Fortran Professional Edition 6.6.C.

Впрочем, ВСЕ они (компиляторы и интегрированные среды) хороши --- вроде как одна команда делала...???...

AlexMakienko 04-07-2011 01:19 1706373

Tau_0 Понятно. А уменя как раз Compaq Visual Fortran Professional Edition 6.0 не пошел.

XPEHOMETP 05-07-2011 12:59 1707375

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

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

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

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

Tau_0 05-07-2011 15:41 1707495

Цитата:

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

Было время, и энтузиасты на Фортране компилятор Фортрана писали…
Цитата:

Цитата XPEHOMETP
То есть, заказывался неслабых размеров одномерный массив, а потом в него в разных местах пихались все промежуточные переменные, в том числе и массивы. »

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

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

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

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

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

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

XPEHOMETP 05-07-2011 16:16 1707528

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

Tau_0 05-07-2011 17:49 1707612

Цитата:

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

:up

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

Цитата:

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

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

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


Время: 22:24.

Время: 22:24.
© OSzone.net 2001-