3 ms·
The direction in which programming has developed over the past 70-some years is ever-increasing levels of abstraction. 40 years ago, good old C was considered
by cimmanom 9y ago
The direction in which programming has developed over the past 70-some years is ever-increasing levels of abstraction.
40 years ago, good old C was considered a "high-level" programming language. Now it's about as "close to the metal" as 99% of software developers will ever have to get (outside of toy assemblers in school).
Now the highest levels of abstraction programmers work with on a daily basis are with scripting languages like Python that completely abstract away things like pointers and memory management, and that run on virtual machines and thus across completely unrelated operating systems or even CPU architectures. Many of these languages have rich ecosystems of packages that abstract away much of the tedious complexity of everything from making an HTTP request and parsing the response to reading and writing CSV files.
But even higher levels of abstraction are available to non-programmers - consider the marketing manager who strings together functionality from multiple richly functional SAAS programs to make a completely custom workflow in a point and click manner.
In another 100 years, the barrier to entry will be even lower; and more and more of the footguns will be hidden behind layers of abstraction; and complex functionality will be something that's pieced together from existing components.
There will of course still be room for defining custom logic. And someone will need to develop and maintain and update all those abstractions and the programming languages themselves.
But I imagine that to one of us, picking up the hot new programming language of 2118 would be a bit like how it would be for a 1965 Assembly programmer to pick up Python.
That assembly programmer would probably spend the first few days trying to figure out how to allocate memory or determine the contents of a register using Python and then realize how totally unnecessary that is and how much they can do in how little time if they stop worrying about being parsimonious with hardware resources.
We'd probably spend a few days wondering how to do something that seems unimaginable not to have to do - instantiate a class or catch exceptions or something. And then realize that those things are already taken care of and we can accomplish 100 times as much in a line of code as we used to be able to.