2分で読めます
| マック
この記事は社説という肩書きですが、実際には気まぐれで遊び心のある思考の練習です。少しお付き合いください。

MacBook Pro: CPU、約12~16ギガフロップス、GPU、約125ギガフロップス
今、私は20秒で1億正弦演算を実行できるコンピュータの前に座っています。しかもPerlで計算したんです。コンパイルされたCコードを書いた方がおそらくもっと速かったでしょう。もしこの速度と大きさのコンピュータをタイムスリップさせたら、1975年に第三次世界大戦が勃発していたでしょう。
しかし、長年のソフトウェア開発を経て、私たちは Mac であれ PC であれ、パーソナル コンピューターから本当に最大限の抽象化を実現できているのだろうかと疑問に思います。
冒頭で述べたように、機械語からアセンブリ言語、そしてC言語のような言語が生まれ、一部の高水準コンパイラはC言語で書かれています。しかし、そのプロセスは通常そこで止まります。なぜなら、当時普及していた言語は別の目的で使用されるからです。例えば、プログラマーが商業的に実現可能なアイデアを思いつき、そのアイデアを実装するためにObjective-CやCocoaフレームワークといった最新のツールを活用するとします。作者がiWebのような別のツールを開発して、さらに別の抽象化レベルを構築しない限り、抽象化のレベルはそこで終わります。
私が提起したい質問は次のとおりです。
現在のハードウェア技術とソフトウェアツールの驚異的なレベルを考えると、抽象化の力を最大限に高めるために、抽象化のレベルをどこまで高めれば究極のツールを構築できるでしょうか?私はそれを「Macの最大限の活用」と呼んでいます。
TheBrainのようなマインドマッピングツールはよく知っていますが、私が探しているのはそれとは少し違います。なぜなら、それは知識を整理するためのツールであって、問題解決のためのツールではないからです。私が考えているのは、人間が問題を簡潔に表現し、コンピューターに素早く答えを出させる、より幅広い問題解決ツールです。例えば、
Excel スプレッドシートは会計にとって、??? は一般的な問題解決にとっての役割を果たします。
??? は 2009 年に次のように実装するのが最適であると主張する人もいるかもしれません。
- ジャワ
- マイクロソフト ビジュアルベーシック
- REALのREALbasic
- パイソン
しかし、私は少なくとも 1 レベル高い抽象化を考えています。おそらくそれ以上でしょう。なぜなら、上記のいずれかを習得するには、たとえば (うーん!) CLASS_PATH、IDE (Eclipse、Xcode)、高水準プログラミング言語の詳細な構文など、苦労して習得した詳細なスキルが必要だからです。
まだそこまでには至っていない
思い浮かぶ例の一つは、AppleのSnow LeopardにおけるGrand Centralです。セーフスレッドの管理は、非常にタイトな出荷スケジュールに追われるプログラマーにとって、非常に大きな課題でした。「すべての機能を備え、コンパイルできたらQAを実施し、QAに合格したら出荷する」という考え方です。Grand Centralでは、プログラマーはスレッドを起動するためにAPIの上位レベルで作業でき、低レベルAPIの煩雑な詳細に煩わされることはありません。これにより、プログラミング作業は管理しやすくなり、ハードウェアのパワーをより引き出すことができます。
もし研究プロジェクトが、すべてのCocoa APIを特定し、その上に汎用的な基盤構造を構築するという作業に取り組んだとしたらどうなるでしょうか?そして、最終的には一般的な問題解決に役立つGUIの開発を念頭に置きながら、さらに研究を進めていくとしたら?そのプロセスはどこまで進むことができるでしょうか?
今のところ、特定の種類の問題にはAppleのNumbersを使います。別の種類の問題にはPCalcを使います。また別の種類の問題にはPerlを使うかもしれません。私は無数のツールを持っていますが、それらはすべて、解を構築する前に適切な形に整えなければならない特殊な種類の問題を解くために設計されています。
幅広い問題を、より一般的な問題解決ツールとして特徴づける方法はあるでしょうか?答えがわからないため、漠然とした表現になっているのは承知しています。質問を投げかけるだけでも大変です。
気まぐれモードに入ってるんだけど、きっとどこかに同じことを考えている人がいるはず。