Behold Pharo: The Modern Smalltalk

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
167 messages Options
123456 ... 9
Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

kilon.alios
Well I was refering to live coding itself, but you are correct, I have not tried combining with literate coding hence why I was curious about the difficulties you ecountered. I did not know that you focused so much Grafoscopio on iterate coding. Thanks for enlighting me. 

I never implied that Python was easier in everything compared to Pharo. Afterall kinda misses a huge chunk which is the IDE itself. 

There lies the challange of live coding as I initially said that we each use it in a diffirent way. Thanks for the link also very enlighting and it is what i wanted, an actual use case. 

On Sat, Oct 7, 2017 at 5:49 PM Offray Vladimir Luna Cárdenas <[hidden email]> wrote:


On 06/10/17 21:00, Dimitris Chloupis wrote:
> Again very generic statements , and I see you refer to tools and
> libraries instead of OOP. We talking here Pharo vs Python on the
> language level because Python obviously does not come with an IDE. But
> then Pharo does not come with literate programming tools or libraries
> as well.

No. We were talking about things "that Pharo can do that Python can't do
or is most difficult". And, for me that includes the (community &
computing) environment provided by Pharo that allow you to go from and
idea to its implementation. In my case the idea was to provide an
experience which mix outlining (a la Leo Editor) with literate computing
(a la Jupyter, IPython) [1]. Even if the original pieces where already
there in Python, mixing them was a nighmare (at least 3 years ago) and
Pharo was more empowering for going from idea to prototype and now Pharo
has literate *computing* (not literate programming [2]) tools.
Grafoscopio is one of them. GT Documenter, in alpha now, is promising.
You can not have a single document for complex books in Jupyter. You
need to split/storage a single work in a "pile of files" metaphor. You
can, today, with Grafoscopio put a 300 pages long PDF in a single
notebook. So yes, there are things that are more complex in one
technology that in other (of course all computer languages are the same
at enough distance, because all them are Turing complete and all that stuff)

[1]
http://mutabit.com/offray/static/blog/output/posts/on-deepness-and-complexity-of-ipython-documents.html
[2] http://blog.fperez.org/2013/04/literate-computing-and-computational.html

>
> I rather not go down the rabbit hole of third party libraries because
> obviously I cannot participate in a discussion about libraries and
> areas of coding, I know nothing about. Plus Python has countless of
> libraries which makes a very longer discussion even if I was familiar
> with them and Pharo has much less but still quite a lot of libraries
> as well.

One of the advantages of being in a community is learning from others
experiences. You said that in your experience you have not found a place
where Python were more difficult that in Pharo. I have shown that in
*my* experience there are. And agree, is unwise to discuss about places
where one has no experience, when is better to learn from those who have it.

Cheers,

Offray


Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

Offray Vladimir Luna Cárdenas-2
In reply to this post by kilon.alios

I think that there are some communities that are more receptive of live coding, beyond programmers. Scientist, journalists, hacktivists, data visualizers, musicians, come to mind and I have a better experience and more openness to live coding with them that with the "classical programmer/coder". With our recent Data Journalism Handbook, adaptation in Grafoscopio [1] and our recurrent Data Week hackathon+workshops[2], we're trying to reach new audiences and communities.

[1] http://mutabit.com/repos.fossil/mapeda/
[2] http://mutabit.com/dataweek/

Cheers,

Offray

On 07/10/17 07:40, Dimitris Chloupis wrote:
Yes I agree with this

Pharo is a live coding BASED enviroment. For Pharo live coding is not just an easy to use feature it based its entire mentality around the idea of live coding.

Even though Smalltalk borrowed live coding and image format from Lisp we are more "pure" in that regard even compared to Lisp. 

But one thing to note here is that live coding is not really that useful when used always. At least for me I rely a lot on it for debugging and experimenting. But when I work based on a plan , or code just works I do not care so much about it. 

So my workflow in the end is semi-live coding because I dont feel I need live coding 24/7 to be super productive. 

Of course that creates some barriers in the end when tools are not made to work 24/7 on a live coding context. To that extend Pharo is definetly superior and a true live coding enviroment.

You are suprised that you can do live coding in C++ but I was trully shocked. 

My saga to do live coding in C++ started as a joke, something to use to mock C++ ugliness and weakness. But oh boy it did slap it back to my face. 

The process is again simple, you wrap eveything inside a main loop,and call in this loop functions (C has no objects obvious) or methods if you use C++ from DLLs. Those DLLs obviously contain 99.9% of your code. Because a DLL can be reloaded it allows you not to stop executing and replace code on the fly. The main loop is wrapped inside an exception to make sure the an error will never crash your application, C/C++ exceptions are more powerful than Pharo live coding in that regard because in Pharo if you do anything bad with UFFI and crash it , it will crash for sure. 

If you keep the DLL small and  you use tons of small dlls your compile times will be almost instantenous. You can also with very view lines detect date signature change in source file and trigger background compilation. Again few lines of code. The last mountain is live state, in this case the executable pass a single pointer and instead of the executable handling the memory its actually the dlls that handle it but the executable because it cannot crash or exit will keep the live state running. You can also use memory mapped file to store live state as they perform pure memory dumps. 

All in all you will end up with 100 lines of code that can be wrapped into a library and reused in the next project with zero setup. Its an one time pain. 

Will I would recommend C++ over Pharo for live coding .... helll no.... C++ obviously misses a hugely important live coding ingredient which is reflection. We do live coding because we want to interact with those objects ask questions about what is going on and why our code does not work as intended

However Python has no such limitation following a very similar design to Smalltalk and being much more powerful language than C++. Python follow very closely the Smalltalk paradigm even though there is not a single mention of Smalltalk , anywhere in the Python community or of live coding.
 
Live coding in C++ has become a huge deal in game development mainly because game development tend to want to change things on the fly and games are so big with extremely long compile times. Unreal has made a huge deal over its ability to hot reload C++  code in its editor , though I do not like its approach so much.

Bottom line is yes its easy and simple to do live coding in other languages, not recommended so much in C++ because of its static compiled nature and lack of reflection but for dynamic language like Python it can come pretty close and I speak from experience. 

At least I have not found something in Python that made me wish I was live  coding in Pharo so far, but then yes I still think its better to have a full blown live coding. Also from my limited understanding I have figured out that pretty much every language out there allows for reloading code which is pretty much a very large requirement for live coding. 

So yes you can live code to an extend, lesser in languages like C++ , more so in language like Python, Ruby etc. Can you get the Pharo experience ? In a dynamic language with the creation of a live coding library you could get pretty close but never exactly the same.

Pharo still is the undisputed king of live coding. 

Why live coding is not a huge thing in coding in general, I am willing to bet it has more to do with coder mentality than language limitation. When you are used to "dead  code" workflow it difficult to switch. I struggle a lot to get use to the live coding workflow of Pharo because I had to rewire my brain. But in the end you cannot avoid live coding, there will be always scenarios you would want to change things on the fly, reload code, store live state etc. 

