4 ms·
I'm not sure what this article even is. Does it mainly bash John Hughes for bragging about how good FP is? Or does it mainly advertise for the author's langua
by sshine 4y ago
I'm not sure what this article even is.
Does it mainly bash John Hughes for bragging about how good FP is?
Or does it mainly advertise for the author's language, Objective Smalltalk?
Objective Smalltalk -- http://objective.st/ http://objective.st/ -- is a mostly unimpressive, one-man project that claims to be the first general purpose programming language, and that all other programming languages are DSLs in comparison. The few simplistic "Hello World!" front-page code examples don't solve any problems related to software architecture. I'm tempted to believe he just likes to make small languages that resemble all the other languages, like the rest of us.
The article lacks perspective by measure of the lack of any references to Infrastructure as Code, first-class module systems, integration between language ecosystems and their package management and languages. I would have had more to say about how "software architecture" goes together with the lack of expressivity in most general purpose programming languages, how modern DevOps is heavy on DSLs that are executable architecture designs, and how there's both a lot of progress to be made, and a lot of noteworthy, active attempts.
The author cites John Hughes (of Haskell, QuickCheck fame) for saying that structured programming lets you design programs in modular ways, and modules allow for speedy development and re-use, and that function composition is the best kind of glue for making modules.
The author then links to an article [1] (Mary Shaw, 1994) which invents a word, Connectors, claims that this is great, and so Architecture Oriented Programming is great. It feels like the middle 80% part of the article that defines and connects (sic) these concepts is completely missing. Maybe I'm supposed to read the Mary Shaw article. He could have saved everyone a lot of time by just saying "Hey, I found this pretty great article. Also, I'm making a programming language that is better than yours."
[1]: https://resources.sei.cmu.edu/asset_files/TechnicalReport/1994_005_001_16277.pdf https://resources.sei.cmu.edu/asset_files/TechnicalReport/19...
> it turns out that [...] lazy evaluation is essentially unused, [...] So that means the number of kinds of glue that FP provides is...one.
Demagoguery. Since we can apparently just make up numbers:
FP actually provides -1 kinds of glue, making it a product of Satan and so entirely a cause of the coming apocalypse.
- mpweiher 4y ago2 - 1 = 1 Hughes claims FP provides two (2) kinds of glue: functional composition and lazy evaluation. It turns out lazy evaluation is actually not really a useful kind of glue, so subtract that one from the two initially presented: 2 - 1 = 1 > Does it mainly bash John Hughes for bragging about how good FP is? > Or does it mainly advertise for the author's language, Objective Smalltalk? Neither. It notes that John Hughes had a fantastic insight, but one that seems to not get a lot of attention: we need lots of different kinds of glue. And yes, the article somewhat assumes that you either know what a connector is, or that you would read the linked Mary Shaw article to figure it out, as it is foundational for the field of software architecture. If you don't know what a connector is and don't care to find out, the article probably won't make a lot of sense to you. And it's good for me to learn that apparently a lot of people don't know what a connector is, so I'll have to keep that in mind when communicating about this stuff. Thanks! You could start with the main Wikipedia article on Software Arcitecture: https://en.wikipedia.org/wiki/Software_architecture https://en.wikipedia.org/wiki/Software_architecture Or one of the others: https://en.wikipedia.org/wiki/Architecture_description_language https://en.wikipedia.org/wiki/Architecture_description_langu... https://en.wikipedia.org/wiki/Software_architecture_description https://en.wikipedia.org/wiki/Software_architecture_descript... They cover the basics and have lots of references. Or take a look at one of the books: https://www.amazon.com/Software-Architecture-Perspectives-Emerging-Discipline/dp/0131829572 https://www.amazon.com/Software-Architecture-Perspectives-Em... https://www.amazon.com/Software-Architecture-Foundations-Theory-Practice/dp/0470167742/ref=sr_1_1 https://www.amazon.com/Software-Architecture-Foundations-The... Here's a taxonomy of connectors, that should give you a quick overview: https://isr.uci.edu/events/wesas2000/position-papers/mehta.pdf https://isr.uci.edu/events/wesas2000/position-papers/mehta.p... And of course there is the classic from 1994, published in IEEE Software: "Architectural Mismatch: Why Reuse Is So Hard" https://www.ics.uci.edu/~taylor/ICS221/papers/ArchMismatch.pdf https://www.ics.uci.edu/~taylor/ICS221/papers/ArchMismatch.p... Turns out that one of the reasons Reuse is So Hard™ is that the connectors don't match. With the followup 14 years later: "Architectural Mismatch: Why Reuse Is Still So Hard" https://repository.upenn.edu/cgi/viewcontent.cgi?article=1074&context=library_papers https://repository.upenn.edu/cgi/viewcontent.cgi?article=107... Turns out that the connectors still don't match. Cheers.
- sshine 4y agoThanks a lot for your references. I've saved them all. :-)