28 ms·
I was unhappy with my answer above right after I sent it, but that's pretty much how it goes in 2023 speak. Back in the 90s my professor would have failed me f
by muyuu 4y ago
I was unhappy with my answer above right after I sent it, but that's pretty much how it goes in 2023 speak.
Back in the 90s my professor would have failed me for saying that, as he felt so strongly that Smalltalk has no types and that any reference to types is not Smalltalk, but particular implementation details that account for performance optimisations and concrete references to the VM being used under the hood.
But in 2023 what types have grown to mean would pretty much include Smalltalk classes and those include all sorts of checks both in theory and in practice, right from coding-time (compile time not to be considered at all in Smalltalk) in the form of "respondsTo:" "is___", "isKindOf:" and the often avoidable "isMemberOf:"
What static typing has come to mean has also shifted a couple of times since the 90s. It's now mainly meant as a software engineering tool, and as such Smalltalk really doesn't have this problem as the function and classification of variables is so much richer and explicit in purist OO than it is in any modern popular language. In terms of efficiency, SmallTalk no longer competes mainly with assembly and C as it used to in the 70s, 80s and 90s but languages that also run VMs and have often a lot more overhead than the ST industry-standard VMs.
The kind of type magic that SmallTalk really is not designed to do, except perhaps as a system on top, is Hindley–Milner (HM) type systems. But those really only shine in Haskell, ML and related languages. Those are certainly also in the "secret weapon" category and will very likely remain there for quite a while for similar reasons as SmallTalk. Reasons that I mentioned in another comment: https://news.ycombinator.com/item?id=35165801#35167103 https://news.ycombinator.com/item?id=35165801#35167103
- bitwize 4y ago> The kind of type magic that SmallTalk really is not designed to do, except perhaps as a system on top, is Hindley–Milner (HM) type systems. But those really only shine in Haskell, ML and related languages. Again, table stakes. There was a whole HN thread about how a language that couldn't do sum types is not fit for use in modern software development.
- muyuu 4y agoIt's a tough claim to say that modern software development cannot be done with a language without HM typing facilities as first class, when most software development is done without it.