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
Pico (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!
{{Other uses|Pico (disambiguation)}} {{Multiple issues| {{External links|date=March 2017}} {{More citations needed|date=December 2023}} {{one source |date=March 2024}} {{only primary sources |date=March 2024}} }} {{Use dmy dates|date=March 2024}} {{Infobox programming language | name = Pico | paradigms = [[Reflective programming|Reflective]], [[Procedural programming|procedural]] | family = [[Lisp (programming language)|Lisp]] | designers = Theo D'Hondt<br/>Wolfgang De Meuter | developer = [[Vrije Universiteit Brussel]] | released = {{Start date and age|1995}} | latest release version = 2.0 | latest release date = {{Start date and age|2007}} | programming language = [[Scheme (programming language)|Scheme]] | platform = [[IA-32]], [[x86-64]] | operating system = [[Mac OS 9]], [[macOS]]; [[Linux]]β[[BSD]], [[Windows]] | website = {{URL|pico.vub.ac.be}} | influenced by = [[Scheme (programming language)|Scheme]], [[Smalltalk]] }} '''Pico''' is a [[programming language]] developed at the Software Languages Lab at [[Vrije Universiteit Brussel]], intended to be simple, powerful, extensible, and easy to read.<ref name="pico_d&r">{{cite journal |last1=D'Hondt |first1=Theo |last2=Gonzalez |first2=Sebastian |last3=De Meuter |first3=Wolfgang |date=1 January 1999 |title=The design and rationale behind pico |url=https://www.academia.edu/509697/The_design_and_rationale_behind_pico |journal=Programming Technology Lab, Department of Computer Science, Vrije Universiteit Brussel |page= |access-date=3 December 2023}}</ref> The language was created to introduce the essentials of programming to non-computer science students. Pico can be seen as an effort to generate a palatable and enjoyable language for people who do not want to study hard for the elegance and power of a language. They have done it by adapting [[Scheme (programming language)|Scheme's]] [[Semantics (computer science)|semantics]]. While designing Pico, the Software Languages Lab was inspired by the Abelson and Sussman's book "[[Structure and Interpretation of Computer Programs]]". Furthermore, they were influenced by the teaching of programming at high school or academic level. Pico should be interpreted as 'small', the idea was to create a small language for educational purposes. == Language elements == De Meuter, Gonzalez, and D'Hondt describe the Pico syntax as being "two-tiered."<ref name="pico_d&r" /> The first layer consists of simple rules for writing small programs in a [[functional programming]] style. === Comments === Comments are surrounded by [[backquote#computer|backquote]]s ("`"). === Variables === [[variable (programming)|Variables]] are dynamically [[data type|typed]]; Pico uses static [[scope (programming)|scope]]. var: value === Functions === Functions, like everything in Pico, are [[first-class object]]s, meaning they can be assigned to variables and passed to and returned from functions. Also, there are no anonymous functions in Pico; functions must have a name.<ref name="pico_d&r" /> For example, a function, <code>func</code>, with two parameters, <code>param1</code> and <code>param2</code>, can be defined as: func(param1, param2): ... Functions can be called with the following syntax: func(arg1, arg2) === Operators === Operators can be used as prefix or infix in Pico: +(5, 2) 5 + 2 === Data types === Pico has the following types: [[string (computer science)|string]], [[integer]], [[real number|real]] and [[array data type|tables]]. It does not have a native [[character (computing)#char|char]] type, so users should resort to size 1 strings. Tables are compound data structures that may contain any of the regular data types. Boolean types are represented by functions (as in [[lambda calculus]]). === Control structures === ==== Conditional evaluation ==== Only the usual if statement is included if(condition, then, else) == Code snippets == display('Hello World', eoln) max(a, b): if(a < b, b, a) `<span class="plainlinks">http://www.paulgraham.com/accgen.html</span>` foo(n): fun(i): n := n+i == Implementations == === Mac OS, Mac OS X === *[http://pico.vub.ac.be/downloads.html MacPico] *[https://web.archive.org/web/20040221012930/http://wilma.vub.ac.be/~pvdabeel/stuff/Xpico-Snaps/ XPico] === Windows === *[http://pico.vub.ac.be/downloads.html WinPico] ''This version is buggy'' *[http://student.vub.ac.be/~nkaraogl/WinPico/ WinPico stable] === Linux === *[http://dirk.rave.org/ TextPico for Linux] === Cross-platform === *[https://web.archive.org/web/20080905092122/http://www.infogroep.be/sPico sPico for DrScheme] ==References== {{Reflist}} == External links == *{{Official website}} *[http://soft.vub.ac.be/ Software Languages Lab] *[http://dinf.vub.ac.be/ Department of Computer Science at VUB] *[http://www.vub.ac.be/ VUB] *[https://web.archive.org/web/20080905092145/http://www.infogroep.be/Pico The Infogroep Pico page] {{Lisp programming language}} [[Category:1997 software]] [[Category:Programming languages created in 1997]] [[Category:Programming languages]] [[Category:Functional languages]] [[Category:Educational programming languages]] [[Category:Academic programming languages]] [[Category:Dynamically typed programming languages]] [[Category:Lisp programming language family]]
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:Cite journal
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Lisp programming language
(
edit
)
Template:Multiple issues
(
edit
)
Template:Official website
(
edit
)
Template:Other uses
(
edit
)
Template:Reflist
(
edit
)
Template:Use dmy dates
(
edit
)