archives

I want to learn Smalltalk

dear forum,

I am not a programmer but I am very (and I mean, very) interested in programming. There are programmers who work real hard and for very understandable reasons are not very interested in history and fundamentals, but I am. I hope you guys will be friendly enough to give me directions, the reason I am doing this in a forum all about programming languages is that I know no one personally who can help me with this, and this thread can serve others.

I've heard (read) so much about Smalltalk (specifically, how cute it is as a language) but unfortunately the omniscient web didn't help me much (I know, weird). I have a fair bit of understanding of Java and (to a lesser extent) C++ (I am not comfortable with template wizadry, to be specific). The language I like most so far is Haskell, feel free to use any of these to make a point. What I am interested about the most is the difference between Java and Smalltalk.

I went to www.smalltalk.org, www.squeak.org, and some other websites. They had free books. But most of those books are in very weird formats (pictures embedded in PDF for example) and taught programming in Smalltalk itself, but I am not going to *use* Smalltalk anyway. I have a feeling that none of the articles/tutorials/books/documentations highlighted the *ideas* behind Smalltalk. They are mostly about how OO influences software construction. We know that pretty well by now. But I want to know why Smalltalk is the definitive OO language.

The questions I have are very naive (so if you don't feel like it, please just point me to relevant books or, better, webpages):
- classes are first-class objects? whatever does that mean? examples?
- the difference between 'self' and 'this' (in Java)?
- isn't Smalltalk dynamically typed? how do classes interact with dynamic typing?
- both functional languages and Smalltalk exhibit 'minimal' syntax in a sense, am I right? why? how? is there a very easy way to embed one into another? does currying have a Smalltalk counterpart?
- why do people call Smalltalk "pure OO"? apart from the superficial primitive types in Java, aren't everything else objects? what does it mean to be "pure OO"?
- interfaces? do they make sense?
- is there any intuitive reflection mechanism in Smalltalk?

So, in a sense, what I really need is a language report, not tutorials and introduction to OO principles. is there any? the functional counterpart of what I am looking for would be the Haskell98 report. with a bit of explanation on what is there and what is left out and why. please raise other questions as well.

cheers! may 2007 bring joy and happiness to your life. specially if 2006 didn't ;)

[PostScript: I noticed the frames and slots thread and I think the questions I want answers of could appear there as well, I'm keeping an eye on that one too!]

Simon Peyton Jones: Beautiful concurrency

I am writing a chapter for a book called "Beautiful code", edited by Greg Wilson. My draft chapter is about Software Transactional Memory in Haskell.

I would welcome any comments or questions you have on the paper, or constructive suggestions for improving it; the more concrete the better.


The book is aimed at a general audience of programmers, not Haskell geeks, so I have tried to explain everything necessary as I go along. So if you are not a Haskell expert, your input would be particularly valuable to me.

You can post your comments on the Haskell wiki.

STM was discussed here many time before, of course. For me the original papers were easier to follow, but some may prefer the style of presentation used here.

A Web of Code


                Web Of Code

        http://idiki.dyne.org/wiki/WoC

WoC stands for Web Of Code.

The basic idea is to add hyperlink capacities to source code documents,
creating, in this way, a new Web, of code.

The Idiki article describes the idea and shows how it can be implemented using
existing tools, f.e. ViewVC, cscope and Vim.

Another idea explored by the article is:
       
       #!/usr/bin/python
       from :openssl.org/ssl: import RSA*

The article is here: WoC

Best regards.