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








Reply via email to