スティヌブン・りルフラムの本「りルフラム蚀語入門」







スティヌブン・りルフラムの「本を曞いた—りルフラムの蚀語を教えるために 」翻蚳埌。

Kirill Guzenkoに感謝したす。
「Wolfram蚀語入門」ずいう本は、 ハヌドコピヌ 、 無料のオンラむン 、 その他の圢匏で利甚できたす。







い぀か別の本を曞くかどうかわかりたせんでした。 私の最新の本-A New Kind of Science-は 、10幎以䞊にわたる集䞭的な研究に費やしたもので、これたで行ったすべおの䞭で最倧のプロゞェクトです。



しかし、少し前に別の本を曞く必芁があるこずに気づきたした-プログラミングに粟通しおいない人を玹介する本で、 Wolfram蚀語ずこの蚀語が提瀺するコンピュヌティング分野の考え方を玹介する本です。



その結果が、今日出版されおいる初玚Wolfram蚀語の本です。 たた、むンタヌネットや他の圢匏でも自由に利甚できたす 。







この本の目的は、れロから人々を導いお、Wolfram蚀語に぀いお十分に知っお、それを定期的に䜿っおやりたいこずすべおのためのプログラムを䜜成できるようにするこずです。 そしお、「れロ」ず蚀うずき、私は本圓に「れロ」を意味したす。 この本は皆のためです。 プログラミング、数孊算術の基本を陀く、たたはその他の分野の知識を意味するものではありたせん。 圌女は最初からリヌドし、さたざたなこずを説明しおいたす。 私はそれを倧人ず子䟛の䞡方に適したものにしようずしたした。 12歳以䞊の普通の子䟛にはずおも適しおいるず思いたす。



過去には、そのような本の存圚は䞍可胜でした。 その実装に必芁な技術はただ存圚しおいたせんでした。 真面目なプログラミングは垞に倧倉な䜜業であり、実際の抂念ず結び぀ける良い方法はありたせん。 しかし、今ではWolfram蚀語がありたす。 その䜜成には30幎かかりたした。 しかし、珟圚では十分な量の組み蟌みの知識が含たれおおり、プログラミングプロセスは十分に自動化されおおり、知識のない人から蚈算可胜な人の境界に人を導くこずができたす。







しかし、それを行う方法は 䜕をどの順番で説明する必芁がありたすか この本を曞くこずになった問題がありたした。 少し前に、 プログラマヌ向けの簡単な玹介を曞きたした。30ペヌゞほどで、Wolfram蚀語の基本的なアむデアをすでにプログラミングに慣れおいる人々に玹介しおいたす。 しかし、プログラミングに぀いお䜕も知らない人はどうでしょうか



長幎にわたり、私はこれらの人々に珟圚のWolfram蚀語が䜕であるかを瀺す様々な方法を芋぀けおきたした。 それで、私はこの経隓で䜕をする必芁があるかをこの本で説明したした。



これは察話です



本質的に、この本は読者ずコンピュヌタヌの間の䌚話です。 Wolfram蚀語には、すべおが正垞に機胜するようにする2぀の重芁なこずがありたす。 たず、蚀語はシンボリックであるため、 color 、 image 、 graphなど、 凊理するすべおのものをダむアログボックスに衚瀺できたす。 そしお第二に、蚀語は玔粋に機胜的であるため、その䞭のすべおが安定しおおり、入力はすべお自絊自足の構造になりたす。







たた、Wolfram蚀語に組み蟌みの知識が含たれおいるこずも非垞に重芁です。これにより、実際の蚈算をすぐに開始できたす。











芖芚化も同様に重芁です-したがっお、䜕が蚈算されたかを簡単に確認できたす。







どこから始めたすか



では、どこから始めたすか 算術に関する本の最初のペヌゞ -結局のずころ、これは誰でも蚈算の仕組みを芋るこずができる領域です







Wolfram蚀語の「 単語 」の䞀郚を理解するのに圹立぀蟞曞 語圙ず呌ばれるセクションがありたす。 たた、 挔習 挔習もありたす。



さお、算術は終わりたした。次はどこに行きたすか 私は関数の衚珟に盎行し、算術抂念を通しおそれらを玹介するこずにしたした。 プラスは、関数の抂念は読者にずっおは新しいかもしれたせんが、それらが実行する操䜜算術挔算はすでによく知られおいるこずです。







Plus関数が明らかになるずすぐに、特別な玹介を必芁ずしないMaxなどの関数にすぐに切り替えるこずができたす。 Max関数は特に興味深いこずは䜕もしたせん。 次に玹介するより興味深い機胜はRandomIntegerです 。これは、人々が䜕床も䜕床も䜿甚しお、それが䞎えるものを確認するのが奜きです。



それでは、次は䜕ですか 答えは明らかです-リストを入力する必芁がありたす。 しかし、リストをどうするか それらから芁玠を遞択するこずは特に゚キサむティングではないようであり、これが重芁であるずいう理解はすぐには埗られたせん。 したがっお、リストを操䜜するための最初の機胜であるListPlotを導入するこずにしたした。 芖芚化から始めるのは玠晎らしいこずです。たた、これはほんの小さなコヌドを入力しお、最終的により倧きくお興味深いものにする方法の良い䟋でもありたす。







実際、最も単玔な䟋の䞭で最も優れおいるのはRange関数であり、これもここで説明したした。 範囲は、コンピュヌタヌが実際に䜕かを蚈算しおいるこずを瀺し、理解しやすい結果を生成する玠晎らしい方法です。



さお、今、私たちは機胜ずその共同䜜業のアむデアを統合する必芁がありたす。 Reverse関数は実際にはあたり䞀般的ではありたせんが、理解するのは非垞に簡単です。 次に、 Join関数を玹介したす。







良いニュヌスは、 Reverse 、 Range 、およびJoinを䜿甚するず 、完党に自絊自足であり、さたざたな蚈算を実行できるある皮のマむクロ蚀語があるこずです。 そしお、もちろん、蚈算を行うず、シンボリックたたはグラフィック圢匏で結果をすぐに芋るこずができたす。







次のセクションでは、 芖芚化ずリストの操䜜に぀いお説明したす。これにより、前述の内容が統合され、実際に圹立぀さたざたな機胜が玹介されたす。 次に続くのはTableで、これにはルヌプなどの䟿利な機胜を含む非垞に匷力で䞀般的な機胜がありたす。



反埩子のない単玔なバヌゞョンのTableから始めたす。 Tableは数字のリストず同じ方法でグラフィック芁玠のリストを衚珟できるこずは圓然だず思いたすもちろん、これができるずいう事実は、Wolfram蚀語の根本的に象城的な性質の結果です。







次の倧きなステップは、 Tableに倉数を入力するこずです。 私はこれをどのように行うかに぀いお倚くのこずを考え、玔粋に象城的なバヌゞョンでこれを最初に瀺すこずが最善であるず刀断したした。 最埌に、関数を既に玹介したした。シンボリックバヌゞョンでは、倉数の出所をすぐに確認できたす。 しかし、倉数を含むテヌブルを導入したので、倖に出お、「リアルコンピュヌティング」ず呌ばれるものを実行するこずができたす。







本ぞのゲヌトりェむ



本の最初の数セクションでは、蚈算の材料は䞻に数字ずリストでした。 さらに、蚈算に䜿甚できるものが他にもあるこずを瀺したいず思いたす。 最初の䟋のように、 色を遞択したした。 a誰もが自分の存圚を知っおいる、b蚈算を実行できる、c助けを借りおカラフルな結果を埗るこずができるため、色は良い遞択です。







色が完成したら、 グラフィックオブゞェクトに移りたす 。 座暙の抂念は導入しなかったため、個々のグラフィックオブゞェクトを衚瀺できるのは、それらの䜍眮に関する情報なしです。







そしお、3次元の図圢に觊れない理由はたったくありたせん。さらに、それらに觊れたす。







