Najczęstszą formą tłumaczenia kodu jest kompilacja, w której natywny kod napisany przez programistów jest tłumaczony na kod maszynowy, który może być uruchomiony przez procesor. Kompilacja jest koniecznym i niezawodnym procesem. Tłumaczenie kodu z jednego języka programowania wysokiego poziomu na inny jest jednak procesem obarczonym niebezpieczeństwem. Jeśli robisz to z niewłaściwego powodu (np. myśląc, że nowy język jest fajniejszy od starego), możesz skończyć z czasochłonnym projektem, który nie zapewnia żadnych korzyści użytkownikom oprogramowania lub, co gorsza, zapewnia mniej funkcji niż oryginalny kod. (Czy brzmi to tak, jakbym miał doświadczenie w takich scenariuszach?) Istnieją dobre powody tłumaczenia kodu między językami wysokiego poziomu. Najczęstszym powodem jest to, że sprzęt lub system operacyjny wymagany przez oprogramowanie nie ma kompilatora dla bieżącego języka programowania. Na przykład, jeśli chcesz, aby aplikacja internetowa (napisana w HTML, CSS i JavaScript) działała natywnie na urządzeniu mobilnym, musisz ją przetłumaczyć. Albo jeśli masz starszą aplikację zbudowaną przy użyciu przestarzałego języka programowania, którego chcesz używać na nowoczesnym sprzęcie, prawdopodobnie będziesz musiał przetłumaczyć aplikację.