Fortran vs C
От: Ash-2 Россия  
Дата: 12.01.04 07:54
Оценка:
Один уважаемый программер как-то заявил следующее (давно было, текст примерный):
«… для решения этой задачи использовались численные методы. Было рассмотрено несколько реализаций и выбрана реализация на Fortran’е. Т.к. она была более быстрая и давала более точное решение…».
Вопрос: может ли точность зависть от языка?
И вообще, что уважаемый ALL думает о Fortran’е (насколько этот язык востребован сейчас)? Появился ведь Visual Fortran, значит его актуальность сохранилась….

Заранее СПАСИБО!!!
Re: Fortran vs C
От: LaptevVV Россия  
Дата: 12.01.04 09:14
Оценка: 1 (1) +2
Здравствуйте, Ash-2, Вы писали:


A2>Один уважаемый программер как-то заявил следующее (давно было, текст примерный):

A2>«… для решения этой задачи использовались численные методы. Было рассмотрено несколько реализаций и выбрана реализация на Fortran’е. Т.к. она была более быстрая и давала более точное решение…».
A2>Вопрос: может ли точность зависть от языка?
A2>И вообще, что уважаемый ALL думает о Fortran’е (насколько этот язык востребован сейчас)? Появился ведь Visual Fortran, значит его актуальность сохранилась….

A2>Заранее СПАСИБО!!!

Ну, не на персональных, а на нормальных компьютерах фортран и сейчас рулит. Несколько книжек Бартеньева,
одна из которых тому подтверждение.
По поводу точности — от языка не зависит. Просто для фортрана еще с конца 50-х годов нарабатывались библиотеки численных методов. Сейчас это тщательно отлаженные "вылизанные" подпрограммы и их огромное количество. Ни один язык программирования не обладает таким количеством наработок высокого класса именно в численных расчетах.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Fortran vs C
От: Кодт Россия  
Дата: 12.01.04 11:57
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Ну, не на персональных, а на нормальных компьютерах фортран и сейчас рулит. Несколько книжек Бартеньева,

LVV>одна из которых тому подтверждение.
LVV>По поводу точности — от языка не зависит. Просто для фортрана еще с конца 50-х годов нарабатывались библиотеки численных методов. Сейчас это тщательно отлаженные "вылизанные" подпрограммы и их огромное количество. Ни один язык программирования не обладает таким количеством наработок высокого класса именно в численных расчетах.

Хотя сам по себе язык страшненький.
Я очень жалею, что с фортраном пытался конкурировать APL, но не выжил из-за откровенно издевательского синтаксиса (алфавит языка уходил далеко за пределы ASCII).
А там была такая классная матричная арифметика! Сколько сил сэкономили бы разработчики программ и компиляторов...

Оптимизирующий компилятор фортрана для векторных процессоров, например, крэй, вынужден догадываться, что за
  DO 1 I=1,100,1
  F(I)=G(I)+H(I)
1 CONTINUE

скрывается векторная операция F = G+H. А ведь цикл можно записать десятком разных способов. В результате автор программы должен знать, как писать код, чтобы его можно было оптимизировать.
Перекуём баги на фичи!
Re[3]: Fortran vs C
От: achp  
Дата: 12.01.04 12:22
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Хотя сам по себе язык страшненький. ...


К>Оптимизирующий компилятор фортрана для векторных процессоров, например, крэй, вынужден догадываться, ... А ведь цикл можно записать десятком разных способов. ...


Я попробовал об этом написать здесь: http://www.rsdn.ru/Forum/Message.aspx?mid=89410&only=1
Автор: achp
Дата: 23.08.02
.
Да здравствует ИМХО!
Re[4]: Fortran vs C
От: Кодт Россия  
Дата: 13.01.04 08:50
Оценка: 2 (1)
Здравствуйте, achp, Вы писали:

К>>Оптимизирующий компилятор фортрана для векторных процессоров, например, крэй, вынужден догадываться, ... А ведь цикл можно записать десятком разных способов. ...


