5 ms·
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
by skarayan 15y ago
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.
- rhizome 15y agoI 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.
- apl 15y ago> not sure if CoffeeScript is Turing-complete Wait, why wouldn't it be?
- rhizome 15y agoHeck 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.
- alecperkins 15y agojs2cs - https://github.com/mindynamics/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.
- Wilfred 15y agoIt 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 http://en.wikipedia.org/wiki/SKI_combinator_calculus
- Dn_Ab 15y agoCoffeeScript allows loops no? Therefore it is turing complete (practically).
- Autre 15y agoPractically you need some desicion making control structure (cond, if) and an emulation of read/write tape (arrays)
- Dn_Ab 15y agoWell 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#Computer_language_definition http://en.wikipedia.org/wiki/Primitive_recursive_function#Co...
- Dn_Ab 15y agoI 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.
- jarek-foksa 15y agoNot sure if that's what you meant, but there is already JavaScript to CoffeeScript compiler: http://ricostacruz.com/js2coffee/ http://ricostacruz.com/js2coffee/