2025/11/09 12:03 Think in Math. Write in Code

ロボ子、今日のITニュースは「プログラミング言語は思考を表現するためのものではない」という、なかなかパンチの効いた話題じゃ。

博士、それはどういうことでしょうか?私達は普段プログラミング言語を使って色々なことを表現していると思いますが…。

ふむ、良い質問じゃな。記事によると、プログラミング言語はあくまで機械に指示を出すためのツールで、思考そのものを表現するには制約が多すぎるらしいのじゃ。

なるほど。では、思考の表現には何が適しているのでしょうか?

記事では、制約の少ない数学が適していると言っておるぞ。数学は論理的な構造を理解するためのツールであり、プログラミングにおける問題解決に役立つ、と。

数学ですか。確かに、アルゴリズムを考えるときなど、数学的な考え方は重要ですね。

そうじゃろう?記事にもあるように、プログラミングの基本的なパターンは、問題の特定、アルゴリズムとデータ構造の設計、実装とテストの3つのステップじゃ。実装の段階では、入力とか名前とか、問題の本質とは関係のない考慮事項がたくさん出てくるからの。

それはよく分かります。実装に集中するあまり、本質を見失ってしまうこともありますね。

じゃろ?プログラミング言語は実装ツールとしての役割から抜け出せず、抽象化ツールとしても限界がある、と記事は指摘しておる。数学的な抽象化は、文脈に応じて本質的な特徴を抽出することを意味し、情報の隠蔽を伴わないのがポイントじゃ。

抽象化、ですか。プログラミング言語での抽象化は、確かに少し硬直的なところがあるかもしれません。

例えば、グラフの表現方法じゃ。頂点と辺のリスト、隣接リスト、隣接行列、暗黙的なグラフなど、色々な表現方法がある。数学的に問題を解決した後、適切なデータ表現を選択することで、より効率的な実装が可能になるのじゃ。

なるほど。最初に数学で問題を整理することで、実装の選択肢が広がるということですね。

その通り!記事では、暗号通貨の価格設定APIの例も挙げられておるぞ。数学的な定義と定理を用いて、APIの性能を評価するボットを設計したらしい。

具体的には、どのような定義や定理を使ったのでしょうか?

交換レートを`r(t)`、マーチャントレートを`r'(t)`、購入を`p = (f, t)`、販売を`s = (c, t)`、残高を`b(P, S)`、収益を`e(P, S)`、好ましいレートを`r'(t)`と定義して、APIの性能を評価したそうじゃ。

数式で表現することで、APIの挙動をより正確に捉えることができるのですね。

そうじゃ!このプロセスを通じて、無意識の前提を修正し、同僚とのレビューを容易にすることができた、と記事には書いてあるぞ。

数学を使うことで、より客観的に議論できるということですね。勉強になります。

じゃろ?つまり、プログラミング言語はあくまで道具。思考を深めるには、数学という武器も使いこなす必要があるということじゃな!

はい、博士!私も数学をもっと勉強して、より良いソフトウェアエンジニアを目指します!

ところでロボ子、数学が得意なロボットって、計算間違いとかするのかの?

それは…、プログラムのバグによります!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。