Discussion:
Which smalltalk and which book to learn?
(too old to reply)
c***@gmail.com
2006-06-21 17:26:04 UTC
Permalink
I seem to have come to the conclusion that learning lisp/scheme, forth
and smalltalk is what I want to do. Considering that I just want to
learn programming for the time being and that my ultimate needs are yet
uncertain, it seems to me that those three languages are the best
investment of my time and effort into this learning project, being the
most flexible and adaptable. I don't care much for language libraries,
I don't care much for frameworks and so on, I just want to learn
programmatic thinking for the time being with the minimum of
distractions. I would like to achieve a sort of expertise in those 3
languages over a decade or more that enables me to use them for
whatever needs I have later on, and to use insights gained from them in
lesser languages. Is this a good plan? Does smalltalk fit into it?

Also, and here's my main reason for posting here. I'm not sure which
smalltalk implementation and books to use. With lisp it's somewhat
obvious; SICP and its related literature. With Forth too it is somewhat
obvious. What about smalltalk? I'm slightly put off by squeak in that
it's too graphical and I have no need for GUI or multimedia. I'm
considering GNU smalltalk, but that isn't as multiplatform as lisps,
forths, or even squeak itself. Should I just commit to Squeak and then
use GNU smalltalk on unix for scripting, because, anyway, I use cygwin
when on windows?

For these reasons I had been considering learning Ruby as an
alternative to smalltalk, as it's clearly cross-platform and available
for CLI scripting. But Ruby, unlike lisp and forth, has too much syntax
for my taste. What would I be missing out on if I go Ruby instead of
smalltalk? Is smalltalk a better longterm investment if mastered than
Ruby?

Thanks
gregarican
2006-06-21 20:08:38 UTC
Permalink
AFAIK all Smalltalk dialects are GUI for the most part. Their images
are a sort of OS that operates on top of whatever computer platform you
are using. Within this area is the IDE that you use to program in. Your
projects as a result reside within this self contained world. Depending
on the dialect then exporting your projects as self executing
applications can be a departure from other languages where you simply
compile an executable. In Smalltalk you strip down the image to get rid
of all of the OS overlays, IDE, etc. The other dialects I have ventured
into other than Squeak such as Dolphin and Cincom VisualWorks have
somewhat similar conditions to what I have described above. Never used
GNU Smalltalk, so I'm no authority there.

"The Blue Book" is a classic introduction into where Smalltalk came
from, back with the release of Smalltalk-80. If you search from the
smalltalk.org site you will find links to other books available online
for free. VisualWorks comes with loads of online documentation with the
install. Then there's the "Dolphin Smalltalk Companion" for Dolphin,
although it's a few version behind what's currently available. eBay was
a good resource for me as well in terms of acquiring books that might
be out of print.

I have learned both Ruby and Smalltalk but couldn't recommend one over
the other as a broad generalization. Depends on what you are looking to
do. For a larger scale GUI project Smalltalk is ideal for developing,
testing, and refactoring your work in a thoughtful organized manner.
All interactive to a 'T' so you can inspect and modify things while the
program is actively running. For smaller projects, admin scripts, quick
modeling, etc. Ruby would be a good choice because to me it's fun to
program in and it fits with my way of thinking when throwing ideas out
there.

As long term investments I am not sure if either one can necessarily
have dozens of potential employers beating down your door. If that's
what you mean. While Ruby is gaining popularity due to the Rails/AJAX
bandwagon it might still be a good bit behind Java and .NET languages
in regard to preferred web programming langauges. Smalltalk's Seaside
offers similar promise and I hope gains popularity since it appears to
be very good at what it does.

I use these languages to "glue things together" between other third
party apps or as a hobby for the most part in my professional
environment. But there are a couple of cases where I developed an
in-house custom app using them and they have stood the test of time so
far.

Good luck in your endeavors!
Post by c***@gmail.com
I seem to have come to the conclusion that learning lisp/scheme, forth
and smalltalk is what I want to do. Considering that I just want to
learn programming for the time being and that my ultimate needs are yet
uncertain, it seems to me that those three languages are the best
investment of my time and effort into this learning project, being the
most flexible and adaptable. I don't care much for language libraries,
I don't care much for frameworks and so on, I just want to learn
programmatic thinking for the time being with the minimum of
distractions. I would like to achieve a sort of expertise in those 3
languages over a decade or more that enables me to use them for
whatever needs I have later on, and to use insights gained from them in
lesser languages. Is this a good plan? Does smalltalk fit into it?
Also, and here's my main reason for posting here. I'm not sure which
smalltalk implementation and books to use. With lisp it's somewhat
obvious; SICP and its related literature. With Forth too it is somewhat
obvious. What about smalltalk? I'm slightly put off by squeak in that
it's too graphical and I have no need for GUI or multimedia. I'm
considering GNU smalltalk, but that isn't as multiplatform as lisps,
forths, or even squeak itself. Should I just commit to Squeak and then
use GNU smalltalk on unix for scripting, because, anyway, I use cygwin
when on windows?
For these reasons I had been considering learning Ruby as an
alternative to smalltalk, as it's clearly cross-platform and available
for CLI scripting. But Ruby, unlike lisp and forth, has too much syntax
for my taste. What would I be missing out on if I go Ruby instead of
smalltalk? Is smalltalk a better longterm investment if mastered than
Ruby?
Thanks
Andre Schnoor
2006-06-21 20:24:02 UTC
Permalink
Post by gregarican
AFAIK all Smalltalk dialects are GUI for the most part. Their images
are a sort of OS that operates on top of whatever computer platform you
are using.
Well, a "sort of OS" that well fits into 5MB of footprint, which I
believe is not too bad. Compare that with the average J2EE installation.

Just wanted to mention this, because "sort of OS" sounds like the
reinvention of the wheel ;-)

Andre
c***@gmail.com
2006-06-21 22:45:15 UTC
Permalink
Post by gregarican
"The Blue Book" is a classic introduction into where Smalltalk came
from, back with the release of Smalltalk-80. If you search from the
smalltalk.org site you will find links to other books available online
for free. VisualWorks comes with loads of online documentation with the
install. Then there's the "Dolphin Smalltalk Companion" for Dolphin,
although it's a few version behind what's currently available. eBay was
a good resource for me as well in terms of acquiring books that might
be out of print.
What's the title of "The Blue Book"? And what's a good book for Squeak?
Would it be confusing if I read a Dolphin, VisualWorks or whatever
books when I'm using Squeak?
Post by gregarican
I have learned both Ruby and Smalltalk but couldn't recommend one over
the other as a broad generalization. Depends on what you are looking to
do. For a larger scale GUI project Smalltalk is ideal for developing,
testing, and refactoring your work in a thoughtful organized manner.
All interactive to a 'T' so you can inspect and modify things while the
program is actively running. For smaller projects, admin scripts, quick
modeling, etc. Ruby would be a good choice because to me it's fun to
program in and it fits with my way of thinking when throwing ideas out
there.
Is Ruby more fun than smalltalk?
Post by gregarican
As long term investments I am not sure if either one can necessarily
have dozens of potential employers beating down your door. If that's
what you mean. While Ruby is gaining popularity due to the Rails/AJAX
bandwagon it might still be a good bit behind Java and .NET languages
in regard to preferred web programming langauges. Smalltalk's Seaside
offers similar promise and I hope gains popularity since it appears to
be very good at what it does.
I should've clarified that I don't mean working as a professional
programmer as a return to my "investment". What I meant by investment
of time and effort is simply that for lisp, and perhaps smalltalk and
forth too, the basics are quite simple but the advaned stuff takes a
lot of time and effort to learn (especially lisp) that I could be
looking at many years of commitment to be good at it, considering that
I'll be doing the learning it as a hobby.

The return I meant would perhaps include:
1- If I spend 10 years mastering the language the language would still
be around and relevant in 10 years. Perhaps that's why I'm choosing
languages that are, in computing terms, ancient, since the youngest of
those three is already well over 30 years old.
2- It's flexible enough that whatever advances come up in computing
paradigms and methodologies can be implemented in the language itself.
3- That it would enable me to understand other languages and learning
to program in it would give me good thinking and habits that I can use
in others if I need to.
4- Productive: suitable for a lone programmer developing stuff for his
own use in limited hobby time.
5- It's versatile enough to cover my needs in case they change.


I'd rather spend a lot of time mastering a versatile language than
learning a few fashionable but rigid ones.
Post by gregarican
I use these languages to "glue things together" between other third
party apps or as a hobby for the most part in my professional
environment. But there are a couple of cases where I developed an
in-house custom app using them and they have stood the test of time so
far.
Good luck in your endeavors!
Thanks.
Stefan Schmiedl
2006-06-22 13:27:33 UTC
Permalink
First, let me compliment you on your language choice, you've picked
all of my favorites :-)
Would it be confusing if I read a Dolphin, VisualWorks or whatever books
when I'm using Squeak?
Every Smalltalk has its own way of dealing with GUIs. So it's safe to
expect differences between books for one implementation and working in
another.

I've learned much from Chamond Liu's book "Smalltalk, Objects and Design"
(I may be wrong about the title, it's a white paperback, probably out of
print by now).

You might also be able to pick up reasonings for dealing with things
from Kent Beck's books "Smalltalk best practice patterns" and "Guide to
better smalltalk - a _sorted_ collection". Those are not manuals but
very interesting if you're curious about the why, too.
Is Ruby more fun than smalltalk?
I work in both for part of my living and they are about the same
level of my personal fun scale. A strong advantage of ruby is the
"scripting" approach, where you can get *small* and "standalone"
solutions to specific problems. It's flexible syntax and evaluation
rules allow for some nifty solutions, akin to "syntax extensions"
or macros in Common Lisp.

What I can't get with Ruby is the feeling of working in a *live*
sea of objects, which are there all the time. This might be a
personal issue of my twisted brain, or be related to the scripting
mindset (i.e. start, load, run, save, stop) I have in Ruby-land.
irb (interactive ruby) does mitigate it somewhat, but it's just
not the real thing.
2- It's flexible enough that whatever advances
come up in computing paradigms and methodologies can be implemented in
the language itself.
if not, then there's the possibility of binding to "foreign" libraries,
which you can get with all of your languages.
3- That it would enable me to understand other
languages and learning to program in it would give me good thinking and
habits that I can use in others if I need to.
That's a very interesting point. Forth, Lisp and Smalltalk, each of them
will change the way you think about approaching and solving problems
coming up your way. Be prepared, however, to be regulary disappointed
by "features" of other languages, as they often pale compared to what
is available with the "Grand Old Masters".
I'd rather spend a lot of time mastering a versatile language than
learning a few fashionable but rigid ones.
Both Forth and Lisp are famous for being a language to write a language to
solve your problem.

