Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Fortran > [General] Нужно ли создавать новый стандарт?


Автор: Sartorius 17.5.2007, 14:17
    А нужно ли создавать этот новый стандарт? 

 - Насколько я знаю Microsoft, которая являлась основным популяризатором фортрана в последнее время, отказалась от его поддержки. 
 - Программистов на фортране становиться все меньше. В основном это работники различных НИИ, которых годах в 70-х научили этому языку и теперь переучиваться им конечно не охота.
 - Созданный в 50-х годах язык, страдает низкоуровневостью. Программы на нем структурированы слабо. Абстрагироваться от мелких деталей при работе с этим языком невозможно.
 - В фортране нет ничего такого, чего бы не было в современных языках программирования таких как С++ или С#. 

 Стоит ли поддерживать жизнь в умирающем языке введением новых стандартов?

Жду конструктивной критики  smile 
 

Автор: popovda 17.5.2007, 14:44
Цитата

Насколько я знаю Microsoft, которая являлась основным популяризатором фортрана в последнее время, отказалась от его поддержки. 

Совсем не Microsoft развивает Фортран, она с PowerStation 4 его не развивает. Фортран развивают NAG, Intel, Cray, IBM, Sun, и т.д, и наука. Что касается количества программистов на Ф, то рынок их требует лишь в некоторых областях, правда наукоемких - это матмоделирование и параллельные вычисления, прежде всего. 

Цитата

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


На современном Фортране стандарта не ниже 90 программы отлично структурированы, а в стандарте 95 введены средства ООП, некоторые средства для параллельной обработки данных из HPF (forall, where, чистые (pure) процедуры, векторизация вычислений, секции массивов). В текущем стандарте 2003 введены исключения, 
поддерживаются вызовы C/C++, полностью развиты средства ООП. А, как уже заявлено, в новый стандарт будут включены co-arrays - то есть Фортран однозначно будет отвоевывать нишу высокопроизводительных вычислений на кластерах. 

Цитата

- В фортране нет ничего такого, чего бы не было в современных языках программирования таких как С++ или С#. 


Между прочим в стандарт C++ ANSI/ISO 2009 введена конструкция foreach, которая появилась там не без влияния Фортрана. Кроме того вряд ли найдется хотя бы еще один ЯВУ со столь высокой оптимизацией кода. Новые технологии подстегнули развитие Ф. 

Автор: Artemios 21.5.2007, 14:38
Цитата(Sartorius @  17.5.2007,  15:17 Найти цитируемый пост)
- Программистов на фортране становиться все меньше. В основном это работники различных НИИ, которых годах в 70-х научили этому языку и теперь переучиваться им конечно не охота.
 - Созданный в 50-х годах язык, страдает низкоуровневостью. Программы на нем структурированы слабо. Абстрагироваться от мелких деталей при работе с этим языком невозможно.
 - В фортране нет ничего такого, чего бы не было в современных языках программирования таких как С++ или С#. 

В науке, естественно. В численных расчетах лучше фортрановских библиотек только ассемблерные. Насколько мне известно. Только муторно больно все переписывать на асм ради неиспользования фортрана, и не факт что на выходе будет более эффективный код.
Кстати, неявно теми же библиотеками пользуются и многие не подозревающие об этом пользователи. Например, всем известная MatLab: численные расчеты матричной алгебры крутятся через библиотеку LAPACK (Fortran77).

Автор: Cr@$h 18.1.2009, 20:36
Цитата(popovda @  17.5.2007,  15:44 Найти цитируемый пост)
В фортране нет ничего такого, чего бы не было в современных языках программирования таких как С++ или С#.

Конструктивная критика. В этих языках, на сколько я знаю, нет средств регулярного программирования, таких основных средств функционального программирования, как чистые процедуры и оптимизация через ленивые вычисления, нет ссылок на массивы, а значит автовекторизация затруднена (читать как "затруднена", а как "нет"), всякой полезной мелочи (установки на размер числовых типов в памяти, нет четверной точности). В этих языках, на сколько я это пробовал, когда ещё учился, невозможно написать процедуру перемножения матриц произвольных размеров без использования классов. Из-за указателей вычисления становятся ненадёжными, т.к. компилятор много чего не может проверить, например, независимость участков памяти. Это то, что вспомнил сходу.

