HOME

TheInfoList



OR:

Fortress is a discontinued experimental
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
for
high-performance computing High-performance computing (HPC) is the use of supercomputers and computer clusters to solve advanced computation problems. Overview HPC integrates systems administration (including network and security knowledge) and parallel programming into ...
, created by
Sun Microsystems Sun Microsystems, Inc., often known as Sun for short, was an American technology company that existed from 1982 to 2010 which developed and sold computers, computer components, software, and information technology services. Sun contributed sig ...
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 Adva ...
's High Productivity Computing Systems project. One of the language designers was Guy L. Steele Jr., whose previous work includes Scheme,
Common Lisp Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
, and
Java Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
.


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 Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
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 (constituenc ...
similar to
mathematical notation Mathematical notation consists of using glossary of mathematical symbols, symbols for representing operation (mathematics), operations, unspecified numbers, relation (mathematics), relations, and any other mathematical objects and assembling ...
. The language was not designed to be similar to Fortran. Syntactically, it most resembles Scala,
Standard ML Standard ML (SML) is a General-purpose programming language, general-purpose, High-level programming language, high-level, Modular programming, modular, Functional programming, functional programming language with compile-time type checking and t ...
, 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 pioneered several programming language ...
. Fortress was designed from the outset to have multiple syntactic stylesheets. Source code can be rendered as
ASCII ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
text, in
Unicode Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
, 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 Latex is an emulsion (stable dispersion) of polymer microparticles in water. Latices are found in nature, but synthetic latices are common as well. In nature, latex is found as a wikt:milky, milky fluid, which is present in 10% of all floweri ...
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, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
and
mathematics Mathematics is a field of study that discovers and organizes methods, Mathematical theory, theories and theorems that are developed and Mathematical proof, proved for the needs of empirical sciences and mathematics itself. There are many ar ...
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 Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algo ...
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 (from , a diminutive of ''cappa'', meaning "little cape") is a Christianity, Christian place of prayer and worship that is usually relatively small. The term has several meanings. First, smaller spaces inside a church that have their o ...
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 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 descr ...
. 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 computer science, 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), in ...
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