Programming languages borrow their syntax from two sources: mathematics and other programming languages. Both are poor models for a ten-year-old who has never seen either. ILMA borrows its syntax from a third source: the way children already talk.

Every keyword in ILMA went through a deliberate design process. This post explains the reasoning behind the most important choices — and what alternatives were considered and rejected.

remember instead of let / var / const

The conventional keywords for declaring a variable — let, var, const, dim — are all abbreviations or abstract terms. None of them suggest what a variable actually does: hold a value in memory so you can use it later.

remember does. When you tell a child "remember this number," they know what you mean. When they type remember age = 12, they are doing exactly what the word says. The variable age will remember the value 12 for as long as the program runs.

This is not a trivial choice. In user testing, children who learned ILMA were able to explain what a variable is — in their own words — after a single lesson. Children learning Python took significantly longer to internalise the concept, because the keyword = suggests equality rather than assignment, and there is no keyword at all to reinforce the idea.

say instead of print

print is a historical artefact — it referred to printing to a paper teletype terminal. In 2026, a child's first association with "print" is a printer. Output to the screen is something you say. You say things to people. You say things to computers.

say also reads more naturally as a sentence. say "Hello" is a complete, grammatical English instruction. print("Hello") is not — it's a function invocation dressed up as English.

Every ILMA keyword should read as a natural English instruction, not a technical term with an English veneer.

recipe instead of def / function

A function in most languages is called def (short for "define"), function, fun, or fn. None of these tell a child what it actually is: a reusable set of instructions.

A recipe is a perfect metaphor. It has a name ("chocolate cake"). It takes ingredients (parameters). It has steps (the body). When you follow it, you get a result. You can follow it again with different ingredients and get a different result. The metaphor is complete and accurate. recipe fib(n) reads exactly the way you would describe it to a child: "here is a recipe called fib that takes one ingredient n."

give back instead of return

return is a reasonable English word, but it obscures the direction of flow. When you use give back, the direction is clear: you are giving something back to whoever asked. The phrase emphasises the transactional nature of function calls — you asked a recipe to do work, and now it is giving you back a result.

Two words instead of one was a risk. Would it feel verbose? In practice it reads better:

comparison
## Python
def double(x):
    return x * 2

## ILMA
recipe double(x):
    give back x * 2

The ILMA version is four characters longer — but it reads as a complete, understandable sentence. The Python version requires you to already know what def and return mean.

bag instead of list / array

list is actually not bad — it is an English word with an obvious meaning. But array is a mathematical term with no obvious everyday meaning. ILMA uses bag because bags are something children interact with every day. A school bag holds multiple things. You can add to it. You can take things out. You can look through it. The metaphor maps perfectly onto list operations.

bag.add(item) reads like you are physically adding something to a bag. bag.remove(item) reads like you are taking it out. for each item in bag: reads like "for each thing in the bag, do this."

notebook instead of dict / map / object

A notebook has labelled pages. Each page (key) has something written on it (value). You look things up by their label. You add new pages. You can tear out a page. The metaphor maps cleanly onto dictionary operations.

dict (short for dictionary) is also a reasonable metaphor — you look up words by their name. But it suggests only lookup, not modification. A notebook suggests both — you write in it, erase things, add pages. It captures the mutable, living nature of the data structure better.

otherwise instead of else

else works. It is short, recognisable, and almost universal. We considered keeping it. But otherwise is clearer about what it means: "otherwise — if the first thing was not true — do this." A child reading otherwise understands it without being told. A child reading else needs to be told it is a programming keyword that means "otherwise."

The compound form otherwise if is cleaner than elif (Python) or else if — two words that look like they should be separate but are treated as a unit. In ILMA, otherwise if reads as a single grammatical phrase.

blueprint instead of class

class is one of the least intuitive keywords in object-oriented programming. A class is not a school class. It has nothing to do with classification in the everyday sense. It is an abstract technical term.

A blueprint, on the other hand, tells you exactly what the thing is: a plan for building something. A blueprint describes the shape, properties and behaviour of objects — which is exactly what a class does. blueprint Dog says "here is the blueprint for creating dogs." Every dog you create from this blueprint will have the same structure, but may have different values for me.name or me.breed.

The principle behind all of these

Every ILMA keyword satisfies a simple test: could you explain what this keyword means to a seven-year-old without any programming context, using only the keyword itself as a hint?

remember: yes. say: yes. recipe: yes. give back: yes. bag: yes. notebook: yes. blueprint: yes. otherwise: yes.

var: no. def: no. return: mostly not. dict: no. class: no. elif: no.

This is not a perfect measure. Some ILMA keywords need explanation regardless — for each ... in requires understanding what iteration is. But the keyword does not add to the confusion. It maps naturally onto the concept once the concept is introduced.

Programming is fundamentally about telling a machine what to do. The closer the language is to how humans already describe instructions, the lower the barrier to entry. ILMA's keywords are the first step in closing that gap.

Written by Raihan • March 2026

Try ILMA More Articles