Regards,
s.
Bernard Notarianni
2006-06-24 17:27:42 UTC
Permalink
Post by Stefan Schmiedl
First, let me compliment you on your language choice, you've picked
all of my favorites :-)
Would it be confusing if I read a Dolphin, VisualWorks or whatever books
when I'm using Squeak?
Every Smalltalk has its own way of dealing with GUIs. So it's safe to
expect differences between books for one implementation and working in
another.
I've learned much from Chamond Liu's book "Smalltalk, Objects and Design"
(I may be wrong about the title, it's a white paperback, probably out of
print by now).
Same for me. I learne OO with Chamond Liu book, which is to me probably
the best book I know to learn programming. It is short, clear, and
insightfull. No too much big theory, good amount of examples, and in
few paragraphs, it enlight you to the truly power of object
orientation.

http://bookshelved.org/cgi-bin/wiki.pl?SmalltalkObjectsAndDesign

It seems to be still available on amazon.
gregarican
2006-06-22 14:03:08 UTC
Permalink
A good book for Squeak that helped me out was Objectland, which can be
found at
http://www.amazon.com/gp/product/0201731142/104-3133589-5645569?v=glance&n=283155.
I was able to check it out from my local library and it's a fun,
interesting, and informative.

An updated version of "The Blue Book" can be found at
http://www.amazon.com/gp/product/0201136880/104-3133589-5645569?v=glance&n=283155.
The original also included The Implementation, which can be found
online at
http://users.ipa.net/~dwighth/smalltalk/bluebook/bluebook_imp_toc.html.
Most of the specifics in these texts are a bit dated, but the whole
historical aspect of Smalltalk is important to get where it's coming
from.

Reading text geared for VisualWorks or Dolphin might be a bit confusing
since each dialect differs in how they actually implement the fine
details. If you aren't using these dialects I wouldn't read up on them
under those conditions, especially if you are a newbie :-)


As for Ruby being fun I would say from my perspective it is. I have the
luxury to choose it for certain things. If I was forced to use another
language to accomplish the same tasks, such as using Java for example,
the experience wouldn't be the same. I have tried to sit down and dig
into Java for my own educational purposes, but the syntax, gotchas, and
immensity of it leaves me unhappy. Like Matz' credo when he started
developing Ruby. He was looking for something that made him happy. It's
not a pure OO language without flaws. It's not a mature,
unicode-compliant languages chock full of multiplatform libraries you
can draw upon. But for me it's enjoyable to use and makes whipping up
small projects a breeze.

As for the time investment standpoint a 10-year perspective it
difficult to take into account. With the changing landscape of IT and
the software development in general at least I don't look ahead that
far. I do what makes me productive and happy. All languages survive to
one degree or another. If you want you can code away in anything from
Lisp to Fortran to Cobol to Basic to Logo for crying out loud :-)

I would strongly recommend Smalltalk from the angle that it is the
first effective and widely-adopted object oriented language. Sure
Simula preceded it historically, but what Smalltalk provided the
software community had a much larger and longer lasting impact.
Features it had over 20 year ago have just recently been matched by
other languages. If you learn it as your first OO language then picking
up other OO languages will come easier and you ultimately will be a
more efficient and effective using them.

And once you start learning these languages you can probably pick up a
couple of them in a year's timespan if you have the inclination and the
free time available. I was able to pick up Ruby, Python, and Smalltalk
within roughly a year-and-a-half to the degree that I was able to
create working production applications in them. Mastering them is
another story I suppose but it's a process not an end result :-)

I wouldn't choose a language just because it's "ancient." Just as I
wouldn't choose a language just because it's cutting edge and popular.
As along as I enjoy it, can learn its concepts and practices without
too much grief, and find resources that allow me to get my questions
answered. More obscure languages still have active online communities,
instructional text, and updated software revisions, so you shouldn't be
on an island.

If you are trying to sell your boss on a language choosing something
like Brainf**k might be tough sell versus C++, C#, Java, etc. but if
you are just exploring for yourself I would recommend learning
Smalltalk as a first language and then you should have your feet under
you if you wish to further explore the OO language realm.

