ASC:
the Algebraic System for Computation

Info

What is ASC?

ASC is a general purpose programming language designed for creating programs that are stable, reliable, and portable. It supports multiple programming styles such as...

  • functional and concatenative programming
  • object orientation
  • data oriented design1
  • language-oriented programming2

Why use ASC?

ASC targets critical software applications where a program must be consistent to a high degree. Usually this requires verifying some abstract model which is then implemented in some other programming langauge. But there are two well-known critical points of failure with this approach: the language used to implement the program is always more unreliable than the model and human error is introduced when translating the model to the implementation. ASC attempts to protect software from these failures by incorporating program modelling capabilities into the actual programming language itself. This allows engineers to create a model which is itself a working implementation. Once the model is complete, so is the program.


1. Richard Fabian, Data-Oriented Design

2. M. P. Ward, Language Oriented Programming

More About ASC

Features

ASC has several features that make it stand out from modern programming languages:

Stability

ASC is designed standard-first which means that any change to the language is vetted before being incorporated. This provides two advantages, there will always be a single definitive resource on how the language works, and implementations of the language are not rendered unstable by feature prototypes. The standard documentation also explicitly has no versioning. This discourages implementations from becoming fragmented between different standard releases.

Reliability

As mentioned previously, ASC incorporates modelling capabilities as a basic part of the language. This allows you to specify a variety of constraints on how a program can behave. Most of these constraints can be verified during compilation and then erased, which allows programs to remain both efficient and reliable.

Portability

ASC is designed to run on a virtual machine called IISC. The purpose of IISC is to provide a generic computer which can be easily mapped to many different hardware architectures. A program which targets the IISC architecture can generate one program which can then be distributed and run on many different machines without any extra effort. IISC is designed to be translated to native machine code, but it can easily be interpreted as well.

Standard Documentation

The ASC standard is written and maintained by the ASC Working Group. It's a free and open standard released under the GNU FDL. The standard is distributed as a set of standalone HTML5 webpages which can be read with any web browser.

You can read the standard documentation right now, on-line, with full access by clicking this link.

Install

Official Binaries

Official binaries are produced for GNU GPL, and GPL-compatible, licensed operating systems.

No official binaries are available for download currently.

Unofficial Binaries

Due to circumstances beyond the ASC Working Group's control, several popular proprietary and otherwise GPL-incompatible operating systems are used by many people. Some members of the ASC Working Group have generously donated their personal time when not working on official ASC releases to develop unofficial binary releases of ASC that depend on some GPL-incompatable operating systems.

Please be advised that, while these binary downloads do respect your freedoms, they depend on software and operating systems that do not and which may compromise your personal information and autonomy as a user.

No unofficial binaries are available for download currently.

Contributing

Feature Proposals

Outside contributions are welcome. If you would like to contribute to the standard documentation, please read this section of the standard. You can submit proposals to this email. Please keep in mind that not every external proposal will be accepted, but including as many details as you can will definitely help. If your proposal is accepted, it may be some time before it is incorporated into a revision of the standard documentation.

Joining The Working Group

If you would like ot become a volunteer member of the ASC Working Group, email a request with a description of your roles in previous projects of a similar nature. Please keep in mind, joining the working group is a highly subjective per-case decision made by the existing authors based on the merit of the candidate. The working group is very much intended to be exclusive to a small number of qualified and trusted individuals.

Donating

The ASC project is currently a part-time volunteer effort. There is not yet an established system for receiving financial contributions that legally guarantee your money is helping the project. If you are determined to donate, please contact us so an arrangement can be made.

Working Group Members

The people who write and maintain the ASC standard documentation.

Central Maintainer

Additional Members

Outside Contributors

Non-members who've generously donated time and effort to the ASC project.