3 ms·
But is it? A lot of what we do today is not algorithmic in nature. Arguably the majority. For example, take your phone and tell me how many apps follow a com
by mpweiher 6y ago
But is it?
A lot of what we do today is not algorithmic in nature. Arguably the majority. For example, take your phone and tell me how many apps follow a computational/algorithmic paradigm, that is, you give them some parameters, they compute an answer and then terminate. But we have to express all of this algorithmically, and the mismatch is a source of a lot of the pain we have in software development today, IMHO.
I am not sure that Turing completeness is really the main driver here, but it is at least a symptom.
As Guy Steele put it:
Another weakness of procedural and functional programming is that their viewpoint assumes a process by which "inputs" are transformed into "outputs"; there is equal concern for correctness and for termination (and proofs thereof). But as we have connected millions of computers to form the Internet and the World Wide Web, as we have caused large independent sets of state to interact–I am speaking of databases, automated sensors, mobile devices, and (most of all) people–in this highly interactive, distributed setting, the procedural and functional models have failed, another reason why objects have become the dominant model. Ongoing behavior, not completion, is now of primary interest. Indeed, object-oriented programming had its origins in efforts to simulate the ongoing behavior of interacting real-world entities–thus the programming language SIMULA was born.
https://dreamsongs.com/ObjectsHaveNotFailedNarr.html https://dreamsongs.com/ObjectsHaveNotFailedNarr.html
But of course objects are also highly procedural, at least as we have conceived and implemented them today:
Instead, objects use procedural abstraction to hide
behavior. This difference has significant consequences for use of
the two forms of data abstraction. Object interfaces are
essentially higher-order types, in the same sense that passing
functions as values is higher-order. Any time an object is passed
as a value, or returned as a value, the object-oriented program
is passing functions as values and returning functions as
values. The fact that the functions are collected into records
and called methods is irrelevant. As a result, the typical
object-oriented program makes far more use of higher-order values
than many functional programs.
William Cook, On understanding data abstraction, revisited
More here: https://2020.programming-conference.org/details/salon-2020-papers/5/Can-Programmers-Escape-the-Gentle-Tyranny-of-call-return- https://2020.programming-conference.org/details/salon-2020-p...
My current attempt at overcoming: http://objective.st http://objective.st