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 ()

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

Хоть я и пишу на фортране, но трудно не согласиться. Так иногда хочется забабахать нормальную рекурсию, ан нет :( И процедуру в качестве результата вернуть.

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

Кстати есть вот такая вот статейка http://www.citforum.ru/programming/digest/hpf/

хотя конечно некоторые выводы автора достаточно смешные, например почему MPI взял и зарулил нафиг HPF ;)

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

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

Мне показалось, что это не будет представлением один-в-один в памяти (как в С/С++), а памятью разбрасываться не было возможности. Серия и так еле-еле умещалась.

> Вообще говоря, профессоров слушать лучше выборочно.

Тот стоял у истоков Рефала, это дезориентировало меня :)

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

(и anonymous'у одним сообщением выше)

Благодарю за ответы. Мне тогда достались две книжки - по Haskell и по ML. Я по каким-то субъективным причинам взялся сперва за Haskell, понял, что дело гиблое, и забросил всю затею, в том числе и ML, а зря.

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

>Как умерли программисты на фортране.

4.2

И не стыдно? :-(

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

>Уравнения в одну строчку перестали разбухать до двух экранов кода, что ли?

А что, все уравнения надо в лоб вычислять? Некоторая перестановка _внутри_ вычислений (внутри суммы, например) даёт ощутимый прирост производительности. Так что её в любом случае придётся расписывать на 5 экранов кода, на любом языке. Компилятор с такой оптимизацией, до повсеместного введения libastral, не справится. Мы говорим об удобстве или о производительности?

/me вспоминает, как ходил вокруг машины (UPS-ов тогда не было), на которой задача считалась месяц.

/me вспоминает, что у "соседей" нормой было 2-3 месяца.

Удачи, с функциями высокого порядка.

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

> /me вспоминает, как ходил вокруг машины (UPS-ов тогда не было), на которой задача считалась месяц.

PROTIP: используй логи и чекпойнты, чюрко.

> Компилятор с такой оптимизацией, до повсеместного введения libastral, не справится.

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

Алсо, как тут пять раз сказали, машинное время дешевле человеческого, даже в Советской России.

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

>/me вспоминает, что у "соседей" нормой было 2-3 месяца.

Ты думаешь что то поменялось в этом плане ? ;)

Вот размеры сетки прибавили по 1-2 порядка в каждом измерении ;)

sS ★★★★★
()

> интерпретатор Fortress, написанный на Java.

Офигеть, интерпретатор, написанный на интерпретаторе. Разработчикам видать никак не даёт покоя всё увеличивающаяся производительность компьютеров. Ужас.

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

> Мне показалось, что это не будет представлением один-в-один в памяти (как в С/С++), а памятью разбрасываться не было возможности. Серия и так еле-еле умещалась.

fdRead? А вообще да, если нет возможности абстрагироваться от железа, то писать, разумеется, надо на С. И к простым языкам Haskell точно не относится, согласен с любителем Ocalm'а.

> Вообще говоря, профессоров слушать лучше выборочно.

>Тот стоял у истоков Рефала, это дезориентировало меня :)
$ apt-cache search refal | wc -l
0

А шо это? >_<

Помню я нашел сурсы какого-то диалекта Refal и они даже компилировались...

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

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

По Ocaml есть документация на оффициальном сайте, но имхо, для начала она туговата и непоследовательна.

Вот хороший туториал: http://www.ocaml-tutorial.org/ - но ему не хватает глубины изложения.

Вот отличная книжка(переведенная с французского): http://caml.inria.fr/pub/docs/oreilly-book/ - это подробный справочник и по нему уже можно нормально учить.

В дополнение к этим есть еще одна халявная книжка: http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf - вроде тоже ничего, но я ее особо не читал.

Есть еще не халявная Apress, Practical Ocaml, 2006 года. Она неплохая для новичков в ФП, но не все аспекты языка изложены идиоматически. Ее можно найти в торрентах.

Для меня оптимальным получилось использование ocaml-tutorial + oreily book. Ну и понятно документация по стандартным библиотекам.

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

>> интерпретатор Fortress, написанный на Java.

> Офигеть, интерпретатор, написанный на интерпретаторе. Разработчикам видать никак не даёт покоя всё увеличивающаяся производительность компьютеров. Ужас.

Учи слова "прототип", "proof of concept" и "JIT-компиляция", птушник.

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

А ты не ужасайся, ты посмотри на SISC - вполне себе ничего для интерпретатора производительность.

HINT: Java - НЕ ИНТЕРПРЕТАТОР. Кто думает иначе - тот кретин.

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

VBA, не VBA, а вот VB.NET - вполне себе современный функциональный язык программирования (вижу летящие помидоры, ныкаюсь в бункер).

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

> Есть - математика.

А еще есть химия и физика ;)

hint: Посмотри чем загружены фигуранты из top500

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

"И вообще, вроде как его уже лет 10 не преподают?"-ох, если бы. В НГУ на кафедре ФТИ оно есть. Мучались всей группой. Хорошо, что только один семестр.

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

Итересно, а что о Фортране можно преподавать? После C/C++, Pascal, bash/awk/sed, scheme и прочих его синтаксис (77, 90) примитивен до убогости, выразительных средств мало -- осваивается за 2 дня. Вместе с построением интерфейса к C.

Правда параллельный код я не писал, может там какая загвоздка есть.

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

>PROTIP: используй логи и чекпойнты, чюрко.

Использовались, не волнуйся.

>Любая оптимизация, доступная человеку, доступна и машине

Это в теории, и случится оно, когда коммунизм настанет по всей земле. А впрочем... ссылку на оптимизацию формул генетическими алгоритмами?

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

Если программу писал человек, больше заинтересованный в собсвенно наличии инструмента, чем в обладании этим инструментом ещё и такого качества как быстрожействие, то профайл может помочь. В противном случае - сомневаюсь. Оставим в стороне неспособность написать программу в принципе.

>машинное время дешевле человеческого

Разумеется. Именно поэтому лучше один раз его потратить и потом _работать_ уже с результатами, чем ожидать, ожидать, ожидать...

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

>Ты думаешь что то поменялось в этом плане ? ;)

Собственно, как раз о размере сетки и думал.

Правда, я с имнно сеточным методом не работал, но это мелочи.

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

Неважно за сколько ты выучил тот или иной язык, важно как ты умеешь им пользоваться. У нас за всё время был только один аспирант который смог написать на фортране (фактически с нуля) код достаточный для защиты кандидатской. А уж сколько прошло через нас людей которые "знают 5 языков и за 2 дня выучат еще один" это уму не растяжимо. Правда написать на этих 5-и языках собственный вычислительный код никому из них не удалось. В лучшем случае пользуются либо тем, что старшие товарищи наработали за многие годы, либо готовыми пакетами. На вторых смотреть больно ;) Они с удивлением обнаруживают что даже готовыми пакетами нужно уметь пользоваться. Те-же кто доходят до защиты получают на защите по полной ;) У меня мой шеф таких на их защите - "любит нежно в разнообразных позах" ;)

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

>А впрочем... ссылку на оптимизацию формул генетическими алгоритмами?

Трекин А.Г. Построение расписаний при совместном проектировании аппаратных и программных средств неоднородных ВС с помощью генетических алгоритмов // Труды Международной конференции "Параллельные вычисления и задачи управления" (РАСО'2001). Москва, 2-4 октября 2001 г. Институт проблем управления им. В.А.Трапезникова РАН. -М. Институт проблем управления им. В.А.Трапезникова РАН, 2001, с.206-213

http://zigzag.lvk.cs.msu.su/xaraya/index.php?module=uploads&func=download...

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

>А чего, сейчас, для защиты диссера достаточно написать прогу на фортране?

Почему _достаточно_ ?

Это процента 3% всей работы ;)

>А где же здесь научная новизна?

PS: Кандитатский дисер это _квалификационная_ работа (в отличае от докторской)

фортран это ведь всего-навсего _инструмент_ для разработки _инструмента_ которым ты будешь решать какую то часть своей задачи...

Народ обычно даже не интересует на чём он написан, интересно насколько адекватно он работает.

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

