я программировал некоторое время, но никогда не имел формального образования информатики. я хотел бы знать, существует ли ресурс, который пробегается через ключевые понятия программирования как конструкция, полиморфизм и т.д., который был бы применим к различным языкам. также было бы очень полезно, если ресурс даст примеры.
Концепции, методы и модели компьютерного программирования (Питер Ван Рой и Сейф Хариди) : название говорит само за себя. (От того же автора и на основе книги этот классный плакат с ~ 30 наиболее важными парадигмами программирования .) [Примечание: эта книга в просторечии известна как CTM, время от времени вы можете натолкнуться на эту аббревиатуру ко времени.]
Структура и интерпретация компьютерных программ (Гарольд Абельсон и Джеральд Джей Сассман) . SICP, как его называют в просторечии, вероятно, книга о программировании. Период. Не забудьте видеолекцию самих авторов 1986 года или одну из других курсов , основанных на книге.
Основное различие между SICP и CTM заключается в подходе: CTM обучает концепциям программирования, приводя примеры на очень мощном языке программирования (Distributed Oz), который их уже реализует, в то время как SICP обучает концепциям программирования, реализуя их на языке (Scheme, или, скорее, небольшая его часть), в которой их еще нет. IOW: CTM научит объектно-ориентированный объект показывать программы, написанные на языке объектно-ориентированного программирования, SICP, путем реализации системы объектно-ориентированного программирования на схеме.
Концепции дизайна на языках программирования (Франклин А. Турбак и Дэвид К. Гиффорд с Марком А. Шелдоном) больше о теории языков программирования, чем о программировании.Это по-прежнему довольно интересно, хотя напрямую не касается вашего вопроса о концепциях программирования. Но в конце концов: как бы вы программировали без языка программирования?
Concepts of Programming Languages (Роберт В. Себеста) объясняет, ну, ну, в общем, Concepts of Programming Languages, начиная с Plankalkül Конрада Цузе, продолжая с первого настоящих языков программирования, таких как Fortran, Lisp, Cobol, Algol, BASIC, а также C, C ++, Java и Ada. [Опять же, это скорее книга по языку программирования, чем по программированию.]
Прагматика языка программирования - довольно доступный, но подробный обзор концепций языков программирования. Он хорошо объясняет основы языка программирования, не будучи излишне академическим или теоретическим.
Мне очень понравилось читать Концепции языков программирования Джона К. Митчелла.
Книга охватывает понемногу всего. Она включает в себя введение в математические основы, такие как теория вычислимости и лямбда-исчисление, но я нашел ее вполне читабельной (в то время, когда я ее читал, а это было в начале моего обучения в бакалавриате). Она также включает крошечный кусочек о семантике языков программирования (то есть о том, как формально описать смысл).
Затем он рассказывает о многих языках программирования и концепциях, которые пришли из них и представляют интерес, включая LISP (который является основой для Clojure), ML (основа для F# от Microsoft), а также Simula и Smalltalk (два фундаментальных языка ОО) и C++ с Java (практические языки ОО с совершенно разными подходами). В книге также есть несколько заметок о различных подходах к параллелизму (довольно важному в наше время!)
Она не вдается в подробности и охватывает широкий круг тем, что я считаю преимуществом, если вы хотите прочитать ее, чтобы получить широкий обзор теории языков программирования. Эта книга фактически мотивировала мой нынешний интерес к языкам программирования :-).
Я заметил, что на Amazon у книги есть несколько негативных отзывов, но, похоже, большинство из них от людей, которым пришлось пройти курс Митчелла, основанный на этой книге, и курс им не понравился.