![見出し画像](https://assets.st-note.com/production/uploads/images/83404680/rectangle_large_type_2_34e0fd1f2c1386d15104a446932e1fdf.png?width=800)
【技】PrologとSQL/アルゴリズムとデータ構造の話
聴いてみよう
この記事は、Podcast「にゃおのリテラシーを考えるラジオ」の2022年7月27日配信の書き起こしです。
読んでみよう
にゃおのリテラシーを考えるラジオ
読書と編集の千葉直樹です。
このチャンネルでは、読書と IT 時代の読み書き、そろばんを中心に様々な話をしています。
今回のタイトルは、
PrologとSQL/アルゴリズムとデータ構造の話
というものです。
プログラミングの始まりに知っておくこと
僕がプログラミングを人に教える時に、わりと最初のところで話すことがあります。
プログラムは 2 つの要素で成り立っているということです。
2 つとは、アルゴリズムとデータ構造です。
これらを身近な具体的なものを例に説明するのです。
Prologという言語
詳細は省きますが、この 2 つを意識すると面白いものが見えてくることがあります。
僕がプログラミングを学び始めた 十代の頃に人工知能ブームがありました。
当時のコンピューターのスペックでは実用性が全くなかったので、ブームはすぐに去ってあっという間に冬の時代に入ってしまったのですが、その頃流行っていたプログラミング言語の中にPrologというものがあります。
論理型言語と呼ばれていました。
かなり風変わりな言語で、
「〇〇は✕✕である」
みたいな論理を宣言的に書いていくだけで、アルゴリズム的なものは書かないものでした。
プログラムの駆動は、
「〇〇は✕✕であるか?」
みたいな問い合わせになります。
処理系は与えられた宣伝的知識を使って、それが証明できるかどうか順に当たっていくというような動きをするのでした。
最終的に証明できたらtrue、証明できなかったらfalseという結果が副作用とともに表示されるというものでした。
しばらく使ってみて、僕は内部にデータをたくさん蓄積して、それを検索するものという風に理解しました。
アルゴリズムは処理系におまかせというところがミソなのです。
リレーショナル・データベース
他方で、リレーショナルデータベースの初期のシステムが出てきていました。
今でこそデータベースといえばリレーショナルですが、これはとんでもなくメモリアやCPU を消費するものです。
当時は今は当たり前の検索言語である SQL すら存在せず、データベースごとの独自の記述方法で表を検索していました。
後にリレーショナルデータベースを検索する標準言語として SQL が出てきて、それを使い始めた時に、
「あれ?なんとなくどこかで使ったことがある感じがする」
と思いました。
それがPrologなのですね。
Prologとリレーショナル・データベースの類似
SQL は検索条件を記述するだけで、具体的な検索のアルゴリズムはデータベース処理系に任されます。
データベース処理系は格納されているデータの状況を勘案しながら、最適なパスでデータを集めるようになっています。
その動作がPrologと似ていると感じたのですね。
だとすると、Prologで宣言的に記述していく論理の部分は、 SQL ではINPUT文でデータを入力する部分に対応するということになります。
現在のプログラミングはアルゴリズムとデータをきちんと分けて考えますが、オブジェクト指向を始めとして、これらをアルゴリズムの方向から統合する方向に進んでいます。
Prologやデータベースは逆にデータの側から統合するアプローチなのかもしれないと思ったりしたのでした。
今回はちょっと難しい話になってしまいましたが、流行りのプログラミング言語を覚えることだけがプログラミングを学ぶことではないということを、Prologと SQL の対比で語ってみました。
ぜひ、コンピュータやソフトウェアの歴史についても関心を持ってみてください。
プログラミング言語を学ぶだけでは分からない世界が見えてきますよ。
コメントはこちらで
noteのコメントだけでなく、Stand.fmのコメントや Twitter の DM などでコメントをいただけると嬉しいです。
今後配信の中で参考にしていきたいと思います。
おわりに
読書と編集では IT を特別なものではなく、常識的なリテラシーとして広める活動をしています。
詳しい内容については、概要欄のリンクから、または「読書と編集」と検索して、猫がトップページに出てくるホームページをご覧ください。
この配信の書き起こしをnoteで連載しています。
概要欄にリンクがありますので、フォローいただけると嬉しいです。
今日もワクワクする日でありますように。
千葉直樹でした。
ではまた。
Podcastの聴き方
Podcastの聴き方は以下のnoteをお読みください。
この記事が気に入ったらサポートをしてみませんか?