#REDIRECT [[Code golf#Dedicated golfing languages]]
{{Userspace draft|date=June 2014}}
'''GolfScript''' is an [[Esoteric programming language|esoteric]] [[programming language]] that is [[Stack-oriented programming language|stack-based]] and designed to allow programs to be written in as few keystrokes as possible. It aims to be simple and easy to write.<ref name="official website">{{cite web|title=GolfScript|url=http://www.golfscript.com/golfscript/|accessdate=20 June 2014}}</ref> The design of the language makes it easy to use in [[code golf]]ing contests.
== History ==
GolfScript was released on 13 December 2007 and added to the golf server run by Shinichiro Hamaji the next day.<ref name="official website" /> The GolfScript specification was originally implemented in [[Ruby (programming language)|Ruby]] by Darren Smith.<ref>{{cite web|title=Language::GolfScript - search.cpan.org|url=http://search.cpan.org/~mob/Language-GolfScript-0.04/lib/Language/GolfScript.pod|accessdate=20 June 2014}}</ref> A [[Perl]] implementation was released by Marty O' Brien on 11 July 2011.<ref>{{cite web|title=Marty O'Brien / Language-GolfScript-0.04 - search.cpan.org|url=http://search.cpan.org/~mob/Language-GolfScript-0.04/|accessdate=20 June 2014}}</ref>
== Language ==
Programs in GolfScript consist of lists of items, each of which is pushed onto the [[Stack (abstract data type)|stack]] as it is encountered with the exception of variables which have code blocks as their value, in which case the code is executed. When a variable assignment (carried out through the placement of a colon before the name of the variable) is encountered, the top item on the stack is popped and assigned to the variable.<ref name="tutorial">{{Cite web|url = http://www.golfscript.com/golfscript/tutorial.html|title = GolfScript Tutorial|accessdate = 25 June 2014|website = GolfScript|date = 18 May 2012}}</ref>
GolfScript attempts to reach its goal of solving problems in as few keystrokes as possible through the use of single symbols to represent high-level operations.<ref name="official website" /> A single symbol can stand for multiple operations depending on the type of the arguments passed to it,<ref>{{Cite web|url = http://www.golfscript.com/golfscript/quickref.html|title = GolfScript Quick Reference|date = 18 May 2012|accessdate = 25 June 2014|website = GolfScript}}</ref> and can even be reassigned and used like a variable.<ref name="tutorial" />
=== Input and output ===
If input is supplied to a GolfScript program, it is pushed onto the stack as a string before the program is executed. Output is provided via the stack's contents being printed when execution of the program finishes.<ref name="tutorial" />
== Examples ==
=== Hello world ===
The traditional [[Hello world program]] can be written in GolfScript as:<ref name="tutorial" />
"Hello World!"
This program has only one item, the string <code>"Hello World!"</code>, which is pushed onto the stack and then printed at the end of the program.
=== Other examples ===
A program to get two numbers from standard input, add them together, and print the result can be written in GolfScript as:<ref>{{cite web|title=popularity contest - Anti-golfscript anti-golf: create a task where GolfScript or J is outgolfed by your (conventional) lang - Programming Puzzles & Code Golf Stack Exchange|url=http://codegolf.stackexchange.com/a/18817/14551|accessdate=20 June 2014}}</ref>
n%'+'*'"#{
}"'n/\*~
== References ==
{{Reflist}}
[[Category:Esoteric programming languages]]
|