Once again, good luck and have fun!
Post by c***@gmail.com
Post by gregarican
"The Blue Book" is a classic introduction into where Smalltalk came
from, back with the release of Smalltalk-80. If you search from the
smalltalk.org site you will find links to other books available online
for free. VisualWorks comes with loads of online documentation with the
install. Then there's the "Dolphin Smalltalk Companion" for Dolphin,
although it's a few version behind what's currently available. eBay was
a good resource for me as well in terms of acquiring books that might
be out of print.
What's the title of "The Blue Book"? And what's a good book for Squeak?
Would it be confusing if I read a Dolphin, VisualWorks or whatever
books when I'm using Squeak?
Post by gregarican
I have learned both Ruby and Smalltalk but couldn't recommend one over
the other as a broad generalization. Depends on what you are looking to
do. For a larger scale GUI project Smalltalk is ideal for developing,
testing, and refactoring your work in a thoughtful organized manner.
All interactive to a 'T' so you can inspect and modify things while the
program is actively running. For smaller projects, admin scripts, quick
modeling, etc. Ruby would be a good choice because to me it's fun to
program in and it fits with my way of thinking when throwing ideas out
there.
Is Ruby more fun than smalltalk?
Post by gregarican
As long term investments I am not sure if either one can necessarily
have dozens of potential employers beating down your door. If that's
what you mean. While Ruby is gaining popularity due to the Rails/AJAX
bandwagon it might still be a good bit behind Java and .NET languages
in regard to preferred web programming langauges. Smalltalk's Seaside
offers similar promise and I hope gains popularity since it appears to
be very good at what it does.
I should've clarified that I don't mean working as a professional
programmer as a return to my "investment". What I meant by investment
of time and effort is simply that for lisp, and perhaps smalltalk and
forth too, the basics are quite simple but the advaned stuff takes a
lot of time and effort to learn (especially lisp) that I could be
looking at many years of commitment to be good at it, considering that
I'll be doing the learning it as a hobby.
1- If I spend 10 years mastering the language the language would still
be around and relevant in 10 years. Perhaps that's why I'm choosing
languages that are, in computing terms, ancient, since the youngest of
those three is already well over 30 years old.
2- It's flexible enough that whatever advances come up in computing
paradigms and methodologies can be implemented in the language itself.
3- That it would enable me to understand other languages and learning
to program in it would give me good thinking and habits that I can use
in others if I need to.
4- Productive: suitable for a lone programmer developing stuff for his
own use in limited hobby time.
5- It's versatile enough to cover my needs in case they change.
I'd rather spend a lot of time mastering a versatile language than
learning a few fashionable but rigid ones.
Post by gregarican
I use these languages to "glue things together" between other third
party apps or as a hobby for the most part in my professional
environment. But there are a couple of cases where I developed an
in-house custom app using them and they have stood the test of time so
far.
Good luck in your endeavors!
Thanks.
Hans-Martin Mosner
2006-06-21 20:20:36 UTC
Permalink
Post by c***@gmail.com
I seem to have come to the conclusion that learning lisp/scheme, forth
and smalltalk is what I want to do.
...
Post by c***@gmail.com
Is this a good plan? Does smalltalk fit into it?
Yes, and Yes (Just my opinion of course).
All three of those have a very small set of primitive operations, and
good ways of building abstractions on top of these (forth is a little
odd in this list, but it is a language worth understanding anyway,
because it is very close to the machine but still portable and abstract).
Post by c***@gmail.com
Also, and here's my main reason for posting here. I'm not sure which
smalltalk implementation and books to use.
...
Post by c***@gmail.com
I'm slightly put off by squeak in that
it's too graphical and I have no need for GUI or multimedia.
For just learning the language, GNU Smalltalk would probably be ok (I
haven't really used it).
But Smalltalk is a bit different in that it works much better in a
multi-windowed environment with the classical Smalltalk browser IDE.
This is a bit at odds with your desire of doing mostly scripting style
stuff, though.
It works pretty well once you accept Smalltalk as a shell (a "place to
be in"), and not simply a programming language.
For example, although I'm a UNIX geek for nearly 25 years now, I do many
of the file manipulation things in Smalltalk workspaces which other
folks would do with perl.

...
Post by c***@gmail.com
Is smalltalk a better longterm investment if mastered than Ruby?
I can't comment on Ruby, but if you are attracted by a concise syntax,
then the three languages you started out with are certainly the ones to learn.
For completeness, I'd suggest that you look at Prolog as well. Even if I
never really understood how to program control flow in this language, it
adds some very powerful ideas about how problems can be solved.

Cheers,
Hans-Martin
Ch Lamprecht
2006-06-21 21:35:31 UTC
Permalink
Post by c***@gmail.com
I seem to have come to the conclusion that learning lisp/scheme, forth
and smalltalk is what I want to do. Considering that I just want to
learn programming for the time being and that my ultimate needs are yet
uncertain, it seems to me that those three languages are the best
investment of my time and effort into this learning project, being the
most flexible and adaptable. I don't care much for language libraries,
I don't care much for frameworks and so on, I just want to learn
programmatic thinking for the time being with the minimum of
distractions. I would like to achieve a sort of expertise in those 3
languages over a decade or more that enables me to use them for
whatever needs I have later on, and to use insights gained from them in
lesser languages. Is this a good plan? Does smalltalk fit into it?
Also, and here's my main reason for posting here. I'm not sure which
smalltalk implementation and books to use. With lisp it's somewhat
obvious; SICP and its related literature. With Forth too it is somewhat
obvious. What about smalltalk? I'm slightly put off by squeak in that
it's too graphical and I have no need for GUI or multimedia. I'm
considering GNU smalltalk, but that isn't as multiplatform as lisps,
forths, or even squeak itself. Should I just commit to Squeak and then
use GNU smalltalk on unix for scripting, because, anyway, I use cygwin
when on windows?
For these reasons I had been considering learning Ruby as an
alternative to smalltalk, as it's clearly cross-platform and available
for CLI scripting. But Ruby, unlike lisp and forth, has too much syntax
for my taste. What would I be missing out on if I go Ruby instead of
smalltalk? Is smalltalk a better longterm investment if mastered than
Ruby?
Thanks
You might follow this link for a collection of books to get started(.pdf)

http://www.exept.de/download/books.tgz

Christoph
--
perl -e "print scalar reverse q/***@ergn.l.hc/"
c***@gmail.com
2006-06-22 09:28:20 UTC
Permalink
Post by Ch Lamprecht
You might follow this link for a collection of books to get started(.pdf)
http://www.exept.de/download/books.tgz
Christoph
--
Thanks. This looks like quite a good collection. :-)
Friedrich Dominicus
2006-06-22 06:11:07 UTC
Permalink
Post by c***@gmail.com
I seem to have come to the conclusion that learning lisp/scheme, forth
and smalltalk is what I want to do. Considering that I just want to
learn programming for the time being and that my ultimate needs are yet
uncertain, it seems to me that those three languages are the best
investment of my time and effort into this learning project, being the
most flexible and adaptable.
It's fine that you consider them all. IMHO it's not exclusive. You can
try them all. I for my part just can comment on smalltalk and lisp and
there I can not decide what I prefer really. Well maybe this is not
fully true, I'm an XEmacs user ;-), so I guess my preference is a bit
on the lisp side.
Post by c***@gmail.com
I don't care much for language libraries,
that's probably not too good. Librarries are there to make you life
easier at least most of the time ;-)
Post by c***@gmail.com
I don't care much for frameworks and so on, I just want to learn
programmatic thinking for the time being with the minimum of
distractions. I would like to achieve a sort of expertise in those 3
languages over a decade or more that enables me to use them for
whatever needs I have later on, and to use insights gained from them in
lesser languages. Is this a good plan? Does smalltalk fit into it?
Why not, althoug I doubt you need a decade to get into the smalltalk
groove ;-)
Post by c***@gmail.com
Also, and here's my main reason for posting here. I'm not sure which
smalltalk implementation and books to use. With lisp it's somewhat
obvious; SICP and its related literature. With Forth too it is somewhat
obvious. What about smalltalk? I'm slightly put off by squeak in that
it's too graphical and I have no need for GUI or multimedia.
Squeak is colourful but it comes with a lot of libraries and this is
not the worst to have. Smalltalk and GUIS are somewhat "twins" for
me. You usually get a fully fledged graphical development environment,
in this part it's quite similiar to Emacs but whereas Emacs gets it's
power from many external tools (shells, interpreters) this comes in
smalltalk with the extensive libraries. AFAIKT it seems to me that
squeak is here something like a layer upon all the stuff from the OS,
and you can program it all in smalltalk. IMHO a quite interesting
thing.
Post by c***@gmail.com
For these reasons I had been considering learning Ruby as an
alternative to smalltalk, as it's clearly cross-platform and available
for CLI scripting. But Ruby, unlike lisp and forth, has too much syntax
for my taste. What would I be missing out on if I go Ruby instead of
smalltalk? Is smalltalk a better longterm investment if mastered than
Ruby?
I have written code in Ruby and in Smalltalk and because I come from
langauges like C, Eiffel it is easier for me to program in Ruby. I
really like Ruby for many things, however I found another quite nice
thing
IO: http://www.iolanguage.com/about/

However I can not see what prevents you from learning them all, and
decide case-by-case with what you go. Ruby e.g is more integrated in
the Unix toolchain and this is not a small one. Smalltalks are IMHO a
worl on their own. If you just want to get things done both work, but
Smalltalks are IMHO less cluttered. Who can remember all the switches
for ls? But keeping objects and messages on one's mind is quite
easy. If you get around this smalltalk is the much easier to master
tool.

So I would says give them all a try, and keep you eyes open there are
interesting other things just around the corner (without any order:
Oberon, Ada, Scheme, Haskell, OCaml, Python, Perl, Tcl/tk, Icon,
Rebol, Rexx, Java, hell even C# ;-)

Regards
Friedrich
--
Please remove just-for-news- to reply via e-mail.
Chris Uppal
2006-06-22 14:55:35 UTC
Permalink
Post by c***@gmail.com
Also, and here's my main reason for posting here. I'm not sure which
smalltalk implementation and books to use. With lisp it's somewhat
obvious; SICP and its related literature.
I would strongly recommend:
Smalltalk, Objects, and Design
Chamond Liu
(which Stephan also recommended). I think it's the nearest thing Smalltalk has
to SICP, although the parallel isn't exact. It was reissued a year or two
back, and Amazon (UK) has it.
Post by c***@gmail.com
I'm slightly put off by squeak in that
it's too graphical and I have no need for GUI or multimedia.
It all depends on what you want to do.

At one level all the Smalltalks are pretty much the same -- they will all
require and encourage you to learn to think in objects, and to acquire the OO
way of doing abstraction (which is not, IMO, similar to the Lisp way). I would
have slight reservations about GNU Smalltalk for these purposes, since it
doesn't really have the same kind or IDE as the others. For Smalltalk, the IDE
is much more than just and integrated editor and debugger, but it's a place
where you interact with objects -- and that is crucial (IMO) to both learning
and thinking about objects, and also to the fun factor.

OTOH, the various Smalltalk implementations differ in various ways (more, I
think than the Lisps do these days). In particular the GUI frameworks are
wildly different. Given that almost any book (except the Liu book) will tend
to focus on building GUIs as an introduction to learning the system, that means
that a book intended for one implementation might be pretty confusing when used
with another one.

You might find it easiest to find a book you like (in addition to Liu) and
just use the Smalltalk that it describes. Once you are up and running, you'll
be able to evaluate other Smalltalks (if you still want to) without being
dependent on finding a good introductory book.
Post by c***@gmail.com
For these reasons I had been considering learning Ruby as an
alternative to smalltalk, as it's clearly cross-platform and available
for CLI scripting.
I have my doubts about how cross-platform Ruby is. It seems to have
Posix-style semantics embedded into its design. So, while you can run
Posix-style programs on any platform, you can't program to any platform's APIs.
So it's cross-platform in one sense, but not the other.
Post by c***@gmail.com
But Ruby, unlike lisp and forth, has too much syntax
for my taste. What would I be missing out on if I go Ruby instead of
smalltalk?
Working with objects instead of peering at dead code.

I should admit that I don't know Ruby well enough to comment on it fairly. But
then, that's because I've tried to get started with Ruby a couple of times and
given up each time -- too dead, too dull, too intricate...

-- chris
gregarican
2006-06-22 15:53:37 UTC
Permalink
Post by Chris Uppal
I have my doubts about how cross-platform Ruby is. It seems to have
Posix-style semantics embedded into its design. So, while you can run
Posix-style programs on any platform, you can't program to any platform's APIs.
So it's cross-platform in one sense, but not the other.
You are certainly correct. I have tried to create certain Ruby apps
that would be deployed in a cross-platform manner --- Linux, BSD,
Windows, etc. There were certain subtleties which still reaffirm how
that Ruby was created from a Linux point of view and most of its core
developers are still largely Linux-based. I primarily develop in/for
Windows clients and ran into trouble trying to get certain libraries to
work on my platform of choice. Or getting Ruby to work in the same
predictable manner when running on the various platforms. In a sense
Python is more geared toward Windows clients and would work better for
certain projects that I tried to get going. And the languages are
somewhat similar. Cousins in a sense.
Post by Chris Uppal
I should admit that I don't know Ruby well enough to comment on it fairly. But
then, that's because I've tried to get started with Ruby a couple of times and
given up each time -- too dead, too dull, too intricate...
-- chris
I concur when you are talking about "dead." Other than using the
Interactive Ruby CLI feature (i.e. - irb) you really can't dig into the
system while it's active like you can in Smalltalk. The only analogy I
can make is I love working in Smalltalk since it's like you can work on
the car's engine while you're making your way down the highway. Or
perform brain surgery while the patient is conversing with you. Really
fun stuff for learning what's going on behind the scenes.

In terms of intricate I suppose philosophically it's like a reader
preferring a certain author or style of writing. Some like Hemingway's
terse, short prose, while others can't get enough of the long flowing
details scribed by Proust. While Ruby is "wordier" than Smalltalk is
certainly doesn't approach the verboseness of something like C++ or
Java :-/
Chris Uppal
2006-06-23 10:12:03 UTC
Permalink
Post by gregarican
Other than using the
Interactive Ruby CLI feature (i.e. - irb) you really can't dig into the
system while it's active like you can in Smalltalk. The only analogy I
can make is I love working in Smalltalk since it's like you can work on
the car's engine while you're making your way down the highway.
For the person who hasn't experienced this at first hand, it might be better to
turn the analogy around. If Smalltalk is like working on your car's engine in
your own garage with a well filled toolset handy, most other languages are like
talking a non-mechanic through fixing a car over the phone -- when they don't
have a phone near the car...

-- chris
a***@aol.com
2006-06-24 03:21:11 UTC
Permalink
Post by c***@gmail.com
I seem to have come to the conclusion that learning lisp/scheme, forth
and smalltalk is what I want to do. ...
Hello,
After buying and reading a bunch of books (new and used) on smalltalk,
IMHO 'Smalltalk in Brief', by Kenneth Lambert, helped me see the light.
I think the reason is that it contained enough screen shots to follow
along to get the 'ah-ha - yes- wow - cool' feeling that I did'nt get
with various tutorial. The Smalltalk is Smalltalk/V, the old Digitalk
product. The version in the book is repackaged as Smalltalk Express
with WindowsBuilder Pro. It used to be available as a free download.
I'm not sure if it still available. I still experiment with it even
though it was a 16-bit job. Years ago, I paid good money for the old
packages but never 'got it' even after going through the Digitalk
tutorials, which are part of the Smalltalk Express documents. The other
book I would suggest is 'On to Smalltalk', Patrick Winston. It also has
a lots of hands-on keyboarding, and short bits of code. It also used
Smalltalk Express, but also VisualWorks.

My background started with Fortran IV, Snobol 4, 6502 assembly,
AppleSoft, 8088 assembly, Pascal, Object Pascal, C, C++, Forth, Neon,
QBasic, QuickBasic, some VB, some Lisp / Scheme, Turbo/PDC Prolog, some
LOGO and some Java.

I always liked the turn-around time to write and test in
likeTurboPascal, Turbo Prolog, QBasic, QuickBasic and somewhat like
Forth. Turbo C/C++ became as favorite for a while but I got tired of
keeping up with libraries, source code revision stuff, and compile-run
turn-around time, even with pre-compiled headers. Visual C++ was even
worse for just experimenting with a snippet of code.

Joy with smalltalk was finding the way to quickly experiment with code,
with a quick edit-debug-correction cycle. And with ability to correct
code in the debugger and continue going. And having the ability for the
debugger to tell me where to add code.

Here's a hint. When I wrote a message that works, like 'doSomething:'
and I want to play around with versions of the implementation, I change
the name to 'doSomethingGOOD:' do and 'accept it'. Both 'doSomething:'
and 'doSomethingGood:' will contain the same code. Then modifiy the
code in 'doSomething:' 'accept it' again to see if it runs or crashes.
If I like the newer version better I simply delete 'doSomethingGOOD:'
or keep it around for comparison.

I think smalltalk may be easier to learn if your mind is uncluttered
with other language syntaxes. For example, in a message such as
'doSomething: ', I sometimes was trying so see if needed to worry about
'calling' the parameter 'by reference' or 'by value'. I finally
understood that the pararameter was itself an object, and as such,
would understand messages sent to it, just because it was an object,
not just a piece of data.

Hope this helps
gregarican
2006-06-24 10:53:05 UTC
Permalink
Post by a***@aol.com
Hello,
After buying and reading a bunch of books (new and used) on smalltalk,
Good point. For anyone new to Smalltalk I would recommend checking your
local library and scoping out eBay. Lots of times there will be eBay
stores that have older, used Smalltalk books for Buy It Now prices
anywhere from $0.99 U.S to $5.00. Using these I was able to pick and
choose certain areas that still applied to what I was currently doing.

I have heard that Smalltalk Best Practices is a good book that's more
current. But the price was still a little high for me, so I will look
into getting it sometime soon...
a***@aol.com
2006-06-24 12:06:00 UTC
Permalink
gregarican wrote:
...
Post by gregarican
I have heard that Smalltalk Best Practices is a good book that's more
current. But the price was still a little high for me, so I will look
into getting it sometime soon...
Hello-

I paid retail for that book years ago when first started looking at
Smalltalk. It was over my head then and still has stuff to learn. Some
stuff may be arcane, as in describing 'double dispatch'...'send a
message to the argument. Append the class name of the receiver to the
selector. Pass the receiver as an argument' (page 56).

But helpful advice is also present, as on something I was playing with
recently, i.e. 'Interval' (page 137) discusses how '1 to:20 do: [:each
|...]' and '(1 to: 20) do: [:each |...]' are equivalent, but differ in
what is happening .

