Bespoke: A programming language for people who say please
Bespoke: A Programming Language for People Who Say Please
Modern software development has adopted a remarkably aggressive unfortunate tone.
Consider our daily vocabulary: we kill processes, abort transactions, throw exceptions, and break loops. We treat the machine like a subservient animal, ordering it to return as if it were a well-trained Labrador, and we seize locks without so much as a "by your leave." Even in the most "user-friendly" languages, we communicate in clipped, rude imperatives: let x = 0;.
To remedy this social decay, I propose Bespoke: a statically typed language designed for the uncompromisingly civilised developer. It is built on the premise that machine execution should never necessitate the abandonment of good manners.
Informally dubbed The Queen’s Code (specifically Victoria’s, as the etiquette committee views the 20th century with suspicion), Bespoke uses the .charming file extension. Be warned: the compiler reserves the right to be visibly disappointed in your conduct.
Note: This is entirely unrelated to Josiah Winslow’s 2025 esolang, Bespoke, which utilizes word lengths. We sincerely apologise for any social confusion this may cause.

🧭 Table of Contents
- The Compiler as a Peer
- A Refined Type System
- The Etiquette of Mutation
- Deliberative Control Flow
- The Bespoke Experience
The Compiler as a Peer <a name="the-compiler-as-a-peer"></a>
Bespoke operates on a fundamental truth: the compiler is an esteemed collaborator, not a menial servant. Consequently, every instruction must follow a strict social protocol:
- The Address: Open with a formal greeting.
- The Request: State the purpose with utmost courtesy.
- The Acknowledgement: Conclude with an approved sign-off.
Depending on the task, you must address the correct entity:
- The Compiler: For allocations and updates.
- The Output Console: For terminal output and errors.
- The Host Environment: For filesystem and runtime services.
- Shared Objects/Threads: Direct correspondence.
The Anatomy of a Request
A simple integer declaration is no longer a terse int carriageCount = 0;. Instead, it becomes:
Dear Compiler, Would you be so exceptionally kind as to allocate a slot for An Integer Number known henceforth as carriageCount, initialised with the value 0?
While more verbose, this approach is significantly less likely to foster a hostile working environment.
Syntax Rules:
- Statements must end with full stops (.).
- Inquiries must end with question marks (?).
- Blocks must conclude with a formal sign-off.
Semicolonsare strictly forbidden; they are viewed as the linguistic equivalent of slamming a door.
A Refined Type System <a name="a-refined-type-system"></a>
Bespoke is statically typed because pretending a value is something it is not is simply dishonest. To maintain decorum, "vulgar" abbreviations like int or bool are banned in favour of full titles.
| Bespoke Type | Common Equivalent | Example |
|---|---|---|
An Integer Number | 64-bit signed int | 42 |
A Rational Fraction | Arbitrary-precision ratio | |
A Textual Passage | UTF-8 String | "Good day to you." |
An Individual Character | Unicode scalar | '£' |
A Truth Value | Boolean | Quite True |
A Distinguished Colour | First-class colour | Colour.BritishRacingGreen |
A Regrettable Circumstance | Exception | LedgerMissingMisfortune |
Linguistic Standards
The lexical analyser strictly enforces British orthography.
Colouris the only acceptable namespace for colours;Coloris viewed as evidence of a deficient education.Initialisationmust retain its 's'.- An
optimisermay remove redundant work, but it will never optimize it.
Regarding truth values, there are only two: Quite True and Patently False. A third state, Perhaps, Though I Should Not Like to Presume, was considered for database integration but discarded for being insufficiently deterministic.
The Etiquette of Mutation <a name="the-etiquette-of-mutation"></a>
While Bespoke acknowledges the functional argument that mutable state is troublesome, a total ban is considered uncouth. Mutation is permitted, provided the programmer apologises for the inconvenience.
Correct Mutation:
"Dear Compiler, If it causes you no undue hardship, might we trouble you to update the value of
carriageCountto 42?"
Incorrect Mutation:
carriageCount = 42 Diagnostic B-101: Blunt Imperative. Compilation is suspended until the developer has spent time reflecting on their behaviour.
Memory Management
Automatic garbage collection is not a right, but a favour. One must formally petition the groundskeeper:
Dear Host Environment, Pardon the intrusion, but might the groundskeeper occasionally tidy away any allocations no longer reachable by the programme, at your leisure?
Manual deallocation is available for performance-critical tasks, though discarding memory without a sincere apology is considered undefined behaviour—and, more importantly, common.
Deliberative Control Flow <a name="deliberative-control-flow"></a>
In most languages, an if statement is an accusation: this is true, now do this. Bespoke replaces this with a hypothetical question posed to a ceremonial court.
Example Logic:
Should it please the court to consider whether carriageCount is strictly greater than 10, Dear Output Console, Kindly convey to the standard stream the Textual Passage "Capital progress, indeed!"
Or, should the contrary prove true, Dear Output Console, Kindly convey to the standard stream the Textual Passage "A modest showing, regrettably."
The court is purely ceremonial and cannot be lobbied.

The Bespoke Experience <a name="the-bespoke-experience"></a>
To ensure your code meets the standards of the etiquette committee, please follow this checklist:
- All entities addressed by their proper titles.
- No semicolons used to "slam doors."
- All mutations accompanied by a sincere apology.
- British spelling used throughout (no 'z' in optimiser).
- Proper sign-offs included for all blocks.
A Complete Programme
Here is how a polite programme might appear in a .charming file:
Dear Compiler,
Would you be so exceptionally kind as to allocate a slot for
An Integer Number known henceforth as carriageCount,
initialised with the value 0?
Dear Host Environment,
Pardon the intrusion, but might the groundskeeper
occasionally tidy away any allocations no longer
reachable by the programme, at your leisure?
Should it please the court to consider whether carriageCount is
strictly equal to 0,
Dear Output Console,
Kindly convey to the standard stream the
Textual Passage "The programme has commenced with grace."
Your humble servant,
The Developer.
Sincerely,
The Programme.