프로그래밍 언어 의미론에 관한 책


31

나는 Nielson & Nielson의 " Semantics with Applications "를 읽었으며 , 그 주제를 정말 좋아합니다. 프로그래밍 언어 의미에 대한 책을 하나 더 갖고 싶지만 실제로는 하나만 얻을 수 있습니다.

나는 한 번 봐했다 Turbak / 포드의 책을,하지만 너무 장황한이다; 나는 Winskel이 괜찮을 것이라고 생각했지만 그것에 접근 할 수 없었습니다 (대학 도서관에 없으며 돈이 부족합니다). Slonneger 는 괜찮은 것처럼 보이지만 실제적인 부분은 너무 길어서 그의 스타일에 익숙하지 않습니다.

그래서 제 질문은 -Winskel 이 좋은 책입니까? 그리고 그것은 데이트입니까?

또한 주제에 관한 다른 간결한 책이 있습니까?


5
모든 도서의 발행인 페이지에 대한 링크를 추가했습니다. 탐색하려는 다른 사용자에게 유용 할 수 있습니다.
— Suresh Venkat

2
어떤 의미에 관심이 있습니까? Denotational? 운영? 개요?
— Ohad Kammar

@Ohad Kammar : 저는 둘 다에 관심이 있습니다.
— Jay

답변:


31

그것은 모두 당신이 가고 싶은 깊이와 이미 알고있는 정도에 달려 있습니다. 초보자의 경우 Winksel의 책은 정말 훌륭하지만 20 년 전에 작성된 의미론의 최신 기술을 소개하지는 않습니다. 그럼에도 불구하고 여전히 주제에 대한 좋은 첫 번째 소개입니다. T. Nipkow가 Isabelle / HOL에서 상당량의 Winskel의 책을 공식화했음을 지적하는 것도 가치가있을 수 있습니다 ( 여기 참조) . 따라서 프로그래밍 언어의 의미를 이해하면서 대화 형 교정 지원을 사용하는 방법을 배우려면 일관성있는 자료가 많이 있어야합니다.

더 발전된 다른 책들 :

  • Gunter, 프로그래밍 언어의 의미론 (Semantics of Programming Languages ). 순전히 기능적인 언어에 중점을두고 동시성을 무시합니다. 이것은 제가 학부생으로서 의미론을 가르친 책이며, 회고에서는 Winksel의 책을 대신 사용했으면합니다. Gunter는 초보자에게는 쉬운 책이 아닙니다.

  • Amadio와 Curien의 도메인과 람다 계산법 . 또 다른 책은 과정 이론에 대해 논하고 있지만, 도메인 이론 전통에서 더 많이 쓰여졌다.

  • 위에서 언급 한 존 미첼의 책. 또한 대부분 순차적 계산에 관한 것입니다.

Pierce의 TAPL과 같은 책은 매우 훌륭하지만 프로그래밍 언어의 한 측면, 즉 유형만큼 중요합니다. 프로그래밍 언어의 일반적인 영역에 대한 첫 번째 소개로 권장하지는 않지만 유형에 대해 배우려는 사람은 반드시 읽어야합니다.

사실, 저는 현재 10 년 동안 상당한 진보를 반영하는 언어 의미론에 관한 최신 소개 책이 없다고 생각합니다. , axiomatics 의미론 및 검증에 대화 형 증거 지원 사용.

2014 년 4 월 22 일 : Tobias Nipkow와 Gerwin Klein이 새로운 책을 출판했습니다

'Isabelle / HOL의 Winskel'로 볼 수 있습니다. 이 책은 프로그래밍 언어 (주로 운영 및 공리)의 의미론을 소개하지만 이전의 펜 및 종이 기반 접근 방식과 달리이 책은 모든 수학을 Isabelle / HOL로 표현합니다. 다시 말해, 동시에 정리 증명에 관한 책입니다.

이 책은 아주 새롭기 때문에 가르치는 데 사용되지는 않았지만 Pierce et al.의 Software Foundations 보다 낮은 수준으로 소개되는 소개로 적합 합니다.


