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
Icon (programming language)
(section)
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|A very high-level programming language.}} {{About|the programming language|pictogram or computer image|Icon (computing)|Icon-L graphical programming of embedded systems|:de: iCon-L}} {{Infobox programming language | name = Icon | logo = Icon logo.png | paradigms = [[Multi-paradigm programming language|multi-paradigm]]: [[Structured programming|structured]], text-oriented | family = [[SNOBOL]] | designer = [[Ralph Griswold]] | developer = | typing = [[Dynamic typing|dynamic]] | website = {{URL|www.cs.arizona.edu/icon}} | year = {{Start date and age|1977}} | latest release version = 9.5.24a | latest release date = {{Start date and age|2024|01|17}}<ref>{{cite web |last=Townsend |first=Gregg |date=January 26, 2024 |url=https://github.com/gtownsend/icon/commits/master |title=Update version to 9.5.22e |website=[[GitHub]]}}</ref> | implementations = Icon, Jcon | dialects = [[Unicon (programming language)|Unicon]] | influenced by = [[SNOBOL]], SL5, [[ALGOL]] | influenced = Unicon, [[Python (programming language)|Python]], Goaldi,<ref>{{cite web |url=https://github.com/proebsting/goaldi |title=Goaldi |website=[[GitHub]]}}</ref> [[jq (programming language)|jq]] }} '''Icon''' is a [[very high-level programming language]] based on the concept of "goal-directed execution" in which code returns a "success" along with valid values, or a "failure", indicating that there is no valid data to return. The success and failure of a given block of code is used to direct further processing, whereas conventional languages would typically use [[Boolean logic]] written by the programmer to achieve the same ends. Because the logic for basic control structures is often implicit in Icon, common tasks can be completed with less explicit code. Icon was designed by [[Ralph Griswold]] after leaving [[Bell Labs]] where he was a major contributor to the [[SNOBOL]] language. SNOBOL was a string-processing language with what would be considered dated syntax by the standards of the early 1970s. After moving to the [[University of Arizona]], he further developed the underlying SNOBOL concepts in SL5, but considered the result to be a failure. This led to the significantly updated Icon, which blends the short but conceptually dense code of SNOBOL-like languages with the more familiar syntax of [[ALGOL]]-inspired languages like [[C (programming language)|C]] or [[Pascal (programming language)|Pascal]]. Like the languages that inspired it, the primary area of use of Icon is managing [[String (computer science)|strings]] and textual patterns. String operations often fail, for instance, finding "the" in "world". In most languages, this requires testing and branching to avoid using a non-valid result. In Icon most of these sorts of tests are simply unneeded, reducing the amount of code that must be written. Complex pattern handling can be done in a few lines of terse code, similar to more dedicated languages like [[Perl]] but retaining a more function-oriented syntax familiar to users of other ALGOL-like languages. Icon is not [[object-oriented programming|object-oriented]], but an object-oriented extension named Idol was developed in 1996 which eventually became [[Unicon (programming language)|Unicon]]. It also inspired other languages, with its simple generators being especially influential; Icon's generators were a major inspiration for the [[Python (programming language)|Python]] language.<ref>{{cite web |url=https://www.python.org/dev/peps/pep-0255/ |title=PEP 255 β Simple Generators |last1=Schemenauer |first1=Neil |last2=Peters |first2=Tim |last3=Hetland |first3=Magnus Lie |date=18 May 2001 |work=Python Enhancement Proposals |publisher=Python Software Foundation |access-date=9 February 2012}}</ref>
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)