アインシュタインとClojure

| Comments

clojure, quote

文学や哲学の偉人達・概念とプログラミングを交錯させた、質の高い、好きな人は大変好きそうな記事 が多いブログ、「the literate proammer」からClojureの思想をよく現しているであろう、 粋な引用がされていたので紹介したくなった。

the literate programmer: Einstein on Clojure

It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience.

  • Albert Einstein, The Herbert Spencer Lecture, delivered at Oxford (10 June 1933)

ON THE METHOD OF THEORETICAL PHYSICS 「理論物理学の方法」、と題して行った、ハーバート・スペンサー記念講演からの言葉だ。 有名な言葉と思われるが、少しググってみても訳が見つからなかった。 なので以下に訳してみたのはいいが、話の前後関係を理解していないのと物理英語に関する適切なタームの感覚がないため、 意味の通った、こなれた文として表現するのが難しい、。

あらゆる理論の至上なる目標は、 実験から得た個々の知識に対する、適切な表現を見失うことなしに、 その理論を形成する還元不可能な基本要素をできる限り単純に、そして数を少なくすることである。 このことは到底、否定し得ない。

Strange loop conference の講演など、各方面で語っているように、 Rich Hickeyは Simple made easy という思想をClojure wayとして尊重している。 ブログ主は、これを表現する、ぴったりの言葉として、アインシュタインの言葉を引用しているのだと思う。

しかし、なのだが、どちらかというとこれは、Schemaのスタンスじゃないか?と思った。 僕はLispを学びたてであり、各Lisp diarectそれぞれが持つ細やかな感覚は理解できていないけれど、 単に古くからこれに近い思想を掲げているのがSchemeであり、Clojureよりも相応しいと思われるという観点からだ。

Clojureに興味を持ちたてのころには、以下の疑問が一般的に言って浮かぶと思う。

Common Lispとどう違うのか?Common Lispを置き換えるものなのか?

僕もやはりそうで、StackOverflowやQuoraなんかでしきりに情報を漁っていた。 そこでよく見られた回答としては、”Clojureはハイブリッド言語である”というものがある。 参考 :: Can Clojure eventually replace Common Lisp? - Quora

ハイブリッドであるというキーワードがやたら印象に残っていたため、 それはSchemaほど、- この言い方が正しいのかは分からないのだけど - “最小主義” に目線が向いていない という認識を僕は何となく持っていた。

ただWikipediaを確認したところ、重要なポイントが汲み取れそうな、以下の解説もある。

Clojure言語が並行コンピューティングを実現する手法は、 不変(イミュータブル)な状態の連鎖という概念によって特徴づけられる。 状態が不変であるため、ひとつの状態に対して複数の操作を並列に行うことができ、…(略

この”不変(イミュータブル)な状態の連鎖”というコンセプトを踏まえると、 やはりこの冒頭の引用文はClojureの性質をよく現している、ということになるのだろうか…

Comments