Re: Digital Twin applied to Software

andre <[email protected]> Sun, 4 Dec 2022 12:41:27 +0100
Newsgroups gmane.comp.lang.smalltalk.vwnc
Message-ID <[email protected]>
> The deeper point is that we tend to write systems as complex as, or rather a little more complex than, a given development platform allows. 


Absolutely. 

After writing a library that leverages almost every aspect of modern C++ to emulate some of Smalltalk's idoms, I learned that most of the horror can be confined to the library level. Once abstractions are available and you limit yourself to a useful set of design patterns and idioms, C++ application-level code can be very readable, even pretty at times. It's all in your own hands.

I can only speak for desktop applications with a complex UI. In that domain Smalltalk and C++ are merely bare bones systems, neither of which is suitable out of the box for building real world products. You need to add your own frameworks of abstraction first and stick to them at all cost. A Digital Twin would require this also.

With Smalltalk, due to the ease of doing so, every developer is quick to add their own "system" and reinvent the wheel. Since the language is unable to enforce APIs and detect breaking changes at compile time, nobody dares to streamline and refactor away the bloat and redundancy, as it might break even more things. As a result, Smalltalk images are accumulating sleeping bugs, unclear APIs and conflicting assumptions.

I accepted this challenge for the productivity advantage of "while it's running", which is a big deal when you're exploring uncharted territory. With increasing maturity, complexity and market pressure however, porting more and more subsystems to C++ became inevitable and, surprisingly, it even simplified things (mostly through multiple inheritance, compile-time integrity checks and RAII).

What's really missing from C++ is a four-pane browser to comfortably navigate thousands of files. The C++ community just doesn't get it. JetBrains could really use a Smalltalker to help them enhance CLion ;-)

Andre