Google abre código do Protocol Buffers
“Já é sabido que o Google considera C++, Python e Java como linguagens oficiais de desenvolvimento. E dado o número de projetos deles, é de se esperar que sistemas escritos em linguagens diferentes tenham que conversar entre si.
Como eles gostam de desenvolver toda a pilha de software deles, obviamente o protocolo de IPC não poderia fugir à regra: eles criaram o Protocol Buffer. Resumindo: Protocol Buffers define um formato de descrição de dados que pode ser compilado e utilizado por programas em diversas linguagens. Uma espécie de IDL de Corba, versão Google. E daí a pergunta que não quer calar: por que não IDL? Segundo eles, por questões de simplicidade. Esta biblioteca foi liberada para opensource, e pode ser encontrada em http://code.google.com/apis/protocolbuffers/docs/overview.html.”
Enviado por Miguel Galves (mgalvesΘlog4dev·com) – referência (google-opensource.blogspot.com).
Porque nao IDL?
Primeiro porque IDL eh uma grande ideia complexa e ruim de utilizar na pratica. Sendo complexa, mais sujeita a erros de implementacao e requer mais recurso computacional para gerar e ler as mensagens.
Porque nao XML?
Porque eh lento e ruim para ler o conteudo das mensagens.
Entao, resta fazer uma linguagem simples, tanto de definir as mensagens, enviar, ler e acima de tudo eficiente.
Legal. E por que não JSON, ou YAML? São simples e eficientes, sendo que YAML tem uma especificação e possui implementação em várias linguagens: Python, Java, Ruby, Javascript, etc.
Defina eficiente.
YAML sucks.
E por que não JSON, ou YAML?
Será que quando o Google criou esse Protocol Buffers esses outros projetos já existiam?
O grande problema dos formatos YAML e JSON é que eles não têm maneiras eficientes de declarar o formato e tipos de dados das mensagens.
Esse Protocol Buffer foi adotado certamente por permitir a criação de algo parecido com o XML Schema.
Enfim, tudo depende da adoção da tecnologia. Não adianta ser bom se ninguém além do Google usar.
Usem o protocolo que eu criei. Não gostamos disso, lembram? Isso é uma prática que uma outra empresa faz, uma empresa que ninguém gosta.
XML, YAML, JSON já estão aí. Foram projetados por muitos e hoje é adotado por muitos e implementados em uma grande variedade de linguagens, frameworks e ferramentas.
Dei uma olhada no Protocol Buffers, achei bem parecido com JSON e YAML.
Silveira,
Só esqueceu a “pequena” diferença… o Google libera o que faz como Software Livre, no caso, Apache 2 a Licença.
E nao obriga ninguem a usar e muito menos diz que eh um padrao.
“E não obriga ninguem a usar e muito menos diz que eh um padrao.”
O problema é que essa outra empresa pelo tamanho do mercado automaticamente torna-se um padrão de fato.
“O problema é que essa outra empresa pelo tamanho do mercado automaticamente torna-se um padrão de fato.”
Mesmo assim cabe a cada um decidir se vai usar ou não.
É não sei se JSON se aplica a programação distribuída, (escalabilidade, performace e segurança) e além disso não vejo uma forma de executar JSON em uma linguagem estática como C++, se não me engane C++ não tem algo parecido com eval do JScript, mas concordo que a IDL é difícil de entender e de ser escrever tb, mas acho que seria mais interessante desenvolver algo como um construtor de códio IDL seria mais simples. YAML esta mais para concorrente do XML do que de uma especificação de API para programação distribuída.