> utopia in which software would plug together via function/procedure/method calls
Hmm...The Fine Article actually argues that procedure calls are too low level for software interconnection, and that is the major reason why we aren't there. (and they haven't really improved in the last quarter century since the article was written).
Like the analogy in the title of using assembly language to build large-scale software systems.
But you're right that the alternatives are also often quite messy; talking to other systems is generally not considered a first class concern, but rather something you cobble together, somehow, out of parts that aren't necessarily fit for purpose.
And I think there are actually good reasons for using web and file APIs (composability, simple GET/PUT semantics) that are independent of other aspects (using HTTP, OS mediation...) but come together in one package.
My Objective-Smalltalk[1] is an attempt to build a language where these concerns are first class and separated out, for example with Polymorphic Identifiers[2] to generalise resource/variable access, Constraint Connectors[3] and Object Filters to generalise dataflow and Higher Order Messaging[4] to generalise messaging/procedure calls.
One interesting outcome is that once you see these more general concepts in a "pure" setting, you can bring them back to other languages, for examples "Stores"[5]. Not quite as nice as with proper language support, but still very useful.
Hmm...The Fine Article actually argues that procedure calls are too low level for software interconnection, and that is the major reason why we aren't there. (and they haven't really improved in the last quarter century since the article was written).
Like the analogy in the title of using assembly language to build large-scale software systems.
But you're right that the alternatives are also often quite messy; talking to other systems is generally not considered a first class concern, but rather something you cobble together, somehow, out of parts that aren't necessarily fit for purpose.
And I think there are actually good reasons for using web and file APIs (composability, simple GET/PUT semantics) that are independent of other aspects (using HTTP, OS mediation...) but come together in one package.
My Objective-Smalltalk[1] is an attempt to build a language where these concerns are first class and separated out, for example with Polymorphic Identifiers[2] to generalise resource/variable access, Constraint Connectors[3] and Object Filters to generalise dataflow and Higher Order Messaging[4] to generalise messaging/procedure calls.
One interesting outcome is that once you see these more general concepts in a "pure" setting, you can bring them back to other languages, for examples "Stores"[5]. Not quite as nice as with proper language support, but still very useful.
[1] http://objective.st
[2] https://dl.acm.org/citation.cfm?id=2508168.2508169
[3] https://dl.acm.org/citation.cfm?id=2889456 [4] https://en.wikipedia.org/wiki/Higher_order_message[5] https://github.com/mpw/MPWFoundation/blob/master/Documentati...