请问一下,可以推荐一下基本 PL 知识的科普书籍 or 文章吗?

2019-01-30 11:33:36 +08:00
 ChristopherWu

如上,希望了解一些 PL 常识,不至于啥都不知道。

但似乎比较小众,教材有点大,只想先被科普 - = -

目前在看 https://coq-zh.github.io/SF-zh/lf-current/Basics.html

14163 次点击
所在节点    程序员
14 条回复
vincenteof
2019-01-30 13:45:22 +08:00
pl 是很大的东西啊,感觉大多数人说对 pl 感兴趣也不是对各种所谓的 xx 逻辑感兴趣,像 sf 和各种将 type system 的书并不是很适合程序员读(我就读不下去= =)。还不如玩玩 haskell,lisp 那些东西,写写解释器啥的,可以从 yinwang 的博客开始嘛。
vincenteof
2019-01-30 13:49:45 +08:00
continuation,monad 那些东西还是蛮有意思的,虽然对找工作没什么卵用就是了。。。
EulerChen
2019-01-30 14:46:13 +08:00
请问 PL 是什么东西?函数式编程?
pragmatwice
2019-01-30 14:48:17 +08:00
1. 和你目前看的 SF 同一个作者写的 TaPL (Types and Programming Language),之后还有一本 ATTaPL
2. 上面两本书作者整理的 Great Works in Programming Languages (一堆论文)
3. 不喜欢 Coq ( SF 标配)可以 Haskell -> Agda / Idris,可一看下 Wow-FV-zh / dt-programming-in-agda

* 不给链接的原因是你可以直接 Google 上面的关键词得到链接
* 我也才开始学 QAQ
ChristopherWu
2019-01-30 14:51:02 +08:00
@EulerChen programing language 吧 - = -
ChristopherWu
2019-01-30 14:51:26 +08:00
@vincenteof yinwang 的博客没啥干货啊 - = -
redme
2019-01-30 15:15:39 +08:00
pl 是啥
lrxiao
2019-01-30 15:30:46 +08:00
type system 入门: TAPL 证明入门: Software Foundation
此外还有 PFPL ATTAPL Oregon summer school LambdaConf 美国大学的 Programming Language 课程,比如 UChicago CMCS 312, UMich EECS490

中文材料的话 TAPL 有中文版,此外有中文版的还有 Concepts in Programming Language 和 Programming Language Pragmatic

(上面都是我 xbb 的,我连门都没入)
shikimoon
2019-01-30 15:35:09 +08:00
@pragmatwice 活捉 2ce
TerrorJack
2019-01-30 16:37:40 +08:00
想得起来的几本书瞎扯一下:

## 侧重代码实现
Types and Programming Languages:从最简单的无类型 lambda calculus 讲到 System F,有 OCaml 代码示例和习题,难度适中。
Software Foundations:全程使用 Coq 代码进行讲解。习惯边看书边敲代码来实现的话推荐这本。
Essentials of Programming Languages:全程使用 Scheme 代码讲解,看完以后会写很多有趣的解释器。这本书是 Daniel Friedman 作品,他还有 The Little XX 系列,问答式的文风简直是写给小朋友看的,可能会有人喜欢。。

## 侧重数学理论
Type Theory and Formal Proof:讲的形式系统比 TAPL 更多(包含 dependent types ),侧重点不在于代码实现和为编程服务,而在于将 Type Theory 作为数学形式化的 building blocks。这书有中译本,不过建议看原文。。
Practical Foundations for Programming Languages:Robert Harper 的作品,比 TAPL 硬核许多,介绍的语言特性和形式系统比 TAPL 覆盖更为全面。看过其他教材以后不妨挑战一下这本。
kefengong
2019-01-30 16:51:43 +08:00
不介意视频课程的话,coursera 有门讲 PL 的课

> This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “ fits together ” to make you more effective programming in any language -- and in learning new ones.

> This course is neither particularly theoretical nor just about programming specifics -- it will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you will learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming. Get ready to learn a fresh and beautiful way to look at software and how to have fun building it.


https://www.coursera.org/learn/programming-languages
0attocs
2019-01-30 17:21:27 +08:00
sf 比较偏实践,很实用但初学应该搞不明白的……
只是个人兴趣的话可以看 the little typer?
pragmatwice
2019-01-30 20:18:25 +08:00
@shikimoon QAQ 我竟然认不出你是哪个聚聚

另外 PL 的各种资料可以参考 https://steshaw.org/plt/
vincenteof
2019-01-30 21:17:38 +08:00
@ChristopherWu yinwang 那篇解释器教程写得蛮好的,比 sicp 和小人书上的都要简单些。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/531815

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX