कंप्यूटर केवल Machine Language (0 और 1) को समझता है, जबकि प्रोग्रामर्स कोड को Assembly Language या High-Level Languages (C, Java, Python) में लिखते हैं। High-Level या Assembly Code को Source Code कहा जाता है।
Source Code को कंप्यूटर के समझने योग्य Machine Code (0/1) में बदलने वाले विशेष System Software को Language Translator / Language Processor कहते हैं।
| Translator Type | Input (Source Code) | Output (Target Code) | Execution Speed |
|---|---|---|---|
| Assembler | Assembly Language (Mnemonics) | Machine Code (0/1) | Very Fast |
| Compiler | High-Level Language (HLL) | Object Code / Machine Code | Fast (Post Translation) |
| Interpreter | High-Level Language (HLL) | Direct Execution (Line by Line) | Slower |
A. Assembler Low-Level Translator
यह Assembly Language में लिखे गए Symbolic Instructions (Mnemonics) को सीधे Machine Language (Binary) में परिवर्तित करता है।
- Input: Assembly Code (e.g., ADD, MOV, SUB).
- Output: Executable Binary Code.
- Feature: यह 1-to-1 Translation करता है (1 Assembly Instruction = 1 Machine Instruction).
B. Compiler High-Level Translator
यह पूरे Source Code को एक ही बार (All at once) स्कैन करता है और Machine Code (.exe / Object File) में ट्रांसलेट कर देता है।
- Working Style: Scan Whole Program ➞ Generate Object Code ➞ Show All Errors Together.
- Top Languages: C, C++, C#, COBOL.
- Memory Usage: अधिक (Object File को सेव करने के लिए Memory चाहिए)।
C. Interpreter High-Level Translator
यह High-Level Code को लाइन-दर-लाइन (Line-by-Line) चेक और एग्जीक्यूट करता है। यदि किसी लाइन में एरर आती है, तो निष्पादन वहीं रुक जाता है।
- Working Style: Read Line 1 ➞ Execute Line 1 ➞ Read Line 2.
- Top Languages: Python, JavaScript, PHP, Ruby, Perl.
- Debugging: आसान (क्योंकि गलती होने पर तुरंत उसी लाइन पर रुक जाता है)।
Line 2: Error ➞ Stop Here!
D. Hybrid Approach (Compiler + Interpreter) Modern Approach
कुछ आधुनिक भाषाएँ दोनों का प्रयोग करती हैं। पहले Compiler कोड को Bytecode / Intermediate Code में बदलता है, फिर Virtual Machine (JVM/PVM) उसे Interpret करती है।
- Examples: Java (JVM), Python (PVM).
- Benefit: Platform Independence (WORA - Write Once, Run Anywhere).
प्रतियोगी परीक्षाओं में सबसे ज्यादा प्रश्न इसी तुलनात्मक तालिका से पूछे जाते हैं:
| मापदंड (Parameter) | Compiler (कंपाइलर) | Interpreter (इंटरप्रेटर) |
|---|---|---|
| अनुवाद की विधि (Translation Method) | पूरे प्रोग्राम को एक साथ ट्रांसलेट करता है। | कोड को एक-एक लाइन करके (Line-by-Line) ट्रांसलेट करता है। |
| निष्पादन गति (Execution Speed) | काफी तेज़ (Fast Execution). | धीमी (Slower Execution). |
| ऑब्जेक्ट कोड (Object Code Generation) | Intermediate Object Code (.obj / .exe) बनाता है। | कोई Intermediate Object Code नहीं बनाता। |
| त्रुटि प्रदर्शन (Error Reporting) | पूरे प्रोग्राम के स्कैन होने के बाद सभी Errors एक साथ दिखाता है। | जैसे ही पहली एरर मिलती है, निष्पादन रुक जाता है। |
| मेमोरी आवश्यकता (Memory Requirement) | अधिक (Target Code स्टोर करने के लिए)। | कम (क्योंकि Object File सेव नहीं होती)। |
| डिबगिंग (Debugging Efficiency) | तुलनात्मक रूप से कठिन। | बहुत आसान और सुविधाजनक। |
| उदाहरण (Languages Used) | C, C++, FORTRAN, Pascal, Swift | Python, JavaScript, BASIC, PHP, Ruby |
कंपाइलर कुल 6 चरणों (Phases) में कार्य करता है:
- 1. Lexical Analysis (Scanner): कोड को छोटे-छोटे टुकड़ों (Tokens) में तोड़ता है।
- 2. Syntax Analysis (Parser): Parse Tree बनाकर Grammar चेक करता है।
- 3. Semantic Analysis: कोड के अर्थ (Meaning / Data Type consistency) की जाँच करता है।
- 4. Intermediate Code Generation: Machine-independent कोड तैयार करता है।
- 5. Code Optimization: कोड की स्पीड और मेमोरी उपयोग को बेहतर बनाता है।
- 6. Code Generation: अंतिम Target Machine Code जनरेट करता है।
अन्य सहायक प्रोग्राम (Utility Utilities):
- Linker: कंपाइलर द्वारा बनाई गई Object Files को आवश्यक Library Files के साथ जोड़कर अंतिम .exe फाइल बनाता है।
- Loader: निष्पादन (Execution) के समय Exe फाइल को Hard Disk से RAM (Main Memory) में लोड करता है।