الحواسيب لا تفهم سوى لغة 0/1 (لغة الألة):وهي تختلف باختلاف الجهاز حسب تركيبه الفيزيائي كما يمكن ان تختلف حسب نظام التشغيل ..
ولذلك نحن كبشر نواجه صعوبة كبيرة للتواصل المباشر مع الحواسيب وهذه الصعوبة دعت إلى ابتكار لغات برمجة (عالية المستوى )أقرب إلى اللغة اليومية للبشر ثم يتم ترجمتها أو تحويلها إلى لغة الألة المفهومة من قبل البشر....
وهنا تنقسم لغات البرمجة إلى قسمين:(حسب اسلوب الترجمة)
-لغة يتم compile ال source code مثل لغة ال c,c++,c# (ترجمة الملف كاملا دفعة واحدة قبل تشغيله)
اي عندما ننتهي من كتابة الكود نقوم بترجمته الى لغة الالة واخراجه على شكل .exe اي برنامج قابل للقراءة من قبل المعالج
-لغة يتم interpret السورس كود مثل بايثون وجافا سكريبت وجافة(ترجمته سطر سطر اثناء تشغيله)
وهنا عندما ننتهي من كتابة الكود نحتفظ بالسورس الكود او ملف وسيط byte code وهذا الملف يتم قراءته من خلال المترجم وترجمته سطر سطر اثناء تشغيل البرنامج.
وهذا الفيديو يشرح الفكرة بوضوح :
***************
هذه هي الاختلافات من حيث الكيفية ولكن كيف تؤثر هذه الاختلافات الكيفية على الاداء والعمل؟
1-لغات السي والسي شارب التي تعتمد compiler تخرج برنامجا جاهزا بلغة الالة للمعالجة من قبل المعالج ولذلك تكون قراءة البرنامج اسرع وبالتالي اداء البرنامج افضل بينما اللغات التي تقوم بinteprete فان الترجمة تكون اثناء تشغيل البرنامج ولذلك تشغيل البرنامج ابطا وبالتالي الأداء أبطأ
compiled programs have better performance than interpreted programs
2-اذا كان هناك خطأ برمجي (وليس منطقي ) في السورس كود فانه لن يتم عمل compile له ابدا قبل تصحيح الخطأ وبالتالي إما يكون الكود كاملا صحيحا أو لا يمكن تجريبه ابدا في السوق او العمل ولا يمكن تصحيح الخطا الا الى عند العودة للسورس كود
اما في حالة interpreted فان البرنامج يترجم سطر سطر وبالتالي يعمل بشكل جيد حتى الوصول الى الخطأ وبالتالي يمكن تجريب القسم من البرنامج الذي لا يحتوي خطأ وتعديل الخطأ مباشرة
3- عندما نقوم ب compile البرنامج فنحن نختار الجهاز الذي نريد ان نشغل عليه البرنامج والملف الصادر exe لا يعمل الا على الجهاز الذي قمنا بالترجمة الى لغة ألته
مثلا برنامج بلغة سي شارب من اجل تشغيله على لابتوب يجب ترجمته الى لغة الة والملف الصادر لا يعمل على بلي ستيشن لاختلاف لغة الالة الخاصة بها
اما عندما نقوم ب interpret فان الملف الصادر byte code يمكنه العمل على عدة منصات :حاسوب-موبايل-بلي ستيشن
(بشرط ان يكون الجهاز يحتوي على حزمة المترجم interpreter داخله ولذلك بعض البرامج والالعاب تطلب منك تحميل java JDE/JDK عليها حتى يمكن تشغيلها)
وهذا يحقق مبدأ( برمج مرة شغله اينما تريد )
code once run anywhere
*******************
هذه الاختلافات حسب الكيفية ولكن لماذا تختار لغة اسلوب ترجمة دون أخر؟
السبب الرئيسي تاريخي تجاري!!! ويعود الى السبب التجاري او الحاجة التي دعت الى تطوير اللغة في وقتها ...
مثلا لغة الجافا تم تطويرها استجابة لظهور عدة اجهزة (حواسيب -هواتف ذكية-اجهزة ذكية ) وعدة انظمة تشغيل(ويندوز -أبل -لينوكس)
ولذلك اضطروا الى استخدام interpreter حتى يمكن تشغيل الكود في كل هذه الاجهزة والانظمة
في حين ان لغات اخرى مثل الcobol(لغة لادارة الاعمال التجارية) اثرت الترجمة مباشرة الى لغة الألة compiler من أجل الحصول على اداء افضل ولو كان ذلك على منصة ونظام تشغيل واحد ....