LINUX.ORG.RU

Fortress 1.0

 , , ,


0

0

За первоапрельскими шутками прошёл незамеченным выход версии 1.0 языка программирования Fortress - спецификации и экспериментальной реализации.

Язык Fortress разрабатывается компанией Sun Microsystems уже почти три года. Разработка начиналась в рамках инициативы министерства обороны США - программы DARPA HPCS, давшей начало также языкам X10 (IBM) и Chapel (Cray). В 2006 году финансирование из источников DARPA было прекращено, и с 2007 года проект развивается по модели Open Source. "Отцом" Fortress является Guy L. Steele, Jr. - человек, в своё время разработавший язык Scheme.

Fortress позиционируется как язык для высокопроизводительных параллельных вычислений, в некотором роде замена Fortran. Fortress - мультипарадигменный язык, сочетающий в себе черты объектно-ориентированных и функциональных языков, динамически типизированный (с выведением типов), учитывающий специфику параллельных вычислений на уровне семантики языка (автоматическое распараллеливание циклов for и т.п.). Поддерживаются lambda-выражения, замыкания, хвостовая рекурсия. Из инновационных свойств - активное использование Unicode в исходных текстах, за счёт этого - максимальное приближение текста к математической нотации; использование размерностей. По словам авторов, семантически Fortress ближе всего к Java, а синтаксисом больше всего напоминает Scala, Standard ML и Haskell.

Версия 1.0 включает в себя спецификацию и интерпретатор Fortress, написанный на Java. По словам разработчиков, некоторые "killer features" пришлось исключить из спецификации, так как они требуют дальнейшего исследования, но в то же время очень важно, чтобы спецификация и интерпретатор находились в полном соответствии. Интерпретатору сопутствуют также Emacs mode для Fortress и инструмент Fortify для представления исходных текстов в LaTeX.

Сообщение о старте проекта Fortress в 2005 году было встречено на linux.org.ru горячими дискуссиями, и хочется верить, что интерес сообщества к данной разработке только возрос.

Сайт проекта: http://projectfortress.sun.com

>>> Сообщение о выходе Fortress 1.0

anonymous

Проверено: Shaman007 ()

Ответ на: комментарий от anonymous

> Та же Mathematica прекрасно умеет генерить из своих выражений код на Фортране.

В смысле заменить NDSolve[{},,] на NDSolve() ;-}

Она еще звездочки вставляет где надо ;-}

Loh ★★
()
Ответ на: комментарий от sS

> Угу...от выделяемого вами метана задохнуться ;)

Несмотря на некоторую грубость предыдущего оратора, проблема существует - с точки зрения записи математики C(++)/Fortran/Pascal - весьма write-only.

sv75 ★★★★★
()

Давно этим фортресом интересуюсь. Как появится нормальныя быстрая реализация, так фортрану и кранты. А то в области HPC власть захватили старые пердуны, и как 50 лет кодили, в стиле ассемблера PDP-11, так и сейчас продолжают, только могила исправит, лол. Ни occam им не указ, ни хаскелем-камлем не итересуются. Ничего, скоро все побежите фортресс ботать, наперегонки, у сана денег хватит, будьте покойны.

dark_mikhail
()
Ответ на: комментарий от sS

> Бесполезно это объяснять людям которые моложе Фортрана втрое ;)

Объясните тогда мне, что мне делать с собственным фортрановским кодом 20-летней давности... Выбросить жалко -- понять уже не в силах.

Loh ★★
()
Ответ на: комментарий от ero-sennin

> деструктивное изменение значений переменных без > крайней необходимости = анальное слабоумие

А что это за крайняя необходимость, если не секрет.

В интерактивной сессии -- понятно за чем это надо. А, вообще, это бессмысленная ересь.

Loh ★★
()

Кстати, какой самый живой вариант использования Octave c MPI? (Отдельно для OpenMPI и для MPich?)

sv75 ★★★★★
()
Ответ на: комментарий от sS

> Бесполезно это объяснять людям которые моложе Фортрана втрое ;)

Лол, ты так говоришь, как будто ты его старше.

