Wednesday, March 18, 2026

meta/pseudo/higher-abstraction languages

You are likely looking for one of three things: Specification Languages (languages that describe logic but don't run it), Transpiler Languages (languages designed to compile to many other languages), or Language Workbenches (languages used to create other languages).

Here is a breakdown of common languages in these "higher-level" categories:

1. Specification & Modeling Languages (The "Blueprint" Level)

These languages are higher-level than code. They are used to mathematically prove that a system design is correct before you write a single line of Python or C++.

  • TLA+ (Temporal Logic of Actions): Used heavily by AWS and Microsoft. It doesn't compile to software; it checks your logic for infinite loops, deadlocks, and race conditions. It is a "meta" language for system architecture.
  • Alloy: Similar to TLA+ but focuses on data structures and relationships rather than time/concurrency. It is excellent for modeling database schemas or security policies.
  • UML (Unified Modeling Language): A visual "language" used to abstractly describe software architecture (classes, flows, states) before implementation. Tools like Enterprise Architect can sometimes generate code from UML diagrams.
  • Z Notation: A formal specification language based on set theory. It is used in safety-critical systems (like trains or medical devices) to mathematically define exactly what software should do.

2. Universal / Transpiler Languages (The "Write Once, Compile Anywhere" Level)

These are "meta" languages in the sense that they sit above standard languages. You write in them, and they output valid code in C++, JavaScript, Python, etc.

  • Haxe: The king of this category. It is a strictly typed language that can compile to C++, C#, Java, Python, PHP, Lua, and JavaScript. It is often used in game development to target every platform simultaneously.
  • Nim: A language that looks like Python but compiles to C, C++, or JavaScript. It is often used as a "meta" language to generate high-performance C code without dealing with C's complexity.
  • TypeScript: Technically a "meta" language for JavaScript. It adds a layer of types on top of JS and then "transpiles" down to raw JavaScript that browsers can understand.

3. Language Workbenches (The "Language for Making Languages" Level)

If you want to create your own syntax or a Domain Specific Language (DSL), you use these tools.

  • Racket: A dialect of Lisp designed explicitly for Language Oriented Programming. It allows you to easily create new programming languages with their own syntax and rules.
  • JetBrains MPS: A tool that lets you create "projectional" languages. Instead of parsing text, you edit the Abstract Syntax Tree directly. It is used to build highly specific languages for industries like insurance or electrical engineering.
  • LLVM (Intermediate Representation): While not a language you typically write by hand, LLVM IR is the "meta language" that languages like Rust, Swift, and C++ all compile into before becoming machine code.

4. Pseudo-Code & Syntax Definition (The "Human" Level)

These are used to describe algorithms or language rules to humans, not computers.

  • Standard Pseudocode: There is no one compiler for this, but it typically uses a Pascal-like or Python-like syntax (e.g., IF x > 10 THEN PRINT "High").
  • BNF / EBNF (Extended Backus–Naur Form): This is a metalanguage used to describe the grammar of other languages. If you look up the official specification for Java or Python, you will see the rules written in EBNF.

Summary Recommendation

  • If you want to design a system without coding it: Look at TLA+ or Alloy.
  • If you want to write code that runs everywhere: Look at Haxe.
  • If you want to invent your own language: Look at Racket.




Haxe is a high-level cross-platform programming language and compiler that can produce applications and source code for many different computing platforms from one code-base. It is free and open-source software, released under an MIT License.[2] The compiler is written in OCaml. It can be run in server-mode to provide code completion for integrated development environments (IDEs)


No comments: