5 ms·
GolfScript: a language for solving problems (holes) in minimum keystrokes
- kevingadd 15y agoHmm. "Whitespace is not special, it actually behaves the same as any other undefined variable, which is nothing. You can set a space to some value and use it like any other variable. This has the potential to cause hard to track down errors if you accidently set it without knowing." Is solving a problem in a minimal number of printable characters really worthwhile if you end up having to expend a huge number of actual keystrokes rewriting it and debugging it? It seems like you could solve problems in a smaller amount of actual, elapsed time in a language like Python. Interesting to see someone focus on the compactness of the code specifically, though. Languages like Brainfuck seem to be compact only because it tends to obfuscate meaning.
- jdp 15y agoBrainfuck is obscure, but only because of its restricted character set. 8 operators is not very expressive and requires large, but eventually recognizable, idioms to get most common tasks done. Languages like J [1] keep the terse syntax but have a much more expressive set of operators. J is also very regular, so once one knows the basic vocabulary the programmer is able to infer the meanings of more complicated operators. Compactness itself is not what obfuscates meaning. [1]: http://www.jsoftware.com/ http://www.jsoftware.com/
- AndyKelley 15y agoThe point isn't to be usable, maintainable, or even useful. The only point to this language is for code golf problems, and for that it appears to be pretty effective. Check the examples.
- jdp 15y agoSuch terse languages have a long history -- going back all the way to APL. Current environments, like K and J, continue the legacy but their syntax only includes glyphs from the ASCII character set as opposed to APL's specialized keyboard. The FALSE [1] and F [2] languages are similar to GolfScript, the former being a stack-based language, minimalistic compiler, and inspiration for Brainfuck. The latter is a more recent implementation and purely functional implementation in K. [1]: http://strlen.com/false-language http://strlen.com/false-language [2]: http://www.nsl.com/k/f/f.htm http://www.nsl.com/k/f/f.htm