Good luck on finding an afforable copy
ACG
gregarican
2006-06-24 16:45:19 UTC
Permalink
I will keep hunting around for a used copy. There are certain broader
conceptual areas I have heard can be applicable to other OO languages a
person might be using as well. Smalltalk books are tougher to find than
other more widely used languages so finding something at a reasonable
price is rewarding for sure!
Post by a***@aol.com
...
Post by gregarican
I have heard that Smalltalk Best Practices is a good book that's more
current. But the price was still a little high for me, so I will look
into getting it sometime soon...
Hello-
I paid retail for that book years ago when first started looking at
Smalltalk. It was over my head then and still has stuff to learn. Some
stuff may be arcane, as in describing 'double dispatch'...'send a
message to the argument. Append the class name of the receiver to the
selector. Pass the receiver as an argument' (page 56).
But helpful advice is also present, as on something I was playing with
recently, i.e. 'Interval' (page 137) discusses how '1 to:20 do: [:each
|...]' and '(1 to: 20) do: [:each |...]' are equivalent, but differ in
what is happening .
Good luck on finding an afforable copy
ACG
darko
2006-06-24 15:08:51 UTC
Permalink
Post by c***@gmail.com
I seem to have come to the conclusion that learning lisp/scheme, forth
and smalltalk is what I want to do. Considering that I just want to
learn programming for the time being and that my ultimate needs are yet
uncertain, it seems to me that those three languages are the best
investment of my time and effort into this learning project, being the
most flexible and adaptable. I don't care much for language libraries,
I don't care much for frameworks and so on, I just want to learn
programmatic thinking for the time being with the minimum of
distractions. I would like to achieve a sort of expertise in those 3
languages over a decade or more that enables me to use them for
whatever needs I have later on, and to use insights gained from them in
lesser languages. Is this a good plan? Does smalltalk fit into it?
Also, and here's my main reason for posting here. I'm not sure which
smalltalk implementation and books to use. With lisp it's somewhat
obvious; SICP and its related literature. With Forth too it is somewhat
obvious. What about smalltalk? I'm slightly put off by squeak in that
it's too graphical and I have no need for GUI or multimedia. I'm
considering GNU smalltalk, but that isn't as multiplatform as lisps,
forths, or even squeak itself. Should I just commit to Squeak and then
use GNU smalltalk on unix for scripting, because, anyway, I use cygwin
when on windows?
For these reasons I had been considering learning Ruby as an
alternative to smalltalk, as it's clearly cross-platform and available
for CLI scripting. But Ruby, unlike lisp and forth, has too much syntax
for my taste. What would I be missing out on if I go Ruby instead of
smalltalk? Is smalltalk a better longterm investment if mastered than
Ruby?
Thanks
You can get some very good books for free at location:
http://www.iam.unibe.ch/%7Educasse/FreeBooks.html

