تشمل برامج ترجمة لغات البرمجة المختلفة للغة الآلة المترجم الغير مرحلي compiler والمترجم المرحلي interpreter والمترجم الغير مرحلي للغات قريبة المستوى من لغة الآلة assembler. ويقوم مترجم غير مرحلي أو مترجم مرحلي بترجمة برنامج مكتوب باستخدام لغة عالية المستوى للغة الآلة. وبينما يقوم مترجم غير مرحلي بترجمة البرنامج كله في خطوة واحدة، يكون البرنامج بعدها جاهز للتنفيذ، يقوم المترجم المرحلي بترجمة البرنامج على خطوات حيث يترجم أحد تعليمات البرنامج ويعدها للتنفيذ في كل خطوة. وبالتالي، يكون تنفيذ البرامج المترجمة باستخدام مترجم غير مرحلي أسرع، بينما يكون الكشف عن الأخطاء debug في برامج مترجمة بواسطة مترجم مرحلي أسهل. ولا يمكن ترجمة بعض اللغات عالية المستوى مثل C و++C وPascal إلا باستخدام مترجم غير مرحلي. أما اللغات التي يمكن ترجمتها باستخدام مترجم مرحلي فمن أمثلتها Java وJavascript وبعض إصدارات BASIC. وتتطلب كل لغة برنامج الترجمة الخاص بها. فمثلا، يحتاج برنامج C إلى C compiler، ويحتاج برنامج Java إلى Java interpreter.