Well, in theory, any Turing-complete language can emulate any other. This ignores constraints on memory, time and the ability to interface with the outside of the program, though.