هل هناك سبب وجيه لدورات UNI لا تزال تستخدم لغات "أكاديمية" مثل Modula2؟

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

  •  30-09-2019
  •  | 
  •  

سؤال

هذا السؤال يطالبني بالسؤال - لماذا لا تزال الجامعات تدرس بلغات مثل Modula2 ، عندما تتوفر اللغات الحديثة المحسنة مجانًا؟

هل هناك Uni لا يزال يعلم Pascal ، على سبيل المثال؟ أعني ، لقد كان جيدًا منذ 30 عامًا ، لكن ... الآن؟ لماذا ا؟

لماذا لا Java ، C#، Haskell؟

ذات الصلة: هل من الخلف أن نظل تعليم Lisp؟


هل هذا سؤال مكرر؟ إذا لم يكن الأمر كذلك ، أعتقد أنه يجب أن يكون موضوع ويكي المجتمع.

هل كانت مفيدة؟

المحلول

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

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

نصائح أخرى

اللغات الحديثة المحسنة (Java ، C#، Haskell) متاحة مجانًا؟

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

تقاوم الجامعات الجيدة الضغط لتعليم اللغات الشائعة اليوم لأن مهمتنا هي تعليم الحقائق والمهارات الخالدة التي ستظل ذات صلة في 50 عامًا. (يمكن لطلاب الجامعة اليوم أن يتوقعوا العمل على الأقل حتى سن 70.) أفضل أدواتنا لذلك هي البساطة والبساطة والبساطة. Modula-2 هو خيار جيد جدا. (وكذلك هي لغة الطالب البداية مخطط PLT.

أنا أحب هاسكل ، استخدمه بشدة في البحث ، وقد علمته في فصول متقدمة. لا يمكنك أن تدفع لي بما يكفي لتعليمها في دورة تمهيدية - سأقوم بقطع حنجرتي.

لماذا لا جافا ، ج#، ...

في حالة عدم وجود متطلبات للتبادل مع قواعد التعليمات البرمجية الحالية ، ما هي ميزة Java أو C# ، على سبيل المثال ، SmallTalk؟ أنا مبرمج C# بعد يوم (ومبرمج Java السابق) وهناك بعض الأشياء الجيدة حول هذا الموضوع وبعض الأشياء السيئة ، ولكن الشيء الوحيد الذي يلتزم حقًا هو مدى تعقيدها بشكل لا يصدق. انظر إلى عدد الأسئلة الموجودة هنا حول النقاط الدقيقة لـ C# Syntax and Disantics. كنت تضيع الفصل الدراسي بالكامل أو السنة التدريسية التوافه. Modula-2 هو أبسط بكثير وكافي تمامًا للعديد من المشكلات.

تحتاج إلى تعلم التجميع أيضًا ، والانتقال من Modula-2 إلى التجميع هو خطوة أسهل بكثير من C# إلى التجميع. لا أرغب في محاولة تعليم التجميع لمجموعة من الطلاب الذين يعرفون فقط أدوات Microsoft الاحترافية.

ذات الصلة: هل من الخلف أن نظل تعليم Lisp؟

(هناك حوالي 50 طريقة مختلفة لتفسير هذا ...)

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

هل يمكنك اقتراح لغة أخرى تفعل ما تفعله؟ (SmallTalk؟ فورث؟ أيقونة؟ عامل؟) على سبيل المثال ، إذا كنت تريد رؤية تصميم نظام OO الحقيقي (ويمكن القول أنه أكثر قوة من Java أو C#) ، يمكنك التقاط ممسحة وشاهد كل شيء في كتاب قصير ، بما في ذلك رمز المصدر الكامل. (ليس شائعًا هو أبسط لهجة lisp ، لكنها أبسط بكثير من C# أو Java ، ويستخدم Amop مجموعة فرعية صغيرة نسبيًا منها على أي حال.) كيف يمكنك تعليم metaprogramming ، أو حتى إرسال متعددة ، مع Java؟

أو: كان الغرض الأصلي لـ LISP هو استبدال آلات Turing كبناء لبناء خوارزميات. (يحدث فقط أن يكون مفيدًا حقًا لكتابة البرامج الحقيقية!) هل تقترح أن تفضل استخدام آلات Turing لتدريس الخوارزميات؟ أو C# لنمذجة حساب؟ آلة Turing هي 7-TOPLE-لا أستطيع أن أتخيل عدد المكونات التي سيحتوي عليها نموذج حساب C#! يسد Lisp الفجوة تمامًا ، ولم أر سوى لغة أو لغتين أخريين في هذا المجال - يتبادر إلى الذهن ، ولكن لأي سبب من الأسباب ، لم تصبح شائعة في الأوساط الأكاديمية.

... هاسكل؟

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

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

سببين يمكنني التفكير فيهما ، واحد جيد ، واحد لا. (وكنت أستاذًا)

السبب الجيد: تبسيط التدريس. تدريس الطلاب هو مثل رعي الفراخ على لوحة الغوص. إذا كان هناك طريقة لهم للسقوط ، فسوف يفعلون ذلك. إذا اضطررت إلى تعليم C ، فسأقوم بتمزيق شعري ، ماذا char, unsigned char, char*, char**, char*[], char[10]*, ، وهكذا على كل شيء قانوني ومختلف ، وهذا مجرد بضع شظايا على الشجرة. للدورة الثانية أو الثالثة ، إنها قصة مختلفة.

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

على الرغم من أن هذا السؤال يبدو أنه قد تم التعامل معه منذ بعض الوقت ، إلا أنني أردت إضافة شيء ما (بما أنني مطلب السؤال المذكور :)) لماذا نتعلم modula2 في عامنا الأول: بصرف النظر عن جميع الأسباب المذكورة بالفعل ، فهي للحصول على قبضة على كيفية عمل الأشياء الأساسية (على سبيل المثال المؤشرات) قبل المشاركة في شيء مثل Java حيث كل هذه الأشياء غير مرئية إلى حد كبير للمبرمج :)

أدرك أن هذا السؤال قديم إلى حد ما وهناك العديد من الإجابات الجيدة. ومع ذلك ، أود أن تتناغم.

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

إن أهم فائدة من تدريس Modula-2 لطلاب علوم الكمبيوتر الجامعي هي أنها تشكل وتشكيل الانضباط.

انظر أيضًا "ما هي أهم فوائد Modula-2؟" في:

http://modula-2.info/m2info/pmwiki.php/general/faq

هناك عدد قليل جدًا من اللغات التي تقوم بتدريس الانضباط الصارم للبرمجة ، والالتزام بمبادئ الهندسة والعادات الجيدة. معظم اللغات الحديثة والشعبية بشكل خاص تفعل العكس في الواقع ، فإنها تعلّم العادات السيئة.

من بين اللغات الصارمة ، تعتبر Modula-2 الأصغر ، وبين اللغات الصغيرة ، تعتبر Modula-2 هي الأكثر صرامة.

يجعل هذا المزيج Modula-2 الخيار الأمثل لأي جامعة لا تريد فقط أن تكون مدرسة مهنية لميكانيكا البرمجيات.

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

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

مسألة LISP/ADA vs C/Java هي نفس البرمجة بالمعلوماتية مقابل البرمجة. واحد هو علم ، والآخر هو حرفة.

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