Beyond Live Coding

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Beyond Live Coding

Jimmie Houchin-5
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 | Threaded
Open this post in threaded view
|

Re: Beyond Live Coding

kilon.alios
Live coding as a concept does not exist in most languages. The reason why they can do live coding is because out of necessity . Take exceptions for example , almost never you will find any mention about live coding but you will read about code exiting elegantly or not exiting at all and reloading modules etc.

In the end all coders need a lot of flexibility during execution , especially during the process of debugging. Even in Pharo live coding shines the most during debugging process this is why they go hand in hand.

The moment you have live code and state having live objects is just a consequence of having live code. If you approach it from a pure object orientated approach that is not unique either. Because nowadays we have many extremely popular languages like Python and Ruby . Python for example suppose to be a hybrid procedural and OOP language but that is a lie because in Python functions are objects. Ruby is almost Smalltalk. So both Python and Ruby are pure object orientated.

Pharo crash prone behavior is not extensive. Live state will be lost for data living outside Pharo. If the data is accessed or copied from Pharo the copy will be retained through saving the image but if you don't save the live state of Pharo will be lost. Even if you do save the image the live state on the C side won't be stored so it's up to you to restore if you have the means to do so and already took the appropriate measures. This is why I made a big deal for memory mapped files because essentially they store using an auto save feature live c and C++ state.

Another huge problem for Pharo is that crashes can corrupt the image which means you will have to rebuild it from scratch which can be so tedious if you have lost a lot of live state.

Recovery of code is not a big deal for other programming languages cause unlike Smalltalk they are based on source code files and most modern IDEs will auto save your source code file. If you use version control that becomes unnecessary if you commit often like I do because essentially you become unable to lose code.

Smalltalk and Pharo shines in the idea of a single IDE but the community is too small to afford to be fragmented between many different IDEs. In other languages some IDEs are closed source , some are open source but the trend for the past decade is toward open source IDEs. For example I code in Python and by far the most popular IDE is PyCharm , it's closed source but it has a free edition called "Community Edition" that contains most of of the commercial features (80%) it's one source and free and hosted in Github

https://github.com/JetBrains/intellij-community/tree/master/python

The idea of self contained environments is no big deal either because we have git forks , Python even comes with another features that allow you to create isolate environments that like Pharo contain your code, the language and any library used.

Smalltalk was a bIg deal decades ago but no longer is because coders themselves may not be aware of either Smalltalk or Lisp but language and IDE designers and library developers are very much aware as both languages are considered the golden standard and very much respected.

Pharo is important because is a modern implementation of Smalltalk and tries to push its concepts further. Unlike other language it's not just about copying Smalltalk or canibalizing it's ideas. It's crucial that Smalltalk continues to evolve because afterall is a language of innovation.

None the less we live in a time that modern technology is very close to Smalltalk and most of its features have infected modern coding. They are fragmented or not that obvious or out of the box offered but they are there and experienced coders already rely on them to speed up their workflow.

Languages like C distance themselves from Smalltalk because they prioritize performance. It's the usual case of not having your cake and eat it too. But since every language including Smalltalk is based on C for performance you can implement many of the features. Problem is that you will be reducing performance so in that case it takes more sense to use Pharo or Python or what else.

In any case Pharo is a great environment to work with many flaws and unique advantages in the end Pharo is Pharo offering its own unique experience we all love and respect. Emulation is never the same as the actual thing.

On Fri, 21 Jul 2017 at 19:36, Jimmie Houchin <[hidden email]> wrote:
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 | Threaded
Open this post in threaded view
|

Re: Beyond Live Coding

Stephane Ducasse-3
In reply to this post by Jimmie Houchin-5
Thanks Jimmie. Do not hesitate to improve Pharo, because Pharo is what
we have and each we can make it better.
BTW: it was not my roadmap it is the result of everybody in the team
brainstorming.

On Fri, Jul 21, 2017 at 6:35 PM, Jimmie Houchin <[hidden email]> wrote:

> 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 | Threaded
Open this post in threaded view
|

Re: Beyond Live Coding

Jimmie Houchin-5
In reply to this post by kilon.alios

