DSL - Sintaxe da linguagem com Internacionalização - Viável?

O problema é o seguinte:
Hoje em dia, em alguns casos para deixar a DSL com um entendimento mais fácil utilizando Ruby (E até onde eu sei em todas as linguagens) é preciso abrir uma classe e adicionar um método traduzido que faça delegação para o método em inglês.

Séra que seria viável que alguma linguagem tivesse internacionalização na sintaxe para facilitar a criação de DSLs internas, como é feito hoje utilizando Ruby ? Acredito ter algumas implicações de performance talvez ou algo do tipo, mas fica ai o questionamento.

Talvez exista alguma coisa que eu não conheço ainda.

Na verdade isso não é um problema trazido pelas DSL’s.

Mas sim sobre aquele velho emaranhado de códigos inglês/portugues dentro de uma aplicação.
Algumas empresas padronizam isso(ou seja, tudo inglês), mas nem sempre é simples assim.

Apesar dos pesares, eu realmente acreditar que em língua materna a coisa fica mais legível, porém acho que a solução(ou a melhor delas) para isso é trabalhar com inglês mesmo, afinal o inglês já virou necessidade básica da TI.

Logo, não viável.

Mudando de assunto, quanto a performance não deve ter relevância alguma.

Diga isso para uma Corporação onde especialistas que tratam do negócio não tem o inglês como necessidade para fazer bem seu trabalho. :smiley:

Posso saber baseado em que ? :?

[quote=emerleite]
Diga isso para uma Corporação onde especialistas que tratam do negócio não tem o inglês como necessidade para fazer bem seu trabalho. :smiley: [/quote]
Ai fica complicado. :smiley:
Nesse caso prefiro continuar no portuenglish.

Como eu disse acima, apenas opinião pessoal.
Digo, vai pegar toda a core API de uma linguagem e traduzi-la ? Isso eu acho inviável.
Repito, opinião pessoal.

Qual o seu ponto de vista quanto a isso ?? Acha viável ?

Bem, foi por isso que eu criei o tópico heheheh. Na verdade ainda não sei, até porquê desconheço alguma linguagem que tenha esse recurso.

O Compilador teria que carregar os construtos da linguagem de um arquivo i18n da vida antes de começar o trabalho. Não sei em que nível de complexidade isso chegaria, mas seria interessante. A verdade é que se eu estivesse nos EUA desenvolvendo pra empresas que tem o inglês como main language, talvez não teria nem pensado sobre o assunto.

[quote=emerleite]
O Compilador teria que carregar os constructos da linguagem de um arquivo i18n da vida antes de começar o trabalho. [/quote]
A… isso sim deve ter um impacto grande… :smiley:

Não consegui entender o que você quer nem como DSL ajudariam nisso.

" preciso abrir uma classe e adicionar um método traduzido que faça delegação para o método em inglês. "

Qual o “problema” (ou qual a solucao) em escrever estes em portgues?

Exemplo da própria linguagem (sem dsl):

Não seria melhor para o especialista se fosse:

Eu poderia adicionar um método chamado vezes à classe Fixnum delegando para times para ficar da forma que eu quero e por ai vai (Isso que eu quis dizer com abrir a classe). Mas imagina fazer isso toda vez que eu precisar.

Se esse código não estiver inserido num contexto de uma DSL realmente não faz sentido algum pois o desenvolvedor tem que saber, mas para o especialista ficaria mais fácil.

Por isso a questão da linguagem ser internacionalizável. Pode ser uma viagem completa da minha cabeça, mas é chato ter que conviver com isso.

Phillip,

Resolvi montar um exemplo bem básico porém executável da forma que tenho que implementar sempre.

[code]module Kernel
define_method(:imprime, instance_method(:puts))
end

class Fixnum
define_method(:vezes, instance_method(:times))
end

10.vezes {|numero| imprime numero}
[/code]
Reafirmo que sem estar montando uma DSL não vejo valor algum em fazer isso, pois o programador tem que conhecer. Mas pensando na criação de uma DSL, fatalmente é necessário fazer isso, pelo menos aqui no brasil.

Agpra imagine que esses métodos (puts, times) pudessem ter internacionalização. Seria interessante, não? Mas o motivo todo do tópico é saber se é viável implementar uma linguagem de programação com suporte a isso, por exemplo o Ruby em português.

Viável sempre é, o problema é que vai ser muito difícil de se conseguir internacionalizar tudo. Acho que no contexto de uma DSL pequena que vai ser usada pra simplificar a vida de um usuário não tão leigo assim pode até ser, mas pra programar de verdade eu acho muito complicado.

É trabalho demais.

Ah tá, entendi.

Então, este é o problema de escrever código em português. Não conheço nenhuma linguagem da atual geração que vá ter uma resosta para isso. O problema não é a linguagem em si e sim milhares de bibliotecas que você deveria traduzir.

Se isso realmente for um problema, dado que numa DSL o escopo (e por consequência o métodos chamados) são poucosnão deve ser tão ruim criar apenas versões traduzidas dos métodos e classes que você vá usar. Só lembre que DSL != linguagem natural.

Pois é, imaginei que não houvesse nada do tipo para ajudar nesse problema. Talvez teria alguma economia de código.

Mas pensando pelo lado que você falou, pode ser que isso não faça muita diferença. Como ainda estou estudando sobre o assunto e não fiz nada profissional concreto, não enfreitei os problemas ainda pra saber como resolverei, mas da pra ter uma idéia.

Quanto a DSL != linguagem natural, sua preoculpação é absolutamente válida, pois tenho visto muita gente confundir as duas coisas. Apesar de estar iniciando em DSLs, este conceito nunca esteve distorcido na minha cabeça.