# Curl

Curl is a language for creating web documents with almost any sort of content, from simple formatted text to complex interactive applets. The goal of Curl is to provide a smoother transition between formatting and programming.
Curl, the programming language, is often confused with cURL. The cURL open source download utility is a completely different and independent project.

## History

Curl (programming language) is a web content language from the DARPA project at MIT which resulted in the WWW organization (w3c.org).
Curl was spun off by MIT as a corporation but is now owned by SCSK Corporation with home pages at Curl.com (http://www.curl.com) and at http://www.curlap.com

## Features

Curl is a hybrid functional language supporting declarative layout (as in HTML), styling as in CSS, scripting (as in JavaScript/ECMAScript), and is object-oriented (as in C++/Java/Smalltalk but also has multiple inheritance) and yet is also multi-paradigm (classes are optional) and permits anonymous procedures (closures, as in Smalltalk, JavaScript, Ruby and Groovy); it also has macros as in other functional languages. Curl shares the feature of LISP, Scheme and Rebol being homoiconic: Curl can itself be consumed by Curl as structured data or as functions and other declarations.
Without some historical context, Curl might look like an integration of Java, HTML, JavaScript and flash to create a simple language suitable for next generation on line client sided computing.
* Free for non commercial usage
* Support for real time ray tracing and quaternion functions
* Very simple, comparable to text editing HTML, unlike Lisp and 'C' (dependent on skill level of user)
* Script is compiled on the user/client side
* Multi-paradigm web-content language with classes, functional programming and declarative features resulting in a language comparable to combined JavaScript+CSS+HTML+Java
* Fast client-side computing with client-side persistent data
* Accessible to beginners yet capable of advanced programming and linking to other languages
Curl is named after a pair of curly braces these . . .
It is a programming language designed for such things as
* web applications with a desktop application-style GUI
* client side (that means your computer) processing
* occasionally-connected computing
* asynchronous-http request processing
* client-side data persistence (such as configuration options and bread-crumbs)
Curl has some similarities with Java and JavaScript but is expression-based like Icon or Rebol. Curl applets can serve as a replacement for HTML web pages. Curl applets can also be embedded. Curl could be viewed as HTML+CSS+JavaScript+Java - but all rolled into one language and combined in a unified environment with a multi-paradigm semantics including the Declarative, Procedural and Object-Oriented.
HTML (the text file web page language which browsers obtain from servers to display most pages on the web) can be comprised of JavaScript, CSS, Flash, scriptlets, XML among other elements. Curl was designed to be one language equivalent to all of the former. It can provide rich Internet application (RIA) with AJAX and live in an SOA (Curl comes with a SOAP API.)
Curl can display as well as Adobe Acrobat PDF (increasingly being used) and of course is dynamic and interactive and is an alternative to ADOBE Flex(FLASH + ActionScript), Microsoft Silverlight or SUN JavaFX.
Curl is a mature web content platform now available as Curl6 (but known internally as Curl7.) Curl is used in both Japan and Korea and announced a re-launch in North America in 2007 but it does require a browser plugin, the SURGE RTE (Runtime Engine) and had license restrictions.
In 2008, internet users may have become more accustomed to web browser plugins than they were in 2001 when Curl Corporation formed.
Curl content requires Curl software in order to be displayed. Just as HTML pages need a browser or PDF files need the Acrobat plug-in, Curl applets need the Curl Surge Plug-in and Runtime Environment. Once you have the plug-in you can load Curl load pages from web servers rather as you would load HTML pages and using the same HTTP protocol (in IE7, running at the WinInet level.)
The nearest equivalents may be Zope, .NET, Java or Javascript.
please add your contributions
Here is how : Help:Editing

## Table of contents

* Examples
** Example 1
** Example 2
** Example 3
** Example 4
** Example 5
** Example 6
* Setting up
* Version numbers
* Linux support
* The IDE
* Interviews
* External links