Quais são alguns livros realmente antigos (quase esquecidos) que todo novo programador deveria ler?

Programadores experientes e cientistas da computação, quais são alguns livros realmente antigos (ou quase esquecidos) que você acha que todo novo programador deveria ler?

Eu amo que “2006” e “2008” (em outra resposta) deve ser considerado “realmente velho”(que é o que a pergunta pede) …

Eu ainda sou um grande fã do “Lisp 1.5 Programmers Manual” (MIT Press – ainda na impressão). Esta versão da linguagem não está mais conosco, mas o livro – escrito em primeiro lugar ca 1962 – por John McCarthy, que inventou e seus colegas, que implementaram, é um clássico perfeito.

Começa com uma versão dos primeiros trabalhos de John sobre Lisp, e desenvolve as idéias em algumas páginas de exemplos para culminar na página 13 com Lisp eval e aplicar definido em si mesmo. Há muitos outros pensamentos que provocam idéias e exemplos em todo o restante do livro.

A maneira de crescer a partir deste livro é aprender profundamente o que eles fizeram e como o fizeram, e depois tentar reescrever a página 13 de várias maneiras. Quão bem isso pode ser escrito em um lisp usando recursão. Quão bem isso pode ser escrito sem recursão? (Em ambos os casos, olhe adiante no livro para ver que Lisp 1.5 tinha chegado à idéia de EXPRs e FEXPRs (funções que não avaliam seus argumentos antes da chamada – assim elas podem ser usadas para substituir todas as “formas especiais”). – faça um Lisp feito de FEXPRs e obtenha o resto por definição, etc.).

O que é um caminho de bootstrapping puro? Como você pode combinar isso com o analisador programático “Meta II” de Val Shorre para criar uma linguagem realmente extensível? O que é preciso para chegar a “objetos”? Quais são três ou quatro realmente interessantes (e maneiras diferentes) para pensar sobre objetos aqui? (Dicas: quantas maneiras diferentes você pode definir “closures” em uma linguagem que executa? E sobre o uso de átomos Lisp como um modelo para objetos? Etc.)

A ideia é que o Lisp não é apenas uma linguagem, mas um “material de construção” realmente profundo que é arrumado o suficiente para “pensar com” não apenas fazer coisas (é um “material de construção” para pensamentos e processos de computador).

Dani Richard me lembrou de mencionar: “Computação: Máquinas Finitas e Infinitas”, de Marvin Minsky (Prentice-Hall, 1967), que – já que é um dos meus livros favoritos de todos os tempos – estou surpreso por não ter incluído a lista original. Marvin poderia realmente escrever, e neste livro ele está no seu melhor. Na verdade, é um “livro de matemática” – com muitas idéias, teoremas, provas, etc. -, mas apresentado da maneira mais amigável que uma grande mente considerava que todos – inclusive crianças – eram iguais a ele e como colegas apreciadores de matemática. Ótimas ideias. Há muitas coisas interessantes para refletir neste livro, mas talvez seja a abordagem que convida o leitor a começar a pensar “assim” que é o mais recompensador.

“Avanços em programação e computação não-numérica” (Ed. L. Fox) em meados dos anos 60. Os trabalhos apresentados em um workshop de verão de 1963 no Reino Unido. Os mais provocantes foram de Christopher Strachey e vários de Peter Landin. Este foi um dos livros que Bob Barton nos leu em sua famosa classe de design de sistemas avançados em 1967.

Experimente “The Mythical Man-Month”, de Fred Brooks, para uma visão e experiência antecipadas com verdades atemporais (e pegadinhas) de sistemas construídos com equipes…

Tente “As Ciências do Artificial” por Herb Simon. Uma forma muito mais forte de pensar sobre computação – e o que a “Ciência da Computação” pode significar – por um pensador muito mais forte do que a maioria de hoje.

“A Programming Language”, de Ken Iverson (ca 1962). Isso tem o mesmo pensamento expandindo as propriedades do Lisp. E, como Lisp, a maneira de aprender com essas idéias realmente antigas é concentrar-se no que é único e poderoso na abordagem (sabemos como melhorar melhor o Lisp e o APL hoje em dia, mas a essência profunda talvez seja mais fácil de compreender). manifestações originais das idéias). Outro livro que Barton nos leu.

Eu gosto da Tese de 1970 da CMU de Dave Fisher – “Estruturas de Controle para Linguagens de Programação” – mais especialmente as primeiras 100 páginas. Ainda uma verdadeira jóia para ajudar a pensar em design e implementações.

Mais recente: (80s) “The Meta-Object Protocol”, de Kiczales, et al. A primeira seção e exemplo é uma obrigação para ler e entender.

A tese de doutorado de Joe Armstrong – depois de muitos anos de valiosa experiência com Erlang – foi publicada como um livro ca 2003…

Muito mais por aí para mentes curiosas …

Continue lendo: https://www.quora.com/Experienced-programmers-and-computer-scientists-what-are-some-really-old-or-even-nearly-forgotten-books-you-think-every-new-programmer-should-read/answer/Alan-Kay-11