CoffeeScript-like language for C/C++

I think this is possible, and even desirable (I grudgingly deal with C++ when writing Node.js native modules), but more challenging than with a higher-level language like JavaScript.

What you’re asking for is a language that would provide syntactic sugar without sacrificing performance or flexibility. Some syntactic sugars (say, syntactic whitespace or Ruby-style def/end blocks instead of curly braces) would be trivial to add. But adding anything more advanced, you’d run into two major hurdles: static typing, and garbage collection.

For instance, let’s say that you wanted to add implicit returns. It seems like a small feature, but think about it: In order for the feature to be useful, you’d have to—at the very least—throw a compile-time error when the value of the last expression doesn’t match the function’s return type. That means that your compiler needs to inspect a line like

a->b

and figure out what type it is. That’s possible in principle, but it’s a heck of a lot more work than the CoffeeScript compiler does.

Or say you added list comprehensions. That means you’re allocating an array whose length isn’t known at compile-time, which means you’ll need to later deallocate it yourself. So the syntactic sugar could actually hurt you. The rule “If you malloc it, you free it” doesn’t work if the compiler is adding in the malloc for you, unless it can figure out where to put the free (which, again, is generally possible but would take a lot of work).

So, while I’d love to someone give C++ the CoffeeScript treatment, I don’t expect it to happen any time soon—if ever. I think it’s more likely that the world will eventually move on to something like D or Go for system-level programming.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)