Alice (programming language)

Alice (programming language)

Infobox programming language
name = Alice

paradigm = Multi-paradigm: imperative, functional, distributed, concurrent
year = 2000
designer = Saarland University
developer =
latest_release_version = 1.4
latest_release_date = May 3 2007
typing = strong, static, inferred
implementations =
dialects =
influenced_by = ML, Oz
influenced =
operating_system = Cross-platform
license =
website = [http://www.ps.uni-sb.de/alice/ www.ps.uni-sb.de/alice/]

Alice is a functional programming language designed by the [http://ps.uni-sb.de/ Programming Systems Lab] at Saarland University. It is a dialect of Standard ML, augmented with support for lazy evaluation, concurrency (multithreading and distributed computing via remote procedure calls) and constraint programming.

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

Early versions of Alice ran on the Mozart/Oz VM, allowing interfacing between Alice and Oz code.

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

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:

fun fib 0 = 0
fib 1 = 1
fib n = fib(n-1) + fib(n-2);

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

val x = spawn fib n;

The variable x is now bound to a so-called "future". When an operation requires the actual value of x, it blocks until the thread is done with the computation. To exploit parallelism one could even define fib as follows: fun fib 0 = 0
fib 1 = 1
fib n = spawn fib(n-1) + fib(n-2);

See also

* Mozart Programming System
* Standard ML

External links

* [http://www.ps.uni-sb.de/alice/ Alice homepage]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Mercury (programming language) — For Mercury Autocode, see Autocode. Mercury Paradigm(s) Logic, functional Appeared in 1995 Designed by Zoltán Somogyi …   Wikipedia

  • Educational programming language — An educational programming language is a programming language that is designed primarily as a learning instrument and not so much as a tool for writing real world application programs.ome examplesChildren* AgentSheets is an award winning game and …   Wikipedia

  • Oz (programming language) — Oz Paradigm(s) multi paradigm: logic, functional, imperative, object oriented, constraint, distributed, concurrent Appeared in 1991 Designed by Gert Smolka, his students Developer Mozart …   Wikipedia

  • MUF (programming language) — MUF (short for Multi User Forth ) is a Forth based programming language used on TinyMUCK MUCK servers and their descendants, including Fuzzball MUCK, ProtoMUCK and GlowMUCK. MUF is the system programming language for TinyMUCK systems. Many… …   Wikipedia

  • Visual programming language — A Visual programming language (VPL) is any programming language that lets users specify programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial… …   Wikipedia

  • Scratch programming language — Infobox programming language name = Scratch paradigm = object oriented, educational year = 2007 designer = Mitchel Resnick developer = Mitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Tammy Stern, Amon Millner, Jay Silver, and Brian… …   Wikipedia

  • ML (programming language) — ML Paradigm(s) multi paradigm: imperative, functional Appeared in 1973 Designed by Robin Milner others at the University of Edinburgh Typing discipline static, strong, inferred …   Wikipedia

  • Jess (programming language) — Jess Developer(s) Sandia National Laboratories Platform Java License Closed source / Public Domain Website …   Wikipedia

  • Jess programming language — Jess, a rule engine for the Java platform, is a superset of CLIPS programming language, developed by Ernest Friedman Hill of Sandia National Labs. It was first written in late 1995.It provides rule based programming suitable for automating an… …   Wikipedia

  • Alice — may refer to: * Alice (given name)Royal Princesses* Princess Alice of the United Kingdom (Grand Duchess of Hesse) * Princess Alice, Countess of Athlone * Princess Alice, Duchess of Gloucester * Princess Alice of Battenberg (Princess Andrew of… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”