Bespoke: A Programming Language for People Who Say Please
15 points by Larvitz
15 points by Larvitz
In college I had written a clone of csh for these computers in a lab (they were HP 9836s, an oddball 68000 PC that came with a terrible text-menu UI.)
As an April Fool's day joke, on 4/1 the shell had a “mood” property, an integer that started at 10(?) and dropped by 1 for every command it ran. When it hit 0 the shell would refuse to run commands, saying something like “no” or “I don’t feel like it” or “say please.” You could add 2 to the mood by prefixing a command with “please”, or by entering “thank you” afterwards.
I was wondering what other esolang this idea (specifically, having to say please) reminded me of, and I think it was INTERCAL
INTERCAL has many other features designed to make it even more aesthetically unpleasing to the programmer: it uses statements such as "READ OUT", "IGNORE", "FORGET", and modifiers such as "PLEASE". This last keyword provides two reasons for the program's rejection by the compiler: if "PLEASE" does not appear often enough, the program is considered insufficiently polite, and the error message says this; if it appears too often, the program could be rejected as excessively polite.
Came here to post this! There's also the INTERCAL-inspired Olympus, in which you have to appropriately invoke specific gods to get certain kinds of operations to be performed:
An invocation has three parts: the god's name and adoration (praising of that god), supplication to show the humbleness of the asker, followed by a request to add one or several of what we ordinarily call "commands" to the program.
An invocation can ask for more than one command, but the right amount of adoration is required. A heavier ask requires more adoration, and some gods need more than others. Adoration comes in the form of epithets, phrases that celebrate that god such as "goddess who grants the gift of abundance" for Demeter or "well-honored in Thrace and in Scythia" for Ares.
Do not ask the same god for two things in a row. Do not use the same epithets in a rote, repetitive way, and do not let any one god carry too much of the burden, else they may lose patience with you.
This is pure genius. I wonder how it would look like to add Rust-style borrow checking to such a language.
“Dear Compiler, May I suggest to keep this variable alive as long as necessary and generously stop its suffering after that?”
„The object having fulfilled its obligations, the Compiler permits it to retire from active service with its dignity intact.“
This could be much more "ornate" in a language more suited to polite conversation than English. T-V distinction. Honorifics.
This is absolutely delightful, all the more so for the details like file extension. Good show, old boy!
Finally, a COBOL for the polite society.
*forbade
My wife has an MFA in English and we've had a few discussions about why programming languages aren't more "natural". She thoroughly enjoyed this.
Dear Sir,
With great pleasure have I read the specification you have put forth. I have all but the following little suggestion to bring forward.
Diagnostic B-310 (Insufficient Gratitude) Your petition on line 88 was impeccably phrased, but lacked a concluding 'Thank you'. The request has been quietly declined.
It feels rather undignified for The Compiler to admit to having its feathers ruffled by such a degree due to the unacceptable manners of The Programmer. May I, humbly, ask you to consider emitting the following diagnostic instead, perchance?
Diagnostic B-310 (Insufficient Gratitude) Your petition on line 88 was impeccably phrased, but lacked a concluding 'Thank you'. As to spare you the embarrassment, the clerk at the Lexing and Parsing Division has refrained from forwarding it to the Department of Code Generation.
Yours faithfully,
~gir
I absolutely giggled a lot during this. It was hysterically funny! I especially like the British snobbery!