[Pharo-project] Popularity of Smalltalk in Software Industry

Jimmie Houchin jlhouchin at gmail.com
Thu May 5 18:57:00 CEST 2011

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. :)


More information about the Pharo-project mailing list