r-aax писал(а):
... фортрановские версии процедур, которые я переписывал на си...
На самом деле сейчас все гораздо проще - есть f2c.
Munin писал(а):
Никто не заставляет вас изучать и использовать целиком C++. Но вы легко можете ограничиться небольшим подмножеством C++, которого с лихвой хватит для ваших задач.
Почему вы так считаете, что язык С++ настолько хорош, что им можно ограничится?!
Вот к примеру я считаю, что у
Fortran-а имеется ряд некоторых преимуществ по сравнению с
C++. Даже более того я вам скажу - имеются некоторые причины более низкой эффективности программ на языке
С++ по сравнению с
Fortran-ом.
Например,
при выполнении операций с массивами для того, чтобы сохранить естественную нотацию, в С++ приходится использовать перегрузку операций, например:
где , , и являются одномерными массивами. Перегруженные операции в С++ всегда выполняются попарно. При вычислении выражения суммы трех векторов создаются, два временных массива и три цикла. В этом случае для больших векторов проигрыш в производительнотси, по сравнению с Фортраном, может быть в раза, а для маленьких векторов - почти на порядок, так как в этом случае преобладают потери на размещение временных объектов. (стр.391, С.Немнюгин, О.Стесик "Современный Фортран").
Munin писал(а):
А вот студентов заставлять учить другой язык вместе с его заскоками (древние обозначения операций, format, фиксированный формат строки) ради того, что и без этого легко делается - излишне.
Вот извините - но снова немогу согласится. К примеру я вот студентом был некудышным и не обладал достаточной
степенью абстрактности мышления - к примеру самостоятельно разрулить язык
C или
C++ я не смог, а на кафедре именно по моей специальности он не преподавался, но тем не менее для меня был понятен язык
Fortran с его
древними обозначениями операций - буквально это был для меня
продвинутый Basic и я его удачно для себя усвоил.
Да и потом, я что главное то хотел сказать - вот к примеру
Mathcad решает методом Рунге-Кутта дифф уравнение довольно-таки легко - там есть пресловутая функция
rkfixed, но вот
Fortran требует написать от автора программы самому эту самую функцию - т.е. по сути весь процесс численного подсчета дифф. уравнения переложить на язык программы - и вы знаете, вот тогда ты наичнаешь чувствовать по настоящему и численные методы, и каким образом они представляют решение - когда именно сам от начала до конца честно пишешь весь алгоритм, не абстрагируя его. Пусть и громоздко, но что же - зато очень многое понимаешь когда пишешь, тренируешь тоже самое внимание свое (попробуй не закрыть скобку в Фортране - и потом ищи её
). Да и таже графика мне более понятна (лично мне) написанная именно на Фортране. Так что же теперь мне как некудышному студенту - не понимающему высокие языки совсем-совсем не программировать? Нет. Я буду. Как могу.
Munin писал(а):
...С таким подходом стоит писать на ассемблере.
Честно говоря я не понял этой вашей фразы - ассемблер еще более замудрен, чем
C и там понять что-либо человеку не имеющего опыта программирования - вообще нереально. Просто набор ключевых слов состоящих из 3-х букв и все - это самое первое впечатление. Похоже на какой-то жуткий ребус (лично для меня).
Самое главное, что я хотел сказать (и не сказал до сих пор) - это то, что сейчас многие языки (и Фортран в том числе) поддерживают подпрограммы на других языках (так называемое смешанное программирование) - зная лексику другого языка пожалуйста легко вызвать подпрограмму в основном тексте языка
Fortran и писать на том же
C++.
Munin писал(а):
Кстати, в вашем примерчике хорошо бы было подсчитывать СКО и фактическую погрешность, для наглядности Монте-Карло.
Прощу прощения - расшифруйте, что есть СКО?
Munin писал(а):
Ну и вообще в смысле подсчёта
через Монте-Карло - больше впечатляет бросание иголки.
Игла Бюффона? Кстати хорошая идея. В свободное время займусь этим вопросом.