In the end it more a coder flaw than it is a language flaw. I know we love to blame languages for our mistakes. 

But in our back of our head we all know we debate over languages that we barely use only 0.000001% of their true potential. We are too lazy and sometimes we need someone to slam our face to the truth to actually see it. And by we I dont mean the Pharo community but human nature by itself.  That's exactly what Pharo did for me that motivated me exploring live coding in other languages. 

If it was not for Pharo I would still be doing the old slow method of correct, compile, restart and repeat till you hate yourself. 

On Sat, Oct 7, 2017 at 1:57 PM horrido <[hidden email]> wrote:
> My point is that indeed you can do with EASE live coding in a numerous
languages, at least to my experience. I have tried only Python and C/C++.

Until I came upon this thread, I never knew you could do live coding in
Python and C/C++. And I was a professional C/C++ programmer for over 15
years!

It is certainly a well-kept secret. I have found very little information on
the web about doing live coding in these languages (in fact, none). This
leads me to believe that the vast majority of Python and C/C++ developers
don't know about, or don't do, live coding.

Whether it's "easy" is rather subjective. I suspect it's not as easy nor as
convenient as in Pharo. If it were, then live coding ought to be much more
prevalent in the Python and C/C++ communities. After all, what developer
doesn't want to improve their productivity or increase their velocity of
development?

The key differentiator here, I think, is that live coding is baked into
Pharo/Smalltalk, thus making it natural to use. It is not natural for Python
and C/C++ programmers. It would be difficult to convince the IT industry to
adopt live coding en masse.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html


Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

Offray Vladimir Luna Cárdenas-2
In reply to this post by kilon.alios

Ok. Glad to help. In the thread I mentioned some of the specific difficulties I had implementing Grafoscopio's idea in Python[1] (in one word: fragmentation, of technologies and computing paradigms)

[1] http://mutabit.com/offray/static/blog/output/posts/grafoscopio-idea-and-initial-progress.html

Cheers,

Offray


On 07/10/17 10:17, Dimitris Chloupis wrote:
Well I was refering to live coding itself, but you are correct, I have not tried combining with literate coding hence why I was curious about the difficulties you ecountered. I did not know that you focused so much Grafoscopio on iterate coding. Thanks for enlighting me. 

I never implied that Python was easier in everything compared to Pharo. Afterall kinda misses a huge chunk which is the IDE itself. 

There lies the challange of live coding as I initially said that we each use it in a diffirent way. Thanks for the link also very enlighting and it is what i wanted, an actual use case. 

On Sat, Oct 7, 2017 at 5:49 PM Offray Vladimir Luna Cárdenas <[hidden email]> wrote:


On 06/10/17 21:00, Dimitris Chloupis wrote:
> Again very generic statements , and I see you refer to tools and
> libraries instead of OOP. We talking here Pharo vs Python on the
> language level because Python obviously does not come with an IDE. But
> then Pharo does not come with literate programming tools or libraries
> as well.

No. We were talking about things "that Pharo can do that Python can't do
or is most difficult". And, for me that includes the (community &
computing) environment provided by Pharo that allow you to go from and
idea to its implementation. In my case the idea was to provide an
experience which mix outlining (a la Leo Editor) with literate computing
(a la Jupyter, IPython) [1]. Even if the original pieces where already
there in Python, mixing them was a nighmare (at least 3 years ago) and
Pharo was more empowering for going from idea to prototype and now Pharo
has literate *computing* (not literate programming [2]) tools.
Grafoscopio is one of them. GT Documenter, in alpha now, is promising.
You can not have a single document for complex books in Jupyter. You
need to split/storage a single work in a "pile of files" metaphor. You
can, today, with Grafoscopio put a 300 pages long PDF in a single
notebook. So yes, there are things that are more complex in one
technology that in other (of course all computer languages are the same
at enough distance, because all them are Turing complete and all that stuff)

[1]
http://mutabit.com/offray/static/blog/output/posts/on-deepness-and-complexity-of-ipython-documents.html
[2] http://blog.fperez.org/2013/04/literate-computing-and-computational.html

>
> I rather not go down the rabbit hole of third party libraries because
> obviously I cannot participate in a discussion about libraries and
> areas of coding, I know nothing about. Plus Python has countless of
> libraries which makes a very longer discussion even if I was familiar
> with them and Pharo has much less but still quite a lot of libraries
> as well.

One of the advantages of being in a community is learning from others
experiences. You said that in your experience you have not found a place
where Python were more difficult that in Pharo. I have shown that in
*my* experience there are. And agree, is unwise to discuss about places
where one has no experience, when is better to learn from those who have it.

Cheers,

Offray



Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

kilon.alios
In reply to this post by Offray Vladimir Luna Cárdenas-2
Indeed if you google "live coding" you get a lot of audio visual related tools. I have to confess because I am working with graphics, live coding is pretty much bread and butter of my workflow , cannot imagine myself working without it. 

When you step out of audio visual and other live performance arts you barely see "live coding" mentioned if not at all. The only exception I know is RunRev's LiveCode , similar to Pharo in the general idea, used to be closed source but now there is an open source version and Apple's Swift's Playgrounds which were inspired by a Smalltalk like demo. 

Fragmantation is indeed an issue with all programming languages including Pharo but on the other hand is a necessarily evil for innovation because my experience is that where there is unity there is also stagnation of progress but this enters philosophical ground I rather not venture into.

On Sat, Oct 7, 2017 at 6:18 PM Offray Vladimir Luna Cárdenas <[hidden email]> wrote:

I think that there are some communities that are more receptive of live coding, beyond programmers. Scientist, journalists, hacktivists, data visualizers, musicians, come to mind and I have a better experience and more openness to live coding with them that with the "classical programmer/coder". With our recent Data Journalism Handbook, adaptation in Grafoscopio [1] and our recurrent Data Week hackathon+workshops[2], we're trying to reach new audiences and communities.

[1] http://mutabit.com/repos.fossil/mapeda/
[2] http://mutabit.com/dataweek/

Cheers,

Offray


On 07/10/17 07:40, Dimitris Chloupis wrote:
Yes I agree with this

Pharo is a live coding BASED enviroment. For Pharo live coding is not just an easy to use feature it based its entire mentality around the idea of live coding.

Even though Smalltalk borrowed live coding and image format from Lisp we are more "pure" in that regard even compared to Lisp. 

But one thing to note here is that live coding is not really that useful when used always. At least for me I rely a lot on it for debugging and experimenting. But when I work based on a plan , or code just works I do not care so much about it. 

So my workflow in the end is semi-live coding because I dont feel I need live coding 24/7 to be super productive. 

Of course that creates some barriers in the end when tools are not made to work 24/7 on a live coding context. To that extend Pharo is definetly superior and a true live coding enviroment.

