The future of Programming
If you think about the paradigm shifts in software development; what were they and why?
- It begins with Empirical programming — Domain knowledge to get to an answer.
- Procedure programming — First layer of abstraction. Reuse of a function or procedure.
- Structural Programming — Adds the concept of abstracting modules around a particular structure. Reuse of data.
- Object Programming — Polymorphism and Interface. Combines data and functionality. but abstracts a degree of functional logic so state can follow identity. (deals with functions)
- Functional Programming — Abstracts and isolates state so that code can be easier to test (focused on controlling a type of data)
- Machine Learning — Abstracts away the function. It does this by creating a procedure that can create the function from the data.
- ???Knowledge/Intent Programming??? — Abstracts away the data by just identifying the data sources associated with a problem. To do that intent of what is being solved will need to be procedural-ized. It is already in the works. That is what programming will be in the next 20 years…..
The first 5 happened in O(20) years as computer science was born. It took another 30 years for hardware and communications to reach the point ML could happen. I would expect to see some more rapid shifts until hardware, maybe energy, limits us again.