7 Programming Languages You've Never Heard Of (But Should Know About)

Most developers spend their careers working with a handful of mainstream languages—Java, Python, JavaScript, maybe some C++. But beneath the surface of popular programming lies a fascinating world of languages that pioneered concepts we now take for granted, solved problems in radically different ways, or simply took the road less traveled.

These aren’t just historical curiosities. Each language on this list offers a unique perspective on computation that can make you a better programmer—even if you never write a single line of code in them.

1. APL: Programming with Hieroglyphics

Year: 1966 | Creator: Kenneth E. Iverson (IBM)

Imagine a language where you could sum all elements of a matrix, transpose it, and find its eigenvalues—all in a single line of symbols that look like ancient runes. That’s APL.

1
2
      +/10
55

That one line sums the integers from 1 to 10. The (iota) generates the sequence, and +/ reduces it with addition.

Why It Matters

APL’s array-oriented thinking directly influenced NumPy, MATLAB, R, and Julia. When you write numpy.array([1,2,3,4,5]) * 2 in Python, you’re using concepts Kenneth Iverson pioneered in the 1960s.

The language was so influential that Iverson won the 1979 Turing Award for creating it. Today, APL and its descendants (J, K, Q) power high-frequency trading systems at major financial institutions where its conciseness translates to competitive advantage—fewer bugs in less code.

Mind-bending fact: The entire game of Conway’s Life can be implemented in APL in a single line of code.


2. Forth: The Language That Landed on a Comet

Year: 1970 | Creator: Charles H. Moore

What if a programming language could fit in 8KB of memory, run interactively, and be powerful enough to control spacecraft? That’s Forth.

1
2
: SQUARE ( n -- n² )  DUP * ;
5 SQUARE .  \ prints 25

Forth uses a stack for everything. You push values onto the stack, and operations take values off, compute, and push results back. There are no variables in the traditional sense—just the stack and words (functions) you define.

Why It Matters

In 2014, the Philae lander touched down on a comet—the first controlled landing on a comet in human history. Critical systems on Philae ran Forth. The language’s tiny footprint and real-time capabilities made it perfect for space exploration, where every byte matters and reliability is life-or-death.

Forth also influenced PostScript (the language behind PDFs), and its stack-based model appears in WebAssembly and the Java Virtual Machine.

Mind-bending fact: Forth is so extensible that you can redefine the compiler itself while the program runs.


3. Prolog: Programming by Describing, Not Commanding

Year: 1972 | Creator: Alain Colmerauer (University of Aix-Marseille)

What if instead of telling a computer how to solve a problem, you just described what the problem is? Prolog does exactly that.

1
2
3
4
5
6
7
8
parent(tom, bob).
parent(tom, liz).
parent(bob, ann).

grandparent(X, Z) :- parent(X, Y), parent(Y, Z).

?- grandparent(tom, ann).
true.

You define facts and rules, then ask questions. Prolog figures out the answer through logical inference and backtracking.

Why It Matters

Prolog powered the Japanese Fifth Generation Computer Project, an ambitious 1980s attempt to create AI through logic programming. While that project didn’t achieve its lofty goals, Prolog’s ideas live on everywhere:

  • Early IBM Watson used Prolog for knowledge representation
  • Erlang was first implemented in Prolog (and inherited its pattern matching)
  • Type inference in languages like TypeScript and Rust uses Prolog-like unification
  • SQL shares Prolog’s declarative roots through Datalog

Mind-bending fact: Prolog programs can run “backwards”—define how to build a list from two parts, and Prolog can also split a list into parts.


4. Smalltalk: The Language That Invented Modern Programming

Year: 1972-1980 | Creators: Alan Kay, Dan Ingalls, Adele Goldberg (Xerox PARC)

Before there were windows, icons, menus, and pointers—before there were integrated development environments—before there was object-oriented programming as we know it—there was Smalltalk.

1
2
3
"Everything is an object. Everything is a message."
3 + 4           "sends + message to 3 with argument 4"
'hello' size    "sends size message to string 'hello'"

Why It Matters

The list of things Smalltalk pioneered reads like a history of computing:

  • Graphical user interfaces (windows, scroll bars, pop-up menus)
  • The modern IDE with class browsers and debuggers
  • Object-oriented programming with classes, inheritance, and polymorphism
  • Model-View-Controller (MVC) architecture
  • Unit testing (SUnit became JUnit became every xUnit framework)
  • Agile development practices (Kent Beck developed XP in Smalltalk)

When Steve Jobs visited Xerox PARC and saw Smalltalk, he said it was “like a veil being lifted from my eyes.” The Macintosh followed.

Mind-bending fact: JPMorgan’s Kapital system—one of the largest Smalltalk codebases in the world—handles exotic derivatives trading. Some languages never die; they just handle trillions of dollars.


5. Icon: The Language Where Failure is a Feature

Year: 1977 | Creator: Ralph Griswold (University of Arizona)

