チューリング完全について興味を持ち始めたのは、プログラム言語の本の構成がどれも同じことにふと気がついたから。
チューリング完全について興味を持ち始めたのは、プログラム言語の本の構成がどれも同じことにふと気がついたから。
Pythonも、Javascriptも、Javaも、C言語も……どの書籍を開いても、同じことについて、どう表現するかを説明している。つまり、変数、基本的な命令、条件分岐(それぞれの詳細は少しずつ違っている)。いろいろな言語を学ぶと、今までになかったような概念が次々と出てくるのかとおもった(BASICからその他の言語に行くときには、多くの概念的変更が必要だったように)、意外とそうじゃないんだ、というのが発見だった。
タプルと辞書、型宣言と範囲(メモリ効率と可読性に関係する)、関数とオブジェクト指向、インデントと範囲指定(可読性に関係する)など、言語のクセ(好み)はあるけれど、根っこのところは同じなように見えた。言語仕様を学ぶのはそれほど難しくない(一冊本を脇においておけばよい)が、その言語の流儀(こういうときにはこう書くとおもわれているやりかた)を体得するには、時間と経験が必要なんだろうなとおもった。
なあんだ、どの言語もけっきょく同じなのか、とおもっているうちに、Wikipediaなどで「xxxxはチューリング完全である」という記述が視野に引っかかるようになった。「チューリング完全」と「言語仕様の基本構造は同じである」ことは、関係するのではないか、とおもった(たぶん正しい)。 コンピュータサイエンスをやると、こんなことは最初に当たり前のように学ぶのかもしれないが、独学で構築していくと、こういった発見がいろいろとあってたのしい。ひとつひとつ、じぶんの階段を組み上げることで、手に馴染む道具になる……といいなあ。