You are suprised that you can do live coding in C++ but I was trully shocked. 

My saga to do live coding in C++ started as a joke, something to use to mock C++ ugliness and weakness. But oh boy it did slap it back to my face. 

The process is again simple, you wrap eveything inside a main loop,and call in this loop functions (C has no objects obvious) or methods if you use C++ from DLLs. Those DLLs obviously contain 99.9% of your code. Because a DLL can be reloaded it allows you not to stop executing and replace code on the fly. The main loop is wrapped inside an exception to make sure the an error will never crash your application, C/C++ exceptions are more powerful than Pharo live coding in that regard because in Pharo if you do anything bad with UFFI and crash it , it will crash for sure. 

If you keep the DLL small and  you use tons of small dlls your compile times will be almost instantenous. You can also with very view lines detect date signature change in source file and trigger background compilation. Again few lines of code. The last mountain is live state, in this case the executable pass a single pointer and instead of the executable handling the memory its actually the dlls that handle it but the executable because it cannot crash or exit will keep the live state running. You can also use memory mapped file to store live state as they perform pure memory dumps. 

All in all you will end up with 100 lines of code that can be wrapped into a library and reused in the next project with zero setup. Its an one time pain. 

Will I would recommend C++ over Pharo for live coding .... helll no.... C++ obviously misses a hugely important live coding ingredient which is reflection. We do live coding because we want to interact with those objects ask questions about what is going on and why our code does not work as intended

However Python has no such limitation following a very similar design to Smalltalk and being much more powerful language than C++. Python follow very closely the Smalltalk paradigm even though there is not a single mention of Smalltalk , anywhere in the Python community or of live coding.
 
Live coding in C++ has become a huge deal in game development mainly because game development tend to want to change things on the fly and games are so big with extremely long compile times. Unreal has made a huge deal over its ability to hot reload C++  code in its editor , though I do not like its approach so much.

Bottom line is yes its easy and simple to do live coding in other languages, not recommended so much in C++ because of its static compiled nature and lack of reflection but for dynamic language like Python it can come pretty close and I speak from experience. 

At least I have not found something in Python that made me wish I was live  coding in Pharo so far, but then yes I still think its better to have a full blown live coding. Also from my limited understanding I have figured out that pretty much every language out there allows for reloading code which is pretty much a very large requirement for live coding. 

So yes you can live code to an extend, lesser in languages like C++ , more so in language like Python, Ruby etc. Can you get the Pharo experience ? In a dynamic language with the creation of a live coding library you could get pretty close but never exactly the same.

Pharo still is the undisputed king of live coding. 

Why live coding is not a huge thing in coding in general, I am willing to bet it has more to do with coder mentality than language limitation. When you are used to "dead  code" workflow it difficult to switch. I struggle a lot to get use to the live coding workflow of Pharo because I had to rewire my brain. But in the end you cannot avoid live coding, there will be always scenarios you would want to change things on the fly, reload code, store live state etc. 

In the end it more a coder flaw than it is a language flaw. I know we love to blame languages for our mistakes. 

But in our back of our head we all know we debate over languages that we barely use only 0.000001% of their true potential. We are too lazy and sometimes we need someone to slam our face to the truth to actually see it. And by we I dont mean the Pharo community but human nature by itself.  That's exactly what Pharo did for me that motivated me exploring live coding in other languages. 

If it was not for Pharo I would still be doing the old slow method of correct, compile, restart and repeat till you hate yourself. 

On Sat, Oct 7, 2017 at 1:57 PM horrido <[hidden email]> wrote:
> My point is that indeed you can do with EASE live coding in a numerous
languages, at least to my experience. I have tried only Python and C/C++.

Until I came upon this thread, I never knew you could do live coding in
Python and C/C++. And I was a professional C/C++ programmer for over 15
years!

It is certainly a well-kept secret. I have found very little information on
the web about doing live coding in these languages (in fact, none). This
leads me to believe that the vast majority of Python and C/C++ developers
don't know about, or don't do, live coding.

Whether it's "easy" is rather subjective. I suspect it's not as easy nor as
convenient as in Pharo. If it were, then live coding ought to be much more
prevalent in the Python and C/C++ communities. After all, what developer
doesn't want to improve their productivity or increase their velocity of
development?

The key differentiator here, I think, is that live coding is baked into
Pharo/Smalltalk, thus making it natural to use. It is not natural for Python
and C/C++ programmers. It would be difficult to convince the IT industry to
adopt live coding en masse.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html


Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

horrido
In reply to this post by horrido
Hey, guys, I'm mentioned in this  O'Reilly newsletter
<http://post.oreilly.com/form/oreilly/viewhtml/9z1zgj2l150hp80ah3enjvhjhqcnr218calos5bd9o0?imm_mid=0f7103&cmp=em-prog-na-na-newsltr_20171007>
!!! All because of the Pharo article.

I wonder, is my campaign /actually/ succeeding? If so, I can die happy. ;-)



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

webwarrior
In reply to this post by kilon.alios
kilon.alios wrote
> Care to explain what difficulty you experienced in live coding with
> Python.
> Or what Pharo can do that Python can’t live code wise ? Maybe I will learn
> something.

It's funny that one of main reasons why I discovered and started using Pharo
was failure to get live coding working for Python (Jython in particular).

And now time after time kilon.alios states that live coding in Python is
"easy" and no big deal.

I will tell you, Pharoers, about code reloading in Python, and let you
decide for yourselves how it compares to Pharo.


Out of the box in Python you can execute some Python code and reload modules
with reload() function.

What reload() does is it reads code from file (in Python each source file
corresponds to module), executes it, and replaces reference to [that module]
in current module.
From that moment, any code in current module, when referencing reloaded
module, will point to new version of it.

All implicitly imported names will (like from foo import bar, from foo
import *, etc.) will point to old version. Also all other modules except
current will not be affected.

There are, however, third-party libraries, that take care of it.

But that's not all. All instances and subclasses of old classes will point
to old versions of classes.
To counter that, instead of replacing old module you could replace its
contents by newer variables/functions and patch classes by replacing their
contents.
Some third-party libraries do that.

That's still not all. If you store references to functions/methods/classes,
that references will point to old versions.
reimport library takes care of that, but it uses implementation-specific
feature of CPython's GC, which lets you get all references to some object.
Unfortunately, it doesn't work in Jython, and probably in other alternative
Python implementations.

But wait, what if you rename a class or function, or change its base
class(-es)?
You're out of luck. Theoretically you could handle such change if recent
code change consists of a single rename, but that's it.

I may have missed some other edge cases and haven't talked about tools
support, but I hope you get the idea.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

kilon.alios
I never claimed that Python , which refers to CPython to the vast majority of python coders, is offering live coding out of the box. The fact that you have to reload modules manually would make such claims ridiculous.

From the very first post I was crystal clear that there is a need for creating a library that handles live coding for you and gave general instructions of what this library will have to do.

My claim is that Python and other languages CAN do live coding.

I NEVER claimed also that Python is a live coding environment which it stores in an image format. In short Python IS NOT Pharo. Period.

Can python reload modules ? Yes
Can python trigger the debugger in case of error ? Yes
Can python replace methods and variables during execution ? Yes
Can python recompile individual methods and classes and replace their previous instances ? Yes
Can python make you coffee ? Nope
Etc etc

Depending how deep you want to go live coding wise your live coding library will enlarge.

From my experience around  100 lines of code are enough to offer most of Pharo’s basic live coding functionality. Such task that needs to happen only once and then simply reused in each project that wants to utilize live coding , for my standards it is easy. It won’t be easy for a beginner python coder cause he may not even know what OOP is. So obviously I am referring to experienced coders. It won’t be easy if you want to fully replicate Pharo’s live coding capabilities , because you will Definetly go way beyond 100 lines.


I stated this before and I will state this again Pharo IS HANDS DOWN THE BEST LIVE CODING ENVIRONMENT I have ever used.

My point is that other languages CAN do what Pharo does. Even though they are NOT live coding environments. They just have the features to be live coding environments.

Jython has had a lot of problems using CPython libraries, live coding is the least of its problems. This is the reason CPython has almost the monopoly of python coding.

I just don’t like it when other languages are illustrated as garbage and Pharo as the holy grail. They all have their pros and cons. 

Can’t help with Jython , I used it on the premise that I may need Java libraries, I ended up finding what I wanted in CPython and have not touched it since. 

My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding. 


If we are to compare them the least we can do is do it in a fair and sincere way.
On Mon, 9 Oct 2017 at 20:06, webwarrior <[hidden email]> wrote:
kilon.alios wrote
> Care to explain what difficulty you experienced in live coding with
> Python.
> Or what Pharo can do that Python can’t live code wise ? Maybe I will learn
> something.

It's funny that one of main reasons why I discovered and started using Pharo
was failure to get live coding working for Python (Jython in particular).

And now time after time kilon.alios states that live coding in Python is
"easy" and no big deal.

I will tell you, Pharoers, about code reloading in Python, and let you
decide for yourselves how it compares to Pharo.


Out of the box in Python you can execute some Python code and reload modules
with reload() function.

What reload() does is it reads code from file (in Python each source file
corresponds to module), executes it, and replaces reference to [that module]
in current module.
From that moment, any code in current module, when referencing reloaded
module, will point to new version of it.

All implicitly imported names will (like from foo import bar, from foo
import *, etc.) will point to old version. Also all other modules except
current will not be affected.

There are, however, third-party libraries, that take care of it.

But that's not all. All instances and subclasses of old classes will point
to old versions of classes.
To counter that, instead of replacing old module you could replace its
contents by newer variables/functions and patch classes by replacing their
contents.
Some third-party libraries do that.

That's still not all. If you store references to functions/methods/classes,
that references will point to old versions.
reimport library takes care of that, but it uses implementation-specific
feature of CPython's GC, which lets you get all references to some object.
Unfortunately, it doesn't work in Jython, and probably in other alternative
Python implementations.

But wait, what if you rename a class or function, or change its base
class(-es)?
You're out of luck. Theoretically you could handle such change if recent
code change consists of a single rename, but that's it.

I may have missed some other edge cases and haven't talked about tools
support, but I hope you get the idea.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

kilon.alios
And not to worry I won’t bother with discussing such issues again it’s clear the community is unwilling to deal with such discussions. I have no problem with that , it’s a free world.
On Tue, 10 Oct 2017 at 03:41, Dimitris Chloupis <[hidden email]> wrote:
I never claimed that Python , which refers to CPython to the vast majority of python coders, is offering live coding out of the box. The fact that you have to reload modules manually would make such claims ridiculous.

From the very first post I was crystal clear that there is a need for creating a library that handles live coding for you and gave general instructions of what this library will have to do.

My claim is that Python and other languages CAN do live coding.

I NEVER claimed also that Python is a live coding environment which it stores in an image format. In short Python IS NOT Pharo. Period.

Can python reload modules ? Yes
Can python trigger the debugger in case of error ? Yes
Can python replace methods and variables during execution ? Yes
Can python recompile individual methods and classes and replace their previous instances ? Yes
Can python make you coffee ? Nope
Etc etc

Depending how deep you want to go live coding wise your live coding library will enlarge.

From my experience around  100 lines of code are enough to offer most of Pharo’s basic live coding functionality. Such task that needs to happen only once and then simply reused in each project that wants to utilize live coding , for my standards it is easy. It won’t be easy for a beginner python coder cause he may not even know what OOP is. So obviously I am referring to experienced coders. It won’t be easy if you want to fully replicate Pharo’s live coding capabilities , because you will Definetly go way beyond 100 lines.


I stated this before and I will state this again Pharo IS HANDS DOWN THE BEST LIVE CODING ENVIRONMENT I have ever used.

My point is that other languages CAN do what Pharo does. Even though they are NOT live coding environments. They just have the features to be live coding environments.

Jython has had a lot of problems using CPython libraries, live coding is the least of its problems. This is the reason CPython has almost the monopoly of python coding.

I just don’t like it when other languages are illustrated as garbage and Pharo as the holy grail. They all have their pros and cons. 

Can’t help with Jython , I used it on the premise that I may need Java libraries, I ended up finding what I wanted in CPython and have not touched it since. 

My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding. 


If we are to compare them the least we can do is do it in a fair and sincere way.
On Mon, 9 Oct 2017 at 20:06, webwarrior <[hidden email]> wrote:
kilon.alios wrote
> Care to explain what difficulty you experienced in live coding with
> Python.
> Or what Pharo can do that Python can’t live code wise ? Maybe I will learn
> something.

It's funny that one of main reasons why I discovered and started using Pharo
was failure to get live coding working for Python (Jython in particular).

And now time after time kilon.alios states that live coding in Python is
"easy" and no big deal.

I will tell you, Pharoers, about code reloading in Python, and let you
decide for yourselves how it compares to Pharo.


Out of the box in Python you can execute some Python code and reload modules
with reload() function.

What reload() does is it reads code from file (in Python each source file
corresponds to module), executes it, and replaces reference to [that module]
in current module.
From that moment, any code in current module, when referencing reloaded
module, will point to new version of it.

All implicitly imported names will (like from foo import bar, from foo
import *, etc.) will point to old version. Also all other modules except
current will not be affected.

There are, however, third-party libraries, that take care of it.

But that's not all. All instances and subclasses of old classes will point
to old versions of classes.
To counter that, instead of replacing old module you could replace its
contents by newer variables/functions and patch classes by replacing their
contents.
Some third-party libraries do that.

