1,205 Posts served
4,986 Conversations started
You are reading this post I am guessing you knew. So count yourself as a pioneer. Someone willing to explore! Someone that is looking to kick the XML status-quo right in the assembler! Does XML even have an assembler? Sorry, I digress. I wanted to talk about XML pioneers.
We've already established you're a pioneer, looking for new ideas to make part of your vision. I took this job at Intel because it was a chance to build fun new products, and part of that fun is working with true pioneers. I spent a week in Shanghai this month with Dr. Michael Kay of Saxon fame. (www.saxonica.com) Dr. Kay, along with Intel’s Frank Lu, presented at IDF to a room full of bright XML engineers from across China, (idf link). Yes, for those of you outside PRC, pioneering XML work is being done in China by Intel and others. Dr. Kay and I also spent time with Intel's XML engineering team in Zizhu. Tremendous stuff I will share with you in a future post.
The topic of Dr. Kay's IDF presentation was declarative languages. He commented that declarative languages are easiest to use when you attack the entire problem with declarative thinking. Focus on the goal and let the machine, browser, or XSL transformer handle the implementation. Easy enough, but as an old timer I have a hard time letting go of the control. Maybe you do too? We have all seen the ugly HTML caused by someone trying to control "centering" in HTML by defining it to be exactly 512 pixels from the left, rather than using CSS styles to center text and let the browser do its job and handle the implementation. Or using JAXB to generate Java class from a schema, only to break everything when the schema changes, rather than letting the data drive the implementation. This type of thinking is taking declarative half way, It's hard to understand, hard to maintain and is very ugly.
You're a pioneer; take declarative thinking all the way! I would like to hear how you are making use of declarative languages. So, go forth and make use of XProc, XQuery and user defined functions in XSL. You will be glad you did. Be rewarded with code that is adaptable, easy to maintain and an inspiration to others. There are great tools from Intel, Saxon and others that will work for you today. They are fast, compliant and ready for you to download now. I’d love to hear from the pioneers that read this.
Thanks, Ken.
By Michael Kay on April 25th, 2008 at 12:08 am
Thanks for the mention Ken, and for the invitation to come out to Shanghai. My first visit to PRC, and quite an experience. Can anyone explain why the taxi drivers drive so crazily?
The talk was logistically challenging: I did a couple of sentences in English, then Jianhui Li translated into Mandarin. Except that he knows the subject as well as I do, and I'm sure he added value! It's hard in that environment to respond to the inevitable "5 minutes left" card. But I think we got the message across, and perhaps the double-act helped to keep the audience awake. Although Intel are pushing the message "hey, don't forget we do software too", they are also especially keen on the kind of software developments that will take maximum advantage of trends in hardware, of which one of the most important is parallelism. So the message was: use high level declarative languages such as XSLT and XQuery, and you will not only get productivity improvements, but you will also be able to take advantage of compilers that can optimize your code for the latest hardware.
As well as the conference I spent several days with the development team in Zizhu, a very bright and motivated team indeed. There's a culture clash in this sort of encounter, but it's not China vs Europe/US, it's the clash between corporate software culture with heavyweight funding and planning, and the go-it-alone individual developer. That's a fascinating contrast; I liken it to the difference between the Himalayan and Alpine styles of mountaineering. I liken myself to Reinhold Messner doing a solo climb of Everest and hoping to dodge the avalanches by virtue of speed and agility rather than by writing a 100-page risk assessment plan before I start. I also liken myself to a pace-maker in a marathon, setting the speed for others to follow and expecting to get overtaken by the big guys with more muscle in the end. I'm frankly quite surprised still to be in the front after nearly 10 years! But there's no doubt there are things that Intel are in a position to do that I would never attempt, such as JIT code generation. It's fascinating to have this debate, and I'd like to thank Intel for making it possible.
By Dave Johnson on April 25th, 2008 at 6:58 am
I thought I would check in to see what my good friend, Ken, was up to and maybe play straight man, so everyone can be assured they are not the dumbest person in the room with Ken and Dr. Kay already setting the tone. So...Ken were you serious about the assembler comment? As Miyamoto Musashi noted in the Book of the Five Rings, "know one thing and know 10,000". A sort of Eastern version of Isomorphism. Yes we digress. But I was wondering about the metaphor and whether there was a tie to the declarative languages discussion. What does an intermediary do for XML? What I am thinking here is about layers of translation and abstraction. Where an assembler may translate a lower layer, what are the layers between the silicon and the end-user and where do we need an assembler/ assembly language?
By Kenneth Graf (Intel) on April 30th, 2008 at 10:12 pm
Mike,
I know I learned a lot that week too. About Shanghai taxis, the growth in China and XML.
Well I promised everyone some insight into what is happening with our XML work.
Some may know there are new instructions coming to your favorite processor this summer. There are called Single Instruction Multiple Data (SIMD) instructions and will be available in the new 45nm processor.
SIMD includes 4 instructions for "string and text processing" which use XMM registers to process string or text elements of up to 128-bits (16 bytes or 8 words). Think entire XML tags being gobbled up rather than the “old” method of a single character at a time.
Zhai Lei from the XET team has written a paper to provide details. You can find it here.
http://softwarecommunity.intel.com/isn/downloads/intelavx/In.....SE4_WP.pdf
I would love to hear comments or questions on how you can make this real for your app.
Ken.