Ironically, almost every newbie smalltalk programmer I know LIKES the IDE and thinks it is better than anything out there.

BTW, if you want to see how smalltalk can be used as an embedded language, like at f-script... whose IDE, which everyone who uses it, loves, is very much a standard smalltalk IDE.

L.

On 1/14/12 9:22 PM, Gerry Weaver wrote:
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]
    <mailto:[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