我希望理解类型背后的实际理论,而不仅仅是学习某种现有语言中最新的实践变化(例如,不仅仅了解Haskell或Scala的类型系统如何工作)。
哪种方法是掌握这方面背景知识的最佳途径?
我希望理解类型背后的实际理论,而不仅仅是学习某种现有语言中最新的实践变化(例如,不仅仅了解Haskell或Scala的类型系统如何工作)。
哪种方法是掌握这方面背景知识的最佳途径?
类型理论是一个很大的领域。首先,在计算机科学中,“类型”这个术语有一些误解,尽管它们通常用于相同的基本思想。类型在许多背景下出现过,包括哲学、计算机科学和数学等,大部分是由于相同的原因。类型在数学中的起源是为了形式化集合论并遇到琐碎的悖论,虽然计算机科学中也会出现类似的悖论(例如,我喜欢指出 Girard's 悖论)。
目前你可能对类型的解释是,在 70 年代至 90 年代期间,在计算机领域流行起来的一种想法:类型是一种轻量的流不敏感分析,允许我们对编写的程序做出简洁的逻辑保证。类型可以用于此,但实际上您可以将其推广到编码高阶逻辑,其中 程序 是 证明。一旦您进入这里,您就可以提取计算组件并将其转换为计算“正确”结果(关于您所证明的定理)的程序。
从这里可以走几条路:
您可能还想学习一些相关领域:
我还有一些很好的建议可以帮助您深入学习,但我肯定会从Ben Pierce的书开始(我从未真正了解过后续书籍“高级主题与类型和计算机科学”,但那也可能对您有趣)。特别是,我记得自动推理手册上有一篇关于高阶类型理论的好文章。
P.S.,我相信这个问题的具体答案是:“获得编程语言、哲学或逻辑的博士学位 ...”;-)