The thing I find in programming is so many things are black boxes.
Ecco alcune risorse che apriranno quelle scatole nere:
Secondo una recensione di Amazon:
...The real value of Code is in its explanation of technologies that
have been obscured for years behind fancy user interfaces and
programming environments, which, in the name of rapid application
development, insulate the programmer from the machine...
Questo corso di Coursera esamina i principali livelli di astrazione computazionale sotto i moderni linguaggi di alto livello. In base alla descrizione del corso:
...We will develop students’ sense of “what really happens” when
software runs — and that this question can be answered at several
levels of abstraction, including the hardware architecture level, the
assembly level, the C programming level and the Java programming
level...
E infine il mio preferito:
@LieRyan ha fornito un'eccellente spiegazione dall'atomo fino al linguaggio assembly.
MODIFICA 1:
What's the best way to inject science into everyday programming?
Ci sono così tanti argomenti sul fatto che uno scienziato informatico è davvero uno scienziato e se un ingegnere del software è davvero un ingegnere.
Ad ogni modo, le seguenti risorse ti aiuteranno a iniettare la scienza nella programmazione quotidiana:
I libri di Knuth sono considerati la Bibbia per gli algoritmi. Lo studio delle strutture dati e degli algoritmi è il più vicino al metodo scientifico nel campo dell'Informatica che potrei pensare.
This course covers the essential information that every serious
programmer needs to know about algorithms and data structures, with
emphasis on applications and scientific performance analysis of Java
implementations.