Abstraction goes both ways

Abstraction is critical to programming. It is the core activity we use to make more interesting and complex programs. Most of us understand abstraction as finding commonalities between different concepts, and modeling these as an inheritance hierarchy. If you are a retail store, then toy cars, trash cans, and pillows are all sellable items.  Thus, … Read moreAbstraction goes both ways

The opposite of simple is not complex

Studying biology or economics, one finds organisms, ecosystems, and economies that are more than the sum of their parts. Somehow many interacting agents with limited information produce increasing organization, creating amazing complexity out of relatively simple components. In computing, if we want to harvest this potential for surprise, see results this interesting, we have to … Read moreThe opposite of simple is not complex

A third way

Programming is about translating what a human wants into instructions a computer can understand. Or is it? Thinking down this path, there are two ends of a programming language spectrum. A language can be close to the computer’s perspective: imperative languages that declare data, move and store data, carry out instructions in a fixed order. At … Read moreA third way