2
denotational 방법에서 멀리 이동이 있습니까? 이전에는 손으로 구부러지는 증거를 사용했던 사람들과 비슷하게 보이며 오늘날에는 공식적인 증거를 제시 할 것으로 예상됩니다. denotational 방법은 여전히 ​​우리가하는 모든 것을 쉽게 모델링 할 수없고, 더 많은 전제 조건이 필요하기 때문에, 연구자들은 게임, 프로세스 계산법, 교정 보조와 같은 접근하기 쉬운 방법을 사용합니다. 의학적 방법의 감소가 있는지 확실하지 않습니다.
— Ohad Kammar

4
변칙적 의미론을 도메인 이론 과 혼동하지 마십시오 . 게임 의미론은 완벽하게 부정적 일 수 있으며 일반적으로 프로그램의 의미는 그 부분의 의미의 함수입니다.
— Andrej Bauer

2
이 의견과 관련하여 새로운 스레드를 열었습니다. 그러나 당신의 정의에 동의하지 않더라도 게임 시맨틱은 본질적으로 변칙적입니다. 내 의견에 "게임"을 "작동 의미론"으로 바꾸고 다른 의미 론적 의미 론적 연구 형태로 게임 의미론을 포함시켜야한다고 생각합니다. cstheory.stackexchange.com/questions/3577/…
— Ohad Kammar

1
나는 변화가 있다고 확신하지 못한다. Andrej의 의견에 비추어 첫 번째 의견을보십시오.
— Ohad Kammar

1
교대가 있습니까? 흥미로운 질문입니다. 변화를 어떻게 측정 할 수 있습니까? 서로 다른 접근 방식에 부여 된 재조정 보조금의 양과 같은 상대적으로 구체적인 것부터 정신 분담과 같은 아이디어를 모호하게 할 수있는 많은 기준이 있습니다. 연구자, 직원, 보조금 신청자로서의 이러한 참여가 그러한 질문의 결과에 얼마나 관련되어 있는지를 고려할 때, 우리가 답변에 동의하지는 않을 것입니다.
— Martin Berger

20

다음은 온라인에서 무료로 제공되는 임의의 재료 샘플입니다.

  • Winskel, 프로그래밍 언어의 공식 의미 , Google 도서 미리보기 . 나는이 책에 대해 아무것도 모른다. 질문은 특히 온라인에있는 내용에 대해 질문하기 때문에 목록에 있습니다.
  • Morgan, 사양의 프로그래밍 , ps 파일 목록 . 주제는 구체화인데, 이는 높은 수준의 실행 불가능한 설명으로 시작하여 체계적으로 실행 가능한 것으로 변형하는 프로세스입니다. 물론 모든 세분화 단계는 의미를 보존해야하므로 특정 유형의 의미도 논의합니다 (주로 술어 treansformers를 기반으로 함).
  • Harper, 프로그래밍 언어의 실질적인 기초 , 초안 pdf . 아래의 Dave Clarke의 코멘트를 참조하십시오.
  • 레미, 사용하여, 이해하고, OCaml의 언어 해결했습니다 , PDF를 . 이 책은 함수형 프로그래밍 (OCaml,보다 정확하게)을 배운 책 으로 많이 좋아했습니다 . 기본 언어 기능의 의미론을 아주 좋은 방법으로 제시하고 그 과정에서 람다 미적분학과 유형 이론을 '필요한 것'으로 제시합니다.
  • Peyton Jones, 기능적 프로그래밍 언어의 구현 , djvu . 첫 번째 장에서는 람다 미적분학 (및``작동 의미론 '')과 고급 언어 기능이 람다 미적분학으로 탈당하는 방법에 대해 설명합니다. 이런 의미에서이 논문은 기능적 언어에 대한 작동 의미론을 제공합니다.
  • 피어스 (ed), 유형 및 프로그래밍 언어의 고급 주제 , Google 도서 미리보기 .
  • 프로그래밍 언어의 Slonneger, 구문 및 의미 , pdf 파일 목록 . 나는 오래 전에 이것을 간략하게 보았고별로 좋아하지 않았습니다. 질문에 언급되었으므로 목록에 있습니다.
  • Brookes, 동시 분리 논리의 의미론 , pdf . 이것은 책이 아니라 큰 기사 (80 페이지)입니다. 제가 최근에 개발 한 것이 흥미로워 서 포함 시켰습니다.

1
그것은 많은 링크입니다 :)
— Suresh Venkat

3
목록으로 제시된 경우 더 유용합니다. 어쨌든, Harper book을 추천합니다 : "might"를 클릭하십시오.
— Dave Clarke

동의한다. Radu, 책을 나열 해 주시면 클릭하는 내용을 알 수 있습니까? 이것은 훌륭한 자료가 될 것입니다.
— Suresh Venkat

지금은 목록입니다. (첫 번째 버전은 전날 밤 약 5 시간 자고 오전 2 시경에 게시되었습니다. : P)
— Radu GRIGore

16

프로그래밍 언어 의미론에 관한 책을 프로그래밍 언어 개념 모델링에 중점을 둔 책 과 의미론 의 기본 측면 에 중점을 둔 책으로 나눌 것 입니다. 책이 둘 다 할 수없는 이유는 없습니다. 그러나 일반적으로 책에 넣을 수있는 것은 너무 많으며 저자는 중요한 것에 대한 자신의 성향도 가지고 있습니다.

이미 언급 한 Winskel의 책은 두 가지 측면을 모두 수행합니다. 그리고 그것은 좋은 초보자 책입니다. 똑같이 좋고 아마도 더 좋은 책은 내가 시작한 책입니다 . 프로그래밍 언어에 대한 Gordon의 Denotational description . 이것은 시맨틱 스에 관한 첫 번째 책으로 학부 작업을 마친 직후에 읽었습니다. 나는 그것이 의미론에 확고한 근거를 주었다고 말하고, 의미 론적 의미론이 운영 의미론이나 공리적 의미론 등과 어떻게 다른지 궁금 할 필요가 없었다.

기초적인 측면보다는 모델링 측면 에 초점을 둔 다른 책 들은 다음과 같습니다.

  • 테넌트의 프로그래밍 언어 의 의미론은 명령형 프로그래밍 언어의 의미론에 대한 최신 책입니다. 읽기 쉽다. 그러나이 책의 뒷부분에서 추상적이되는 경향이 있으며, 왜 특정한 방식으로 일이 이루어지고 있는지 알아보기 위해 노력해야 할 수도 있습니다.

  • 레이놀즈의 프로그래밍 언어 이론 . 의미론을 전문으로하는 사람이라면 누구나이 책을 읽어야합니다. 결국 레이놀즈에 의해입니다. 데이비드 슈미트 (David Schmidt)는 "레이놀즈가 당신에게 모닝 신문을 읽는다고해도 중요한 것을 배울 수 있기 때문에주의 깊게 듣고 싶다"고 말했다.

기초적인 측면에서 가장 좋은 책은 Gunter (저는 대학원 교과서로 간주)와 Mitchell (책장에 가지고있는 훌륭한 참고서입니다).


Uday, 여기에 와서 정말 반갑습니다!
— Radu GRIGore 11

나도 여기있어 기쁘다. 이것은 매우 좋은 자료입니다!
— Uday Reddy

전환과 나무 : Hans Hüttel 2010의 구조적 동작 의미론 소개. 리뷰를 한 것으로 보이나 여기에 언급 된 사람은 없습니다.
— Arturo Hernandez

1
@Uday : 답변 주셔서 감사합니다. "프로그래밍 언어 개념 모델링"과 "의미론의 기본 측면"은 무엇을 의미합니까? 차이점과 관계는 무엇입니까?
— Tim

1
@Tim : 프로그래밍 언어의 의미를 부여하려면 가장 간단한 경우의 집합과 같은 수학적 구조를 형성해야하지만 집합이 처리 할 수없는 문제에 대해서는 도메인, 범주, 대수학 등과 같은 정교한 구조가 필요합니다. "파운데이션 측면"이라는 말은 이러한보다 정교한 구조의 이론을 의미합니다. 전자의 경우, 프로그래밍 언어에 중점을두고 후자의 경우 수학적 기초에 중점을 둡니다.
— Uday Reddy

8

나는 의미론에 대한 학부 과정을 밟을 때 Winskel을 읽는 것을 정말로 즐겼습니다. 그러나이 분야에서 연구를 수행하지 않기 때문에 날짜가 있는지 알 수 없습니다. Winskel의 장점은 영어 이외의 다른 언어로 번역 된 것을 찾을 수 있다는 것입니다.

더 읽기 위해, 더 대학원 수준에서, 나는 존 미첼의 좋을 것 책의 언어 프로그래밍에 대한 기초를 하고 프로그래밍 언어의 개념 . 첫 장만 읽으면 간결함의 요구 사항도 충족하는 것 같습니다.

이 책의 무료 초안을 찾을 수 없으므로 예산이 제한되어 있으면 Radu의 답변에서 "마지막"으로 이동하십시오.


6

글쎄, 나는 그 주제에 대한 전문가는 아니지만, 내가 할 수있는 몇 가지 일반적인 조언이 있습니다.

먼저, 이미이 책을 읽고 리뷰를 한 사람들이 있습니다. 예를 들어, Winskel 책 The Formal Semantics of Programming Languages ( [1] 및 [2] 참조 )에서 Amazon에 대한 리뷰를 찾았습니다.

한 리뷰의 일부는 다음과 같습니다.

이 책은 리터럴을 값에서 분리하는 것처럼 처음부터 구문과 의미를 혼동합니다. 그것들을 구별하기 위해 특별한 표기법이 사용되지 않았습니다. 이것은 저자가 이와 같은 주제에서 다루어야 할 중요한 문제입니다. 또한 그가 사용한 다른 표기법은 구내 및 결론을 보여주는 것과 같이 매우 혼란 스럽습니다.

저자는 처음 몇 장 (예 : 이론, 운영 의미론, 유도, 귀납적 정의)의 배경 자료를 설명 할 때 필요한 모든 전제 조건이 있다고 가정 한 것 같습니다. 저자가 소개에 사용한 스타일은 두세 단락의 텍스트를 넣고 몇 가지 수식을 넣은 다음 연습을하는 것입니다. 나에게는 꽤 실망 스럽습니다 ...

18/20 명이 리뷰가 유용하다고 생각합니다. 더 많은 리뷰를보기 위해 Amazon (또는 다른 출처)을 찾을 수 있습니다.

둘째, Amazon 은이 책과 함께 컴퓨터 과학자 를 위한 유형 및 프로그래밍 언어 및 기본 범주 이론을 제공합니다 . 에 다른 주제 데이브 클라크에 뛰어난 사람으로이 책을 제공합니다 "형식 시스템 및 언어 의미론 프로그래밍을." 다시 말하지만 저는 전문가는 아니지만 유용 할 것입니다.


TaPL은 내 취향에 비해 너무 느리게 진행됩니다. 좋은 책이지만이 질문에 대해 언급 한 사람은 "긴 바람이 부는"책이 걱정되는 것 같습니다.
— Radu GRIGore

@Radu : 확실히 TAPL은 느리지 만 좋은 소개입니다. 링크에서 언급 한 Harper 책은 아직 완성되지는 않았지만 훨씬 빠르게 진행되고 훨씬 더 많은 내용을 다룹니다.
— Dave Clarke

4
소금 한 덩어리로 아마존의 Winskel의 책을 검토하십시오. 학부 의미론 과정에서 권장 텍스트로 자주 사용되며 불만을 품은 학생들을 유치 할 수 있습니다. 나는 책을 읽었고 소개 장을 충분히 발견했다. 그의 표기법은 완전히 표준적인 것처럼 보였다.
— Dominic Mulligan


당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.