Приличная книга по актуальному Фортрану на русском
Приличная книга по актуальному Фортрану на русском
Наконец-то в природе появился первый известный мне сабж на 400 стр.
http://oz.by/books/more1010246.html
Человеческий подход к изложению, следование стандартам языка, сравнительный анализ компиляторов, вынесенный в отдельную главу, пачка нормальных ссылок, структурированных по категориям.
Ну и естественно удобный справочник по функциям.
Плюс на закуску -- описание грядушего вот-вот официально стандарта Фортран-2003
(последний имеющийся -- 95 года).
Читаю и душа моя поет.
Есть конечно мелкие недостатки, но в целом -- достойнейшая вешь.
И главное -- первая на нормальном уровне.
http://oz.by/books/more1010246.html
Человеческий подход к изложению, следование стандартам языка, сравнительный анализ компиляторов, вынесенный в отдельную главу, пачка нормальных ссылок, структурированных по категориям.
Ну и естественно удобный справочник по функциям.
Плюс на закуску -- описание грядушего вот-вот официально стандарта Фортран-2003
(последний имеющийся -- 95 года).
Читаю и душа моя поет.
Есть конечно мелкие недостатки, но в целом -- достойнейшая вешь.
И главное -- первая на нормальном уровне.
I'll kill this code without a knife -- with only fork().
Это не язык системного программирования.
Он оптимизирован под громоздкие наукоемкие вычисления. По сложным формулам.
И в родной области он лучше С, создаввавшегося для более других целей.
Чем именно?
Приходи на линуксовку, притяну книжку, сам почитаешь три страницы ответа.
А то набивать их руками как то глупо. А после пива ничего нового по сравнению с Немнюгиным не скажу все равно.
Впрочем, если вечером будет время, может отпишу чего-нибудь.
Он оптимизирован под громоздкие наукоемкие вычисления. По сложным формулам.
И в родной области он лучше С, создаввавшегося для более других целей.

Чем именно?
Приходи на линуксовку, притяну книжку, сам почитаешь три страницы ответа.

Впрочем, если вечером будет время, может отпишу чего-нибудь.

I'll kill this code without a knife -- with only fork().
Заинтересовал меня этот фортран, решил посмотреть что о нем пишет Себеста. Пишет не много, но мне понравилось вот это:
Алан Перлис, один из разработчиков языка ALGOL 60, в 1978 году сказал: "Язык FORTRAN - это lingua franca (смешанный язык из элементов романских, греческого и восточных языков, служащий для общения в восточном Средиземноморье; также язык с широкой сферой употребления, жаргон. - Прим.перев.) компьютерного мира. Это язык улиц, в лучшем, а не вульгарном смысле этого слова. Он выжил и будет жить, поскольку он был создан для того, чтобы быть замечательно полезной частью жизненно важной коммерческой деятельности"(Wexelblat, 1981).
Алан Перлис, один из разработчиков языка ALGOL 60, в 1978 году сказал: "Язык FORTRAN - это lingua franca (смешанный язык из элементов романских, греческого и восточных языков, служащий для общения в восточном Средиземноморье; также язык с широкой сферой употребления, жаргон. - Прим.перев.) компьютерного мира. Это язык улиц, в лучшем, а не вульгарном смысле этого слова. Он выжил и будет жить, поскольку он был создан для того, чтобы быть замечательно полезной частью жизненно важной коммерческой деятельности"(Wexelblat, 1981).
Ага. А еще первый диалект фортрана создал Бэкус.
Тот самый который совместно с Науром придумал нотацию BNF.
Еще из лирических отступлений (автора не вспомню)
"Через 30 лет язык численных вычислений будет существенно отличаться от того, что мы используем сейчас. Но называться он будет как и сейчас -- Фортраном"
Если серьезно, то ненышние стандарты -- f90, f95 отличаются от классического f77 как небо от земли.
Вполне нормальные и модерновые языки.
Сейчас на трезвую голову скажу пару слов о преимуществах.
Тот самый который совместно с Науром придумал нотацию BNF.

