Il libro "Struttura e interpretazione dei programmi per computer" è una buona lettura per i programmatori Java? [chiuso]


14

Questo può essere soggettivo e probabilmente essere chiuso, ma volevo ancora sapere se è davvero utile leggere la struttura e l'interpretazione dei programmi per computer.

Struttura e interpretazione dei programmi per computer

Il libro non usa Java. Non che volessi imparare Java. Sono solo curioso di sapere se sarà utile leggere per essere un programmatore migliore e quali sono le cose che posso guadagnare dal libro o quali altre alternative a questo libro sono più adatte ai programmatori Java?


32
Per cominciare, cerca di non posizionarti come un "programmatore Java". O come "programmatore di qualunque lingua". È un vicolo cieco. Sii solo un programmatore invece. E poi, SICP sarà estremamente utile. Probabilmente, la lettura più utile là fuori.
SK-logic,

3
È molto difficile, ecco perché lo leggi.
Jonathan Henson,

4
Inizia dal primo capitolo, vai pagina per pagina, lavora tutti gli esempi, non progredisci fino a quando non capisci ogni pagina e ogni esempio. La chiave di risposta è online.
Jonathan Henson,

2
@JonathanHenson e quando arrivi alla fine, fermati
jk.

3
Sì, devi imparare Scheme. Tuttavia, uno dei motivi per cui il libro utilizza Scheme è che puoi imparare l'intero Schema in circa un giorno se non hai mai programmato prima o circa 10 minuti se lo hai. Dopotutto, SICP è un libro per principianti assoluti, non presuppone assolutamente alcuna conoscenza di programmazione.
Jörg W Mittag,

Risposte:


23

Bene, non so se questo libro ti aiuterà, ma quando ho lavorato su quel libro circa 20 anni fa, ha sicuramente migliorato le mie capacità di programmazione (indipendentemente da qualsiasi linguaggio di programmazione). E immagino che soprattutto un programmatore Java otterrà alcune nuove intuizioni che non otterrà attenendosi solo a Java.

Joel Spolsky 2005 ha scritto un bell'articolo su Java e SICP che potrebbe interessarti:

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html


+1 La migliore risposta possibile a ciò che quasi equivale a una domanda di raccomandazione del libro.
Joshua Drake,

13

Penso che la struttura e l'interpretazione dei programmi per computer sia un ottimo libro da leggere. Tuttavia, ci sono un paio di problemi con esso.

Il problema più grande della mia esperienza è che, mentre il libro non richiede assolutamente alcuna conoscenza di programmazione ed è orientato a completare i neofiti, è orientato a completare i neofiti che studiano al MIT . E così, mentre non si assume alcuna conoscenza di programmazione, si fa assumere un po 'di dominio della conoscenza, per esempio nei settori dell'ingegneria elettrica, la fisica e la matematica. Nota: questi non hanno nulla a che fare con i concetti insegnati, sono solo necessari per comprendere gli esercizi e gli esempi .

Le persone più grandi di me l'hanno spiegato molto meglio, in un documento abilmente intitolato La struttura e l'interpretazione del curriculum di informatica . Per fortuna, non sono solo piagnistei, ma hanno scritto il loro libro: How to Design Programs . Se pensate di leggere SICP, potreste voler prima leggere HtDP: copre più o meno lo stesso terreno della SICP, ma presuppone solo una conoscenza del dominio medio di livello delle scuole superiori. (In realtà, è scritto per essere insegnato ai bambini delle scuole superiori.)

Dopo aver terminato HtDP, puoi ancora tornare indietro e leggere SICP, dal momento che un po 'di conoscenza del dominio mancante non sarà più dannosa perché hai già visto il concetto prima.

Nota: esiste una bozza per una seconda edizione di HtDP , che potresti voler leggere al posto della prima edizione. Il materiale sulla programmazione imperativa è stato rimosso e verrà trattato nel secondo volume non ancora scritto di How to Design Components , ma puoi prenderli dalla prima edizione o da SICP o entrambi.


Potrei suggerire un'alternativa alla SICP: concetti, tecniche e modelli di programmazione per computer
Eden,

@Eden: il marchio comunitario è molto buono, sono d'accordo. Tuttavia, non lo considero un libro per insegnare la programmazione, come SICP, HtDP e Concrete Abstractions. Ma appartiene sicuramente alla lista dei "libri che ti rendono un programmatore migliore"!
Jörg W Mittag,

5

Dal mio punto di vista SICP , è più focalizzato nelle aree della programmazione funzionale, compresa la programmazione ricorsiva, e una forte introduzione al CS - che è un po 'difficile da comprendere per un nuovo programmatore. Un altro punto, è preparato e istruito per il MIT, e alcuni fondamentali fondamentali in campo ingegneristico, matematica, fisica sono anche necessari per trovare utile questo libro.

Consiglierei una buona serie di libri in cui ognuno si concentra su diversi aspetti dell'ingegneria del software:

  • Codice completo 2 : incentrato sui processi di ingegneria del software.
  • Clean Code - si concentra sulla codifica in piccolo. Come scrivere classi e funzioni.
  • Programmatore pragmatico - si concentra sul lavoro all'interno di un team che produce software.

