Pharo (Smalltalk) is much more than simply live coding. All of us here
dearly love live coding. Kilon states it is possible to do live coding
in other languages. I have no experience doing so in any other language.
I will say that I know of no other language that it is integral to
development in that language.
Pharo is a live object environment. It has objects that would take
someone with a better understanding of the entire image than myself to
tell when the object was created. But suffice it to say that Pharo
(Smalltalk) have some very old objects, possibly back to 1980 or 1972?
The live environment supports live objects, not just live coding as
understood by someone who may attempt live coding in some language that
does not by nature do live coding. Objects have state and behavior.
Objects in Pharo grow and shrink in behavior and state as messages are
sent to them. They evolve, they dynamic not static.
Pharo's environment can survive crashes. Yes, I know, there are times
when some unrecoverable event happens and you can not recover lost
changes. But the community attempts to fix anything that would cause
such an event. Other languages, do not have such. Segfaulting is normal,
to be expected. You go back to your dead code editor and fix what caused
the segfault and start up again, clean without the state your objects
were in when it happened or even before. They do autopsies on their
core dumps to attempt to discover what went wrong. Yes, you can
explicitly choose to run a debugger on your app to watch its state and
behavior.
Pharo's environment survives shutdown of its environment and shutdown or
restart of an operating system. Once restarted your Pharo environment is
exactly as it was with all it's live objects and live code. It survives
change of operating systems and computers. All the image needs is the
appropriate vm for the image and the operating system currently running.
Pharo can survive stupid programmer errors. I have written infinite
loops and lived to tell about it. My objects and environment survived. I
have written code which took hours to execute over a large set of data
only to discover I had an error in my code on the last method or so that
executed and it raised a debugger. I fixed it and continued. Nice. In
some other language, you fix and start over executing that multiple hour
process and hope there are no more errors.
I know of no other language that facilitates this behavior. The editing
of the code is in a different environment from the execution of the
code. The state of the objects in the executing code disappears when the
code ceasing execution whether by choice or error. And yes, some of that
is and can be mitigated by files and databases. Live debugging of code
is by executing an application (debugger) on the application you want to
debug. This all by nature is static and dead. Only to discover problems
in my fixed in time code and objects. You can't fix the debugger while
debugger some program. I don't know that you necessarily fix the program
outside of discover of where to fix it in the separate editing process.
Then you start all over again.
Even if you can overcome ever single one of my perceived technical
difficulties. And I may be in error. I do not program in those
environments and have little experience there. One thing that is
indisputable at least to my understanding is this. Whatever language you
may overcome all of this in, you are quite possibly doing it alone or at
best in very small groups. There is no community or cultural support.
Pharo has a community, a culture which supports the artifact which
provides this live object environment. This is of tremendous value.
Pharo has a culture which supports live objects and live coding. It has
a culture that says your stupid code should not crash the environment.
If it does, we need to fix it.
Pharo is not perfect. Its community is not perfect. But I have not found
anything or place better.
So I am learning C, and dead programming hopefully sufficiently enough
that I can bridge the gap where Pharo does it well or where Pharo could
use a little outside help. But I still get to live in my nice live
object environment.
I have nothing against other languages. I would love it if there were
other languages which had this ability and culture. But I don't find
them anywhere. I have programmed in Python, Lua, played with PicoLisp.
Pharo is home. :)
And to top it all off, Stef's Pharo 7 and 8 roadmap looks pretty sweet.
I just wanted to say that Pharo (Smalltalk) is so much more than what I
perceive other languages understanding of live coding to be. And that I
know of no other language or community which approaches what is done by
nature in Pharo (Smalltalk).
All the above is my naive opinion. Do with it as you will.
Have a great day!
Jimmie