Фортресс: Экспериментальный язык для высокопроизводительных вычислений
Fortress (programming language)
Fortress: экспериментальный язык программирования Sun для высокопроизводительных вычислений. Параллелизм, Unicode, безопасный Fortran. Разработан с DARPA.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Fortress — это прекращенный экспериментальный язык программирования, разработанный Sun Microsystems для высокопроизводительных вычислений при финансировании проекта DARPA High Productivity Computing Systems. Одним из создателей языка был Гай Л. Стил-младший, ранее работавший над Scheme, Common Lisp и Java.
Fortress is a discontinued experimental programming language for high performance computing, created by Sun Microsystems with funding from DARPA's High Productivity Computing Systems project. One of the language designers was Guy L. Steele Jr., whose previous work includes Scheme, Common Lisp, and Java.
Дизайн
Название "Fortress" было задумано как обозначение безопасного Fortran, то есть "языка для высокопроизводительных вычислений, обеспечивающего абстракцию и типобезопасность на уровне современных принципов программирования". Особенности языка включали неявный параллелизм, поддержку Unicode и конкретный синтаксис, близкий к математической нотации. Язык не разрабатывался как похожий на Fortran. Синтаксически он наиболее близок к Scala, Standard ML и Haskell. Fortress изначально проектировался с возможностью использования нескольких стилей синтаксиса. Исходный код можно представить в виде текста ASCII, в Unicode или в виде отформатированного изображения. Это позволяло поддерживать математические и другие символы в отображаемом выводе для облегчения чтения. Инструмент fortify, основанный на Emacs, преобразует исходный код Fortress, основанный на ASCII, в выходной формат LaTeX. Fortress также был разработан для обеспечения высокой степени параллелизма и богатой функциональности, реализованной в библиотеках, с использованием опыта Java. Например, конструкция цикла for была параллельной операцией, которая не обязательно выполнялась строго линейно, в зависимости от базовой реализации. Однако конструкция for являлась функцией библиотеки и могла быть заменена другой версией по желанию программиста, а не встроена в сам язык. Разработчики Fortress стремились сделать его синтаксис максимально приближенным к псевдокоду и проанализировали сотни научных работ, учебных курсов, книг и журналов по информатике и математике, использующих псевдокод, чтобы выявить общие закономерности использования английского языка и стандартной математической нотации при представлении алгоритмов в псевдокоде. Затем они разработали компилятор, стремясь обеспечить соответствие один к одному между псевдокодом и исполняемым кодом Fortress.
The name "Fortress" was intended to connote a secure Fortran, i. e., "a language for high performance computation that provides abstraction and type safety on par with modern programming language principles". Language features included implicit parallelism, Unicode support and concrete syntax similar to mathematical notation. The language was not designed to be similar to Fortran. Syntactically, it most resembles Scala, Standard ML, and Haskell. Fortress was designed from the outset to have multiple syntactic stylesheets. Source code can be rendered as ASCII text, in Unicode, or as a prettied image. This would allow for support of mathematical symbols and other symbols in the rendered output for easier reading. An emacs based tool called fortify transforms ASCII based Fortress source code into LaTeX output. Fortress was also designed to be both highly parallel and have rich functionality contained within libraries, drawing from Java. For example, the for loop construct was a parallel operation, which would not necessarily iterate in a strictly linear manner, depending on the underlying implementation. However, the for construct was a library function and could be replaced by another version of the programmer's liking rather than being built into the language. Fortress' designers made its syntax as close as possible to pseudocode and analyzed hundreds of computer science and mathematics papers, courses, books and journals using pseudocode to extract the common usage patterns of the English language and standard mathematical notation when used to represent algorithms in pseudocode. Then they made the compiler trying to maintain a one to one correspondence between pseudocode and executable Fortress.
История
Fortress был одним из трех языков программирования, созданных при финансировании проекта High Productivity Computing Systems; другими были X10, разработанный IBM, и Chapel от Cray, Inc. В ноябре 2006 года, когда DARPA одобрило финансирование третьей фазы проекта HPCS, финансирование получили X10 и Chapel, но не Fortress, что вызвало неопределенность в отношении будущего Fortress. В январе 2007 года Fortress был выпущен под открытой лицензией. Версия 1.0 спецификации языка Fortress была опубликована в апреле 2008 года вместе с реализацией, соответствующей спецификации и ориентированной на виртуальную машину Java. В июле 2012 года Стил объявил о прекращении активной разработки Fortress после непродолжительного периода завершения работ, объяснив это сложностями, возникшими при использовании системы типов Fortress на существующих виртуальных машинах.
Fortress was one of three languages created with funding from the High Productivity Computing Systems project; the others were X10 from IBM and Chapel from Cray, Inc. In November 2006, when DARPA approved funding for the third phase of the HPCS project, X10 and Chapel were funded, but Fortress was not, leading to uncertainty about the future of Fortress. In January 2007, Fortress was released as open source. Version 1.0 of the Fortress Language Specification was released in April 2008, along with a compliant implementation targeting the Java Virtual Machine. In July 2012, Steele announced that active development on Fortress would cease after a brief winding down period, citing complications with using Fortress's type system on existing virtual machines.