The Om Programming Language
Overall impressions & comparisons
- Several readers immediately associate Om with Forth and concatenative programming; one links to a classic article explaining why concatenative programming matters.
- Some see Om as “Forth but simpler,” appreciating how it unifies the operation stream with the stack by pushing outputs back into the stream, making recursion trivial.
- Others compare it conceptually to combinations like Forth+Tcl or reference related “mix” languages (Forth+APL, APL+Lisp, etc.).
- One commenter is positive enough to call the work “outstanding,” while another says they sense something interesting but find it hard to tell what Om is for or where it shines.
Examples, documentation, and website UX
- A recurring complaint: examples are hard to find and not prominently placed; some users initially believe there are no code examples at all.
- Once found, opinions diverge:
- Some think the examples are minimal and not very helpful for newcomers.
- Others defend them as adequate for an early-stage proof-of-concept and appreciate that they illustrate the core ideas if you’re willing to work them through manually.
- Multiple people recommend putting small, concrete examples “above the fold” and de-emphasizing formal syntax/EBNF early on.
- The wide, blurry syntax diagrams draw criticism; some find plain EBNF more readable.
Syntax vs semantics / AST & multi-syntax debate
- One camp argues syntax is relatively unimportant; what matters is semantics and composition. They’re fine with minimal or even “ugly” syntax if the language is powerful.
- Others champion AST-centric or “code as typed AST” approaches (with the possibility of multiple surface syntaxes), citing existing systems doing this.
- A strong counterargument: allowing multiple personal syntaxes is seen as a “Very Bad Idea” because it complicates collaboration, discussion, and line/term references, even if source maps can technically bridge representations.
Language semantics & technical details
- The claim that “any UTF-8 text is a valid Om program” prompts questions about unmatched braces. The answer given: a stray
}is treated as an operator; if undefined, it evaluates to a constant function that just outputs itself and the inputs. - Some like the conceptual minimalism of this model.
Naming & cultural/contextual issues
- Several people confuse this Om with an older, well-known ClojureScript library.
- The sacred/cultural meaning of “Om” in Hinduism is noted; some find reusing such culturally loaded symbols for tech projects questionable, especially as it can feel like exploitation for attention.
- A few jokes riff on the missing “g” (“Omg”) and “ultimate consciousness,” but there’s also discomfort about trivializing the symbol.
Programming languages vs AI & LLM-designed languages
- Some express fatigue with AI topics and welcome more posts about programming languages (including “retro” ones).
- There’s side discussion about whether LLMs will eventually bypass programming languages and write machine code directly; skeptics argue natural language is too imprecise for specifying complex systems.
- An extended tangent describes using an LLM to design a Forth-like, statically typed, contract-checked language on top of the Erlang BEAM, with automated property testing and SMT-based proving.
- Commenters find this “language for LLMs to write in” idea philosophically interesting, though one notes LLMs don’t “use” tools the way humans do.
- Some remain cautious, suggesting that English + testing + iteration won’t fully replace the precision and speed of working in purpose-built programming languages.