プログラムを追及するとブートストラップ問題を知るという話

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

こんにちわ。
 

夜寝るときにベッドを使うのをやめて、省スペースで寝るために、毎晩寝袋で寝ている、下駄です。
 

「ブートストラップ問題」ってご存知ですか?
 

プログラム言語そのものをコンパイルする際に、そのプログラム言語自体でコンパイルする場合、「最初のコンパイルはどうやったんだ?
という疑問から生まれたモノらしいけど、確かにその疑問よくわかるね。
 

c言語はgccコマンドでコンパイルすればいいし、go言語も、自身の言語でコンパイル処理はできる。
 

そのc言語とgo言語は、どうやってコンパイルしたのか?という、何とも面白い疑問。
 

https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97%E5%95%8F%E9%A1%8C

コンパイラとインタプリタ

web系の人が「ブートストラップ」と聞くと、フロントエンドライブラリの「Bootstrap」を頭に思い浮かべるだろう。
 

名前で考えると、bootというのは、コンピュータが起動することで、strapは「吊り革」???という事なのだが、ブートストラップは、英語でいうと「Bootstrapping」らしい。
 

そもそも、カタカナ英語は省略されることが多いので、間違って伝わるということも意識して置かなければ、間違った知識として覚えてしまいそうだ。
 

https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97
 

そもそも、webエンジニアは、最近こそGo言語が増えて入るものの、コンパイルとは無縁のプログラミングが主のため、あまり馴染みのないプログラマーも多いでしょう。
 

かくゆう自分も、c言語などは、知識程度に触って、かんたんなツール作成をする程度で、弄り倒してはないんですが、インタプリタ言語に慣れている人は、コンパイル言語はもどかしいツールという認識があるとともに、コンパイル言語の処理の高速さや、プログラミングの適用範囲が限りなく広い点に、魅力は大きく感じています。
 

そういえば、phpはc言語で書かれているんだってね。ふと思い出しました・・・

鶏と卵

ブートストラップ問題も、C言語がプログラム言語とコンパイラが別れていることからわかるように、何も自分自身でコンパイルしなくてもいいという事ですが、
 

では、コンパイラはどうやってコンパイルされているのか?という疑問も同時に生まれてくる。
 

ここで思い出したのが、ビジネス業界で、巨大なプラットフォーム展開しているSalesforceも、そのサービスの特徴として、セールスフォースのプログラム自体もすべてそのサービスデータベースに格納されていて、管理されているという説明を聞いたことがある。
 

それを聞いたときに、「最初はどうやって作ったのか?」と疑問が浮かんできたのは事実だ。
 

おそらく、プログラム言語も、salesforceも、最初は、有りもののコンパイラや、通常構成のプログラム構成であったはずで、
 

その後のバージョンアップを指定う過程で自分自身でコンパイルしたり、プログラム自体もデータベースに埋め込んだりして、現在に至るという状況なのでしょうね。
 

結果だけを聞いていると、不思議に思えるけど、歴史を聞けば納得行かないはずがないですよね。
 

学ぶべき点は、その歴史の過程で、その方向性に決めたという判断が、自分がプログラミングをする際の知識として生きることがあるという事でしょう。
 

ブートストラップ問題も、そうした過程を知らない人が普通に感じる疑問というもの、納得できます。
 

疑問に感じるという事自体が、その人を成長させるという事も理解できて、いい気付きでした。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です