On 5/5/2011 10:32 AM, Toon Verwaest wrote:
On 05/05/2011 05:26 PM, Cédrick Béler wrote:
Lastly, most Smalltalk systems are image based...
...which makes you feel the system is "alive", hence one **huge
benefit** of Smalltalk: its debugger which enables on the fly
debbuging... and also test driven development (real one [1]) where
you can run incomplete code and code what's missing iteratively when
you need it (Smalltalk is a live system, not only a language as
somebody said lately).
Cédrick
[1] see in particular this webcast:
http://www.pharocasts.com/2010/01/starting-with-sunit-and-debugger.html
Seriously ... these points in favor of the image are so m00t. Lets see
how it would work without an image:
I write a C application which I link to GCC. Now I run GDB on my
application, and while running I have the whole GCC compiler
collection at my disposal while running. While debugging (at some
breakpoint) I just let the GCC library compile some C code for me; I
turn on the executable flag and whooptidoo, I have a Smalltalk like
debugger for C.
This is totally unrelated to having an image; it's just a great
debugger implementation. 2 completely different things. No reason why
this wouldn't work for C; except for the fact that they didn't do it
yet (those lazy bastards).
Disclaimer, I am not a professional programmer and I have not programmed
in C or any other static compiled language at all. So I may not have any
idea what I am talking about. :)
What I don't see in your example, but what I experience in my
programming is often in the *use* of my application during development.
Part of my application is written in Python (so I can interface I
library I can't from Pharo) and part in Pharo. (*use*, ie: the
application is compiled and ready for a *user* and I am the user and
encounter the bug.
My Python app connects to a server on the net and downloads data and
inserts it into a PostgreSQL database. It also provides live data to my
Pharo app via an http interface.
While experimenting with NumPy and running some statistical analysis on
a GB or two of data. The analysis took 10-12 hours to run. I start it up
and walk away. I get back to it only to find that at the end of all the
analysis it exited with a stacktrace. Ugh! I concatenated a string
using a ',' instead of a '+'. Switching between Pharo and Python bit
me. :) This was at the very end of all the analysis and the generation
of a report. The last line of the code had the bug. I lost the 12hours
of analysis. This bug passed the syntax checker and the Python compiler
when I imported the module. It wasn't until it was live and running and
encountered in execution that it was discovered.
In Pharo, the same situation, I fix it in the debugger and my report is
generated and I continue. All my data is still resident in the image and
I can explore and continue. In Python (and I presume most any other dead
language) all is lost and I have to rerun.
Now as I said I am not a professional. Certain processes would have
helped in this situation, but not necessarily all. And I have limited
experience with the best other systems or languages have to offer.
But how many programming languages/environments handle that well?
I am still so very tired of every time an application on my computer
says, "You just updated. Do you want to restart?"
Why do most every single web application outside of the Smalltalk world
require shutdowns and restarts for bug fixes and upgrades?
Why does NetBeans consume 200mb, take 3-5minutes to startup, and do a
much, much poorer job with syntax, autocomplete, etc. on a single 500
line Python file?
I don't think the world out there is anywhere near what Smalltalk has.
Nor do they have the vision for it. They are happy with files, and
restarts and all their processes to reduce their pain due to not having
a live environment.
I am a single guy with a vision, an idea, that I want to implement for
my business. I have seen nothing that gives me the productivity that
Smalltalk does. Not Java, Python, Clojure, Scala, Lua, etc.
I have never seen any other language accomplish so much with so few. I
look at other languages and apps built with them and look at the armies
they have to do so. Then I look at Seaside, etc. with just a small group
of guys with an idea of something better.
While I desperately want Squeak/Pharo to be able to interface outside
systems better. I have seen nothing that is better or comes close. And
as I said, I have a business requirement to interface a proprietary
library written in C, which why I am connected with Python (and Windows)
against my will. So I do understand.
I understand, as does everybody else here, that Pharo/Smalltalk is not
perfect and has huge areas where we have not done things well or right.
But I don't think this is one of them. I think this is one where the
rest of the world is behind us.
Squeak/Pharo/Smalltalk is empowering.
JMHO, take with a grain of salt. :)
Jimmie