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

Reply via email to