Re: Digital Twin applied to Software
andre <[email protected]> Mon, 5 Dec 2022 15:14:30 +0100
| Newsgroups | gmane.comp.lang.smalltalk.vwnc |
|---|---|
| Message-ID | <[email protected]> |
Eliot, I didn't mean to start a flame war. I'm as passionate a Smalltalker as probably everyone on the list. And Smalltalk is my platform of choice for many reasons. My point is that C++ has a lot of powerful things to offer that Smalltalk can't do and vice versa. And since the topic is Digital Twin, it's worth pointing out the differences. The only issues I am still encountering with Smalltalk after 30 years are of the kind that could be caught at compile time with strong typing. So maybe I'm biased. I agree with what you say about teams and culture. The challenges of safely refactoring and maintaining a complex system however don't go away for a single developer either, no matter how experienced and disciplined they are. Fact is, every issue that can be caught at compile time lowers the burden of changing and maintaining large systems. Think LEGO (this modern LEGO that actually no longer resembles blocks). With C++ you get LEGO items that are impossible to combine in ways not intended and supported by the designers. This limits creativity but makes sure the final thing sticks together. > we don’t have the analysis tools to identify inconsistency of duplication Eliminating duplication with tools was not my point. It was that Smalltalk doesn't enforce almost anything (typing, interfaces, mutability, etc). So, because it is convenient, developers feel encouraged to add new things on top and in between instead of streamlining and refactoring an existing system. They don't want to risk silently breaking things and losing backwards compatibility. Breaking things with sweeping changes is not that much a creeping issue with C++, because incompatible code won't compile until you have worked your way through the required changes, one compiler error message at a time. This doesn't eliminate semantic errors, but at least the LEGO blocks fit. And yes, this is a big deal if you have to maintain thousands of classes with limited human resources. > Tests run automatically Writing the tests and making sure they are complete is the burden, not running them. Tests also can't prevent developers from accidentally passing the wrong type of argument, or a new method from returning an unexpected type of object. Systems can and do break between the tested modules, not only within. Many things also cannot be tested in advance, especially user behavior and UI. > I’m using 2017 Using the compiler is one thing. Leveraging new language capabilities to facilitate more abstraction, safety and readability requires wide ranging changes to existing code that most developers usually avoid (or are not paid for). Why did StrongTalk never gain tracktion, by the way? Does Smalltalk/X still compile to C/C++ ?