
Qual deve ser a linguagem de programação que serve de introdução ao seu curso superior de informática? Para mim a resposta não podia ser mais evidente: Haskell.
Pelo que sei no ISEP a primeira coisa que se aprende é Java, o que acho chocante. Afinal o paradigma de programação orientada aos objectos é vastíssimo e ensinar alguém a programar em Java sem estes conhecimentos por trás parece-me de uma irresponsabilidade incrível. Isto após uma reestruturação que ocorreu o ano passado! Pode-se alegar que o ISEP tenta formar profissionais que sejam absorvidos o mais rapidamente possível pelas empresas, que não se pretende formar investigadores. Mas, na minha opinião pessoal, existem coisas que são base para um licenciado em informática. Têm que conhecer os paradigmas de programação que existem pelas valias que eles oferecem e não pelo facto da sua sintaxe ser mais ou menos acessível. Como me parece evidente que qualquer informático deve saber estruturas de dados e algoritmia. São as ferramentas base com que trabalhamos diariamente e por muito que as empresas queiram monos lá a trabalhar a “chapar” código têm que existir algo que diferencie esse mono de um pedreiro. Senão para que o canudo?

Mas e porque Haskell?
- É uma linguagem funcional. Os problemas são entendidos como problemas matemáticos, o que permite aos alunos quebrar com a pre-formatada ideia que programar é deve ser seguindo o paradigma imperativo.
- A maneira de pensar nesta linguagem é diferente. Dijkstra disse que “It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”. Aposto que ele diria o oposto sobre Haskell. É difícil ensinar mal alunos que começam por aprender/gostar de Haskell.
- Ao aprender os vários paradigmas o aluno torna-se mais versátil. Começando por Haskell certamente que não vai ver todos os problemas de uma forma imperativa. Esta forma diferente de pensar vai-lhe permitir, no futuro, a mais valia de saber escolher o método mais apropriado para resolver um problema que se depare no futuro. Pode na altura não usar Haskell mas vai-se lembrar dos mecanismos que aprendeu e da forma, correcta, que aprendeu para resolver problemas.
- As outras vantagens do Haskell: Esquema de recursividade extremamente simples, Strongly Typed, Lazy Evaluation, Elegância do código.
Atrevo-me até a dizer que podem dizer mal do Haskell em tudo que quiserem menos que é mau como ferramenta de ensino. Para isso, é simplesmente divinal.
Se quiserem ver uma melhor resposta a esta pergunta Why Haskell podem ler este artigo no Good Math, Bad Math. E caso queiram espreitar um pouco de código podem visitar (e rir-se um bocado com) este The Evolution of a Haskell Programmer.
Crescimento do emprego em Ruby
January 26, 2008
As coisas em Portugal costumam demorar a chegar ao ponto que estão nos states. Basta ver que a maioria das propostas que vejo por cá são em Visual Basic (hein?). De qualquer forma convido-os a ver estes gráficos a tirarem as vossas próprias ilações:

Ruby on Rails, PHP ou ASP.NET?

Será que alguma vez as empresas de portugal iram estar um passo a frente em vez de vinte passos atrás? Não me parece mas, uma pessoa pode sempre sonhar!
Microsoft Student Partner
October 7, 2007