Алсо, у нас уже древность стала показателем качества? Тогда абак в зубы и шуруй, а статьи будешь писать зубилом на скалах, до пальмовых листьев и папируса, чувствую, ты ещё не дорос.

dark_mikhail
()
Ответ на: комментарий от Loh

>Объясните тогда мне, что мне делать с собственным фортрановским кодом 20-летней давности... Выбросить жалко -- понять уже не в силах.

Студентам подарите ;)

Я так со своим сделал 15 лет назад ;)

sS ★★★★★
()
Ответ на: комментарий от Sun-ch

> Устарел фортран, как впрочем С/С++.

Как человек имеющий прямое отношение к HPC заявляю, что для машин класса 100TF примерно половина приложений написана на FORTRAN, вторая половина - на C++. При этом вычислительная часть всегда пишется на FORTRAN, а на C++ - обвязка и ввод/вывод. За годы работы в области ни разу не встречал других подходов (всякие Occam не считаю как нежизнеспособные).

Sun-ch, я понимаю - образ, нужно ему следовать - но здесь Вы не совсем в теме. Fortran-у альтернативы нет и пока не предвидется.

VIT
()
Ответ на: комментарий от dark_mikhail

>Лол, ты так говоришь, как будто ты его старше.

Моложе лет на 10 ;)

>у нас уже древность стала показателем качества?

Почитай последний стандарт (я ссылочку дал)

sS ★★★★★
()
Ответ на: комментарий от sv75

> проблема существует - с точки зрения записи математики C(++)/Fortran/Pascal - весьма write-only.

Проблема не в записи, а общей низкоуровневости и процедурности языка. Запись -- это лишь внешнее проявление.

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

Loh ★★
()
Ответ на: комментарий от dark_mikhail

Дурачок. Дело тут в знании предметной области и математики, а для этого лет 20 надо в этом варится, прежде чем пукнуть не мимо лужи. Что тебе хаскель твой даст когда в бошке ветер?

Sun-ch
()
Ответ на: комментарий от VIT

>примерно половина приложений написана на FORTRAN, вторая половина - на C++.

+1

>Fortran-у альтернативы нет и пока не предвидется.

До ЛОР-овских "революционеров" это не довод ;)

sS ★★★★★
()
Ответ на: комментарий от Loh

> А что это за крайняя необходимость, если не секрет.

Даже в хаскеле зачем-то есть unsafePerformIO. :)

ero-sennin ★★
()
Ответ на: комментарий от VIT

А зачем тогда Sun, IBM новые языки для HPC разрабатывают? Писали бы все на фортране и были счастливы. А делают они это затем что понимают, что уперлись с этим фортраном в такие проблемы с совместимостью, масштабируемостью и т.д что пора его сливать. Конечно не завтра и даже не послезавтра, но уже довольно скоро.

Sun-ch
()
Ответ на: комментарий от Sun-ch

>А делают они это затем что понимают, что уперлись с этим фортраном в такие проблемы с совместимостью и т.д что пора его сливать.

Что за проблемы у них с масштабируемостью (которых нет у других) ?

sS ★★★★★
()
Ответ на: комментарий от sS

Сложно на нем писать, низкоуровневневый язык. Можно написать сложный проект на фортране в несколько миллионов строк и не сойти при этом с ума?

Sun-ch
()
Ответ на: комментарий от sS

> Почитай последний стандарт (я ссылочку дал)

И? Функции высшего порядка там появились, что ли? Уравнения в одну строчку перестали разбухать до двух экранов кода, что ли?

dark_mikhail
()
Ответ на: комментарий от Sun-ch

>Можно написать сложный проект на фортрМожно написать сложный проект на фортране в несколько миллионов строк и не сойти при этом с ума?ане в несколько миллионов строк и не сойти при этом с ума?

Для этого есть тысячи отлаженных библиотек, которые были написаны с 1952 года.

С нуля же писать не сложнее чем на том же Це. Опять же обвязку, как тут верно заметили, пишут на плюсах.

sS ★★★★★
()
Ответ на: комментарий от dark_mikhail

>Показывай фортранокод.