Una descrizione più dettagliata dei libri citati sopra e altri può essere trovata dai seguenti riferimenti:

  1. Come essere un programmatore con 10 libri semplici
  2. I migliori libri per programmatori principianti

Per favore, sentiti libero di aggiungere alla lista perché non è l'ideale :)

Modifica: nella scelta dei libri sopra menzionati e nella determinazione della priorità su come leggerli, si tratta in realtà dello scopo di ciò che stai cercando di fare o imparare.


7
Sono d'accordo con i suggerimenti nel contesto (implicito) - ma la tua risposta sarebbe ancora migliore se in realtà menzionasse ciò che non ti piace (o che ti piace) di SICP.
Joris Timmermans,

4
Confronto di mele e arance: tutti i libri che menzioni sono libri eccellenti sull'ingegneria del software. SICP è più incentrato sull'informatica - ciò che la programmazione informatica è concettualmente.
Nate,

1
Questa risposta sembra troppo una risposta a una domanda consigliata per l'elenco di letture. Che non credo si adatti bene allo scopo dei siti di Stack Stack: meta.stackexchange.com/questions/113678/…
Joshua Drake,

@Nate, non si tratta di mele e arance da confrontare, si tratta solo di CS. Anche se, ciascuno dei libri condivide alcuni argomenti comuni.
Yusubov,

2
@MadKeithV, sono d'accordo con i tuoi commenti. Ho messo i miei pensieri su SICP in prima linea.
Yusubov,

4

Ho intenzione di uscire su un arto qui e dire - probabilmente non è una buona lettura per la maggior parte delle persone - qualunque sia la lingua.

Come Knuth è un buon libro da leggere. Tuttavia, anche supponendo che tu sia un ugar del MIT hot-shot, ci vorrà ancora la parte migliore di un anno per leggere correttamente, e questo è con i docenti e le TA che aiutano.

Ci sono altri libri sull'ingegneria del software che potresti leggere in quel momento che sarebbero di maggior valore? Ci sono altre lingue che potresti imparare nel tempo?

modifica Solo per espandere un po ':
l'ingegneria del software è ingegneria, si tratta solo di ottimizzazione. Il tuo compito è massimizzare le tue conoscenze per un dato tempo + budget di costo.
SICP è un'introduzione di alto livello alla programmazione attraverso un linguaggio funzionale. La ragione per cui usa un linguaggio funzionale è che è più facile descrivere molti concetti matematici della programmazione in linguaggi funzionali che in quelli procedurali e molto più facile da leggere rispetto alla logica formale.

C'è anche una certa quantità di postura cioè. "Non sei davvero un programmatore se non leggi SICP", o Knuth, o puoi programmare in Lisp, o C o assemblatore x86. Normalmente è facile confutare; vale a dire. non puoi essere un vero programmatore se non conosci il lavoro di Cantor sulla teoria degli insiemi e le equazioni di Maxwell e non hai familiarità con la mobilità dei fori nei semiconduttori.


C'erano altri libri nella mia lista dei desideri come Code Complete 2, Clean code, programmatori Pragamatic, Refactoring ecc. Ma questi erano più su Java o almeno su OOP a differenza di SICP.
ashishjmeshram,

5
Ecco perché li avrei letti per primi
Martin Beckett il

7
Ho discusso del downvoting di questa risposta, ma ho deciso che solo un commento era migliore: sono d'accordo sul fatto che SICP non è una buona lettura per la maggior parte delle persone, soprattutto all'inizio, ma credo che un grande sviluppatore dovrebbe essere in grado di gestire questo libro e imparerà molto da esso. I grandi sviluppatori non sono "la maggior parte delle persone". È un buon libro filtro.
Joris Timmermans,

4
Non sono d'accordo (fino a un certo punto) - uno sviluppatore a tutto tondo che ha SICP al suo attivo può sempre conoscere l'ambiente Unix ecc. Preferirei assumere uno sviluppatore senza esperienza sulla piattaforma ma SICP e riqualificarlo, piuttosto che qualcuno che non lo fa ottenere SICP.
Joris Timmermans,

1
@MadKeithV - Sì e per lo stesso motivo assumo dottori di matematica / fisica senza esperienza di programmazione. Ma se stai lavorando a tempo pieno come programmatore, e soprattutto come principiante, ci sono libri più semplici che sono forse migliori (valore / tempo) di Knuth o SICP o che leggono gli articoli di Turing.
Martin Beckett,

1

Stai pensando di diventare un "programmatore JAVA" per il resto della tua vita? Quindi probabilmente ci sono libri migliori da leggere. Se vuoi essere un buon programmatore in generale, allora è una lettura eccellente. Ecco perché. Ci sono alcuni strumenti di cui ogni buon programmatore ha bisogno nella sua cassetta degli attrezzi. Uno è una conoscenza approfondita delle strutture di dati e degli algoritmi (se non mi credi, fai un'intervista a Microsoft, Google, Amazon ecc ...), gli algoritmi di accompagnamento sono l'analisi della complessità, la ricorsione e una solida comprensione dei puntatori non male. Quando si tratta di analisi di algoritmi, processi ricorsivi e paradigma funzionale in generale, non riesco a pensare a un libro migliore o più impegnativo di SICP.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.