質問

クラスは 2 週間前に始まったばかりなので、私はコースの 1 つを開始したところです。私たちは今そのコースの 1 つで Scheme を学んでいます。後で何らかの理由があると思いますが、今のところ彼が教えているのは基本的に Scheme での書き方です。 。私はここに座って眠らないようにしながら、なぜこれを知りたいのか、そしてなぜ誰かがそれを使うのかを理解しようとしているところです。何が優れているのでしょうか?来週、スキームで何かを書く方法以外に、ここで学ぶ目標は何なのかを彼に尋ねる予定です。

役に立ちましたか?

解決

これは関数型プログラミング言語であり、経験の幅を広げるのに役立ちます。

たとえ現実世界で使用しなかったとしても、価値がないわけではありません。これは再帰などを習得するのに役立ち、通常とは異なる方法で問題を考えるように強制するのに役立ちます。

願い 私の学校は私たちに関数型プログラミング言語を学ぶことを強制しました。

他のヒント

LISP (および非常に密接に関連する Scheme) のような言語は、プログラミングにとって、英語にとってのラテン語と同じです。

コースを受講した後は、通常の生活でラテン語を話すことは二度とないかもしれませんが、ラテン語のような言語を学ぶだけで英語を使用する能力が向上します。

スキームについても同様です。

ここにいる人たちは皆、実際に Scheme を二度と使うことはないだろうが、それでも Scheme は特定の考え方を強制するため、学ぶ価値のある言語であると言っているのを見かけます。これは真実かもしれませんが、Scheme は単に学習の練習としてではなく、最終的に役立つことが分かるので、ぜひ学習していただきたいと思います。

コンパイル言語のように驚くほど高速ではありませんし、Web サイトの提供やテキストの解析に特に役立つわけでもありませんが、シンプルさ、優雅さ、そして強力な関数操作に関しては、Scheme (および拡張による他の Lisp) に匹敵するものがないことがわかりました。複雑なデータ構造の。正直に言うと、Schemeだと思います。それは私が問題を解決する言語です。Scheme を諦めたり、単に容認したりしないでください。チャンスを与えてください。そうすれば失望することはありません。

ちなみに、Schemeに最適なIDEは ドクタースキーム, 、別の言語で実行できることを実行するための言語拡張機能が含まれており、実行できないものが見つかった場合は、C FFI を使用して自分で作成することができます。

Scheme の最大の強みは教育言語であるという人もいます。関数型プログラミングを学習することは非常に有益ですが (まったく新しい考え方です)、学習スキームのもう 1 つの利点は、それが「純粋」であることです。確かに、Java のようにたくさんのことはできませんが、それが Java の優れた点でもあり、完全に括弧、英数字、およびその他のほんの少数の句読点で構成される言語です。

私の入門コースでは Java を教えられていますが、多くの友人が「public static void main」に苦労しているのを見てきました。たとえそれがプログラムの本質ではなく、教授たちはそれを「ハンドウェーブ」する以外に選択肢がなかったにも関わらずです。さらに進んだものです。Scheme ではそれが見られません。

Java のような言語で実装するのが非常に難しい Scheme で簡単に何ができるかを本当に知りたい場合は、これを参照することをお勧めします。 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-12.html#%_sec_1.3

これはおそらく Scheme について書かれた最高の本です。

保管しておくことをお勧めします オープンマインド 学習するとき。学校にいるほとんどの時間、私たちは特定の科目をなぜ、何を学ぶのかを完全には理解していません。しかし、私が人生で約100万回経験したように、それは非常に便利であることがわかり、少なくともそれを認識していることはあなたの助けになります。信じられないかもしれませんが、Scheme はあなたをより良いプログラマーにします。

このスキームは、NASA によって一部の火星探査機をプログラムするために使用されました。マーケットプレイスでの使用法はかなり特殊ですが、先生がきっとおっしゃっているように、Scheme で学んだことはプログラミング全般に引き継がれます。

私の問題は、これを学習するときに、clip も一緒に学習したことです。自分の命を守るために、この二つの関係を維持することはできませんでした。

しかし、私が彼らから学んだのは、より優れた C および Java コードの書き方でした。これは単純に、私が学んだプログラミング スタイルが異なるためです。私は関数型スタイルを一部のプログラミングに適応させましたが、場合によってはそれが役に立ちました。

必要がなければ、スキームや Lisp でプログラミングすることは二度としたくありませんが、別のプログラミング方法を学ぶためだけに、少なくともそれらを少しだけやれてよかったと思っています。

括弧や car/cdr などの詳細に囚われないように注意してください。あなたが学んでいることのほとんどは、何らかの形で他の言語に翻訳されます。Scheme を市場に導入できるかどうかについて心配する必要はありません。おそらく、他のクラスで他のより市場性の高い言語を学ぶことになるでしょう。ここで学んでいることの方が重要です。

スキームを学習している場合は、オブジェクト システムがどのように実装されるかについてすべて学ぶことができます (ヒント:オブジェクト システムは、メソッドとインスタンス変数がバインドされている型を指すとは限りません...)。この種の知識は日常業務の 95% には役に立ちませんが、作業の 5% についてはその知識に依存することになります。

さらに、ストリーム/遅延評価、さらにはロジック プログラミングなど、まったく異なるスタイルの計算について学ぶことができます。また、一般的なコンピューター プログラムがどのように解釈されるかについてさらに詳しく学ぶこともできます。プログラム コードがどのように評価されるかという基本から、独自のインタプリタやコンパイラの作成などのより深い側面まで)。この種の情報を知っているかどうかが、優れたプログラマーと優れたプログラマーを分けるものになります。

Scheme は実際には関数型言語ではなく、メソッドに依存しない言語です。おそらくもっと重要なことは、Scheme は、さまざまな計算方法を試したい場合に選択するのに最適な言語であるということです。一例として、高度な並列関数型言語「Termite」が Scheme 上に構築されました。

つまり、スキームを学ぶ上でのポイントは、プログラミングの基礎を学べるようにすることです。

Scheme でのプログラミングをより楽しくするために助けが必要な場合は、遠慮せずに尋ねてください。多くのプログラマーは、(たとえば) 括弧にこだわっていますが、括弧を嫌いではなく大切にするスキーム ソース コードを操作するための完璧な方法があるにもかかわらずです。例として、paredit-mode、ある種のスキームインタラクションモード、およびhighlight-parthesis-modeを備えたemacsは非常に素晴らしいです。

Scheme のような関数型言語は、数学、人工知能、言語学、およびコンピューター サイエンスのその他の高度に理論的な領域 (機械学習、自然言語処理など) に非常に応用できます。これは、関数型プログラミング言語が純粋で副作用がないことと、高階のプロシージャを簡単にナビゲートできる機能によるものです。関数型プログラミング言語に関する豊富な知識は、コンピューター サイエンスの最先端を超えた多くの疑問を解決するために不可欠です。おまけに、高次の手続きや再帰もうまく扱えるようになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top