ما هي لغات البرمجة التي لا تعتبر عالية المستوى؟ [مغلق

StackOverflow https://stackoverflow.com/questions/2624781

سؤال

في نظرية المعلوماتية ، أسمع وأقرأ عن اللغات عالية المستوى والمنخفضة المستوى طوال الوقت.

ومع ذلك ، لا أفهم لماذا لا يزال هذا مناسبًا لأنه لا توجد لغات منخفضة المستوى (ذات صلة) باستثناء التجميع المستخدم اليوم.

حتى تحصل:

مستوى منخفض

  • التجميع

بالتأكيد ليست منخفضة المستوى

  • ج
  • أساسي
  • فورتران
  • كوبول
  • ...

مستوى عال

  • C ++
  • روبي
  • بيثون
  • بي أتش بي
  • ...

وإذا كان Assembler منخفض المستوى ، فكيف يمكنك وضعه على سبيل المثال في نفس القائمة. أعني: C عالي المستوى مقارنة بالمجمع. نفس الشيء حتى بالنسبة لكوبول ، فورتران ، إلخ.

  • فلماذا يستمر الجميع في ذكر اللغات العالية والمنخفضة إذا كان المجمع هو اللغة الوحيدة ذات المستوى المنخفض؟
هل كانت مفيدة؟

المحلول

وفق ويكيبيديا, ، اللغات ذات المستوى المنخفض هي رمز الجهاز والتجميع.

من المصدر:

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

ثم ، للإجابة:

فلماذا يستمر الجميع في ذكر اللغات العالية والمنخفضة إذا كان المجمع هو اللغة الوحيدة ذات المستوى المنخفض.

لا أعرف من هو "الجميع" ، لكنني سأخمن أنه عندما لم تكن اللغات عالية المستوى لم تكن شائعة كما هي اليوم ، فقد كانت أكثر صلة بالتحدث عن المستوى المنخفض مقابل المستوى العالي (بسبب المستوى العالي (لأن كان هناك كمية كبيرة نسبيا من المبرمجين كتابة رمز تجميع). في العصر الحديث هو تمييز أقل أهمية. شخصياً ، نادرًا ما أسمع أشخاصًا يستخدمون هذه المصطلحات باستثناء التمييز بين التجميع أم لا (باستثناء تلك الأوقات التي قد تسمع فيها شخصًا نشأ على Python يشير إلى C أو C ++ على مستوى منخفض ، ولكن هذا ليس بروح التعريف الأصلي ).

نصائح أخرى

ستجد ذلك

العديد من الحقائق التي نتشبث بها تعتمد على وجهة نظرنا.

بالنسبة لمبرمج C ، يعد Assembler لغة منخفضة المستوى. بالنسبة لمبرمج Java ، C هي لغة منخفضة المستوى وما إلى ذلك.

أظن أن الناس في برمجة أول جهاز كمبيوتر مخزّن مع 1s و 0s كان يعتقد أن Assembler لغة عالية المستوى. انها كلها مرتبطة.

(اقتباس من عودة الجيداي)

أنت تطرح سؤالًا شخصيًا نسبيًا ؛ إنه سؤال حول المصطلحات ، تلك العامية ، والمنظور.

على سبيل المثال ، هل لغة عالية المستوى أو منخفضة المستوى؟ ماذا لو كان التنفيذ يعمل على جهاز lisp؟

في كثير من الأحيان ، عندما يحاول الناس بناء طيف من المستوى المنخفض إلى المستوى العالي ، فإن ما يحاولون تقديره هو درجة من "التقارب إلى الأجهزة" بدلاً من درجة "التجريد".

الصفات التي تحسب نحو قرب التنفيذ من الأجهزة:

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

خصائص الخصم التي تحسب تجاه تجريد التنفيذ من الجهاز:

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

قد تجعل الصفات الأخرى لغة مجردة للغاية مقارنة بالأجهزة التي تعمل عليها:

  • بناء الجملة ، بناء على البحث. (مثل Prolog)

مع وضع عوامل كهذه في الاعتبار ، سأراجع الطيف الذي كتبته على النحو التالي:

أدنى مستوى:

  • لغة التجميع للمنصة المعنية.

اللغات ذات المستوى المنخفض مع التحكم في التدفق عالي المستوى من التجميع:

  • C ، C ++
  • باسكال

اللغات عالية المستوى:

  • فورتران
  • كوبول
  • بيثون
  • بيرل

أعلى اللغات:

  • مقدمة
  • بيثون
  • مخطط

يظهر Python مرتين حسب النية - يمتد جزءًا من الطيف اعتمادًا على كيفية كتابة الرمز.

على المستوى المنخفض ، أود أن أضيف:

  • .NET IL
  • جافا JVM
  • رمز p الآخر المستخدم في بيئات مثل VB6

"مستوى" اللغة هو هدف متحرك. في عام 1973 ، كانت PL/I تعتبر لغة عالية المستوى. اليوم ، يعتبر C (على الأقل من قبل محترفي اللغة) كلغة منخفضة المستوى [انظر الحاشية]. بعض الأسباب:

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

قد تتضمن لغة عالية المستوى

  • دعم أنواع عدد صحيح مستقلة عن الجهاز المستهدف
  • الحساب العدائي الافتراضي لا يفيض أبدًا ما لم ينفد الجهاز من الذاكرة
  • سلاسل كقيم من الدرجة الأولى مع ، على سبيل المثال ، تسلسل مدمج في
  • إدارة الذاكرة التلقائية مع عدم وجود عنوان حساب
  • آمن

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

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

لماذا يستمر الجميع في ذكر اللغات عالية المستوى والمنخفضة؟

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

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


ملاحظة: لا تحسب بشدة على ويكيبيديا للحصول على معلومات جيدة عن لغات البرمجة ، خاصة إذا لم يستشهد مرجع ويكيبيديا بالمراجع أو المصادر

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

إلى حد كبير ، "المستوى المنخفض" و "المستوى العالي" وليس الفئات الثنائية ولكنها سلسلة متصلة. هناك بعض اللغات التي تكون منخفضة المستوى (التجميع ، رمز الجهاز) ، ولكن بعد ذلك لا يوجد سوى "المستوى الأعلى" و "المستوى الأدنى".

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

المجمع الثنائي منخفض المستوى

et il java jvm p-code p-code المستخدمة في بيئات مثل vb6

بالتأكيد ليست منخفضة المستوى

C Basic Fortran Cobol Python Perl Pascal

رفيع المستوى C ++ Ruby Python PHP Prolog Scheme

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top