f



Python, SmallTalk, Objective-C

Hi all!

I've heard good things about SmallTalk, and I read that the IDE is
extremely productive.  Why is this the case?  What are the technical
points where Python and SmallTalk differ?  Is SmallTalk really faster
than Python?

I tried Objective-C, but eventually dropped it for lack of support and
the need to use NS-type classes to do anything productive.  Python's
built in containers and types are so much more concise.  But if
Objective-C is like C with SmallTalk features, why isn't it more
popular for platforms other than OSX?

Currently, I think Python is where I'm going to stay, but I wouldn't
be opposed to checking out other options.

jonathon
0
j_mckitrick (424)
5/16/2004 9:12:40 PM
comp.lang.python 77058 articles. 6 followers. Post Follow

7 Replies
659 Views

Similar Articles

[PageSpeed] 28

j_mckitrick wrote:
> Hi all!
> 
> I've heard good things about SmallTalk, and I read that the IDE is
> extremely productive.  Why is this the case?  What are the technical
> points where Python and SmallTalk differ?  Is SmallTalk really faster
> than Python?

I think some Smalltalk implementations have pretty good jit builtin.
In Python you often use C/C++ extensions for performance critical stuff.
(Or more likely because there are so many C/C++ libraries around ;-)
However there is at least one jit package for Python (psyco), which at
least doubles the speed of my current application - for numerical
functions. Objective-C, Smalltalk and Python have dynamic features
so they'll be "slower" than let's say assembler and C. Unless you try
to mimic dynamic stuff in C like GTK ;-) Then you'll suffer...
> 
> I tried Objective-C, but eventually dropped it for lack of support and
> the need to use NS-type classes to do anything productive.  Python's
> built in containers and types are so much more concise.  But if
> Objective-C is like C with SmallTalk features, why isn't it more
> popular for platforms other than OSX?
Why has Smalltalk never been popular? (compared to C/C++/Java)
I don't know either.
> 
> Currently, I think Python is where I'm going to stay, but I wouldn't
> be opposed to checking out other options.

I've tried Smalltalk and Objective-C to a lesser extent.
Currently I am doing a simulator application and it's
working great with Python. For graphics I've wrapped
Allegro a game/graphics library with Pyrex which allows
you to use "Python syntax" to access C data structures and functions.
In Python you can do pattern matching on key-word function arguments,
trace functions calls, delegate method/property access,
"microthreads", almost everything you can think of.
Documentation is excellent!
And there are plenty of easy to use libraries.
So yes, I think Python is great and I can recommend it!

Smalltalk has been ahead of it's time and it's a quite
interesting environment. However Python syntax/semantics
seems much more naturally to me.
In Smalltalk you are "locked" into your system image with
1000s of classes. That's great if you like inheritance ;-)
When you search the web for Smalltalk/Objective-C stuff
you'll often encounter stalled links etc. Those languages don't
get much attention any more. Apple might have changed this
for Objective-C. Time will tell.
I assume Apple uses Objective-C (actually the NeXT-people
should know it ;-),  because it's better suited for dynamic GUI
applications than plain C or C++, though Trolltech claims that their
precompiler-signal-slot mechanism can do this for C++. Which seems to be
true, too some degree. Otherwise KDE etc. wouldn't be reality.

Ciao,
  Dominic

P.S. Look around, toy around and then decide for yourself :-)
      If you're interested in computer languages you probably
      also want to see Scheme/Erlang/Prolog (...) which do have
      some interesting cababilities but I wouldn't use those
      languages except for stealing ideas ;-) However you'll
      have to think in Python to really master it well.
      Other language idioms often do not map 1:1 into Python.
      There's often a more elegant pythonic way of doing it.

> 
> jonathon


0
nomail1826 (30)
5/16/2004 10:07:02 PM
Dominic wrote:
> j_mckitrick wrote:
>> Hi all!
>>
>> I've heard good things about SmallTalk, and I read that the IDE is
>> extremely productive.  Why is this the case?  What are the technical
>> points where Python and SmallTalk differ?  Is SmallTalk really faster
>> than Python?
>
> I think some Smalltalk implementations have pretty good jit builtin.
> In Python you often use C/C++ extensions for performance critical
> stuff. (Or more likely because there are so many C/C++ libraries
> around ;-) However there is at least one jit package for Python
> (psyco), which at least doubles the speed of my current application -
> for numerical functions. Objective-C, Smalltalk and Python have
> dynamic features
> so they'll be "slower" than let's say assembler and C. Unless you try
> to mimic dynamic stuff in C like GTK ;-) Then you'll suffer...
>>
..
> I assume Apple uses Objective-C (actually the NeXT-people
> should know it ;-),  because it's better suited for dynamic GUI
> applications than plain C or C++, though Trolltech claims that their
> precompiler-signal-slot mechanism can do this for C++. Which seems to
> be true, too some degree. Otherwise KDE etc. wouldn't be reality.

