Mathematicaの簡単な歎史







スティヌブン・りルフラムによる投皿「 Mathematicaの前には時間がありたした... 」の翻蚳。

翻蚳に協力しおくれたKirill Guzenko KirillGuzenkoに感謝したす。
数週間埌[投皿は2013幎6月6日に執筆されたした。 ed。]は25呚幎ずなりたす。1988幎6月23日はMathematicaがリリヌスされた日です。



深倜、私たちはただフロッピヌディスクを焌き、それらを梱包しおいたした。 しかし、6月23日の正午に、私はサンタクララのカンファレンスセンタヌにいたした。最初にMathematicaを公​​開したした



Mathematica 1.0  Macintosh








はい、それはたさにブヌト画面でした。そしお、はい、 Mathematica 1.0 は MacやさたざたなUnixワヌクステヌションで動䜜したした。 その埌、PCに十分な電力がありたせんでした。



倚くの人がMathematicaの機胜に感銘を受けたした。 たた、 Steve Jobs 圓時圌はNeXTにいたを含むコンピュヌタヌ業界のさたざたなリヌダヌからMathematicaの展望に぀いお非垞に楜しいスピヌチがありたした。 。 そしお、このむベントの誰かは先芋の明があり、すべおの講挔者にMathematicaに関する本にサむンアップするように䟝頌したした。











最埌の四半䞖玀以来、 Mathematicaには倚くのこずが起こりたした。 Mathematica 1.0で始たったものは、今日のMathematicaの広範なシステムになりたした。 そしお、25呚幎を蚘念しおゞュビリヌアルバムを芋るず、 Mathematicaが研究、発明、教育、科孊に貢献したこずを実珟するこずに誇りを持っおいたす。











しかし、おそらく私にずっお最も泚目すべきこずは、 Mathematicaを構築した基本原則がどのように時の詊緎に耐えおきたかずいうこずです。 そしお、 Mathematica 1.0にあった基本的な考え方ず蚀語自䜓が今日どのように保存されおいるかそしお、はい、ほずんどのMathematica 1.0コヌドはただ機胜し、手付かずのたたです。



わかりたしたが、 Mathematicaはどこから来たのですか 圌女はどのように圌女が䜕になったのですか これは本圓に長い話です。 そしお私の人生ず密接に絡み合っおいたした 。 しかし、私が未来に目を向けようずするずき、私はすべおが過去にどのように、そしおどのように倉化したかを理解するこずに興味がありたす。



おそらく、6歳のずきにMathematicaの方向のどこかを指しおいる最初の挠然ずした䞀aboutが私に届いたのでしょう。他の2人で構成されおいたす。 私は数孊の蚈算が奜きではないし、決しお埗意でもなかった。 しかし、10歳のずきに物理孊に興味を持぀ようになりたした。もしそれをやりたいのなら、数孊もやさしくしおください。



私が12歳のずき、最初の電子蚈算機が䜿甚され始めたした。 そしおほが同時に、私は最初のコンピュヌタヌを䜿い始めたした。倧きなテヌブルのサむズの巚倧なもので、それぞれ18ビットの8぀の「キロスロノォル」があり、ほずんどが玙パンチテヌプを䜿甚しおアセンブラヌでプログラムされたした。 私はそれを䜕らかの方法で物理的な問題の解決に適応させようずしたしたが、結果はあたりありたせんでした。 そしお今、私はすでに16歳で、物理孊に関するいく぀かの蚘事を発衚し、高校を卒業し、英囜政府の研究所で働いおいたした。 「実際の」理論物理孊者は、実際にはコンピュヌタヌを䜿甚したせんでした。 そしお私は䜿甚したした。 HPデスクトップ蚈算機プロッタヌ付き、たたはFortran䞊のIBMメむンフレヌムのいずれか。



基本的に、私はちょうど蚈算をしたした。 しかし、物理孊でやりたかったこずは、代数の最も倚様な分岐ず連動しおいたした。 代数だけではありたせん。 䜕がたくさん。 数癟たたは数千の芁玠を持぀ファむンマン図からの匏。正しい答えを埗るには、すべおを正確に衚す必芁がありたす。



そしお、私はこれで䜕ができるかに぀いお考え始めたした。 私は、䞀生ずっず方皋匏のマむナスず芁因をどのように远いかけるかを考えおいたした。 そしお、ここでコンピュヌタヌの䜿甚方法に぀いお考え始めたした。 そしお、誰かが同様の考えを持぀他の人がいるず私に蚀った。 私が知るこずができる3぀のプログラムがあり、結局のずころ、それらはすべお1962幎に起こったCERNでの1぀の䌚話の埌に始たりたした Reduceで曞かれたReduce 、Fortranで曞かれたAshmedaiおよびSCHOONSCHIPアセンブラ6000 CDCで蚘述されおいたす。



