Hello, world fra Io


søndag 2. januar 2011 Polyglot Io

Min kjære kone var så snill å kjøpe Seven Languages in Seven Weeks til meg til Jul i år (dvs. i fjor). Første del handlet om Ruby – et språk jeg allerede behersker ganske bra, så den delen skumleste jeg raskt. Uke to handler om Io, et elegant programmeringsspråket jeg har hatt lyst til å se nærmere på en god stund nå.

Io har en ekstremt enkel syntaks, en enkelhet og samtidig en fleksibilitet som ikke er helt ulik Lisp. Den har et lite “footprint”, og en attraktiv samtidighetsmodell med actors, futures og korutiner. Den største svakheten er at utviklermiljøet er lite, og det er svært uvisst om språket vil vokse i popularitet.

Men her er i alle fall mitt aller første Io-program:

 1 // First a test method printing the 10 first fibonacci numbers
 2 printFib := method(label,
 3   label print ":" println
 4   for(i, 1, 10, "Fib #{i} is #{fib(i)}" interpolate println)
 5   "" println
 6 )
 7 
 8 // Then a slim and simple fibonacci implementation..
 9 fib := method(n, if(n <= 2, 1, fib(n - 1) + fib(n - 2)))
10 
11 // which I can test like this..
12 printFib("Recursive fibonacci")
13 
14 // Next I want an implementation with a loop
15 fib := method(n,
16   sequence := list(1,1)
17   for(i, 2, n-1,
18     sequence append((sequence at(i-1)) + (sequence at(i-2)))
19   )
20   return sequence at(n-1)
21 )
22 
23 // and the test again..
24 printFib("Fibonacci with a loop")

Output:

C:\usr\local\bin>io_static.exe c:\temp\hello.io
Recursive fibonacci:
Fib 1 is 1
Fib 2 is 1
Fib 3 is 2
Fib 4 is 3
Fib 5 is 5
Fib 6 is 8
Fib 7 is 13
Fib 8 is 21
Fib 9 is 34
Fib 10 is 55

Fibonacci with a loop:
Fib 1 is 1
Fib 2 is 1
Fib 3 is 2
Fib 4 is 3
Fib 5 is 5
Fib 6 is 8
Fib 7 is 13
Fib 8 is 21
Fib 9 is 34
Fib 10 is 55

comments powered by Disqus