My apologies if I wasn't clear. I wasn't stating that Pharo was crash prone. I was stating the exact opposite and that other languages are crash prone. That in other languages that a program crashing or misbehaving in some way is a normal part of the development process. It is one of the ways of discovering problems in the developing app. I am no way saying that deployed apps are crash prone  What I was saying is that in any language, I the programmer can do something stupid. In Pharo, I can recover from my errors without my object environment crashing. Other languages my errors crash my program and I start the process all over with external editor, debugger, repl, or compiler. I will readily admit I am not expert or good in that world and probably lack knowledge.

What I seemingly failed to express is that I believe Pharo (Smalltalk) is far more robust than most any other language I have experienced. Because programmer errors are most frequently caught by the debugger and not crash the environment. Then you the programmer have the ability to correct your errors in the same environment you develop, debug and execute the application. Where else does this happen? Maybe some Lisp systems?

The fact that the Pharo (Smalltalk) live object environment is basically an operating system. So it provides certain robustness that other live coding doesn't. And unlike any current operating system I have used or am aware of, Pharo (Smalltalk) has no concept of restart. Everything happens by adding, deleting or evolving internally to the environment. In fact application development is the same. App version 2 can be easily arrived at by evolving App version 1 live.


Pharo's (Smalltalk) live object environment in some ways exceed what current OSes do. Let alone simple isolated environments such as Python. Can you suspend Python's (or any other language) environment. Restart your OS, move to a different computer, to a different OS, any of these and then resume with your environment's state completely intact and ready to continue from where you stopped? Unless I am completely out of date with Python (and I may be), I do not think you can do this. I do not know of where else you can do any of that.


And yes we can drop down into the everything is Turing complete and everything can do anything that anything else can do type of argument. Yes we can accomplish this. We hold all state in a database. The app is functions on top of that database. ... And then we accomplish some poor facsimile of this. But it is not natural nor native to the development processes of other languages.

A person brand new to Pharo gives no thought to persistence of state, or committing of code or a whole host of details which go into providing this luxury we enjoy. What is implicit in Pharo must be come explicit elsewhere with difficulty and still will not quite reach where we are by nature.

Pharo (Smalltalk) is different. It is so much bigger, more complete and seamless than the concept of live coding anywhere else. I don't think that most of us here would be fighting this battle (and I include you as one of Pharo people :) if other more "practical" languages approached what Pharo (Smalltalk) offers. If we thought that X language had 80%+ of these features and with some effort we could start bringing the rest. I don't know that we would be here. But they don't.

And nothing in Pharo prevents you from doing similar. Persist your state in an external database. Have your app operate over that database. Use Iceberg to commit your app code to git. And I would wager that it is still a much better experience than other languages doing the same thing. Simply because the Pharo environment understands your code, because your code is its code. The lines are blurred. No big distinction. My separate editor/IDE, my separate debugger, my separate execution environment. Yes I know there are many programmers (probably most) who prefer this separation. I would actually say most don't even know that what Pharo (Smalltalk) does is possible. They have only been taught the other way.

Once again. In other languages everything is external to the environment. The editor, the debugger, the database, ...  Whereas Pharo, all is inside the environment. It opens the capabilities tremendously.


I have played with Jetbrains Community edition. It is very nice for what it is. A dead file language IDE. It possibly is the best. I played with it for a while to consider Kotlin. I opened IntelliJ IDEA. It opened one window, with one Kotlin project, with one 65 line file, and that one file open in the editor. It consumed 710mb of ram. In order to perform the magic it does on dead external languages and source in files requires extraordinary memory. Now if I open a Kotlin REPL within IntelliJ in order to be able to do something remotely lively. It goes up another 10mb and opens an external REPL which now consumes 57mb ram itself. At this point the REPL is idle and doing nothing. If I actually do something in that REPL it now explodes to 368mb of ram. Yes, I know this is Kotlin and therefore Java. Other languages such as Python and PyCharm will be somewhat different as far as the REPL goes. So for due diligence I am now going to download PyCharm, install and do an identical Python file. It is a multi-language benchmark.

While on the website I see a familiar name (Paul Everitt) from when I used to program with Bobo and then when it became Zope, many, many years ago.

PyCharm fresh start with one project, with one 80 line file, with that file open in an editor, weighs in at 675mb of ram. Opening a Python console from PyCharm adds another 10mb and the console itself used 21mb. This is on a Xubuntu 17.04 64bit laptop.

