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

> "Transpilation" and "compilation" describe the exact same concept.

No I think transpile implies compiling from one level of abstraction to another similar level of abstraction, which is quite different in theory and practice to compiling to a much lower level of abstraction. It's a useful word to have in your communication toolbox.



I agree with your overall definition. In fact, the dictionary definition of compile does also suggest that you are transforming to a 'lower level' so, in strictness, there is a need for a word to fill the void that you suggest transpile provides.

But I do wonder about the actual usefulness of the distinction. If someone says that they compile Typescript to Javascript, I'm not sure that anyone is going to be confused about what is meant, even if violates the letter of the dictionary definition.

Ultimately, english is fluid and is always correct as long as those in communication are able to understand each other. For transpile to be a useful word in the toolbox, there must be a circumstance where compile cannot be used to convey the same idea. When might that be?


'This is a transpiler' gives me a massive amount of additional context compared to 'this is a compiler' - likely structure, implementation techniques, output. Not all transpilers will fit this usual structure, but if they do you can tell me by changing this one little word. Powerful communication tool, I think.


But neither 'this is a transpiler' or 'this is a compiler' provide any meaningful information without specifying the compatible inputs and outputs. Once the inputs and outputs are specified then it is already reasonably known if the operation is transpilation or compilation, making the distinction between transpiler and compiler redundant.


Fine, but by that logic, gcc with -O0 is a transpiler, and becomes a compiler again with -O2. Similarly, TS transpiles to JS, but, say, ClojureScript compiles to JS. And if a compiler is built with something like Nanopass, it's a sequence of transpilers that somehow become a compiler along the way.


No I don’t agree. A compiler pass is not a compiler. An non-optimising C to assembly compiler is not compiling to the same level of abstraction.


>A compiler pass is not a compiler.

What is the difference, if there's one well-defined language before the pass and another after it?

>A non-optimising C to assembly compiler is not compiling to the same level of abstraction.

Neither are "transpilers", otherwise they'd be quite useless. Abstraction isn't a linear hirerarchy, in any case.


Terms are fuzzy. That doesn't mean they're useless. When I talk about 'transpilers' instead of 'compilers' it instantly gives people context.

The term's been in use since the 60s, when most compilers were not optimising.




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

Search: