Faz algum tempo comecei este post, mas nao tinha tido a inspiracao para terminar. O post anterior, sobre a comparacao entre recursos de linguagens "funcionais" modernas e de linguagens orientadas a objeto serviu como estopim para terminar de escrever.Para quem trabalha com programacao usando variantes de ML e/ou Miranda, a fatidica pergunta "que linguagem(ns) voce usa?" costuma ser um tiro no escuro. A resposta dificilmente e conhecida, na maioria dos casos: O'Caml e Haskell, mesmo sendo as mais conhecidas, sao bem pouco utilizadas fora da academia.Logo, voce se depara com o classico ponto de interrogacao, que aparece no rosto da pessoa. Para esclarecer o que voce esta falando, a tentacao inicial e classifica-las como linguagens funcionais, preferencialmente atribuindo tambem o adjetivo "modernas" - ja mantendo no engatilhadas as respostas para quem diz "sim, sei, que nem LISP". Entretanto, classificar como uma linguagem funcional e muito comum: se voce perguntar para qualquer programador de Haskell o que e a linguagem que ele usa, a resposta e essa. Alguns irao se extender um pouco mais, dizendo que e "fortemente tipada", e outros ate vao falar em "lazy".Entretanto, mesmo que o ponto principal de Haskell ou de O'Caml seja o paradigma funcional, o que faz delas linguagens flexiveis ou modulares nao e o fato de serem funcionais, e sim a combinacao dos recursos que elas oferecem. Tipagem forte e estatica, tagged unions, pattern matching, inferencia de tipos, type classes (no caso da segunda), funtores (no caso da primeira), tipagem algebrica, e outros tantos features que sao igualmente importantes para a modularidade e aplicacao real da linguagem.Faz algum tempo que li um post nao diretamente relacionado com o assunto em questao, mas que me levou a pensar sobre a sinergia nestas linguagens de programacao, e enxergar as suas grandes vantagens como um resultado direto da combinacao dos seus recursos. E no fundo, esta e a grande vantagem delas: a facilidade que o programador possui para se expressar atraves da combinacao dos diversos recursos que elas oferecem. Talvez esteja na hora de redefinir o adjetivo "moderno" na area das linguagens de programacao, ou encontrar um novo para descrever esta gama de linguagens realmente modernas, que esta anos-luz a frente das classicas imperativas-OO.E e isso. While reading about RMS leaving Emacs administration, I found some comments which came to my attention - specially the ones which talked about him using vi for text editing.One thing I've never understood, and which I still find everywhere, was this 'emacs x vi' cold war, in which there is a lot of regilious arguments for defending or atacking each text editor. And the battle automatically exclude any other text editor, using readly made phrases like "your text editor cannot erase interlaced lines!" or "you cannot debug your programs using this!", confusing people into thinking that a text editor should really have this features.In my little experience of almost 10 years using GNU/Linux, I've tried different text editors from console and X environments: vim, jed, joe, emacs, pico, nano, mcedit, gedit, kwrite, kate, notepad, and others. In all these cases, vim and emacs