プログラミング言語のセマンティクスに関する書籍


31

Nielson&Nielsonの「アプリケーションのセマンティクス」を読んでいますが、このテーマはとても気に入っています。プログラミング言語のセマンティクスに関する本がもう1つありますが、実際には1冊しか入手できません。

Turbak / Giffordの本を見てみましたが、長すぎます。Winskelは大丈夫だと思っていましたが、私はそれにアクセスできません(大学の図書館にはなく、お金も不足しています)。Slonnegerは大丈夫のように見えますが、実用的な部分が長すぎるため、彼のスタイルにはあま​​り慣れていません。

私の質問は、Winskelは良い本ですか?そしてそれは時代遅れですか?

また、このテーマに関する他の簡潔な本はありますか?


5
すべての書籍の出版社ページへのリンクを追加しました。閲覧しようとしている他の人に役立つかもしれません。
スレシュヴェンカト

2
どのようなセマンティクスに興味がありますか?表示的?運用中ですか?概要?
オハドKammar

@Ohad Kammar:両方に興味があります。
ジェイ

回答:


31

それは、あなたがどれだけ深く行きたいか、そしてあなたがどれだけ知っているかにかかっています。初心者にとっては、ウィンクセルの本は本当に素晴らしいものですが、はい、約20年前に書かれたように、意味論の最先端を紹介しているわけではありません。それにもかかわらず、それは主題への良い最初の紹介です。T. NipkowがWinskelの著書のかなりの部分をIsabelle / HOLで公式化したことも指摘する価値があるかもしれません。こちらをご覧ください。そのため、プログラミング言語のセマンティクスを理解しながら対話型証明アシスタントを使用して学習したい場合は、多くの一貫した資料を利用する必要があります。

より高度な他の本は次のとおりです。

  • Gunter、Semantics of Programming Languages、より意味のある意味論に焦点を当てたより高度な本、意味論へのアプローチ。期待に応えていない。純粋に機能的な言語に焦点を合わせ、並行性を無視します。これは私が学部生として意味論を学んだ本であり、振り返ってみると、代わりにウィンクセルの本を使用したかったのです。Gunterは初心者にとっては読みやすいものではありません。

  • AmadioとCurienによるドメインとラムダ計算。プロセス計算について説明しているものの、ドメイン理論の伝統で書かれた別の本。

  • ジョンミッチェルの本は、すでに上記で言及されています。また、主にシーケンシャル計算に関するものです。

PierceのTAPLなどの書籍は非常に優れていますが、プログラミング言語の1つの側面、つまり、それと同じくらい重要なタイプに焦点を絞ります。プログラミング言語の一般的な領域の最初の紹介としてはお勧めしませんが、型について学びたい人には必ず読む必要があります。

真実は言われますが、現在、言語のセマンティクスに関する最新の入門書はありません。過去10年間の実質的な進歩を反映したものです。 、公理セマンティクスおよび検証での対話型証明アシスタントの使用。

更新22. 2014年4月: Tobias NipkowとGerwin Kleinが新しい本を出版しました

「イザベル/ HOLのウィンスケル」と見ることができます。プログラミング言語のセマンティクス(主に操作的および公理的)の概要ですが、以前のペンと紙ベースのアプローチとは異なり、この本はそのすべての数学をIsabelle / HOLで表現しています。言い換えれば、それは同時に定理証明に関する本でもあります。

この本は真新しいので、私は教育に使用したことはありませんが 、Pierce et al。によるSoftware Foundationsよりも低いレベルで提案される紹介として本当に適しているようです。


2
表記法からの移行はありますか?以前は手で波打つ証明を使用していたような人のように思えますが、今日では正式な証明を作成することが期待されています。表記法はまだ私たちが行うすべてを簡単にモデル化することはできず、より多くの前提条件を必要とするため、それらの研究者はゲーム、プロセス計算、証明アシスタントなど、より親しみやすい方法を使用します。表記法の低下があるかどうかはわかりません。
オハドKammar

4
表示的意味論と領域理論を混同しないでください。ゲームのセマンティクスは、完全に表示することができ、通常はそうです。つまり、プログラムの意味は、その部分の意味の関数です。
アンドレイバウアー

2
このコメントに関する新しいスレッドを開きました。しかし、あなたの定義に同意するかどうかわからない場合でも、ゲームのセマンティクスは本質的に表示的なものです。コメントで「ゲーム」を「運用上のセマンティクス」に置き換え、ゲームのセマンティクスを別の形式の表示的セマンティクスの研究として含める必要があると思います。cstheory.stackexchange.com/questions/3577/...
オハッドKammar

