大学のコースが今でも modula2 のような「学術」言語を使用する正当な理由はありますか?
-
30-09-2019 - |
質問
この質問 改良された現代言語が無料で利用できるのに、なぜ大学は依然として Modula2 のような言語で教えているのでしょうか?
たとえば、今でもパスカルを教えている大学はありますか?30年前は良かったんですが…今?なぜ?
なぜ Java、C#、Haskell ではないのでしょうか?
関連している:まだ LISP を教えるのは逆行でしょうか?
これは重複した質問ですか?そうでない場合は、コミュニティ Wiki のトピックにすべきだと思います。
解決
大学の仕事は、プログラミング言語を教えることではなく、プログラミングの概念を教えることです。彼らが使用する言語は、他のソースから既に生成または使用している教育資料に関してのみ関連しています。
カリキュラムをやり直すことは、大規模なアプリケーションを書き直すようなものだと思います - あなたが説得力のある理由がある場合にのみあなたがすること、そしてそれでもあなたはそれについて二度考えます。
他のヒント
改善された最新言語(Java、C#、Haskell)は無料で利用できますか?
それでは、「改善」とは、外部ライブラリとフレームワークがロードされ、非常に複雑な強力なことを意味しますか?初心者の学生が簡単に迷子になることができるねじれた小さな機能の迷路で?そして、彼らが紛失したとき、彼らは初心者が理解できないエラーメッセージを受け取りますか?
私たちの仕事は、50年後も関連する時代を超越した真実とスキルを教えることであるため、優れた大学はその日の人気の言語を教えるというプレッシャーに抵抗します。 (今日の大学生は、少なくとも70歳まで働くことを期待できます。)そのための私たちの最良のツールは、シンプルさ、シンプルさ、シンプルさです。モジュラ-2はかなり良い選択です。 (の最初の学生言語もそうです PLTスキーム.
私はHaskellが大好きで、研究でそれを非常に使用し、高度なクラスでそれを教えています。入門コースで教えるのに十分な支払いをすることはできませんでした。私は自分の喉を切ることになります。
なぜ Java や C# ではないのか...
既存のコード ベースと相互運用するための要件がない場合、Java や C# には、たとえば Smalltalk と比べてどのような利点があるのでしょうか?私は日中は C# プログラマーです (元 Java プログラマーです)。良い点も悪い点もいくつかありますが、本当に際立っている点の 1 つは、C# が信じられないほど複雑であるということです。C# の構文とセマンティクスの詳細な点について、ここにいくつの質問があるかを見てください。トリビアを教えていたら、学期や一年を無駄にしてしまいます。Modula-2 ははるかに単純で、多くの問題に完全に適しています。
アセンブリも学ぶ必要がありますが、Modula-2 からアセンブリに移行するほうが、C# からアセンブリに移行するよりもはるかに簡単なステップです。私は、Microsoft のプロフェッショナル ツールしか知らない大勢の生徒にアセンブリを教えたくありません。
関連している:まだ LISP を教えるのは逆行でしょうか?
(これを解釈するには約 50 通りの方法があります...)
それが低レベル言語の {before,after} で教えられているのを見て、代わりに {after,before} で教えるべきだと考えない限り、何が「逆」なのかわかりません。
同じことを行う別の言語を提案してもらえますか?(スモールトーク?前方へ?アイコン?要因?) たとえば、実際の OO システム (おそらく Java や C# よりも強力なシステム) の設計を確認したい場合は、以下を選択できます。 モップ 完全なソース コードを含む、すべてを短い本で確認できます。(Common Lisp は最も単純な Lisp 方言ではありませんが、C# や Java よりもはるかに単純であり、AMOP はとにかくその比較的小さなサブセットを使用します。) Java を使用してメタプログラミング、さらには複数のディスパッチをどのように教えますか?
または:Lisp の本来の目的は、アルゴリズムを構築するための構造としてチューリング マシンを置き換えることでした。(それは実際のプログラムを書くのにたまたま非常に便利です!) アルゴリズムを教えるためにチューリング マシンを使用する方がよいと示唆しているのでしょうか?それとも計算のモデリングには C# を使用しますか?チューリング マシンは 7 タプルです。C# 計算モデルにどれだけのコンポーネントが含まれるか想像できません。Lisp はそのギャップを完全に埋めてくれます。私はこの分野で他に 1 つまたは 2 つの言語しか見たことがありません。Forth が思い浮かびますが、何らかの理由で学界では普及していません。
……ハスケル?
素晴らしいアイデアだと思います。学校で習いました。繰り返しになりますが、その言語ファミリーのメンバーなら誰でも大丈夫だと思います。代わりに学校で ML を学べば、これ以上悪くなることはないと思います。概念は同じです。
それはベルリンとシカゴで機械工学を勉強するようなものです。言語は異なるかもしれませんが、概念は同じです。しかし、言語さえも何も知らない場合は、できるだけ簡単な言語から始めるのが合理的です。ベルリンでエンジニアになりたいがドイツ語が話せない場合、工学を学びながらドイツ語も学ぶのは理にかなっていますが、ドイツ語のみの工学の授業から始めるのは効果が低いというのが従来の考え方です。
私が考えることができる2つの理由、1つは良い、もう1つはそうではありません。 (そして私は教授でした。)
正当な理由:教育を簡素化する。イントロの学生を教えることは、ダイビングボードでひよこを放牧するようなものです。彼らが落ちる方法があれば、彼らはそうするでしょう。私がCを教えなければならなかったなら、私は私の髪を引き裂くでしょう、 char
, unsigned char
, char*
, char**
, char*[]
, char[10]*
, 、そのため、すべてが合法で異なることであり、それは木の上のいくつかの破片です。 2番目または3番目のコースでは、それは別の話です。
悪い理由:学問の自由。彼がそれが好きだったので、私たちは一人の人が遠くの解釈された言語を教えていました。別の人は、スプレッドシートのプログラミングを教えることを主張しました。なぜなら、それは「未来の波」だったからです。
この質問はしばらく前に処理されたようですが(私は言及された質問の質問者であるため)、最初の年にmodula2を学ぶ理由:すでに言及した理由は別として、それは取得するためです基本的なもの(ポインターなど)がどのように機能するかを把握する前に、Javaのようなものに関与する前に、すべてのものがプログラマーにはかなり見えない:)
この質問はかなり古く、多くの良い答えがあることに気付きました。それにもかかわらず、私はチャイムに入れたいです。
答えのほとんどは、「Modula-2はより簡単であるため、教える/学習しやすい」というテーマのバリエーションです。これは正しいですが、大学がModula-2を教えることを選択する必要があるのは、これがすべてのエルスの理論的根拠ではありません。
Modula-2を学部のコンピューターサイエンスの学生に教えることの最も重要な利点は、それが優れたハビットの形成と規律の浸透であることです。
「Modula-2の最も重要な利点は何ですか?」も参照してください。で:
http://modula-2.info/m2info/pmwiki.php/general/faq
厳格なプログラミングの規律、エンジニアリングの原則、良い習慣を順守する言語はほとんどありません。最も近代的で、特に人気のある言語のほとんどは、実際には反対のことを行い、悪い習慣を教えています。
厳格な言語の中で、モジュラ-2は最小の言語であり、小さな言語の中で、モジュラ2は最も厳しいものです。
この組み合わせにより、Modula-2は、ソフトウェアメカニックのための職業学校になりたくない大学に最適な選択肢になります。
これは厳しいように聞こえるかもしれませんが、ソフトウェア開発者がソフトウェアエンジニアと呼ばれることを目指している場合、エンジニアのように訓練され、エンジニアのように考えるべきであり、最も重要なことに、エンジニアが仕事に取り掛かるときに行動することです。
電気、機械、土木技術者には、何よりも安全で信頼性の高いものを構築する義務があります。いくつかの例外を除いて、ソフトウェアはその標準に応じてまったく存続しておらず、古典的なエンジニアリングの考え方の欠如がここで主要な要因です。たとえば、「早期にリリースされ、後で修正」という一般的な概念は、工学原則と正反対です。
LISP/ADA対C/Javaの問題は、情報学とプログラミングと同じです。 1つは科学で、もう1つは工芸です。