ⓘ Alice (programming language)


Alice (software)

Alice is an object-based educational programming language with an integrated development environment. Alice uses a drag and drop environment to create computer animations using 3D models. The software was developed first at University of Virginia in 1994, then Carnegie Mellon, by a research group led by Randy Pausch.

Alice (programming language)

ⓘ Alice (programming language)

Alice ML is a programming language designed by the Programming Systems Laboratory at Saarland University, Saarbrucken, Germany. It is a dialect of Standard ML, augmented with support for lazy evaluation, concurrency and constraint programming.


1. Overview

Alice extends Standard ML in a number of ways that distinguish it from its predecessor. Alice provides concurrency features as part of the base language through the use of a future type that represents a value being provided by an independent thread of execution. A thread that uses a future value will block on an attempt to access the value until the thread performing it has completed the computation. A related concept is also provided termed a promise, allowing a thread to provide a future value that it will compute to another thread. Future and promise typed variables are used to implement data-flow synchronizing.

Like the Haskell functional language, Alice provides facilities to allow a lazy evaluation strategy in programs, unlike the traditional eager evaluation strategy of Standard ML. While Haskell uses the lazy model by default, Alice uses an eager evaluation model by default, needing an explicit programming statement for a computation to evaluate lazily.

The Alice implementation from Saarland University uses the Simple Extensible Abstract Machine SEAM virtual machine. It is free software, and features just-in-time compilation to bytecode and native code for the x86 architecture.

Early versions of Alice ran on the Mozart Programming System Oz virtual machine VM, allowing interfacing between Alice and Oz code.

Alices remote procedure calling depends on the virtual machine, because it may send code to be computed from one computer to another.


2. Example

Alice extends Standard ML with several primitives for lazy evaluation and concurrency. For example, threads may be created using the spawn keyword. Consider the naive algorithm for computing the Fibonacci numbers:

For large values of n, fib n will take a long time to compute. This computation can be performed in a separate thread by

The variable x is now bound to a so-called future. When an operation requires the value of x, it blocks until the thread is done with the computation. To exploit parallelism one could even define fib as follows:

  • in 1992 Alice programming language a functional programming language designed by the Programming Systems Lab at Saarland University Alice software
  • multiparadigm programming language developed in the Programming Systems Lab at Universite catholique de Louvain, for programming language education. It
  • notable programming languages grouped by type. There is no overarching classification scheme for programming languages Thus, in many cases, a language is
  • educational programming language is a programming language that is designed mostly as an instrument for learning, and less as a tool for writing programs to perform
  • computing, a visual programming language VPL is any programming language that lets users create programs by manipulating program elements graphically
  • Mercury is a functional logic programming language made for real - world uses. The first version was developed at the University of Melbourne, Computer Science
  • A compiled language is a programming language whose implementations are typically compilers translators that generate machine code from source code
  • The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones
  • Alice is an object - based educational programming language with an integrated development environment IDE Alice uses a drag and drop environment to