جريس هوبر هو من اخترع كومبايلر compiler مكتملاً ، وكتبه بلـغة الـ ( الفورتران ) ، وهي اول لغة high level واستغرقت 18 سنه حتى ظهرت .

معلومة :
- كل لغة خاصة بالكمبيوتر لها compiler .

 

الهدف من الـ compiler :
الهدف منه هو نفسه تعريفه وهو : التحويل من لغة عالية المستوى إلى لغة منخفضة المستوى .

 

 

شاهد الصورة لتفهم عمل الكومبايلر :

 

 

 

 

هذه الصورة توضيح بسيط عن عالم الكومبايلر وماهو عمله بالضبط .

 

مثال :
التحويل من لغة سي ++ , إلى لغة الاسمبلي .
- كون أن لغة السي ++ يفهمها الإنسان وهي عالية المستوى ، وكون لغة الاسمبلي صعبة على الإنسان وقريبة إلى الآلة وهي منخفضة المستوى .

 
أقسام الكومبايلر :

Input Routine:
و هو الجزء المسؤول عن قراءة الحروف و الرموز من ملفات اللغة و إعطائها إلى الـ Lexical Analyzer و يكون هذا الجزء معتمدا على نوع الآلة .

 

Lexical Anaylzer:
و هو المسؤول عن التعرف على الكلمات داخل الـ stream القادم من الـ input routine بهدف تحويل الكود الى مجموعة من الTokens كل منها يمثل جزء مفهوم من اللغة مثل IF و Then و Else فوظيفة كلٍ منهم  هي التعرف على الكلمات الاساسية في اللغة و كذلك التعرف على المتغيرات (بغض النظر إذا كان تم تعريفها ام لا) و أيضاً التعرف على الثوابت و الأرقام و غيرها .

 

Syntax Analyzer :
و هو المسؤول عن تجميع الـ Tokens من الـLexical Analyzer و تحويلها إلى جمل و تحديد ما إذا كانت الجمل صحيحة أم لا، على أساس مجموعة من الـ Production Rules التي يعرفها مسبقاً و يحدد إذا كانت الجمل صحيحة، و يحدد الأخطاء و أماكنها.

 
Semantic Analyzer:
و هذا الـ Module هو جزء من الـ Syntax Anaylzer و هو ينظر إلى معنى الجمل، أي أنه مثلاً يستطيع أن يتعرف على الأخطاء في الLogic الخاص بالبرنامج مثل تعريف متغير و عدم استخدامه أو استخدام متغير بدون تعريف أو استخدام متغير بدون قيمة ابتدائية.
و يكون الـ Output من الـ Syntax Analyzer ما يسمى Quadruples و هو مايشبه إلى حد ما الـ Assembly و إن كان مجرد لغة وسيطة يستطيع أن يفهمها الـ Code generator و يترجمها بسرعة إلى لغة الآلة.

Code Generator:
و هو الجزء الثاني الذي يعتمد على تصميم الآلة فهو الذي يتولى تحويل الـ Quadruples إلى Assembly او Machine Code

 
Code Optimizer :
و هو الذي يتولى مسؤولية تطوير الكود و إزالة التكرار الذي يؤدي إلى بطء التنفيذ و يعتبر أكثر الـ Modules في الـ Compilers تعقيداً و هو الذي يفرق Compiler عن آخر و يجعل Compiler رخيص و آخر غالي .