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

Tiago Peczenyj tiago.peczenyj at gmail.com
Tue Apr 19 05:00:00 PDT 2011


Um detalhe sobre java: o unico caso de sobrecarga de operadores
aconteceu com o + na classe String, para concatenação.

Entretanto com o autoboxing e generics (que são casts por debaixo dos
panos) eu não vejo pq não ter algo como sobrecarga de operadores
trocando o + por um metodo add, por exemplo (assim como extension
methods). Mas como foi dito, é design da linguagem evitar isso, assim
como vc pode evitar sobreescrever algo com a palavra reservada final.
Felizmente C# suporta \o/

2011/4/19 Eden Cardim <edencardim at gmail.com>:
>>>>>> "Ulisses-IBIZ" == Ulisses-IBIZ  <ulisses at 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/
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


More information about the SaoPaulo-pm mailing list