Web Development: LLVM

Web development, i.e. HTML/JS/CSS kinda sucks. Really it does.

While on the server side you have free range; we can use nice languages and frameworks (or any of these for anyone of a more lambda persuasion).  We can use scripting languages where they make sense, and opt to use a fully compiled and typed language when and if the situation calls for it.

On the client side we have… well, just javascript.  JavaScript is a great little language to quickly hack something up, and make some nifty gadgets. I even enjoy making them.  The problem is that we’re no longer using javascript as that little bit of glitter to make websites shiny.  JQuery, Prototype, and other AJAX libraries provide a small extension to our honeymoon period with javascript, but now we’re wondering if he can still provide for our family.  We’ve been using it to build full fledged applications, and this is where it gets gross.

Software development is not a solved problem by any means.  We have learned quite a bit over the years, and modern languages and platforms have evolved to make development an easier and more maintainable endeavor.  Javascript was really never meant to be a full featured, cross platform language, and it shows.  Google, who you might have heard is in the business of web apps, realized that javascript alone would not fit the bill for creating these massive, long-term projects, so they created GWT.  Others followed suit and we now have frameworks like Cappuccino and Pyjamas.  These are impressive projects, but again, we’re dealing with the symptoms by patching over javascript.  They hide all the ugly cross-browser compatibility problems and lend us more maintainable languages and tools, but at the cost of performance.

So what can we do?

For now, frameworks like GWT, and libraries like JQuery can help make your life easier (and maybe help save the sanity of the next developer to take over your project).  In the long term, I propose that we begin moving away from javascript.  I’m not going to endorse my favorite fad language of the hour, but rather suggest that we look at ways to embed the LLVM into browsers.  This would allow developers to use any language supported by the LLVM, and by extension any libraries written in those languages (maybe a return to picking, “the right tool for the job”).  Client-side code would be distributed as LLVM bytecode, allowing fast JIT compilation (this also has the added bonus of opaqueness for those services which may require it).

Tags: , ,

Thursday, March 31st, 2011 expo, interests

Leave a Reply