Unlike to books for some other languages, books for Smalltalk are not
huge regarding the number of pages and still manage to lead the reader
to fair level of understanding the language.

For VAST, I can recommend the book "Smalltalk, Objects and Design" by
Liu.

Welcome to Smalltalk land and be well,
Darko
d***@impulse.net.au
2006-06-25 23:37:03 UTC
Permalink
I've been thu the same selection process, over a period of 2-3 years,
in trying to get into Smalltalk.
Mainly out of general interest but mainly to see if ST is really a
cross platform development tool. ( Some version are).

If you visit my small web site at :

http://users.impulse.net.au/dragoncity

where I have written at some length on my observations on various
versions, ST books,
plus access to a book I wrote ( unpublished :-) for myself to
consolidate my
notes about how to write a PROGRAM using Smalltalk. You may find it
useful input.

Good luck with your search.

BTW: IF 'we' don't have better languages in 10 years than we do now (
including ST !)
then we are in real trouble !!
Doug Swartz
2006-06-27 02:27:13 UTC
Permalink
Post by d***@impulse.net.au
I've been thu the same selection process, over a period of 2-3 years,
in trying to get into Smalltalk.
Mainly out of general interest but mainly to see if ST is really a cross
platform development tool. ( Some version are).
http://users.impulse.net.au/dragoncity
where I have written at some length on my observations on various
versions, ST books,
plus access to a book I wrote ( unpublished :-) for myself to
consolidate my
notes about how to write a PROGRAM using Smalltalk. You may find it
useful input.
Brett,