That's still not all. If you store references to functions/methods/classes,
that references will point to old versions.
reimport library takes care of that, but it uses implementation-specific
feature of CPython's GC, which lets you get all references to some object.
Unfortunately, it doesn't work in Jython, and probably in other alternative
Python implementations.

But wait, what if you rename a class or function, or change its base
class(-es)?
You're out of luck. Theoretically you could handle such change if recent
code change consists of a single rename, but that's it.

I may have missed some other edge cases and haven't talked about tools
support, but I hope you get the idea.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

webwarrior
Calm your tits, dude. No need to use Caps Lock that much :-)

I made no value judgements in my post, letting readers decide for
themselves.
Nor did I attribute any claims to you. Except "live coding in Python is
easy", which you did say in some earlier posts.

> My post were not made to pick a fight but rather to inform and demolish
> the wrong assumptions that other languages CANNOT DO live coding.

Well, many of them kinda can.
But you see, when live coding is an afterthought, problems appear here and
there, and some of them are unsolvable. Up to the point that it's easier to
do traditional development process and not bother with live coding at all.

It's almost like saying that you can do point-free style functional
programming in Python.
Of course you can (to some extent).  There is even a library for that
(https://pypi.python.org/pypi/pointfree/).
I there much sense in it? I don't think so.




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

Denis Kudriashov
Hi Dimitris.

You opinion about live programming reminds me the common sentence from developers who don't care about languages at all. Usual argument is: they all are Turing complete, so who cares.

2017-10-10 11:02 GMT+02:00 webwarrior <[hidden email]>:
Calm your tits, dude. No need to use Caps Lock that much :-)

I made no value judgements in my post, letting readers decide for
themselves.
Nor did I attribute any claims to you. Except "live coding in Python is
easy", which you did say in some earlier posts.

> My post were not made to pick a fight but rather to inform and demolish
> the wrong assumptions that other languages CANNOT DO live coding.

Well, many of them kinda can.
But you see, when live coding is an afterthought, problems appear here and
there, and some of them are unsolvable. Up to the point that it's easier to
do traditional development process and not bother with live coding at all.

It's almost like saying that you can do point-free style functional
programming in Python.
Of course you can (to some extent).  There is even a library for that
(https://pypi.python.org/pypi/pointfree/).
I there much sense in it? I don't think so.

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

Sean P. DeNigris
Administrator
In reply to this post by kilon.alios
kilon.alios wrote
> it’s clear the community is unwilling to deal with such discussions.

I wouldn't say that... after all this thread has the most posts on this list
since January 21 ;) I personally learned a lot and was glad to hear all the
points. I thought the last two pretty much captured the situation, which is
that you *can* do live programming in other languages, but the advantage of
Pharo is that it's *about* live programming. I certainly didn't know it was
even possible in some of the other languages mentioned. Yet, practically, it
seems extremely difficult for a system that tacks something on as a feature
to compete with a system that values that thing at its core. Ironically, the
biggest barrier seems to be human, in the McLuhan sense that our medium
determines how/what we can think/say. I feel lucky to have discovered
Smalltalk and have cast off (most) of the brain damage from C and C++ ha ha.



-----
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

horrido
In reply to this post by horrido
Interestingly, I'm getting a fair amount of pushback on this. Personally, I
think it would be very helpful to have a live (updatable, so as to keep it
current) reference page for the class library, something that developers can
easily look up what they need. After all, most of the power of Pharo comes
from the class library and we need to make it as accessible as possible to
less experienced Pharoers (i.e., beginners).

Exploring the class library through the System Browser is very inefficient.
This is further exacerbated by the fact that many classes and methods are
simply not well-documented (containing a cursory remark which is just barely
useful).

I realize that creating a live reference page is not easy to do. In fact,
it's a lot of work. But the absence of such a page is a real obstacle to
Pharo acceptance.



horrido wrote

