Design principles for programming languages, Part 2a: Readability, Expressability, Concision, and Regularity

Details can denote craftsmanship, as in this ceiling from Quarto Dorado, Alhambra. (source)

1. Readability

(perl)@a = [1,2,3];          # Create an array as denoted by at-sign
$thing = $a[$index]; # Referring to 1 element; use dollar-sign

Simplicity is not Readability

(Malebolge)(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)”Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:’8dc
(Inform7)The Atrium is a room in the mansion. The description is "A stately atrium, full of attractive trinkets." It is north of the main room. It is brightly lit.Instead of taking something while in the atrium, say "You daren’t touch anything in this posh room, lest the butler thrash you."

2. Expressability

(this is not valid Inform7)The Atrium is in the mansion. The room’s brightly lit, and its description is "..."
(Java)import textadventurelibrary.*;
room = new Room(mansion);
room.setLighting(Lighting.BRIGHT);
room.setDescription(“...”);
...
  1. I want to read numbers from this file and compute the Fourier transform.
  2. Okay, I wrote a loop which , and figured out all the sin and cos calls. But I had to convert from strings to numbers, and looks kinda dorky.
  3. Oh, wait, there’s a parameter which reads in the file as numbers.
  4. Oh, there’s an fft function, and it takes arrays as input. Duh.
  5. Oh, hey, if I use that, I can stick it on the GPU with one extra line of code.

Simplicity is not Expressability

(LISP)atom                   => A literal: t, nil, numbers, and "strings"(func arg1 arg2 ...)   => Evaluate each argument, then evaluate func
on the results
(defun funcname => A new atom that can be used elsewhere
arglist funcbody)

3. Concision

(Ook!)Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
(Golfscript)n(6?,:|2>.{|%2>-}/n*

4. Regularity

(Javascript)"" == 0    (because an empty string is false-ish, and so is zero)
0 == "0" (because the 0 is upconverted to a string)
"" != "0" (because why would they be equal?!)
if (x = 1) {
...
}

Stay tuned!

Footnotes

--

--

--

Obligate infovore. All posts made with 100% recycled electrons, sustainably crafted by artisanal artisans. He/him/his.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Vanilla is great!

A picture depicting videogames, searching for jobs, a bed, coding and python/javascript.

Another case of Keep It Simple Stupid.

Dealing with Date and Time in Java

A Comprehensive Guide to Creating a Basic Reddit Bot [Part 3]

Why API Testing is Important in our Testing Domain

Encrypting Secret Data Stored in ETCD Database.

Salesforce Connected Apps and OAuth Tokens

6 Best CompTIA Linux+(Plus) Certification Exam (XK0–004) Courses and Practice Tests in 2021

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Alex Feinman

Alex Feinman

Obligate infovore. All posts made with 100% recycled electrons, sustainably crafted by artisanal artisans. He/him/his.

More from Medium

Fix Windows 10/11 Icons Not Showing Up / Working as Expected

How to integrate Datadog into your web application in less than 1 day

How To Improve Collaboration Between Developers And Testers

Top 10 Reasons To Choose Swift For App Development