The Java part of the name and syntax apparently came about as a result of a decree from Marketing that Java was the next hot thing, and inventor Brendan Eich worked feverishly to swiftly put a Java-esque sheen over the top. This, plus the cutesy name, helped mislead a lot of people for a lot years into thinking that it was a toy scripting language, and only with the more recent success of AJAX has its underlying power come to the fore.
And yet we are still burdened with the clunky syntax.
# Uses a binary search algorithm to locate a value in the specified array.
binary_search: (items, value) -> start: 0 stop: items.length - 1 pivot: Math.floor((start + stop) / 2) while items[pivot] isnt value and start < stop # Adjust the search area. stop: pivot - 1 if value < items[pivot] start: pivot + 1 if value > items[pivot] # Recalculate the pivot. pivot: Math.floor((stop + start) / 2) # Make sure we've found the correct value. if items[pivot] is value then pivot else -1 # Test the function. puts(2 is binary_search([10, 20, 30, 40, 50], 30)) puts(4 is binary_search([-97, 35, 67, 88, 1200], 1200)) puts(0 is binary_search([0, 45, 70], 0)) puts(-1 is binary_search([0, 45, 70], 10))
At time of writing CoffeeScript is only up to version 0.5.5, and syntax is not guaranteed to stabilize until 1.0, but IMO it's well worth a look.
P.S. A neat little blog post about CoffeeScript (with short examples) from Thomas Reynolds.
P.P.S. There are similar tools/nicer syntaxes for HTML (HAML), and CSS (Sass).