DEV Community

Cover image for I Built a Programming Language Where the Code is Plain English
abneesh singh
abneesh singh

Posted on

I Built a Programming Language Where the Code is Plain English

What if your code looked like this?

name = "Abneesh"
age = 20
scores = [95, 87, 92]
If age is greater than 18 then
    Say "Welcome, " + name
Otherwise
    Say "Access denied"
End
For each score in scores
    Print score
    Say score
End
Enter fullscreen mode Exit fullscreen mode

No semicolons. No curly braces. No => arrows. Just English.
This is EPL — the English Programming Language. It's a fully-featured language that compiles to native binaries via LLVM, transpiles to JavaScript/Kotlin/Python, ships Android and iOS projects, and has a built-in web framework — all from a syntax anyone can read.

I'm Abneesh Singh, and I've been building EPL as an open-source project. Here's what it can do today at v10.1.

Install and Run in 30 Seconds

pip install eplang
echo 'Print "Hello, World!"' > hello.epl
epl hello.epl
Enter fullscreen mode Exit fullscreen mode

Or jump into the interactive REPL:

epl repl
Enter fullscreen mode Exit fullscreen mode

Build a Web App in Plain English

(Note: Web apps, APIs, and database examples require a local environment since the online playground doesn't support starting servers on ports or local file system access. You can run these locally with epl serve.)
EPL has a built-in web framework. Here's a complete web app with multiple pages:

Create WebApp called myApp
Route "/" shows
    Page "Welcome to EPL"
        Heading "Hello from EPL! 🚀"
        SubHeading "The English Programming Language"
        Text "EPL makes programming as easy as writing English."
        Button "Click Me"
        Link "About Page" to "/about"
        Link "API Demo" to "/api/info"
    End
End
Route "/about" shows
    Page "About EPL"
        Heading "About EPL"
        Text "Created for everyone — from students to professionals."
        SubHeading "Features"
        List ["Simple English syntax", "Web framework built-in", "LLVM compiler for speed", "Classes and OOP support"]
        Link "Back to Home" to "/"
    End
End
Route "/api/info" responds with
    Send json Map with name = "EPL" and version = "10.1" and status = "ok"
End
Start myApp on port 3000
Enter fullscreen mode Exit fullscreen mode

Run it:

epl serve app.epl
Enter fullscreen mode Exit fullscreen mode

Open http://localhost:3000 — you've got a working web app with pages, navigation, and a JSON API.

Database Applications

db = db_open("app.db")
db_execute(db, "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, email TEXT, age INTEGER)")
db_execute(db, "INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 30)")
db_execute(db, "INSERT INTO users (name, email, age) VALUES ('Bob', 'bob@example.com', 25)")
Display "--- All Users ---"
users = db_query(db, "SELECT * FROM users")
For each user in users
    Display user
End
Display "--- Single User Lookup ---"
alice = db_query_one(db, "SELECT name, email FROM users WHERE name = 'Alice'")
Display alice
db_close(db)
Enter fullscreen mode Exit fullscreen mode

Functions and OOP

Note: Simple function with parameters
Function greet takes name
    Print "Hello, " + name + "! Welcome to EPL"
End
Call greet with "Abneesh"
Call greet with "World"
Note: Recursive function
Function factorial takes n
    If n <= 1 then
        Return 1
    End
    Return n * factorial(n - 1)
End
Print "Factorial of 5 = " + factorial(5)
Enter fullscreen mode Exit fullscreen mode
Note: Classes and Objects
Class Animal
    name = "Unknown"
    sound = "..."
    Function speak
        Say name + " says " + sound
    End
End
dog = new Animal
dog.name = "Rex"
dog.sound = "Woof!"
dog.speak()
cat = new Animal
cat.name = "Whiskers"
cat.sound = "Meow!"
cat.speak()
Enter fullscreen mode Exit fullscreen mode

A Full-Stack To-Do App (30 Lines)

This is a complete to-do app with a form, persistent storage, and delete functionality:

Create WebApp called todoApp
Route "/" shows
    Store form "task" in "tasks"
    Page "EPL To-Do App"
        Heading "EPL To-Do List"
        SubHeading "A full-stack app built in plain English"
        Form action "/"
            Input "task" placeholder "What needs to be done?"
        End
        Say items from "tasks" delete "/delete"
    End
End
Route "/delete" shows
    Delete from "tasks" at 0
    Redirect to "/"
End
Route "/api/tasks" responds with
    Fetch "tasks"
End
Start todoApp on port 3000
Enter fullscreen mode Exit fullscreen mode

That's a working full-stack app. With a form, persistent storage, a delete endpoint, and a JSON API. In 25 lines of English.

Cross-Platform: One Codebase, Multiple Targets

epl android app.epl          # Android Studio project (Kotlin)
epl android app.epl --webview # Ship the real web app in a native WebView
epl ios app.epl               # Xcode project (SwiftUI)
epl ios app.epl --webview     # WebView shell for iOS
epl desktop app.epl           # Compose Multiplatform app
epl desktop app.epl --webview # Native window with pywebview
Enter fullscreen mode Exit fullscreen mode

For apps that use routing and databases, --webview ships your real web app unchanged inside a native shell — nothing gets dropped.
EPL also transpiles to other languages:

epl js app.epl                # JavaScript
epl python app.epl            # Python
epl kotlin app.epl            # Kotlin
epl build app.epl             # Native binary via LLVM
Enter fullscreen mode Exit fullscreen mode

Native Web Styling (Not Raw HTML)

EPL has first-class language features for CSS, SEO metadata, and interactive events — you don't need to write raw HTML or CSS:

Route "/" shows
    Head
        Description "My EPL-powered website"
        Keywords "epl, programming, english"
        Font "Inter" weights "400,600"
        Favicon "/icon.png"
    End
    Page "Home"
        Style "#hero"
            set background to "linear-gradient(135deg, #667eea, #764ba2)"
            set color to "white"
            set padding to "4rem"
            On hover
                set transform to "scale(1.02)"
            End
            On mobile
                set padding to "2rem"
            End
        End
        Div id "hero"
            Heading "Welcome to EPL"
            Button "Get Started" on click navigates to "/docs"
        End
    End
End
Enter fullscreen mode Exit fullscreen mode

Event handlers compile to CSP-safe JavaScript. Run epl serve app.epl --csp for a strict Content-Security-Policy with per-response nonces.

MCP Server for AI Tools

EPL ships an MCP (Model Context Protocol) server that gives Claude, Cursor, VS Code Copilot, and other AI tools real-time access to EPL's parser, interpreter, and documentation.
Configure it in your AI tool:

{
    "mcpServers": {
        "epl": {
            "command": "python",
            "args": ["-m", "epl.mcp_server"]
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Available tools: epl_syntax_reference, epl_validate, epl_run, epl_transpile, epl_examples, epl_error_lookup.

The MCP server is also available on Smithery.

VS Code Extension

The official extension on the VS Code Marketplace provides:

  • Syntax highlighting for .epl files
  • Real-time diagnostics and error reporting
  • IntelliSense for keywords, builtins, and imports
  • Hover documentation for 725+ built-in functions
  • Semantic tokens from the Language Server
  • Token-aware find-references and rename

- Run, watch, and type-check commands

Developer Tooling

epl new myapp --template web      # Scaffold a web app
epl new myapp --template auth     # Auth API with JWT
epl new myapp --template chatbot  # AI chatbot
epl new myapp --template android  # Android app
epl fix app.epl                   # Error diagnostics (55+ offline patterns)
epl fix app.epl --fix             # Auto-apply corrections
epl watch app.epl                 # Auto-reload on file changes
epl doctor                        # Environment health check
epl fmt app.epl                   # Code formatter
epl check app.epl                 # Static type checker
epl playground                    # Opens the online playground
Enter fullscreen mode Exit fullscreen mode

Production Deployment

EPL supports real production deployment with WSGI/ASGI adapters:

pip install "eplang[server]"
epl serve app.epl                                   # Dev server
epl deploy k8s app.epl --image myapp:1.0 --tls      # Kubernetes
epl deploy aws app.epl                               # AWS ECS
epl deploy gcp app.epl                               # Google Cloud Run
epl deploy azure app.epl                             # Azure Container Apps
Enter fullscreen mode Exit fullscreen mode

Every deployable EPL server includes health endpoints, Prometheus metrics, structured logging, and environment variable configuration.

The Ecosystem

EPL comes with 22 official packages covering web, data, AI, security, and infrastructure:
|
Category
|
Packages
|

|

**
Web & API
**
|
epl-web
,
epl-http
|
|
**
Data & DB
**
|
epl-db
,
epl-dataframe
,
epl-collections
|
|
**
AI & ML
**
|
epl-learn
,
epl-array
,
epl-plot
|
|
**
Security
**
|
epl-auth
,
epl-crypto
,
epl-validator
|
|
**
Infrastructure
**
|
epl-cloud
,
epl-cache
,
epl-email
|

epl install epl-auth
epl install epl-math
Enter fullscreen mode Exit fullscreen mode

Need something from NPM? Use the JavaScript bridge:

Use javascript "axios" as axios
response = axios.get("https://api.example.com/data")
Print response.data
Enter fullscreen mode Exit fullscreen mode

Getting Started

pip install eplang
Enter fullscreen mode Exit fullscreen mode

Write your first program, scaffold a project, or try the online playground:

epl new myapp --template web
cd myapp
epl serve main.epl
Enter fullscreen mode Exit fullscreen mode

Links

pip install eplang
Enter fullscreen mode Exit fullscreen mode

Star the repo on GitHub if it resonates with you.

Top comments (0)