Mike Austin points out an interesting issue surrounding the learning of Smalltalk - the perceived irregularity of the syntax. As is pointed out in his comments, it's not irregular syntax, but the consistency of the object model that's at work. However, Mike has a point in terms of how newbies see things:
In one aspect, Smalltalk is a very small and elegant language. But I find there are some hidden intricacies when you actually use it. One example is the difference between using the messages whileTrue: and ifTrue:. whileTrue: expects a Block, while ifTrue: expects a Boolean. In the following, at first glance it's not understood why one uses square brackets and the other parenthesis:
[count < 10] whileTrue: [count := count + 1]
(count < 10) ifTrue: [count := count + 1]
Once you understand that the control messages are just that - messages, not operators - it makes sense. I can see Mike's point though - to a person just learning Smalltalk, that might be seen as confusing. I'll have to think on this.