HOME

TheInfoList



OR:

Fortress is a discontinued experimental programming language for high-performance computing, created by
Sun Microsystems Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, the ...
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 A scheme is a systematic plan for the implementation of a certain idea. Scheme or schemer may refer to: Arts and entertainment * ''The Scheme'' (TV series), a BBC Scotland documentary series * The Scheme (band), an English pop band * ''The Schem ...
,
Common Lisp Common Lisp (CL) is a dialect of the Lisp programming language, published in ANSI standard document ''ANSI INCITS 226-1994 (S20018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived fro ...
, and Java.


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, Unicode support and concrete
syntax In linguistics, syntax () is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure ( constituency) ...
similar to mathematical notation. The language was not designed to be similar to Fortran. Syntactically, it most resembles Scala,
Standard ML Standard ML (SML) is a general-purpose, modular, functional programming language with compile-time type checking and type inference. It is popular among compiler writers and programming language researchers, as well as in the development of the ...
, 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 Emacs , originally named EMACS (an acronym for "Editor MACroS"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
-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 In computer science, pseudocode is a plain language description of the steps in an algorithm or another system. Pseudocode often uses structural conventions of a normal programming language, but is intended for human reading rather than machine re ...
and analyzed hundreds of computer science and
mathematics Mathematics is an area of knowledge that includes the topics of numbers, formulas and related structures, shapes and the spaces in which they are contained, and quantities and their changes. These topics are represented in modern 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.


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 from
Cray, Inc Cray Inc., a subsidiary of Hewlett Packard Enterprise, is an American supercomputer manufacturer headquartered in Seattle, Washington. It also manufactures systems for data storage and analytics. Several Cray supercomputer systems are listed i ...
. 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 A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes ...
. 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 program, as presented in the ''Fortress Reference Card'':
component hello
export Executable
run() = println(“Hello, World!”)
end
The ''export'' statement makes the program
executable In computing, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instruction (computer science), instructi ...
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 * SISAL


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