Allen Holub: Say No To XML (As Programming Language); I Agree 알렌 holub : 거절을 xml (로 프로그래밍 언어); 동의
Allen Holub (Author of Compiler Design in C and famous OO Guru) said: “XML is perhaps the worst programming language ever conceived. 알렌 holub (c으로 유명한 저자의 컴파일러를 설계 그렇습니다 지도자)은 말했다 : "형식이 아마 상상 못할 최악의 프로그래밍 언어입니다. I’m not talking about XML as a data-description language, which was its original design. xml되는 경우 데이터에 대해 얘기하는 게 아니다 - 설명 언어했던 원래 디자인으로합니다. I’m talking about perverting XML for programming applications. 프로그래밍 애플 리케이션에 대한 얘기를 나는 xml perverting합니다. 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. xml로서 부적절 스크립팅 언어를 사용 (예를 들면, 개미)을 테스트 - 설명 언어 (예를 들면, TestNG를), 개체 - 관계형 매핑 언어 (예를 들면, 최대 절전 모드로, jdo)를 제어 - 흐름 언어 (예를 들면, jsf), 등등. These sorts of XML “programs” are unreadable, unmaintainable, an order of magnitude larger than necessary, and audaciously inefficient at runtime.” 이러한 종류의 xml "프로그램"은 읽을 수없는, unmaintainable, 필요 이상의 주문의 비교, 그리고 대담한 비효율적인 런타임합니다. " 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. xml에 대한 견적을 사용하는 경향을 그는 이러한 작업은 단순히를 작성하지 않으 왜냐하면 사람들이 컴파일러 중 하나 또는 하나를 만들 inacapable합니다. I agree with him. 그와 함께 동의합니다. 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. 대부분의 시간을 구문 분석은 간단하기 때문에 사람들이 사용 xml xml, 그래서 시간이 얼마나 걸리는 지에 대한 상관이 xml 문서를 만드는 사람들은 처음부터합니다. Look at Hibernate for an example. 최대 절전 모드로 봐 예를 들면합니다. It is XML hell. 이 xml 지옥합니다. EJB 2 was another example. ejb 2는 또 다른 예에 속합니다. Jelly was probably the worst example and I don’t like JSTL that much either. 최악의 젤리는 아마 그 정도 jstl 예제 중 하나와 난 싫어합니다.
Then he goes on to define the basic qualifications of a programmer, he said something which is close to my heart: 그 사람의 기본적인 자격 조건을 정의의 무대에서 프로그래머, 그는 무언가가 제 마음을 닫습니다 :
“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). "이 목록에는 데이터의 구조에 대한 깊은 이해와 키 알고리즘을, 작은 수학 (집합 이론, 논리, 조금 통계), 마스터의 분석 -과 - 설계 기법, 둘 다 프로세스 (예를 들면, 루프 또는 XP 용) 및 구조 (예 : , 디자인 패턴), 그리고 데이터베이스 구조 및 사용 (예를 들면, sql). You also need to know how the hardware works.” 또한, 하드웨어 작동하는 방법을 알고이 필요합니다. "
Designing compilers is hard. 컴파일러를 설계 어렵다. Today it is rare to see people designing compilers for their software. 오늘은 정말 드문 용 컴파일러를보고 사람들은 그들의 소프트웨어를 설계합니다. They use XML or simple property files. xml 또는 단순 프로퍼티 파일을 사용합니다. Also, as he mentioned, it is hard to get books on compiler design. 또한, 그가 언급한 것은 컴파일러를 구하기 힘든 도서를 디자인합니다. The best Java software to design compiler is 최고의 컴파일러는 자바 소프트웨어를 설계 JavaCC javacc , which was by an ex-Sun employee, who later went on to found MetaMata in the dotcom boom era. , 어떤 사람은 전 - 태양 직원, 사람을 나중에갔습니다 닷컴 붐 시대에 MetaMata에 발견합니다.
He misses one vital point. 중요한 포인트 하나, 당신을 그리워합니다. Somewhere down the road it has unfortunately become a marketing bullet point to mention that your software uses XML for configuration. 불행히도이 길 아래에있는 어딘가으로 한 마케팅 글머리 기호가있는 것은 말할 것도 xml의 구성을 귀하의 소프트웨어를 사용합니다.
Filed under 밑에 Headline News 헤드 라인 뉴스 , Java Software 자바 소프트웨어 , Open Source Software 오픈 소스 소프트웨어 , Technology 기술 | |
| |
RSS 2.0 rss 2.0 | |
Trackback 트랙백 this Article | 이 문서 |
Email this Article 전자 우편이 문서
You may also like to read 같은를 읽을 수있습니다 |





