> I will learn only one of the languages (at this point in time.)
> Philosophically, I'm not interested in becoming a 'language collector,'
> a computer scientist, or developing a 'hobby' - but I am VERY
> interested in getting real work done by writing my own applications.
This is shooting for disaster. Race car drivers can usually know enough
about the car itself that they could build it from scratch if they
wanted to. If you are wanting to become a programmer but don't want to
invest the time to truly learn how it works, I forsee disastrous
problems continually popping up in your work that each take weeks to solve.
> Ideally, I therefore want the one language I choose to learn to be able
> to handle anything I intend to do now or in the future.
There isn't one. Lisp is probably closest. However, the best
environment to program in without learning real programming is probably
Delphi.
> Someone (Avi?) once wrote that Lisp is multi-paradigm while Smalltalk
> is not, but that since the one paradigm Smalltalk uses is so powerful,
> you can get almost all of the benefits without all the attendant
> complexity. That appeals to me. On the other hand, the power of Lisp
> is seductive.
I would disagree with this assessment on nearly all counts.
> I do not have a full understanding of the benefits and downsides of
> multi-methods, encapsulation, call-cc, etc. (To reiterate: I'm not
> a programmer.) I have a very basic understanding of what they all
> mean, but not a practical understanding that would keep me from
> shooting my own feet off with unnecessary complexity or creating
> debugging nightmares.
The main issue is that when you develop complex software, you need tools
to handle the complexity. I think such evaluations by someone who is
not yet a programmer is not useful. I would suggest you become a
programmer, try a few languages, and then make that evaluation. It's
tough enough to explain such things to to people who are new
programmers, explaining them to a non-programmer is simply a waste of
time. After you've pushed out some code, you will be in a much better
position to understand.
> I realize that this stuff gets into language holy war debate territory
> over language design, but I'm trying to understand what I'm getting
> myself into with Lisp and Smalltalk - and which is best suited for my
> specific goals.
Then learn both and _then_ choose.
> I guess I'm operating under the assumption that Smalltalk is better
> for modeling standard business processes (all objects, all the time),
> while Lisp is better for the more computationally/algorithmically
> intense stuff like NLP.
Nope. Lisp is better for managed complexity. Smalltalk is better for
GUI-based projects. However, both are better than most other languages
for most projects. However, I would probably use Python instead of
Smalltalk, since it is newer (but based on smalltalk), has some import
of Lisp features, and has a larger user community (yes, that _is_ a factor).
> So, given the strengths of each, which is the better choice for someone
> who wants to be able to accomplish the tasks stated below with the
> shortest learning curve and least complexity? Which is going to offer
> the most productivity for someone that is programming mainly, say,
> accounting systems, but with some NLP/AI stuff thrown in every once in
> awhile?
You're planning on doing AI but don't want to bother with computer
science?!?!?!?
I really suggest you start programming _first_, and then worry about
everything else.
Jon
----
Learn to program using Linux assembly language
http://www.cafeshops.com/bartlettpublish.8640017