Comments on: Construindo Expressividade com Linguagens Elegantes http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/ Software e Batatas Fri, 06 Jan 2012 20:36:55 +0000 http://wordpress.org/?v=2.7.1 hourly 1 By: pcalcado http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/comment-page-1/#comment-61965 pcalcado Mon, 17 Sep 2007 19:59:18 +0000 http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/#comment-61965 Kenobi, pense de quantas maneiras diferentes você dá liberdades perigosas para um programador pedindo para ele simplesmente implementar uma action do Struts (ou coisa que o valha). Imagine que ele acabou de ler um artigo sobre classloaders customizados e teve idéias... interessantes... Kenobi, pense de quantas maneiras diferentes você dá liberdades perigosas para um programador pedindo para ele simplesmente implementar uma action do Struts (ou coisa que o valha). Imagine que ele acabou de ler um artigo sobre classloaders customizados e teve idéias… interessantes…

]]>
By: Felipe Kenobi http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/comment-page-1/#comment-61493 Felipe Kenobi Sat, 15 Sep 2007 13:00:53 +0000 http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/#comment-61493 O problema está em dar liberdade demais a programadores que não possuem nenhuma consciência, então parte do projeto fica de uma forma e a continuação pode virar um CAOS. Fico em dúvidas, acho o recurso interessante, mas á malefícios com isso também . O problema está em dar liberdade demais a programadores que não possuem nenhuma consciência, então parte do projeto fica de uma forma e a continuação pode virar um CAOS.

Fico em dúvidas, acho o recurso interessante, mas á malefícios com isso também .

]]>
By: pcalcado http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/comment-page-1/#comment-56732 pcalcado Tue, 31 Jul 2007 22:47:55 +0000 http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/#comment-56732 Acho que você não entendeu o ponto principal do post. Quando você tem uma linguagem extensível o manual da linguagem não vai te dizer o que fazer neste caso. <blockquote> Simples. Em Ruby não existem operadores, pelo menos não como você está acostumado em Java, operadores são apenas apelidos para métodos. A vantagem disso é que se muda o modelo mental, a partir do momento que você sabe que um operador e um método são a mesma coisa você tem com operadores o mesmo cuidado que tem com métodos. Ao chamar add() do BigDecimal você tem que saber se o método vai retornar o resultado como um objeto separado, se vai modificar os objetos passados como parâmetros, etc. Como você faz isso? Lendo a documentação até se familiarizar com a classe e seu idioma. Após familiarizado você começa a usar sem pensar. </blockquote> Passe a pensar em operadores como métodos e não há mais problemas. Qual 'manual' te diz o que o método String.split() faz? É este mesmo manual que te diz o que o método String.+ faz. Se o autor não seguir princípios básicos da orientação a objetos como Liskov você vai ter muito mais problemas que isso. Se a pessoa não obedece o contrato de um método chamar qualquer método, seja ele um operador ou não, é perigoso. Em suma: suas observações derivam do fato de que você considera operadores e métodos como coisas diferentes. Em Java é assim, em C# é assim mas a propsota das plataformas dinâmicas (muitas mais velhas que Java ou C++) é se livrar deste pensamento. Acho que você não entendeu o ponto principal do post. Quando você tem uma linguagem extensível o manual da linguagem não vai te dizer o que fazer neste caso.

Simples. Em Ruby não existem operadores, pelo menos não como você está acostumado em Java, operadores são apenas apelidos para métodos. A vantagem disso é que se muda o modelo mental, a partir do momento que você sabe que um operador e um método são a mesma coisa você tem com operadores o mesmo cuidado que tem com métodos. Ao chamar add() do BigDecimal você tem que saber se o método vai retornar o resultado como um objeto separado, se vai modificar os objetos passados como parâmetros, etc. Como você faz isso? Lendo a documentação até se familiarizar com a classe e seu idioma. Após familiarizado você começa a usar sem pensar.

Passe a pensar em operadores como métodos e não há mais problemas. Qual ‘manual’ te diz o que o método String.split() faz? É este mesmo manual que te diz o que o método String.+ faz.

Se o autor não seguir princípios básicos da orientação a objetos como Liskov você vai ter muito mais problemas que isso. Se a pessoa não obedece o contrato de um método chamar qualquer método, seja ele um operador ou não, é perigoso.

Em suma: suas observações derivam do fato de que você considera operadores e métodos como coisas diferentes. Em Java é assim, em C# é assim mas a propsota das plataformas dinâmicas (muitas mais velhas que Java ou C++) é se livrar deste pensamento.

]]>
By: Fábio http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/comment-page-1/#comment-56719 Fábio Tue, 31 Jul 2007 15:44:54 +0000 http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/#comment-56719 >> ...Se amanhã eu puder sobrescrever o operador + para que escreva algo na tela você vai se surpreender porque não era isso que o manual da linguagem te disse... >> E quando você espera estar lidando com uma classe que sobrescreve um operador e na verdade recebe como parâmetro uma subclasse dela? Sem problemas! Se o autor seguiu os princípios básicos da Orientação a Objetos... >> …Se amanhã eu puder sobrescrever o operador + para que escreva algo na tela você vai se surpreender porque não era isso que o manual da linguagem te disse…
>> E quando você espera estar lidando com uma classe que sobrescreve um operador e na verdade recebe como parâmetro uma subclasse dela? Sem problemas! Se o autor seguiu os princípios básicos da Orientação a Objetos…

]]>
By: pcalcado http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/comment-page-1/#comment-56675 pcalcado Mon, 30 Jul 2007 18:25:42 +0000 http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/#comment-56675 Quais problemas, Fábio? Quais problemas, Fábio?

]]>
By: Fábio http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/comment-page-1/#comment-56655 Fábio Mon, 30 Jul 2007 11:34:37 +0000 http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/#comment-56655 Operadores também são métodos em C++ e nem por isso evitaram os problemas. Operadores também são métodos em C++ e nem por isso evitaram os problemas.

]]>
By: Rodrigo Yoshima http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/comment-page-1/#comment-56618 Rodrigo Yoshima Sun, 29 Jul 2007 04:38:37 +0000 http://philcalcado.com/2007/07/27/construindo-expressividade-com-linguagens-elegantes/#comment-56618 Estou trabalhando em projetos C# agora e aquela funcionalidade de definir uma classe "partial" é uma aberração que eles colocaram na sintaxe por motivos puramente da IDE deles. Não dá pra levar a Microsoft a sério desse jeito. Estou trabalhando em projetos C# agora e aquela funcionalidade de definir uma classe “partial” é uma aberração que eles colocaram na sintaxe por motivos puramente da IDE deles. Não dá pra levar a Microsoft a sério desse jeito.

]]>