Why a Declarative, Functional DSL?
Why are you developing a language? Can’t you just write apps?
In computer science, languages are foundational. If you want differentiated applications, you need a differentiated stack beneath those applications. At the bottom of the stack you will usually find some sort of programming language.
- What was Adobe’s first product? Not Photoshop. It was PostScript: a Turing-complete language for printing. It laid the groundwork for future technologies, like PDF and fonts, and future applications, like Illustrator.
- What was Microsoft’s first product? Not Windows. It was BASIC: a Turing-complete consumer-grade language for home programmers, and the first high-level programming language available for the Altair 8800 microcomputer.
- What was Oracle’s first product? An SQL RDBMS: a Turing-complete language (if you add PL/SQL) for data management, now an essential part of every programmer’s toolkit.
What do telephone switches and Whatsapp have in common? They run on Erlang/OTP: a Turing-complete functional language for high-availability telecommunications protocols. Every phone call you make, every Whatsapp message you send, runs on Erlang.
- Spreadsheets are sort of a programming language. VisiCalc (Apple II), Lotus 1-2-3 (DOS), Excel (Windows): Turing-complete consumer-grade applications for business users to crunch numbers, and the foundation for modern enterprise.
To be pedantic, languages are not quite at the bottom of the stack. There is a sub-basement: mathematics. They call this the Curry–Howard correspondence.
So it is fair to say: if software is eating the world, where does its appetite come from? From math.
This needs to be well-answered.
- Much fewer runtime bugs!
- much better compile-time checking!
- Much fewer logic bugs!
- formal verification!
- better testing!
Where do languages likes C, Go, or Solidity not measure up?
to be answered.
Comparing Logic vs Functional Programming for Contracts
to be answered