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 <[email protected]>: >>>>>> "Ulisses-IBIZ" == Ulisses-IBIZ <[email protected]> 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: [email protected] > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > -- Tiago B. Peczenyj Linux User #405772 http://pacman.blog.br =begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
