2週間前にクラスが始まったばかりなので、コースの1つを始めたばかりです。後で何らかの理由で推測するため、現在1つのコースでSchemeを学習していますが、彼が教えているのは基本的にスキームの書き方です。 。私がここに座って目を覚ましているとき、私はなぜこれを知りたいのか、そしてなぜ誰かがそれを使うのかを理解しようとしています。何が得意ですか?来週、私は彼に尋ねるつもりです。スキームで何かを書く方法以外に、ここで学ぶ目標は何ですか。
9 に答える
これは関数型プログラミング言語であり、経験を広げるのに役立ちます。
実世界で使わなくても、価値がないというわけではありません。これは、再帰などを習得するのに役立ち、通常とは異なる方法で問題を考えるように強制するのに役立ちます。
私の学校が関数型プログラミング言語を学ぶことを私たちに強制したいと思います。
LISP(および非常に密接に関連するScheme)のような言語は、ラテン語が英語に似ているようにプログラミングに関係しています。
コースを受講した後、通常の生活でラテン語を 1 日話すことはないかもしれませんが、ラテン語のような言語を学ぶだけで、英語を使用する能力が向上します。
同じことがSchemeにも当てはまります。
ここにいるすべての人が、Scheme を実際に二度と使用することはないだろうが、特定の考え方を強制するため、学ぶ価値のある言語であると言っているのを目にします。これは本当かもしれませんが、Scheme を学ぶことを願っています。なぜなら、Scheme は単なる学習の練習としてではなく、最終的に役に立つことがわかるからです。
コンパイルされた言語のように驚くほど高速ではなく、Web サイトの提供やテキストの解析に特に役立つわけでもありませんが、シンプルさ、優雅さ、および強力な関数操作に関しては、Scheme (および拡張による他の Lisp) に匹敵するものはありません。複雑なデータ構造の。正直なところ、私はSchemeで考えています。それは私が問題を解決する言語です。Scheme をあきらめたり、単に容認したりしないでください。チャンスを与えてください。失望することはありません。
ちなみに、Scheme に最適な IDE はDrSchemeで、別の言語でできることは何でもできる言語拡張機能が含まれています。できないことが見つかった場合は、C FFI を使用して自分で書くことができます。
学ぶときは心を開いておくことをお勧めします。学校ではほとんどの場合、特定の科目について、何を、なぜ、何を学んでいるのかを完全には理解していません。しかし、私が人生で約百万回経験したように、それは非常に有用であり、少なくともそれを認識することはあなたを助けます. 信じられないかもしれませんが、Scheme はあなたをより良いプログラマーにします。
Scheme の最大の強みは教育用言語だと言う人もいます。関数型プログラミングを学ぶことは非常に有益ですが (まったく新しい考え方です)、スキームを学ぶことのもう 1 つの利点は、それが「純粋」であることです。確かに、Java のように多くのことを行うことはできませんが、それが Java の優れている点でもあります。完全に括弧、英数字、およびその他のほんの一握りの句読点だけで構成された言語です。
私の入門コースでは、私たちは Java を教えられました。私の友人の多くが、'public static void main' に苦労しているのを見てきました。より高度です。これは Scheme では見られません。
Java のような言語で実装するのが非常に難しいケーキで Scheme ができることを本当に知りたい場合は、これを見ることをお勧めします: http://mitpress.mit.edu/sicp/full-text/book/本-ZH-12.html#%_sec_1.3
これはおそらく、Scheme について書かれた最高の本です。
スキームは、NASA が火星探査機の一部をプログラムするために使用されました。市場での使用法はかなり特殊ですが、先生が言っているように、Scheme で学んだことはプログラミング全般に引き継がれます。
括弧や car/cdr などの詳細にとらわれないようにしてください。あなたが学んでいることのほとんどは、何らかの形で他の言語に翻訳されます。あなたがSchemeを市場に出せるかどうか心配する必要はありません.他のクラスでもっと市場性のある言語を学ぶ可能性があります. ここで学んだことはもっと重要です。
スキームを学習している場合は、オブジェクト システムがどのように実装されているかについてすべてを学ぶことができます (ヒント: オブジェクト システムは、常にメソッドとインスタンス変数がバインドされた型に関するものではありません...)。この種の知識は日常業務の 95% には役に立ちませんが、業務の 5% はその知識に依存します。
さらに、ストリーム/遅延評価、さらには論理プログラミングなど、まったく異なるスタイルの計算についても学ぶことができます。また、コンピューター プログラムが一般的にどのように解釈されるかについても学ぶことができます。プログラムコードの評価方法の基本から、独自のインタープリターやコンパイラーの作成などのより深い側面まで)。この種の情報を知ることが、優れたプログラマーと優れたプログラマーを分けるものです。
スキームは実際には関数型言語ではなく、メソッドにとらわれない言語です。もっと重要なのは、Scheme は、さまざまな計算方法を探求したい場合に選択する優れた言語です。一例として、高度に並列な関数型言語「Termite」は、Scheme の上に構築されました。
要するに、プログラミングの基礎を学べるようにすることが学習スキームのポイントです。
スキームでのプログラミングをより楽しくするための助けが必要な場合は、遠慮なく質問してください。多くのプログラマーは (たとえば) 括弧に夢中になっています。スキーム ソース コードを操作するための完全に優れた方法があり、括弧を嫌いではなく、大切にするものになっているからです。例として、paredit-mode、ある種のスキーム相互作用モード、highlight-parenthesis-mode を備えた emacs は非常に素晴らしいものです。
私の問題は、これを学ぶときに、それと一緒にクリスプを学んだことでした。私は自分の命を救うために2つの海峡を保つことができませんでした。
私が彼らから学んだことは、より良いcとjavaコードを書く方法でした。これは、私が学んだプログラミングスタイルが異なるためです。私はより多くの機能的なスタイルを私のプログラミングのいくつかに適応させました、そしてそれはいくつかの場合に私を助けました。
必要がなければ、schemeやlispでプログラムしたくはありませんが、プログラムの別の方法を学ぶために、少なくとも少しはそれらでプログラムを作成できてうれしいです。