Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have seen a tool (Shed Skin) to translate one high-level language to another high-level language. Apart from knowing those languages what are the other areas of technical knowledge required to develop this kind of translators?

share|improve this question
One could say the most dangerous parts of such translations is in the edge cases. Those cases which one expects (as everything else did) to act the same. ... Which is a problem with non standardized languages, whose behaviour somewhat varies from implementation to implementation. – Rook Oct 7 '11 at 12:05
I dont see the point of these programms. You should use the right language for the job – Tom Squires Oct 7 '11 at 12:25
@Tom Squires - Well, I thought the same .... but after seeing this SO question…, my mind is little on-required side :-) – droidsites Oct 7 '11 at 13:37
up vote 3 down vote accepted

You are developing a compiler here (a program that translates from one language into another), so I'd consider a firm background in compiler theory both crucial and sufficient to do the job.

Any further knowledge depends on the scope of the job. Compiling Java to C++ would, for example, be mostly trivial when you have a garbage collector implementation at hand. Haskell to C seems to be a much more complicated matter, judging from the slow progress of the ghc.

share|improve this answer
Plus a good working knowledge of unit testing. – Tom Squires Oct 7 '11 at 12:26
@TomSquires - Is it even possible to write a compiler without unit tests? How can you claim that the compiler works if you cannot say it works between cases -n and n+1? – Ramhound Oct 7 '11 at 13:08
@Ramhound: You could prove it. If you write the compiler in a language with a sufficiently expressive type system, you could even have the type checker do the proof for you. (Remember: per the Curry-Howard-Lambek Correspondence, type checking is basically equivalent to theorem proving.) Note: I'm not saying that this is practical, though :-) – Jörg W Mittag Oct 7 '11 at 14:37

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.