Allen Holub: Say No To XML (As Programming Language); I Agree ألن holub : ان تقول لا للغة الترميز القابلة للامتداد (لغة برمجة) ؛ اوافق
Allen Holub (Author of Compiler Design in C and famous OO Guru) said: “XML is perhaps the worst programming language ever conceived. ألن holub (صاحب المجمع في تصميم وج المعلم الشهير س س) : قال : "لغة الترميز القابلة للامتداد وربما يكون اسوأ من اي وقت مضى تصور لغة برمجة. I’m not talking about XML as a data-description language, which was its original design. انا لا اتحدث عن لغة الترميز القابلة للامتداد بوصفها لغة وصف البيانات ، والتي كان تصميمها الاصلي. I’m talking about perverting XML for programming applications. اتكلم عن تحريف لغة الترميز القابلة للامتداد لبرمجة التطبيقات. 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. انه من غير الملائم استخدام لغة الترميز القابلة للامتداد بوصفها لغة البرمجه النصيه (على سبيل المثال ، نمله) ، وهي لغة وصف التجارب (على سبيل المثال ، testng) ، اوجه العلاقات ورسم الخرائط اللغة (على سبيل المثال ، اسبت ، jdo) ، والسيطرة على تدفق اللغة (على سبيل المثال ، Jsf) ، وما الى ذلك. These sorts of XML “programs” are unreadable, unmaintainable, an order of magnitude larger than necessary, and audaciously inefficient at runtime.” لغة الترميز القابلة للامتداد هذه الانواع من "برامج" هي قراءتها ، غير قابل للدعم ، لحجم اكبر من اللازم ، وعدم كفاءه بجراءه في وقت التشغيل ". 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. وقال أنه مظنون الى ان الميل الى استخدام لغة الترميز القابلة للامتداد لهذه المهام هو ببساطة إما لأن الناس لا ترغب في انشاء مجمع أو 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. في معظم الاوقات استخدام لغة الترميز القابلة للامتداد الشعب لانه من السهل تحليل لغة الترميز القابلة للامتداد ، وذلك من يكترث للمدة التي يستغرقها الناس لانشاء هذه الوثائق لغة الترميز القابلة للامتداد في المقام الأول. Look at Hibernate for an example. اسبت لننظر على سبيل المثال. It is XML hell. ومن لغة الترميز القابلة للامتداد الجحيم. 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). "وتتضمن هذه القائمة فهم عميق للهياكل البيانات والخوارزميات الرئيسية ، وبقليل من الرياضيات (مجموعة من الناحية النظريه ، والمنطق ، قليلا احصاءات) ، والتمكن من تحليل وأساليب التصميم ، وعملية على حد سواء (على سبيل المثال ، rup او اكس بي) والهيكل (على سبيل المثال وتصميم انماط) ، وهيكل قاعدة البيانات واستخدامها (على سبيل المثال ، لغة الاستعلامات البنيويه). 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. انها بسيطة او استخدام لغة الترميز القابلة للامتداد ملفات الممتلكات. 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 وجدت في عصر ازدهار dotcom.
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. ما أسفل هذا الطريق وللأسف فقد اصبح التسويق النقطه أشير الى أن برنامجك يستخدم لغة الترميز القابلة للامتداد للتشكيل.
Filed under المقدم بمقتضى Headline News أهم الانباء , ، Java Software برنامج جافا , ، Open Source Software برامج المصدر المفتوح , ، Technology التقنيه | |
| |
RSS 2.0 ار اس اس 2،0 | |
Trackback this Article | هذه المادة |
Email this Article ارسل هذه المادة
You may also like to read ويمكنك ايضا ان تقرأ |




