[squeak-dev] Rosetta Code site
Daniel Ingalls
dan at Squeakland.org
Sun May 3 19:52:33 UTC 2009
Hi all -
Today while looking for an old reference to Rosetta Smalltalk, I came
across this site:
http://rosettacode.org
In their own words, "The idea is to present solutions to the same task
in as many different languages as possible, to demonstrate how
languages are similar and different, and to aid a person with a
grounding in one language in learning another. Rosetta Code currently
has 278 tasks, and covers 135 languages, though we do not have
solutions to every task in every language."
It seemed to me that some of the Smalltalk examples are not as nice as
they might be. For instance the very first thing I looked at was the
Ackermann function which is written as a block...
|ackermann|
ackermann := [ :n :m |
(n = 0) ifTrue: [ (m + 1) ]
ifFalse: [
(m = 0) ifTrue: [ ackermann value: (n-1) value: 1 ]
ifFalse: [
ackermann value: (n-1)
value: ( ackermann value: n
value: (m-1) )
]
]
].
To begin with, this is cluttered with value:value:; it includes
redundant parentheses which don't belong in an illustration of the
language; finally, it will not run in Smalltalks that do not allow
recursive blocks. Seems to me it might be more illustrative as an
Integer method that will run in any Smalltalk, that runs faster too,
and looks cleaner to me...
<Integer> ack: n "The first parameter m is the receiver, self, in
this Ackermann method"
self = 0 ifTrue: [^ n+1].
self > 0 ifTrue:
[n = 0 ifTrue: [^ self-1 ack: 1].
n > 0 ifTrue: [^ self-1 ack: (self ack: n-1)] ]
"
0 ack: 0 ==> 1
3 ack: 4 ==> 125
"
Anyway, I thought Smalltalk's representation on that site could use a
little QA, and that folks on this list might have a good time playing
TerseMan. I could imagine the Squeak solutions being an interesting
area in our Wiki, both as a staging area for such a project, and as a
possibly interesting collection of TerseMan discussions (terseness is
great fun, but not always the ideal). A comment on the last line
might point to our Wiki which might gain some new Squeak users, and
would encourage checking with us before anyone overwrites our
contributions.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090503/9340adb9/attachment.htm
More information about the Squeak-dev
mailing list
|