Tenho que confessar que não contava escrever um artigo sobre a Microsoft no próximo século. Suponho que quem lê esta página acha que eu devo ser um fundamentalista- semi-taliban-anti-microsoft. É mentira. Programo em C# usando .NET e VSTO já à um ano e inclusivamente já o fiz profissionalmente para a MobiComp. No meu dia a dia uso Windows XP (copia original que me foi fornecida pela Microsoft por ser estudante de engenheira informática). O meu primeiro computador já corria DOS e depois tive um com o fantástico Windows 3.1 (mas já na altura eu preferia a consola :P).
Podem até dizer que ando amuado por causa do triste episódio que aconteceu quando me convidaram para ser MSP. É mentira e está provado já que até optei por não publicar o acontecido para não embaraçar ninguém.
Então vejam lá que na TakeOff o Vítor Santos da Microsoft fez algumas afirmações polémicas. Como tal tentou remediar pedidindo ao Alcides que cortasse o podcast de forma a omitir essas declarações., tendo este acedido ao pedido. O pessoal não gostou nada e contestou, mas não sei dizer se tiveram razão já que não tenho noção se as gravações estavam ou não prometidas antes da conferencia.
Passado uns meses eis que surge um novo Alcides MSP. Até aqui tudo normal já que a qualidade do Alcides enquanto estudante é muito acima da média considerando os estudantes que a Microsoft escolheu para MSP no ano transacto. E acreditem que nem querem saber qual é a média…
Depois eis que surge um post muito elaborado e igualmente contraditório no blog do Alcides sobre a validade (ou falta dela) do desenvolvimento em Open-Source. As afirmações dele pareceram-me ingénuas e infundadas, mas recusei-me a comentar até porque não me considero uma autoridade no assunto. Longe disso.
Agora vejo esta resposta a dar cabo do artigo dele. Cai-me o queixo ao chão. Os contornos da situação e da realidade da Microsoft Portugal mais parece um argumento de um filme Hollywoodesco. A empresa de Software que não produz software parece andar “por cá” apenas para fazer marketing e gerir os interesses da marca.
De volta aos carris
October 6, 2007
Estou a ler o livro Ruby in a nutshell do Yukihiro que é um dos dois únicos livros que a biblioteca da minha universidade tem sobre Ruby mas, infelizmente, não se apropria a um iniciante como eu. Então andava a aprender pelo help. Não acredito nessa do estuda rails e aprende assim Ruby.
A linguagem primeiro, a framework depois.
Só que existe um pequeno problema. Na biblioteca da Universidade do Minho existem tantos livros sobre Ajax como livros sobre Rails. ZERO!
Por sorte andava por entre o Twitter e o greader quando encontrei um livro para iniciantes em rails de graça! Nos próximos 58 dias quem quiser o livro Build Your Own Ruby on Rails Web Applications pode sacar-lo AQUI. Claro que a oferta apenas vale alguma coisa se o livro tivesse qualidade mas, ao que parece, tem. Pelo menos a ver pelas reviews que andei a ler.
OFF-TOPIC: Quem achar giro programar direct3D em .NET pode ler uma iniciação neste artigo.
UPDATE: Já estou a ler o livro e aviso desde já que a parte que ensina Ruby e OOP está medíocre. Leiam algo sobre Ruby antes de lerem este livro!
Life on the rails
September 23, 2007
I found Ruby in a talk with one of my friends. We were talking about how a problem that can be solved in Haskell in one line of code, could take hundreds to do so in Java or C#. It was obvious that, for some specific problems, Haskell was simpler and adequate.
Want a sample? Code permutation with n levels in C.
perms xs 0 = [[]]
perms xs n = [ p : ps | p <- xs, ps <- perms xs (n - 1)]
And like this he introduced me to Ruby on Rails. I was very thrilled to see a language that is dynamic, object oriented and adequate for web developing. I immediately thought about learning it, I just love learning new languages.
Today I checking my feeds and found a post about seven reasons to switch back to PHP (from Ruby).
It seems Ruby is like Haskell: the code looks greats and promises a lot, but it still doesn’t get where imperative languages do. (I’m still going to learn it, I just can’t resist it)
For now I’m waiting for a language that joins all that is good from imperative, functional, logic and object oriented paradigms.
If you know such programming language leave it as a comment.
|
PHP $61,000 |
|
|
Ajax $76,000 |
|
|
Ruby $70,000 |
|
|
Java $77,000 |
|
|
C# $78,000 |
|
|
Haskell $52,000 |
Software Engineer at Critical Software?
August 29, 2007
Last Monday I attended an job interview at Critical Software. Had some troubles finding tecmaia facilities and got there 30 minutes late! (I know, need a GPS)
They started the interview with some general questions about my background and the work I did at Mobicomp. Then a more technical part, where I was to respond (like if it was an exam) to some questions about object-oriented design, database, Threading, Linux, C++, XML, UML, mySQL. Then a final part of the interview was reached, where my psychological strengths were measured, and I was able to speak for myself and tell them what I like to do.
This is the second interview I’d been in since summer break, the first was at Edigma.com, but that one did not went so well. It’s a shame, as I feel I would be a very good addition to that team. I know the responsibility was not entirely mine, as the interview was very bad. Had no structure, they didn’t take a single note about what I said, they didn’t have a script to follow. I could continue this list as I feel strongly disappointed with them. Don’t get me wrong what they do is cool, but the recruiting process is not.