Whereas I have a full Pharo 6 image with an app I am working on which has 26 classes, numerous methods. The app is currently running and has parsed for used several multi-mb files for use. This image currently uses 105mb of ram. It has a much better understanding of the code it contains than does IntelliJ. Because for my app, the Pharo environment contains the IDE and the debugger and my app and all of the other tools available to Pharo. It is exceptionally rich in capabilities. All for currently 1/6th or less of the weight of PyCharm or IntelliJ.


This demonstrates the reasonable efficiency of Pharo (Smalltalk) verses other ways of development. Even if you do simple. Simple editor, repl, etc. you still do not save much if any over Pharo, and you give up much.


In other languages is the IDE one with the language, debugger, environment and application? No, it is not. This is exactly why I titled this Beyond Live Coding.
If you manage to simulate what we have in Pharo you only have a poor facsimile of what Pharo (Smalltalk) is in another language. You are not likely to have a culture or community around it support it.

Personally I find code in file based languages to not be as friendly for committing and source control. I am not good at it. I have a tendency to edit to large a section of code and commit to infrequently. I have not mastered to development cycle sufficiently. In Pharo such is not necessary. Within an image method based commits are exceptionally nice. You do have to learn Monticello and now Iceberg to go beyond the image. But it is being worked on to make it a natural part of development. And as I said, method level commits are native to the way Pharo (Smalltalk) works. So you already do frequent, smaller commits. You would need to insure that you do so in reasonable intervals for Monticello or Iceberg.


Pharo is not perfect, far from it. Hence why I sometimes struggle. It requires much more effort to do things if what you want to do have requirements beyond the image. Such as using libraries or accessing systems external to Pharo. This is a requirement I have. Fortunately for me one of the systems I require has released a REST API for access. So I no longer require going through FFI for that access. I attempted some FFI with NativeBoost and it was not fun. It crashed my image regularly and I was not skilled enough to move beyond. I hope UFFI and Pharo 6 is better. Because it is still very important to access C libraries. If it isn't, then I still might have problems.

Pharo still isn't good at truly small systems. Pharo 7 and 8 should help that nicely. It will be interesting to see how small the VM and image can be and have a working app. I hope it will be nice.


I like the idea of small. Something I can understand. Something that doesn't require GBs of ram for an IDE . I would rather do PicoLisp which has an incredibly fast interpreter, is small and is understandable on both the language and implementation side. It is the one language that intrigues and tempts me. But coming from Pharo it feels primitive. It would take some thought and effort. It might be worth the effort.


The nice thing is that everyone can choose what fits them and their situation. What fits the way they think. What fits their goals. I just struggle with the idea of needing 700mbs to GBs of ram to run an IDE. I would rather do small. Get it in my head and fingertips. Nice thing about choice. My choice isn't required of anyone else. :)


Thanks for the conversation.

Have a great day.


Jimmie




On 07/22/2017 03:02 AM, Dimitris Chloupis wrote:
Live coding as a concept does not exist in most languages. The reason why they can do live coding is because out of necessity . Take exceptions for example , almost never you will find any mention about live coding but you will read about code exiting elegantly or not exiting at all and reloading modules etc.

In the end all coders need a lot of flexibility during execution , especially during the process of debugging. Even in Pharo live coding shines the most during debugging process this is why they go hand in hand.

The moment you have live code and state having live objects is just a consequence of having live code. If you approach it from a pure object orientated approach that is not unique either. Because nowadays we have many extremely popular languages like Python and Ruby . Python for example suppose to be a hybrid procedural and OOP language but that is a lie because in Python functions are objects. Ruby is almost Smalltalk. So both Python and Ruby are pure object orientated.

Pharo crash prone behavior is not extensive. Live state will be lost for data living outside Pharo. If the data is accessed or copied from Pharo the copy will be retained through saving the image but if you don't save the live state of Pharo will be lost. Even if you do save the image the live state on the C side won't be stored so it's up to you to restore if you have the means to do so and already took the appropriate measures. This is why I made a big deal for memory mapped files because essentially they store using an auto save feature live c and C++ state.

Another huge problem for Pharo is that crashes can corrupt the image which means you will have to rebuild it from scratch which can be so tedious if you have lost a lot of live state.

Recovery of code is not a big deal for other programming languages cause unlike Smalltalk they are based on source code files and most modern IDEs will auto save your source code file. If you use version control that becomes unnecessary if you commit often like I do because essentially you become unable to lose code.

