[SP-pm] [OT] Apresentação

Eden Cardim edencardim at gmail.com
Tue Apr 19 01:19:58 PDT 2011


>>>>> "Ulisses-IBIZ" == Ulisses-IBIZ  <ulisses em ibiz.com.br> writes:

    Ulisses-IBIZ> um cara de talento é um bom resolvedor de problemas: identifica-o, separa o joio do trigo e aplica a elegancia da simplicidade (ou a simplicidade da
    Ulisses-IBIZ> elegancia) para resolve-lo. Isso ele faz em Perl, Java, C, Python .... Claro, cada linguagem facilita mais a vida do programador (que prefiro charmar de
    Ulisses-IBIZ> designer). Perl é uma mão na roda que te permite, muitas vezes, desenvolver N vezes mais rápido que em outras linguagens, mas.... vai de gosto.
 
    Ulisses-IBIZ> primeiro o cara precisa ter fluencia de pensamento e depois na linguagem que escolheu para 'resolver' o problema que se apresenta.

Pois é, mas algumas linguagens aleijam até o melhor dos pensadores em
alguns aspectos. Por exemplo, em java uma simples equação de Bhaskhara
implementada com bignums vira isso:


--8<---------------cut here---------------start------------->8---
((b.pow(2) - (a.multiply(b)).multiply(4)).sqrt).divide(2)
--8<---------------cut here---------------end--------------->8---

porque java não tem sobrecarga de operadores, por design.

E como sempre, o caso do quicksort em haskell que eu sempre costumo usar
de forma ilustrativa:

--8<---------------cut here---------------start------------->8---
quicksort [] = []
quicksort (s:xs) = quicksort [x|x <- xs,x < s] ++ [s] ++ quicksort [x|x <- xs,x >= s]
--8<---------------cut here---------------end--------------->8---

Além de ser mais curta, objetiva e mais próximo do que se aprende na
escola do que qualquer outra função em qualquer outra linguagem
não-funcional, funciona com qualquer tipo de dado que implemente os
operadores '<' e '>='. O Java, logo de cara, não consegue fazer,
novamente porque falta a sobrecarga. Em C também não dá, em C++ você
consegue se (ab)usar de templates. Em alguma linguagem dinâmica como
perl ou python, você faz algo similar, mas nunca vai ser tão rápido
quanto a implementação em haskell (a propósito, essa implementação aí em
cima não é a melhor possível), porque compila direto pra binário, não é
interpretado.

Resumindo, a depender do problema, tem linguagens que vão ser bastante
melhores do que outras.

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/


More information about the SaoPaulo-pm mailing list