🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Scheme

Schemeは、Lispから派生したプログラミング言語の一つであり、仕様または実装を指す場合もあります。言語自体の仕様はシンプルで、関数型言語として理解しやすいことから記号処理などで主に用いられている言語です。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

Q&A

解決済

3回答

2013閲覧

S式が提案された理由・意義について

退会済みユーザー

退会済みユーザー

総合スコア0

Scheme

Schemeは、Lispから派生したプログラミング言語の一つであり、仕様または実装を指す場合もあります。言語自体の仕様はシンプルで、関数型言語として理解しやすいことから記号処理などで主に用いられている言語です。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

0グッド

2クリップ

投稿2019/10/31 02:50

前提・実現したいこと

Lispという言語がS式をそのままプログラムとして書けるためにデータとコードを行き来できるという点が良いということはわかるのですが、なぜS式及びLispという表記方法が計算機科学/コンピュータ・サイエンスの分野で多用されているのか、なぜS式が作られたのかがわからず悩んでいます。
S式が提案された理由, 意義をお教えいただけないでしょうか。

試したこと

調べたページ
Lisp:S式の理由
なぜLispなのか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

なぜS式及びLispという表記方法が計算機科学/コンピュータ・サイエンスの分野で多用されているのか、なぜS式が作られたのかがわからず悩んでいます。

そもそもS式は、プログラムを人間が書くことを念頭に作られたものではなかったのです。

Lispを提唱したジョン・マッカーシーが、「Lisp自身でLispを評価できる」ことを示すために、LispのプログラムをS式で表現してそれをLispで処理する、というような論文を書きました。マッカーシー自身はLispのS式での表現と、それを実行する処理系は、あくまで理論上のものと考えていました。

ところが、マッカーシーの論文を読んだ大学院生が、S式で書かれたLispを処理できるインタプリタを作ってしまいました。実際に使ってみると、データもプログラムも同じS式で表される、ということに利便性もあって、そのままS式での表記が定着してしまった、とのことです。

LISP - Wikipedia

投稿2019/10/31 04:25

編集2019/10/31 04:26
maisumakun

総合スコア145975

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/10/31 04:30

ということで、S式の最大の特徴は、「プログラムとデータの両方を表現できるシームレスなデータ構造」という点にあります。
guest

0

ベストアンサー

もちろん、かっこいいからです。


LISPができたのは1950年代ですから、どういう時代だったのかを考えてみると良いのかもしれません。

  • 他に存在する「プログラミング言語」はアセンブリだけ(機械語を含めないなら)。プログラミング言語の概念そのものがない

現代から見れば奇異な発想でも否定してかかるわけにはいかないですね。

  • コンパイラ技術が未発達

構文的に単純で、またプログラムの表記とデータ構造が直接対応するS式の性質は、当時としては望ましいものだったでしょう。特にインタプリタは簡単に作れます。


参考:
John McCarthy 1960

Introductionを見るだけでも面白いです。マシン依存でないことを強調している割にIBM 704上で作ったことを連呼しているあたりに当時の雰囲気が伝わってきます。

投稿2019/10/31 05:03

編集2019/10/31 05:13
hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/01 08:09

その時代から考えるという視点が抜けていました。お教えいただき、ありがとうございます。
guest

0

木構造データを、2次元の図でなく1次元で表現すると、どうしてもS式のようなものにならざるを得ないと思います。

あとは、プログラム自身をS式で書くかどうかですね。
私が最初に読んだLISPの入門書は、プログラムがM式 (car[(1 2)]みたいなの。うろ覚えですが)で書いてありましたが、改訂二版でS式になっていました。

投稿2019/10/31 07:18

otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2019/10/31 10:07

> 木構造データを、2次元の図でなく1次元で表現すると ハッとする表現でした。高評価させていただきました。 > LISPの入門書は、プログラムがM式 (car[(1 2)]みたいなの。うろ覚えですが)で書いてありましたが、改訂二版でS式になっていました。 LISPの変遷に追従しているようで興味深いですね。M式についてwikipedia(https://en.wikipedia.org/wiki/M-expression)を読むと > M-expressions (or meta-expressions) were an early proposed syntax for the Lisp programming language, inspired by contemporary languages such as Fortran and ALGOL. とあり、歴史を感じます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問