quinta-feira, 3 de setembro de 2009

Scala e o jeito funcional de programar

Ao programar por muitos anos com linguagens como C e Java nós nos acostumamos demais com o modo imperativo de programação. Fazendo isso esquecemos algumas vantagens que o paradigma funcional pode nos trazer.

Ultimamente estou estudando Scala, e apesar da linguagem permitir que você construa código imperativo, a mesma traz interessantes construções que nos incentivam a usar o paradigma funcional.

Um exemplo simples mas que mostra esse conceito seria um código para varrer os parâmetros de entrada de um programa e simplesmente imprimi-los na tela.

Um código imperativo em Scala seria assim:

var i=0
while(i < args.length){
  println(args(i))
  i += 1
}

Como podemos ver, nada muito complexo, simplesmente um laço que varre a lista imprimindo seus elementos.

Utilizando um pouco do paradigma funcional presente em Scala o mesmo código poderia ser feito da seguinte maneira:

args.foreach(arg => println(arg))

O seguinte código define um function literal. Esta função recebe como parâmetro um item da lista de argumentos e imprime o mesmo, o processo é repetido para cada argumento da lista.

Da mesma maneira que foi chamado um println, qualquer função poderia ter sido chamada sobre a iteração.

É importante notar que o código acima é facilmente implementado em Java, basta pensarmos de maneira mais funcional.

Entretanto, como o valor extraído da lista é o único parâmetro para a função que será executada, é possível fazer com que esse código seja ainda mais simples:

args.foreach(println)

E você achando que o laço no início do post que era simples ein =)

2 comentários:

Luiz disse...

Interessante essa última construção hein. Quase me convenceu a estudar Scala :P

Lucas Rosa Galego disse...

Comecei a estudar a linguagem a umas duas semanas e a cada momento estou mais convencido de ela vale a pena.