Write-only language
In computer humor, a write-only language is a pejorative term for a programming language alleged to have syntax (or semantics) sufficiently dense and bizarre that any routine of significant size is too difficult to understand by other programmers and cannot be safely edited.[1] Likewise, write-only code is source code so arcane, complex, or ill-structured that it cannot be reliably modified or even comprehended by anyone with the possible exception of the author.[1]
A more rarely used term is read-only language, which refers to systems with so many boundary conditions that the code can only be written through constant experimentation and not from first principles. The resulting code is perfectly readable by other programmers, but any attempt to duplicate it in another context will fail. The canonical example of a read-only language is AppleScript.[2]
Description
Write-only language is also referred to as line noise, suggesting that the code looks like spurious characters from signal noise in the communication line. In such a language it would be more difficult to read, understand, and modify existing source code than to start over and rewrite it from scratch.
Languages that are often derided as write-only include APL, DDT, Perl,[3] Forth, TECO,[4] Mathematica and regular expression syntax used in various languages. Attributes that these languages have in common include a large set of operators and a syntax which encourages, or at least permits, the writing of very dense code. Some also have syntaxes which are very different from other languages, and some use different characters sets. The code below for example is Conway's Game of Life as written in APL2:[5]
⍎'⎕',∈N⍴⊂S←'←⎕←(3=T)∨M∧2=T←⊃+/(V⌽"⊂M),(V⊖"⊂M),(V,⌽V)⌽"(V,V ←1¯1)⊖"⊂M'
Three related but different concepts:
- Spaghetti code
- Source code in any language that has a complex and tangled control structure, such that it is difficult to understand.
- Obfuscated code
- In any language, programmers may deliberately obfuscate code to conceal its purpose (security through obscurity) or its logic, in order to prevent tampering, deter reverse engineering, or as a puzzle or recreational challenge for someone reading the source code.
- Deliberately confusing languages
- Such as INTERCAL and Brainfuck that are not intended for practical use, but to challenge and amuse programmers.
Read-only language
AppleScript has been described as a read-only language due to considerable implementation differences between different programs on the Macintosh platform. In theory, AppleScript is a simple language with considerable syntactic sugar that makes code easy to read and write. However, the core of the system, especially the system known as "chunking" and the objects it works on, has to be implemented within the third-party applications that support scripting. This support is not easy to add, and applications pick and choose which portions of the chunking system to implement. This leads to essentially random support within applications.
Several other languages can be described as read-only, including COBOL.[6]
See also
- Spaghetti code
- Obfuscation (software)
- Write-only memory
- International Obfuscated C Code Contest
- There's more than one way to do it, a motto of the Perl programming language
References
- 1 2 "write-only language". Jargon File. Retrieved 2015-03-28.
- ↑ "Read Only Language". Retrieved 2015-03-28.
- ↑ "Write Only Language". Retrieved 2015-03-28.
- ↑ Finseth, Craig A. (2006). The Craft of Text Editing. Lulu. ISBN 978-1-4116-8297-9.
- ↑ "Conway's Game of Life in one line of APL". Dr.Dobbs. February 2006. Retrieved 2015-03-28.
- ↑ Osterman, Larry (2011-09-27). "Read-Only and Write-Only computer languages". MSDN Blogs. Retrieved 2015-03-28.