Это не ко мне ;)

sS ★★★★★
()
Ответ на: комментарий от sS

Да я не спорю. Библиотеки есть.
Раньше все ОС писались на ассемблере, после того как написали OS/360, порядка миллиона строк и довели ее до промышленного использования, почему то решили больше этого не делать и начали активные исследования в области высокоуровневых языков.

Sun-ch
()
Ответ на: комментарий от Sun-ch

> А зачем тогда Sun, IBM новые языки для HPC разрабатывают?

А Вы разве не понимаете?

> А делают они это затем что понимают, что уперлись с этим фортраном в такие проблемы с совместимостью, масштабируемостью и т.д что пора его сливать.

А делают они это потому, что хотят расширить круг программистов HPC. Сейчас, впрочем как и раньше, этот круг очень мал. Специалистов нет. Студенты, даже те что имеют доступ к системам, их программировать неспособны. Нет знаний. Нет опыта. Неумеют! Крупные поставщики HPC систем, кстати Sun не из их числа, тогда уж HP, стараются привнести в HPC знакомые для широкого рынка (но абсолютно не нужные в HPC) разкрученные технологии.

Почему Blue Gene имеет только компиляторы Fortran и C++? А других и не будет.

VIT
()
Ответ на: комментарий от Sun-ch

>Похоже, это очень серьезный язык будет, не какой нибудь там ruby, или говнопистончик.

I am reminded of Gregor Kiczales at ILC 2003 [the International Lisp Conference] displaying some AspectJ to a silent crowd, pausing, then plaintively adding, "When I show that to Java programmers they stand up and cheer." -- Kenny Tilton

anonymous
()

Коллеги, ситуация из жизни.

Задача - вычислять сложную статистику на сериях (сотни) цифровых фотографий в формате RAW (кто знаком с устройством RAW, уже вполне может себе представить предстоящие сложности). Решалась на С, что привело к плохо читаемому и плохо управляемому коду (подтверждение свойства write-only), к вынужденному повсеместному использованию #define для параметризации конструкций кода (попытка сгладить отсутствие функциональных свойств у императивного языка). Были попытки поинтересоваться Haskell, начавшиеся и сразу закончившиеся на стадии "загрузить 8-мегабайтный байтовый массив из файла в память". Профессора комментировали: "Ну, молодой человек, функциональные языки и HPC... это, знаете ли..." - и крутили у виска пальцем.

Коллеги, как бы вы вышли из ситуации? Проект кое-как продолжался с использованием C и C++.

anonymous
()
Ответ на: комментарий от anonymous

>Именно. Народу легче написать всё в 10 раз быстрее и ждать результата в 10 раз дольше, чем пахать в 10 раз больше и ждать в 10 раз меньше.

'Есть такая кристаллографическая программа -- FullProf. Какие формулы она использует -- долго объяснять, в гугле ищется на раз. В основном, там идёт оптимизачия МНК нескольких десятков (или сотен) параметров по нескольким тысячам экспериментальных точек. Программа была написана достаточно давно, на фортране-77. На клоне PC/XT с сопроцессором один цикл МНК в программах такого класса занимал до 10-15 минут (для не очень сложных структур). На пентиуме -- с минуту. На новых компьютерах -- секунды.'

Отож.

>Для этого есть тысячи отлаженных библиотек, которые были написаны с 1952 года.

>С нуля же писать не сложнее чем на том же Це. Опять же обвязку, как тут верно заметили, пишут на плюсах.

Кстати, а как эти тысячи отлаженных библиотек, которые были написаны с 1952года, используют новые регистры процессоров поколений C2D? Новые потоковые SIMD инструкции? Неужели для этого нужно всего лишь переписать Intel-Fortran компиляторы?

anonymous
()
Ответ на: комментарий от VIT

А про это я и писал в самом начале, когда сказал, что фортран исключен из учебной программы. Выводы напрашиваются сами собой.

Sun-ch
()
Ответ на: комментарий от dark_mikhail

> \sum_{i=1}^N \int_{A_i}^{B_i} F(a_1, ..., a_N) da_i

Хоть и не мне пост:

V( 1:N ) = A( 1:N ) ** B( 1:N ) * F( a_1, ..., a( 1:N ), ... a_N )

S = H / 3d0 * ( V(1) + 2d0 * SUM( V(3:N-2:2) ) + 4d0 * SUM( V(2:N-1:2) ) + V(N) )

Может Вам и в самом деле подучить Fortran? Шучу, сдаётся мне, Вам это не к чему ...

VIT
()
Ответ на: комментарий от VIT

>Студенты, даже те что имеют доступ к системам, их программировать неспособны. Нет знаний. Нет опыта. Неумеют!

Кстати да. Мне один мой знакомый (преподаёт краткий ликбез по CFD с практикой) в прошлом году жаловался что суденты элементарно не способны писать мало-мальский код ...

sS ★★★★★
()
Ответ на: комментарий от anonymous

> Кстати, а как эти тысячи отлаженных библиотек, которые были написаны с 1952года, используют новые регистры процессоров поколений C2D? Новые потоковые SIMD инструкции?

Элементарно. Переписывается BLAS на ассемблере "с учётом новых регистров и SIMD инструкций". В результате все грамотно написанные тысячи библиотек работают с 80% производительности от пика нового процессора.

VIT
()
Ответ на: комментарий от anonymous

>Кстати, а как эти тысячи отлаженных библиотек, которые были написаны с 1952года, используют новые регистры процессоров поколений C2D? Новые потоковые SIMD инструкции? Неужели для этого нужно всего лишь переписать Intel-Fortran компиляторы?

Разумеется ;) Ну и до кучи их распараллелить с помощью OMP

>На новых компьютерах -- секунды

Хорошие задачи у вас ;)

У меня вот на полутерафлопсе вторую неделю бегает ;)

sS ★★★★★
()
Ответ на: комментарий от sS

> Кстати да. Мне один мой знакомый (преподаёт краткий ликбез по CFD с практикой) в прошлом году жаловался что суденты элементарно не способны писать мало-мальский код ...

К сожелению так было всегда ;). Это лишь говорит о том, что раньше трава была зеленее, а мы - стареем. Тьфу-тьфу.

VIT
()
Ответ на: комментарий от Sun-ch

Ваши выводы никак не связаны с реальностью. Фортран развивается, динамично развивается. Рекомендую сходить по ссылке на J3. По поводу многониточного - HPF, OpenMP && Fortran. А теперь, pасскажите про аналог co-arrays в других языках, например.

Да, и никто не будет переписывать софт разрабатываемый в течении десяток лет с фортрана на "НОВЫЙ СУПЕРМОДНЫЙ ЯЗЫК". Его будут переводить на F95/F2003, что сейчас и наблюдается.

psi
()
Ответ на: комментарий от psi

>Да, и никто не будет переписывать софт разрабатываемый в течении десяток лет с фортрана на "НОВЫЙ СУПЕРМОДНЫЙ ЯЗЫК". Его будут переводить на F95/F2003, что сейчас и наблюдается.

Справедливости ради несовместимости между старым F77 и F95/'03 достаточно много и переписывать придётся тоже немало.

sS ★★★★★
()
Ответ на: комментарий от sS

Я когда был студентом, тоже терпеть не мог фортран. Лисп, кстати, в те далекие годы создавался как замена фортрану в области вычислений, видать уже тогда он многим не нравился :).

Sun-ch
()
Ответ на: комментарий от psi

> Уже есть: libgoto imkl

Я знаю. Могу еще с пяток добавить.

Кстати, раз заметен специалист, сможете вкратце описать разницу между 95 и 2003?

VIT
()
Ответ на: комментарий от VIT

> V( 1:N ) = A( 1:N ) ** B( 1:N ) * F( a_1, ..., a( 1:N ), ... a_N )

> S = H / 3d0 * ( V(1) + 2d0 * SUM( V(3:N-2:2) ) + 4d0 * SUM(V(2:N-1:2) ) + V(N) )

Вы несколько не то написали, лол, я думал, латех все знают.

