将来CLを書く予定がなくてもCLを学ぶ理由

おそらく、この記事は前の2つより前に公開されたはずで、このシリーズではCommon Lispについての私のシリーズですが、決して遅くない方が良いでしょう。



むかしむかし、Paul Grahamの記事を読んでCLを学び始めたとき、私はlispが他の言語をよりよく理解できるという主張にかなり懐疑的でした。実際、CLを知っているプログラマはせいぜい他の言語を学ぶでしょう数週間、そしてこの言語を知っているほとんどの人が数年間それを書いたよりもさらに上に書くでしょう。



しかし今、私はこの声明がまだ真実であるという結論に達しました。



信じて

90年代半ば以降、つまりCommon Lispの標準化以来、プログラミング言語に新しいアイデアは登場していません。



SBCLなどの最新のCL実装のいずれかを選択した場合、実装によって提供される標準ANSI CLとその拡張機能を多少理解すると、次のようなプログラミングパラダイムを理解および理解できます。





すべての主流言語、特にオブジェクト指向言語はCLのサブセットであり、独自の構文とタイピングの分野でいくつかの制限があることを直接確認します( CL型システムは非常にシンプルですが、同時に、無限に強力で完全に解決不可能ですダイナミクスでも)。



私自身の経験から、FFIと組み込みアセンブラーを使用すると、Cと通常のアセンブラーを操作するよりも理解するのに役立つことがわかっています。



難解な言語を含む多くの関数型言語は、CLを知った後はそれほど難解に見えず、原則として手のひらになります。



ある程度まで、最新のCL実装は、すべての言語に共通のコード最適化手法、多くの低レベルの概念(上記Cを参照)、マルチスレッドプログラミング、および一般的に並列処理に役立ちます(GoogleがMap Reduceのアイデアをどこで得たのか誰もが知っていますか?) 、そして複雑なシステムを構築するという原則さえあります(もちろん、これには経験が必要です)。



私は言語とプログラミングの一般的な概念についてのみ話し、特定のフレームワークとライブラリ、および言語の概念自体に直行するものについては話していませんが、それらを習得することで生産性が向上し、Lispからあなたに馴染みのあるパターンに気づき、構造化することができます情報をより速く。 個人的には、しばらく前にCLの経験がXMLの本質と目的をよりよく理解するのに役立ちました。また、グラフィカルインターフェイスとGUIフレームワークを構築する組織と一般原則を理解するのに役立ちました。



Haskellもあります、はい、彼らは「啓発する」とも言います。 しかし個人的には、Haskellは実際にLispで利用可能ないくつかの基本概念に対する構文糖衣であり、より一般的な方法でしかないと考えています。これにより、目立たなくなり、当然、義務も少なくなります。 これらの概念は次のとおりです。






All Articles