これで、「高床な」䜕か、 むンタラクティブな操䜜の準備ができたした。 構文の点では、 Tableず倚くの類䌌点がありたすが、ここでは完党なむンタラクティブナヌザヌむンタヌフェむスが埗られたす。 たた、グラフィックスを導入したため、むンタヌフェむスの䞀郚になる可胜性がありたす。 人々は、倚数の異なるプログラムでむンタラクティブなむンタヌフェヌスを芋たした。 私の経隓では、圌らが自分でれロから䜜成する胜力に非垞に感銘を受けるこずを瀺しおいたす。







この本で次に玹介するのは、おそらく驚くべきこずですが、画像凊理です。 はい、画像凊理の背埌には倚くの耇雑な蚈算がありたす。 しかし、Wolfram蚀語では、すべおが内郚に隠されおいたす。 そしお、人々はBlur 、 ColorNegateのような機胜を芋るだけで、その目的は簡単に理解できたす。



たた、人々、特に子䟛は、必芁に応じお画像をドラッグするだけで画像を䜿甚しお蚈算を実行できるこずを奚励しおいたす。 実際、これは倧量のデヌタが倖郚からプログラムに入力される本の最初の䟋ですセクションのサンプル画像が必芁だったので、りェブカメラで本の䜜業をしたした。







それから私は行ずテキストに぀いお話したした。 文字列操䜜は非垞に退屈です。 しかし、Wolfram蚀語には、りィキペディアの蚘事から単語の雲を芖芚化するか、さたざたな蚀語で人気のある単語を怜玢するかに関係なく、あなたができる倚くの興味深いこずがありたす。







次に、 音ず音笊からシヌケンスを䜜成する方法に぀いお説明したした。 もちろん、印刷された本ではそれらを聞くこずはできたせんが、小さなアむコンは私たちが䜕を扱っおいるのかをある皋床瀺しおいたす。







「グラフィックの盎埌に音に觊れないのはなぜですか」ず尋ねるかもしれたせんが、たず第䞀に、興味を維持するためにいく぀かのこずを混ぜるこずが良いず思いたした。 ただし、異なる領域の間には䟝存関係の特定のチェヌンがありたす。 たずえば、音笊の名前は文字列ずしお指定されるため、最初に文字列に蚀及する必芁がありたす。



以䞋は、 配列、たたはリストのリストです。 その埌- 座暙ずグラフ 。 たず、座暙があたりにも「数孊的な」ものであるこずが心配でした。 しかし、特に配列を調べた埌、座暙はもはや非垞に耇雑な抂念ではないようです。 たた、2次元座暙の抂念を怜蚎したので、3次元に移行するこずは難しくありたせん。







本のこの時点で、人々はすでにWolfram蚀語で本圓に圹に立぀こずをする方法を知っおいたす。 それで次のセクションでは、ある皮の間奏をもたらしたした-メタセクションの䞀皮で、 Wolfram蚀語のボリュヌムを理解し、特定のトピックや機胜に関する情報を芋぀ける方法も瀺したす。







抜象コンピュヌティングを導入したので、今床は実際のデヌタに぀いお説明し、Wolfram LanguageがWolfram | Alphaで提瀺する膚倧な量のデヌタにアクセスする方法を瀺したす。







倚くの実䞖界のデヌタにはナニットが含たれおいるため、次のセクションではナニットの操䜜に぀いお説明したす 。 これが完了したら 、地理蚈算セクション地理に関連する蚈算に觊れたす。たずえば、地球䞊のポむント間の距離を怜玢したり、マップを描画したりできたす。







その埌、 日付ず時間に぀いおお話したす 。 これは特に面癜くお有甚なトピックではないず思うでしょう。 しかし、これは実際にはナビキタスな実際のコンピュヌティングの非垞に良い䟋です。







Wolfram蚀語は非垞に膚倧な蚀語です。 しかし、それは垞に䜕床も䜕床も䜿甚されおいる少数のアむデアに基づいおいたす。 本の最も重芁なタスクの1぀は、これらのアむデアをカバヌするこずです。 そしお次のセクション- オプションに぀いお -は、実際に絶え間なく発生する1぀の簡単なアむデアをカバヌしおいたす。







オプションの埌、私たちはしばしば耇雑なトピックずしお芋られる䜕かに぀いお話す準備ができおいたす グラフずネットワヌク 。 しかし、私の経隓では、人々は日垞生掻でかなり倚くのグラフずネットワヌクに盎面しおいるため、Wolfram蚀語でそれらを理解するのに倧きな問題はないこずを瀺しおいたす、これはシンボリックオブゞェクトの別の䟋です。







グラフずネットワヌクに続いお、䞀芋非垞に耇雑なトピックである機械孊習を開始する準備ができたした。 しかし、内郚の機械孊習アルゎリズムが耇雑であっおも、Wolfram蚀語でそれを実装する機胜自䜓は非垞に理解しやすいものです。 そしお、玠晎らしいこずは、圌らず䞀緒に倚くの䟋を感じたこずで、機械孊習の重芁なアむデアの非垞に良い盎感的なアむデアを埗るこずができるずいうこずです。







本を通しお、私は可胜な限り単玔な方法で物事を提瀺しようずしたす。 ただし、これにより、すでに取り䞊げたトピックをより詳现に調べる必芁が生じる堎合がありたす。 「数倀の詳现」ず「その他の芖芚化」はこの事実を瀺す2぀の䟋であり、すでに通過した抂念を説明しおいたすが、これらの領域をより完党に理解するには、新しいレベルでそれらに戻る必芁がありたす。



関数型プログラミング



次のいく぀かのセクションでは、 関数型プログラミングの重芁か぀信じられないほど匷力なトピックを明らかにしたす 。 過去においお、関数型プログラミングは䞀般的に耇雑なものず芋なされ、プログラミングを習い始めたばかりの人々に教える䟡倀のあるものではありたせんでした。 しかし、Wolfram蚀語は状況を倉えたず思いたす。そしお今、はるかに理解しやすい蚀語で関数型プログラミングを説明するこずが可胜になりたした。 関数を適甚するプロセスに぀いおの抜象的な䌚話から始めるこずにしたした。







たず、 玔粋な匿名関数に぀いおお話したいず思いたす 。 原則ずしお、もっず早く話をするこずができたすが、その前に、関数が䞀般的にどのように䜿甚されるかを人々に瀺すこずが重芁だず思いたす。







次のセクションでは、関数型プログラミングの真の力のいく぀かの兆候に既に気づくこずができたす。 䞀般的に、 NestListやNestGraphなどの関数は、かなり耇雑で抜象的に芋えるかもしれたせん。 しかし、本のこの時点では、十分な数のWolfram蚀語構成䜓を調べたので、簡単に説明できる倚くの具䜓的な䟋がありたす。







次のいく぀かのセクションでは、玔粋な機胜を理解するずきに開かれる蚀語の領域に぀いお説明したす。 少ないアむデアから生たれる倚くの匷力なプログラミング方法がありたす。







関数型プログラミングの埌、次の倧きなトピックはテンプレヌトずパタヌン指向プログラミングです。 以前にそれらに぀いお話をするこずはできたしたが、今のずころそれらの必芁はありたせん。







Wolfram蚀語でテンプレヌトを非垞に匷力にする基本的なものがありたすシンボリック匏に基づいた蚀語のあらゆるものに察する単䞀の構造です。 Wolfram蚀語の仕様を曞いたら、文字匏から始めたす。 そしお、理論蚈算機科孊たたは玔粋数孊の専門家向けの本を曞いたなら、確かに同じこずをするでしょう。



シンボリック匏は理解しにくい抂念ではありたせん。 Wolfram蚀語が実際に実際にどのように機胜するかがわからないだけで、理論的基瀎を研究する動機付けが難しい。 しかし、今ではそれらに぀いお話をするのが理にかなっおいたす。特に、テンプレヌトを䜿甚しおその栄光の䜜品をすべお芋るこずができるからです。



スタック党䜓



本のこの時点で、たずえばWebアプリケヌションをデプロむする方法を怜蚎する準備ができたした。 しかし、その前に、他に考慮すべきこずがありたす。 協䌚に぀いお、それから自然蚀語認識に぀いお話したす。 内郚的には、蚀語認識システムは非垞に耇雑なものです。 しかし、Wolfram蚀語レベルでは認識は䜿いやすいですが、他の事柄ずどのように関係するかを芋るためには、玔粋な機胜に぀いお話す必芁がありたす。







さお、これですべおがむンタヌネットでの展開に぀いお話す準備ができたした 。 そしお珟時点では、人々は、䞖界ず共有できる䟿利なアプリケヌション゜フトりェア構成を䜜成する機䌚がありたす。







すべお220ペヌゞほどかかりたした。 しかし、私にずっおは、これは驚くほど少数のペヌゞであり、れロから最初からWebアプリケヌション開発の専門分野に進むこずができたす。 特定の皮類のアプリケヌションに぀いおのみ説明した堎合、これはそれほど印象的ではありたせん。 しかし、ほずんどすべおの皮類の蚈算を実行できる非垞に䞀般的な圢匏のアプリケヌションに぀いお話しおいたす。







倉数ぞの倀の割り圓お



C ++やJavaなどの埓来のプログラミング蚀語に関する本を開いた堎合、最初に出くわすトピックの1぀は、倉数に倀を割り圓おるこずです。 しかし、私の本では、 38番目のセクションでのみこのトピックを匕甚しおいたす。 ある意味、これは奇劙に思えるかもしれたせんが、実際にはそうではありたせん。 結局のずころ、Wolfram蚀語では、倉数に倀を割り圓おるこずなく本栌的なWebアプリケヌションをデプロむするなど、驚くほど倚くのこずができたす。



そしお実際、これがWolfram蚀語の習埗が非垞に簡単な理由の1぀です。 実際、倉数に倀を割り圓おない堎合、各コヌドは独立し、垞に同じ動䜜を瀺したす。 しかし、倉数ぞの倀の割り圓おを開始するずすぐに、非衚瀺の状態が衚瀺され、倉数の珟圚の倀に応じおコヌドが異なる凊理を実行したす。



それにもかかわらず、倉数ずテンプレヌトぞの倀の割り圓おに぀いお話し合ったずき、Wolfram蚀語でたすたす耇雑な機胜を導入できる独自の関数の定矩に移る準備ができおいたす。







この時点で、読者はWolfram蚀語の甚語ず基本抂念に぀いお完党にガむドされおいたす。 しかし、本の最埌のいく぀かのセクションでは、いく぀かの重芁な応甚ポむントに぀いお説明しおいたす。 文字列パタヌンず眮換に関するセクションがありたす。 次のセクションでは、 デヌタずコヌドをロヌカルおよびクラりドに保存する方法に぀いお説明したす 。 次に、 むンポヌトず゚クスポヌトのセクション。 次に、 デヌタコレクションセットのセクション。 Wolfram蚀語を䜿甚するすべおの人がデヌタのコレクションセットを必芁ずするわけではありたせんが、倧量の構造化デヌタを凊理する必芁がある堎合、このセクションは非垞に圹立ちたす。 そしおそれらはすべお、Wolfram蚀語でさたざたなアむデアがどのように実装されおいるかの興味深い䟋です。



゚ッセむセクション



本の最埌には、さたざたなトピックに関する゚ッセむのセクションがありたす 良いコヌドを曞くこず、 デバッグ するこず、それがプログラマヌであるず感じる方法に぀いお。 これらのセクションの目的は、この本を読んだ結果ずしお生じた思考方法を開発し、いく぀かの抜象的なアむデアに結び付けるこずです。







プレれンテヌションの構成



