平均を打ち負かす
スタートアップを始めたいですか? Y Combinatorから資金調達を受けましょう。
2001年4月、2003年4月改訂
(この記事は、2001年のFranz Developer Symposiumでの講演に基づいています。)
1995年の夏、友人のRobert Morrisと私はViawebというスタートアップを始めました。私たちの計画は、エンドユーザーがオンラインストアを構築できるソフトウェアを作成することでした。当時、このソフトウェアの斬新だった点は、通常のWebページをインターフェースとして使用し、当社のサーバー上で実行されることでした。
もちろん、多くの人が同時にこのアイデアを持っていた可能性がありますが、私が知る限り、Viawebは最初のWebベースのアプリケーションでした。それは私たちにとって非常に斬新なアイデアだったので、会社名をそれにちなんで付けました。Viawebは、ソフトウェアがデスクトップコンピューター上で実行されるのではなく、Web経由で動作するためです。
このソフトウェアのもう1つの珍しい点は、主にLispと呼ばれるプログラミング言語で記述されていたことです。当時としては、Lispで記述された最初の大きなエンドユーザーアプリケーションの1つであり、それまでは主に大学や研究所で使用されていました。[1]
秘密兵器
Eric Raymondは「ハッカーになる方法」というエッセイを書いており、その中で、ハッカー志望者に学ぶべき言語を教えています。彼は、PythonとJavaは学びやすいので、まずそれらから始めることを勧めています。真剣なハッカーは、UnixをハックするためにC、システム管理とcgiスクリプトのためにPerlも学びたいと思うでしょう。最後に、真に真剣なハッカーはLispを学ぶことを検討すべきです。
Lispは、最終的に理解したときに得られる深遠な啓発体験のために学ぶ価値があります。その体験は、実際にLisp自体をあまり使用しなくても、残りの人生であなたをより良いプログラマーにするでしょう。
これは、ラテン語を学ぶことについてよく聞く議論と同じです。古典学の教授として働く場合を除き、仕事を得ることはできませんが、あなたの心を改善し、英語のように使用したい言語でより良いライターになるでしょう。
しかし、ちょっと待ってください。この比喩はそこまで通用しません。ラテン語で仕事を得られない理由は、誰も話さないからです。ラテン語で書いても、誰もあなたを理解できません。しかし、Lispはコンピューター言語であり、コンピューターはプログラマーであるあなたが指示する言語を話します。
したがって、Lispが彼が言うようにあなたをより良いプログラマーにするなら、なぜそれを使いたくないのですか?もし画家が彼をより良い画家にするブラシを提供されたら、彼はすべての絵でそれを使いたいと思うでしょう、そう思いませんか?私はここでEric Raymondをからかおうとしているのではありません。全体として、彼のアドバイスは良いです。彼がLispについて言っていることは、ほぼ従来の知恵です。しかし、従来の知恵には矛盾があります。Lispはあなたをより良いプログラマーにするでしょう、しかしあなたはそれを使わないでしょう。
なぜですか?プログラミング言語は結局のところ単なるツールです。Lispが本当に優れたプログラムを生み出すなら、それを使うべきです。そうでなければ、誰が必要ですか?
これは単なる理論的な問題ではありません。ソフトウェアは非常に競争の激しいビジネスであり、自然独占になりがちです。ソフトウェアをより速く、より良く書く会社は、他のすべての条件が同じであれば、競合他社を廃業させます。そして、スタートアップを始めるとき、あなたはこれを非常に痛感します。スタートアップは、すべてか無かの命題になる傾向があります。金持ちになるか、何も得られないかのどちらかです。スタートアップでは、間違ったテクノロジーに賭けると、競合他社に打ちのめされます。
Robertと私は2人ともLispをよく知っており、私たちの直感を信じてLispを使う理由が見当たりませんでした。他の誰もがC++またはPerlでソフトウェアを書いていることを知っていました。しかし、それが何の意味もないことも知っていました。そのようにテクノロジーを選択した場合、Windowsを実行することになります。テクノロジーを選択するときは、他の人が何をしているかを無視し、何が最も効果的かを検討する必要があります。
これは、スタートアップでは特に当てはまります。大企業では、他のすべての企業が行っていることを行うことができます。しかし、スタートアップは他のすべてのスタートアップが行うことはできません。スタートアップでさえ、多くの人がこれに気づいていないと思います。
平均的な大企業は、年間約10%の成長率です。したがって、大企業を経営していて、平均的な大企業が行う方法ですべてを行う場合、平均的な大企業と同じようにうまくいくと予想できます。つまり、年間約10%の成長です。
もちろん、スタートアップを経営している場合も同じことが起こります。平均的なスタートアップが行う方法ですべてを行う場合、平均的なパフォーマンスを期待する必要があります。ここでの問題は、平均的なパフォーマンスは廃業することを意味するということです。スタートアップの生存率は50%をはるかに下回っています。したがって、スタートアップを経営している場合は、何か変わったことをしているはずです。そうでなければ、あなたは困ったことになります。
1995年に、私たちの競合他社が理解していなかったこと、そして今でも理解している人がほとんどいないことを私たちは知っていました。それは、自分のサーバーでのみ実行する必要があるソフトウェアを作成する場合、好きな言語を使用できるということです。デスクトップソフトウェアを作成する場合、オペレーティングシステムと同じ言語でアプリケーションを作成する傾向が強くなります。10年前、アプリケーションを作成するということは、Cでアプリケーションを作成することを意味していました。しかし、Webベースのソフトウェアでは、特に言語とオペレーティングシステムの両方のソースコードがある場合は、好きな言語を使用できます。
ただし、この新しい自由は諸刃の剣です。どの言語でも使用できるようになったので、どの言語を使用するかを検討する必要があります。何も変わっていないふりをしようとする企業は、競合他社がそうではないことに気づくリスクがあります。
どの言語でも使用できる場合、どれを使用しますか?私たちはLispを選びました。1つには、この市場では迅速な開発が重要になることは明らかでした。私たちは皆ゼロからスタートしていたので、競合他社よりも先に新しい機能を完成させることができる会社は大きなアドバンテージを持つでしょう。Lispはソフトウェアを迅速に作成するための非常に優れた言語であり、サーバーベースのアプリケーションは迅速な開発の効果を拡大することを知っていました。なぜなら、ソフトウェアが完成するとすぐにリリースできるからです。
他の企業がLispを使いたくないなら、それはそれで良いことです。それは私たちに技術的な優位性をもたらす可能性があり、私たちはできる限りの助けが必要でした。Viawebを始めたとき、私たちはビジネスの経験がありませんでした。マーケティング、人材採用、資金調達、顧客獲得について何も知りませんでした。私たち2人とも、いわゆるまともな仕事をしたことさえありませんでした。私たちが得意だったのは、ソフトウェアを書くことだけでした。それが私たちを救うことを願っていました。ソフトウェア部門で得られる可能性のあるアドバンテージはすべて活用しました。
したがって、Lispの使用は実験だったと言えます。私たちの仮説は、Lispでソフトウェアを作成すれば、競合他社よりも速く機能を完成させることができ、競合他社ができないことをソフトウェアで行うことができるだろうということでした。そして、Lispは非常に高レベルなので、大規模な開発チームは必要なく、コストを削減できます。もしそうなら、より良い製品をより少ないお金で提供し、それでも利益を上げることができます。最終的にはすべてのユーザーを獲得し、競合他社は誰も獲得せず、最終的には廃業することになります。とにかく、それが私たちが起こることを願っていたことです。
この実験の結果はどうでしたか?やや驚くべきことに、それはうまくいきました。最終的には多くの競合他社がいましたが、その数は20〜30社程度でしたが、彼らのソフトウェアは私たちのソフトウェアと競争できませんでした。サーバー上で実行され、デスクトップアプリケーションのように感じられるwysiwygオンラインストアビルダーがありました。競合他社はcgiスクリプトを持っていました。そして、私たちは常に機能で彼らをはるかにリードしていました。時には、必死になって、競合他社は私たちが持っていない機能を導入しようとすることがありました。しかし、Lispを使用すると、開発サイクルが非常に速いため、競合他社がプレスリリースで発表してから1〜2日以内に新しい機能を複製できることがありました。プレスリリースを報道するジャーナリストが私たちに電話をかける頃には、私たちも新しい機能を持っているでしょう。
競合他社には、私たちが何らかの秘密兵器を持っているように見えたに違いありません。つまり、彼らのEnigmaトラフィックを解読しているか何かです。実際、私たちは秘密兵器を持っていましたが、彼らが考えていたよりも単純でした。彼らの機能のニュースを私たちにリークしている人はいませんでした。私たちは、誰もが考えられるよりも速くソフトウェアを開発することができただけです。
私が9歳くらいのとき、Frederick Forsythの「ジャッカルの日」を手に入れました。主人公は、フランス大統領を暗殺するために雇われた暗殺者です。暗殺者は、警察を通過して大統領のルートを見下ろすアパートに行かなければなりません。彼は松葉杖をついた老人として変装して彼らのすぐそばを歩き、彼らは彼を疑いません。
私たちの秘密兵器は似ていました。私たちは奇妙なAI言語でソフトウェアを書き、括弧でいっぱいの奇妙な構文を使用しました。長年、Lispがそのように説明されるのを聞いてうんざりしていました。しかし今、それは私たちに有利に働きました。ビジネスでは、競合他社が理解していない技術的な優位性ほど価値のあるものはありません。ビジネスでは、戦争と同様に、驚きは力と同じくらい価値があります。
そして、少し恥ずかしいのですが、Viawebに取り組んでいる間、Lispについて公に何も言いませんでした。私たちはそれをプレスに言及したことはなく、WebサイトでLispを検索しても、私の略歴にある2冊の本のタイトルしか見つかりませんでした。これは偶然ではありません。スタートアップは、競合他社にできるだけ少ない情報を提供する必要があります。彼らが私たちのソフトウェアがどの言語で書かれているかを知らなかったり、気にしなかったりした場合、私はそれをそのようにしておきたかったのです。[2]
私たちのテクノロジーを最もよく理解していたのは顧客でした。彼らはViawebがどの言語で書かれているかを気にしませんでしたが、それが非常にうまく機能することに気づきました。それにより、文字通り数分で素晴らしい外観のオンラインストアを構築できました。そして、口コミで、ますます多くのユーザーを獲得しました。1996年末までに、約70のストアがオンラインになりました。1997年末には500になりました。6か月後、Yahooが私たちを買収したとき、1070人のユーザーがいました。今日、Yahoo Storeとして、このソフトウェアはその市場を支配し続けています。これはYahooのより収益性の高いものの1つであり、それを使用して構築されたストアはYahoo Shoppingの基盤です。私は1999年にYahooを退職したので、現在ユーザーが何人いるかは正確にはわかりませんが、最後に聞いたところでは約20,000人でした。
Blubのパラドックス
Lispの何がそんなに素晴らしいのですか?そして、Lispがそんなに素晴らしいなら、なぜ誰もがそれを使用しないのですか?これらはレトリックな質問のように聞こえますが、実際には簡単な答えがあります。Lispがそれほど優れているのは、信者だけに見える魔法の品質のためではなく、単に利用可能な最も強力な言語であるためです。そして、誰もがそれを使用しない理由は、プログラミング言語は単なるテクノロジーではなく、心の習慣でもあるからです。もちろん、これらの答えはどちらも説明が必要です。
まず、衝撃的な物議を醸す発言から始めます。プログラミング言語は能力が異なります。
少なくとも、高水準言語が機械語よりも強力であることは、ほとんどの人が異議を唱えないでしょう。今日のほとんどのプログラマーは、通常、機械語でプログラミングしたくないことに同意するでしょう。代わりに、高水準言語でプログラミングし、コンパイラーにそれを機械語に翻訳させる必要があります。このアイデアは、ハードウェアにも組み込まれています。1980年代以降、命令セットは人間のプログラマーではなくコンパイラー向けに設計されています。
プログラム全体を手作業で機械語で記述するのは間違いであることは誰もが知っています。あまり理解されていないのは、ここにはより一般的な原則があるということです。つまり、いくつかの言語を選択できる場合、他のすべての条件が同じであれば、最も強力な言語以外でプログラミングするのは間違いです。[3]
このルールには多くの例外があります。特定の言語で記述されたプログラムと非常に密接に連携する必要があるプログラムを作成する場合は、同じ言語で新しいプログラムを作成することをお勧めします。数値計算やビット操作など、非常に単純なことを行うだけのプログラムを作成する場合は、抽象度の低い言語を使用してもかまいません。特に、わずかに高速になる可能性があるためです。また、短い使い捨てプログラムを作成する場合は、タスクに最適なライブラリ関数を持つ言語を使用する方が良い場合があります。しかし一般的に、アプリケーションソフトウェアでは、入手できる最も強力な(合理的に効率的な)言語を使用する必要があります。それ以外のものを使用することは、機械語でプログラミングするのとまったく同じ種類の間違いです。ただし、程度は低い可能性があります。
機械語が非常に低レベルであることがわかります。しかし、少なくとも一種の社会的慣習として、高水準言語はすべて同等に扱われることがよくあります。そうではありません。技術的には、「高水準言語」という用語は、非常に明確な意味を持ちません。片側に機械語、もう片側にすべての高水準言語があるという境界線はありません。言語は、最も強力なものから機械語まで、抽象度の連続体に沿って分類されます。機械語自体も能力が異なります。[4]
Cobolについて考えてみましょう。Cobolは、機械語にコンパイルされるという意味で、高水準言語です。CobolがPythonと同等の能力を持っていると真剣に主張する人はいますか?おそらくPythonよりも機械語に近いでしょう。
またはPerl 4はどうですか?Perl 4とPerl 5の間で、レキシカルクロージャが言語に追加されました。ほとんどのPerlハッカーは、Perl 5がPerl 4よりも強力であることに同意するでしょう。しかし、それを認めたら、1つの高水準言語が別の高水準言語よりも強力になる可能性があることを認めたことになります。そして、特別な場合を除き、入手できる最も強力なものを使用する必要があることが必然的に続きます。
ただし、このアイデアはめったに結論までたどり着きません。ある程度の年齢になると、プログラマーは自発的に言語を切り替えることはめったにありません。人々が使い慣れている言語は、十分に優れていると考える傾向があります。
プログラマーは自分の好きな言語に非常に愛着を持っており、誰かの気持ちを害したくないので、この点を説明するために、Blubと呼ばれる架空の言語を使用します。Blubは、抽象度の連続体の真ん中に位置します。最も強力な言語ではありませんが、Cobolや機械語よりも強力です。
そして実際、私たちの架空のBlubプログラマーはどちらも使用しません。もちろん、彼は機械語でプログラミングしません。それがコンパイラーの目的です。そして、Cobolに関しては、彼がどのようにして何かを成し遂げることができるのかわかりません。x(選択したBlub機能)さえありません。
私たちの架空のBlubプログラマーが能力の連続体を下に見ている限り、彼は下を見ていることを知っています。Blubよりも能力の低い言語は、彼が慣れている機能が欠けているため、明らかに能力が低いです。しかし、私たちの架空のBlubプログラマーが反対方向に、能力の連続体を上に見るとき、彼は上を見ていることに気づきません。彼が見ているのは、単に奇妙な言語です。彼はそれらをBlubと同等の能力を持っていると考えていますが、他のすべての厄介なものが追加されています。Blubは彼にとって十分に優れています。なぜなら、彼はBlubで考えているからです。
ただし、能力の連続体の上位にある言語を使用しているプログラマーの視点に切り替えると、彼はBlubを見下していることがわかります。Blubでどのようにして何かを成し遂げることができますか?yさえありません。
帰納法により、さまざまな言語間の能力の違いをすべて見ることができる立場にあるプログラマーは、最も強力な言語を理解しているプログラマーだけです。(これはおそらく、Eric RaymondがLispがあなたをより良いプログラマーにすると言った意味でしょう。)他の人の意見を信用することはできません。なぜなら、Blubのパラドックスがあるからです。彼らは自分が使用している言語に満足しています。なぜなら、それがプログラムについて考える方法を決定するからです。
私は高校生のときにBasicでプログラムを書いていた自分の経験からこれを知っています。その言語は再帰さえサポートしていませんでした。再帰を使用せずにプログラムを書くことは想像しにくいですが、当時はそれを恋しく思いませんでした。私はBasicで考えていました。そして、私はそれに長けていました。私が調査したすべてのマスター。
Eric Raymondがハッカーに推奨する5つの言語は、能力の連続体のさまざまなポイントに分類されます。それらが互いに対してどこに分類されるかは、デリケートなトピックです。私が言えるのは、Lispが一番上にあると思うということです。そして、この主張を裏付けるために、他の4つの言語を見ると欠けていると思うことの1つについてお話します。マクロなしでどのようにして何かを成し遂げることができますか?[5]
多くの言語には、マクロと呼ばれるものがあります。しかし、Lispマクロはユニークです。そして、信じられないかもしれませんが、彼らが行うことは括弧に関連しています。Lispの設計者は、単に異なっているために、それらの括弧をすべて言語に入れたわけではありません。Blubプログラマーにとって、Lispコードは奇妙に見えます。しかし、それらの括弧には理由があります。それらは、Lispと他の言語の根本的な違いの外向きの証拠です。
Lispコードは、Lispデータオブジェクトで構成されています。そして、ソースファイルに文字が含まれており、文字列が言語でサポートされているデータ型の1つであるという些細な意味ではありません。Lispコードは、パーサーによって読み取られた後、トラバースできるデータ構造で構成されています。
コンパイラーの仕組みを理解していれば、実際に起こっていることは、Lispに奇妙な構文があるということではなく、Lispに構文がないということです。他の言語が解析されるときにコンパイラー内で生成される解析ツリーでプログラムを作成します。しかし、これらの解析ツリーはプログラムから完全にアクセスできます。それらを操作するプログラムを作成できます。Lispでは、これらのプログラムはマクロと呼ばれます。それらはプログラムを作成するプログラムです。
プログラムを作成するプログラム?いつそれを行いたいですか?Cobolで考える場合はあまりありません。Lispで考える場合は常にあります。ここで強力なマクロの例を挙げて、それについてどうですか?と言うことができれば便利でしょう。しかし、そうした場合、Lispを知らない人にとっては単なる意味不明なものに見えるでしょう。それが意味することを理解するために知っておく必要のあるすべてを説明する余地はありません。Ansi Common Lispでは、できるだけ早く物事を進めようとしましたが、それでも160ページまでマクロにたどり着きませんでした。
しかし、説得力のある議論ができると思います。Viawebエディターのソースコードはおそらく約20〜25%がマクロでした。マクロは通常のリsp関数よりも記述が難しく、必要がない場合は使用しないことが悪いスタイルと見なされます。したがって、そのコードのすべてのマクロは、そこにある必要があります。つまり、このプログラムのコードの少なくとも20〜25%は、他の言語では簡単にはできないことを行っています。BlubプログラマーがLispの神秘的な力に対する私の主張について懐疑的であっても、これは彼を好奇心旺盛にするはずです。私たちは自分たちの娯楽のためにこのコードを書いているのではありませんでした。私たちは小さなスタートアップであり、競合他社との間に技術的な障壁を設けるために、できる限りハードにプログラミングしていました。
疑わしい人は、ここに何らかの相関関係があるのではないかと思い始めるかもしれません。私たちのコードの大きな塊は、他の言語では非常に難しいことを行っていました。結果として得られたソフトウェアは、競合他社のソフトウェアができなかったことを行いました。おそらく何らかのつながりがありました。そのスレッドをたどることをお勧めします。松葉杖をついてよろめいている老人は、見た目よりも多くのものを持っているかもしれません。
スタートアップのための合気道
しかし、誰にも(25歳以上)Lispを学びに行かせるとは思っていません。この記事の目的は、誰かの考えを変えることではなく、Lispの使用にすでに興味を持っている人々を安心させることです。Lispが強力な言語であることを知っているが、広く使用されていないため心配している人々です。競争の激しい状況では、それは有利です。Lispの力は、競合他社がそれを理解していないという事実によって増幅されます。
スタートアップでLispを使用することを考えている場合は、それが広く理解されていないことを心配する必要はありません。そうであり続けることを願うべきです。そして、そうなる可能性が高いです。プログラミング言語の性質は、ほとんどの人を現在使用しているものに満足させることです。コンピューターハードウェアは個人の習慣よりもはるかに速く変化するため、プログラミングの実践は通常、プロセッサーよりも10〜20年遅れています。MITのような場所では、1960年代初頭に高水準言語でプログラムを作成していましたが、多くの企業は1980年代まで機械語でコードを書き続けていました。多くの人々が、バーテンダーが閉店して家に帰るのを待ち望んでいるように、プロセッサーが最終的にrisc命令セットに切り替えることで彼らを追い出すまで、機械語を書き続けたと確信しています。
通常、テクノロジーは急速に変化します。しかし、プログラミング言語は異なります。プログラミング言語は単なるテクノロジーではなく、プログラマーが考えるものです。それらはテクノロジーと宗教の半分です。[6]したがって、中央値言語、つまり中央値プログラマーが使用する言語は、氷山のようにゆっくりと移動します。Lispによって1960年頃に導入されたガベージコレクションは、現在広く良いことであると考えられています。ランタイム型付けも同様に人気が高まっています。Lispによって1970年代初頭に導入されたレキシカルクロージャは、現在、かろうじてレーダースクリーンに表示されています。Lispによって1960年代半ばに導入されたマクロは、まだ未知の領域です。
明らかに、中央値言語は大きな勢いを持っています。私はあなたがこの強力な力と戦うことができると提案しているのではありません。私が提案しているのは、まさにその反対です。つまり、合気道の練習者のように、あなたはそれを使って対戦相手に対抗することができます。
大企業で働いている場合、これは簡単ではないかもしれません。上司は、20年前にAdaがそうであったように、他の言語が世界を席巻しようとしていると新聞で読んだばかりなので、Lispで物事を構築することを許可するように説得するのは難しいでしょう。しかし、まだ上司がいないスタートアップで働いている場合は、私たちが行ったように、Blubのパラドックスを有利に利用できます。つまり、競合他社が中央値言語に動かせないように接着されているテクノロジーを使用できます。
スタートアップで働いていることに気づいたら、競合他社を評価するための便利なヒントを次に示します。求人情報を読んでください。サイトの他のすべてのものはストック写真または散文の同等物かもしれませんが、求人情報は彼らが何を求めているかについて具体的にする必要があります。そうしないと、間違った候補者が得られます。
Viawebに取り組んでいた数年間、私は多くの求人情報を読みました。新しい競合他社は、毎月のように木工品から現れてくるようでした。ライブオンラインデモがあるかどうかを確認した後、最初に行うことは求人情報を見ることでした。これを数年後、どの会社を心配する必要があり、どの会社を心配する必要がないかを言うことができました。求人情報にITの風味が強ければ強いほど、会社は危険ではありませんでした。最も安全な種類は、Oracleの経験を求めているものでした。それらについて心配する必要はありませんでした。C++またはJava開発者を求めている場合も安全でした。PerlまたはPythonプログラマーを求めている場合、それは少し恐ろしいことでしょう。少なくとも技術面は、実際のハッカーによって運営されている会社のように聞こえ始めています。Lispハッカーを探している求人情報を見たことがあれば、本当に心配していたでしょう。
注
[1] Viawebは当初、2つの部分で構成されていました。サイトの構築に使用するLispで記述されたエディターと、注文を処理するCで記述された注文システムです。最初のバージョンは、注文システムが小さかったため、ほとんどがLispでした。その後、Cで記述された画像ジェネレーターと、主にPerlで記述されたバックオフィスマネージャーの2つのモジュールを追加しました。
2003年1月、YahooはC++とPerlで記述されたエディターの新しいバージョンをリリースしました。このプログラムをC++に翻訳するには、文字通りLispインタープリターを作成する必要があったため、プログラムがLispで記述されなくなったかどうかはわかりません。ページ生成テンプレートのすべてのソースファイルは、私が知る限り、まだLispコードです。(Greenspunの10番目のルールを参照してください。)
[2] Robert Morrisは、競合他社がLispを使用していることを知っていたとしても、その理由を理解できなかったため、秘密にする必要はなかったと言います。「彼らがそれほど賢ければ、すでにLispでプログラミングしているでしょう。」
[3] すべての言語はチューリング完全であるという意味で同等の能力を持っていますが、それはプログラマーが気にする言葉の意味ではありません。(チューリングマシンをプログラミングしたい人はいません。)プログラマーが気にする能力の種類は正式に定義できないかもしれませんが、それを説明する1つの方法は、能力の低い言語でより強力な言語のインタープリターを記述することによってのみ得られる機能を参照すると言うことです。言語Aに文字列からスペースを削除する演算子があり、言語Bにない場合、おそらくAがより強力になることはありません。なぜなら、おそらくBでそれを行うサブルーチンを記述できるからです。しかし、Aが再帰をサポートし、Bがサポートしていない場合、それはライブラリ関数を記述して修正できる可能性は低いです。
[4] オタクへの注意:または、おそらく格子であり、上に向かって狭くなっています。ここで重要なのは形状ではなく、少なくとも部分的な順序があるという考えです。
[5] マクロを個別の機能として扱うのは少し誤解を招きます。実際には、それらの有用性は、レキシカルクロージャや残りのパラメーターなどの他のLisp機能によって大幅に向上します。
[6] その結果、プログラミング言語の比較は、宗教戦争の形をとるか、学部生の教科書が非常に中立的であるため、実際には人類学の研究になります。平和を大切にする人、または終身在職権を望む人は、このトピックを避けます。しかし、質問は半分だけが宗教的なものです。特に新しい言語を設計したい場合は、研究する価値のあるものがそこにあります。