اذهب إلى المحتوى
  • 0

سؤال عن اللغات المفسرة والمترجمة

Anas Orfaly

السؤال

على حسب فهمي ان اللغات تنقسم لنصفين اللغات المفسرة والمترجمة

وفهمت ان لغة اللآلة صعبة التعلم بسبب انها تتكون من واحدات واصفار 
لكن سؤالي هو ان دام لغة اللآلة اسرع وتستهلك ذاكرة اقل ليه ما يكون فيه موقع او برنامج يحول الكود المكتوب باللغات المفسرة اوالمترجمة الى لغة اللآله

وطبعا في حال اردنا التعديل او تطوير حاجه معينه نقدر نحول الكود مره ثانيه للغه الي نحتاجها وكذا يكون سهل علينا
 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

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

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

فيما يخص إمكانية التعديل أو التطوير، يمكن تحويل الشيفرة المصدرية بين لغات البرمجة باستخدام أدوات تحويل اللغات (Language Converters)، ولكن يجب أن يتم ذلك بحذر، حيث قد يتسبب التحويل في فقدان بعض المعلومات أو التغييرات في البنية البرمجية.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 17 دقائق مضت قال Chihab Hedidi:

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

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

فيما يخص إمكانية التعديل أو التطوير، يمكن تحويل الشيفرة المصدرية بين لغات البرمجة باستخدام أدوات تحويل اللغات (Language Converters)، ولكن يجب أن يتم ذلك بحذر، حيث قد يتسبب التحويل في فقدان بعض المعلومات أو التغييرات في البنية البرمجية.

شكرا لك

اقتنعت الصراحه بجوابك واكثر شي هو ما انتبهت له ان اللغه تتكون من اصفار وواحدات وزي م قلت احتمالية الاخطاء الي ممكن تكون بتغيير احد الارقام بس وهذا ممكن انه يغير من الفكرة تماما

تم التعديل في بواسطة Anas Orfaly
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

اللغات عالية المستوى (High-level languages) (لغات البرمجة الشهيرة كلّها عالية المستوى) تنقسم إلى مترجمة (مثال: C, C++) ومفسّرة (مثال: Python، JavaScript)، هذا صحيح. أمّا ما يسمى بلغة الآلة فهو في حقيقته نبضات كهربائيّة، يعني 0 يرمز لمستوى تيّار منخفض، و 1 يرمز لمستوى تيّار مرتفع (يمكنك أن تتخيّل كيف يمكن لشخص عادي أن يكتب برنامجا باللعب على مستويات التيّار!).

بتاريخ 4 ساعة قال Anas Orfaly:

لكن سؤالي هو ان دام لغة اللآلة اسرع وتستهلك ذاكرة اقل ليه ما يكون فيه موقع او برنامج يحول الكود المكتوب باللغات المفسرة اوالمترجمة الى لغة اللآله

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

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

بتاريخ 4 ساعة قال Anas Orfaly:

وطبعا في حال اردنا التعديل او تطوير حاجه معينه نقدر نحول الكود مره ثانيه للغه الي نحتاجها وكذا يكون سهل علينا

  1. إذا كان المقصود العودة من لغة الآلة إلى الكود البرمجي، فيوجد برامج من هذا النوع تعرف بعاكسات الترجمة (Decompiler). لكن عكس الترجمة ليس بالسهولة التي يبدو عليها. أثناء عمليّة الترجمة، يقوم المترجم بحذف جميع البيانات التي لا تحتاجها الآلة للعمل، مثل التعليقات، وأسماء المتغيّرات والدوال، وأسماء الملفّات، وغير ذلك الكثير! المترجم يقوم بهذا من أجل إنشاء ملفّات صغيرة قدر الإمكان. لذلك، عندما يحاول عاكس الترجمة القيام بالعمليّة العكسيّة، فلن يستطيع استعادة هذه المعلومات المفقودة، وسيقوم بتوليد بيانات عشوائيّة مكانها، مما يجعل الكود المعكوس مختلفا كثيرا عن الكود الأصلي، لذلك لا يمكن التعويل على هذا النوع من البرامج إلا في الحالات الضرورية ومن قبل المختصّين في الهندسة العكسيّة (Reverse engineering) وهذا لوحده علم آخر يجب دراسته لمن هو مهتم بهذا المجال.
  2. أمّا إذا كنت تقصد تحويل الكود بين لغات البرمجة المختلفة، فهذا أيضا ممكن في الحالات البسيطة، وقد سهّلت أدوات الذكاء الاصطناعي القيام بهذه المهمّة، فيمكن لهذه الأدوات أن تقوم بتحويل الكود من لغة إلى أخرى بسرعة. لكننا هنا نتحدّث عن كود بسيط لا يستخدم أيّة مكتبات خارجية. أما في المشاريع المعقّدة التي تحوي عشرات المكتبات الخارجيّة، فالأمر صعب جدّا، لأن المكتبات المتوفّرة وطريقة عملها تختلف كثيرا من لغة إلى أخرى، كما أنّ قدرات اللغات تختلف فيما بينها، فمثلا، لغة JavaScript على المتصفّح لا تستطيع الوصول إلى الملفّات، بينما تستطيع العمل بكل سهولة على الصفحة التي يعرضها المتصفّح، بينما لغة Python تستطيع التعامل مع الملفّات بكل سهولة لكنّها لا تستطيع التعامل مع صفحات الويب المعقّدة بنفس كفاءة JavaScript.
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 ساعة قال حمزة عباد:

