Saturday, March 03, 2012

The JavaScript assembler

Earlier this week, the third part in a series of articles I wrote was published on developerWorks. The series is on CoffeeScript, a language that I first learned of about a year ago. Last summer I read CoffeeScript by Trevor Burnham over the course of a week while on a cruise ship. Later that summer I was at the Strange Loop conference, and serendipitously wound up at a dinner table with several of the guys who develop Clojure. A lot of the conversation that evening was on ClojureScript.

As a  long time web developer I am not surprised by the growing interest in programming languages that compile into JavaScript. The browser has never been more important, and thus JavaScript has never been more important. Most programmers that I know find that JavaScript leaves a lot to be desired. This is not just a matter of taste, JS is fucking weird. In fact for years, a lot of the more "serious" programmers I knew would turn up their noses at JS. They were too good for that trash, so they kept to the back-end. It's become tougher and tougher to avoid JS, so ... use a different programming language that compiles to JS. Brilliant!

This idea is hardly new. Personally, I can't help but think of Google Web Toolkit. For years GWT has let your write in Java and compile to JS. So why bother with CoffeeScript, ClojureScript, and probably some other awesomes that I'm leaving out? One obvious thing is that Java is an existing language and is statically typed. So it has its own baggage (which includes excellent tooling, but still) and of course many developers do not like statically typed languages. In fact, many argue that web development with a statically typed language is an impedance mismatch of the highest order. Personally I think GWT was also hurt by initially defaulting to producing highly obfuscated "production ready" JS. I always thought that was developer unfriendly. I think that may have changed over the years, but sometimes it's hard to overcome an initial impression. I think one of CoffeeScript's great strengths is that it produces very developer friendly JS by default. I've never built any huge apps in either language, but in my limited experience I found that debugging was easier in CoffeeScript. I could usually figure out what I had done wrong just by looking at the error message.

Any discussion like this would be amiss without mentioning Dart. It gives you dynamic and static aspects, in a way that reminds me of ActionScript. Personally I think optional typing works best when use variable:type style declarations, like ActionScript and Scala, but that's a minor nit. Of course when you consider that "native Dart" is supported in a version of the world's most popular browser, the possibilities start to get really interesting. I attended a Dart meetup recently where the Chrome developer tools allowed breakpoints and the like directly in the Dart script that was running. The SourceMap proposal would allow this kind of debugging of other higher level languages like CoffeeScript and ClojureScript.

The future seems bright for languages targeting a JavaScript runtime. I haven't even mentioned node.js and how that makes these languages viable for both client and server applications. To me CoffeeScript, Dart, and ClojureScript are all promising. Each seems to have a large target audience. If you like dynamic languages like Python and Ruby, CoffeeScript fits right in. If you prefer statically typed languages like Java and C++ and all of the nice tools that come with them, then Dart is attractive. If you like pure functional languages like Haskell and Lisp, then ClojureScript is a fun way to get your lambda calculus kicks in the browser. Of course there is a lot of anti-Lisp bias out there, so maybe there's room for another functional language that targets a JS runtime, something like a F#-script or ScalaScript.

15 comments:

Vani said...
This comment has been removed by the author.
Eric Lewis said...

First of all, Programmer understand different type of scripting language and implement on current website go to that direction.

Unknown said...

A very well-written post. I read and liked the post and have also bookmarked you. All the best for future endeavors. Getting some solution regarding.
Web Designing Company in Bangalore, Web Development Company Bangalore

Unknown said...

We are a third party technical support service. Avast Customer Support is here to help you out with the whole procedure to Download Avast Antivirus online, We not only fix your Avast Support related issues but will guide with how to get started with your new Avast product once it gets installed successfully.We at Avast Tech Support provides service to protect your PC from potential online threats and external attacks like viruses, Trojans, malwares, spywares and phishing scams. And Avast Refund. Call on our Avast Phone Number.

