Allen Holub: Say No To XML (As Programming Language); I Agree Holub Allen: decir no a XML (lenguaje de programación como); estoy de acuerdo
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 del diseño de compiladores de C y en el famoso gurú OO) dijo: "XML es quizá el peor lenguaje de programación jamás concebidos. I’m not talking about XML as a data-description language, which was its original design. No estoy hablando de XML como una base de datos de lenguaje de descripción, que era su diseño original. I’m talking about perverting XML for programming applications. Estoy hablando de pervirtiendo XML para la programación de aplicaciones. 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. Es inadecuado utilizar XML como un lenguaje de script (por ejemplo, ANT), una prueba de lenguaje de descripción (por ejemplo, los TestNG), un objeto-relacional cartografía idioma (por ejemplo, Hibernate, JDO), un control de la corriente de idioma (por ejemplo, JSF), y así sucesivamente. These sorts of XML “programs” are unreadable, unmaintainable, an order of magnitude larger than necessary, and audaciously inefficient at runtime.” Este tipo de XML "programas" son ilegibles, unmaintainable, un orden de magnitud mayor que la necesaria, audaz y poco eficiente en tiempo de ejecución. " Link Vínculo
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. Se supone que la tendencia a utilizar xml para estas tareas es simplemente porque la gente o bien no quiere crear un compilador o se inacapable de crear uno. I agree with him. Estoy de acuerdo con él. 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. La mayoría de las veces la gente utiliza XML porque es fácil de analizar XML, por lo que le importa cuánto tiempo toma para que la gente pueda crear esos documentos XML en el primer lugar. Look at Hibernate for an example. Vea Hibernate para un ejemplo. It is XML hell. Es XML infierno. EJB 2 was another example. EJB 2 fue otro ejemplo. Jelly was probably the worst example and I don’t like JSTL that much either. Jelly es probablemente el peor ejemplo y no me gusta mucho que JSTL bien.
Then he goes on to define the basic qualifications of a programmer, he said something which is close to my heart: Luego pasa a definir las cualificaciones básicas de un programador, dijo algo que está cerca de mi corazón:
“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). "Esta lista incluye una comprensión profunda de las estructuras de datos y algoritmos de clave, un poco de matemáticas (teoría de conjuntos, la lógica, un poco de estadísticas), el dominio de análisis y técnicas de diseño, tanto el proceso (por ejemplo, RUP o XP) y estructura (por ejemplo, , Patrones de diseño), y la estructura de base de datos y el uso (por ejemplo, SQL). You also need to know how the hardware works.” Usted también necesita saber cómo funciona el hardware funciona ".
Designing compilers is hard. El diseño de compiladores es difícil. Today it is rare to see people designing compilers for their software. Hoy en día es raro ver a la gente el diseño de compiladores para su software. They use XML or simple property files. Utilizan XML o archivos de simple propiedad. Also, as he mentioned, it is hard to get books on compiler design. Además, como se mencionó, es difícil conseguir libros sobre el diseño del compilador. The best Java software to design compiler is El mejor software de Java para el diseño del compilador es JavaCC , which was by an ex-Sun employee, who later went on to found MetaMata in the dotcom boom era. , Que fue de un ex-empleado de Sun, que más tarde pasó a MetaMata encontrado en la era de dotcom boom.
He misses one vital point. Se pierde un punto vital. Somewhere down the road it has unfortunately become a marketing bullet point to mention that your software uses XML for configuration. En algún punto por el camino que lamentablemente ha convertido en un punto de comercialización de mencionar que su software usa XML para la configuración.
Filed under Filed under Headline News Headline News , Java Software El software de Java , Open Source Software Open Source Software , Technology Tecnología | |
| |
RSS 2.0 RSS 2,0 | |
Trackback this Article | este artículo |
Email this Article Enviar artículo
You may also like to read También puede leer |