> Thanks. I gave your answer verbatim. I also added the following paragraph:
>
> The problem I find with today’s developers is that they are rather
> closed-minded. They are rigid and inflexible, and not willing to adapt to
> new and different ways of doing things. In my generation (circa
> 1980–1990),
> people didn’t have a problem with trying different technologies. That’s
> why
> I had no issue with learning Smalltalk 10 years ago, after I had retired
> from a 20-year-long career in C systems programming and FORTRAN scientific
> programming.
>
>
>
> Sven Van Caekenberghe-2 wrote
>>> On 6 Oct 2017, at 14:54, horrido &lt;
>
>> horrido.hobbies@
>
>> &gt; wrote:
>>>
>>> I received this comment from someone who complained:
>>>
>>> *What about the lack of documentation? From time to time I’ve checked
>>> some
>>> SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of
>>> these, only GNU-SmallTalk appears to have a free, official programming
>>> guide
>>> and core library reference that any serious programmer expects from a
>>> language.
>>>
>>> https://www.gnu.org/software/smalltalk/manual-base/html_node/*
>>>
>>> I pointed to Pharo's documentation but then he came back with:
>>>
>>> *Then show me a link of the free, maintained reference documentation for
>>> the
>>> classes that form “the core library”, like this one for Python
>>> (https://docs.python.org/3/library/index.html)*
>>>
>>> It's true, most Smalltalks do not have a core library reference, not
>>> even
>>> VisualWorks! So what is the proper response to this complaint?
>>
>> The first answer is that Pharo/Smalltalk is unique in that a running
>> system/IDE contains _all_ source code, _all_ documentation (class,
>> method,
>> help, tutorial), _all_ unit tests and _all_ runnable examples in a very
>> easy, accessible way. It takes some getting used to, but this is actually
>> better and much more powerful than any alternative.
>>
>> The second answer is that there are lots of books and articles that take
>> the classic/structured book/paper approach. There is
>> http://books.pharo.org, http://themoosebook.org,
>> http://book.seaside.st/book, http://medium.com/concerning-pharo and many
>> more.
>>
>>> Thanks.
>>>
>>>
>>>
>>> --
>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>>
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html





--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

philippeback
A Bluebook updated picture would be great. And I am sure Roassal could produce it right away.

Phil

On Oct 10, 2017 15:58, "horrido" <[hidden email]> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I
think it would be very helpful to have a live (updatable, so as to keep it
current) reference page for the class library, something that developers can
easily look up what they need. After all, most of the power of Pharo comes
from the class library and we need to make it as accessible as possible to
less experienced Pharoers (i.e., beginners).

Exploring the class library through the System Browser is very inefficient.
This is further exacerbated by the fact that many classes and methods are
simply not well-documented (containing a cursory remark which is just barely
useful).

I realize that creating a live reference page is not easy to do. In fact,
it's a lot of work. But the absence of such a page is a real obstacle to
Pharo acceptance.



horrido wrote
> Thanks. I gave your answer verbatim. I also added the following paragraph:
>
> The problem I find with today’s developers is that they are rather
> closed-minded. They are rigid and inflexible, and not willing to adapt to
> new and different ways of doing things. In my generation (circa
> 1980–1990),
> people didn’t have a problem with trying different technologies. That’s
> why
> I had no issue with learning Smalltalk 10 years ago, after I had retired
> from a 20-year-long career in C systems programming and FORTRAN scientific
> programming.
>
>
>
> Sven Van Caekenberghe-2 wrote
>>> On 6 Oct 2017, at 14:54, horrido &lt;
>
>> horrido.hobbies@
>
>> &gt; wrote:
>>>
>>> I received this comment from someone who complained:
>>>
>>> *What about the lack of documentation? From time to time I’ve checked
>>> some
>>> SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of
>>> these, only GNU-SmallTalk appears to have a free, official programming
>>> guide
>>> and core library reference that any serious programmer expects from a
>>> language.
>>>
>>> https://www.gnu.org/software/smalltalk/manual-base/html_node/*
>>>
>>> I pointed to Pharo's documentation but then he came back with:
>>>
>>> *Then show me a link of the free, maintained reference documentation for
>>> the
>>> classes that form “the core library”, like this one for Python
>>> (https://docs.python.org/3/library/index.html)*
>>>
>>> It's true, most Smalltalks do not have a core library reference, not
>>> even
>>> VisualWorks! So what is the proper response to this complaint?
>>
>> The first answer is that Pharo/Smalltalk is unique in that a running
>> system/IDE contains _all_ source code, _all_ documentation (class,
>> method,
>> help, tutorial), _all_ unit tests and _all_ runnable examples in a very
>> easy, accessible way. It takes some getting used to, but this is actually
>> better and much more powerful than any alternative.
>>
>> The second answer is that there are lots of books and articles that take
>> the classic/structured book/paper approach. There is
>> http://books.pharo.org, http://themoosebook.org,
>> http://book.seaside.st/book, http://medium.com/concerning-pharo and many
>> more.
>>
>>> Thanks.
>>>
>>>
>>>
>>> --
>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>>
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html





--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html


Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

Stephane Ducasse-3
In reply to this post by webwarrior
Webwarrior I can tell you that you made my day :)
Thanks for this great testimony.

Today we discuss about Pablo because he has a working system being
able to upload hot
code and migrate instance but also the code on the stack.

We will see if we integrate it in Pharo but I want the best hot code
loader ever and be able to update the updater while running the
updater.

Then we want to have a context aware version of this one where you can
apply a change that break the UI and revert it.

Stef


On Mon, Oct 9, 2017 at 7:05 PM, webwarrior <[hidden email]> wrote:

> kilon.alios wrote
>> Care to explain what difficulty you experienced in live coding with
>> Python.
>> Or what Pharo can do that Python can’t live code wise ? Maybe I will learn
>> something.
>
> It's funny that one of main reasons why I discovered and started using Pharo
> was failure to get live coding working for Python (Jython in particular).
>
> And now time after time kilon.alios states that live coding in Python is
> "easy" and no big deal.
>
> I will tell you, Pharoers, about code reloading in Python, and let you
> decide for yourselves how it compares to Pharo.
>
>
> Out of the box in Python you can execute some Python code and reload modules
> with reload() function.
>
> What reload() does is it reads code from file (in Python each source file
> corresponds to module), executes it, and replaces reference to [that module]
> in current module.
> From that moment, any code in current module, when referencing reloaded
> module, will point to new version of it.
>
> All implicitly imported names will (like from foo import bar, from foo
> import *, etc.) will point to old version. Also all other modules except
> current will not be affected.
>
> There are, however, third-party libraries, that take care of it.
>
> But that's not all. All instances and subclasses of old classes will point
> to old versions of classes.
> To counter that, instead of replacing old module you could replace its
> contents by newer variables/functions and patch classes by replacing their
> contents.
> Some third-party libraries do that.
>
> That's still not all. If you store references to functions/methods/classes,
> that references will point to old versions.
> reimport library takes care of that, but it uses implementation-specific
> feature of CPython's GC, which lets you get all references to some object.
> Unfortunately, it doesn't work in Jython, and probably in other alternative
> Python implementations.
>
> But wait, what if you rename a class or function, or change its base
> class(-es)?
> You're out of luck. Theoretically you could handle such change if recent
> code change consists of a single rename, but that's it.
>
> I may have missed some other edge cases and haven't talked about tools
> support, but I hope you get the idea.
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

Stephane Ducasse-3
In reply to this post by Denis Kudriashov
Which reminds me a guy that I tried to convince that become: is not
the same as changeClassToThatOf: but he was super smart and knew so
this is written in his super smart paper and I smile still now
thinking about it.



On Tue, Oct 10, 2017 at 11:39 AM, Denis Kudriashov <[hidden email]> wrote:

> Hi Dimitris.
>
> You opinion about live programming reminds me the common sentence from
> developers who don't care about languages at all. Usual argument is: they
> all are Turing complete, so who cares.
>
> 2017-10-10 11:02 GMT+02:00 webwarrior <[hidden email]>:
>>
>> Calm your tits, dude. No need to use Caps Lock that much :-)
>>
>> I made no value judgements in my post, letting readers decide for
>> themselves.
>> Nor did I attribute any claims to you. Except "live coding in Python is
>> easy", which you did say in some earlier posts.
>>
>> > My post were not made to pick a fight but rather to inform and demolish
>> > the wrong assumptions that other languages CANNOT DO live coding.
>>
>> Well, many of them kinda can.
>> But you see, when live coding is an afterthought, problems appear here and
>> there, and some of them are unsolvable. Up to the point that it's easier
>> to
>> do traditional development process and not bother with live coding at all.
>>
>> It's almost like saying that you can do point-free style functional
>> programming in Python.
>> Of course you can (to some extent).  There is even a library for that
>> (https://pypi.python.org/pypi/pointfree/).
>> I there much sense in it? I don't think so.
>>
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

Stephane Ducasse-3
In reply to this post by horrido
On Tue, Oct 10, 2017 at 3:58 PM, horrido <[hidden email]> wrote:
> Interestingly, I'm getting a fair amount of pushback on this. Personally, I
> think it would be very helpful to have a live (updatable, so as to keep it
> current) reference page for the class library, something that developers can
> easily look up what they need. After all, most of the power of Pharo comes
> from the class library and we need to make it as accessible as possible to
> less experienced Pharoers (i.e., beginners).


This is why I started to comment even the classes that we all know
You see having a lovely comment on Association, Array, OrderedCollection
with all the love we can is the best welcoming.

>
> Exploring the class library through the System Browser is very inefficient.
> This is further exacerbated by the fact that many classes and methods are
> simply not well-documented (containing a cursory remark which is just barely
> useful).

Totally agree.
Now the good aspect is that ANY pharoers can help making such
class/method comments
great.
It takes 5 to 10 min.
And I started to add executable examples

"
3 + 2
>>> 5
"

> I realize that creating a live reference page is not easy to do. In fact,
> it's a lot of work. But the absence of such a page is a real obstacle to
> Pharo acceptance.

In the past we generate a javadoc but nobody looked at it.

>
>
>
> horrido wrote
>> Thanks. I gave your answer verbatim. I also added the following paragraph:
>>
>> The problem I find with today’s developers is that they are rather
>> closed-minded. They are rigid and inflexible, and not willing to adapt to
>> new and different ways of doing things. In my generation (circa
>> 1980–1990),
>> people didn’t have a problem with trying different technologies. That’s
>> why
>> I had no issue with learning Smalltalk 10 years ago, after I had retired
>> from a 20-year-long career in C systems programming and FORTRAN scientific
>> programming.
>>
>>
>>
>> Sven Van Caekenberghe-2 wrote
>>>> On 6 Oct 2017, at 14:54, horrido &lt;
>>
>>> horrido.hobbies@
>>
>>> &gt; wrote:
>>>>
>>>> I received this comment from someone who complained:
>>>>
>>>> *What about the lack of documentation? From time to time I’ve checked
>>>> some
>>>> SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of
>>>> these, only GNU-SmallTalk appears to have a free, official programming
>>>> guide
>>>> and core library reference that any serious programmer expects from a
>>>> language.
>>>>
>>>> https://www.gnu.org/software/smalltalk/manual-base/html_node/*
>>>>
>>>> I pointed to Pharo's documentation but then he came back with:
>>>>
>>>> *Then show me a link of the free, maintained reference documentation for
>>>> the
>>>> classes that form “the core library”, like this one for Python
>>>> (https://docs.python.org/3/library/index.html)*
>>>>
>>>> It's true, most Smalltalks do not have a core library reference, not
>>>> even
>>>> VisualWorks! So what is the proper response to this complaint?
>>>
>>> The first answer is that Pharo/Smalltalk is unique in that a running
>>> system/IDE contains _all_ source code, _all_ documentation (class,
>>> method,
>>> help, tutorial), _all_ unit tests and _all_ runnable examples in a very
>>> easy, accessible way. It takes some getting used to, but this is actually
>>> better and much more powerful than any alternative.
>>>
>>> The second answer is that there are lots of books and articles that take
>>> the classic/structured book/paper approach. There is
>>> http://books.pharo.org, http://themoosebook.org,
>>> http://book.seaside.st/book, http://medium.com/concerning-pharo and many
>>> more.
>>>
>>>> Thanks.
>>>>
>>>>
>>>>
>>>> --
>>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>>>
>>
>>
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

kilon.alios
In reply to this post by webwarrior
Nothing is unresovable, some problems will require a lot of more hacking sure, but Pharo VM is implemented in C (yeah I know it suppose to be smalltalk but is actually slang compiled to C) and since everything out there uses C anything out there can do live coding. You can do it in billlion diffirent ways.The question of course is then how easy to do. 

The answer to that is usual answer as in all things, it depends.  

But yes it easier indeed to do traditional level coding because lets say face, you have to be aware of the benefits of live coding and you have to really try it beforehand. Plus the idea of having to move a finger to make live coding work properly on the language of choice is less than appealing to most developers.

Take for example your instance update problem, you can resolve it 2 ways, python allows you to copy the data of an instance to another in a form of a dictionary or you can exchange live methods between old a new instances in frankenstein way. You also find references and replace them real time keeping track of their object ids. I lately got an idea about a time machine live coding, live coding that does not keep alive the current data and execution but also old data and execution and allows you go backwards in time. I am inspired by implementation of backward debugging and some demos I have seen where data was visualised as it evolved with the ability to move it back in time. 

This is something that no language I am aware of , including Pharo offers. 

I am the weirdo researching live coding because after being introduced to Pharo my appetite severely increased. Pharo opened to me a world that never knew it existed. As a resulte I know learn more about language features related to live coding that I never thought it was possible.

I implement my own live coding library because I want to learn more about live coding and if possible improve on it but without messing with VMs.  I hope I bring some of those features back into Pharo as my giift for introducing me to such a fun way of coding. 

On Tue, Oct 10, 2017 at 12:03 PM webwarrior <[hidden email]> wrote:
Calm your tits, dude. No need to use Caps Lock that much :-)

I made no value judgements in my post, letting readers decide for
themselves.
Nor did I attribute any claims to you. Except "live coding in Python is
easy", which you did say in some earlier posts.

> My post were not made to pick a fight but rather to inform and demolish
> the wrong assumptions that other languages CANNOT DO live coding.

Well, many of them kinda can.
But you see, when live coding is an afterthought, problems appear here and
there, and some of them are unsolvable. Up to the point that it's easier to
do traditional development process and not bother with live coding at all.

It's almost like saying that you can do point-free style functional
programming in Python.
Of course you can (to some extent).  There is even a library for that
(https://pypi.python.org/pypi/pointfree/).
I there much sense in it? I don't think so.




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

kilon.alios
In reply to this post by Denis Kudriashov
No because turing conplete means you have to implement all those live features yourself, I only gave a taste but I return to Python because thats the language I know the most, you can live manipulate objects in so many diffirent ways and mess their structure. Make a method become an instance variable,and instance variable to a method, rename variables , change the signature of your methods but only on specific instance or on the class itself. There is an incredibe large library of object manipulation features there to be tamed. Pharo can do many of those things and more of course.

Turing complete would apply to me if I said, Python has no live coding feature, but you can implement those if you want. 

Thats not what I am saying. Python or C may not call this live coding, they call it dynamic libraries, dynamic loading of modules, exceptions , post mortem debugging (debugger popping up in case of error) , module reloading, execution time compiling and many more. They never mentions the word "live coding" , but the features themselves are directly related and very fundamental requirements for live coding. 

Those features exists because live coding is a necessity , there will be always scenarios that a coder will want to dynamically change something during execution. There is no big ideology behind it like Pharto , which is why Pharo is the best at live coding, but rather practical needs that users requested to be resolved and the devs of languages were forced to implement them to keep them happy. 

For example its possible to extend live coding outside the Pharo image, using memory mapped files , the Pharo image can be extended not only to save Pharo live state but also the live state of any C library it depends on. This is crucial when you open the image and then you find something does not work because C live state was not storred which is why we have the session attribute we use to make sure that C libraries are correctly initialize in image startup. 

My CPPBridge which is 100% Pharo project , if you exclude some C examples , it provide a basic way of a live coding image that can act as an extension to the pharo image and include live C state. So yes I have done my hopework.

As a matter of fact each time I hear arguments turing complete wise, I facepalm myself.

Because its a louse excuse to support a language. Any tool or library that can save you time its a huge deal. 

On Tue, Oct 10, 2017 at 12:40 PM Denis Kudriashov <[hidden email]> wrote:
Hi Dimitris.

You opinion about live programming reminds me the common sentence from developers who don't care about languages at all. Usual argument is: they all are Turing complete, so who cares.

2017-10-10 11:02 GMT+02:00 webwarrior <[hidden email]>:
Calm your tits, dude. No need to use Caps Lock that much :-)

I made no value judgements in my post, letting readers decide for
themselves.
Nor did I attribute any claims to you. Except "live coding in Python is
easy", which you did say in some earlier posts.

> My post were not made to pick a fight but rather to inform and demolish
> the wrong assumptions that other languages CANNOT DO live coding.

Well, many of them kinda can.
But you see, when live coding is an afterthought, problems appear here and
there, and some of them are unsolvable. Up to the point that it's easier to
do traditional development process and not bother with live coding at all.

It's almost like saying that you can do point-free style functional
programming in Python.
Of course you can (to some extent).  There is even a library for that
(https://pypi.python.org/pypi/pointfree/).
I there much sense in it? I don't think so.

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

kilon.alios
In reply to this post by Sean P. DeNigris
Yes exactly my post was not an effort to diminish the value of Pharo as live coding system. 

My effort was to reveal my findings because I have been doing a lot of research lately. I am not keen on abandoning the comforts of Pharo live coding wise now that I code in Python. But to get to Pharo level there are many issues to be resolved. I know however that I can get to Pharo level eventually at least on features I really care about. Because I have little interest in proving something better from something else. I would not try this if there were not already a substantial amount of features. 

I know that you guys did not know this is possible and I do not think thats a bad thing because a year ago I did not know that is possible either. It started as a joke and out of it I created two projects , Atlas and CPPBridge both 100% Pharo code. With atlas I could have settled with inling python syntax but I did not because that was easy instead I parsed Pharo syntax to python syntax to make a deeper integration between Pharo and Python libraries.

I think how difficult it is depends on how high you put your barrier of entry, if you go for a full blown live coding system like Pharo has, it will be difficult because there will be several important issues to resolve. As you said those language do not follow a strict live coding workflow. They have live coding features out of need to resolved real time issues. 

Does C has DLLs because it cares about live coding, obviously not, but the moment you have a library that can at any moment be reloaded you already made the first step down the path. 

When I said you can do hardcore live coding with ease, I meant that you can live code full time provided you have built some of the functionality. Once you got a basic library running the rest just flows. But if you want to complete neck to neck with Pharo it will be a challange because Pharo does not have live coding feature only at language level but also at IDE level. 

Again if people did only the easy stuff, we would not have Pharo would we , the fun is in the challenge. 

If a python coder should be stop by the lack of a live coding enviroment should a Pharo be stopped by the lack of namespaces ? 

Of course not, languages are there to be extended via third party libraries and the more we challange ourselved the deeper the understanding becomes and the more amazing stuff we can do.  
On Tue, Oct 10, 2017 at 2:25 PM Sean P. DeNigris <[hidden email]> wrote:
kilon.alios wrote
> it’s clear the community is unwilling to deal with such discussions.

I wouldn't say that... after all this thread has the most posts on this list
since January 21 ;) I personally learned a lot and was glad to hear all the
points. I thought the last two pretty much captured the situation, which is
that you *can* do live programming in other languages, but the advantage of
Pharo is that it's *about* live programming. I certainly didn't know it was
even possible in some of the other languages mentioned. Yet, practically, it
seems extremely difficult for a system that tacks something on as a feature
to compete with a system that values that thing at its core. Ironically, the
biggest barrier seems to be human, in the McLuhan sense that our medium
determines how/what we can think/say. I feel lucky to have discovered
Smalltalk and have cast off (most) of the brain damage from C and C++ ha ha.



-----
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Behold Pharo: The Modern Smalltalk

John Pfersich
In reply to this post by horrido

> On Oct 10, 2017, at 09:58, horrido <[hidden email]> wrote:
>
> Interestingly, I'm getting a fair amount of pushback on this. Personally, I
> think it would be very helpful to have a live (updatable, so as to keep it
> current) reference page for the class library, something that developers can
> easily look up what they need. After all, most of the power of Pharo comes
> from the class library and we need to make it as accessible as possible to
> less experienced Pharoers (i.e., beginners).
>
> Exploring the class library through the System Browser is very inefficient.
> This is further exacerbated by the fact that many classes and methods are
> simply not well-documented (containing a cursory remark which is just barely
> useful).
>
I dunno, maybe I’m weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isn’t well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).

> I realize that creating a live reference page is not easy to do. In fact,
> it's a lot of work. But the absence of such a page is a real obstacle to
> Pharo acceptance.
>
>
>
> horrido wrote
>> Thanks. I gave your answer verbatim. I also added the following paragraph:
>>
>> The problem I find with today’s developers is that they are rather
>> closed-minded. They are rigid and inflexible, and not willing to adapt to
>> new and different ways of doing things. In my generation (circa
>> 1980–1990),
>> people didn’t have a problem with trying different technologies. That’s
>> why
>> I had no issue with learning Smalltalk 10 years ago, after I had retired
>> from a 20-year-long career in C systems programming and FORTRAN scientific
>> programming.
>>
>>
>>
>> Sven Van Caekenberghe-2 wrote
>>>> On 6 Oct 2017, at 14:54, horrido &lt;
>>
>>> horrido.hobbies@
>>
>>> &gt; wrote:
>>>>
>>>> I received this comment from someone who complained:
>>>>
>>>> *What about the lack of documentation? From time to time I’ve checked
>>>> some
>>>> SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of
>>>> these, only GNU-SmallTalk appears to have a free, official programming
>>>> guide
>>>> and core library reference that any serious programmer expects from a
>>>> language.
>>>>
>>>> https://www.gnu.org/software/smalltalk/manual-base/html_node/*
>>>>
>>>> I pointed to Pharo's documentation but then he came back with:
>>>>
>>>> *Then show me a link of the free, maintained reference documentation for
>>>> the
>>>> classes that form “the core library”, like this one for Python
>>>> (https://docs.python.org/3/library/index.html)*
>>>>
>>>> It's true, most Smalltalks do not have a core library reference, not
>>>> even
>>>> VisualWorks! So what is the proper response to this complaint?
>>>
>>> The first answer is that Pharo/Smalltalk is unique in that a running
>>> system/IDE contains _all_ source code, _all_ documentation (class,
>>> method,
>>> help, tutorial), _all_ unit tests and _all_ runnable examples in a very
>>> easy, accessible way. It takes some getting used to, but this is actually
>>> better and much more powerful than any alternative.
>>>
>>> The second answer is that there are lots of books and articles that take
>>> the classic/structured book/paper approach. There is
>>> http://books.pharo.org, http://themoosebook.org,
>>> http://book.seaside.st/book, http://medium.com/concerning-pharo and many
>>> more.
>>>
>>>> Thanks.
>>>>
>>>>
>>>>
>>>> --
>>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>>>
>>
>>
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>

123456 ... 9