
Methods for Teaching the Programming Language Smalltalk (1977) [pdf] - mpweiher
http://bitsavers.org/pdf/xerox/parc/techReports/SSL-77-2_Teaching_Smalltalk.pdf
======
tom_mellior
This is cool. For those who may have seen Smalltalk before and are wondering
where all the colons went in the example code snippets: The language discussed
in these articles appears to be Smalltalk-72. Modern Smalltalks are based on
Smalltalk-80, which is quite different in some respects.

In particular, modern Smalltalks use call-by-value, while these early
Smalltalks used something more like call-by-name. Message arguments were
passed in as unevaluated structures and parsed by the method. This allows some
syntactic tricks that may look more natural than modern Smalltalk. For
example, you could write "size increase by x" rather than the modern "size
increaseBy: x" because the "increase" message could check for the presence of
the word "by" and ignore it.

So this was kind of like using Lisp macros to define DSLs like the LOOP macro,
but it was all evaluated at runtime.

~~~
lispm
Sounds similar to what in Lisp is called a FEXPR. A concept which was widely
used in the 70s and what has mostly been replaced by macros. Fexprs get the
arguments unevaluated at runtime and then do runtime
parsing/transforming/evaluation.

------
throwaway7645
Does anyone on here program in Smalltalk professionally? Not to get off topic,
but I'm curious and would like to know how it stacks up compared to what they
did previously.

~~~
rjs5x5
I have been using Smalltalk professionally almost exclusively since 1991. Over
the years, I have dabbled with Java, but every time I do, I feel like I am
poking myself in the eye with a rusty spoon.

One of my favourite researchers is Capers Jones. He's been researching
software productivity for decades. His current company, Namcook Analytics,
published a paper on his recent efforts [1]. Tables 14.1, 14.2, and 14.3 are
of particular interest, although the whole paper is well worth reading for its
own sake.

Some of his previous work seems impossible to find now. internet bit rot. One
stands out in my memory. It also compared productivity in various languages,
but also included error rates. Smalltalk ranked equally highly in that work,
with significantly lower error rates per line of code.

To answer how Smalltalk compares to what I did previously, I have worked
professionally using quite a number of languages, including Fortran, C, C++,
and assembler (numerous). I would not willingly stop working in Smalltalk.
Yes, it is that good.

Most companies using Smalltalk have exceptionally small staffing associated
with their Smalltalk application, often having only a handful of developers &
DBAs. Most of these businesses seem reluctant to talk about their Smalltalk
applications. It doesn't seem to be due to embarrassment, but rather due to a
desire to protect their competitive advantage.

[1] [http://namcookanalytics.com/wp-
content/uploads/2013/07/Funct...](http://namcookanalytics.com/wp-
content/uploads/2013/07/Function-Points-as-a-Universal-Software-
Metric2013.pdf)

~~~
throwaway7645
Thanks for sharing this! I first read about the "secret sauce" from Paul
Graham referring to his use of Lisp with Viaweb, but have been somewhat
suspicious. Yes JVM performance & scalability is necessary for some
applications like twitter, but surely the industry should see 90% of standard
business software is fine in other languages. Is everything really driven that
much by market hype? I guess hiring is critical too.

------
shortsightedsid
If you want to learn Smalltalk, there is a MOOC that’s just started.
[http://files.pharo.org/mooc/](http://files.pharo.org/mooc/). Also Pharo by
example is a good book.

~~~
reddit_clone
That looks like a quality resource. But videos are in French :/

~~~
tom_mellior
... accompanied by English subtitles.

Also, in the actual MOOC, for which you have to register at [https://www.fun-
mooc.fr/](https://www.fun-mooc.fr/), the videos are also available dubbed in
English. (Except some that are not part of the "actual" course that give tips
on how to use the environment.)

------
fractallyte
Here's a great book for learning modern Smalltalk: "Object-oriented
Programming with Smalltalk", by Harald Wertz
([https://www.elsevier.com/books/object-oriented-
programming-w...](https://www.elsevier.com/books/object-oriented-programming-
with-smalltalk/wertz/978-1-78548-016-4))

Unfortunately - and I really don't understand the author's rationale - it's
published by Elsevier. The price is way out of reach for most students.

~~~
throwaway7645
Yea...I told myself after college I would never buy books so expensive ever
again. His university might have a contract enforcing it.

------
pfisk
Smalltalk Express is a new Smalltalk that I am developing for web
applications.
[https://smalltalkexpress.quora.com/](https://smalltalkexpress.quora.com/)

I am working on it full time.

~~~
jecel
It is a bad idea to reuse project names, though since the older Smalltalk
Express (freeware version of Smalltalk V/Win) was from back when the web was
new there won't be too many search results about it to get in your way:

[http://www.andreadrian.de/smalltalk/09-11-96.htm](http://www.andreadrian.de/smalltalk/09-11-96.htm)

