Comment by skydhash
1 day ago
The thing is we did have nice tooling before those languages came to be. If you look at Smalltalk, it has this type of context in an even more powerful way. You can browse the whole library in a few click and view its code. And it has a Playground element where you can try and design stuff. And everything was inspectable.
Same with Lisp. If you take emacs has an example, you have instant documentation on every functions. Another example can be python where there’s an help system embedded into the language.
Java is basically unwritable without a full indexer and completion. But it has a lot of guardrails and its verbosity discourages deviation.
And today we have Swift and kotlin which is barely better. They do a lot of magic behind the scene to reduce verbosity, but you’re still reliant on the indexer which is now coupled with a compiler for the magic stuff.
Better languages insists on documentation, contextual help, shorter programs, no magic unless created by the programmer, and visibility (inspection with a debugger and traceability with the system source available, if possible).
I never used SmallTalk but from what I heard about it, I feel like Java/C# etc were a deliberate push towards that kind of environment via IDEs. I am not sure why SmallTalk didn't catch on, but it may have something to do with resistance from the C++ programmers that Guy Steele mentioned they had to drag towards Lisp via Java. It seems to me that the current crop of languages is the result of this forced evolution of a reluctant developer market from relatively barebones languages like C/C++ towards a SmallTalk-like future.