プログラムは専門的であり、著者自身に加えお、これらのプログラムを真剣に䜿甚した人の数は明らかではありたせんでした。 圌らは非垞に厄介でした。原則ずしお、あなたはそれらにパンチカヌドのデッキ党䜓を「䟛絊」し、しばらくしお、結果、たたはさらに予想される、いく぀かの神秘的な゚ラヌメッセヌゞを埗たした。 しかし、私は物理孊で遭遇した問題でそれらを䜿甚し始めたした。



そしお、1977幎の倏、私はARPANETを発芋したした。これは珟圚むンタヌネットに成長しおいたす。 その埌、ネットワヌクには256個のホストしかありたせんでした。 そしお今、@ O 236はマサチュヌセッツ工科倧孊のオヌプンコンピュヌタヌに行きたした。このコンピュヌタヌはMacsymaプログラムず連動しおおり、その䞭で代数蚈算をむンタラクティブに行うこずができたした。 これを䜿っおいる人が少ないこずに驚きたした。 しかし、それは私がそれにほずんどの時間を費やすようになった日より少し前でした。 基本的に、私はタむピングするこずでマシンを操䜜したした-䜕かをした埌、私は䜕が起こるかを芋お、戻っおきお、もう䞀床詊したしたなど。そしお、私は通垞、積分のさたざたな代数圢匏、実隓的に取埗するこれは正しく区別されたす。



私の物理孊の蚘事には、さたざたなクレむゞヌな数匏が含たれるようになりたした。 そしお、このためにコンピュヌタヌを䜿甚できるずは思わずに、代数に粟通したある皮の蚈算機であるように思われたした。 私の野心は、Macsymaに費やした時間ずずもに倧きくなりたした。 しばらくしお、私は䞖界䞭の誰よりもそれを䜿い始めたず思いたす。 しかし、1979幎のどこかで、私はその䞊限に達したした。



それから1979幎11月になりたした。 私は20歳で、物理孊の博士号を取埗したした。 私はCERNで数週間を過ごし、物理孊の将来を蚈画したした圓時はそうでした。 そしお、私は䜕かに気づきたした物理孊で生産的になるためには、Macsyma以䞊のものが必芁です。 そしおしばらくしお、自分がやりたいこずを手に入れる唯䞀の方法は自分でやるこずだず決めたした。



そしお、埌にSMP Symbolic Manipulation Program、シンボリック操䜜甚プログラムずしお知られるようになったものを実装し始めたした。 私は圓時のプログラミング蚀語に぀いお、手続き型ALGOLのような分野だけでなく、LISPずAPLの䞡方に぀いお広範な知識を持っおいたした。 たた、SMPの抂芳をスケッチするず、これらの蚀語で芋たものず非垞によく䌌たものになりたした。 しかし、SMPがどうあるべきかを理解したので、私はすべおを自分で発明しようず詊み始めたした。



非垞に興味深いアむデアがいく぀かあったず思いたす。 実際、ただ非垞に粗雑なSMPのプロゞェクト文曞からのいく぀かのアむデアでは、次のMathematicaの動機が远跡されたす。











SMPのドキュメントを芋るず、特に私が蚭蚈を始めたのは20歳でしかなかったこずを考えるず、非垞に印象的なシステムであるこずがわかりたした。 もちろん、SMPのすべおのアむデアが良いずは限りたせんでした。 そしお、長い歎史を持぀蚀語蚭蚈の分野の専門家ずしお、この蚘事の最埌にある「お気に入り」の間違いに蚀及するしかありたせん。



初期のバヌゞョンでも、SMPは倧芏暡なシステムでした。 しかし、䜕らかの理由で、その䞭に耇雑なものは芋぀かりたせんでした。 先に進み、それを実珟したかっただけです。 できる限りのこずをすべおしたかったのです。 「私はコンピュヌタヌサむ゚ンスに粟通しおいたせん。 勉匷したいです。」 それから圌は店に行き、そこから圌女に関連するすべおの本を買った-キャビネットの玄半分。 そしお圌はそれらを䞀぀䞀぀読み始めたした。



その埌、カリフォルニア工科倧孊で働きたした。 そしお、私はスピヌチを提䟛するために同様のシステムに取り組む䞖界䞭の人を招埅したした。 カリフォルニア工科倧孊に小さなワヌキンググルヌプを集めたした。これには、しばらくの間、 リチャヌドファむンマンが含たれおいたした。 そしお、私は「SMPプロゞェクト」に取り組むためにキャンパス䞭から人々を募集し始めたした。



最初は、SMPの䜜成察象に぀いお重芁な決定を䞋すこずでした。 MacsymaはLISPで曞かれおおり、倚くの人がそれだけが曞けるず蚀っおいたした。 しかし、物理孊の若い倧孊院生であるRob Pikeは、Cが将来の蚀語であり、これが正しい遞択であるず確信したしたRobは埌でGo蚀語の䜜成を含む倚くのこずを行いたした。 そのため、1980幎初頭に、SMPのCコヌドの最初の行が䜜成されたした。



SMPチヌムには非垞に興味深いラむンナップがありたした。 グルヌプに最初に招埅したクリス・コヌルは、IBMずしお働き、APLの熱心なフォロワヌになりたした。その埌、圌はPeregrine Systemsずいうかなり成功した䌚瀟を蚭立したした。 孊生にはそれぞれ独自のスキルがあり、教授はプログラミングに非垞に熱心で、物理孊に関するいく぀かの蚘事を執筆したした。 もちろん、機䌚がありたした。 さらに、非垞に効率的なコヌドを1行で蚘述した人が1人いたした。 圌は関数にカラフルな名前を䜿甚したので、それらの組み合わせはある皮の冗談のようになりたす。 たたは、プロゞェクトに䞀生懞呜取り組んだ優秀な孊士課皋の孊生がいお、遅れをずっおいたずしたしょう。 圌はコンピュヌタヌに觊れないこずを玄束したしたが、友人にコヌドを口述するずすぐに発芋されたした。



私自身、SMP甚のコヌドを倧量に䜜成したした毎日玄1000行。 圌女のデザむンを思い぀きたした。 そしお、私はほずんどのドキュメントを曞きたした。 私は以前に倧きなプロゞェクトを実行したこずがありたせんでした。 しかし、䜕らかの理由で、これは私にずっお非垞に耇雑なものではありたせんでした。 そしお、1981幎6月にSMPの最初のバヌゞョンが登堎し、それはMathematicaに非垞に䌌おいたした。







その間、SMPは非垞に倧きな゜フトりェアシステムでした実行可胜ファむルの重量はわずか1メガバむトでしたが。

圓初、このシステムは数孊的蚈算を目的ずしおいたした。 しかし、途䞭で、すべおが正垞に機胜するためには、本栌的ではるかに䞀般的なシンボリック蚀語を䜜成する必芁があるこずに気付きたした。 私はこの問題を物理孊者ずしお芋たず思うが、玠粒子を探す代わりに、蚈算の玠成分を芋぀けようずした。 私自身のために、このアプロヌチを開発したした。垞に、最小限のプリミティブでできるだけ倚くの機胜を実装するようにしおください。 時々、私はパズルを解くでしょう-これたたはその機胜を実装する方法ですが、結果ずしお、私はデザむンを定匏化するこずができ、それを実珟したした。



私はすべおが象城的な衚珟を持぀こずができるこずに気付きたした。 SMPのシンボリックむンデックス付きリストでは、「匏ヘッダヌ」を導入できたせんでした。これは、 Mathematicaで非垞に明確に実装されおいたす。 そしおもちろん、シンボリック匏の内郚実装にはいく぀かの奇劙な点がありたした。その1぀はすべおの数倀を浮動小数点圢匏で保存しおいたしたSCHOONSCHIPの著者であるTini Veltman、および埌にノヌベル物理孊賞を受賞し、 FPUは ALUよりも算術蚈算がはるかに高速であるため、浮動小数点は圌がこれたでに䜜った最良の゜リュヌションの1぀でした。



SMPの前に、私はMacsymaのようなシステム甚に倚くのコヌドを曞きたした。そしお、私がやろうずしたこずはシステムに䌝えるこずだけだず気づきたした。「私はこのような衚珟を持っおいたす。こちらのフォヌムに。 したがっお、SMPの開発では、パタヌンで衚される文字衚珟ファミリヌの翻蚳ルヌルの䜿甚が䞭心的なアむデアの1぀になりたした。 もちろん、実装はMathematicaほどきれいではなく、最も成功したアむデアもありたせんでした。 しかし、すでに倚くの重芁な芁玠がありたした。



最終的に、1981幎の最初のバヌゞョンのSMPドキュメントはかなり近代的でした。







はい、メモリ管理ず同じように、グラフィック出力に小さなセクションが割り圓おられたす。 たた、「プログラムのデッドロック」システムのフリヌズや「統蚈衚珟の䜜成」ランダム衚珟の䜜成などの魅力的なセクションがありたす。 ただし、既に「䞊列凊理」ず「プログラムの構築」぀たり、コヌド生成がありたす。 SMPはCコヌドを生成しおコンパむルし、恐ろしいこずに、実行䞭のSMP実行可胜ファむルに動的にリンクするこずさえできたす。 Mathematicaよりもはるかに少ないものの、倚くの数孊関数ず数孊挔算がありたした。



いいですね SMP 1.0を獲埗したした。 そしお、それをどうするか 倚くの人にずっおこのシステムが有甚であるこずは明らかでした。 それは、かなり倧きなコンピュヌタヌで実行されたした。VAXのようないわゆる「ミニコンピュヌタヌ」では、いく぀かの倧型冷蔵庫のサむズで、それぞれ数十䞇ドルかかりたした。 しかし、同様のマシンを備えた倚くの研究および蚭蚈組織があるこずを知っおいたした。



それから私は䌁業やビゞネスに぀いお䜕も知りたせんでした。 しかし、私はSMPに関する人々の仕事は支払われるべきであり、お金を埗るための非垞に明癜な遞択肢はSMPのコピヌを売るこずであるず理解したした。 私の最初の考えは、珟圚カリフォルニア工科倧孊の「技術亀換センタヌ」ず呌ばれる組織に行き、圌らが私たちを助けおくれるかどうかを調べるこずでした。 圓時、オフィスは本質的に䞀人の楜しい幎配の玳士で構成されおいたした。 しかし、いく぀かの詊みの埌、圌が本圓に䜕をすべきかを知らなかったこずが明らかになりたした。 私は圌にこれがどのようにできるのか尋ねた。 カリフォルニア工科倧孊では、このようなこずが垞に起こるはずだず考えたした。 「たあ」ず圌は蚀った。「基本的に、教員の人たちは去っお自分の䌚瀟を芋぀けたので、私たちは自分たちがこのプロセスに関䞎しおいないこずに気づきたした」 「ああ、私も蚀った、「私もそれができたすか」 そしお、倧孊の憲章をめぐっお、圌は蚀った「゜フトりェアは特蚱を取埗するこずができ、倧孊は著䜜暩を䞻匵しないので、はい、できたす。」



そしお、私は䌚瀟を蚭立するこずにしたした。 しかし、それはそれほど単玔ではありたせんでした。 しばらくしお、倧孊の管理者は突然すべおがうたくいかないず刀断したからです。 非垞に奇劙で䟡倀のない瞬間がありたした「シェアしおください。これから退䌚したす」など。 リチャヌド・ファむンマンずマレヌ・ゲルマンが私の代わりに仲裁したした。 倧孊の孊長は䜕をすべきかを知らなかったようです。 そしおしばらくの間、すべおが行き詰った。 しかし、最終的には、倧孊が゜フトりェアに関する文曞の䞀郚を倉曎する必芁がある堎合でも、倧孊は暩利に関係なくラむセンスを付䞎するこずに同意したした。



その結果、倧孊の圓時の孊長ずいう圢でひったくりが1぀ありたした。 圌は、そのようなラむセンスは、私が倧孊で働いお䌚瀟の䞀郚を所有しおいる堎合、倧孊ず䌚瀟の間に利益盞反を匕き起こすず蚀いたした。 「たあ」ず私は蚀った、「これは問題ではありたせん。私は倧孊を蟞めおいたす。」 それは倧きな驚きのようでした。 しかし、私は倧孊を去り、プリンストンの高等研究所に行きたした。そこでは、圓時のディレクタヌが述べたように、 ゞョン・フォン・ノむマンが亡くなったずきに圌らがコンピュヌタヌを匕き枡したした。



長幎にわたり、私はカルテックで実際に䜕が起こっおいるのかを考えおいたした。 そしお、たたたた数週間前に私は再びカリフォルニア工科倧孊に行くこずにしたした「優秀な卒業生」の賞を受賞するため。 教職員の食堂で昌食をずったずころ、次のテヌブルに座っおいたのは、ほが95歳だったカリフォルニア工科倧孊の元孊長以倖に誰もいなかったこずがわかりたした。「Wolfram Affair」圌は譊告したしたか 。 その結果、私たちの䌚話は非垞に明確になりたした。



正盎なずころ、すべおが私が想像するよりもさらに奇劙であるこずが刀明したした。 アヌノルド・ベックマンがカリフォルニア工科倧孊にいお、pH蚈を発明し、その埌倧孊を去り、ベックマン・むンスツルメンツを蚭立した1930幎代に、ある意味で物語は始たりたした。 1981幎たでに、ベックマンはカリフォルニア工科倧孊のメむンスポンサヌであり、理事䌚の議長を務めたした。 䞀方、圌の生物孊郚Lee Hoodの䌚長は、ゲノムシヌケンサヌを発明したした。 圌はベックマン・むンスツルメンツに䜕床も興味を持たせようずしたが、圹に立たなかったため、圌自身の䌚瀟Applied Biosystemsを蚭立し、非垞に成功したず述べた。 ある時点で、私に蚀われたように、アヌノルド・ベックマンは動揺し、「キャンパスからのIPの出発を停止する」べきだず政府に蚀った[IP知的財産-玄。 ゚ド。]。 そしお、これは私のSMPプロゞェクトの倖芳ず䞀臎するこずが起こりたした。 そしお圓時の孊長は、圌はこれを行う矩務があるず蚀った圌は化孊者でもあり、物理孊者ずしおファむンマンずゲルマンは「物理孊者に近い」ず呌んだ。



しかし、こうした混乱にもかかわらず、Computer Mathematics Corporationず呌ばれる䌚瀟が珟れたした。 圓時、私はただ自分が若い科孊者であるず想像しおいたしたが、䌚瀟を経営するずは考えおいたせんでした。 だから私は私の幎霢の玄2倍のCEOを連れおきたした。 そしお、ディレクタヌず䞀郚のベンチャヌキャピタリストの芁請で、圌らは䌚瀟を新興䌁業ず合䜵するこずを決めたした。圌らは、圌らが思ったように、人工知胜の分野での研究開発に成功するこずでした。



その間、SMPは「コンピュヌタヌ数孊」ずいうスロヌガンの䞋で前進しおいたした。







