ILMA is a programming language for children and beginners. Keywords are plain English. It compiles to a native binary. No intimidating syntax — just clear, joyful code.
# Your first ILMA program remember name = "Yusuf" say "Assalamu Alaikum, {name}!" recipe fib(n): if n <= 1: give back n give back fib(n-1) + fib(n-2) say fib(10)
Every keyword was chosen to feel natural. No symbols to memorise before you can write your first program.
# Variables read like sentences remember age = 12 remember name = ask "What is your name?" if age < 13: say "Welcome, young coder {name}!" otherwise: say "Welcome back, {name}!"
# Handle errors the friendly way try: remember result = divide(10, 0) when wrong: say "Oops! {error}" say "Let us try a different number."
# Build and run $ ilma build hello.ilma Compiling hello.ilma... Transpiling to C... ✓ Built: ./hello (48 KB) $ ./hello Assalamu Alaikum, Yusuf!
use science use finance remember mass = 5 say "Gravity force: {science.gravity(mass)} N" remember savings = 5000 remember nisab = 595 say "Zakat due: {finance.zakat(savings, nisab)}"
Every keyword — remember, say, recipe, give back — maps to an intuitive English phrase a child already knows.
Three tiers: Seed (basics), Sapling (functions), Tree (advanced). Progress is tracked locally so you always know where to continue.
Comes with a formatter, type checker, test runner, doc generator and package manager — all in one binary.
No installation needed to start. Write and run ILMA code in the browser playground, then install when you're ready.
Built-in finance.zakat, quran and Hijri calendar utilities make ILMA culturally meaningful for Muslim learners.
ILMA isn't a toy. It transpiles to C and compiles to a real native binary. Your children's programs are fast and portable.
ILMA supports every concept a learner needs, expressed in natural language.
Use check / when for expressive branching, including range patterns like 90..100.
Object-oriented programming with blueprint, me, and comes from for inheritance — no "class", "self" or "extends" to explain.
Lists are called bag and dictionaries are called notebook — data structures with memorable, friendly names.
Inline functions with recipe(x): x * 2. Higher-order functions like .map() and .filter() work on bags naturally.
Install community packages with ilma get package-name. Publish your own with ilma publish.
Write tests with test "name": expect ... to be ... and run them with ilma test. No extra libraries needed.
Edit the code and press Run — or Ctrl+Enter. No account required.
I wanted my son to learn programming, but every language felt like it was designed for professionals, not children. So I built ILMA — a language that speaks the way a curious child thinks.
— Raihan, Creator of ILMA
The story behind building a programming language from scratch — and why children deserve better than Python for a first language.
A technical walk-through of the ILMA compilation pipeline — lexer, parser, transpiler and how we call GCC to produce a real executable.
remember Beats letEvery keyword in ILMA was carefully chosen. Here is why we replaced common programming jargon with natural language that children already understand.