Allen Holub: Say No To XML (As Programming Language); I Agree Allen Holub: dizer não ao XML (como Linguagem de programação); Concordo
Allen Holub (Author of Compiler Design in C and famous OO Guru) said: “XML is perhaps the worst programming language ever conceived. Allen Holub (Autor do Compilador C em Design e guru famoso OO) disse: "XML é talvez o pior programação língua cada vez concebida. I’m not talking about XML as a data-description language, which was its original design. Não estou a falar de dados XML como uma linguagem de descrição, que era o seu desenho original. I’m talking about perverting XML for programming applications. Eu estou falando de perverter XML para a programação de aplicações. It’s inappropriate to use XML as a scripting language (eg, ANT), a test-description language (eg, TestNG), an object-relational mapping language (eg, Hibernate, JDO), a control-flow language (eg, JSF), and so forth. É impróprio para uso como uma linguagem XML (por exemplo, ANT), um teste de língua designação (por exemplo, TestNG), um mapeamento objeto-relacional língua (por exemplo, Hibernate, JDO), um controle de fluxo língua (por exemplo, JSF), e assim por diante. These sorts of XML “programs” are unreadable, unmaintainable, an order of magnitude larger than necessary, and audaciously inefficient at runtime.” Esses tipos de XML "programas" são ilegíveis, sem manutenção, uma ordem de grandeza maior do que necessário, e audaciously ineficiente no decorrer do processo. " Link
He surmised that the tendency to use xml for these tasks is simply because people either don’t want to create a compiler or are inacapable of creating one. Ele surmised que a tendência de usar xml para estas funções é, pura e simplesmente porque as pessoas não querem nem para criar um compilador ou estão inacapable de criar um. I agree with him. Concordo com ele. Most of the time people use XML because it is easy to parse XML, so who cares how long it takes for people to create these xml documents in the first place. A maior parte das vezes as pessoas usam XML, porque é fácil de ser interpretador XML, de modo que cuida quanto tempo leva para que as pessoas criam esses documentos XML, em primeiro lugar. Look at Hibernate for an example. Olhe para Hibernate, por exemplo. It is XML hell. É XML inferno. EJB 2 was another example. EJB 2 era outro exemplo. Jelly was probably the worst example and I don’t like JSTL that much either. Jelly foi provavelmente o pior exemplo e eu não gosto muito JSTL que quer.
Then he goes on to define the basic qualifications of a programmer, he said something which is close to my heart: Então ele passa a definir as qualificações básicas de um programador, ele disse algo que está perto de meu coração:
“This list includes a deep understanding of data structures and key algorithms, a little math (set theory, logic, a little statistics), mastery of analysis-and-design techniques, both process (eg, RUP or XP) and structure (eg, design patterns), and database structure and use (eg, SQL). "Essa lista inclui uma profunda compreensão das estruturas de dados e algoritmos-chave, um pouco de matemática (teoria de conjuntos, lógica, um pouco de estatísticas), o domínio de análise-e-design técnicas, tanto processo (por exemplo, RUP ou XP) e estrutura (por exemplo: , Padrões de projeto), ea base de dados estrutura e uso (por exemplo, SQL). You also need to know how the hardware works.” Você também precisa saber como funciona o hardware. "
Designing compilers is hard. Projetando compiladores é difícil. Today it is rare to see people designing compilers for their software. Hoje em dia é raro ver as pessoas projetar compiladores para seu software. They use XML or simple property files. Eles usam arquivos XML ou simples propriedade. Also, as he mentioned, it is hard to get books on compiler design. Além disso, como ele referiu, é difícil obter compilador livros sobre design. The best Java software to design compiler is A melhor software para desenho compilador Java é JavaCC , which was by an ex-Sun employee, who later went on to found MetaMata in the dotcom boom era. , Que foi por um ex-empregado Sun, que mais tarde passou a encontrar MetaMata dotcom boom na época.
He misses one vital point. Ele perdeu um ponto vital. Somewhere down the road it has unfortunately become a marketing bullet point to mention that your software uses XML for configuration. Algures no caminho que tem infelizmente tornar-se um ponto comercialização de referir que o seu software utiliza XML para configuração.
Filed under Arquivado em Headline News Headline News , Java Software Java Software , Open Source Software Open Source Software , Technology Tecnologia | |
| |
RSS 2.0 RSS 2,0 | |
Trackback this Article | este artigo |
Email this Article E-mail este artigo
You may also like to read Você pode também gosta de ler |




