Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Curl (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language}} {{Hatnote|Not to be confused with [[cURL]], a software library and command-line tool with a similar name.}} {{Multiple issues| {{More citations needed|date=December 2014}} {{More footnotes|date=June 2015}} }} {{Infobox programming language | name = Curl | logo = Curl logo.gif | paradigms = [[Multi-paradigm programming language|multi-paradigm]]: [[Object-oriented programming|object-oriented]], [[Markup language|markup]] | designer = [[Steve Ward (computer scientist)|Steve Ward]], [[Massachusetts Institute of Technology|MIT]] | developer = Curl, Inc., Sumisho Computer Systems Corp., SCSK Corporation | released = {{Start date and age|1998}} | latest release version = 8.0.13 | latest release date = {{Start date and age|2022|09|06|df=yes}} | typing = [[Strong and weak typing|strong]] | implementations = | dialects = none | influenced by = [[HTML]], [[JavaScript]], [[Lisp (programming language)|Lisp]] | influenced = | operating system = [[Microsoft Windows|Windows]] | license = [[Proprietary software|proprietary]] | website = {{URL|https://www.curl.com}} | file ext = | wikibooks = Curl }} '''Curl''' is a [[Reflective programming|reflective]] [[Object-oriented programming|object-oriented]] [[programming language]] for interactive [[web application]]s, whose goal is to provide a smoother transition between [[content format]]ting and [[computer programming]]. It makes it possible to embed complex objects in simple documents without needing to switch between programming languages or development platforms. The Curl implementation initially consisted of an [[Interpreter (computing)|interpreter]] only; a [[compiler]] was added later. Curl combines text [[Markup language|markup]] (as in HyperText Markup Language ([[HTML]])), scripting (as in [[JavaScript]]), and heavy-duty computing (as in [[Java (programming language)|Java]], [[C Sharp (programming language)|C#]], or [[C++]]) within one unified framework. It is used in a range of internal enterprise, [[business-to-business]] (B2B), and [[business-to-consumer]] (B2C) applications. Curl programs may be compiled into Curl applets, that are viewed using the Curl RTE, a [[runtime environment]] with a [[Plug-in (computing)|plugin]] for [[web browser]]s. Currently, it is supported on [[Microsoft Windows]]. [[Linux]], and [[macOS]] was dropped on March 25, 2019 (starting with version 8.0.10).<ref>{{cite web |url=https://www.curl.com/release/2019/20190325_1.html |publisher=SCSK Corporation |access-date=2020-04-01 |archive-url=https://web.archive.org/web/20190513081808/https://www.curl.com/release/2019/20190325_1.html |archive-date=2019-05-13 |url-status=live |title=Changes to Supported Operating Systems of Curl RTE Products }}</ref> Curl supports [https://web.archive.org/web/20110708213458/http://developers.curl.com/userdocs/docs/en/dguide/detached.html "detached applets"], which is a web deployed applet which runs on the user's desktop independent of a browser window much as in [[Microsoft Silverlight]] 3 and [[Adobe AIR]]. ==Architecture== The Curl language attempts to address a long-standing problem: the different building blocks that make up any modern web document most often require wildly different methods of implementation: different languages, different tools, different frameworks, often completely different teams. The final, and often most difficult, hurdle has been getting all of these blocks to communicate with each other in a consistent manner. Curl attempts to side-step these problems by providing a consistent syntactic and semantic interface at all levels of web content creation: from simple HTML to complex [[object-oriented programming]]. Curl is a [[markup language]] like HTML—that is, [[plain text]] is shown as text; at the same time, Curl includes an object-oriented programming language that supports [[multiple inheritance]]. Curl applications are not required to observe the separation of information, style, and behavior that HTML, [[Cascading Style Sheets]] (CSS), and JavaScript have imposed, although that style of programming can be used in Curl if desired. While the Curl language can be used as an HTML replacement for presenting formatted text, its abilities range all the way to those of a compiled, strongly typed, object-oriented system programming language.<ref>{{cite web |url=http://www.cag.lcs.mit.edu/curl/wwwpaper.html |title=Curl: A Gentle Slope Language for the Web |author1=M. Hostetter |author2=D. Kranz |author3=C. Seed |author4=C. Terman |author5=S. Ward |publisher=MIT Laboratory for Computer Science |access-date=2005-12-20 |url-status=dead |archive-url=https://web.archive.org/web/20081224002953/http://www.cag.lcs.mit.edu/curl/wwwpaper.html |archive-date=2008-12-24}}</ref> Both the authoring (HTML-level) and programming constructs of Curl can be extended in user code. The language is designed so Curl applications can be compiled to native code of the client machine by a [[just-in-time compilation|just-in-time compiler]] and run at high speed. Curl applets can also be written so that they can run off-line when disconnected from a network ([https://web.archive.org/web/20100102031426/http://curl.com/solutions_computing.php occasionally connected computing]). The [http://www.curl.com/products/prod/ide/old_ide.html Curl IDE] is an application written in Curl. ==Syntax== A simple Curl applet for a [["Hello, World!" program]] might be: <syntaxhighlight lang="text"> {Curl 7.0, 8.0 applet} {text color = "blue", font-size = 16pt, Hello World} </syntaxhighlight> This code will run if the user has at least one of the Curl versions 7.0 or 8.0 installed. Curl provides both [[Macro (computer science)|macro]]s and text-procedures in addition to anonymous procedures and named methods. An alternative using the text-procedure ''paragraph'' would be: <syntaxhighlight lang="text"> {paragraph paragraph-left-indent=0.5in, {text color = "red", font-size = 12pt, Hello} {text color = "green", font-size = 12pt, World}} </syntaxhighlight> Recently this style of layout has been adopted by "builders" in the [[Groovy (programming language)|Groovy]] language for the [[Java virtual machine]] (JVM), but is also familiar to users of CSS or [[Tcl]]/[[Tk (software)|Tk]]. Most features for web applications now implemented through combinations of JavaScript libraries + HTML + CSS are already found within the Curl language, including features usually associated with [[Prototype JavaScript Framework|Prototype]] + [[script.aculo.us]] such as accordion panes. Curl sets callbacks in the manner also adopted by Groovy: <syntaxhighlight lang="text"> {CommandButton width=100pt, height = 50pt, label = {center {bold Invokes an event handler when clicked}}, control-color = "orange", || Attach the following event handler to this CommandButton {on Action do {popup-message title = "Your Message", "This is a user message dialog." } }} </syntaxhighlight> Curl comments use the vertical bar in several variations. The simplest is as follows: <syntaxhighlight lang="text"> {text A comment can be on a line by itself, || A comment on a line by itself or it can be at the end || A comment on the same line as code of a line.} </syntaxhighlight> == As lightweight markup == Because Curl provides for both user-defined text procedures and [[Style sheet (web development)|style sheets]], it can be used readily as [[Domain-specific language|domain-specific]] lightweight markup. A major advantage over plain text HTML markup is that the text encoding can be set to [[UTF-8]], and text entered in a [[Unicode]]-enabled [[text editor]] with no [[Escape character|escaping of characters]] (like JavaScript, Curl is Unicode friendly). A [[poetry]] example is: <syntaxhighlight lang="text"> {poem || wraps entire poem {stanza || first verse here in any language } {stanza || another verse here in any language } } </syntaxhighlight> which can initially be implemented by defining the poem and stanza markup as paragraph text formats. Stanza could be further refined to include a hidden navigation anchor for page navigation using the Curl {destination} which is itself a text procedure. The same markup can be used for different results, as one can style text to be visible in one context and invisible in another. Curl also permits top-level file inclusion so that a source text in markup can be included in different parent files. In education, for example, one could create a source file of test questions, and include it in both a student and a teacher version of the text. ==See also== *[[Homoiconicity]]: Curl is both a programming language and a data format{{citation needed|date=January 2013}} ==References== {{Reflist}} ==External links== {{Wikibooks|Curl}} *[https://web.archive.org/web/20050714074659/http://www.cag.lcs.mit.edu/curl/ MIT Curl Project], the results of the Curl research project at [[Massachusetts Institute of Technology]]'s (MIT) Laboratory for Computer Science. *[http://www.curl.com Curl, Inc.] and [http://curlap.com Curl International Corp.] develop and distribute a suite of commercial products which are based on the results of the MIT research. Owned by [http://www.scsk.jp/index_en.html SCSK Corporation] a majority-owned unit of [http://www.sumitomocorp.co.jp/english/ Sumitomo Corp.] *[https://www.infoworld.com/article/2649798/application-development/product-review--curl-6-0-enrichens-the-rich-internet-toolkit-.html InfoWorld review of Curl 6.0] by Martin Heller. [[InfoWorld]] awarded Curl its 2008 Technology of the Year award in the [[Rich Internet Application]] category. {{Rich web applications}} {{Authority control}} [[Category:High-level programming languages]] [[Category:Declarative programming languages]] [[Category:Functional languages]] [[Category:Lightweight markup languages]] [[Category:Markup languages]] [[Category:Rich web application frameworks]] [[Category:Homoiconic programming languages]] [[Category:Proprietary software]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Hatnote
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Multiple issues
(
edit
)
Template:Reflist
(
edit
)
Template:Rich web applications
(
edit
)
Template:Short description
(
edit
)
Template:Sister project
(
edit
)
Template:Wikibooks
(
edit
)