4 ms·
Smalltalk is not "yet another programming language"; Smalltalk is the language all those other OO programming languages copied. You should look into it because
by gnaritas 9y ago
Smalltalk is not "yet another programming language"; Smalltalk is the language all those other OO programming languages copied. You should look into it because it is the source of the object oriented paradigm and it'll make you a better OO programmer in all of those other languages.
- lucozade 9y agoSorry to be that guy but a lot of what we've come to know as OO is more directly descended from Simula because that was a big inspiration for Bjarne. As such, C++, Java and C#, which constitute a significant chunk of OO programming, are probably better thought of as descended from Simula (and C). There's a clearer lineage to the likes of Ruby and Objective-C, and to a lesser extent Javascript and Python. I would definitely concur regarding looking into it, it definitely makes you think about things in a different way. Whether or not it makes one a better programmer, I can't say. I only programmed professionally in it for a relatively brief time and it was a hugely frustrating experience. I was glad to get out of it. In the sense that it made me understand that a programming environment has a big influence on how well a codebase can scale then, yes, I learnt loads. But that was because it really wasn't very good at scaling without an awful lot of TLC. I moved onto a Java application which was bliss by comparison (ironically, given its reputation for classpath hell etc). This was some years ago mind so the state of the art of Smalltalk has, I'm sure, moved on.
- e12e 9y ago> what we've come to know as OO is more directly descended from Simula True, what is often called object oriented is often more about classes and inheritance, and less about (instantiated) objects communicating via messages. It's really rather odd how Smalltalk, Strongtalk and Self could be major influences behind the jvm, jre and java - when you look at were java ended up... [ed: on the other hand if you start with Self and add Algol syntax you get javascript - maybe it makes sense that Strongtalk and Algol makes java...]
- gnaritas 9y agoWell, I'll be that guy, I don't care what inspired Bjarne, Simula created the idea of an object, but it wasn't until Smalltalk that object orientation became a paradigm: Smalltalk created OO, not Simula. Object != Object Orientation, Simula was and is a procedural language with objects bolted on after the fact. C# is a Java clone so I need only address your Java misstatement, Java was far more influenced by Objective C and Smalltalk than by C++ as far as OO goes; it looked to C++ only for syntax. Java is semantically a direct descendant of Smalltalk and was inspired directly by Smalltalk as both of its creators knew Smalltalk and Objective C (another Smalltalk derivative). [1] Direct from the co-creator of java not to mention that Gosling himself was a Smalltalker. So no, what we know as modern OO came directly from Smalltalk. [1] https://cs.gmu.edu/~sean/stuff/java-objc.html https://cs.gmu.edu/~sean/stuff/java-objc.html
- int_19h 9y agoIf you look at the actual semantics of classes and objects in C++ and Java, they're arguably closer to Simula than they are to Smalltalk. In C++, this is even more evident by the fact that even some of the syntax is reused, such as "virtual" (although in Simula it originally meant what we today call "abstract"). The difference between the two is that Smalltalk methods semantics are message passing. In Simula, method calls are just that, function calls generalized to have a receiver. And Java follows that pattern. If Java was a direct descendant of Smalltalk, it would look a lot different. For one thing, it would have a lot less syntax baked into the language, and a lot more closures, from the get go.
- gnaritas 9y agoI just provided direct quotes from one of the creators of Java, sorry but you're simply wrong to argue you know better what inspired them than they did. Java is a decedent of Smalltalk via Objective C, that is simply a fact. It's well known and accepted they took syntax from C++ as deliberate attempt to entice C++ programmers into Java, that is not evidence they didn't base their inspiration on Smalltalk. And I quote.. > When I left Sun to go to NeXT, I thought Objective-C was the coolest thing since sliced bread, and I hated C++. So, naturally when I stayed to start the eventually) Java project, Obj-C had a big influence. James Gosling, being much older than I was, he had lots of experience with SmallTalk and Simula68, which we also borrowed from liberally.
- vikiomega9 9y agoI love representations of language history like this one, https://calvinx.com/wp-content/uploads/2012/07/evo-prog-lang.png https://calvinx.com/wp-content/uploads/2012/07/evo-prog-lang...
- gnaritas 9y agoDitto, but that one is terribly wrong.
- vikiomega9 9y agoMind telling me why and pointing me to a correct resource?
- gnaritas 9y agoWell look at it; it says Java derives solely from C++, that's not remotely true. It's simplistic and misleading, here's some better ones... https://i.pinimg.com/564x/b9/45/71/b9457106d7a5d602a2923597d6d21201--programming-languages-computer-programming.jpg https://i.pinimg.com/564x/b9/45/71/b9457106d7a5d602a2923597d... https://ccrma.stanford.edu/courses/250a-fall-2005/docs/ComputerLanguagesChart.png https://ccrma.stanford.edu/courses/250a-fall-2005/docs/Compu...
- vikiomega9 9y ago> it says Java derives solely from C++, that's not remotely true Not really, I just assumed the one I posted was trying to highlight syntax similarity. The ones you posted are just as terse, there's no way I can figure out if the Lisp arrow to Java in your first link is something about the type system or how it handles reference or the like