RubyMotion doesn’t currently have a debugger, but it does have something Objective-C developers don’t have, a REPL working with the simulator. ... You can click on a visual element in the simulator and start modifying the objects in real time in a terminal window and see the modifications in the simulator. It reminds me of the first time I used firebug to edit the html/css of a web page and saw the changes in real time.
This might be the real strength of RubyMotion. Maybe someone should take Squeak/Pharo Smalltalk and create a utility that can be used as a REPL working with the iOS simulator. Smalltalk is basically Objective-C minus the C parts, types, and the glue to attach the C parts, so it would be the perfect REPL for the simulator. All you're left with is keywords and variables. Developers can insert this into projects for prototyping and debugging, but take it out when they deliver apps.
I did the original Cocoa Squeak VM, and in the end found it too heavy-weight for my taste, so I developed Objective-Smalltalk instead. It's been in use in a couple of my products for a number of years, and recently I've adapted it for use in iOS. Even reserved the objective.st domain, but haven't populated it yet...
Oh, Smalltalk is more different than that. Most Smalltalk applications are deeply integrated with their development environment, so that for example you can't store your code in files and easily connect them with bits of code in another language, and you can't statically compile your programs. Essentially, your programs would have to become image-based, which is a much bigger hurdle than just another language.
I'd guess "the image thing" is probably the reason Smalltalk hasn't taken off more than it has.
> Most Smalltalk applications are deeply integrated with their development environment
I used to work for a vendor, and I've written a significant fraction of such an environment.
> so that for example you can't store your code in files and easily connect them with bits of code in another language
Which is why I know this to be patently false. You can actually add compiler objects and have select methods written in SQL or whatever language you like.
> Essentially, your programs would have to become image-based
Again, patently false for the REPL use case. Also there are a number of declarative Smalltalks already, which don't need to be started from an image file. Also, Smalltalk MT used to compile down to a DLL indistinguishable from any C++ DLL.
Ah, this is a little bit embarrassing. I had somehow read your comment as meaning that somebody should make something like RubyMotion but with Smalltalk, with the REPL being a neat incentive. Rereading, I see that was totally in my head. Sorry. No idea what I was thinking, but it's too late to delete it now. I suppose my brain just saw "Smalltalk" and "iOS" in the same sentence and got worked up.
But incidentally, do you happen to know offhand of any resources about adding new compilers like you were talking about? That sounds pretty neat. I unfortunately missed the golden age of Smalltalk, so most of what I know comes from playing around with Squeak and GNU Smalltalk and reading about older implementations.
But incidentally, do you happen to know offhand of any resources about adding new compilers like you were talking about? That sounds pretty neat.
The examples for the T-Gen compiler compiler in VisualWorks Smalltalk talked a little about this, and had a toy SQL example. IIRC, there was a <pragma: > you could put in a method to use your own Compiler object. Also, Smalltalk/X actually let you implement methods in C right in the Smalltalk class browser.
Unfortunately, a lot of documentation and other info are lost in the mists of time.
F-Script (see chrisdevereux's comment) has been around since the very early days and allow itself to be included in the program to begin with or injected later. You can do a lot of experimentation with it.
RubyMotion doesn’t currently have a debugger, but it does have something Objective-C developers don’t have, a REPL working with the simulator. ... You can click on a visual element in the simulator and start modifying the objects in real time in a terminal window and see the modifications in the simulator. It reminds me of the first time I used firebug to edit the html/css of a web page and saw the changes in real time.
This might be the real strength of RubyMotion. Maybe someone should take Squeak/Pharo Smalltalk and create a utility that can be used as a REPL working with the iOS simulator. Smalltalk is basically Objective-C minus the C parts, types, and the glue to attach the C parts, so it would be the perfect REPL for the simulator. All you're left with is keywords and variables. Developers can insert this into projects for prototyping and debugging, but take it out when they deliver apps.