>Кандитатский дисер это _квалификационная_ работа (в отличае от докторской)

Как же так, дорогая редакция?

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

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

(с) По материалам ВАК.

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

Одно другому не противоречит ;)

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

> А впрочем... ссылку на оптимизацию формул генетическими алгоритмами?

Тю... Человек разве генетическими алгоритмами оптимизирует у себя в головёшке? Он пользуется правилами и стратегиями. Так что любая CAS может делать то же самое, и как правило лучше чем живой человечек.

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

> правилами и стратегиями. Так что любая CAS может делать то же самое, и как правило лучше чем живой человечек.

Если с правилами у современных CAS туда-сюда, то в области стратегий человек пока далеко впереди. Там главная стратегия все правила подряд применять...

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

to dark_mikhail and sS

> используй логи и чекпойнты

А вот что делать, если контрольная точка записывается дольше, чем идут вычисления?

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

> Неважно за сколько ты выучил тот или иной язык, важно как ты умеешь им пользоваться. У нас за всё время был только один аспирант который смог написать на фортране (фактически с нуля) код достаточный для защиты кандидатской. А уж сколько прошло через нас людей которые "знают 5 языков и за 2 дня выучат еще один" это уму не растяжимо. Правда написать на этих 5-и языках собственный вычислительный код никому из них не удалось. В лучшем случае пользуются либо тем, что старшие товарищи наработали за многие годы, либо готовыми пакетами. На вторых смотреть больно ;) Они с удивлением обнаруживают что даже готовыми пакетами нужно уметь пользоваться. Те-же кто доходят до защиты получают на защите по полной ;) У меня мой шеф таких на их защите - "любит нежно в разнообразных позах" ;)

Да я не понтуюсь, поймите правильно. Я лишь о том, что синтаксис Фортрана весьма убог, а выразительные средства -- скудны. Я считаю, что трудности написания и сопровождения кода на Фортране именно с этим и связаны: нужно городить очень большой огород, чтобы выразить относительно простой математический результат. Используя чужую аналогию скажу, что большая программа на Фортране -- это как мост из бутылочных пробок: гениально, но совершенно непрактично.

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

> Я лишь о том, что синтаксис Фортрана весьма убог, а выразительные средства -- скудны.

Вы, конечно, помните основное назначение языка Fortran и говорите про его убогость и невыразительность именно относительно методов описания вычислительных алгоритмов (именно этого, а не математических методов, как ошибочно на мой взгляд понимает назначение Fortran dark_mikhail).

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

> HINT: Java - НЕ ИНТЕРПРЕТАТОР. Кто думает иначе - тот кретин.

Да, она компилируемый язык. Но в байт-код, который выполняется в _интерпретаторе_ байт-кода (ака java-машина, jvm)!

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

> Вы, конечно, помните основное назначение языка Fortran и говорите про его убогость и невыразительность именно относительно методов описания вычислительных алгоритмов (именно этого, а не математических методов, как ошибочно на мой взгляд понимает назначение Fortran dark_mikhail).

Я не знаю ничего о философских задумках, принятых во внимание при создании Фортрана. Вот список тех удобств, которые я выделил для себя в этом языке: удобная нотация массивов (гораздо удобнее, чем в С), комплексная арифметика, довольно простой синтаксис. Но недостатков гораздо больше (касается 77, в 90 кое-что полечили): передача параметров по ссылке, что не дает возможность использовать рекурсию, невозможность передачи процедур как аргументов, невозможность вернуть функцию как результат, отсутстсвие вменяемого способа создания своих структур данных (common-блоки -- это сипец какой-то).

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

Помнится, в свое время я видел книжку типа "Ошибки-ловущки при программировании на фортране" и просто офигел сколько там было этих самых "ловушек".

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

> Помнится, в свое время я видел книжку типа "Ошибки-ловущки при программировании на фортране" и просто офигел сколько там было этих самых "ловушек".

Первая и самая большая ловушка лечится implicit none, после чего Фортран становится обычным ЯП.

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

>А вот что делать, если контрольная точка записывается дольше, чем идут вычисления?

