我已经编程了一段时间,但从未接受过正规的计算机科学教育。我想知道是否有一个资源超过了关键编程概念,如构造,多态等,这些资源适用于不同的语言。如果资源能给出例子,它也会非常有用。
答案 0 :(得分:4)
Concepts, Techniques, and Models of Computer Programming (by Peter Van Roy and Seif Haridi):标题说明了一切。 (来自同一作者,基于这本书来this cool poster with ~30 of the most important programming paradigms。)[注意:这本书通俗地称为CTM,你可能偶尔偶然发现这个缩写词。]
Structure and Intepretation of Computer Programs (by Harold Abelson and Gerald Jay Sussman)。众所周知,SICP可能是关于编程的 书。期。根据本书,不要忘记the 1986 video lectures by the authors themselves one的other或courses。
SICP和CTM之间的主要区别在于:CTM通过以非常强大的编程语言(Distributed Oz)提供示例来教授编程概念,而SICP通过在语言中实现编程概念来教授编程概念(Scheme,或者更确切地说是它的一小部分)它们还没有它们。 IOW:CTM会教OO通过在Scheme中实现OO系统来展示用OO语言编写的程序SICP。
Design Concepts in Programming Languages (by Franklyn A. Turbak and David K. Gifford with Mark A. Sheldon)更多是关于编程语言理论而不是编程。它仍然非常有趣,即使它没有直接解决你关于编程概念的问题。但毕竟:没有编程语言你会如何编程?
Concepts of Programming Languages (by Robert W. Sebesta)解释,编程语言的概念,从Konrad Zuse的Plankalkül开始,继续使用第一个真正的编程语言,如Fortran,Lisp,Cobol,Algol,BASIC等等。 C,C ++,Java和Ada。 [再次,更多的是编程语言书而不是编程。]
答案 1 :(得分:3)
Programming Language Pragmatics是一个非常容易访问但深入的编程语言概念概述。它在解释编程语言基础知识方面做得很好,而不是过度学术或理论上的。
答案 2 :(得分:3)
我非常喜欢John C. Mitchell阅读Concepts in Programming Languages。
这本书涵盖了一切。它包括数学基础的介绍,如可计算性理论和lambda演算,但我发现它很可读(当我读它时,这是在我的本科学习期间的早期)。它还包括一些关于编程语言语义的东西(即,如何正式描述其含义)。
然后它讨论了许多来自它们的编程语言和概念,包括LISP(这是Clojure的基础),ML(微软F#的基础)以及Simula和Smalltalk(两种基本的OO语言)和使用Java的C ++(实用的OO语言采用完全不同的方法)。关于不同的并发方法也有一些注意事项(现在非常重要!)
它没有详细介绍并涉及广泛的主题,如果您想阅读它以获得编程语言理论的广泛概述,我认为这是一个好处。这本书实际上激发了我目前对编程语言的兴趣: - )。
我注意到这本书在亚马逊上有一些负面评论,但似乎大多数人来自那些根据书籍不得不接受米切尔课程并且不喜欢该课程的人。