September 27th, 2006 at 6:25 am ايلول / سبتمبر 27th ، 2006 في الساعة 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. Fantasize عن بعض المهوسون يجري مثير وساخن مع الفتيات ، الا العودة الى الوطن والوفاء للزوجة (اذا كان لديهم اي) من هو ابعد ما يكون عن الساخنه ومثير. 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 ايلول / سبتمبر 27th ، 2006 في الساعة 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. ولكن هل نحن في حاجة الى حل أفضل من لغة الترميز القابلة للامتداد ، لا سيما بالنسبة للاشكال البسيطة.
September 27th, 2006 at 10:07 am ايلول / سبتمبر 27th ، 2006 في الساعة 10:07
I got tired of doing “XML push-ups.” So I’m trying to focus my new development efforts on Ruby on Rails. حصلت تعب من العمل "لغة الترميز القابلة للامتداد دفع الساخنه." حتى انا بلادي تحاول ان تركز على جهود التنمية الجديدة روبي على القضبان. XML? لغة الترميز القابلة للامتداد؟ There is none. لا يوجد اعتراض. Just YAML for configuration of database. Yaml للتو من اعداد قاعدة البيانات. Very nice! لطيف جدا!
September 27th, 2006 at 10:29 pm ايلول / سبتمبر 27th ، 2006 في الساعة 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 ايلول / سبتمبر 29th ، 2006 في الساعة 12:32
I had read his book - “Compiler Design in C” and I think it is of very high quality. كان لي قراءة كتابه -- "في تصميم المجمع ج" واعتقد انه من نوعية عالية جدا. 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. وراء كل ذلك وما زلت أنظر في الكثير من الجداره حججه ضد استخدام لغة الترميز القابلة للامتداد في كل مكان بوصفها لغة برمجة.
March 5th, 2007 at 8:39 am مارس 5th ، 2007 في الساعة 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 مارس 7th ، 2007 فى الساعة 11:00 صباحا
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. واعتقد ان للغة الترميز القابلة للامتداد سهل التشكيل هو موافق ولكنها ليست لغة برمجة. Ant is a case where xml is used as a programming language. النملة هي الحاله التي تتم فيها لغة الترميز القابلة للامتداد يستخدم لغة برمجة.
January 4th, 2008 at 4:25 am الرابع من كانون الثاني / يناير ، 2008 في الساعة 4:25
I have often seen people creating programming languages using XML. لقد خلق الناس وغالبا ما ينظر الى لغات البرمجه باستخدام لغة الترميز القابلة للامتداد. I think that XML was not meant for that and does not suit that purpose. واعتقد ان لغة الترميز القابلة للامتداد لا يقصد لذلك وما لا يتناسب مع هذا الغرض. 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. انهم يستخدمون لغة الترميز القابلة للامتداد من جانب عناصر اخرى لعرض وactionscript او جافا سكريبت للقيام بعمل جاد. These make sense, because when we are creating the forms, we are marking (or laying) our UI components. وهذه لها معنى ، لانه عندما نقوم بانشاء اشكال ، ونحن على العلامات (او زرع) لدينا عناصر واجهة المستخدم.
When I started playing with XML, I thought it was going to be a solution for writing quick languages. عندما بدأت اللعب مع لغة الترميز القابلة للامتداد ، واعتقد انه كان يجب ايجاد حل سريع لكتابة لغات. 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. اللغة يصبح الكثير من انظف من لغة الترميز القابلة للامتداد.
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\\\” والآن ، أما بالنسبة للمجمع كتابه يجري صعب ، انا فقط الاجابه \ \ \ "عندما يكون الناس دون \ \ \' لا ادري كيفية استخدام شيء ، ودائما اقول انه من الصعب \ \ \ "
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. ومن عبور مماثلة للغة الترميز القابلة للامتداد العقد. 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. وقد 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. وهو يولد التطبيقات الشبكيه التي تستهدف بي. اتش. بى ، جافا ، # ج اما مع اجاكس ادوبي المرنه او الجبهة الغايات.
Anyway, that is my two cents. على أي حال ، هذا هو بلدي اثنين سنتا.
All the best, كل الخير ،
Fidel. فيدل.