ひどい間違いがありたした。 CEO「SMPを起動するワヌクステヌションを構築したしょう」。 I「いいえ、私たちは゜フトりェア䌚瀟です。スタンフォヌド倧孊ネットワヌクSUNシステムを芋たした。これは明らかに私たちができるこずよりも優れおいたす。」 そしお、広告䞻から同様の根拠のない声明がありたした







そしおすぐに、これらすべおが間違っおいるこずに気付きたした。 SMPはある皮のキャッシュカりであるこずが刀明し、CEOは特にお金を皌ぐのが埗意ではありたせんでしたが、それを匕き付けるこずは非垞に埗意でした-䜕幎も埌に平凡なIPOにやっおきたした。



それから個人的には驚くべき時がありたした-私は科孊に盎接関わり、その埌新しい皮類の科孊A New Kind of Scienceの基瀎を築いたものを発芋したした。 そしお実際、SMPは最終的に私がやったこずの基瀎であるこずが刀明したした。 SMPの蚈算プリミティブを怜玢する私の原理は、自然の䞭で蚈算プリミティブを芋぀け、これらのプリミティブの結果を研究するこずから新しい科孊を䜜成するずいう考えに私を導いたからです。



SMPに䜕が起こったのか尋ねるこずができたす。 Mathematicaが登堎するたではただ販売されおいたした。 圌女のコヌドの1行もMathematicaに䜿甚されおいたせん。 しかし時々、私は圌女が圌女の隣にどのように芋えるかを芋るために圌女を走らせたした。 時間が経぀に぀れお、SMPを実行しおいるマシンを芋぀けるこずがたすたす困難になりたした。 そしお玄15幎前、それを実行できる最埌のコンピュヌタヌは廃止されたした。



たあ、私はい぀も、自分のSMP゜ヌスのコピヌを持っおいるず思っおいたした。 では、なぜそれらを最新のシステムに再コンパむルしないのでしょうか しかし、その埌、暗号化された圢匏で゜ヌスコヌドを保存するずいう「すばらしい」アむデアを思い出したした。 しかし、どのキヌを䜿甚したしたか 私は圌を知るこずができるすべおの人に尋ねたした。 しかし、誰も圌を芚えおいたせんでした。



䜕幎も経ちたしたが、SMPが再び動䜜するのを本圓に芋たかったのです。 これがタスクです。 Cプログラムの゜ヌスコヌドは、SMP゜ヌスず同じ方法で暗号化されおいたす。 実際、これは暗号化を生成したプログラムの゜ヌスコヌドです-およそ1981幎バヌゞョンのUnix cryptナヌティリティは、倚くのパラメヌタヌなどを倉曎するこずで巧劙に倉曎されたした。 誰もが暗号を解読しお、最終的にSMPをそのような長い投獄から解攟できたすか それがWolframの蚀うこずです| Alpha Pro 、このファむルをそのたたダりンロヌドする堎合







しかし、メむンストヌリヌに戻りたす。 1983幎にSMPの仕事をやめ、基瀎科孊、゜フトりェアプロゞェクト、および技術開発ず戊略コンサルティングにおける非垞に有益な「趣味」の䞊行研究を行いたした。 少しず぀SMPを䜿甚したしたが、最終的には、原則ずしお、アルゎリズム、グラフ、およびむンタヌフェむスをたずめおCで蚘述し始めたした。



科孊の分野では、物事は私ずうたくいっおいたしたが、やるべきこずがただたくさんありたした。 しかし、自分の努力だけですべおをするのではなく、他の人を匕き付けるこずにしたした。 そしお、ステップの1぀ずしお、研究所を蚭立するこずを決定し、さたざたな倧孊が提䟛する準備ができおいるものを分析したした。 その結果、むリノむ倧孊が遞ばれ、1986幎8月に私はそこに行き、耇雑なシステムの研究のためのセンタヌを芋぀けたした。



しかし、この時点たでに、私はすでに他の人を巻き蟌むための私の蚈画があたり良くないこずを心配し始めおいたした。 そしおむリノむでの最初の数週間で、プランBは頭の䞭で熟したした。できる限り最高のツヌルを䜜成し、自分のできる仕事に最適な環境を䜜り、自分で科孊の最倧の効果を達成したす。 そしお、私はコンピュヌタヌ業界ず密接に関係しおいたため、さたざたな匷力な゜フトりェアシステムが膚倧な数のパヌ゜ナルコンピュヌタヌで動䜜するこずを知っおいたした。 そしお、䜕か良いこずに成功すれば、興味深い䌁業ずむンフラストラクチャをサポヌトする新興垂堎にうたく実装できるこずを理解したした。



それで、1986幎8月末に、私が実装したい蚈算を実行でき、頭に浮かぶかもしれない独自のコンピュヌティングシステムの開発を詊みるこずにしたした。



そしおもちろん、結果はMathematicaでした。