Писать их _распределённо_ потому как _такое_ возможно только при централизованной записи с огромного числа воркеров в одно хранилище, хотя всё зависит от архитектуры. На diskless нодах по любому придйтся писать в централизованное хранилище.

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

Я не считаю себя большим специалистом Fortran, хотя видел эквилибристов, творящих чудеса. Вообще, наверное мало смысла в окрытии флейма типа

-- А Fortran беден, в нём сложно использовать рекурсию

-- А рекурсия не нужна для описания вычислительного алгоритма

Я знаю что вопрос использования/отсутсвия рекурсии является божественно-священным на этом форуме.

Как я себе понимаю философский смысл Fortran - облегчение написания высокоэффективных вычислительных программ без скатывания в ассемблер. В этом свете передача параметров по ссылке - это хорошо. Возможность передачи функций как параметров была даже в FORTRAN66. Вообще возврат функции как результат - сомнительное требование, вряд ли увеличивающее эффективность исполнения программы. Common-блок - замечательное средство разделения одних и тех же участков памяти для различных типов данных, предназначенное, прежде всего, для повышения эффективности работы с памятью. Одним из способов повышения эффективности работы программы является удаление всех возможных пользовательских структур данных и приведение данных в нужные COMMON блоки c правильным выравниванием. Цитируемые Вами недостатки - продуманные средства повышения эффективности. Удобство же вообще должно быть на пятнадцатом месте, когда речь идёт о Fortran.

Почему-то современные студенты (это не к Вам) полагают, что Fortran должен обеспечивать быстрое и удобное написание программ. Нет, не должен.

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

Я кстати именно из за этих минусов фортрана слез с него на плюсы и це (как и почти весь наш отдел), было это правда во времена еще F77 (конец 80-х). С тех пор в нём произошло много изменений. Сылку на спеку по F'03 я приводил. Но обратно на него всё равно не перелезу хотя с пониманием отношусь к коллегам что его используют.

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

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

извращённая форма union ;) как же ... пользовали ;)

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

>>А вот что делать, если контрольная точка записывается дольше, чем идут вычисления?

>Писать их _распределённо_ потому как _такое_ возможно только при централизованной записи с огромного числа воркеров в одно хранилище, хотя всё зависит от архитектуры. На diskless нодах по любому придйтся писать в централизованное хранилище.

Странно это слышать мне от Вас - вроде уже несколько раз обсуждали. В современном супере один IO node приходится на несколько (типично 64-128 compute nodes). И вот 512 IO nodes, собрав данные со "своих" 512G ринулись записать один 26T файл. При современных скоростях распределённых файловых систем в 200MB/s, я ожидаю увидеть результат через 360000 s, ну или через 373 часа. Сможете загрузить вычислениями 64K CPUs на, скажем, 600 часов?

p.s. Хорошо, современные скорости подходят к 500MB/s. Это принципиально?

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

> извращённая форма union ;)

единственно возможная форма union(!), поскольку гарантирует alignment и не требует padding, которые полностью разрушают конвейер ;)

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

> Да, она компилируемый язык. Но в байт-код, который выполняется в _интерпретаторе_ байт-кода (ака java-машина, jvm)!

Господин ламер, байткоды JVM КОМПИЛИРУЮТСЯ в нейтив JIT-компилятором. Съешьте, пожалуйста, ещё этих мягких французских булочек с йадом.

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

> Я кстати именно из за этих минусов фортрана слез с него на плюсы и це

У нас в своё время говорили "хороший программист на Fortran пишит на Fortran на любом языке."

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

>Странно это слышать мне от Вас - вроде уже несколько раз обсуждали.

Значит менять архитектуру ;) Боттлнек то очевиден ;)

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

> У нас в своё время говорили "хороший программист на Fortran пишит на Fortran на любом языке."

Типа того ;)

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

>>Странно это слышать мне от Вас - вроде уже несколько раз обсуждали.

>Значит менять архитектуру ;) Боттлнек то очевиден ;)

Меня в детстве учили: если дорого хранить, то иногда дешевле пересчитать ;)

Архитектуру менять -- вообще ничего не посчитаешь. Сохранять меньше надо!

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