[SP-pm] Duvida primaria

Nilson Santos Figueiredo Jr. acid06 at gmail.com
Thu Oct 21 08:31:24 PDT 2010


2010/10/21 Eden Cardim <edencardim at gmail.com>:
> Nesse caso o given/when perde mais feio ainda porque pode-se aplicar
> currying e não fazer lookup algum durante a construção da closure, e
> isso porque o switch só tem dois casos de branching nesse seu exemplo,
> com mais casos é mais feio ainda. Além de que a versão com currying tem
> a vantagem de que pode-se invocar $dispatch->{$style}->($content) de
> qualquer ponto do código sem ter que passar inutilmente pela
> verificação. A subrotina gerada vai ter um overhead um pouco maior do
> que a versão gerada com given/when porque perl não é puramente funcional
> então não dá pra aplicar as otimizações que se aplicariam nesse caso,
> mas aí é outra questão. Eu continuo enfatizando a legibilidade,
> particularmente, acho a versão com curry mais legível.

Acho que agora essa discussão virou algo de opinião mesmo. A
performance do switch é melhor na execução, como você mesmo mostrou. A
legibilidade é subjetiva.

Acho que depois que eu passei a estudar Haskell, paradoxalmente, eu
passei a gostar menos os recursos funcionais de Perl, talvez porque a
sintaxe de Haskell simplesmente seja muito melhor pra códigos
funcionais (o que é razoável). Então às vezes passa um pouco a
sensação de estar usando código "OO" em C, ao invés de programar em
C++.

Eu considero o código com switch mais legível, apesar de eu mesmo nem
ter me acostumado ainda a usar o given/when, mas acho que fica mais
palatável, principalmente se um leigo tiver de ler o código depois.

Enfim, considero que o importante dessa discussão foram as
curiosidades descobertas específicas de Perl relativas à performance
(mesmo que todos saibamos que na prática, normalmente, a performance é
perdida em outros pontos). Por exemplo, em C/C++, quando você faz um
switch/case simples o compilador provavelmente vai conseguir otimizar
aquilo pra uma jump table, então vai ser mais eficiente que quase
qualquer outra coisa.

-Nilson


More information about the SaoPaulo-pm mailing list