You right its not necessarily bad. You can still do a tons of things with it. But the ability to go deeper adds a rather huge advantage. When for example I look at packages like Squeak and Pharo they inherit from smalltalk that specific trait where the entire system even smalltalk itself its written in smalltalk. You don't like something, you go in and modify it and all that from inside the program itself. Only a tiny part is implemented in C for really low level VM stuff.mystran wrote:
Well, I don't think losing the ability to "go in" is necessarily bad. In fact, I think it's good idea to design a system with a limited number of primitive building blocks and specifically without the ability to "go in" because that way you force yourself to build more complex components out of the building blocks, which is a really good way to validate your design.
This from visual coding perspective in phenomenal because it allows the user to go so deep that he can even modify the language itself , this is something that most Visual Coding project clearly lack. They are built in such way to allow you to do specific thing and certain they don't want to mess with internals. But also that is what can give a lot of life in a project , users become fascinated with the idea to go deep without the step learning curve of C language and their libraries. And it also explodes the user base of the project.
Last time I checked, for / while loops and ifs are not objects but special syntax for ruby and javascript. Please correct me if I am wrong I have not used extensively either Ruby or Javascript. Smalltalk has 6 keywords all in all and all rest is objects including for / while loops and ifs. Of course technically that makes smalltalk also impure but none the less is way more pure.Sorry, but I can't resist: this is not true. There are other modern languages that are just as pure as Smalltalk. For a popular example think Ruby: everything is an object and while you can do things like define global functions, internally even those just become private methods of the "main" object and it's still all objects. Even Javascript is pretty pure, though somewhat different and blurs the line between closures and objects. In fact, if we are allowed to use an isomorphism between closures and objects we can also qualify most functional languages.
I dont wont to stick in the subject of OO purity that was not my main point. And I cant say I have made my mind on it yet either. I try to keep an open mind with all things and let them speak in practice. What I find fascinating is the whole code is data and data is code that smalltalk implement with its pure OO and of course lisp with its list styled syntax. The ability to modify code treating like processing data dynamically is certainly fascinating though I am still not convinced how practical that is for the average user and coder. But it certainly makes you wonder "what if ?"How far you want to go is a matter of taste, but even with the strictest definitions there are plenty of pure OO languages. Obviously there are also plenty of languages (like C++ and friends) that just won't qualify no matter what.
Personally though, I mostly find the whole OO thing to be a less-than-desirable substitute for closures. Give me guaranteed tail-call elimination and a good compiler and I don't even need my closures mutable (or maybe for performance I might not want to rely no the compiler to do it, but still).
if the practically is not taken far enough why other languages just copy things from them with zero additional inovation. When I see for example my beloved python I don't see anything new to it compared to lisp and smalltalk. Anyway no intention to start a flame war but for me not sticking and using smalltalk and lisp was nothing to do with the language it was clear from the first minute I used that they are far above anything I coded in before. The big issue is lack of libraries, lack of support, really crappy documentation which all non popular software suffers from. This is why I make my project on python and the visual language I am developing will produce and import pure python codeI disagree. The mass didn't follow because the improvements and/or practicality wasn't taken far enough. For me personally, it's practicality: I haven't found the time to invest into writing a Scheme compiler that could produce code that I could run in a VST plugin. Maybe I'll do it some day.
. And I don't regret that choice.
I got to say though I am extremely tempted to use Clojure which I currently learn.

