اليوم نحن لسنا في المرحلة التي يمكننا فيها "تعليم" الكمبيوتر لغة برمجة ، ولكن يمكننا بالتأكيد برمجة جهاز كمبيوتر لفهم واحدة (أو أكثر). على المستوى الأساسي ، فإن وحدة المعالجة المركزية في الكمبيوتر الرقمي (المعروف أيضًا باسم CPU) ، تفهم لغة بدائية جدًا (تُعرف أيضًا باسم المستوى المنخفض) تسمى "رمز الآلة". يتم تمثيل التعليمات في رمز الآلة بالأرقام فقط ويمكن تنفيذها مباشرة بواسطة الأجهزة . بالمختصر، يجب ترجمة أي لغة برمجة إلى كود الآلة حتى يتم تنفيذها.
تسمى لغة البرمجة الأقل مستوى فوق كود الآلة "لغة التجميع" وتتكون مجموعة التعليمات الخاصة بها من فن الإستذكار البشري (كلمات يمكن أن يتذكرها الإنسان بسهولة أكبر) التي لها ترجمة فردية لتعليمات الكود الآلي. يتم "تجميع" هذه اللغة بواسطة مترجم ، والذي يترجم كلمات المجمّع هذه إلى رمز الآلة بحيث يمكن لوحدة المعالجة المركزية تنفيذ البرنامج. "المترجم" نفسه هو أيضًا برنامج.
يجب كتابة الإصدار الأول من المترجم للمجمع في كود الآلة مترجم لغة المستوى أو مترجم موجود ، ولكن يمكن كتابة كل إصدار لاحق من هذا المترجم باللغة التي يقوم بتجميعها (في هذه الحالة المجمع) في حالة المترجمين المكتوبين بنفس اللغة التي يقومون بالتجميع من أجلها ، تُعرف "عملية التجميع" (وهي عملية ترجمة الإصدار عالي المستوى من المترجم إلى رمز آلي منخفض المستوى قابل للتنفيذ) باسم bootstrapping: الإصدار السابق من المحول البرمجي يقوم بترجمة رمز المجمع للإصدار الجديد من المترجم إلى رمز الآلة القابل للتنفيذ ومن ثم يمكن للإصدار الجديد من المترجم ترجمة إصدار المجمع الخاص به مرة أخرى.
تستخدم اللغات المترجمة ذات المستوى الأعلى (c ، c ++ ، haskell ، إلخ) عملية مماثلة.
هناك لغات برمجة تُعرف باسم "مترجم" (python و perl و LiSP وما إلى ذلك). هذه اللغات ، بدلاً من ترجمتها مرة واحدة في عملية تجميع ، تتم قراءتها بواسطة مترجم شفوي يقوم بتنفيذ تلك التعليمات الخاصة، تختلف عملية كتابة هذا المترجم كثيرًا عما وصفته أعلاه للغات المترجمة.
أخيرًا وليس آخرًا ، هناك لغات يتم تنفيذها في جهاز افتراضي (جافا مثال جيد). قد تستخدم هذه اللغات نموذجًا هجينًا ، حيث يتم تجميعها إلى لغة تعريفية خاصة برمز ثنائي أقل مستوى ثم تستخدم مزيجًا من الترجمة الفورية والتجميع في الوقت المناسب لتنفيذ تلك البرامج.