最初に蚀ったように、この本は基本的に口語的なスタむルで曞かれおいたす。 ほずんどすべおのセクションで、 質問ず回答ず技術的詳现 ずいう 2぀の远加郚分を远加したした。 質問ず回答を含む郚分の目的は、人々が最も頻繁に遭遇するこれらの質問ぞの回答を、ストヌリヌテリングのメむンラむンから気を散らすこずなく提䟛するこずです。







質問にはいく぀かの皮類がありたす。 䞀郚は、前述の機胜拡匵に関するものです。 䞀郚は、これらすべおの背埌にあるものに぀いおです。 たた、いく぀かの質問「べき乗ずはどういう意味ですか」読者によっおは単玔すぎるように芋えるかもしれたせんが、すべおの読者にずっおはそうではありたせん。



質問ず回答を含む郚分に加えお、技術的な詳现を含む郚分を含めるこずは合理的であるように思えたした。 圌らの目暙は、特定の分野に既に十分に適応しおいる人々に技術情報を提䟛し、圌らの知識を本の資料ず組み合わせるこずができるようにするこずです。



挔習



ほずんどのセクションで瀺されおいる他の郚分は、挔習のコレクションです。 それらの倧郚分は、「 Nを䜜成するコヌドを曞く 」ずいう圢匏で衚瀺され、「 このコヌドのより単玔な同等物を芋぀ける 」ずいう圢匏はほずんどありたせん 。







印刷された本の最埌には、すべおの挔習ぞの答えがあり、Webバヌゞョンには远加の挔習がありたす。 もちろん、そこに提瀺される答えは可胜なものの1぀だけであり、これが唯䞀の正しい答えである堎合、状況はほずんど発生したせん。







挔習を曞くこずは私にずっお興味深い経隓でした。実際、これは、たずえば人工知胜ず通信する方法に぀いおの私の考えの文脈においお非垞に重芁です。 結局のずころ、ほずんどの挔習では基本的に「 このテキストを英語で取り、Wolfram蚀語コヌドに倉換したす」 ず曞かれおいたす 。 簡単なこずですが、英語は自分自身を説明するのに適しおいたす。 しかし、タスクが難しいほど、英語で説明するのは難しくなりたす。 䞀般に、本を曞くずき、英語で曞くよりもWolfram蚀語の゚クササむズに答える方がはるかに簡単な状況にしばしば遭遇したした。



ある意味では、これは非垞に優れおいたす。なぜなら、Wolfram蚀語はアむデアを衚珟するのに非垞に適しおいるからです。 英語で簡単に衚珟できるものもありたすが、Wolfram | Alphaでの解釈に合栌できたす。 しかし、Wolfram蚀語にはもっず倚くの構造ず粟床が必芁なものがたくさんありたす。



本



ある意味では、はるかに柔軟な構造でりェブ圢匏で䜕かを䜜成するのではなく、印刷可胜な本を曞くのは奇劙に思えるかもしれたせん。 しかし、私にずっおは、この本の抂念が非垞に圹立぀こずがわかりたした。 はい、リンクをたどっお倚くの情報を取埗できるWebサむトを䜜成できたす。 - , , , , .



, - . - , - . , , - — — .



, Wolfram Language, . , , ( ), , .. , . , : , Wolfram Language .





« ». . Wolfram Language — . , , , , . , .



, , , , . , ; , .



, , , Wolfram Language, . , , .









Wolfram Language. 1988 , Mathematica, . : , . 767 . 10 , «» 1488 . , — , .







, , , , . , , , 50 000 .



, Mathematica , , , , . , Wolfram Language , , .



, , Wolfram Language ( Mathematica) . , , , . , , Wolfram Language Mathematica , .



?



, - , . , , , Wolfram Language , , . , . , , , . .



: " ? ". , , , , , . . .



この本を曞くのは本圓に楜しかったです。人々がそれを読んで興味を持ち、 Wolfram蚀語ですばらしいものを䜜成する方法を孊ぶこずを願っおいたす



All Articles