Show HN: I created a language called AntiLang – breaking all the conventions

Overall reception

  • Many found the idea amusing and nostalgic, evoking the feeling of being a beginner reading confusing code.
  • Reactions ranged from “fun but mind-bending” to “I had to close the tab immediately.”
  • Several argued it doesn’t truly “break conventions,” but is mostly a normal language with reversed or postfix-ish syntax.

Similarity to other languages

  • Multiple commenters noted strong resemblance to Smalltalk, Forth, Factor, APL-family, PostScript, RPL, and K, especially in postfix/control-flow style.
  • Some said the code was surprisingly readable, particularly to those with Forth/RPN experience.
  • Others commented that, compared to APL or INTERCAL, AntiLang is relatively tame.

Postfix notation and cognition

  • One side argued postfix/RPN is objectively easier and more efficient (fewer keystrokes, clearer structure, fewer ambiguities).
  • Others countered that infix is easier for most humans due to familiarity; postfix adds cognitive load even if efficient once mastered.
  • There was discussion of how mathematicians and programmers conceptualize functions (as verbs vs nouns), and whether typical function notation is driven by natural-language word order (SVO vs SOV).

Design, syntax, and naming suggestions

  • Suggestions included:
    • Renaming keywords to better fit postfix (“then/otherwise” instead of if/else, “go on” for while, “over” for assignment).
    • Changing assignment vs equality operators (e.g., = vs <-, =/=) for both sanity and shock value.
    • Starting conditionals from else or using unless.
    • Alternative names like “MirrorLang,” “Tenet,” or “jumbled.”

“Evil” and esoteric feature ideas

  • Many proposed deliberately hostile or absurd features:
    • COMEFROM semantics inspired by INTERCAL, interceptors, and event-like control flow.
    • Randomized execution or probabilistic commands.
    • Trailing or balanced-whitespace-sensitive syntax; whitespace-encoded line numbers.
    • Locale-dependent decimal separators (. vs ,) and localized operator/keyword names.
    • Fuzzy variable name matching to eliminate undefined-variable errors.
  • The creator frequently responded by opening GitHub issues for the more diabolical proposals.