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 <horrido.hobb...@gmail.com> 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 via email to