Hello All,

First, let me apologize for starting the Delphi thing. I only mentioned it as 
an example IDE layout. I was not trying to say that the internal workings of it 
were good, bad, or indifferent.

I have spent some time playing around with things in Pharo. I have been trying 
to imagine how I would use it on a typical project. I have also been asking 
myself what it is about the current Smalltalk implementations that are keeping 
them from being more popular. When I consider the language/environment features 
that are commonly sited as Smalltalk's strengths, I am surprised that there are 
so few real world applications out there. I know folks are quick to point to a 
handful of applications, but the numbers pale in comparison to the mainstream 
languages. I don't share the same opinion on the productivity of the IDE. It 
limits my productivity.

DISCLAIMER: I am not trying to be critical of Pharo or Smalltalk in general. I 
am trying to provide some feedback from a Smalltalk newbie that has worked as a 
professional programmer for many years. I am not trying to push or force my 
opinion on anyone. I'm just telling it the way I see it. I apologize if anyone 
is offended by my words. This is certainly not my intention.


The following are some thoughts and observations about Smalltalk.


1. I believe Smalltalk's main strength is the language and it's library. 


2. I don't think the image concept works in the current world. I realize there 
are many folks who would argue this to death, but the fact is that it hinders 
adoption. I believe it would be better to focus on a robust full featured 
library and unload the maintenance of the image based environment. I would 
think of Smalltalk as a Java alternative. 


3. I think Smalltalk should probably forget about the desktop gui completely. 
There are so many good tools to build gui interfaces these days that it would 
take a huge effort to match even half of the functionality and performance they 
provide. Smalltalk should focus on rich web interfaces instead. The gui code 
and tools are stealing valuable resources from development.

4. Developing in Smalltalk should be just like any other high level language. 
It should have a REPL type interface and it would also be nice to have the 
capability to compile to a native executable. The various Lisp implementations 
would be a good example. They too came from a similar environment.


5. It should be possible to embed the Smalltalk VM in other languages (ie; 
C/C++ etc.) with a nice two-way call interface (think Lua).  This would allow 
servers and GUIs written in other languages to leverage Smalltalk for their 
application logic.

6. The IDE itself would probably be better written in another language. This 
would ease platform integration, improve performance, and make for a much 
richer experience overall. My personal choice for this would be Nokia Qt. There 
is absolutely no reason that the same browser, workspace, transcript based IDE 
environment wouldn't be possible. This would also pave the way for IDEs like 
Eclipse, Netbeans, etc. to provide plugins.


7. An interim solution to the items above would be to create a server based 
interface to the Smalltalk image. This would allow an external IDE to interact 
with the image in the same way that the embedded tools do.


I like the Smalltalk language very much. I think it would make for an awesome 
embedded scripting language. I also think that it is perfectly suited to 
hosting the back-end business logic of a large application. I think the best 
approach for the future is to focus on what Smalltalk would be good at, and not 
waste valuable resources on things that it is not really the right solution 
for. 


My personal plan for Smalltalk/Pharo is to create an external IDE and a socket 
based interface in the Pharo image to support it. I also intend to create an 
image manager server that can manage, monitor, and communicate with multiple 
images. I have already been working on an IDE for Lisp. Adding Smalltalk 
support seems logical. 

Okay.. I've dug my foxhole and I'm in it with my helmet on. Fire away!


Thanks,
Gerry




-----Original Message-----
From: "Gastón Dall' Oglio" <[email protected]>
To: [email protected]
Date: 01/14/12 10:06
Subject: Re: [Pharo-project] New IDE alternative (was Misc. newbie questions)


Hello Blake. 
 

 
I like discuss about Delphi, but I don't say much more here becouse this is a 
Smalltalk list :)
2012/1/13 blake < [email protected]>
Gaston, 

   
 
This method is for manage the event, not for do something that is really part 
of the model. A Form, no is part of the model. This is similar in VW: you coded 
your event handler method in the AplicationModel, that is like a Form in Delphi.
 

 
 