Most languages treat failure as an error. Icon treats it as a fundamental control flow mechanism, along with the ability for expressions to produce multiple values.

every write(1 to 10)           # prints 1 through 10
every i := find("e", "hello")  # finds all 'e' positions

The to expression doesn’t just return a value—it’s a generator that can produce multiple values. The every keyword drives iteration by requesting all values.

Why It Matters

Icon’s generators directly inspired Python’s generators and iterator protocol. When you write yield in Python, you’re using an idea Ralph Griswold pioneered in the 1970s.

Icon also introduced goal-directed evaluation, where expressions succeed or fail rather than returning special error values. This influenced pattern matching in modern languages and error handling paradigms.

Mind-bending fact: Icon’s string scanning facility predates regular expressions in mainstream use and some still find it more readable for complex text processing.


6. REXX: The Language Designed for Humans

Year: 1979 | Creator: Mike Cowlishaw (IBM)

In an era of cryptic syntax and rigid formatting, REXX was designed with a radical premise: programming languages should be easy for humans to read and write.

1
2
3
4
say "Enter three numbers:"
pull num1 num2 num3
average = (num1 + num2 + num3) / 3
say "The average is" average

No semicolons. No curly braces. No type declarations. Just readable code that does what it says.

Why It Matters

REXX became the standard scripting language for IBM mainframes, OS/2, and AmigaOS. Its design philosophy—human readability over machine convenience—directly influenced Tcl and Python.

Mike Cowlishaw also gave REXX arbitrary-precision decimal arithmetic, avoiding floating-point surprises. When you write 1/3 in REXX, you get 0.333333... to as many digits as you want, not binary approximation errors.

Mind-bending fact: Billions of lines of REXX code still run daily in banks, insurance companies, and government systems worldwide. The next time you use an ATM, there’s a good chance REXX helped process your transaction.


7. J: APL for the ASCII Age

Year: 1990 | Creator: Kenneth E. Iverson and Roger Hui

After winning the Turing Award for APL, Kenneth Iverson wasn’t done. He created J—all of APL’s power using only ASCII characters.

1
2
3
   +/ i. 10      NB. Sum integers 0-9: 45
   |. 'hello'    NB. Reverse: 'olleh'
   */ 1 + i. 5   NB. Factorial of 5: 120

J uses digraphs (two-character combinations) instead of APL’s special symbols, making it usable on any keyboard while preserving the concise array-oriented style.

Why It Matters

J demonstrates that APL’s power came from its concepts, not its exotic character set. The language introduced several innovations:

  • Tacit (point-free) programming where functions are composed without naming arguments
  • Forks and hooks as composition patterns
  • Gerunds treating verbs as first-class data

J is popular in quantitative finance and data analysis where expressing complex transformations concisely provides both clarity and competitive advantage.

Mind-bending fact: J’s implementation began with a one-page interpreter prototype written in a single afternoon. Roger Hui then expanded it into a full language implementation starting on August 27, 1989—a date J programmers still celebrate.


Why Learn Obscure Languages?

You might wonder: why bother learning languages that few employers will ever ask for?

1. Different Tools for Different Problems

Each language on this list solves problems differently:

  • APL/J: Think in arrays, not loops
  • Forth: Minimize memory, maximize control
  • Prolog: Describe problems, let the computer solve them
  • Smalltalk: Everything is an object, everything is a message
  • Icon: Generators and goal-directed evaluation
  • REXX: Human-readable scripting
  • J: Tacit, point-free programming

Exposure to these paradigms expands your mental toolkit. You’ll recognize when a problem fits a declarative approach, when stack-based thinking simplifies state management, or when array operations eliminate bug-prone loops.

2. Historical Context

Understanding where our tools came from helps us use them better. When you learn that Python generators came from Icon, that Ruby’s object model came from Smalltalk, and that NumPy’s broadcasting came from APL, you see the threads connecting modern programming to its roots.

3. Career Differentiation

Ironically, obscure language knowledge can be valuable precisely because it’s rare. Companies maintaining legacy systems in Forth, Prolog, or REXX struggle to find developers. Financial firms using K/Q (J’s descendants) pay premium salaries for array-thinking programmers.


Try Them Yourself

Every language in this article has a dedicated section on CodeArchaeology with:

  • Hello World tutorials to get started immediately
  • Docker images so you can run code without installing anything
  • Historical context explaining why the language was created
  • Example programs demonstrating core concepts

Start with whichever catches your interest:

  • APL - Array-oriented programming
  • Forth - Stack-based minimalism
  • Prolog - Logic programming
  • Smalltalk - Pure object-orientation
  • Icon - Generators and goal-directed evaluation
  • REXX - Human-readable scripting
  • J - ASCII APL

Or browse our full encyclopedia of 1,200+ programming languages to discover even more hidden gems from computing history.


What obscure language has influenced your thinking the most? Let us know on GitHub.

Last updated: