数学を学ぶことで分析スキルが向上し、ラテン/古典文学を学ぶことでライティングスキルが向上することに非常に似ています。
これらの言語を設計した人々は、プログラムの作成が何を意味するのかを熱心に考えてきました。そして、それらの言語はそれらの研究の結果です。
とは言っても、Javaを学ぶことはあなたをより良いプログラマーにすることにもなります。Cの学習。本当のメリットは、異なる哲学を持つ言語を学習することです。その後、プログラムの作成方法について独自の意見を持つことができます。
編集
この答えは、まだhaskellやlispを学んでいない人にはあまり役に立たないことを理解しています。ここに私が意味することをさらに説明するためのいくつかの例があります
LISP
Lispは、構文は最小限であるべきであり、すべてがリストまたはプリミティブであると考えています(LispはList Processingの略です)。プログラムでさえ、主に他のリストとシンボルを含むリストです。Lispを使用すると、プログラムをリストとして操作し、新しいプログラムをその場で生成できます。したがって、code is data and data is code
モットー全体。
直接的な結果は、Lisp言語を使用すると、必要なインターフェイスを定義できることです。良い例は、clojure Webフレームワークであるcompojureです。ルーティング機能は次のようになります
(defroutes app-routes
(GET "/" [] view/page)
(GET "/api" [] (wrap-aleph-handler api/socket-handler))
(route/resources "/static")
(route/not-found "page not found"))
もう1つの良い例は、しゃっくりテンプレートフレームワークです。
(html [:ul
(for [x (range 1 4)]
[:li x])])
ご覧のとおり、結果は口ひげのようなDSLのように簡潔ですが、などの言語機能を使用できます(for [x (range 1 4)] block)
。さらに良いことに、コードを抽象化して構造化するためのすべてのツールがあります。
他の言語では、構文はより複雑です。Javaプログラムを一連のリストとして読み取ることはできません。しかし、Lispを使用することにより、理想的なインターフェイスがどのように見えるべきか、コード内でデータとして抽象化できるものについて、より良いアイデアを得ることができます。また、お気に入りの言語をビッグデータ構造として認識し、そのセマンティクスをよりよく理解するのにも役立ちます。
ハスケル
Haskellは、強力な静的型付けと純度を信じています。純粋な関数は数学関数に似ています。値のセットで定義され、別のセットにマッピングされます。関数には副作用がなく、値は不変です。純度は、マルチパラダイム言語が持つことができるものではないため、興味深いものです。言語は純粋かそうでないかのどちらかです。
結果の1つは、いつでもIOアクションを実行できないことです(これは良いことだとハスケラーは信じています)。IOアクションはトランザクションとして定義され、それ自体が純粋な値です。main
haskellプログラムの値は、プログラムの実行時に実行されるIOトランザクションです。
プログラムのデータフローを明示的に処理する必要があります。グローバル変数の内容を読み書きすることにより、2つのコンポーネントを通信させることはできません。値を作成して渡す必要があります。
Jimmy Hoffaが言及したもう1つの機能は、リッチタイプシステムです。他の言語には静的型付けがありますが、haskellでは次のようなことができます。
length :: [a] -> Int
(aのリストからintへの関数)
map :: (a -> b) -> [a] -> [b]
(a to b
変換とaのリストを受け取り、bのリストを返す関数)
良いことは、これらの関数が実際に何をするかを説明する必要がないことです。あなたはすでにそれらの振る舞いを理解しています。さらに、これらのシグネチャを持つ関数は、リストの長さを計算し、リストに変換をマッピングする以外、実際には何もできません。
他の型付き言語では、クラス階層と可変性を組み合わせることで、これらの型を扱うのが悪夢になります。言語の観点から正しく理解することは不可能です(つまり、単純、強力、安全)。
安全なパス(scalaなど)を使用して本当に複雑な言語になるか、単純なパスを使用して制限(google go genericsはリストとマップに限定)または安全でない(常にdartジェネリック)共変)。
haskellを使用することで、主に純度の利点と、純粋なコードの書き方について学びます。