Icon (programming language)

Icon (programming language)

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.

Comment
enIcon 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.
Depiction
Icon logo.png
Designer
Ralph Griswold
Designer
Ralph Griswold
Dialects
Unicon programming language
Has abstract
enIcon 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 or Pascal. Like the languages that inspired it, the primary area of use of Icon is managing 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 not required, reducing the amount of code written by the programmer. Complex pattern handling can be accomplished 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, but an object-oriented extension called Idol was developed in 1996 which eventually became 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.
Implementations
enIcon, Jcon
Influenced
enUnicon, Python, Goaldi
Influenced
goaldi
Python (programming language)
Unicon programming language
InfluencedBy
enSNOBOL, SL5, ALGOL
Influenced by
ALGOL
SNOBOL
Is primary topic of
Icon (programming language)
Label
enIcon (programming language)
LatestReleaseDate
13 August 2020
Latest release date
13 August 2020
LatestReleaseVersion
9.50
Latest release version
9.5.20
Link from a Wikipage to an external page
purl.umn.edu/107329
purl.umn.edu/107697
purl.umn.edu/107698
www2.cs.arizona.edu/icon/books.htm
rosettacode.org/wiki/Category:Icon
github.com/proebsting/goaldi
www.cs.arizona.edu/icon
www2.cs.arizona.edu/icon/docs/ipd266.htm
tratt.net/laurie/research/pubs/papers/tratt__experiences_with_an_icon_like_expression_evaluation_system.pdf
Link from a Wikipage to another Wikipage
ALGOL
ALGOL 60
Array slicing
Assembly language
Associative array
Atomic commit
Bell Labs
Block (programming)
Boolean logic
C (programming language)
Category:Dynamically typed programming languages
Category:Icon programming language family
Category:Pattern matching programming languages
Category:Programming languages created in 1977
Category:Public-domain software
Category:SNOBOL programming language family
Category:Text-oriented programming languages
Charles Babbage Institute
COBOL
Collection (abstract data type)
Coroutine
Distributed cost
Dynamic typing
Exception handling
FORTRAN
GE 645
Generator (computer programming)
Graphical user interface
IBM 7090
Illinois Institute of Technology
Iterator
Java programming language
JavaScript
List (abstract data type)
Loop-invariant code motion
Magic number (programming)
Markov chain
Multi-paradigm programming language
Nested function
Null pointer exception
Object-oriented
Pascal (programming language)
Perl (programming language)
Project MAC
Punch card
Python (programming language)
Python programming language
Queue (abstract data type)
Ralph Griswold
Rosetta Code
Runtime system
Scripting language
Set (abstract data type)
Side effect (computer science)
Smalltalk
SNOBOL
Stack (abstract data type)
Standard input
String (computer science)
Structured programming
Unicon (programming language)
Unicon programming language
University of Arizona
Value (computer science)
Very high-level programming language
Virtual machine
Xerox PARC
Logo
enIcon logo.png
Name
enIcon
Name
enIcon
Paradigm
enmulti-paradigm: structured, text-oriented
SameAs
DS1x
Icon
Icon
Icon
Icon
ICON
ICON
Icon (linguagem de programação)
Icon (linguaggio di programmazione)
Icon (programmeertaal)
Icon (programming language)
Icon (programspråk)
Icon (язык программирования)
Icon (编程语言)
m.03tr0
Q1156474
آيكون (لغة برمجة)
آیکون (زبان برنامه‌نویسی)
ഐക്കൺ (പ്രോഗ്രാമിങ് ഭാഷ)
아이콘 (프로그래밍 언어)
Subject
Category:Dynamically typed programming languages
Category:Icon programming language family
Category:Pattern matching programming languages
Category:Programming languages created in 1977
Category:Public-domain software
Category:SNOBOL programming language family
Category:Text-oriented programming languages
Thumbnail
Icon logo.png?width=300
Typing
Dynamic typing
WasDerivedFrom
Icon (programming language)?oldid=1116371999&ns=0
WikiPageLength
42746
Wikipage page ID
14801
Wikipage revision ID
1116371999
WikiPageUsesTemplate
Template:=
Template:About
Template:Authority control
Template:Cite book
Template:Cite encyclopedia
Template:Cite journal
Template:Cite web
Template:Code
Template:Efn
Template:Infobox programming language
Template:Notelist
Template:Reflist
Template:Sfn
Template:Start date and age
Template:URL
Template:Wikibooks
Wordnet_type
synset-programming language-noun-1