A>Я попробовал об этом написать здесь: http://www.rsdn.ru/Forum/Message.aspx?mid=89410&only=1
Автор: achp
Дата: 23.08.02
.


Дело не в абстракциях и выразительной мощи.
И Фортран, и С++ — языки для скалярных вычислений. А математикам часто нужны векторные и матричные.

Фортран вообще вырос из макроассемблера для какой-то древней IBM. Вот если бы он начинался от Крея — было б по-настоящему интересно.

imho.
dixi.
Перекуём баги на фичи!
Re[2]: Fortran vs C
От: Socrat Россия  
Дата: 13.01.04 08:59
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>По поводу точности — от языка не зависит. Просто для фортрана еще с конца 50-х годов нарабатывались библиотеки численных методов. Сейчас это тщательно отлаженные "вылизанные" подпрограммы и их огромное количество. Ни один язык программирования не обладает таким количеством наработок высокого класса именно в численных расчетах.


Интересно, а в чем сложность перевести эти библиотеки на другие языки?
Re[5]: Fortran vs C
От: achp  
Дата: 13.01.04 09:20
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Дело не в абстракциях и выразительной мощи.


Да нет же, именно в них.

К>И Фортран, и С++ — языки для скалярных вычислений. А математикам часто нужны векторные и матричные.


И Фортран и Си++ могут полагаться на специфичные для платформы библиотеки с объектным кодом, невыразимым на самих этих языках.

К>Фортран вообще вырос из макроассемблера для какой-то древней IBM. Вот если бы он начинался от Крея — было б по-настоящему интересно.


Не было бы. Есть ведь уйма "приспособлений" Фортрана для разных аппаратных платформ с оптимизацией специфических операций. Почему они все не прижились?
Причина в том, что хочется иметь язык а) универсальный и не замкнутый на конкретную платформу, б) способный использовать специфику отдельных платформ. Эти два требования состоят в конфликте друг с другом.

Борьба с этим конфликтом может быть либо механической, либо диалектической , то есть — либо унификация, либо выделение абстракций.

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

Си++ дает нам возможнось выделить и назвать абстракцию, Фортран — нет.
Да здравствует ИМХО!
Re[3]: Fortran vs C
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.01.04 09:39
Оценка:
Просьба ограничить объем цитирования.
... << RSDN@Home 1.1.2 beta 3 >>
AVK Blog
Re: Fortran vs C
От: Комаров Иван Россия  
Дата: 13.01.04 10:32
Оценка:
Здравствуйте, Ash-2, Вы писали:


A2>Один уважаемый программер как-то заявил следующее (давно было, текст примерный):

A2>«… для решения этой задачи использовались численные методы. Было рассмотрено несколько реализаций и выбрана реализация на Fortran’е. Т.к. она была более быстрая и давала более точное решение…».
A2>Вопрос: может ли точность зависть от языка?
A2>И вообще, что уважаемый ALL думает о Fortran’е (насколько этот язык востребован сейчас)? Появился ведь Visual Fortran, значит его актуальность сохранилась….

A2>Заранее СПАСИБО!!!

IMHO, востребован только для поддержки древнего наследия в виде огромных отработанных библиотек. То, что он сколько-нибудь быстрее С на ПК на современных компиляторах — миф. Про Большие Машины ничего не скажу, в них не разбираюсь...
Я когда-то проводил элементарное сравнение (вычисление интеграла), наслушавшись таких программеров, но значимой разницы не обнаружил (С был слегка быстрее ). А уж насчет точности... Это, скорее, вопрос реализации алгоритма, а не конкретного языка.
Мы используем C++ для численного моделирования и ничуть об этом не жалем
Полность согласен с achp
Автор: achp
Дата: 23.08.02
Думай, прежде чем родиться в этой сказочной стране!
(с) Антон Духовской
Re[2]: Fortran vs C
От: achp  
Дата: 13.01.04 11:09
Оценка:
Здравствуйте, Комаров Иван, Вы писали:

