HOME

TheInfoList



OR:

Fortress is a discontinued experimental
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
for
high-performance computing High-performance computing (HPC) uses supercomputers and computer clusters to solve advanced computation problems. Overview HPC integrates systems administration (including network and security knowledge) and parallel programming into a mult ...
, created by Sun Microsystems with funding from
DARPA The Defense Advanced Research Projects Agency (DARPA) is a research and development agency of the United States Department of Defense responsible for the development of emerging technologies for use by the military. Originally known as the Ad ...
's High Productivity Computing Systems project. One of the language designers was
Guy L. Steele Jr. Guy Lewis Steele Jr. (; born October 2, 1954) is an American computer scientist who has played an important role in designing and documenting several computer programming languages and technical standards. Biography Steele was born in Missouri ...
, whose previous work includes Scheme, Common Lisp, and
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
.


Design

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 In computer science, implicit parallelism is a characteristic of a programming language that allows a compiler or interpreter to automatically exploit the parallelism inherent to the computations expressed by some of the language's constructs. A ...
,
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, wh ...
support and concrete syntax similar to
mathematical notation Mathematical notation consists of using symbols for representing operations, unspecified numbers, relations and any other mathematical objects, and assembling them into expressions and formulas. Mathematical notation is widely used in mathem ...
. The language was not designed to be similar to Fortran. Syntactically, it most resembles Scala, Standard ML, and
Haskell Haskell () is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research and industrial applications, Haskell has pioneered a number of programming lan ...
. Fortress was designed from the outset to have multiple syntactic stylesheets. Source code can be rendered as
ASCII ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because ...
text, in
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, wh ...
, 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 Latex is an emulsion (stable dispersion) of polymer microparticles in water. Latexes are found in nature, but synthetic latexes are common as well. In nature, latex is found as a milky fluid found in 10% of all flowering plants (angiosperms ...
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 Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includi ...
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
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
s in pseudocode. Then they made the compiler trying to maintain a one-to-one correspondence between pseudocode and executable Fortress.


History

Fortress was one of three languages created with funding from the High Productivity Computing Systems project; the others were X10 from IBM and
Chapel A chapel is a Christian place of prayer and worship that is usually relatively small. The term has several meanings. Firstly, smaller spaces inside a church that have their own altar are often called chapels; the Lady chapel is a common ty ...
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.


Example: Hello world!

This is the Fortress version of the archetypal
hello world ''Hello'' is a salutation or greeting in the English language. It is first attested in writing from 1826. Early uses ''Hello'', with that spelling, was used in publications in the U.S. as early as the 18 October 1826 edition of the '' Norwich ...
program, as presented in the ''Fortress Reference Card'':
component hello
export Executable
run() = println(“Hello, World!”)
end
The ''export'' statement makes the program executable and every executable program in Fortress must implement the ''run()'' function. The file where the program is saved for compilation must have the same name as the one specified in the initial ''component'' statement. The ''println()'' function is what outputs the "Hello, World!" words on the screen.


See also

*
Partitioned global address space In computer science, partitioned global address space (PGAS) is a parallel programming model paradigm. PGAS is typified by communication operations involving a global memory address space abstraction that is logically partitioned, where a portio ...
*
SISAL Sisal (, ) (''Agave sisalana'') is a species of flowering plant native to southern Mexico, but widely cultivated and naturalized in many other countries. It yields a stiff fibre used in making rope and various other products. The term sisal may ...


References


External links


Project Fortress website

Active Timeline of Specification and Reference Implementation

The Fortress Language Specification (Latest version is 1.0, March 31, 2008)

The Soul of Fortress - Interview with Fortress developer Guy Steele

Fortress Open Source Project Home (BSD License)

Sun's Programming Language Research Group

Fortress Publications and Specifications

Fortress Plugin For Eclipse (alpha)



Fortress Tutorial Slides

Fortress Mailing Lists

Lambda the Ultimate article


(CNET News.com, January 12, 2007)
Fortress presentation

Parallel By Default -- An Annotated Fortress Overview presentation
{{DEFAULTSORT:Fortress (Programming Language) Array programming languages Concurrent programming languages Discontinued programming languages Fortran programming language family JVM programming languages Numerical programming languages Programming languages supporting units of measure Programming languages created in 2006 Software using the BSD license