September 27th, 2006 at 6:25 am 27 de setembro de 2006 em 6:25 am
Some geeks fantasize about being with hot and sexy girls, only to come home and meet the wife (if they have any) who is far from hot and sexy. Alguns geeks fantasize sobre ser a quente e sexy meninas, só para vir casa e satisfazer a mulher (se tiver alguma) que está longe de ser quente e sexy. That, my friend, is reality. Isso, meu amigo, é realidade.
Allen Holub lives in a fantasy world. Allen Holub vive em um mundo fantasia. In reality, there’s always deadlines to meet, profit to achieve. Na realidade, há sempre prazos a cumprir, para realizar lucros.
September 27th, 2006 at 7:14 am 27 de setembro de 2006 em 7:14 am
Wouldn’t it be more profitable in the long run to make your application easier to use, unless you also offer paid professional support services? Não seria mais rentável a longo prazo para fazer a sua aplicação mais fácil de usar, a menos que você paga também oferecem serviços de apoio profissional?
Creating compilers is hard for us but creating xml files aren’t easy for end-users. Criando compiladores é difícil para nós, mas criando xml não são fáceis para os utilizadores finais.
In my experience most of them are comfortable with Excel documents, complex xml is beyond them (obviously with exceptions). Na minha experiência, a maioria deles são confortáveis com Excel documentos, complexo xml está além deles (obviamente com exceções).
The downside of compilers is that they are not only harder to create but also harder for others to consume, unless you provide them with a parser too. A desvantagem de compiladores é que eles não são apenas para criar mais difícil mas também mais difícil para que outras pessoas possam consumir, a menos que você fornecer-lhes um parser também. We do however need a better solution than xml, especially for simple formats. No entanto, precisamos de uma solução melhor do que xml, especialmente para os formatos simples.
September 27th, 2006 at 10:07 am 27 de setembro de 2006 em 10:07
I got tired of doing “XML push-ups.” So I’m trying to focus my new development efforts on Ruby on Rails. Eu fiquei cansada de fazer "XML push-ups." Portanto, eu estou a tentar concentrar esforços no desenvolvimento minhas novas Ruby on Rails. XML? There is none. Não existe nenhum. Just YAML for configuration of database. Basta YAML para a configuração do banco de dados. Very nice! Very nice!
September 27th, 2006 at 10:29 pm 27 de setembro de 2006 em 10:29 pm
Yeah, maybe… Except a bad example (ok, problem with Ant, yeah, but it’s not like make is so easy to use, please, tabs, and spaces o my), and plugging his book with all the subtlety of a sledgehammer wasn’t too cool Sim, talvez… Exceto um mau exemplo (ok, problema com Ant, sim, mas não é como fazer é tão fácil de usar, por favor, separadores e espaços o meu), e conectando seu livro com toda a subtileza de um marreta não foi muito legal
September 29th, 2006 at 12:32 am 29 de setembro de 2006 em 12:32 am
I had read his book - “Compiler Design in C” and I think it is of very high quality. Eu tinha lido o livro - "Compiler Design em C", e penso que é de grande qualidade. So even if he is plugging his book, I think it is a good plug. Portanto, mesmo se ele está conectando seu livro, penso que é um bom encaixe.
Also everyone has their natural tendencies. Também toda a gente tem as suas tendências naturais. A compiler designer sees everything as a compiler design problem, a OO designer sees the world as object oriented and so on. Um compilador designer vê tudo como um compilador design problema, um designer OO vê o mundo como objeto orientado e assim por diante. Beyond all that I still see lots of merit in his arguments against ubiquitous use of XML as programming language. Para além do que eu continuo a ver todos os lotes de mérito em seus argumentos contra o uso de XML como omnipresente linguagem de programação.
March 5th, 2007 at 8:39 am 5 de março de 2007 em 8:39 am
I think, the author exaggerates a little. Penso, o autor exagera um pouco.
It is good that there is a simple format of configuration files. É bom que haja um simples formato de arquivos de configuração. XML is maybe verbose, but it is easy to learn. XML é talvez verbose, mas é fácil de aprender. And if everyone created a new format for each application, we would have to learn much more and it would take much more time. E se todos criou um novo formato para cada aplicação, teríamos muito a aprender mais e que levariam muito mais tempo. Do you remember sendmail configuration files? Lembram-se sendmail arquivos de configuração?
March 7th, 2007 at 11:00 am De 7 de março de 2007, às 11:00 am
Yes, I do remember sendmail as well as the make files Sim, eu lembro sendmail, bem como a fazer ficheiros
I think xml for plain configuration is ok but not as a programming language. Penso xml de configuração planície é ok, mas não como uma linguagem de programação. Ant is a case where xml is used as a programming language. Ant é um caso em que o XML é usada como uma linguagem de programação.
January 4th, 2008 at 4:25 am 4 de janeiro de 2008 em 4:25 am
I have often seen people creating programming languages using XML. Eu tenho visto pessoas muitas vezes criando programação usando linguagens XML. I think that XML was not meant for that and does not suit that purpose. Penso que XML não foi feita para isso e não satisfizer essa finalidade. Prove of that is XUL, Flex MXML or even XForms, that end up using Actionscript or Javascript to do the business logic. Prova de que é XUL, ou até mesmo Flex MXML xforms, que acabam usando ActionScript ou Javascript para fazer a lógica comercial. They use the XML part to layout the components and Actionscript or Javascript to do the serious work. Eles utilizam a linguagem XML para layout parte dos componentes e ActionScript ou Javascript para fazer o trabalho sério. These make sense, because when we are creating the forms, we are marking (or laying) our UI components. Estes fazem sentido, porque quando nós estamos criando as formas, estamos a marcação (ou construção) IU nossos componentes.
When I started playing with XML, I thought it was going to be a solution for writing quick languages. Quando eu comecei jogando com XML, pensei que iria ser uma solução rápida para escrever línguas. But, I came to the conclusion that XML is what it is: a markup language. Mas, cheguei à conclusão de que o XML é aquilo que é: uma linguagem de marcação. And it can be used for document design and for data design as well. E pode ser utilizado para fins de documento de concepção e design dados também. As for complex programming languages, I stick to writing compilers for them. No que diz respeito à complexa linguagens de programação, me ater a escrever compiladores para eles. The language becomes so much cleaner than XML. A linguagem torna-se assim muito mais limpas do XML.
Now, as for compiler writing being a hard, I just answer \\\”when people don\\\’t know how to use something, they always say it is difficult\\\” Agora, como, por escrito compilador a ser um duro, eu só resposta \ \ \ "quando as pessoas don \ \ \ 't know how para usar alguma coisa, eles sempre dizem que é difícil \ \ \"
It is not like in the old days whereby you would need loads of programmers to write a compiler. Não é como nos velhos tempos em que você necessitaria cargas de programadores de escrever um compilador. Today, a single programmer can put together a compiler, using current compiler frameworks, in a month. Hoje em dia, um único programador pode criar um compilador, usando o compilador atuais quadros, em um mês.
Nowadays, you don\\\’t have to write parsers by hand. Hoje em dia, você don \ \ \ 't tem que escrever a mão parsers. You can put together a parser for a configuration file in a day or two. Você pode colocar um analisador em conjunto para um arquivo de configuração em um ou dois dias.
Compiler writing was, in the old days, very laborious. Compilador foi escrito, nos velhos tempos, muito trabalhosa. Not anymore, because you have many frameworks that do half of the work for you. Nem mais, porque tem muitos quadros que fazer metade do trabalho para você. For instance, with JavaCC you can generate the lexer, the parser, the Abstract Syntax Tree using JJTree. Por exemplo, você pode gerar JavaCC com o lexer, o analisador, o Abstract Syntax Tree usando JJTree. And then, you just have write the semantic analyser, intermediate code generator, code optimizer and the code generator. E então, você só precisa escrever o analisador semântico, código intermediário gerador de código e otimizador o código gerador. But, that is very simple to do. Mas, isso é muito simples de fazer. It is similar to traversing XML nodes. É semelhante a nós percorrendo XML. I usually see it that way. Eu normalmente vê-la dessa forma.
Finally, I would like to mention that there is a compiler framework called SableCC, which is very easy to use. Por último, gostaria de referir que há um quadro chamado SableCC Compiler, que é muito fácil de usar. There is also an alternative based on SableCC, which allows us to write backend generators for other languages. Existe também uma alternativa baseada em SableCC, o que nos permite escrever backend geradores para outras línguas. I have written two backend generators: one for Python and one Actionscript. Já escrevi dois geradores backend: um para um e ActionScript Python. The Python one is in the public domain. A Python é uma parte do domínio público. The Actionscript one is still being used internally in my company. O ActionScript uma ainda está a ser utilizado internamente na minha empresa. But will, eventually, be released to the public domain. Mas será, eventualmente, ser liberado para o domínio público. We used the Actionscript backend to write a SPARQL parser for Adobe Flex, and to write a compiler for a programming language based on Daplex. Nós usamos o ActionScript backend para escrever um parser para SPARQL Adobe Flex, e de escrever um compilador para uma linguagem de programação baseada em Daplex. Well, we call it a framework, because it does more than generating database code. Pois bem, nós chamamos-lhe um quadro, porque ele faz mais do que gerar códigos de dados. It generates web applications that target PHP, Java, C# with either Ajax or Adobe Flex front ends. Gera aplicações web que a meta PHP, Java, C #, quer com Ajax ou Adobe Flex front ends.
Anyway, that is my two cents. De qualquer forma, essa é a minha dois centavos.
All the best, Todos os melhores,
Fidel.