Fortress (programming language)

Last updated
Fortress
Developer Sun Labs
First appeared2006
Final release
1.0_5033 / September 7, 2011;10 years ago (2011-09-07)
Typing discipline Static
Platform Java SE 1.6+
OS Cross-platform
License BSD
Website github.com/stokito/fortress-lang
Influenced by
Fortran, Scala, Haskell

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.

Contents

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". [1] 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. [2]

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. [3] [ better source needed ]

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. In November 2006, when DARPA approved funding for the third phase of the HPCS project, X10 and Chapel were funded, but Fortress was not, [4] leading to uncertainty about the future of Fortress.

In January 2007, Fortress was released as open-source. [5] 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. [6]

Example: Hello world!

This is the Fortress version of the archetypal hello world program, as presented in the Fortress Reference Card: [2]

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

Related Research Articles

In computing, a compiler is a computer program that translates computer code written in one programming language into another language. The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language to create an executable program.

A "Hello, World!" program generally is a computer program that outputs or displays the message "Hello, World!". Such a program is very simple in most programming languages, and is often used to illustrate the basic syntax of a programming language. It is often the first program written by people learning to code. It can also be used as a sanity test to make sure that computer software intended to compile or run source code is correctly installed, and that the operator understands how to use it.

Java (programming language) Object-oriented programming language

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages. As of 2019, Java was one of the most popular programming languages in use according to GitHub, particularly for client-server web applications, with a reported 9 million developers.

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 reading. It typically omits details that are essential for machine understanding of the algorithm, such as variable declarations and language-specific code. The programming language is augmented with natural language description details, where convenient, or with compact mathematical notation. The purpose of using pseudocode is that it is easier for people to understand than conventional programming language code, and that it is an efficient and environment-independent description of the key principles of an algorithm. It is commonly used in textbooks and scientific publications to document algorithms and in planning of software and other algorithms.

Sun Microsystems Defunct American computer hardware and software company

Sun Microsystems, Inc. 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 Network File System (NFS), VirtualBox, and SPARC microprocessors. Sun contributed significantly to the evolution of several key computing technologies, among them Unix, RISC processors, thin client computing, and virtualized computing. Sun was founded on February 24, 1982. At its height, the Sun headquarters were in Santa Clara, California, on the former west campus of the Agnews Developmental Center.

James Gosling Canadian computer scientist

James Arthur Gosling, often referred to as "Dr. Java", OC is a Canadian computer scientist, best known as the founder and lead designer behind the Java programming language.

Message Passing Interface (MPI) is a standardized and portable message-passing standard designed to function on parallel computing architectures. The MPI standard defines the syntax and semantics of library routines that are useful to a wide range of users writing portable message-passing programs in C, C++, and Fortran. There are several open-source MPI implementations, which fostered the development of a parallel software industry, and encouraged development of portable and scalable large-scale parallel applications.

Guy L. Steele Jr. American computer scientist (born 1954)

Guy Lewis Steele Jr. is an American computer scientist who has played an important role in designing and documenting several computer programming languages and technical standards.

This article compares two programming languages: C# with Java. While the focus of this article is mainly the languages and their features, such a comparison will necessarily also consider some features of platforms and libraries. For a more detailed comparison of the platforms, see Comparison of the Java and .NET platforms.

In computer programming, an entry point is a point in a program where the execution of a program begins, and where the program has access to command line arguments.

X10 is a programming language being developed by IBM at the Thomas J. Watson Research Center as part of the Productive, Easy-to-use, Reliable Computing System (PERCS) project funded by DARPA's High Productivity Computing Systems (HPCS) program. Its primary authors are Saravanan Arumugam (Aswath), Kemal Ebcioğlu, Vijay Saraswat, and Vivek Sarkar.

In the Java computer programming language, an annotation is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, parameters and Java packages may be annotated. Like Javadoc tags, Java annotations can be read from source files. Unlike Javadoc tags, Java annotations can also be embedded in and read from Java class files generated by the Java compiler. This allows annotations to be retained by the Java virtual machine at run-time and read via reflection. It is possible to create meta-annotations out of the existing ones in Java.

Java (software platform) Set of computer software and specifications

Java is a set of computer software and specifications developed by James Gosling at Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a system for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

Chapel (programming language)

Chapel, the Cascade High Productivity Language, is a parallel programming language developed by Cray. It is being developed as part of the Cray Cascade project, a participant in DARPA's High Productivity Computing Systems (HPCS) program, which had the goal of increasing supercomputer productivity by the year 2010. It is being developed as an open source project, under version 2 of the Apache license.

High Productivity Computing Systems (HPCS) is a DARPA project for developing a new generation of economically viable high productivity computing systems for national security and industry in the 2002–10 timeframe.

James George "Jim" Mitchell is a Canadian computer scientist. He has worked on programming language design and implementation, interactive programming systems, dynamic interpretation and compilation, document preparation systems, user interface design, distributed transactional file systems, and distributed, object-oriented operating systems. He has also worked on the design of hardware for computer graphics, high-level language execution, and audio input/output.

Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. It is part of the Java Standard Edition platform, from Oracle Corporation. It provides methods to query and update data in a database, and is oriented toward relational databases. A JDBC-to-ODBC bridge enables connections to any ODBC-accessible data source in the Java virtual machine (JVM) host environment.

Ateji PX is an object-oriented programming language extension for Java. It is intended to facilliate parallel computing on multi-core processors, GPU, Grid and Cloud.

Java bytecode is the instruction set of the Java virtual machine (JVM).

Julia (programming language) High-performance dynamic programming language

Julia is a high-level, high-performance, dynamic programming language. While it is a general-purpose language and can be used to write any application, many of its features are well suited for numerical analysis and computational science.

References

  1. Eric Allen; David Chase; Joe Hallett; Victor Luchangco; Jan-Willem Maessen; Sukyoung Ryu; Guy L. Steele Jr.; Sam Tobin-Hochstadt; et al. (2008-03-31). "The Fortress Language Specification: Version 1.0" (PDF). research.sun.com. Sun Microsystems. Archived from the original (PDF) on 2013-01-20.
  2. 1 2 "Project Fortress Reference Card" (PDF). Java.net. Archived from the original (PDF) on 2016-03-04. Retrieved 2016-09-24.
  3. "pseudocode - Standards for pseudo code?". Stack Overflow. 2009-10-16. Retrieved 2016-09-24.
  4. Josh Simons (November 22, 2006). "Sun Not Selected for HPCS Phase III: My Thoughts". The Navel of Narcissus. Archived from the original on 2012-01-06 via blogs.oracle.com.
  5. "What's Cool about Fortress". gbcacm.org. Greater Boston Chapter of the ACM. Archived from the original on 2012-08-02.
  6. Gls-Oracle (2012-07-20). "Fortress Wrapping Up". Project Fortress. Archived from the original on 2016-09-24 via blogs.oracle.com.