Math vs Programing, What-is vs How-to

By Xah Lee. Date: . Last updated: .

there are 2 major forces in computer science. What Is, and How To.

What Is is a axiomatic description of how things are. It is math, basically. Equations, algebra.

How To is step-by-step instruction. For example: algorithm. Computer language code, in general, are How To.

WHAT IS, is typically easy to understand. Because, it describes. Shows you the character. Shows you What It Is.

How To, is typically impossible to understand. The longer, the less comprehensible. For example, software source code.

The problem with What Is, is that it doesn't tell you how to. Say, you know what's a car. You don't know how to build it.

The problem with How To, is that you don't understand it. Say, you are given instructions to build car from scratch.

Automatic Translation between What Is and How To, is almost the ultimate goal of computer science. Or, one of the most fundamental topic.

Programing language docs, when well written, is What Is. It describes the language's functions and other parts, describes, the system.

Bad language docs by majority of programers, is 50% How To. Because coders don't understand their code. They just paraphrase the source code.

languages like #prolog, #coq, are What Is languages. You tell it axioms, and it answer yes/no questions.

functional language like haskell, are declarative languages at micro level. As soon as you apply a lambda, it's an instruction. Prolog would be a declarative lang.


also, basically ALL programing language doc are descriptive. I can only think of Wolfram Language doc being declarative. (all my tutorials, tries to be as much as declarative as possible.)

See also: Technical Writing as Symbolic Logic: Clojure Intern Symbol