FACTOID # 152: Of the eight countries which include the word "democratic" in their conventional long form name, three are dictatorships: North Korea (Democratic People's Republic of Korea), Laos (Lao People's Democratic Republic) and the Democratic republic of the Congo.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

FACTS & STATISTICS    Simple view

  1. Select countries to view: (hold down Control key and click to select several)

     

     

    Compare:

     

     

  1. Select fact or statistic: (* = graphable)

     

     

     

  2. (OPTIONAL) Compare to statistic: (both need to be graphable)

     

     

     

  3. View result as:

     

       
(OR) SEARCH ALL encyclopedia, stats & forums:   

Encyclopedia > Chicken (Scheme implementation)
Chicken Scheme
Developer: Felix Winkelmann
Latest release: 2.6 / Mar 2, 2007
OS: Cross-platform
Use: Programming language
License: BSD License
Website: callcc.org

Chicken is a compiler and interpreter for the Scheme programming language that compiles Scheme code to standard C. It is mostly R5RS compliant and offers many extensions to the standard. Chicken is free software available under the BSD license. Software development is the translation of a user need or marketing goal into a software product. ... A software release refers to the creation and availability of a new version of a computer software product. ... March 2 is the 61st day of the year in the Gregorian Calendar (62nd in leap years). ... 2007 (MMVII) is the current year, a common year starting on Monday of the Gregorian calendar and the Anno Domini (common) era. ... An operating system (OS) is a set of computer programs that manage the hardware and software resources of a computer. ... A cross-platform (or platform independent) programming language, software application or hardware device works on more than one system platform (e. ... A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ... A software license is a legal agreement which may take the form of a proprietary or gratuitous license as well as a memorandum of contract between a producer and a user of computer software. ... The BSD license is a permissive license and is one of the most widely used free software licenses. ... A website (or Web site) is a collection of web pages, images, videos and other digital assets and hosted on a particular domain or subdomain on the World Wide Web. ... This article is about the computing term. ... An interpreter is a computer program that executes other programs. ... The Scheme programming language is a functional programming language and a dialect of Lisp. ... Wikibooks has a book on the topic of C Programming The C programming language (often, just C) is a general-purpose, procedural, imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ... Scheme is a multi-paradigm programming language. ... This article is about free software as defined by the sociopolitical free software movement; for information on software distributed without charge, see freeware. ... The BSD license is a permissive license and is one of the most widely used free software licenses. ...

Contents

Design

Like many Scheme compilers, Chicken uses standard C as an intermediate language. A Scheme program is translated into C by the Chicken compiler, and then a C compiler translates the C program into machine code for the target architecture, producing an executable program. The universal availability of C makes it ideal for this purpose. In computer science, an intermediate language is the language of an abstract machine designed to aid in the analysis of computer programs. ...


Chicken's design was inspired by a 1994 paper by Henry Baker that outlined an innovative strategy for Scheme compilation into C. A scheme program is compiled into C functions. These C functions never reach the return statement; instead, they call a new continuation when complete. These continuations are C functions themselves and are passed on as extra arguments to other C functions. They are calculated by the compiler. 1994 (MCMXCIV) was a common year starting on Saturday of the Gregorian calendar, and was designated as the International Year of the Family and the International Year of the Sport and the Olympic Ideal by United Nations. ... Henry Baker is the name of a computer scientist who has made contributions in such areas as Garbage collection and the Actor model. ... In computer science, a subroutine (function, method, procedure, or subprogram) is a portion of code within a larger program, which performs a specific task and is relatively independent of the remaining code. ... A statement is the minimal unit of structuring in imperative programming languages. ... In computing, a continuation is a representation of the execution state of a program (for example, the call stack or values of variables) at a certain point. ...


So far, this is the essence of continuation-passing style. Baker's novel idea is to use the C stack for the Scheme heap. Hence, normal C stack operations such as automatic variable creation, variable-sized array allocation, and so on can be used to automatically populate the heap. When the heap fills up (that is, the stack pointer reaches the top of the heap), a garbage collection can be initiated. The design used is a copying garbage collector originally designed by C.J. Cheney, which copies all live continuations and other live objects to the heap. Despite this, the C code does not copy C stack frames, only Scheme objects, so it does not require knowledge of the C implementation. Continuation-passing style (CPS) is a term used within functional programming to describe a style of programming in which control is passed explicitly in the form of a continuation. ... In computer science, a call stack is a special stack which stores information about the active subroutines of a computer program. ... In computer science, garbage collection (also known as GC) is a form of automatic memory management. ... Cheneys algorithm, first described in a 1970 ACM paper by C.J. Cheney, is a method of garbage collection in computer software systems. ...


In full, the Scheme heap is made up of the C stack as the nursery of the generational garbage collector and the two heaps required by that kind of collector. This approach gives the speed of the C stack for many operations, and it allows the use of continuations as simple calls to C functions. Further, Baker's solution guarantees asymptotic tail recursive behavior, as required by the Scheme language standard. The implementation in the Chicken scheme compiler is even asymptotically safe for space. In mathematics and applications, particularly the analysis of algorithms, asymptotic analysis is a method of classifying limiting behaviour, by concentrating on some trend. ...


Limitations and deviations from the standard

Chicken Scheme is mostly R5RS-compliant. The majority of the current deviations will be covered by the forthcoming standard, R6RS.


The basic distribution lacks arbitrary-precision arithmetic (bignums). However, these can be installed as an extension (see below). There is currently a maximum of 126 arguments to a procedure. This is a comparatively serious limitation for a Scheme compiler, which may expect to have quite long lists passed as arguments using the apply primitive. There is a workaround for some architectures that extends the maximum number of arguments per procedure to 1000. On a computer, arbitrary-precision arithmetic, also called bignum arithmetic, is a technique that allows computer programs to perform calculations on integers or rational numbers (including floating-point numbers) with an arbitrary number of digits of precision, typically limited only by the available memory of the host system. ...


Add-on software

Chicken has a large repository of additional libraries and programs called "eggs". This eggs system is quite similar to RubyGems. It too does not integrate with the packaging system of the user's operating system. SWIG also supports Chicken. RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries (in a self-contained format called gems), a tool to easily manage the installation of gems, and a server for distributing them. ... SWIG (Simplified Wrapper and Interface Generator) is a free computer software tool used to connect programs written in C/C++ with scripting languages such as Tcl, Perl, Python, Ruby, Guile, PHP and other languages like Java, C#, and Ocaml. ...


See also

In computer science, tail recursion is a special case of recursion that can be easily transformed into an iteration. ... Cheneys algorithm, first described in a 1970 ACM paper by C.J. Cheney, is a method of garbage collection in computer software systems. ... Adamantix, also known as Trusted Debian, is a security focused operating system based on Debian GNU/Linux. ...

References

External links



 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

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.