Delphi was a direct reaction to VB, which was eating Borland Pasal's lunch. MVC 
was nowhere to be seen. It was all about "look how easy it is to do 
[whatever]." Never "look how easy it is to re-use" or "look how easy it is to 
maintain". I'm not a Basic basher, but the atmosphere surrounding it has always 
been "Computer science is =haaaaarrd=. I just wanna program!"
 

 
In general, the user of Delphi do not know how to make good programming with 
it, becouse Delphi granted them make the things quickly and bad. There are a 
VERY good book named "The dark side of Delphi...", and the DARK word is for the 
general unknown about it. Here is (in Spanish sorry):
http://www.marteens.com/pdfs/TheDarkSideOfDelphi6.pdf 
 
 
 
You CAN do it right. But here I am (right now!) looking at a guy who's encoded 
multi-hundred-line event handlers, that are massive if-then chains, with code 
duplicated like crazy between the events.

 
 

 
hehe, Maybe a sometime when I'm very hurry... but too in Delphi I can use 
polimorphic, strategy, double dispatch, etc, for avoid use of if-then. And no 
massive code, just necesary code for handle event, just in VisualWorks :)
 
 
Really, the "beauty" of the VB model is that you didn't HAVE to learn OO. (And, 
hey, reality bears out that code quality and profit are not strongly 
correlated.)
 
 
 
No. The IDE automaticaly define a global variable and create code for create 
and assign a instance, but if you want more instances of same Form you can easy 
declare local variables and create new instance (on initialize of other 
instance or on the fly in accesor methods) and asign to. Same in Smalltalk.... 
And you can delete this automaticaly created code.
 

 
 
Sure. You can do a lot of things right. The underlying weakness is in the 
static typing and poorly defined messaging. (I haven't tried FireMonkey yet, 
though, it may be different.)
 

 
Sure! I completely agree with you. You are deal with reserved words like 
"virtual, override, dinamic" for achieve dinamic message dispatch across static 
variable typing. This is very inconveniente for clean code (and has bad 
psychological consequences in the developers hehe).
I do not try the Embarcadero version (and I do not), but them improved some 
things. For example added use de "Class Helper" for do some similar a trait to 
a class (but in a context). No only Smalltalk evolves :). FYI see::
http://edn.embarcadero.com/article/34324 
 
  
 
 
mmm no. Again, a Form is not part of model, idealy this is for write event 
methods handlers. 
 

 
 
I'm glad you're following the ideal. I started using Delphi on the beta in 
1994, and in the past 18  years, I've seen about two instances of the ideal 
being properly followed in the real world (that I didn't write).
 

 
hehe, again, "the DARK side..." never is very popular.

 
  
 
 
In the Buttons you can use Actions for delegate the handler method of the click 
event. In general, you can assign method of a Form to events of controls in 
another Form, but I do not do often that becouse I only write a small code in 
the event handler in the Form for delegate to some model the work (DataModules).
 

 
 
Point is: Buttons then become inflexible pass-throughs. In Smalltalk what you'd 
do is allow a component to be swapped for any other component if it had the 
right handlers.
 

 
In Delphi I can change the component too if they has the right handlers with 
out major work, but I agree with you in that this in not possibly do it easily 
that in Smalltalk. But, the class of the variable that hold the current 
component should be ancestor of both interchangeables components, very 
inconvenient!

 
 
 
If you could lay out forms in Smalltalk and press a button to create a lean, 
deployable version, I'd only use Delphi for CPU intensive tasks. What'd be 
optimal is a Smalltalk (with some VA/Delphi influences) in a browser with an 
overall approach like that of OPA or maybe Morfik (not Morphic) so that front 
and back-end stuff was seamless. Smalltalk was born for that.
 
 

 
:) 
 

 
Regards.
Gastón.




Reply via email to