FACTOID # 24: You're 66 times more likely to be prosecuted in the USA than in France
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

SEARCH ALL

FACTS & STATISTICS    Advanced view

Search encyclopedia, statistics and forums:

 

 

(* = Graphable)

 

 


Encyclopedia > Alice (programming language)

Alice is a functional programming language designed by the 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. Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions. ... The Saarland University (German Universität des Saarlandes) is a university located in Saarbrücken, Germany. ... Standard ML (SML) is a general-purpose, modular, functional programming language with compile-time type checking and type inference. ... In computer programming, lazy evaluation is a technique that attempts to delay computation of expressions until the results of the computation are known to be needed. ... Wikiquote has a collection of quotations related to: Edsger Dijkstra In computer science, concurrency is a property of systems which consist of computations that execute overlapped in time, and which may permit the sharing of common resources between those overlapped computations. ... A thread in computer science is short for a thread of execution. ... Distributed computing is decentralised and parallel computing, using two or more computers communicating over a network to accomplish a common objective or task. ... Remote procedure call (RPC) is a protocol that allows a computer program running on one computer to cause a subroutine on another computer to be executed without the programmer explicitly coding the details for this interaction. ... Constraint programming is a programming paradigm where relations between variables can be stated in the form of constraints. ...


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. In general terms, a virtual machine in computer science is software that creates a virtualized environment between the computer platform and the end user in which the end user can operate software. ... This article is about free software as defined by the sociopolitical free software movement; for information on software distributed without charge, see freeware. ... In computing, just-in-time compilation (JIT), also known as dynamic translation, is a technique for improving the performance of bytecode-compiled programming systems, by translating bytecode into native machine code at runtime. ... Byte-code is a sort of intermediate code that is more abstract than machine code. ... A system of codes directly understandable by a computers CPU is termed this CPUs native or machine language. ... x86 or 80x86 is the generic name of a microprocessor architecture first developed and manufactured by Intel. ...


Early versions of Alice ran on the Mozart/Oz VM, allowing interfacing between Alice and Oz code. The Mozart Programming System is a multi-platform implementation of the Oz programming language developed by the Mozart Consortium. ... Oz is a multi-paradigm programming language. ...


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

[edit]

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: In computer science, a keyword is an identifier which indicates a specific command. ... In mathematics, the Fibonacci numbers form a sequence defined recursively by: That is, after two starting values, each number is the sum of the two preceding num,bers. ...

 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. In computer science, a future (also known as a promise in the E programming language and Alice programming languages) is a proxy for a result that is not yet known, usually because the computation of its value has not yet completed. ...

[edit]

Links

  • Alice homepage
Preceding: Mozart Programming System, Standard ML
Subsequent:


 
 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms, 1022, m