SMPず他の゜フトりェアの経隓から、やりがいのあるこずず䟡倀のないこずの倚くを孊びたした。 すべおをれロから始めお、制限なしに、あなたが望むようにすべおをやろうずするこずができるずいうこずに気付いおうれしかったです。 SMPでは、䞭心は代数でした。 しかし、 Mathematicaの助けを借りお、数倀蚈算、グラフィックス、プログラミング、むンタヌフェヌスの䜜成など、他の倚くの分野をカバヌしたいず考えたした。 䟋えば、私が研究しおいるセルオヌトマトンのようなものがそれず䜕か関係があるのか​​どうかを考えお、システムの基瀎に぀いおたくさん考えたした。 しかし、私はただSMPのために開発された基本原則に導かれおいたした。 シンボリック匏ずそれらの倉換は、蚈算の䞻芁な衚珟ず芋なされたす。



これがSMPに実装されおいなければ、倚くの間違いを犯しおいたでしょう。 しかし、SMPは私に倚くを教え、䜕が重芁で䜕が重芁ではないかを瀺したした。 今、私のアヌカむブを芋るず、SMPを開発するずきに遭遇した問題からパズルを解くずいう骚の折れるプロセスが芋えたす。 そしお、段階的に決定が䞋されたした。



䞀方、SMPの堎合のように、チヌムを線成しおMathematicaの盎接実装を開始したした。 私は再び䌚瀟を蚭立し、今回はれネラルディレクタヌを務めたした。 毎日私はたくさんのコヌドを曞きたしたそしお少々動揺したすが、珟圚このコヌドのごく䞀郚だけがMathematicaで 、特にパタヌンマッチングず蚈算機システムで動䜜したす。 ただし、䞻な焊点は蚭蚈にありたした。 そしお、SMPず同様に、ドキュメントを䜜成し、蚭蚈を開発したした。 ドキュメントで䜕かを十分に説明できないず、誰もそれを理解できず、おそらくこの䜕かが間違っお䜜成されたず思いたした。 そしお、ドキュメントに䜕かが登堎するずすぐに、䜕を実装する必芁があるのか​​、なぜそれを行っおいるのかがわかりたした。



Mathematicaコヌドの最初の郚分は1986幎10月に曞かれたした。 そしお1987幎半ばたでに、 Mathematicaの実装が開始されたした。 私はドキュメントを本ずしお出版すべきであり、数癟ペヌゞがすでに曞かれおいるず決めたした。 そしお、私はMathematica 1.0が1988幎4月たでに準備できるこずを理解したした。



私たちの䌚瀟の最初の蚈画は研究ず開発に集䞭するこずであり、 Mathematicaは䞻にコンピュヌタヌの補造業者を通じお配垃されるこずになっおいた。 スティヌブ・ゞョブズは、 Mathematicaを 「オンボヌド」 にした最初の人物であり、ただリリヌスされおいないすべおのNeXTコンピュヌタヌに搭茉されるはずでした。 これに続いお、Sun、Silicon Graphics、IBM、および他のいく぀かの䌁業ずの取匕が行われたした。 Mathematicaのベヌタ版の送信を開始したした。 。 そしお、ワヌルドワむドりェブが登堎するずっず前から、システムの存圚に関する知識が広たり始めたした。 䞀郚のメディアアりトレットも接続されおいたすこのアむスクリヌムは今でも倧奜きです。







- 1988 23 Mathematica ( Wolfram|Alpha , , ). . . , The Mathematica Book . , , , . , , 23 :







, 23 , , Mathematica .











25 . , Mathematica 1.0, , , . « » Mathematica , . Mathematica , , Wolfram|Alpha . 25 Mathematica .


: SMP



SMPずは䜕ですかSMPドキュメント甚に䜜成したSMPのサンプルプログラムを次に瀺したす。





















































いく぀かの点では、関数の衚蚘[...]



、リストの衚蚘{...}



、および眮換芏則の衚蚘->



ずずもに、 Mathematicaのプログラムず非垞によく䌌おいたす 。 しかし、圌らにはMathematicaのような読みやすさはなく、SMPプログラムは理解しにくいように芋えたす。



最も明らかな問題の1぀は、SMPのコヌドがそれぞれパタヌンず倉数のプレフィックスである$



ず%



で詰たっおいるこずです。 SMPでは、パタヌン䟋 _



を名前䟋 x



から分離するこずに関しおMathematicaに登堎したアむデアをただ実装しおいたせん。 そしお、どの倉数がロヌカルであるかを匷調するこずは重芁だず思いたしたが、それらを色で匷調するずいう考えは私には思い぀きたせんでした。



SMPでは、盎接 = ず遅延 = の割り圓おを区別する非垞に有甚なアむデアを既に実装しおいたす。 しかし、アルゎルのような蚀語になるず、それらをあたり明確に理解できたせんでした- :



および::



。 眮換芏則の堎合、圢匏->



はMathematicaで実装された圢匏であり、圢匏-->



は珟代のものに䌌おいたした:>



。構造S[...]



は珟代/.



に䌌おいたした/.







Mathematicaず同様に、SMPでも組み蟌み関数が倧文字になりたした圓時は新しいものでした-コンピュヌタ䞊で倧文字ず小文字を区別しおいたした。 しかし、 Mathematicaは通垞、䞀般的な英語の単語を䜿甚しお関数を瀺したすが、SMPは短く、しばしば䞍明瞭な略語を䜿甚したす。 SMPに取り組んでいたずき、Unixの蚭蚈に圱響され、その短い名前を䜿甚したした。 たた、SMPに少数の機胜しかない堎合は、すべお問題ありたせん。 しかし、名前がPs



、 Mei



Uspb



ようなものである䜕癟もの関数では、コヌドの可読性が倧きく劚げられたす。 もちろん、倚くのナヌザヌがすばやく入力する方法を知らないずいう事実がここでの圹割を果たしおいるため、これは短い関数名を支持する別の投祚でした。











最近SMPのドキュメントを読むのは非垞に興味深いです。SMPには、埌でMathematicaに移怍された倚くの良いアむデアがありたした。 しかし、悪いアむデアがあり、幞いなこずに、歎史に残っおいたす。 本質ず同じ悪名を持぀これらのアむデアの1぀は、䜿甚時に名前が倉わる「カメレオンキャラクタヌ」ですこれは、ダミヌ倉数、 MathematicaのModule



より自動化されたバヌゞョンのようなものを転送する詊みでした 



さらに埮劙な゚ラヌがありたした。 たずえば、システムの䞀般化における過床の熱意のように。 Mathematicaず同様に、SMPでは、リストは{a,b,c}



ように瀺されたす。 関数には次の指定がありたす f[x]



。 そしお、可胜な限り最倧の統䞀を達成するために、リストず関数の抂念を組み合わせようずするこずにしたした。



リストv={a,b,c}



SMPでは、割り圓おは:



ずしお瀺されたため、 v:{a,b,c}



はこのように蚘述されたす。 次に、たずえば、SMPのv[2]



は2番目のリストアむテムを取埗したす。 しかし、この衚蚘法は、匕数2で関数v



倀を芁求した堎合ず同じように芋えたす。そしお、リストを敎数化しお、敎数個の芁玠だけでなく、シンボリック圢匏で衚珟したす。



SMPでは、 テンプレヌト匏  Mathematicaではx_



は次のように蚘述されたした $x



぀たり、関数f[$x]:$x^2



定矩するずき、 f



をシンボリックむンデックス付きリストずしお単玔に定矩しおいるず想像できたす {[$x]: $x^2}



。 関数がどのように定矩されおいるかを調べる必芁がある堎合は、たずえばその名前f



入力したす。 そしお、結果の倀は、シンボリックにむンデックス付けされたリストになり、これが定矩になりたす。



ベクトル型の通垞のリストは、 {[1]:a, [2]:b, [3]:c}



ようなものず考えるこずができたす。 たた、文字むンデックスを混圚させるこずもできたした {[1]: 1, [$x]:$xf[$x-1]}



。 たた、䞀般化されたシンボリック匏の番号付けに関しお、䞀定の統䞀がありたした。 そしお、すべおが良いようでした。 関数ずリストの統䞀された抂念を説明するために、 f[x]



射圱、 x



をフィルタヌず呌びたした。



しかし、埐々にこの抂念は継ぎ目で発散し始めたした。 v[2]:b, v[3]:c



ような定矩を導入するず、あらゆる皮類の奇劙なこずが刀明したした。 次に、 v



、SMPの原則に埓っお、倀{[3]:c, [2]:b}



たす。 しかし、 v[1]:a



定矩を䜜成v[1]:a



どうなりたすかv[1]:a



 この堎合、 v



はその順序を突然{a, b, c}



たす。



そしお、いく぀かの匕数の関数を䜿甚するず、すべおがさらに奇劙になりたした。 m:{{a,b},{c,d}}



で行列を定矩できれば、 m[1]



は{a,b}



であり、 m[1,1]



たたはm[1][1]



はになりたす。 しかし、耇数の匕数を持぀関数が必芁な堎合はどうでしょうか f[x, y]



はf[x][y]



ず同じですか たあ、時にはそのような䜕かが必芁であり、時には必芁ではありたせん。 そのため、 Tier



ず呌ばれるプロパティ Mathematicaの 「属性」を考え出さなければなりたせんでした。これは、各機胜に察しおどのように機胜するかを瀺しおいたす今日、倚くの人がカリヌ化に぀いお聞いたこずがありたすが、そのような違いはたったく明癜ではないようです



SMPの文字ごずのむンデックス付きリストには、気の利いた匷力な機胜がいく぀かありたした。 しかし、結果ずしお、システム党䜓が構築されたずき、倚くの奇劙なこずが発芋されたした。 したがっお、 Mathematicaを開発しおいたずきに、それらを䜿甚しないこずにしたした。 䜕幎もの間、私はそれらに぀いお考え続けたした。 そしお、SMPから30幎以䞊たった今、私はMathematicaの非垞に興味深い新機胜に取り組んでいたす。これは、シンボリックむンデックスリストず密接に関連しおいたす[関連はシステムの第10バヌゞョンに登堎したした。 Ed。]。



SMPでの䜜業は非垞に貎重な経隓をもたらしたした。実際に機胜するものずそうでないものを芋たした。 そしお、私にずっお最も蚘憶に残る瞬間の1぀はこれでした。 Mathematicaず同様に、SMPには玔粋な機胜がありたした 。 ただし、 Mathematicaずは異なり、 &



文字で瀺されおいたせん。 そしおこれは、玔粋な関数がシンボリックな定数倀を生成する必芁があるこずを瀺すために、「マヌク」ず呌ばれる特別なオブゞェクト「」、「タむプアポストロフィ」が必芁であるこずを意味したした さお、SMPのリリヌスから玄5幎埌、私はチュヌトリアルの1぀を怜蚎しおいたした。 「逆アポストロフィはSMPのなぞなぞ」ずいうフレヌズが目に留たりたした。 そしお、私は気づいたこれは蚀語蚭蚈の間違いがどのように芋えるかです。



SMPは、倚くの点で急進的なシステムです。プログラミング蚀語の開発における極床の実隓です。 䜿い慣れたデザむンのサポヌトは最小限でした。 代わりに、シンボリック匏の倉換にルヌルを䜿甚するずいう考え方を䞭心に展開されたした。 ある意味では、SMPは確立された䌝統からあたりにも遠いずころにあるず思いたす。 結局のずころ、プログラミング蚀語は、コンピュヌティングに関する人間の抂念を、コンピュヌタヌが実行できる実際のコンピュヌティングず結び付けなければなりたせん。 たた、蚀語がどれほど匷力であっおも、人々がそれを理解するのに十分なコンテキストを持っおいない堎合、蚀語でできるこずはほずんどありたせん。 それがMathematicaで可胜な限り認識できる倖芳を䞎え、本圓に必芁な堎合にのみなじみのないものを導入し、根本的に新しいものを䜜ろうず垞に詊みた理由です。



システム蚭蚈の重芁なポむントの1぀は、その䞭で䜕が重芁かを知るこずです。 SMPでは、いわゆる「セマンティックテンプレヌト」に倚倧な劎力を費やしたした。 この定矩があるずしたしょう f[$x+$y, $x, $y] := {$x, $y}



。 f[a+b, a, b]



がそれに察応するこずは明らかです。 しかし、 f[7, 3, 4]



どうですか SMPでは、パタヌンは満たされたすが、7は$x+$y



構成圢匏ではありたせん。 これを実装するには倚倧な劎力が必芁でした。 簡単な䟋では、すべおが玠晎らしく芋えたした。 しかし、最終的には、これはそれほど頻繁に必芁ではありたせん。必芁な堎合、圌らはそれを避けようずしたす。そのような構造はプログラムの可読性を倧きく損なうため、それが䜕をするのか理解するのが難しくなりたす。



再垰制埡に぀いおも同様のこずがありたした。 これらの構成は、 f[$x] : $xf[$x-1]



 f[1]



を指定せずにを避けるべきだず考えたした。なぜなら、これらには無限ルヌプがあり、 f[-1]



、 f[-2]



を蚈算しようずするためf[-2]



そしお、最埌に、ある時点で0による乗算が発生するたで続きたす。 さお、SMPでは、デフォルトでれロが出力されたした。 SMPは再垰ツリヌの各ブランチを蚈算するのではなく、定期的に停止し、蚈算されおいないすべおのブランチを単玔化しようずしたためです。 スマヌトで゚レガントでした。 しかし、誰かがこの動䜜を蚭定しようずするず、すべおが耇雑すぎお理解できなくなり、最終的には誰もそれを䜿甚したせんでした。



そしお、ナヌザヌ定矩の構文がありたした。 圌は、䟋えば、䞭眮挔算子ずしお「 U



」䟋えば「 union



」を蚭定するこずを蚱可したした。 そしお、誰かが「u」ずいう関数を導入するたで、すべおがうたくいきたした。 たたは、誰かが自分の構文の囚人になるたで。



SMPは倚くのこずを教えおくれたした。 Mathematicaの前にSMPがなければ、それほど良くないでしょう。 そしお今、SMPの゚ラヌに぀いお考えおみるず、おそらくこれらの゚ラヌはすべお過去のものであるずいう事実に満足しおいたす。 SMPずMathematicaの蚭蚈に関する25幎間の䜜業の埌、それらのほずんどは単玔なタスクのカテゎリに分類されたす。



SMPで最高のアむデアが出おこないこずがどれほど頻繁にあるかはおかしいです。 そしお、実際、私はデザむンに関する珟圚の芋解に非垞に興味があり、SMPを立ち䞊げたらどうなるでしょうか。 そしお、これは私が圌女を捕らわれから解攟し、圌女を再び仕事にしたい理由の䞀぀です。 あなたの䞀人がこれを手䌝っおくれるこずを願っおいたす。



All Articles