1
変化があるとは確信していません。Andrejのコメントに照らして、私の最初のコメントを見てください。
オハドKammar

1
シフトはありますか?興味深い質問です。シフトをどのように測定できますか?さまざまなアプローチに与えられる研究助成金の量などの比較的具体的なものから、マインドシェアのような曖昧なアイデアまで、適用できる基準は非常に多くあります。私たち、研究者、従業員、助成金の申請者がこのような質問の結果にどの程度関与しているかを考えると、答えに同意することはまずありません。
マーティンバーガー

20

以下は、無料のオンラインで入手できる資料のランダムサンプルです。

  • Winskel、プログラミング言語の形式意味論Googleブックスプレビュー。この本については何も知りません。リストに載っているのは、その質問が主にオンラインであるコンテンツについて具体的に尋ねているためです。
  • モルガン、仕様からプログラミングPSファイルのリスト。主題は洗練です。これは、高レベルの非実行可能な記述から始まり、体系的に実行可能なものにモーフィングするプロセスです。もちろん、すべての改良ステップはセマンティクスを保存する必要があるため、特定のタイプのセマンティクスについても説明します(主に述語treansformersに基づいて)。
  • ハーパー、プログラミング言語の実践的基礎ドラフトのPDF。以下のDave Clarkeのコメントを参照してください。
  • レミー、、使い方の理解、およびOCamlの言語の解明PDFを。これは私が関数型プログラミング(OCaml、より正確に)を学んだ本で、とても気に入っています。基本的な言語機能のセマンティクスを非常に優れた方法で提示し、その過程でラムダ計算と型理論を「知る必要性」に基づいて提示します。
  • Peyton Jones、関数型プログラミング言語の実装djvu。最初の章では、ラムダ計算(およびその「操作上のセマンティクス」)と、より高いレベルの言語機能がラムダ計算にどのように脱糖化されるかについて説明します。この意味で、このペーパーでは関数型言語の操作上のセマンティクスを示しています。
  • ピアス(編)、タイプとプログラミング言語の高度なトピックGoogleブックスプレビュー
  • Slonneger、構文やプログラミング言語のセマンティクスPDFファイルのリスト。私はずっと前にこれを簡単に見て、あまり好きではありませんでした。質問で言及されているため、リストに載っています。
  • ブルックス、同時分離ロジックAセマンティクスPDF。これは大きな本(80ページ)であり、本ではありません。私が興味を持っているのはかなり最近の開発だからです。

1
それはたくさんのリンクです:)
Suresh Venkat

3
リストとして提示されていた場合、これはより便利です。とにかく、Harperの本をお勧めします。「might」をクリックします。
デイブクラーク

同意する。ラドゥ、あなたは本をリストアップできますか?これは優れたリソースです。
スレシュヴェンカト