Gmail Customer service is a third party technical support service for Gmail users when they face any technical issue or error in their Gmail account. Our Gmail Customer Support team solves issues like forgot Gmail account password, Gmail configuration or Sync issues, recover deleted emails and many more. Toll Free number (800) 986-9271
How you install or reinstall Office 365 or Office 2016 depends on whether your Office product is part of an Office for home or Office for business plan. If you're not sure what you have, see what office com setup products are included in each plan and then follow the steps for your product. The steps below also apply if you're installing a single, stand-alone Office application such as Access 2016 or Visio 2016. Need Help with office setup Enter Product Key? Call 1-800-000-0000 Toll Free
Norton Tech Support is a third party service provider and not in any way associated with Norton or any of its partner companies. We offer support for Norton products and sell subscription based additional warranty on computer and other peripheral devices. Call our Toll Free number 1 855 966 3855
Other Services
Norton Toll Free , Office-Setup , office.com/setup.

Unknown said...

good

Chethu Apponix said...

Very good information. Its very useful for me. We have a good career in java. We need learn from real time examples and for this we choose good training institute, we need to learn from experts . We need a good training institute for our learning . so people making use of the free demo classes.Many training institute provides free demo classes. One of the best training institute in Bangalore is Apponix Technologies.
https://www.apponix.com/Java-Institute/Java-Training-Institute-in-Bangalore.html

Strikethrough Text said...

Very useful article. This is full of information I can't wait to dig deep and start utilising the useful resource given by you. This is probably the best blog I came across today. I Just want to add that if anyone want to Learn how to Strikethrough Text in Word, Excel and PowerPoint and see the other advanced text settings available then nuts and bolts speed training is best choice for them.

meldaresearch said...

Online logistics management writing services are very difficult to complete and many students are always searching for Logistics Writing Services Online to help them complete their logistics coursework writing services and logistic research paper services.

fuel digital vignesh said...


Great article with excellent idea i appreciate your post thankyou so much and let keep on sharing your stuffs
Thanks for the article…
water level controllers in chennai.
water level controllers in omr. .
water level controllers in velachery. .
best water level controller suppliers in coimbatore.
best water level controller suppliers in madurai..
best water level controller suppliers in trichy and tirunelveli

youtubecomactivate said...

Nice Post.
As we realize that YouTube is the best stage that offers a wide assortment of shows. You can find parcels something on YouTube extending from activity and diversion to family charming instructional substance material. You will be essentially signing in to your account visit YouTube Com Activate and enter a digit code which you have. Viewing a YouTube show for your huge TV show genuinely makes the appreciate tons better when in contrast with a PC or PC show.
Read more…

williams jones said...

BUY IBOGA ROOT BARKS ONLINE
BUY IBOGAINE ONLINE
BUY ACTAVIS PROMETHAZINE ONLINE
BUY XANAX ONLINE
BUY LSD ONLINE
BUY LEMON HAZE ONLINE
BUY GODFATHER OG ONLINE
BUY DANK VAPE ONLINE
BUY ACTAVIS PROMETHAZINE ONLINE

Unknown said...

buy Pain Pills online and Research chemicals 
buy Roxicodone online 

buy Roxicodone 30mg online

  buy Xanax online  

  buy maltese and Pomeranian puppies online    
 buy Medical Marijuana online
buy Weed online
  BUY LSD BLOTTERS online    
buy OXYCODONE online 
buy Norco online 

gardencarepharmaceuticals said...


buy-apetamin-syrup-weight-gain
buy-bensedin-online-diazepam-10mg
buy-actavis-promethazine-online
buy-valium-online
buy-methadone-online
buy-cialis-online
order-oxycontin-online
buy-dilaudid-online

The Masters Real Estate said...

A good article is one that a person is aware of, to get something to learn from that article and your article is also one of them. We hope that you will share a similar article in the future and make us aware thank you.

Read more articles are as follow:

The Masters Real Estate

Lahore Smart City

Capital Smart City map

Faisalabad Smart City

Park View City Islamabad

Park View City Lahore

Nova City Islamabad

kaashivit said...

This is the first & best article to make me satisfied by presenting good content. I feel so happy and delighted. Thank you so much for this article.
eniac full form in computer
dvd full form
sit full form
pcc full form
iucn full form
full form of lcd
brics full form
tally erp full form
full form of ctbt
crpf full form