Но не суть важно. Мы здесь имеем зачем-то промежуточный массив, имеем вместо оператора интеграла какую-то неудобопонятную сумму и т. д. - короче, имеем явное несоответствие уровней абстракции математической нотации и фортрана. Особенно бросается в глаза отсутствие функций высшего порядка, как уже было говорено.

dark_mikhail
()
Ответ на: комментарий от sS

Конечно.Я и не говорю что сразу перепишут. Со временем.

psi
()
Ответ на: комментарий от Sun-ch

>А кто простите, переписывать станет библиотеки из 50 годов? Если им тогда было по 20, то теперь уже за 70?

Дык у нас математике по большей части из конца ХIХ начала XX века А библиотек конца XX до сих пор полным полно (они конечно переписываются но очень лениво)

sS ★★★★★
()
Ответ на: комментарий от anonymous

> Были попытки поинтересоваться Haskell, начавшиеся и сразу закончившиеся на стадии "загрузить 8-мегабайтный байтовый массив из файла в память".

> Коллеги, как бы вы вышли из ситуации?

OCaml?

Уже раньше говорил про это в другом топике. Хаскелл из-за своего пиара притягивает людей, но из-за высокой сложности не дает быстро решить задачу в функциональном стиле. Этот случай - отличная иллюстрация тому. Причем, на окамле с его массивами задача решается без проблем. Притом язык учится быстро и литературы валом.

anonymous
()
Ответ на: комментарий от anonymous

Так OCaml уже давно в числодробильне применяется, даже вроде как недавно книга вышла на эту тему (что есть вполне себе показатель популярности). Только вот, видел я вычислительную математику на OCaml (да и сам писал, грешен) - никаким функциональным программированием там и не пахнет. Код почти чисто императивный получается, а от OCaml-а там нужны в первую очередь синтаксические вкусности - pattern matching, ADT вообще, списки, модули, функторы.

anonymous
()
Ответ на: комментарий от Sun-ch

>Лисп, кстати, в те далекие годы создавался как замена фортрану в области вычислений, видать уже тогда он многим не нравился :).

Ну да, возможно есть такая тема. Когда в федо был флейм на тему goto, то молодое поколение пеп-Си не видело причину его ненавидеть и находило его полезным для выхода из глубоко вложенных конструкций в том случае если дальнейшее выполнение кода не имеет смысла - решение уже найдено или возникла ошибка. Кроме того аутпуты yacc-а содержат goto в обильном количестве. Старые же программеры из конца 70-х несмотря на взрослую мудрость с пеной у рта утверждали, сформулируем это мягко, "goto нельзя использовать никогда и кроме того надо привлечь к уголовной ответственности тех кто его утвердил в ansi c89". Видать, сильно их Фортран протрахал в свое время.

Absurd ★★★
()
Ответ на: комментарий от anonymous

> Были попытки поинтересоваться Haskell, начавшиеся и сразу закончившиеся на стадии "загрузить 8-мегабайтный байтовый массив из файла в память".

Хмм, а что случилось с hGetArray?

> Профессора комментировали: "Ну, молодой человек, функциональные языки и HPC... это, знаете ли..." - и крутили у виска пальцем.

Вообще говоря, профессоров слушать лучше выборочно. А то мы чуть без Linux так не остались. А у нас преподаватель ФП считает все ФЯ давно умершими, например, он VBA любит.

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

> язык учится быстро и литературы валом.

Можно ссылок на литературу? На английском я нашел один учебник и несколько дохлых туториалов, а французским не владею.

tailgunner ★★★★★
()

> Отцом" Fortress является Guy L. Steele, Jr. - человек, в своё время разработавший язык Scheme.

Когда был разработан Scheme, Стил был сопливым студнем :D А самое известное его творение - Ява.

tailgunner ★★★★★
()
Ответ на: комментарий от Sun-ch

> А что ты можешь предложить? Люди, которые умеют писать высокопроизводительные, многопоточные программы на С/С++ и разбираются в предметной области скоро все умрут. Как умерли программисты на фортране.

Не надо пороть чушь, фотран так же используется в науке, как и раньше.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.