Monday, December 23, 2019
Categorizing the thousands of programming languages that exist is no easy task, but software trends over the years have revealed two sovereign frameworks: imperative (object-oriented) and declarative (functional) languages.
Declarative: The programmer defines the composition of functions, and lets the run-time optimize algorithms. Examples include Haskell, Erlang, and OCaml.
A classic way to describe the distinction between declarative and imperative programming is that declarative languages let the programmer describe what to do, whereas imperative languages let the programmer define how to do it.
If we extend this idea to a third type of language that lets the programmer define why choices are made, then we have discovered task-oriented programming languages.
Task-oriented: The programmer defines desired states, and lets the runtime resolve the composition of actions. Examples include DMPL, PDDL, and DTProbLog.
The figure below summarizes these paradigms with glorious details about how languages have influenced each other over the years. The types of languages span all over the place, and it all started less than a century ago!
Arrows between languages represent influence. Languages are placed in columns corresponding to their primary paradigm, even though some languages are multi-paradigm.
The Selective Power of Zero Knowledge Proofs (ZKPs) Imagine you’re at a bar. A swanky nice little speakeasy that is more upscale than 1920s...
Pollen Mobile gets a seed round from various VCs and angels to accelerate the development of the world’s first privacy-focused, user owned ...
Digital computer security and connected IoT smart everything h ave become public policy priorities in an increasingly digital and data-...
I was reading this article today about a cool new deathtech web3 metaverse NFT like startup called Remember Metaverse. Cool concept and p...