ダイクストラの手紙:プログラミング学習は関数型言語から始めるべき理由





「Pythonを学習言語として置き換える時です」 という記事の最近の翻訳は、多くの議論を巻き起こしました。 明らかに、プログラマーはこのトピックを非常に重要だと考えています。 残念ながら、議論のほとんどは命令型言語に関するものであり、プログラミングを教えるためのツールとして機能言語を提供したものはほとんどありませんでした。



Hexletでは、最近、ブラウザでのプログラミングに関する実践的な演習である重要な機能である新しいバージョンをリリースしました。 この点で、私たちは「どこから始めればよいか」などの質問で初心者プログラマーからさらに多くの手紙を受け取り始めました。 一方では、彼らは1週間でアプリケーションのベータ版をアプリストアに入れたいと考えています。 一方、このような短い時間では、おそらくアプリケーションのコーディング方法を学ぶことができますが、プログラミング方法を学ぶことはできないことを理解しています。 そして、どちらが優れているかを判断するのは困難です。プログラミング、アルゴリズム、およびその計算の複雑さを実際に理解せずに、できるだけ早く簡単なアプリケーションを作成する方法を教えてから、これらの重要なトピックに精通し始めるか、「最初から」始めて、アプリケーションと製品の作成に有機的に来ます基盤の開発。



2001年、 エドガーダイクストラはテキサス大学経済評議会に手紙を書きました。 その中で、有名な科学者は評議員に入門コースのプログラミング言語の変更について考えるよう奨励しています。 残念ながら、この言語はJavaに置き換えられました。 ほぼ同時期に、MITはコース「コンピュータープログラムの構造と解釈」の言語を機能的なScheme(LISP方言)からPythonに変更しました。



今日、私たちはこの手紙の翻訳を公開しています。



経済評議会のメンバー



Haskell関数型言語から命令型Java言語へのプログラミング入門コースの言語の置き換えについてのうわさについて書いています。 理事会は、誤ったレベルで決定が下されないように責任を負うべきだと思います。



ご覧のとおり、これは小さな詳細ではありません。 他の州の同僚(まだ!)テキサス州オースティンのような場所で私がどのように生き残ることができるか理解していない。保守的なテキサス州は平凡だと自動的に信じている。 私は通常、「心配しないで。 コンピュータサイエンス学科はかなり啓発された場所です。たとえば、プログラミングの入門コースでは、学生にHaskellを紹介します。 最初、彼らは信じません、そして、彼らはen望し始めます。 通常、彼らのカリキュラムは、PascalからC ++やJavaのようなものへの切り替えからまだ始まっていないことが判明しています。



初心者向けの関数型プログラミング言語を選択する正当な理由は、ほとんどの学生が命令型プログラミングに少し精通していることです。 関数型プログラミングの斬新さを見て、彼らはプログラミングが思っていたよりも広いことに気付きました。 そして、生徒は、学校のツールに精通していると定式化するのが非常に難しい(または不可能な)ソリューションに対する機能的なアプローチの優雅さにすぐに気付きます。



選択する基本的な理由は、関数型プログラムが命令型オブジェクトよりも数学オブジェクトに近いため、プログラミングの際の厳密な推論が簡単に説明できるためです。 「レイジーコンピューティング」を使用した関数型プログラミングの追加機能は、実用的な推論を引き起こす環境を提供することです。



最後に、特にHaskellとJavaを比較すると、Haskellは完璧ではありませんが、乱雑なJava(商業的に受け入れられる製品になるには幅広い広告キャンペーンと積極的な販売員が必要)よりも桁違いに優れています。 業界全体が低品質の設計を事実上の標準として受け入れているのは非常に悪いことです。 個人的には、大学はより健康的な代替物を海上に残すべきだと考えています。



チェロはミュージシャンに影響を与えるだけでなく、私たちは皆、一緒に仕事をすることを学んだツールの影響を受けます。この点で、プログラミングはさらにトリッキーです。 この事実により、最初のプログラミング言語の選択が非常に重要になります。



入門的なプログラミングコースを使用して、教育プロセス全体の基盤となる文化を作成したいと思います。 そして、学習は何かを忘れたり、学んだりする試みからは始まりません(これが可能であれば、過去になったものは永遠に残ります)。 この選択は、生徒に対する重大な責任を意味するため、ランダムな議長の良心に任せるべきではありません。 経済評議会によって作成されなければなりません。 この問題は、役人や政治家が決定することはできません。 政治家が必要です。










All Articles