Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I tend to agree that compiling to JavaScript is the future of browser programming. CoffeeScript seems to be a nice language, but I bet there will be many more to come in the next year or two.


I hope someone writes a decompiler for one of these supra-JS languages (not sure if CoffeeScript is Turing-complete) to run against existing Javascript codebases. It could well speed up adoption if a mass-tangle of JS can be boiled down to a more readable and understandable structure.


  > not sure if CoffeeScript is Turing-complete
Wait, why wouldn't it be?


It is, though that's not very surprising. Here's a quick proof:

S-K combinators[1] are a Turing-complete subset of lambda calculus. Here's an implementation of them:

  k = (x) ->
    (y) -> x
  
  s = (x) ->
    (y) ->
      (z) -> x(z)(y(z))
1: http://en.wikipedia.org/wiki/SKI_combinator_calculus


Heck if I know, I'm not CS trained.

Point being, CoffeeScript and other compilers would get a big boost if someone came out with a way to convert existing JS codebases into these new, more readable, more maintainable (as the story goes) representations.


js2cs - https://github.com/mindynamics/js2cs

Though I've found doing the conversion manually is a better way to learn CoffeeScript. Plus, it is a point for optimization and refactoring since CoffeeScript allows for doing certain things more easily or in better ways. The automated conversion only does so much.


Not sure if that's what you meant, but there is already JavaScript to CoffeeScript compiler: http://ricostacruz.com/js2coffee/


CoffeeScript allows loops no? Therefore it is turing complete (practically).


I was giving a simple metric by which to check turing completeness. If the language allows you to do infinite loops e.g. "while loops" then it is turing complete.


Practically you need some desicion making control structure (cond, if) and an emulation of read/write tape (arrays)


Well actually unbounded recursion and infinite memory is what is required for turing equivalence. Conditioning can be present in a non turing complete language. I added the practically because all computers on which language models are built on are finite. It is easier to get turing completeness than to ensure you haven't accidently allowed it to sneak in - as evinced in C++ templates.

http://en.wikipedia.org/wiki/Primitive_recursive_function#Co...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: