3 ms·
> what is the fundamentally new capability? There hasn't been any fundamentally new capability since (pick your favourite): 1. the Turing Machine 2. the Lamb
by mpweiher 4y ago
> what is the fundamentally new capability?
There hasn't been any fundamentally new capability since (pick your favourite):
1. the Turing Machine
2. the Lambda Calculus
3. the stored program computer
4. the NAND gate
No high level language has ever added any fundamentally new capability, everything it can do can be done in machine language. See also: compilers and interpreters.
High level languages are purely for human convenience, they exist in order to allow us to express what we want to accomplish in a straightforward manner. When the two don't match, we have an impedance mismatch, one of the most famous ones was using goto for control structures (https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.p...), solved by the introduction of structured programming.
Today we also have such an impedance mismatch, because most of what we do is no longer procedural in nature, but our means for expressing this are essentially procedural.
My last long-form attempt at explaining this was 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...
For the domain of GUIs (one area where the mismatch is particularly painful and obvious), Stéphane Chatty did a much better job of explaining the problem than I did:
https://dl.ifip.org/db/conf/ehci/ehci2007/Chatty07.pdf https://dl.ifip.org/db/conf/ehci/ehci2007/Chatty07.pdf
So the "new capability" in Objective-S is having linguistic support for architectural abstractions, so you can directly express components and connectors and their connections. Rather than just implementing them with procedures.
And GUI bindings are a good example (which I also talk about in my "Tyranny" paper): we can implement in current programming languages, but we generally cannot express them in the language.