1. ホーム
  2. language-agnostic

[解決済み] さまざまなアプローチやコンセプトを理解するために学ぶべき重要な言語とは?[クローズド]

2022-04-22 01:38:18

質問

ボルトカッターとウォッカのボトルしかないときは、すべてがウルフ・ブリッツァーのボートハウスのドアの鍵のように見える。(xkcdを読んでいない人は、ハンマーと釘に置き換えてください)。

現在、Clojure、Python、Java、PHPをプログラミングしているので、CやLISPの構文にも、ホワイトスペースの件にも精通しています。命令型、関数型、不変型、OOP、そしていくつかの型システムと他のことも知っています。今、私はもっと欲しいです!

異なるアプローチで、実用的なツール選びや理論的な理解のどちらにも役立つような言語があれば教えてください。

他の関数型言語(Haskell)や他の命令型OOP言語(Ruby)を学ぶ気にはなれないし、Brainfuckのような非実用的な楽しい言語を練習したいとも思わない。

私が非常に面白いと思ったのは、Factorのようなモノアイコンスタックベースの言語です。

ほとんどのコンセプトを理解し、すべての疑問に対する答えが得られたと感じたときに初めて、私の個人的な好みをすべて盛り込んだ自分だけのトイ・ランゲージを考え始めたいと思っています。

どのように解決するのか?

実用性の問題は非常に主観的なものなので、簡単に言うと、異なる言語のパラダイムを学ぶことは、より良いプログラマーになるために役立つというだけです。 それ以上に実用的なことがあるでしょうか?

関数型、ハスケル - 嫌だと言っていたけれど、本当に考え直した方がいい。 あなたはClojureやPythonで関数型に触れてきましたが、Haskellなしではそれを最大限に体験していないのです。 Haskellがどうしても嫌なら、MLかOCamlで妥協するのが良い。

宣言型、データログ - この枠ではPrologを推す人が多いのですが、宣言型言語の例としてはDatalogの方がわかりやすいと思います。

配列, J - 私はまだJを発見したばかりですが、見事な言語だと感じています。 あなたの心をプレッツェル状にねじ伏せてくれるでしょう。 あなたはJに感謝することになるでしょう。

スタック、ファクター/フォース - Factorは非常に強力なので、早速掘り下げてみようと思っています。 ForthはStack言語の大御所であり、おまけに 実装が簡単 を自分で作ることです。 実装を通して学ぶというのは、とてもいいことだと思います。

データフロー、オズ - オズの影響力は上向きで、今後もますます大きくなっていくと思います。

プロトタイプベース、JavaScript / Io / Self - Selfは、あらゆるプロトタイプベースの言語に多大な影響を与えた大御所である。 これはクラスベースのOOPとは違うし、同じように扱うべきでもない。 多くの人がプロトタイプ言語に来て、その場しのぎのクラスシステムを作りますが、もしあなたの目的が自分の頭を広げることであるなら、それは間違いだと思うのです。 その言語をフルに使ってください。 読む クラスを使わないプログラム編成 を参考にしてください。

エキスパートシステム、CLIPS - 私はいつもこれを勧めています。 Prologを知っていれば、スピードアップするのに有利でしょうが、非常に異なる言語なのです。

フリンク - Frinkは汎用言語ですが、単位変換の仕組みが有名です。 この言語には、最高のものを作ろうとする不屈の精神が感じられ、とても刺激的です。 それに、とても楽しいんですよ。

機能型+オプション型, Qi - あなたはいくつかの型システムの経験があると言いますが、"skinnable*な型システムの経験はあるのでしょうか? 誰も持っていません...でも、あるはずです。 Qiは多くの点でLispに似ていますが、その型システムはあなたの心を揺さぶることでしょう。

アクター+フォールトトレランス、Erlang - Erlangのプロセスモデルは話題になっていますが、そのフォールトトレランスとホットコードスワップ機構はゲームを変えるようなものです。 Clojureで学べないFPのことはあまり学べませんが、そのFT機能はなぜ他の言語がこれをうまくやれないのか不思議に思うことでしょう。

お楽しみに