[SP-pm] contras do JSON was: Re: Logar access.log do Squid no Mysql usando File::Tail
Luis Motta Campos
luismottacampos at yahoo.co.uk
Sun Aug 24 11:44:19 PDT 2008
Oies, Adriano. Isto está ficando bom :)
Luis Motta Campos wrote:
>> Calminha aí. Não força a barra. Apenas por que uma linguagem parece
>> com a outra, você não pode sair trocando de compilador assim, sem
>> mais nem menos, e esperar que as coisas "simplesmente funcionem".
>> Não tem mágica.
Adriano Ferreira wrote:
> "YAML is JSON" by why (o autor do YAML.rb, que é parte da
> distribuição padrão Ruby e da biblioteca Syck)
> http://redhanded.hobix.com/inspect/yamlIsJson.html
Eu acho que este cara está falando "use YAML", não o contrário.
E eu não vi uma demonstração aceitável para a compatibilidade do parser.
Ser um subconjunto é condição necesssária mas não suficiente, lembre-se.
De qualquer forma, é bom saber que dá para resolver boa parte dos casos
com YAML, ao invés de usar JSON.
> "JSON Closer to YAML, But No Cigar (Thanks Alot, Whitespace!) " by
> why
> http://redhanded.hobix.com/inspect/jsonCloserToYamlButNoCigarThanksAlotWhitespace.html
>
>
Este post já aponta mais um problema:
<quote>
However, another minor difference has been found. In JSON structures,
the colon and comma need not be spaced out between items in a
collection. In YAML, they do. Observe:
# valid JSON, also valid YAML
{"nick": "Philarp Tremaine", "rank": "infantry",
"badge": "orange-striped, syrup-scented"}
# valid JSON, not valid YAML
{"nick":"Philarp Tremaine","rank":"infantry",
"badge":"orange-striped, syrup-scented"}
YAML requires the space after each colon or comma. This is because YAML
supports commas and colons in plain, unquoted strings.
</quote>
O que na realidade suporta a minha afirmação de que JSON não é YAML. ;)
> JSON on the Web, or: The Revenge of SML by Simon St. Laurent
> http://www.xml.com/pub/a/2006/07/05/json-on-the-web-or-the-revenge-of-sml.html
>
>
"It's a subset of YAML, as it turns out. Well, not a perfect subset at
first, but with the departure of JavaScript comments, it's very close.
JSON can be a perfect subset of YAML, if colons and commas are followed
by spaces."
Este cara e o cara antes dele concordam comigo: JSON é *quase*, mas *só
quase* um subconjunto de YAML. Assim, eu mantenho a minha afirmação:
JSON não é YAML.
> e uma penca de outras referências que podem ser encontradas com uma
> busca por "json subset yaml" no bom e velho Google.
Bom, se você lesse as referências, ia entender que isso é o contrário do
que você estava tentando afirmar. Mas obrigado, acho que o meu ponto
está bem ilustrado, agora.
> Presta atenção que não é mágica -- foi proposital a eliminação de
> algumas "features" do JSON (como comentários /**/ e aspas simples)
> para encaixá-lo como subconjunto do YAML.
OK, eu te dou esta - eu aprendi isto lendo novamente as referências dos
textos que você apontou.
> (...) eu prefiro a versão YAML para ler, do que a sopa de chaves e
> aspas do JSON.
Bom, a gente concorda neste ponto, então. Ótimo. :)
>>> Quando o YAML foi criado, propositalmente foram criados pontos de
>>> contato entre Python, JavaScript e Perl. Por exemplo, (1) a
>>> relevância de indentação como em Python, (2) sintaxe "chave:
>>> valor" como em Python, JavaScript e os cabeçalhos de mensagens de
>>> e-mail como definido em algum RFC que eu não sei o número nem o
>>> link, (3) mil e umas opções de "quote" inspiradas no TIMTOWTDI e
>>> sintaxe do Perl.
>>
>> Desculpa, meu caro, mas eu não consigo encontrar referências para
>> suportar esta afirmação na documentação do YAML. Quer por favor me
>> apontar para elas?
>
> Porque você não consegue encontrar, não significa que não existam.
Isso é verdade. Foi por isso que eu te perguntei, não quis ser irônico.
Por favor me desculpe se foi isso que pareceu.
> Lembro de ter lido há um bom tempo estas afirmações nas palavras dos
> próprios autores de YAML: Oren Ben-Kiki, Clark Evans e Brian
> Ingerson (hoje conhecido como Ingy döt Net). Como eu não procurei o
> bastante, no momento só tenho algumas referências de segunda mão
> como:
>
> Look Ma, No Tags By Kendall Grant Clark http://www.xml.com/lpt/a/1005
>
> "As for YAML's other influences, section 1.2 of the specification
> generously exhibits them. Python fans will be happy to note that it
> uses whitespace as a block delimiter. It also steals ideas from MIME,
> HTML, XML and SOAP, including aliasing, application-specific types,
> and a namespace mechanism which is part Java package naming and part
> XML URI-based namespace naming. But perhaps the biggest influence on
> YAML is Perl -- which I, as a Python devotee, had to learn not to
> hold against it! -- especially in the way YAML conceptualizes data
> structures and types, which it distinguishes into scalars, like
> integers and strings, and collections, like hashes and arrays."
>
> que na verdade aponta que estas afirmações podem ser encontradas na
> própria especificação YAML. Aqui: http://yaml.org/spec/1.2/#id2507330
>
Lamento, mas eu acho que o que está infeliz na tua afirmação é a
expressão "pontos de contato". Copiar notação de outras linguagens não é
"estabelecer contato" com elas. Estabelecer contato com elas é tentar
aproveitar funcionalidades já existentes nas linguagens, como por
exemplo JSON tenta fazer com Javascript.
Lamento, mas foi apenas agora que eu compreendi o que você estava
querendo dizer com "pontos de contato".
>> Por favor, não confunda "simples" com "simplório". JSON é simplório
>> - não foi criado para ser uma linguagem de representação de dados,
>> foi criado como um recurso de geração de código JS para
>> representar uma determinada estrutura de dados em memória. É a
>> implementação de Data::Dumper em Javascript, para traçar um
>> paralelo meio tosco.
>
> Chamar JSON de simplório não contribui para o fato de que hoje muitos
> 'frameworks' utilizam-o como meio de comunicação em aplicações web
> entre o servidor e o cliente (muitas vezes na forma de scripts Ajax).
> Simples ou simplório, o uso que se faz hoje de JSON faz desta
> tecnologia uma estória de sucesso, que não pode ser facilmente
> ignorada por alguém trabalhando no nicho onde o JSON tem este
> sucesso.
(Você é da velha guarda, mas "estória" caiu em desuso depois da reforma
da língua em 1990 - eu fiquei curioso para saber a sua idade, mas este é
o tipo de conversa que a gente pode ter na mesa do bar, ou, pelo menos,
em privado)
Não. Chamar JSON de simplório na verdade denigre o uso que se faz hoje.
E não, eu não acho que ter muita gente usando signifique que seja uma
coisa boa: cito como exemplos os casos clássicos do VHS e do Windows,
duas porcarias vendidas em massa para o público ignorante e sedento por
"tecnologia" acessível.
Meu papel aqui não é assentir com os padrões pré estabelecidos, mas
questioná-los e fazer as pessoas pensarem sobre por que elas usam XML,
JSON e outras porcarias, quando elas tem acesso a coisas melhores. Não
tenho a pretenção de que as pessoas parem de usar estas tecnologias tão
cedo, mas eu não vou deixar de fazer o meu papel de analista e crítico
por causa disso.
Por favor não me leve à mal, Adriano. :) Você foi muito bacana,
respondendo à mensagem com tanto cuidado. Obrigado pelo seu interesse e
pelas coisas que você me motivou a aprender para continuar este
argumento com você. Vamos fazer isso mais vezes.
Putamplexos.
--
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.
More information about the SaoPaulo-pm
mailing list