現在はリストです。(最初のバージョンは、前夜
ラドゥグリゴール

16

プログラミング言語のセマンティクスに関する書籍を、プログラミング言語の概念のモデリングに焦点を当てたクラスと、セマンティクスの基本的な側面に焦点を当てたクラスの2つに分けます。本で両方ができない理由はありません。しかし、通常、あなたが本に入れることができるのはそれだけであり、著者はまた、重要なものについての独自の素因を持っています。

すでに述べたWinskelの本は、両方の側面の少しを行います。そして、それは良い初心者向けの本です。同様に良い、おそらくもっと良い本は、私が始めた本です:ゴードンのプログラミング言語の表記法の説明。これは私のセマンティクスに関する最初の本で、学部課程を終えてすぐに読みました。セマンティクスの確固たる基礎を与えてくれたと言わざるを得ず、表示的セマンティクスが操作的セマンティクスや公理的セマンティクスなどとどのように異なるかを疑問に思う必要はありませんでした。

基本的な側面ではなくモデリングの側面に焦点を当てた他の書籍は次のとおりです。

  • Tennent's Semantics of programming Language。これは、命令型プログラミング言語のセマンティクスに関する多かれ少なかれ最新の本です。読みやすいです。ただし、本の後半では抽象的である傾向があり、特定の方法で物事が行われている理由を確認するために苦労する必要があります。

  • レイノルズのプログラミング言語理論。セマンティクスを専門とする人は、必ずこの本を読んでください。結局レイノルズによるものです。(David Schmidtはかつて「レイノルズがあなたに朝刊を読んでいるとしても、あなたは重要なことを学ぶかもしれないので、注意深く聞いてください」と言ったことがあります!)

基本的な側面に関する最高の本は、Gunter(私は大学院の教科書と見なします)とMitchell(これは非常に包括的なので本棚に置いておくと良い参考書です)です。


ここにいることはとてもうれしいです、Uday!
ラドゥグリゴール

私もここに来てうれしいです。これは非常に素晴らしいリソースです!
Uday Reddy

方法:遷移とツリー:HansHüttel2010の構造的操作セマンティクスの紹介。ここでは、誰もレビューを書いていないようです。
アルトゥーロヘルナンデス

1
@Uday:答えてくれてありがとう。「プログラミング言語の概念のモデリング」と「セマンティクスの基本的な側面」とはどういう意味ですか?彼らの違いと関係は何ですか?
ティム14

1
@Tim:プログラミング言語のセマンティクスを提供するには、数学的構造を形成する必要があります。たとえば、最も単純な場合の集合ですが、集合、処理できない問題のドメイン、カテゴリ、代数などの洗練された構造です。「基礎的側面」とは、これらのより洗練された構造の理論を意味します。前者の場合、プログラミング言語に焦点が当てられ、後者の場合、数学的基礎に焦点が当てられます。
Uday Reddy 14

8

セマンティクスの学部課程を受講していたとき、Winskelを読むのは本当に楽しかったです。しかし、私はこの分野での研究を行っていないため、日付が古いかどうかはわかりません。Winskelの利点は、英語以外の言語に翻訳されていることです。

さらに読むには、さらに大学院レベルで、John Mitchellの著書 Foundations for Programming Languages and Concepts in Programming Languagesをお勧めします。最初の章だけを読んだ場合、簡潔さの要件も満たしていると思います。

これらの本の無料の下書きは見つからないので、予算が制限されている場合は、Raduの回答の「可能性」に進みます。


6

まあ、私はこの問題の専門家ではありませんが、いくつかの一般的なアドバイスがあります。

まず、本をすでに読んでレビューを提供している人がいます。たとえば、Winskelの本The Formal Semantics of Programming Languages[1]および[2]を参照)について、Amazonでレビューを見つけました。

1つのレビューの一部は次のとおりです。

この本は、リテラルをその値から分離するように、最初から構文とセマンティクスを混同しています。それらを区別するために特別な表記法は使用されていません。これは、著者がこのようなトピックで取り組むべき重要な問題です。また、彼が使用したいくつかの他の表記法は、前提や結論を示すなど、非常に紛らわしいです。

著者は、最初のいくつかの章で背景資料(つまり、理論、操作意味論、帰納法、帰納的定義)を非常に簡単に説明したため、必要な前提条件をすべて満たしていると想定しているようです。著者が序論で使用したスタイルは、テキストの2つか3つの段落を入れ、いくつかの式を入れてから演習を行うことです。それは、私にとって非常にイライラすることです...

18/20人がこのレビューを参考にしています。Amazon(または他のソース)を検索して、さらにレビューを見ることができます。

第二に、Amazonは、この本とともに、コンピューター科学者向けのタイプとプログラミング言語、および基本カテゴリー理論を提供しています。上の別のトピックデイブ・クラークは、上の優れたものとして、これらの本を提供しています「タイプのシステムとプログラミング言語の意味論。」繰り返しますが、私は専門家ではありませんが、それらはあなたにとって役に立つかもしれません。


TaPLは私の好みには少し遅すぎます。それは良い本ですが、私がこれを言ったのは、尋ねる人が「長い曲がりくねった」本を心配しているようだからです。
ラドゥグリゴール

@Radu:確かにTAPLは遅いですが、かなり良い紹介です。リンクで言及したHarperの本は、まだ完成していませんが、より迅速に進み、より多くの分野をカバーしています。
デイブクラーク

4
AmazonのWinskelの本のレビューをひとつまみの塩で取りましょう。多くの場合、学部のセマンティクスコースで推奨されるテキストとして使用され、不満を抱いている学生を引き付ける可能性があります。私はこの本を読んで、序章が十分すぎるほど見つけました。全体を通して彼の表記法も完全に標準的であるように見えました。
ドミニクマリガン


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.