September 27th, 2006 at 6:25 am 27 de septiembre de 2006, a las 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. Algunos geeks fantasear con que se caliente y sexy niñas, sólo para regresar a casa y cumplir con la esposa (si es que tiene alguna) que está lejos de ser caliente y sexy. That, my friend, is reality. Eso, amigo mío, es la realidad.
Allen Holub lives in a fantasy world. Allen Holub vive en un mundo de fantasía. In reality, there’s always deadlines to meet, profit to achieve. En realidad, siempre hay plazos que cumplir, para lograr beneficios.
September 27th, 2006 at 7:14 am 27 de septiembre de 2006, a las 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? ¿No sería más rentable a largo plazo para hacer su aplicación más fácil de usar, a menos que usted paga también ofrecen servicios de apoyo profesional?
Creating compilers is hard for us but creating xml files aren’t easy for end-users. La creación de compiladores es difícil para nosotros, sino la creación de archivos xml no son fáciles para los usuarios finales.
In my experience most of them are comfortable with Excel documents, complex xml is beyond them (obviously with exceptions). En mi experiencia la mayoría de ellos se sienten cómodos con documentos de Excel, XML es complejo más allá de ellos (obviamente con excepciones).
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. La desventaja de compiladores es que no sólo son más difíciles de crear, sino también más difícil para otros a consumir, a menos que usted les proporcione un analizador. We do however need a better solution than xml, especially for simple formats. No obstante, tenemos una solución mejor que xml, especialmente para los formatos simple.
September 27th, 2006 at 10:07 am 27 de septiembre de 2006, a las 10:07 am
I got tired of doing “XML push-ups.” So I’m trying to focus my new development efforts on Ruby on Rails. Me ha cansado de hacer "XML push-ups." Así que estoy tratando de centrar mi nuevo los esfuerzos de desarrollo en Ruby on Rails. XML? There is none. No hay ninguna. Just YAML for configuration of database. Just YAML para la configuración de base de datos. Very nice! Very nice!
September 27th, 2006 at 10:29 pm 27 de septiembre de 2006, a las 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 Sí, tal vez… Salvo un mal ejemplo (ok, el problema con Ant, sí, pero no es como hacer es tan fácil de usar, por favor, pestañas, y los espacios o mi), y conectar su libro con toda la sutileza de un maza no fue demasiado cool
September 29th, 2006 at 12:32 am 29 de septiembre, de 2006 a las 12:32 am
I had read his book - “Compiler Design in C” and I think it is of very high quality. Yo había leído su libro - "Diseño de compiladores de C" y creo que es de muy alta calidad. So even if he is plugging his book, I think it is a good plug. Por lo tanto, incluso si se trata de conectar su libro, creo que es un buen enchufe.
Also everyone has their natural tendencies. También todo el mundo tiene sus tendencias naturales. A compiler designer sees everything as a compiler design problem, a OO designer sees the world as object oriented and so on. Un compilador diseñador ve todo como un compilador problema de diseño, un diseñador OO ve el mundo como orientado a objetos y así sucesivamente. Beyond all that I still see lots of merit in his arguments against ubiquitous use of XML as programming language. Más allá de todo lo que yo todavía ver un montón de mérito en sus argumentos contra el omnipresente uso de XML como lenguaje de programación.
March 5th, 2007 at 8:39 am 5 de Marzo, 2007 a las 8:39 am
I think, the author exaggerates a little. Creo que el autor exagera un poco.
It is good that there is a simple format of configuration files. Es bueno que existe es un simple formato de ficheros de configuración. XML is maybe verbose, but it is easy to learn. XML es quizá verbose, pero es 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. Y si todo el mundo creado un nuevo formato para cada solicitud, tendríamos que aprender mucho más y se tardaría mucho más tiempo. Do you remember sendmail configuration files? ¿Te acuerdas de archivos de configuración de sendmail?
March 7th, 2007 at 11:00 am 7 de marzo de 2007, a las 11:00 am
Yes, I do remember sendmail as well as the make files Sí, yo recuerdo sendmail, así como los archivos de hacer
I think xml for plain configuration is ok but not as a programming language. Creo xml de configuración es simple ok, pero no como un lenguaje de programación. Ant is a case where xml is used as a programming language. Ant es un caso en que XML es utilizado como un lenguaje de programación.
January 4th, 2008 at 4:25 am 4 de enero de 2008 a 4:25 am
I have often seen people creating programming languages using XML. A menudo he visto a la gente la creación de lenguajes de programación utilizando XML. I think that XML was not meant for that and does not suit that purpose. Creo que no es XML para que significaba y no satisface ese propósito. Prove of that is XUL, Flex MXML or even XForms, that end up using Actionscript or Javascript to do the business logic. De demostrar que es XUL, Flex MXML o incluso XForms, que terminan utilizando ActionScript o Javascript para hacer la lógica de negocio. They use the XML part to layout the components and Actionscript or Javascript to do the serious work. Ellos usan la parte de XML para el diseño y los componentes de ActionScript o JavaScript para hacer el trabajo serio. These make sense, because when we are creating the forms, we are marking (or laying) our UI components. Estos tienen sentido, porque cuando estamos creando las formas, estamos de marcado (o la construcción) componentes de nuestra interfaz de usuario.
When I started playing with XML, I thought it was going to be a solution for writing quick languages. Cuando comencé a jugar con XML, pensé que iba a ser una solución rápida para escribir discursos. But, I came to the conclusion that XML is what it is: a markup language. Sin embargo, llegué a la conclusión de que XML es lo que es: un lenguaje de marcas. And it can be used for document design and for data design as well. Y puede ser usado para el diseño de documentos y de datos así como el diseño. As for complex programming languages, I stick to writing compilers for them. En cuanto a complejos lenguajes de programación, palo escrito a los compiladores para ellos. The language becomes so much cleaner than XML. El idioma se convierte en mucho más limpio que el 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\\\” Ahora, como compilador por escrito para ser un duro, acabo de responder \ \ \ "cuando la gente don \ \ \ 't saben cómo utilizar algo, siempre dicen que es difícil \ \ \"
It is not like in the old days whereby you would need loads of programmers to write a compiler. No es como en los viejos tiempos que usted necesita un montón de programadores a escribir un compilador. Today, a single programmer can put together a compiler, using current compiler frameworks, in a month. Hoy en día, un único programador puede crear un compilador, utilizando los marcos actuales compilador, en un mes.
Nowadays, you don\\\’t have to write parsers by hand. Hoy en día, don \ \ \ 't tiene que escribir analizadores de mano. You can put together a parser for a configuration file in a day or two. Puede poner juntos un parser de un archivo de configuración en un día o dos.
Compiler writing was, in the old days, very laborious. Compilador fue escrito, en los viejos tiempos, muy laborioso. Not anymore, because you have many frameworks that do half of the work for you. Ya no, porque tiene muchos marcos que la mitad de hacer el trabajo por usted. For instance, with JavaCC you can generate the lexer, the parser, the Abstract Syntax Tree using JJTree. Por ejemplo, con JavaCC puede generar el lexer, el analizador, el Abstract Syntax Tree utilizando JJTree. And then, you just have write the semantic analyser, intermediate code generator, code optimizer and the code generator. Y entonces, sólo han escribir el analizador semántico, generador de código intermedio, código optimizador y el generador de código. But, that is very simple to do. Sin embargo, que es muy sencillo de hacer. It is similar to traversing XML nodes. Es similar al que atraviesa nodos XML. I usually see it that way. Yo suelo verlo de esa manera.
Finally, I would like to mention that there is a compiler framework called SableCC, which is very easy to use. Por último, quisiera mencionar que hay un compilador llamado SableCC marco, que es muy fácil de usar. There is also an alternative based on SableCC, which allows us to write backend generators for other languages. También existe una alternativa basada en SableCC, lo que nos permite escribir generadores de backend para otros idiomas. I have written two backend generators: one for Python and one Actionscript. He escrito dos backend generadores: uno para Python y una ActionScript. The Python one is in the public domain. El Python es de dominio público. The Actionscript one is still being used internally in my company. La ActionScript uno todavía se utiliza internamente en mi empresa. But will, eventually, be released to the public domain. Pero, finalmente, ser puesto en libertad al dominio 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. Se utilizó el backend de ActionScript para escribir un parser de SPARQL Adobe Flex, y para escribir un compilador para un lenguaje de programación basado en Daplex. Well, we call it a framework, because it does more than generating database code. Bueno, nosotros lo llamamos un marco, porque hace más que generar código base de datos. It generates web applications that target PHP, Java, C# with either Ajax or Adobe Flex front ends. Genera aplicaciones web que se dirigen a PHP, Java, C #, ya sea con Ajax o Adobe Flex interfaces.
Anyway, that is my two cents. En cualquier caso, es que mis dos centavos.
All the best, Todos los mejor de los casos,
Fidel.