Еще из лирических отступлений (автора не вспомню)
"Через 30 лет язык численных вычислений будет существенно отличаться от того, что мы используем сейчас. Но называться он будет как и сейчас -- Фортраном"

Если серьезно, то ненышние стандарты -- f90, f95 отличаются от классического f77 как небо от земли.
Вполне нормальные и модерновые языки.
Сейчас на трезвую голову скажу пару слов о преимуществах.
I'll kill this code without a knife -- with only fork().
Область в которой фортран имеет преимущество -- одна. Я ее называл, для того он и создавался.
Короткое интро:
Базовых типов данных всего 5. Integer, real, сomplex, сharacter, logical.
Для каждого типа может регулироваться занимаемый им обьем памяти. Это параметер kind.
Т.е. можно гибко управлять расходом памяти следующим путем:
REAL (KIND=16): X
REAL (KIND=2): Y
и т.п.
Кроме того, фортран поддерживает многомерные массивы (до 7 измерений).
Сложить и перемножить семимерные комплексные тензоры A и B можно простейшим путем: С=А+B.
Границы индексов массивов не привязаны жестко к нижней границе - нулю, в отличие от С и могут быть выставлены так как удобно пользователю.
Вышесказанное дает первый практический плюс: программа на Фортране более похожа на свой формульный прототип, на математическую модель. Т.е. анализировать и изменять ее гораздо удобнее. Но это цветочки.
С массивами можно делать массу увлекательных вещей: повышать размерность, делать сечения, вырезки и выборки по логической маске.
Все за счет родных функций языка.
Таким образом, имеем две основные фмшки, играющие очень существенную роль:
-родная поддержка комплексных чисел и операций над ними
-родная поддержка многомерных массивов и операций над ними
Да, гипотетически все это может быть реализовано на любом нормальном языке. Например на С. Но при этом потребуется бешеное количество перегрузок операторов и стандартных алгебраических функций.
И тут, если верить Немнюгину, а я ему верю, универсальные языки начинают проигрывать. В производительности. Что весьма существенно для крупных расчетов.
Короткое интро:
Базовых типов данных всего 5. Integer, real, сomplex, сharacter, logical.
Для каждого типа может регулироваться занимаемый им обьем памяти. Это параметер kind.
Т.е. можно гибко управлять расходом памяти следующим путем:
REAL (KIND=16): X
REAL (KIND=2): Y
и т.п.
Кроме того, фортран поддерживает многомерные массивы (до 7 измерений).
Сложить и перемножить семимерные комплексные тензоры A и B можно простейшим путем: С=А+B.

Границы индексов массивов не привязаны жестко к нижней границе - нулю, в отличие от С и могут быть выставлены так как удобно пользователю.
Вышесказанное дает первый практический плюс: программа на Фортране более похожа на свой формульный прототип, на математическую модель. Т.е. анализировать и изменять ее гораздо удобнее. Но это цветочки.
С массивами можно делать массу увлекательных вещей: повышать размерность, делать сечения, вырезки и выборки по логической маске.
Все за счет родных функций языка.
Таким образом, имеем две основные фмшки, играющие очень существенную роль:
-родная поддержка комплексных чисел и операций над ними
-родная поддержка многомерных массивов и операций над ними
Да, гипотетически все это может быть реализовано на любом нормальном языке. Например на С. Но при этом потребуется бешеное количество перегрузок операторов и стандартных алгебраических функций.
И тут, если верить Немнюгину, а я ему верю, универсальные языки начинают проигрывать. В производительности. Что весьма существенно для крупных расчетов.
Последний раз редактировалось sanitar 10 мар 2004, 02:35, всего редактировалось 1 раз.
I'll kill this code without a knife -- with only fork().
Еще один нюанс -- существует огромная база фортранных библиотек численных методов, наработанная с начала 60-х.
Переделывать ее с нуля под языки появившиеся в начале 80-х -- изобретение велосипеда.
Стандарты же фортрана сохраняют обратную совместимость с фортран-66 и фортран-77.
Т.е. заюзать численные библиотеки написанные еще до моего рождения можно без проблем и плясок с бубном. Весьма удобно, экономит массу времени.
Переделывать ее с нуля под языки появившиеся в начале 80-х -- изобретение велосипеда.
Стандарты же фортрана сохраняют обратную совместимость с фортран-66 и фортран-77.
Т.е. заюзать численные библиотеки написанные еще до моего рождения можно без проблем и плясок с бубном. Весьма удобно, экономит массу времени.
I'll kill this code without a knife -- with only fork().
Ну и последнее из пришедшего в голову сходу
fortran -- стандарт де-факто для научных расчетов на кластерах и прочих супермегашкафах.
В РБ это конечно не очень актуально.
А вот в России и Европе и т.д. все нормальные научные учреждения имеют по большому жужжащему шкафчику для крупного моделирования.
fortran -- стандарт де-факто для научных расчетов на кластерах и прочих супермегашкафах.

