لماذا مفهوم bytecode غير مناسب كما كان من قبل


مقدمة


اللغات المترجمة من النوع المفسر هي لغات البرمجة التي يتم تجميعها في نوع من التمثيل الوسيط (يشار إليها أحيانًا باسم " الرمز الثنائي "). المثال الأكثر لفتا هو JVM (Java Virtual Machine).


توضح هذه المقالة أفكاري حول مفهوم الآلة الافتراضية لبرمجة اللغات في الواقع الحالي. في الواقع ، حيث تعمل معظم الخدمات على الإنترنت ، ويتم التخلص التدريجي من برامج سطح المكتب.


أسباب الحدوث


في الوقت الذي ولدت فيه شبكة الويب العالمية ، ظهرت تقنية Java التي شاع فيها استخدام الآلة الافتراضية كبيئة وقت تشغيل للغات البرمجة عالية المستوى.


حاولت Sun Microsystems الجمع بين الموثوقية والسرعة العالية للغات المترجمة مع قابلية وسهولة استخدام اللغات المترجمة. إلى حد ما ، تم تحقيق الفكرة ، لأن Java لا يزال أصبح أكثر التقنيات شيوعًا في بناء الخوادم المحملة بدرجة عالية.


من بين أشياء أخرى ، تم طرح أحد المتطلبات الرئيسية للمنصة ، والتي أصبحت فيما بعد شعارًا - "تجميع مرة واحدة ، ركض في كل مكان!" . هذا يعني أنه يجب على المبرمج فقط ترجمة التعليمات البرمجية المصدر إلى ما يسمى bytecode ، وقادر على التشغيل على أي نظام حيث تم تثبيت JVM.


أصبحت هذه هي القوة الدافعة وراء التكنولوجيا ، ورمي العديد من اللغات في الخلفية. لقد كان هذا نوعًا من الثورة في عالم الحوسبة الرقمية ، لأنه قبل أن يتمكن أي شخص من تحقيق مستوى مماثل من المنصات المتقاطعة. يمكن الآن للمستخدمين تنزيل نفس الإصدار من البرنامج على العديد من أنظمة التشغيل وبنى المعالج ، وتأكد من أنه سيعمل بالتأكيد كما أراد المطورون.


لكن الأوقات تتغير ، والتكنولوجيا معهم. تكتسب شبكة الويب العالمية المزيد والمزيد من الشعبية ، حيث تزاحم بعض الأشياء المألوفة لنا.


عصر الخدمات عن بعد


"لماذا تقدم البرامج إلى المستخدمين إذا كان بإمكانك إنشاء موقع ويب فقط؟" - طرح هذا السؤال من قبل رواد الأعمال الكبار ، مما أدى فيما بعد إلى هجرة واسعة النطاق للخدمات إلى شبكة الويب العالمية. بدأت برامج سطح المكتب القياسية تفقد شعبيتها ، لأنه من الأسهل والأكثر كفاءة إنشاء موقع ويب بسيط (أو غير ذلك).


وبالتالي ، فقد اختفت الحاجة إلى تنزيل البرامج من الإنترنت كثيرًا. افتح موقعًا واتخذ الإجراءات اللازمة بشكل أسرع بكثير من تنزيل ميغابايت من البيانات الثنائية.


وفي الوقت نفسه ، اكتسبت Java شعبية في بناء تلك المواقع بالذات ، لأنه لم يكن هناك شيء أكثر ملاءمة في ذلك الوقت (حتى يومنا هذا). بدأت الملفات المصدر يتم تجميعها فقط من أجل بنية خادم محددة ، وبالتالي ، فإن مبدأ "ترجمة مرة واحدة ، يعمل في كل مكان!" توقفت عن أن يكون لها معناها السابق . توقف المستخدمون عن تنزيل البرامج ، وبدأ المطورين في التجميع فقط لبنية محددة.


تطور اللغة


في السابق ، كانت لغات البرمجة المترجمة لها وظيفة ضعيفة للمكتبة القياسية ، ولهذا السبب كان من الضروري استخدام الكثير من الوظائف المعتمدة على النظام الأساسي حتى بالنسبة لتطبيق بسيط لا يفعل أي شيء خارق للطبيعة.


كما أن لغات البرمجة لم تقف مكتوفة الأيدي ، وظهرت لغات مثل Rust و Golang ، التي تم تجميعها ، إلى النور ، ولكل منهما مكتبة قياسية وعدة أطراف توفر وظائف مستقلة عن الهندسة المعمارية ونظام التشغيل. بالإضافة إلى ذلك ، النظام البيئي C / C ++ أيضًا لم يقف ساكنا.


ونتيجة لذلك ، تبين أن المكتبات القياسية والأجهزة الظاهرية الحديثة تؤدي نفس الدور - فهي تترجم الشفرة عبر النظام الأساسي إلى وظائف تعتمد على النظام الأساسي.


بقية


قد يقول البعض أنه لا يزال هناك طلب على برامج سطح المكتب. في الأساس ، هذه برامج مغلقة مخصصة للاستخدام الداخلي في الشركات ، بالإضافة إلى عدد صغير من التطبيقات المتاحة للجمهور.


في كلتا الحالتين ، لا يعد التجميع لمئات الأنظمة الأساسية المختلفة منطقيًا ، حيث أنه في الغالبية العظمى من الحالات لا يتم استخدام سوى ثلاثة أنظمة تشغيل معروفة ( GNU / Linux و Microsoft Windows و Mac OS ) وعائلة واحدة من بنيات المعالج ( x86 ).


استنتاج


إجمالًا ، لدينا أجهزة افتراضية تبطئ من عملهم (مثل أوقات تشغيل النظام الثانوي) ، والتي فقدت ميزاتها الرئيسية بسبب العاملين أعلاه:


  1. إن الحاجة إلى تشغيل البرنامج على مئات من البنى المختلفة ليست منطقية ، لأن معظم البرامج تعمل على الخوادم ، ولا يوجد الكثير من بنيات المستخدم وأنظمة التشغيل.
  2. لم تتوقف اللغات المترجمة ، واكتسبت مكتباتها القياسية الوظيفة الأساسية اللازمة لرمز النظام الأساسي المشترك.

نرحب بالمناقشات في التعليقات ، وآمل أن يكون المقال قد دفعك لبعض الأفكار حول اختيار اللغة المناسبة لمهامك.


المكملات الغذائية


كما هو موضح في التعليقات ، فإن الكود المدار له بعض المزايا التي لا تتوفر للشفرة المترجمة ، بما في ذلك الانعكاس والشروح.

Source: https://habr.com/ru/post/ar454562/


All Articles