КИ>Полность согласен с achp
Автор: achp
Дата: 23.08.02


Я не пью .
Да здравствует ИМХО!
Re: Fortran vs C
От: podrt  
Дата: 13.01.04 12:27
Оценка: 2 (1)
Здравствуйте, Ash-2, Вы писали:


Компьютерное Обозрение #49, 16 — 22 декабря 2003

Эффективность компиляторов. Сравнительный тест

Re[3]: [moderator] Fortran vs C
От: Хитрик Денис Россия RSDN
Дата: 13.01.04 12:55
Оценка:
Здравствуйте, Socrat.

Пункт 3 обязательных правил запрещает излишнее цитирование и требует оставлять в ответах только критичные для понимания цитаты.
Обратите на это внимание.
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
[moderator] Fortran vs C
От: Socrat Россия  
Дата: 13.01.04 14:35
Оценка:
Что-то я не понял. Неужели абзац — уже слишком много для цитирования? Или он не относится к задаваемому вопросу?
Re: [moderator] Fortran vs C
От: Хитрик Денис Россия RSDN
Дата: 13.01.04 18:08
Оценка:
Здравствуйте, Socrat, Вы писали:

S>Что-то я не понял. Неужели абзац — уже слишком много для цитирования? Или он не относится к задаваемому вопросу?


Лишние цитаты в этом сообщении были удалены модератором, по-видимому. Поэтому к этому сообщению претензия уже не относится.
Но требование соблюдать правила относится ко всем сообщениям. К сожалению, в своих ответах ты иногда этим пренебрегаешь.
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[2]: Fortran vs C
От: Комаров Иван Россия  
Дата: 14.01.04 09:04
Оценка:
Здравствуйте, podrt, Вы писали:

P>Компьютерное Обозрение #49, 16 — 22 декабря 2003


P>Эффективность компиляторов. Сравнительный тест


Это интересно, спасибо!
Но меня настораживает следующее (цитата из статьи):

Размерность массива, предназначенного для хранения расчетных значений первого теста, выбрана равной 96 x 96. При 4-байтовой длине элементов этот массив займет в оперативной памяти 36 KB, что примерно в 1,8 раза меньше, чем размер кэш-памяти L2 процессора VIA C3 (64 KB), и в 3,6 раза меньше, чем L2-кэш у Celeron Coppermine (128 KB). Такое соотношение и особенности алгоритма обеспечивают благоприятные условия для эффективного использования кэш-памяти в данном тесте.

Хорошо, если приходится работать с такими массивами А если они имеют размерность ~1*10^8(общее число ячеек)? Тогда, пожалуй, в кэш не поместится. И какие будут результаты в этом случае? Учитывая, что скорость обмена с памятью практически одинаковая для всех компиляторов, разница в 30% Intel C++ vc Fortran превратится в нечто совсем мифическое.
Наверное есть класс задач, где все данные удается запихать в кэш, вот только мне с ними работать не приходится.
Потом, реализация алгоритмов не преведена. Вряд ли, конечно, там что-нибудь сделано некорректно, но все же...
Думай, прежде чем родиться в этой сказочной стране!
(с) Антон Духовской
Re[2]: Fortran vs C
От: alexkro  
Дата: 14.01.04 09:17
Оценка:
Здравствуйте, podrt, Вы писали:

P>Здравствуйте, Ash-2, Вы писали:



P>Компьютерное Обозрение #49, 16 — 22 декабря 2003


P>Эффективность компиляторов. Сравнительный тест


Не верю. Тесты проверить нельзя, source code нету. Компьютеры разные. Я не вижу никакой аргументирующей силы в данной статье.
Re[3]: Fortran vs C
От: alexkro  
Дата: 14.01.04 09:32
Оценка:
Здравствуйте, Комаров Иван, Вы писали:

