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 was Netscape’s first product? A web browser that displayed HTML – Hypertext Markup Language. What was its second product? Javascript: a Turing-complete language that brought interactivity to the web, now one of the most popular programming languages in the world.
  • 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.

Highpoints:

  • Much fewer runtime bugs!
    • much better compile-time checking!
  • compositionality!
  • 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