如上,希望了解一些 PL 常识,不至于啥都不知道。
但似乎比较小众,教材有点大,只想先被科普 - = -
1
vincenteof 2019-01-30 13:45:22 +08:00
pl 是很大的东西啊,感觉大多数人说对 pl 感兴趣也不是对各种所谓的 xx 逻辑感兴趣,像 sf 和各种将 type system 的书并不是很适合程序员读(我就读不下去= =)。还不如玩玩 haskell,lisp 那些东西,写写解释器啥的,可以从 yinwang 的博客开始嘛。
|
2
vincenteof 2019-01-30 13:49:45 +08:00
continuation,monad 那些东西还是蛮有意思的,虽然对找工作没什么卵用就是了。。。
|
3
EulerChen 2019-01-30 14:46:13 +08:00
请问 PL 是什么东西?函数式编程?
|
4
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 |
5
ChristopherWu OP @EulerChen programing language 吧 - = -
|
6
ChristopherWu OP @vincenteof yinwang 的博客没啥干货啊 - = -
|
7
redme 2019-01-30 15:15:39 +08:00
pl 是啥
|
8
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 的,我连门都没入) |
9
shikimoon 2019-01-30 15:35:09 +08:00
@pragmatwice 活捉 2ce
|
10
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 覆盖更为全面。看过其他教材以后不妨挑战一下这本。 |
11
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 |
12
0attocs 2019-01-30 17:21:27 +08:00 via iPhone
sf 比较偏实践,很实用但初学应该搞不明白的……
只是个人兴趣的话可以看 the little typer? |
13
pragmatwice 2019-01-30 20:18:25 +08:00 via Android
|
14
vincenteof 2019-01-30 21:17:38 +08:00 via Android
@ChristopherWu yinwang 那篇解释器教程写得蛮好的,比 sicp 和小人书上的都要简单些。
|