Цитата(Artemios @  21.5.2007,  15:38 Найти цитируемый пост)
В численных расчетах лучше фортрановских библиотек только ассемблерные. Насколько мне известно. 

Это не так! Чем на более высоком уровне абстракции пишешь, тем больше возможностей оптимизации компилятором. взять ту же векторизацию скалярного и регулярного кода.

Цитата(Artemios @  21.5.2007,  15:38 Найти цитируемый пост)
Кстати, неявно теми же библиотеками пользуются и многие не подозревающие об этом пользователи. Например, всем известная MatLab: численные расчеты матричной алгебры крутятся через библиотеку LAPACK (Fortran77).

Как интересно? Вы знаете, что Matlab на java написан. Он создан специально, чтобы не учить Fortran и пользоваться библиотеками. Эти библиотеки переписаны под язык М. Их можно даже посмотреть. Лишь компиляция в компилируемые языки и снова позволяет получать высокое быстродействие.


Автор: FCM 2.4.2009, 10:07
Цитата(Sartorius @ 17.5.2007,  14:17)
 - Созданный в 50-х годах язык, страдает низкоуровневостью. Программы на нем структурированы слабо. Абстрагироваться от мелких деталей при работе с этим языком невозможно.
 - В фортране нет ничего такого, чего бы не было в современных языках программирования таких как С++ или С#. 

 Стоит ли поддерживать жизнь в умирающем языке введением новых стандартов?

Жду конструктивной критики  smile

Фортран - высокоуровневый язык. Это как раз C/C++ низкоуровненый язык с ориентацией на системное программирование.
Фортран ориентирован на численные расчеты - там по умолчанию реализовано множество того, что как правило необходимо в численных расчетах. В С/C++ необходимые вещи либо реализуются самостоятельно методами ООП или уже реализованы в независимых библиотеках, что вообще говоря не есть плохо. Например, С++ библиотека Blitz++ реализует многомерные массивы (аж до 11 измерений), сравнимые по функциональности со встроенными массивами Фортрана-90. Авторы данной библиотеки используют достатчно изысканные ооп-методы (метапрограммирование, шаблоны с выражениями, позовляющие реализовывать отложенные вычисления) , чтобы эффективность (производительность вычислений) данных массивов не уступала эффективности встроенных массивов Фортрана-90. По своим тестам они получили даже, что Blitz-массивы производительнее ( я однако воспроизвел пару из них и этого не обнаружил).

Всякие там низкоуровневые детали - это как раз в С/C++, что вообще говоря не есть плохо.
Фортран-90 (и выше) избавляет от них и поэтому популярен в научных кругах, т.к. позволяет например физикам программируя оставаться физиками, а не становиться программистами, что часто случается при программировании на С/С++.

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

Автор: popovda 2.4.2009, 17:14
Кстати, мой приятель, уехавший в Японию, написал, что C/C++ в инженерных конторах не популярен для расчётов. Для простых вещей обычно юзают C#, а вот для параллельных вычислений в основном Fortran, так как C++ и C не настолько удобны для параллелизации, а с автораспараллеливанием всё сложнее. Это мнение японцев. 

Автор: popovda 3.4.2009, 23:51
P.S. Про матлаб немного не так. Там есть два вида библиотек: m-библиотеки, но есть и mex-функции-двойники (*.dll или *.so со специальным интерфейсом взаимодействия с matlab), вот они-то написаны на C/Fortran и они-то как раз и вызываются при компиляции в p-код, поэтому он и выполняется ощутимо быстрее. Причём, пользователь может написать свои mex-функции на любом (но в документации почему-то только C и Fortran) языке.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)