Thank you for a pretty decent analysis of both the Smalltalk products and
what we need as a community. I hope the vendors listen to your cogent
thoughts.

One note: I work in a shop that uses VAST to develop for UNIX. It works
great for what we do: headless server work, but we do our development
under Windows. I agree with you that the VAST GUI is simply not robust
under LINUX or UNIX.

Doug Swartz

----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
----= East and West-Coast Server Farms - Total Privacy via Encryption =----
Chris Uppal
2006-06-27 10:42:46 UTC
Permalink
Post by Doug Swartz
I agree with you that the VAST GUI is simply not robust
under LINUX or UNIX.
Which is both sad and ironic given that VAST's GUI API is modelled around the
UNIX API (Motif IIRC).

-- chris
Isaac Gouy
2006-07-05 17:06:43 UTC
Permalink
Post by c***@gmail.com
I seem to have come to the conclusion that learning lisp/scheme, forth
and smalltalk is what I want to do. Considering that I just want to
learn programming for the time being and that my ultimate needs are yet
uncertain, it seems to me that those three languages are the best
investment of my time and effort into this learning project, being the
most flexible and adaptable. I don't care much for language libraries,
I don't care much for frameworks and so on, I just want to learn
programmatic thinking for the time being with the minimum of
distractions. I would like to achieve a sort of expertise in those 3
languages over a decade or more that enables me to use them for
whatever needs I have later on, and to use insights gained from them in
lesser languages. Is this a good plan? Does smalltalk fit into it?
Also, and here's my main reason for posting here. I'm not sure which
smalltalk implementation and books to use. With lisp it's somewhat
obvious; SICP and its related literature. With Forth too it is somewhat
obvious. What about smalltalk? I'm slightly put off by squeak in that
it's too graphical and I have no need for GUI or multimedia. I'm
considering GNU smalltalk, but that isn't as multiplatform as lisps,
forths, or even squeak itself. Should I just commit to Squeak and then
use GNU smalltalk on unix for scripting, because, anyway, I use cygwin
when on windows?
For these reasons I had been considering learning Ruby as an
alternative to smalltalk, as it's clearly cross-platform and available
for CLI scripting. But Ruby, unlike lisp and forth, has too much syntax
for my taste. What would I be missing out on if I go Ruby instead of
smalltalk? Is smalltalk a better longterm investment if mastered than
Ruby?
Thanks
From what you've written over the last 2 weeks, I wouldn't suggest that
you learn Lisp/Scheme or Smalltalk or Forth or Tcl. From what you've
written, you aren't trying to learn a narrow set of techniques that
will be directly relevant to some commercial software project, now or
in the future. That gives you a great deal of freedom - use it.

Here's a recent textbook that focuses on big ideas and multiple
paradigms
http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=10142

Here's the introduction
http://mitpress.mit.edu/books/chapters/0262220695chap1.pdf

Here's a snippet from a Tutorial for the core language used in the
textbook
"Most of us know the benefits of the various programming paradigms
whether object-oriented, functional, or constraint logic programming.
When we start writing programs in any existing language, we quickly
find ourselves confined by the concepts of the underlying paradigm. Oz
solves this problem by a coherent design that combines the programming
abstractions of various paradigms in a clean and simple way."
http://www.mozart-oz.org/documentation/tutorial/node1.html#chapter.introduction

A new version of the software was released on June 15
http://www.mozart-oz.org/

Continue reading on narkive:
Loading...