Remember Smalltalk? (2008) (blogs.gartner.com)
I’ve often referred to Smalltalk as the ‘Latin’ of modern OO languages. Most owe a tremendous debt to Smalltalk but the language itself has been relegated to a small niche of technology elites for several years now.
Here a simply equation. In terms of mental fortitude…
52 comments
[ 3.5 ms ] story [ 93.4 ms ] threadhttp://www.rubymotion.com/
If you're interested in the idea though, F-Script was actually pretty close to "Smalltalk for Cocoa," though it's more designed as a developer tool for Objective-C programs than an applications development language in its own right. It has an object browser and everything.
However Smalltalk lost the enterprise place it got, but its spirit lives partially[1] on modern dynamic languages.
[1] Without live coding experience, it isn't a full Smalltalk descendent.
[1] http://objective.st/
But yes, you also have other tools, for example a class browser and inspectors that hook remotely into running programs via http, for example.
CTOs would pay Gartner millions of dollars to have them confirm their bias to go 100% Java/Windows/IBM.
Not that ParcPlace did themselves any favors.
Now, nearly all programming languages are free :-)
Pharo Smalltalk (based on Squeak) is very nice, and runs on Mac, Windows, or Linux box using very little resources.
Smalltalk is still used, as is Common Lisp, Scheme, etc. Just because languages are only used for < 1% of commercial projects does not mean that people skilled in their use shouldn't use them. My go-to languages right now are Clojure, Java, and JavaScript, but, I still like to code occasionally in Pharo Smalltalk (good online tutorials, BTW, if you want to play with Pharo).
It seems like Ruby is a better Perl than Perl, a better Smalltalk than Smalltalk, and a better Python than Python.
It's slow (though that's getting better) but otherwise it allows genuinely beautiful system design.
As someone who's quite the Ruby fan, this is the only one on the list I'd object to.
There's a very real philosophical difference between the two, which I'd identify as being their attitude to "magic". Ruby is OK with a certain level of increased complexity and semi-hidden behaviour if it means more expressivity. Python, on the other hand, prefers simplicity and explicitness.
It's not the most radical divide, and I don't really think either one is the One True Philosophy; they're just different. And neither is better at embodying the other's philosophy.
If you think pry is a cool tool for Ruby, you gotta see any smalltalk platform.
- https://www.youtube.com/watch?v=Wh0BHJ7fUoc
- http://www.infoq.com/news/2008/05/MagLevAtRailsConf
Weird that it never got any steam or buzz ..
Smaller language, more coherent, first-class blocks, clearer messaging syntax, message cascading, conditions, …
> a better Smalltalk than Smalltalk
Not by a long shot no.
> and a better Python than Python
Not that one either.
The concepts of live coding originated in Lisp and Smalltalk environments.
Smalltalk was the birth of IDEs and unit testing. Also its sucessors StrongTalk and SELF were the first environments to have JIT compilers.
Finally, having Smalltalk as OS made the computers quite interactive.
(a) drawRect(50, 50, 10, 21)
(b) aRect drawAtX: 50 andY: 50 width: 10 height: 21
It's sort of weird to me that so much effort goes into making programming languages expressive, yet we cling to incredibly terse method names, sometimes too terse, and no labels on method inputs. So, if you don't know what some bit of code does, you have to figure out what the methods are doing and what arguments they are supposed to take.
I guess to me it's like if you had to do a dictionary lookup for every word you read and had minimal context to understand a words meaning in the context of the other words around it. At the very least you would cling to a dictionary if you wanted to get anything done.
I find it faster to read since I don't have to glance at API docs at the same time.
I think the majority of Objective-C's verbose conventions are artifacts of the Frankenstein type system — for example, having two methods with the same selector but different signatures will cause any use of either method with an id type to emit warnings, and possibly to generate incorrect code if the types are not compatible. So in order to avoid these awkward situations, Objective-C prefers to be as explicit as possible about what it's getting and giving. (Case in point: The extra verbosity in the examples you gave is almost entirely caused by adding nouns.)
So with that (mis)feature, eliding commas would make a lot of code harder to reader.
Not really. Lisps get by without them and it doesn't have formal keyword parameters.
But having gone from c++ to Ruby to C++, I think the benefits of this expressiveness may not really be there.
This construction makes each line of the whole program that much longer, it asks that every functions arguments be meaningful outside the context of the function as well as within. Basically, this syntax may show you that certain calls are wrong but there are many other calls it won't prevent and it gives you larger amount of code to page through to find those other errors.
Remember, a good program wouldn't be using 10 as a function input except if there was some reason it's meaning was clear. And a rect would take two points rather than four ambiguous ints.
So what you can have is drawRect(Pt(screenLeft, screenTop), Pt(screenRight, screenBottom) if you want a rect covering the screen and you want expressiveness.
In a lot of ways, I'm still programming in Smalltalk... just in other languages.