КИ>Хорошо, если приходится работать с такими массивами А если они имеют размерность ~1*10^8(общее число ячеек)? Тогда, пожалуй, в кэш не поместится. И какие будут результаты в этом случае? Учитывая, что скорость обмена с памятью практически одинаковая для всех компиляторов, разница в 30% Intel C++ vc Fortran превратится в нечто совсем мифическое.


Безотносительно к тесту, есть забавный факт, что к памяти можно по разному обращаться. Известно, например, что линейное чтение не является наиболее эффективным и позволяет достичь разве что 40%-50% процентов от максимального throughput'а.
Re: Fortran vs C
От: Alvin  
Дата: 14.01.04 20:22
Оценка: 1 (1)
Здравствуйте, Ash-2, Вы писали:


A2>Один уважаемый программер как-то заявил следующее (давно было, текст примерный):

A2>«… для решения этой задачи использовались численные методы. Было рассмотрено несколько реализаций и выбрана реализация на Fortran’е. Т.к. она была более быстрая и давала более точное решение…».
A2>Вопрос: может ли точность зависть от языка?

Может.
Дело в том, что вообще говоря, в компьютерных вычислениях некоторые правила арифметики выполняются не совсем точно. Например, a*(b+c) не обязательно окажется равным a*b+a*c. Это происходит из-за ошибок округления. Так вот, в стандарте Фортрана этому уделено особое внимание, прописано как должен себя вести компилятор, и как следствие, вычисления чуть точнее...
Re[3]: Fortran vs C
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 19.01.04 13:07
Оценка:
Здравствуйте, Socrat, Вы писали:

LVV>>По поводу точности — от языка не зависит. Просто для фортрана еще с конца 50-х годов нарабатывались библиотеки численных методов. Сейчас это тщательно отлаженные "вылизанные" подпрограммы и их огромное количество. Ни один язык программирования не обладает таким количеством наработок высокого класса именно в численных расчетах.


S>Интересно, а в чем сложность перевести эти библиотеки на другие языки?


Сложность в том, что в то время, когда жил фортран, культуры программирования не существовало.
На фортране писали еще хуже, чем на перле сейчас. Процедуры в !сотни килобайт! не редкость. Goto был самым используемым оператором. Имена переменных сводились к двум-трем буквам.Структур данных не было, использовались массивы.Копипейст это была основная и почти единственная парадигма пррограммирования.
Авторы того кода были чаще всего хрошими инженерами или математиками, но , к сожалению, естественная уыль населения сделала свое черное дело.

Чтобы перевести программу с фортрана например на С++ нужно.

1. Перегнать весь код в один класс с сохранением процедур,имен переменных, !!!!переходов!!!! и комментариев, буде таковые найдутся.
2. Изучить теорию, а лучше описание алгоритма.
3. Переименовать все переменные по-человечески.
4. Разобраться с таким кодом
5. Написать юниттесты на все функции с учетом самых редких, вырожденных случаев.
6. Теперь можно написать несколько врапперов или произвести рефакторинг кода, на кажом этапе тестируя, тестируя и еще много раз тестируя.

Если выбираете рефакторинг, то нужно найти несколько человекомесяцев в пересчете на мегабайт кода.
Это дорого ! Но зате есть плюс — если алгоритм уникальный, то моджно быть уверенным, что он до сих пор уникальный Чаще всего используют врапперы всякие.

Но даже сейчас MS Visual Fortran рулит. Мне посчастливилось поработать с кодом, где добрый десяток мегабайт кода именно на Фортране. Насколько ме известно, тот проект еще жив !
Re[4]: Fortran vs C
От: oRover Украина  
Дата: 19.01.04 21:43
Оценка: -1
PE>Авторы того кода были чаще всего хрошими инженерами или математиками, но , к сожалению, естественная уыль населения сделала свое черное дело.

PE>1. Перегнать весь код в один класс с сохранением процедур,имен переменных, !!!!переходов!!!! и комментариев, буде таковые найдутся.


надо сделать русско-белорусский словарь на РСДН


Plutonia Experiment:
не в обиду
... << RSDN@Home 1.1.2 stable >>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.