User:Munirsid/sandbox

Wikipedia page: ATS (programming language) - Wikipedia

Introduction:

(add to the end)

ATS consists of a static component and a dynamic component. The static component is used for handling types, whereas the dynamic component is used for programs. While ATS primarily relies on a call-by-value functional language at its core, it possesses the capability to accommodate diverse programming paradigms, such as functional, imperative, object-oriented, concurrent, and modular programming.

History:

According to the author, ATS was inspired by Martin-Löf's constructive type theory, which was originally developed for the purpose of establishing a foundation for mathematics. Xi designed ATS “in an attempt to combine specification and implementation into a single programming language.”

[ATS is derived mostly from the ML and OCaml programming languages. An earlier language, Dependent ML, by the same author has been incorporated by the language.] - Current page

The first implementation, ATS/Proto (ATS0), was written in OCaml and was released in 2006. This was the pre-first edition of ATS and is no longer maintained. A year later, ATS/Geizella, the first implementation of ATS1, was released. This version was also written in OCaml and is not actively used anymore.

The second version of ATS1, ATS/Anairiats, released in 2008, was a major milestone in the development of the language, as the language was able to bootstrap itself. This version was written almost completely in ATS1. The current version, ATS/Postiats (ATS2) was released in 2013. Like its predecessor, this version is also almost entirely written in ATS1. The most recently released version is ATS2-0.4.2.

Future:

Currently, ATS is mostly only used for research; there are less than 200 GitHub repositories containing code written in ATS. This is much less than other functional programming languages, such as OCaml and Standard ML, which have over 16000 and 3000 repositories, respectively. This is probably due to the steep learning curve associated with ATS, which is present because of the language’s use of dependent type-checking and template instance resolution. These features usually require the use of explicit quantifiers, which raises the learning curve.

ATS/Xanadu (ATS3) is currently actively being developed in ATS2, with the hope of lowering this learning curve by two main improvements:


 * Adding an extra layer to ATS2 for supporting ML-like algebraic type-checking
 * Type-based meta-programming using algebraic types only

With these improvements, Xi hopes for ATS to become much more accessible and easier to learn. In fact, the primary goal of ATS3 is to transform ATS from a programming language mainly used for research into one strong enough for large-scale industrial software development.