В РБ это конечно не очень актуально.
А вот в России и Европе и т.д. все нормальные научные учреждения имеют по большому жужжащему шкафчику для крупного моделирования.
I'll kill this code without a knife -- with only fork().
Итого краткое резюме:
1) читабельные программы, в которых легко опознаются следы математической модели
2) родные функции для работы с необходимыми для научных расчетов структурами данных
3) гибкий контроль точности вычмслений
4) более высокая производительность по сравнению с С и С++ при работе с данными по пункту 2.
5) совместимость с предыдущими стандартами => возможность использования гигантского обьема численных библиотек.
6) прозрачный перенос на системы параллельных вычислений
1) читабельные программы, в которых легко опознаются следы математической модели

2) родные функции для работы с необходимыми для научных расчетов структурами данных
3) гибкий контроль точности вычмслений
4) более высокая производительность по сравнению с С и С++ при работе с данными по пункту 2.
5) совместимость с предыдущими стандартами => возможность использования гигантского обьема численных библиотек.
6) прозрачный перенос на системы параллельных вычислений
I'll kill this code without a knife -- with only fork().
к моему величайшему сожалению, g95 до сих пор еще находится в пред-альфа стадии.
Полностью свободных в понимании GNU компайлеров пока не знаю.
Но есть пачка просто доступных, относительно свободных.
В частности, я юзаю intel fortran compiler --- ядро закрытое, часть либов можно распространять и копаться в исходниках.
Скачивать и пользовать можно бесплатно в исследовательских целях.
Есть еще компилятор языка F -- фактически тот же самый f90, за некоторыми мелкими нюансами.
Кроме того Watcom перешел на open source, но подробностей не знаю...
на www.fortran.com можно отыскать списки компиляторов и сопутствующих утилит, в т.ч. для линукса, в т.ч. относительно свободных.
Хотя конечно религиозная чистота -- слабое место компиляторов ф90.
Авось когда нибудь g95 да будет выпушен
Полностью свободных в понимании GNU компайлеров пока не знаю.
Но есть пачка просто доступных, относительно свободных.
В частности, я юзаю intel fortran compiler --- ядро закрытое, часть либов можно распространять и копаться в исходниках.
Скачивать и пользовать можно бесплатно в исследовательских целях.
Есть еще компилятор языка F -- фактически тот же самый f90, за некоторыми мелкими нюансами.
Кроме того Watcom перешел на open source, но подробностей не знаю...
на www.fortran.com можно отыскать списки компиляторов и сопутствующих утилит, в т.ч. для линукса, в т.ч. относительно свободных.
Хотя конечно религиозная чистота -- слабое место компиляторов ф90.

Авось когда нибудь g95 да будет выпушен

I'll kill this code without a knife -- with only fork().