September 27th, 2006 at 6:25 am 2006년 9월 27일에서 오전 6시 25분
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. 섹시하고 환상을 괴짜로 뜨거운 그름의 문제가 어떤 여자를 만나 아내를 집에에게만 (만약 그들이 어떤)에게 뜨거운 섹시하고는 거리가 멀다. That, my friend, is reality. 그건, 내 친구는 현실을합니다.
Allen Holub lives in a fantasy world. 알렌 holub 환상적인 세계에서 살고있습니다. In reality, there’s always deadlines to meet, profit to achieve. 실제로, 마감 시간을 만날 가능성은 항상 존재, 이익을 달성합니다.
September 27th, 2006 at 7:14 am 2006년 9월 27일에서 오전 7시 14분
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? 가되지에서 더 많은 수익을 실행하여 응용 프로그램을 쉽게 사용할 수 긴 경우를 제외하고 전문 지원 서비스에 유료 서비스도 제공하는가?
Creating compilers is hard for us but creating xml files aren’t easy for end-users. 컴파일러를 만들기 위해 열심히 저희는하지만 쉽지 않은 파일 만들기위한 엔드 - 사용자가합니다.
In my experience most of them are comfortable with Excel documents, complex xml is beyond them (obviously with exceptions). 내 경험에 그들 대부분이 편안하게 엑셀 문서를, 복잡한 형식이 넘어 수있습니다 (물론 예외).
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. 컴파일러는 그들의 단점은 힘들뿐 아니라 다른 사람에게 어려움을뿐만 아니라 소비를 만드는 경우를 제외하고 그들을 파서도를 제공합니다. We do however need a better solution than xml, especially for simple formats. xml보다는 우리가 더 나은 솔루션이 필요하지만, 특히 단순한 형식으로합니다.
September 27th, 2006 at 10:07 am 2006년 9월 27일에서 오전 10시 7분
I got tired of doing “XML push-ups.” So I’m trying to focus my new development efforts on Ruby on Rails. 나는 일을 지쳤지 "xml 밀어 넣기 - ups."그래서 나는 나의 새로운 개발 노력에 노력을 집중 루비 온 레일스합니다. XML? xml? There is none. 해당 사항 없음. Just YAML for configuration of database. 단지 구성을 위해 데이터베이스를 yaml합니다. Very nice! 매우 좋아!
September 27th, 2006 at 10:29 pm 2006년 9월 27일에서 오후 10시 29분
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 그래, 어쩌면…을 제외하고 나쁜 예 (확인, 문제와 개미, 그래,하지만 그것을 너무 쉽게 사용할 같지 않은데, 제발, 탭 및 공백이 오, 내), 그리고 그의 책과 모두 연결이 미묘 쇠망치는 너무 냉정
September 29th, 2006 at 12:32 am 2006년 9월 29일에서 오전 12시 32분
I had read his book - “Compiler Design in C” and I think it is of very high quality. 나는 그의 책을 읽고 - "컴파일러의 디자인이 c"그리고 그것은 매우 높은 품질 생각합니다. So even if he is plugging his book, I think it is a good plug. 연결 그래서 그는 그의 책을 경우에도, 제 생각은 좋은 연결합니다.
Also everyone has their natural tendencies. 또한 모든 사람은 그들의 자연적인 성향합니다. A compiler designer sees everything as a compiler design problem, a OO designer sees the world as object oriented and so on. 디자이너 컴파일러 컴파일러의 디자인으로 모든 문제를보고, 그렇습니다 디자이너 등의 객체 지향으로 세계를보고합니다. Beyond all that I still see lots of merit in his arguments against ubiquitous use of XML as programming language. 나는 아직도 많은 장점을 넘어 모든 것을 그의 xml로 프로그래밍 언어를 사용하는 유비 쿼터스 인수를 반대합니다.
March 5th, 2007 at 8:39 am 2007년 3월 5일에서 오전 8시 39분
I think, the author exaggerates a little. 제가 생각하기에, 저자도 너무 과장 하셨네요 조금합니다.
It is good that there is a simple format of configuration files. 것이 좋다는 간단한 형식의 구성 파일이있다. XML is maybe verbose, but it is easy to learn. 형식이 어쩌면 자세한 있지만이 배우기 쉽다. And if everyone created a new format for each application, we would have to learn much more and it would take much more time. 그리고 만약 새로운 형식의 각 응용 프로그램을 만들어 모든 사람, 우리 자신을 훨씬 더 배워야만하고 더 많은 시간 정도 걸릴 겁니다. Do you remember sendmail configuration files? sendmail 구성 파일을 기억나요?
March 7th, 2007 at 11:00 am 3 월 7 일 오전 11시
Yes, I do remember sendmail as well as the make files 예, 나는 제조 업체뿐만 아니라 파일을 기억하는 sendmail
I think xml for plain configuration is ok but not as a programming language. 내 생각 xml에 대한 일반 설정은 프로그래밍 언어로서 확인지만. Ant is a case where xml is used as a programming language. 개미는 경우 형식이 프로그래밍 언어로 사용합니다.
January 4th, 2008 at 4:25 am 2008년 1월 4일에서 오전 4시 25분
I have often seen people creating programming languages using XML. 나는 보는 사람들을 자주 사용하는 프로그래밍 언어로 작성 xml합니다. I think that XML was not meant for that and does not suit that purpose. xml 아니었을 것 같다, 그리고 그 목적 정장되지 않습니다. Prove of that is XUL, Flex MXML or even XForms, that end up using Actionscript or Javascript to do the business logic. 어떤 것으로도 증명 xul, 플렉스 mxml 혹은 xforms, 그 전면 actionscript이나 자바 스크립트를 사용하여 비즈니스 논리를하도록합니다. They use the XML part to layout the components and Actionscript or Javascript to do the serious work. xml 부분을 레이아웃을 사용하여 그들 actionscript이나 자바 스크립트의 구성 요소 및 작동 방법을 심각합니다. These make sense, because when we are creating the forms, we are marking (or laying) our UI components. 이러한 이해, 왜냐하면 우리가 창조의 양식, 우리는 마킹 (또는 누워) 우리 ui 구성 요소를합니다.
When I started playing with XML, I thought it was going to be a solution for writing quick languages. 그때부터 놀고 xml, 줄 알았는데 빠른 언어로 작성을위한 솔루션을 될 수있습니다. But, I came to the conclusion that XML is what it is: a markup language. 하지만, 그 결론으로 와서는 형식이 뭔지 : 마크업 언어를합니다. And it can be used for document design and for data design as well. 그리고을 위해 사용될 수있습니다 데이터를 설계에 대한 문서를 디자인하고도합니다. As for complex programming languages, I stick to writing compilers for them. 복잡한 프로그래밍 언어로, 나는 그들을 위해 컴파일러를 쓰기에 충실합니다. The language becomes so much cleaner than XML. 언어를보다가 너무 클리너 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\\\” 지금, 컴파일러를 서면으로이 하드, 방금 답변 \ \ \ "이 사람들이 돈 \ \ \ 't를 사용하는 방법을 알고 있나요, 그들은 항상 말을하기 어렵다 \ \ \"
It is not like in the old days whereby you would need loads of programmers to write a compiler. 그것은 아주 옛날에 같은 보완을 쓰는 사람이 당신이 필요 컴파일러의 프로그래머를로드합니다. Today, a single programmer can put together a compiler, using current compiler frameworks, in a month. 오늘, 하나의 프로그래머를들을 하나로 결집하고 컴파일러, 현재 컴파일러를 사용하는기구, 한 달 이내에.
Nowadays, you don\\\’t have to write parsers by hand. 지금, 당신 돈 \ \ \ '가 없다 파서를 손으로를 작성합니다. You can put together a parser for a configuration file in a day or two. 파서에 넣을 수있습니다 구성 파일을 함께 한 하루에 또는 두 개의합니다.
Compiler writing was, in the old days, very laborious. 컴파일러를 쓰고는, 아주 옛날에, 매우 곤란합니다. Not anymore, because you have many frameworks that do half of the work for you. 더 이상은, 왜냐하면 당신의 절반이 많은 당신을 위해 일한다는 프레임 워크가 필요합니다. For instance, with JavaCC you can generate the lexer, the parser, the Abstract Syntax Tree using JJTree. 예를 들면, javacc를 생성하는하실 수있습니다 lexer, 파서, 추상 구문 트리를 사용하여 jjtree합니다. And then, you just have write the semantic analyser, intermediate code generator, code optimizer and the code generator. 그리고, 당신은 제품에 대한 의미 론적 분석, 중간 코드 생성기, 코드 최적화와 코드 생성기합니다. But, that is very simple to do. 그러나, 그것은 매우 간단하게 할합니다. It is similar to traversing XML nodes. 그것은 유사하게 xml 노드를 탐색합니다. I usually see it that way. 나는 보통 사람은 그렇게합니다.
Finally, I would like to mention that there is a compiler framework called SableCC, which is very easy to use. 마지막으로, 나는 문제가 있음을 언급하려는 sablecc라는 컴파일러를 프레임 워크는하고 사용이 매우 편리합니다. There is also an alternative based on SableCC, which allows us to write backend generators for other languages. 또한 sablecc의 대안에 따라, 우리가 쓸 수있는 다른 언어에 대한 백엔드 생성합니다. I have written two backend generators: one for Python and one Actionscript. 나는 두 개의 백엔드 서면 생성기 : 파이썬 하나 하나를위한 actionscript합니다. The Python one is in the public domain. 하나는 공개 도메인에 파이썬합니다. The Actionscript one is still being used internally in my company. the actionscript 하나는 여전히 우리 회사 내부에 사용되고있습니다. But will, eventually, be released to the public domain. 되지만, 결국은, 퍼블릭 도메인을 개봉합니다. 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. 우리가 사용하여 백엔드 actionscript sparql 파서를 보려면 여기를 작성 플렉스, 그리고 프로그래밍 언어를위한 컴파일러를 기반으로 쓰기 daplex합니다. Well, we call it a framework, because it does more than generating database code. 음, 우리이라고 할 수 프레임 워크, 데이터베이스 코드를 생성하기 때문에이 이상합니다. It generates web applications that target PHP, Java, C# with either Ajax or Adobe Flex front ends. 웹 응용 프로그램을 생성를 대상 php, 자바, c # adobe 플렉스 프런트 엔드를 사용하여 ajax 또는합니다.
Anyway, that is my two cents. 어쨌든, 그것은 나의 2 개 센트.
All the best, 모두 최고의
Fidel. 피델합니다.