Sunday, November 30, 2008

Adventures in Reia land, part 1: iteration

One of my current interests is the new Reia programming language, created by Tony Arcieri. The wiki contains most of the documentation, but but besides a simple "Hello, World!" and Fibonacci implementation, there is not much working code. Reia is a work in progress, so that makes sense.

Philipp Pirozhkov created Ryan, a web framework built on top of Reia and YAWS. For reasons I have yet to figure out, it does not want to build on my machine. At least there's more code to look at to learn the language. Ryan also has a RSpec-like syntax for writing tests, which look interesting.

Starting with web development might be a bit too ambitious for me. I actually managed to mess up a simple "Hello, world!" example, so I'm starting slow.
Note to self: methods in Reia have parentheses. It's not Ruby, where you can omit them.

Wrong hello world:
puts "Hello, world!"
Proper hello world:
puts("Hello, world!")
Sincy my brain still thinks in Ruby, let's start with a simple bit of Ruby code and convert it to Reia.

First, the Ruby code:
[1,2,3].each { |n| puts n }
This prints out three lines with 1, 2 and 3 on them.
Now the same code in Reia:
[1,2,3].each { |n| puts(n.to_s()) }
The two obvious differences:
  1. All method calls need their parentheses. So use "puts('String')" instead of "puts 'String'".
  2. The int has to be explicitly cast to a String.
Just like Ruby, Reia has multiple ways to write this code. Another Ruby-esque way to write it is by using the 'do' block notation instead of curly braces:
[1,2,3].each do |n|
puts(n.to_s())
Notice the puts() is indented and there is no "end": that is the Python-style indentation at work. A third way to write the code is by (ab)using List Comprehensions:
[puts(x.to_s()) | x in [1,2,3]]
This is the strangest form for me, since Ruby does not have something similar. The way I interpret it is by reading from right to left: for each x in [1,2,3], do the puts thingy left of the pipe.

With that, I conclude my first post on Reia. Now let's see if I can get Google's code prettify syntax highlighting to work.

Hello, World!

After complaining over and over that I should really get myself a blog, I finally have one! Now, let's be nice and let me introduce myself.

My name is Wes Oldenbeuving and I'm a programmer from Amsterdam, the Netherlands. My hobbies include reading books and blogs, playing video games, watching tv series and programming.

My interests cover a wide variety of topics like computer science, economic theory, history, (melodic) metal music, politics, philosophy, personal growth and cooking. I'm not a great chef, but I do try to improvise on recipes every once in a while.

I have been programming (in Ruby) since March 2006 for the Dutch company yoMedia. Ruby on Rails is what brought me to Ruby, but it is not the only thing keeping me. Ruby as a language is really nice to work with and works for both simple scripts, to automate mundane tasks, and to build complex applications. The people in the local Ruby communities are also nice, smart and full of crazy creative ideas.

We have a number of regular events that I attend 99% of the time: Amsterdam.rb, Utrecht.rb and the soon-to-start Amsterdam.rb screen-peeking diner thingy.

I expect my blog posts to mainly cover programming-related topics, though they will not necessarily be all about Ruby. In fact, expect the first posts to be about the new Reia programming language.