اللغات عالية المستوى (High-level languages) (لغات البرمجة الشهيرة كلّها عالية المستوى) تنقسم إلى مترجمة (مثال: C, C++) ومفسّرة (مثال: Python، JavaScript)، هذا صحيح. أمّا ما يسمى بلغة الآلة فهو في حقيقته نبضات كهربائيّة، يعني 0 يرمز لمستوى تيّار منخفض، و 1 يرمز لمستوى تيّار مرتفع (يمكنك أن تتخيّل كيف يمكن لشخص عادي أن يكتب برنامجا باللعب على مستويات التيّار!).

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

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

  1. إذا كان المقصود العودة من لغة الآلة إلى الكود البرمجي، فيوجد برامج من هذا النوع تعرف بعاكسات الترجمة (Decompiler). لكن عكس الترجمة ليس بالسهولة التي يبدو عليها. أثناء عمليّة الترجمة، يقوم المترجم بحذف جميع البيانات التي لا تحتاجها الآلة للعمل، مثل التعليقات، وأسماء المتغيّرات والدوال، وأسماء الملفّات، وغير ذلك الكثير! المترجم يقوم بهذا من أجل إنشاء ملفّات صغيرة قدر الإمكان. لذلك، عندما يحاول عاكس الترجمة القيام بالعمليّة العكسيّة، فلن يستطيع استعادة هذه المعلومات المفقودة، وسيقوم بتوليد بيانات عشوائيّة مكانها، مما يجعل الكود المعكوس مختلفا كثيرا عن الكود الأصلي، لذلك لا يمكن التعويل على هذا النوع من البرامج إلا في الحالات الضرورية ومن قبل المختصّين في الهندسة العكسيّة (Reverse engineering) وهذا لوحده علم آخر يجب دراسته لمن هو مهتم بهذا المجال.
  2. أمّا إذا كنت تقصد تحويل الكود بين لغات البرمجة المختلفة، فهذا أيضا ممكن في الحالات البسيطة، وقد سهّلت أدوات الذكاء الاصطناعي القيام بهذه المهمّة، فيمكن لهذه الأدوات أن تقوم بتحويل الكود من لغة إلى أخرى بسرعة. لكننا هنا نتحدّث عن كود بسيط لا يستخدم أيّة مكتبات خارجية. أما في المشاريع المعقّدة التي تحوي عشرات المكتبات الخارجيّة، فالأمر صعب جدّا، لأن المكتبات المتوفّرة وطريقة عملها تختلف كثيرا من لغة إلى أخرى، كما أنّ قدرات اللغات تختلف فيما بينها، فمثلا، لغة JavaScript على المتصفّح لا تستطيع الوصول إلى الملفّات، بينما تستطيع العمل بكل سهولة على الصفحة التي يعرضها المتصفّح، بينما لغة Python تستطيع التعامل مع الملفّات بكل سهولة لكنّها لا تستطيع التعامل مع صفحات الويب المعقّدة بنفس كفاءة JavaScript.

شكرا لك جدا 
كان جوابك اكثر من كافي لاغلاق جميع علامات الاستفهام الي عندي

فهمت الفكره الي ودك توصلها لي بالكامل

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...