Smalltalk and Pharo shines in the idea of a single IDE but the community is too small to afford to be fragmented between many different IDEs. In other languages some IDEs are closed source , some are open source but the trend for the past decade is toward open source IDEs. For example I code in Python and by far the most popular IDE is PyCharm , it's closed source but it has a free edition called "Community Edition" that contains most of of the commercial features (80%) it's one source and free and hosted in Github

https://github.com/JetBrains/intellij-community/tree/master/python

The idea of self contained environments is no big deal either because we have git forks , Python even comes with another features that allow you to create isolate environments that like Pharo contain your code, the language and any library used.

Smalltalk was a bIg deal decades ago but no longer is because coders themselves may not be aware of either Smalltalk or Lisp but language and IDE designers and library developers are very much aware as both languages are considered the golden standard and very much respected.

Pharo is important because is a modern implementation of Smalltalk and tries to push its concepts further. Unlike other language it's not just about copying Smalltalk or canibalizing it's ideas. It's crucial that Smalltalk continues to evolve because afterall is a language of innovation.

None the less we live in a time that modern technology is very close to Smalltalk and most of its features have infected modern coding. They are fragmented or not that obvious or out of the box offered but they are there and experienced coders already rely on them to speed up their workflow.

Languages like C distance themselves from Smalltalk because they prioritize performance. It's the usual case of not having your cake and eat it too. But since every language including Smalltalk is based on C for performance you can implement many of the features. Problem is that you will be reducing performance so in that case it takes more sense to use Pharo or Python or what else.

In any case Pharo is a great environment to work with many flaws and unique advantages in the end Pharo is Pharo offering its own unique experience we all love and respect. Emulation is never the same as the actual thing.

On Fri, 21 Jul 2017 at 19:36, Jimmie Houchin <[hidden email]> wrote:
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 | Threaded
Open this post in threaded view
|

Re: Beyond Live Coding

Jimmie Houchin-5
In reply to this post by Stephane Ducasse-3
Thanks for the reply.

Absolutely, I love what you say, "Pharo is yours".

Which is why last month I joined the Association. I felt I needed to
make the commitment. I had thought I wanted to do BountySource on a
monthly basis. I signed up at the Association level but nothing happened
with regarding to any membership. So I went ahead and did the Annual
fee. But I do like the idea of monthly support. So I may do that again
anyway.

I would love to see the monthly support via BountySource or directly to
the Association whichever is best for you to grow and help sustainability.


I have also been thinking about ways to contribute of my time. I am
looking at how I can help with documentation type areas.

The team that contributes toward Pharo is amazing, especially
considering the size.

Again thanks.

Jimmie



On 07/22/2017 05:04 AM, Stephane Ducasse wrote:
> Thanks Jimmie. Do not hesitate to improve Pharo, because Pharo is what
> we have and each we can make it better.
> BTW: it was not my roadmap it is the result of everybody in the team
> brainstorming.

[snip]

Reply | Threaded
Open this post in threaded view
|

Re: Beyond Live Coding

Stephane Ducasse-3
>
> Which is why last month I joined the Association. I felt I needed to make
> the commitment. I had thought I wanted to do BountySource on a monthly
> basis. I signed up at the Association level but nothing happened with
> regarding to any membership. So I went ahead and did the Annual fee. But I
> do like the idea of monthly support. So I may do that again anyway.

Excellent.
I always said that the structure make us, individuals, more powerful.
The consortium is also a good structure for the same reason: as a sme
1000 Euros
brings nothing but when there are 50 sme, we get one engineer.

>
> I would love to see the monthly support via BountySource or directly to the
> Association whichever is best for you to grow and help sustainability.

Marcus knows everything and me nothing about the setup :)

> I have also been thinking about ways to contribute of my time. I am looking
> at how I can help with documentation type areas.

Yes this is great.

> The team that contributes toward Pharo is amazing, especially considering
> the size.

Tx. But you see there are many external contributors and they get an impact.



> Again thanks.
>
> Jimmie
>
>
>
> On 07/22/2017 05:04 AM, Stephane Ducasse wrote:
>>
>> Thanks Jimmie. Do not hesitate to improve Pharo, because Pharo is what
>> we have and each we can make it better.
>> BTW: it was not my roadmap it is the result of everybody in the team
>> brainstorming.
>
>
> [snip]
>