This is only mildly apropos the original query about the lack of popularity
of SmallTalk and Objective-C to Python, but you can do a signal-slot
mechanism in pure C++, without precompiler hacks, using the Boost Signals
library by Douglas Gregor. So the advantage of Obective-C over C++ for
run-time event handling is currently nil. Of course there is more to dynamic
GUI applications than just event handling.


0
eldiener (33)
5/17/2004 1:15:35 AM
j_mckitrick wrote:

> Hi all!
> 
> I've heard good things about SmallTalk, and I read that the IDE is
> extremely productive.  Why is this the case?  What are the technical
> points where Python and SmallTalk differ?  Is SmallTalk really faster
> than Python?
> 
> I tried Objective-C, but eventually dropped it for lack of support and
> the need to use NS-type classes to do anything productive.  Python's
> built in containers and types are so much more concise.  But if
> Objective-C is like C with SmallTalk features, why isn't it more
> popular for platforms other than OSX?
> 
> Currently, I think Python is where I'm going to stay, but I wouldn't
> be opposed to checking out other options.
> 

Cincom has taken over VisualWorks Smalltalk and taken it ahead in leaps 
and bounds over the last four years.  VisualWorks provides an excellent 
IDE/environment, the likes of which does not exist for Python.

At a purely language level, I prefer Python, but IMO for, 
multi-developer projects, the productivity you get from the combination 
of Smalltalk & VisualWorks is 2nd to none.

Cincom have free versions of their environment available for download, 
so its easy to evaluate, although like any powerful system it takes a 
while to utilise properly/fully.  I didn't really understand the 
terrific power of VisualWorks until I was able to look over the shoulder 
of an experienced smalltalk programmer.

Having said all that, I have legacy C++ code (Boost.Python used) and I 
enjoy Python ... I just wish the Python IDEs were excellent, insted of 
just barely ok.

--
Mike

0
Mike
5/17/2004 1:32:59 AM
> At a purely language level, I prefer Python, but IMO for, 
> multi-developer projects, the productivity you get from the combination 
> of Smalltalk & VisualWorks is 2nd to none.
> 
> Cincom have free versions of their environment available for download, 
> so its easy to evaluate, although like any powerful system it takes a 
> while to utilise properly/fully.  I didn't really understand the 
> terrific power of VisualWorks until I was able to look over the shoulder 
> of an experienced smalltalk programmer.

I keep hearing how productive VisualWorks is.  Just exactly how is
this so?  Is it full of drag and drop object connecting and event
handling?  Or is it a powerful editor?  Or is it one of those
'inspector' style gui builders?

> Having said all that, I have legacy C++ code (Boost.Python used) and I 

What is Boost.Python?

jonathon
0
j_mckitrick (424)
5/17/2004 1:10:35 PM
At a purely language level, I prefer Python, but IMO for, 
> multi-developer projects, the productivity you get from the combination 
> of Smalltalk & VisualWorks is 2nd to none.
> 
> Cincom have free versions of their environment available for download, 
> so its easy to evaluate, although like any powerful system it takes a 
> while to utilise properly/fully.  I didn't really understand the 
> terrific power of VisualWorks until I was able to look over the shoulder 
> of an experienced smalltalk programmer.

I keep hearing how productive VisualWorks is.  Just exactly how is
this so?  Is it full of drag and drop object connecting and event
handling?  Or is it a powerful editor?  Or is it one of those
'inspector' style gui builders?

> Having said all that, I have legacy C++ code (Boost.Python used) and I 

What is Boost.Python?

jonathon
0
j_mckitrick (424)
5/17/2004 1:13:22 PM
At a purely language level, I prefer Python, but IMO for,
> multi-developer projects, the productivity you get from the combination
> of Smalltalk & VisualWorks is 2nd to none.
>
> Cincom have free versions of their environment available for download,
> so its easy to evaluate, although like any powerful system it takes a
> while to utilise properly/fully.  I didn't really understand the
> terrific power of VisualWorks until I was able to look over the shoulder
> of an experienced smalltalk programmer.

I keep hearing how productive VisualWorks is.  Just exactly how is
this so?  Is it full of drag and drop object connecting and event
handling?  Or is it a powerful editor?  Or is it one of those
'inspector' style gui builders?

> Having said all that, I have legacy C++ code (Boost.Python used) and I

What is Boost.Python?

jonathon
0
j_mckitrick (424)
5/17/2004 2:10:23 PM
j_mckitrick@bigfoot.com (j_mckitrick) writes:

[snip] 
> > Having said all that, I have legacy C++ code (Boost.Python used) and I 
> 
> What is Boost.Python?
> 
> jonathon

It is a way to hook python to C++ libraries.   Kind of like SWIG.
http://www.boost.org/libs/python/doc/
-- 
harry.g.george@boeing.com
6-6M21 BCA CompArch Design Engineering
Phone: (425) 342-0007
0
5/17/2004 2:15:25 PM
Reply: