V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChristopherWu
V2EX  ›  程序员

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

  •  
  •   ChristopherWu · 2019-01-30 11:33:36 +08:00 · 14105 次点击
    这是一个创建于 2117 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    另外 PL 的各种资料可以参考 https://steshaw.org/plt/
    vincenteof
        14
    vincenteof  
       2019-01-30 21:17:38 +08:00 via Android
    @ChristopherWu yinwang 那篇解释器教程写得蛮好的,比 sicp 和小人书上的都要简单些。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2898 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:49 · PVG 21:49 · LAX 05:49 · JFK 08:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.