Perché le persone usano i libri di programmazione? [chiuso]


94

Trovo che quando qualcuno chiede qual è il modo migliore per imparare a programmare, le persone di solito forniscono loro riferimenti a un sacco di testi scritti da vari autori.

Tuttavia, non credo che molte persone imparino a programmare dai libri. Trovo che di solito affrontano una sfida e quindi usano la programmazione come strumento per superarla.

Ad esempio, ho iniziato a programmare perché volevo avviare un server per un gioco a cui stavo giocando, quindi ho cercato su Google e ho letto il supporto per quel particolare server e ora sono un ingegnere del software impiegato, usando solo le competenze che ho sviluppato ( e poi ulteriormente sviluppato) codificando gli script C # per un pacchetto server non molto popolare.

Quindi la mia domanda è: le persone in genere trovano più facile imparare da questi libri? So di averne guardato alcuni e di averli trovati troppo "asciutti" per incoraggiarmi a finirlo.


3
i libri non sono primari qui, ma un grande vantaggio se leggi libri sono solo altri libri che ti interessano.
cnd

42
Stai parlando di imparare a programmare dall'inizio o di cose più avanzate? C'è una grande differenza tra 'Impara il C ++ in 24 ore' e un libro decente su argomenti teorici più avanzati: non troverai il lavoro di Knuth online.
André Paramés,

78
Sembra che non ti sia mai imbattuto in un buon libro di programmazione.
Jaywalker,

46
Questo è metaforico alla domanda "perché andare a scuola?"
Jodrell,

8
Non ho mai trovato i libri come uno strumento di apprendimento primario, ma ne ho tantissimi e li consiglio sempre. È ovvio che impari solo facendo. Tuttavia, i libri sono la fonte di idee e possono essere usati come riferimento prontamente disponibile. Non leggiamo / raccomandiamo i libri da cui imparare. Leggiamo / raccomandiamo i libri per condividere le idee in essi contenute.
Joel Etherton,

Risposte:


229

Ecco come imparo, in generale:

  • Compra un libro
  • Non leggerlo dall'inizio alla fine, ma sai dove si trova tutto
  • Trova un progetto per animali domestici su cui lavorare
  • Impara dall'esperienza, ma usa il libro come riferimento
  • Dove il libro fallisce, c'è sempre google

Nota: il terzo punto a volte viene per primo.

Modifica : per rispondere alla domanda "Perché?"

Google è fantastico per scoprire come fare qualcosa, ma non è eccezionale per scoprire ciò che non sai. Perché mai dovresti google "delegati C #" se non sapessi che C # ha un concetto chiamato delegati e che potrebbe essere utile per risolvere un problema su cui stai lavorando?

Inoltre, il rapporto segnale-rumore a volte può essere un po 'alto. Se hai un'idea approssimativa di come si fa qualcosa, puoi facilmente confermare se l'articolo che stai leggendo è corretto. Ma se non hai idea ... puoi finire in un pasticcio più grande.


19
Ottima risposta, in particolare la modifica in risposta al "perché". Di recente ho iniziato a studiare ASP.NET e l'ho fatto utilizzando Google. Ho usato C # per .NET 2.0 per anni, quindi ho pensato di riuscire a cavarmela. Ogni volta che ho riscontrato un problema sono riuscito a trovare la risposta cercando su Google, ma è diventato presto evidente che stavo solo colpendo la punta dell'iceberg di ciò che potevo fare e mi mancavano completamente grossi pezzi delle biblioteche. Un libro offre una visione molto migliore della tecnologia e di tutto ciò che può fare. Evita i libri "impara x in 24 ore" e scegli invece libri "avanzati x".
Gavin Coates,

44
+1 per "scoprire ciò che non sai".
Covar,

2
Estensione al 5 ° punto: quando il libro fallisce, ci sono sempre google e altri libri sull'argomento, inclusi quelli destinati ai non principianti nell'argomento .
Richard,

5
+1 per "il rapporto segnale-rumore a volte può essere un po 'alto a volte. Se hai un'idea approssimativa nella tua testa su come viene fatto qualcosa, puoi facilmente confermare se l'articolo che stai leggendo è corretto. Ma se hai nessun indizio ... puoi finire in un pasticcio più grande. "
Tom Squires,

9
"Dove il libro fallisce, c'è sempre google." Intendi Stack Overflow;)
Joren,

42

Alcuni motivi per cui i libri sono ancora rilevanti:

  1. Trovo più facile leggere molto testo su carta che su uno schermo LCD standard, forse gli e-book su un display e-ink cambieranno questo.
  2. Il libro tende a descrivere il quadro generale e alcune buone pratiche, il che è davvero buono quando hai bisogno di un avvio rapido o di una nuova visione.
  3. Google è davvero utile quando hai bisogno di esempi su argomenti specifici, ma non per il quadro generale.

Ma un libro non ti porterà mai completamente, ti spingerà nella giusta direzione.


2
+1 per il quadro generale. Dopo aver programmato in un nuovo linguaggio / ambiente per un po ', trovo che i libri siano davvero utili per riempire il quadro generale e le cose che mi sono perso dalla mia esplorazione.
Adam Morris,

2
Il blog di Raymond Chen, o la serie Going Deep su Channel 9, è straordinariamente utile per imparare il perché . Una volta che conosci il " perché " qualcosa è come è, come farlo diventa un dettaglio banale che può essere cercato su Google. Di solito l'autore di un libro può andare in secondo piano per comprendere la logica di ciò che sta accadendo, piuttosto che cercare di confondere stringhe di frammenti di codice che hai trovato online.
Ian Boyd,

IMO, uno dei grandi vantaggi che i libri hanno è la capacità di attaccare le dita in più punti contemporaneamente in modo da poter passare rapidamente tra le sezioni. Lo trovo inestimabile quando sto cercando di imparare qualcosa di nuovo esaminando un po 'di codice, dato che spesso ho cercato qualcos'altro (a volte diverse cose) per capire cosa ho cercato in primo luogo. La navigazione su uno schermo non è la stessa.
TMN,

Concordato. Saltando a destra in Asp.Net MVC, ad esempio, potresti capire come farlo. Ma ci sono così tante cose che probabilmente ti sbaglierai anche che sono sottili. Quindi rimani a grattarti la testa perché qualcosa non funziona.
Andy,

28

Quando ho imparato a programmare nei libri degli anni '80, dove più o meno l'unica fonte di informazioni disponibile per imparare completamente un linguaggio di programmazione nel suo insieme. Inoltre, è possibile acquistare riviste di computer, ma il loro contenuto era costituito da articoli casuali che potrebbero essere stati interessanti e utili o meno.

Oggi puoi trovare tutte le informazioni di cui hai bisogno su Internet. Considererei un tutorial completo abbastanza simile a un libro.

Il modo in cui apprendi può dipendere dalle tue preferenze personali o da esigenze reali.

Il vantaggio di un "testo completo", se libro o tutorial online, sarà che copre materiale che, sebbene non effettivamente necessario, ti aiuterà in seguito. È solo sapere che qualcosa è possibile e sapere dove trovarlo. Soprattutto se si conosce un ambiente complesso o un linguaggio molto complesso come il C ++. Puoi leggere molti piccoli blog su Ruby on Rails senza aver mai sentito parlare di Ajax o questioni di sicurezza. Finché giochi solo, questo potrebbe non essere un problema. Ma se, come è successo a me, vuoi entrare nello sviluppo professionale di Ruby on Rails entro poche settimane, lavorare con un testo che copre tutti i punti importanti ti aiuterà molto.

Altri libri descrivono dettagli sullo stile di programmazione, le migliori pratiche, i modelli di progettazione o alcuni gruppi di algoritmi. Puoi lavorare con loro e forse di tutti i modelli di progettazione che applicherai solo un sottoinsieme molto piccolo. Tuttavia, è utile conoscerli e sapere dove trovarli. Ed è semplicemente un modo per addestrare i tuoi processi mentali in una direzione in cui sei più interessato a "costruire una soluzione" piuttosto che a "farla funzionare in qualche modo".

Personalmente mi piace leggere, quindi non ho la sensazione che i libri siano asciutti. Anche se è importante, naturalmente, che il libro sia sul tuo livello attuale di conoscenza o oltre. Se hai già imparato tutte le basi di C #, non ha molto senso leggere un libro per principianti.


7
+1 per menzionare ciò che avrei scritto: che il tipo di libri "best practice / metodology" differisce notevolmente dal tipo di libri "come fare X usando Y". E i primi sono cose davvero preziose, perché insegna un'esperienza generale di problem solving guadagnata duramente. Dopo aver appreso unit test, refactoring, stima ecc., Puoi applicarlo e adattarlo a una serie di lingue / domini / progetti.
Péter Török,

1
Sicuramente apprezzo la menzione di stili, pratiche e modelli. Questi sono i libri che sono davvero quelli benefici. Puoi imparare a programmare semplicemente avendo un problema per risolverlo e risolverlo. Impari a programmare bene imparando stili, pratiche e schemi. Tuttavia, il posto migliore per comprendere a fondo questi concetti sono i testi.
Rig

+1 per "copre materiale che, sebbene non effettivamente necessario, ti aiuterà in seguito" - i bravi programmatori hanno un profondo pozzo di conoscenze su cui attingere. Anche se non ricordi tutti i dettagli, ma conosci il filo da tirare e apprenderlo quando ne hai bisogno, può essere abbastanza prezioso!
Jared Updike,

22

Un libro (o documentazione web strutturata come un libro) è ancora il mio modo preferito di apprendere la maggior parte delle lingue.

Se ti immergi semplicemente in una lingua e trovi cose per te stesso, probabilmente ti perderai aspetti importanti, che un buon libro ti avrebbe consegnato al momento giusto.

Ad esempio, alcuni miei colleghi hanno imparato Java immergendosi senza un libro. Avevano programmato in Java per alcuni anni, quando ho scoperto che stavano manipolando sistematicamente le matrici di byte [] convertendo l'array in una stringa, usando .substring (), quindi convertendo nuovamente la stringa in una matrice. System.ArrayCopy () è stato introdotto a pagina 155 di Java In A Nutshell

Spero che tu riconosca che l'apprendimento è più facile con un insegnante, che da solo. Un buon libro è un sostituto economico di un buon insegnante. Introdurrà i concetti in un ordine attentamente pianificato, in modo da poter costruire una comprensione approfondita - non solo abbastanza per cavarsela.


2
+1 per sottolineare la differenza tra imparare a fare qualcosa e imparare a farlo bene.
idbrii,

Un buon libro è un ottimo modo per coprire rapidamente l'area. Qualcuno ha già fatto la ricerca per te. Trovare un buon libro può essere difficile. C'è stato un tempo in cui avevo una probabilità del 50/50 di ottenere un ottimo libro su un argomento che mi interessava (acquirente davvero bravo). Ora trovo che la possibilità di trovare un buon libro nel negozio di libri sia inferiore al 10%. Tuttavia, ci sono molti buoni libri come risorse disponibili in rete. Scegliere la risorsa giusta può accelerare il tuo apprendimento.
BillThor,

1
Non sono sicuro di quando fosse quel momento. Ho dato un'occhiata ai miei vecchi libri CS di recente. Lo standard è notevolmente migliorato. Ad esempio, ho usato "Programmazione funzionale con Miranda" anni fa. Ho usato "Real World Haskell" di recente. Il libro più vecchio oggi è mistificante, nonostante sostanzialmente usi gli stessi concetti e paradigmi di Haskell.
magro

21

Penso che potresti essere su qualcosa. Almeno per me, la maggior parte delle mie capacità derivano dal voler / aver bisogno di un programma che faccia "X".

Forse le persone che imparano in questo modo non chiedono aiuto; sono troppo occupati a farlo (male, ma imparando lungo la strada). Le persone che vogliono essere programmatori (come apposto a quel primo gruppo) fanno molte domande su come essere un programmatore o su come programmare, anche se non hanno necessariamente un problema da risolvere, e questi non lo sono domande con risposte dirette.

E così puntiamo ai libri. "Oh sì, prendi una copia di 'Dive into Python.'" "È così che hai imparato?" "No" "Um ..." "Sono un po 'occupato, ma ti aiuterò se rimani bloccato" "Uh ... OK, immagino"

D'altra parte, apprezzo il diavolo dal buon materiale di lettura quando sto imparando, in modo da poter vedere come il problema che sto cercando di risolvere è risolto da un autore più esperto, o forse solo per poter imparare un po ' tecniche "per principianti" che potrei non aver imparato lungo la strada.

TLDR : i libri sono buoni, imparare facendo è buono, imparare facendo libri è ???


1
+1: Penso che tu l'abbia inchiodato. Impara facendo, i libri più preziosi che possiedo erano specifici per un'applicazione che stavo scrivendo in quel momento.
Justin Shield,

41
Fai attenzione a evitare di diventare un programmatore "autodidatta" che pensa di sapere tutto perché hanno affrontato un problema semplice, male, e si sentono "troppo bravi" per leggere libri.
Joris Timmermans,

2
Dovrei notare che non sono contrario alla lettura, penso solo che i media digitali siano di solito molto più attuali e coinvolgenti.
Alex Hope O'Connor,

2
@Alex Informazioni sui media digitali. Dipende molto dall'argomento affrontato dai media. Se i media stanno affrontando cose come come fare x nella lingua y, o il modo più efficiente per scrivere il codice in z, allora sono d'accordo con la tua dichiarazione. Tuttavia, altri argomenti (di solito più avanzati, argomenti teorici), come NP, P, analisi dell'algoritmo, ecc., IMHO sono generalmente affrontati meglio da un libro di testo. Prendi L'arte della programmazione di Knuth . È piuttosto un vecchio testo, ma è ancora considerato uno dei libri più importanti sulla programmazione.
cledoux,

16
Penso che questo sia un caso di parzialità di conferma. @Alex sembra cercare una risposta certa. Non sto dicendo che questa risposta sia di per sé negativa , ma non è certamente la migliore risposta fornita da qualsiasi tratto dell'immaginazione.
zzzzBov,

15

Adoro leggere libri tecnici. Non tutti i libri tecnici, solo quelli su un argomento particolare che mi interessano, dicono Sharepoint. Ricordo il primo libro che ho letto veramente (più volte), s Programming Windows di Charles Petzold. Grazie a questo e molti altri, sono stato in grado di scrivere un'applicazione Win32 dalla memoria. Non avevo quasi bisogno di cercare un'API, quindi ero in grado di concentrarmi sulla parte aziendale.

Sento che i libri forniscono un modo "autorevole" di fare qualcosa, forse da qualcuno che conosce il modo giusto di fare qualcosa di meglio di me. Confido che quello che sto imparando sia, oserei dire, il modo migliore per risolvere il mio problema. Cioè, ovviamente, se mi fido dell'autore (devo amare l'area delle recensioni su Amazon).

Anche se ora mi trovo sempre più "googling" e copia e incolla quando provo a risolvere un problema, passo un bel po 'di tempo a assicurarmi che ciò che sto copiando (o ispirandomi :) sia qualcosa di affidabile che io posso inserire il mio codice. Solo perché trovo una soluzione sul web, non è necessariamente la migliore.

Mentre io, come tanti altri programmatori, ora semplicemente google le risposte, mi ritrovo ancora a raccogliere libri di autori noti. Sento che il contenuto mi è stato portato da qualcuno che è bravo a spiegarlo (insegnandolo) e mi evita di dover filtrare tutta la spazzatura dai miei risultati di Google.


14

Presumo che la tua domanda non fosse intesa come "perché usare la vecchia tecnologia come un libro stampato anziché pagine HTML", ma "perché leggere testi più lunghi sulla programmazione scritta da uno o pochi autori".

Puoi pensare ai libri come a una raccolta strutturata di informazioni su un determinato argomento. Ha il vantaggio che qualcuno ha fatto lo sforzo di costruire ogni capitolo l'uno sull'altro per rendere facile la comprensione dell'argomento. Di solito, ti viene anche detto quali sono i confini delle informazioni (cosa è coperto e cos'altro c'è che devi cercare altrove). Dopo aver letto e lavorato con esso, puoi essere sicuro di aver raggiunto una certa abilità. Se vuoi imparare con il pulsante di avanzamento rapido premuto, un libro può costringerti a lavorare su tutti gli aspetti senza saltare le parti noiose, almeno se ti fidi della struttura del libro. La raccolta denominata "libro" è spesso utile anche come riferimento.

L'uso di Internet, blog, "armeggiare", ecc. Di solito rientra nel tipo di informazioni non strutturate. Ottieni un sacco di frammenti di saggezza, ma devi fare più lavori di ricerca per aumentare le tue conoscenze, perché nessuno ti guiderà nel dire "impara prima o non vedrai il merito di quella roba che ho cercato su google adesso ". Potresti perdere alcune parti perché sono troppo noiose o nessuno ti ha detto che erano importanti. Potresti imparare cose sbagliate, perché non tutto ciò che è scritto su Internet è di prima qualità. Potresti passare molto tempo a filtrare risultati di ricerca inutili. Potresti perdere giorni cercando di realizzare qualcosa da solo, solo perché non conoscevi un certo modello di progettazione o costrutto di programmazione e nessuno te lo ha detto. Meno sai

Per dirla in modo un po 'provocatorio: non mi fiderei mai di un architetto per costruire un ponte che devo attraversare ogni giorno se mi dicesse che non aveva mai letto un libro sulla costruzione del ponte o un'analisi strutturale, ma l'ho appena imparato armeggiando e usando Google ...


La mia domanda poteva essere interpretata come onesta, ma quest'ultima era il mio consenso generale.
Alex Hope O'Connor,

10

Se sei un programmatore C, come ti aspetti di imparare Python senza un libro o un insegnante?

Se impari semplicemente la sintassi di base e ti immergi subito, finirai per scrivere il codice C in Python e giungerai alla falsa conclusione che Python è altrettanto prolisso e doloroso come C.


È un'esagerazione. Se hai iniziato a programmare Python, potresti cercare su Google risposte ai problemi e trovare cose come le ricette Python che descrivono le soluzioni Pythonic a problemi specifici.
idbrii,

6
@pydave: se fosse un'esagerazione, non ci sarebbe così tanto C-code-scritto-in-Python su SO (esempio)
BlueRaja - Danny Pflughoeft

4
Ho letto la tua domanda di esempio, ho letto la tua risposta e capisco cosa intendi: apprendere la sintassi di base non è la stessa cosa dell'apprendimento della lingua. (Non ho nemmeno considerato di non imparare i costrutti del linguaggio.) Se impari abbastanza Python per scrivere codice C in Python, allora non hai ancora imparato a programmare in Python.
idbrii,

Questo è un problema serio che merita maggiore attenzione. Tutti i linguaggi di programmazione sono Turing completi, il che significa che è possibile risolvere qualsiasi problema scrivendo codice Python simile a C o codice Ruby simile a Java. Non c'è un blocco stradale che ti costringerà a conformarti allo zeitgeist del linguaggio in cui stai programmando. Peggio ancora, potresti non sentire nemmeno il dolore della tua inefficienza di codifica perché sarà approssimativamente doloroso come lo era in C nativo o nativo Java, un livello di dolore che hai accettato normalmente.
Wedge

non posso essere più d'accordo - Sono un programmatore C in PHP quando scrivo qualsiasi: - |
Warren,

9

Google è in genere buono solo per trovare piccoli frammenti di codice o librerie open-source. La documentazione per alcune biblioteche / programmi è inaffidabile nella migliore delle ipotesi (se esiste, mostra solo esempi semplici o comuni.)

Non ho molti libri di programmazione, ma posso dirti ora che ho un libro su OpenGL, e contiene la maggior parte del codice per un motore 3D, che puoi semplicemente copiare, ma puoi leggi anche la teoria: devi solo girare alcune pagine e una spiegazione del codice è proprio lì, in attesa di essere letta. Al giorno d'oggi, potresti probabilmente trovare alcuni motori 3D open-source in rete, ma se hai bisogno di cambiare sostanzialmente il codice, probabilmente sei nei guai - in genere non esiste un forum di aiuto e le persone su SO non conosceranno il rispondi alla tua domanda se è molto specializzata. Quando si tratta di cose davvero specializzate, solo poche decine di persone in tutto il mondo saranno in grado di rispondere alla tua domanda senza spendere ore per capire abbastanza da essere in grado di trovare una risposta. Se chiedi come implementare un elenco collegato in C #, riceverai 5+ risposte su SO nei primi 10 minuti, ma se chiedi quale sia il modo migliore per implementare un algoritmo di shading complesso in three.js è , la tua domanda affonderà dalla prima pagina come una roccia.

Inoltre, i libri sono scritti quasi esclusivamente dalla prospettiva che il lettore vuole conoscere la teoria in questione, mentre google produce solo frammenti di codice spazzatura casuali, discussioni archiviate sull'argomento in cui nessuno sa di cosa stanno parlando , ecc. Le fonti su Internet sono migliorate molto: SO, Moz Dev Network, il sito Web di Microsoft, i blog, ecc., ma storicamente i libri sono stati molto migliori, con le fonti Internet che ora stanno recuperando terreno.


1
+1 per indicare il tempo necessario per risolvere la spazzatura a caso con il metodo "learning googling"
Ray

1
+1 per "discussioni archiviate sull'argomento in cui nessuno sa di cosa stanno parlando, ecc." - ROFL.
5

7

La qualità della scrittura nei migliori libri è tale che molte delle questioni non ovvie sono esposte prima ancora di iniziare. Un autore con molta esperienza saprà raccontarti cose come: effetti collaterali imprevisti, ripercussioni a lungo termine, caratteristiche prive di documenti, scenari di utilizzo tipici ...

Fondamentalmente, stai ottenendo il beneficio di uno scrittore con molta esperienza che ti guida attraverso il problema e sottolinea i pezzi davvero interessanti.

A volte puoi trovarlo anche nei riferimenti online, ma a causa della scarsa barriera all'ingresso molte informazioni online sono troppo basilari, mancano di dettagli o sono semplicemente sbagliate. Questo può accadere anche con i libri, quindi assicurati di credere solo a quei libri che sono classici con recensioni costantemente buone. Altri libri possono anche essere utili, ma solo come una delle fonti, dovrai comunque verificare le informazioni facendo riferimenti incrociati o provando te stesso.


1
+1000 "semplicemente sbagliato" Esistono molti esempi di codice online scritti da "i migliori programmatori" che non usano compilatori o sanno di cosa stanno parlando. Inoltre, un buon libro verrà scritto con un modello pedagogico che introduce, quindi rafforza il contenuto in modo coerente e leggibile.
jqa,

6

I libri tendono a fornire molte informazioni in un formato strutturato. Google tende a fornire un'enorme quantità di informazioni non sempre particolarmente strutturate e difficili da organizzare in termini di ciò che è necessario fare.

In realtà non leggo più libri di carta fisici - accanto a me c'è un lettore elettronico e ho un software Kindle sul mio laptop che mi dà accesso alle informazioni che sto cercando.

Google è utile se non stai cercando una panoramica strutturata su come programmare, ma hai bisogno di dettagli su come programmare un'attività specifica. Qualcuno ha quasi sempre scritto il codice per quell'attività prima o, almeno, qualcosa del genere.

Penso che ci sia una differenza tra imparare a programmare e imparare a programmare un compito specifico. Metterei in dubbio la qualità del codice che proviene da qualcuno che ha sempre imparato bit e gocciolando da specifici compiti su Google se non avesse mai avuto una visione decente su come programmare. Questo non è specifico del linguaggio, è più concettuale.


4

I libri sono utili se vuoi approfondire un argomento. Certo, ho imparato C # facendo alcuni tutorial e scrivendo alcuni progetti (da compagnia). Ma C # in profondità è ancora utile per vedere cosa succede sotto e per imparare alcune cose nuove.

Inoltre, posso prendere un libro di programmazione e leggerlo nel mio bagno o fuori al sole. Non posso farlo con il mio PC desktop.


4

Perché è un modo conveniente per imparare da altri programmatori.

I libri sono un supplemento. Puoi solo arrivare così velocemente a lavorare da solo. Chi non preferirebbe essere coinvolto in un progetto con un programmatore migliore disposto a insegnarti qualcosa piuttosto che leggere il libro?

Tendo a usarli più come riferimento piuttosto che come "Tutto ciò che avrai mai bisogno di sapere sulla programmazione".


3

I libri ti consentono di assorbire una serie di informazioni in modo "passivo". Non devi guardare ciò che è possibile ti viene presentato un sottoinsieme delle possibilità. Quando stavo imparando il C # il libro mi ha aiutato davvero a sottolineare le possibilità e mi chiedevo quali fossero gli equivalenti C ++. Naturalmente il mastering ha avuto luogo quando lo si utilizza in un progetto (di dimensioni reali). Ma il libro ha davvero aiutato a sottolineare differenze e possibilità.


3

In breve, penso che i libri tendano ad essere più utili ad alto livello. Possono darti indicazioni sulla progettazione e aiutarti a prevenire i problemi invece di risolverli.


I libri hanno sicuramente i loro svantaggi. La mia copia di Programming Python copre Python 2.0, ma il runtime che utilizzo è 2.6.

Tuttavia, penso che l'aspetto importante dei libri sia che puoi trovare cose che non potresti imbatterti in te stesso. Google ti aiuta a risolvere problemi specifici, ma i libri ti aiuteranno con il design. E non solo libri di design. Se leggi un buon libro che ti aiuta a capire il design di una lingua, capirai meglio come usare quella lingua.

Altri libri sono utili per perfezionare le tue conoscenze. Penso che l'effettivo libro C ++ di Scott Murphy sia un buon esempio. Sebbene questo libro non sia davvero ottimo per l'apprendimento del C ++, ti aiuta a vedere problemi nella progettazione di algoritmi / interfaccia / ereditarietà che non hai ancora incontrato (o ancora) o risolto. Potrebbe essere facile trovare una soluzione semplice (che causa altri problemi in seguito), ma capendo meglio la lingua puoi progettare il tuo software per evitare questi problemi in primo luogo.

Certo, non è il fatto che i libri siano stampati su carta che li rende utili. La cura e lo sforzo che comporta la loro creazione e il desiderio di dare una rigorosa educazione sono ciò che dà valore ai libri. Spesso come effetto collaterale si ottengono utili risorse online come FAQ Lite C ++ o ebooks come Dive into Python . Esistono anche tutorial solo online che sono strumenti di apprendimento completi e utili (come la documentazione per alcune piattaforme / lingue / librerie).

Gli snippet sul Web sono un buon modo per rispondere alla tua domanda, ma raramente ti dicono cosa dovresti chiedere.


3

Voglio diventare un programmatore, quindi sto usando libri di programmazione. I libri mi permetteranno di diventare professionalmente competente nella programmazione.


3

Non leggo un libro di programmazione da molto tempo. Li uso come guide di riferimento, ma ora penso che Internet sia più facile per la maggior parte delle lingue e dei framework.

Comunque, penso che la cosa migliore da imparare dai libri di programmazione sia il linguaggio principale. Ad esempio, la mia prima vera lingua era C. L'ho imparato scrivendo un sistema operativo (non lo consiglio). Di conseguenza, la mia conoscenza di C era piuttosto paralizzata anche dopo due o tre anni di programmazione. Non ho mai avuto una buona conoscenza di base della lingua. Non sapevo di poter trasformare queste 15 righe di codice disordinato in due righe di codice pulite. Quindi ho potuto risolvere i problemi, ma non stavo usando C in tutta la sua estensione.

Poi ad un certo punto ho deciso di imparare il C ++ ... (circa 2 anni dopo aver iniziato a imparare il C). Quindi ho letto l'unico libro C ++ che avevo in giro, un libro C ++ For Dummies. Ho letto di 3 / 4s di esso direttamente, facendo pochissimo "fare" in quel momento .. e come risultato quando ho fatto un salto nel mio primo progetto invece di sentirmi a mio agio con quelle 15 righe di codice disordinato, sapevo che c'era un modo più semplice per farlo (anche se forse avrei dovuto cercarlo).

Ho fatto la stessa cosa quando ho imparato C # / ASP.NET. Non ho fatto quasi altro che leggere fino a quando non ho finito con circa i 3/4 del libro. E per quello che non ho imparato, ho sfogliato Stack Overflow per interessanti domande su C #. Quando sono entrato nel mio primo progetto, ho detto che la maggior parte del mio codice era relativamente pulito e da allora ha dovuto essere sottoposto a refactoring "enormemente".

Quindi direi che i libri sono molto utili per apprendere le capacità di una struttura o di una lingua. Oltre a ciò, però, sono per lo più resi inutili da Internet, tranne ovviamente per i libri teorici forti e specificamente progettati per essere materiale di riferimento.


2

Dipende meno da ciò che leggi, ma da quanto. Mi piace avere un paio di libri di programmazione in movimento mentre sto lavorando a un progetto. Ogni tanto (più spesso di quanto si pensi) leggerai di una tecnica che può essere applicata al tuo progetto attuale.

Una volta implementata in una soluzione del mondo reale, le informazioni resteranno valide.


2
In realtà lo trovo quando rispondo a domande su siti Web come SE. Trovo spesso che i commenti mi portano a informazioni rilevanti per risolvere un problema su cui sto lavorando o so che lavorerò presto.
Lea Hayes,

2

Preferisco usare i libri perché ritengo che forniscano un'istantanea dello stato della tecnologia su cui stai lavorando. L'autore affermerà che con la versione XX della lingua / libreria Y, questo è il modo in cui risolvi il problema Z. I tutorial del sito Web non riescono a elencare le versioni che stanno usando o fornire il codice di esempio che usano mentre i libri lo fanno spesso.

I libri spesso trattano il "perché" questa soluzione risolve il problema mentre i documenti online sono in genere copia incolla.

Spesso puoi anche perdere i collegamenti a tutti i tuoi riferimenti, possono spostarli o andare giù. Proteggo e mi prendo cura dei miei libri come un investimento (che sono).


2

Puoi risolvere i problemi senza leggere libri, ma allora saprai davvero cosa sta succedendo dietro il tuo programma per risolvere quel problema?

Devi sapere cosa sta succedendo e cosa avrebbe potuto essere un'alternativa migliore. Per questo hai bisogno di buoni libri di programmazione. La sola lettura di libri ovviamente non è sufficiente, è necessario comprendere il contenuto, esaminare altri libri, pensare a diversi approcci per risolvere i problemi e così via. L'apprendimento continua con e senza libri.


1

Quando stavo imparando il C ++ ho trovato la maggior parte della letteratura abbastanza inutile fino a quando qualcosa nella mia testa ha fatto clic. Fino ad oggi non sono sicuro di cosa fosse, ma tutto ha iniziato a dare un senso. Libri e siti Web allora avevano molto più senso. Mi ci sono voluti 2 libri per imparare a programmare in C ++ e nessuno dei due era un vero libro C ++ (erano libri Visual C ++ che si concentravano principalmente sull'MFC).

Se ottieni i libri giusti, può essere davvero utile. Un mio amico stava leggendo alcuni libri di Dietel alla uni e li ho trovati estremamente ben scritti. Non ho mai trovato i libri "... per i manichini" così utili perché non spiegano le cose nel modo giusto per me. Il miglior consiglio è andare in una libreria e ottenere un assaggio del libro in modo da non sprecare un sacco di soldi su quelli che tendono ad essere libri estremamente costosi.

Per alcuni argomenti di programmazione trovo utile leggere diversi libri, intraprendere ricerche tramite Google ed esperimenti. Mi sono ritrovato a farlo molto quando stavo lavorando su algoritmi AI quando stavo lavorando a una partita a dama con J2ME. Mi sono anche trovato a farlo mentre stavo imparando come creare un compilatore di compilatore per sintassi personalizzate. Ci sono così tante diverse varianti e viste.

A volte la comprensione di più viste consente di stabilire connessioni altrimenti più oscure.


1

Tendo ad imparare (programmare) da entrambi i libri e da fonti "just in time" come il web. Entrambi possono essere buoni, ma nel complesso preferisco imparare dai libri, ecco perché:

Quando impari solo ciò che devi sapere immediatamente per completare una parte di un progetto, a volte ti perdi il quadro generale. I libri migliori non sono solo riferimenti, ma in un certo senso raggiungono qualcosa di più vicino a un apprendistato, fornendo una panoramica completa di una tecnologia e molti consigli esperti sulle migliori soluzioni ai problemi comuni.

L'apprendimento just-in-time può facilmente soffrire del problema del soddisfacimento, quando identifichi un problema che vuoi risolvere salti alla prima soluzione che sembra funzionare, quindi corri verso gli interwebs per scoprire come implementarlo . Tuttavia, spesso questo può metterti nei guai, se tu fossi stato in grado di avere una conversazione con un programmatore esperto sul tuo problema, non ti direbbero "ecco come fare X", invece ti direbbero "non fare X, invece Y ". E questo è il tipo di conoscenza che tendi ad ottenere dai migliori libri. In effetti, alcuni libri riguardano interamente questo genere di cose, come Javascript: The Good Parts .

L'altro problema che l'apprendimento JIT può avere è una curva di apprendimento molto più lenta. Con l'apprendimento JIT tendi ad imparare solo ciò che devi sapere. Ma spesso avere solo un nucleo di conoscenza di base può accelerare l'apprendimento di una nuova lingua o struttura. Invece di inciampare sulle basi, inizi con una solida base e poi costruisci da lì. Una buona parte del materiale che potresti leggere mentre leggi un libro potrebbe non essere immediatamente utile per te, ma avere quella conoscenza di base può essere utile nel guidare il tuo processo decisionale e soprattutto nella comprensione del nuovo codice a cui sei esposto. Naturalmente c'è un compromesso e ci sono libri cattivi che si accumulano solo su fatti inutili che non ricorderai dopo averli letti, ma ci sono anche buoni libri che ti danno una buona base sui fondamenti e cosa '

Ci sono anche libri a un livello superiore rispetto a un singolo argomento tecnologico che penso siano cruciali per maturare come sviluppatore. Libri come Code Complete , Refactoring , lavorare in modo efficace con il codice legacy , ecc.


1

Penso di andare a leggere libri, soprattutto scaricando ebook. Leggi ogni parte del capitolo. Copia il loro codice! incollalo nel tuo editor di programmazione e poi vedi qual è l'output. Quindi prova a cambiarne la logica. Ho citato ebook scaricabili perché funzionano più velocemente. I libri sono davvero superbi. Non sto mentendo ma dallo scorso novembre ad oggi. Ho finito circa 20 libri. Tutto ciò che richiede amore per leggere. Ciò che i neofiti fanno è che risolvono un problema specifico prendendo l'aiuto da internet. Ma quando viene dato loro un compito davvero complesso, si arrendono. Motivo, nessuna conoscenza del compito e la sua soluzione. Ad esempio, ho limitato i controlli a datatable e non so cosa fanno i set di dati e mi è stato fornito il compito di stabilire relazioni tra le copie di tabelle di database residenti nella memoria che non riesco a fare.


0

È molto difficile per i nuovi programmatori capire cosa sia effettivamente la programmazione, quanto sia profonda.

Chiunque può scrivere un programma per dire a un computer di fare - beh praticamente qualsiasi cosa con pochissimo apprendimento, questo non è difficile! Ciò che è difficile è creare un programma che sia sostenibile e che possa essere compreso rapidamente e compreso in profondità dagli altri membri del team, questa parte richiede anni, dozzine di anni.

Inoltre, imparare a lavorare come parte efficace di una squadra è un po 'una curva.

Quindi, in che modo i libri aiutano a risolvere questi "reali" problemi di programmazione in modi che la ricerca di riferimenti sul web non fa?

Beh, due dei miei libri preferiti sono "Design Patterns" e "Refactoring".

Refactoring è un ottimo libro che spiega come riconoscere il codice errato. Se hai imparato cercando i riferimenti alla codifica, questo libro (Beh, uno dei tanti libri sul Refactoring) è fondamentale.

I modelli di progettazione non offrono molto che un buon programmatore non può capire, ma hanno dato nomi a una vasta gamma di modelli che tutti già utilizzavano nel codice. Ciò ha consentito ai programmatori di comunicare in modo più efficace e ha aiutato alcuni programmatori a trovare nuovi modi per attaccare i problemi. Sebbene sia possibile trovare modelli di progettazione sul Web, è molto più facile cercare su Google il nome del modello di progettazione rispetto a: cosa stai cercando di fare su Google.

Mi è stato chiesto durante le interviste di descrivere questi due libri e cosa stanno cercando di realizzare, penso che questa sia una domanda molto valida per l'intervista ... Vorrei prestare attenzione a un programmatore che non sapeva di questi due libri a meno che non si candidasse per una posizione estremamente junior.


0

Ho imparato a programmare direttamente dai libri. Circa 20 anni fa, prima che Google e la rete diventassero popolari. Penso che siano grandi risorse. Tuttavia, la maggior parte dei libri di testo moderni cita solo articoli tecnici dei produttori. Quindi ora sono d'accordo che è meglio imparare online. Con un avvertimento come segue:

Anche se ho letto molti libri e ho avuto accesso a Internet quasi da quando era economicamente fattibile. Non sono mai stato, mai in grado di completare alcun tipo di progetto importante. Sicuramente potrei fare molti dei progetti importanti in grandi libri avanzati in cui prendono 20 capitoli per guidarti attraverso di esso, ma quando si trattava dei miei progetti del mondo reale, ho sempre senza esecuzione colpire un muro di mattoni. Devo dirtelo, ho letto dei libri pesanti.

Ho avuto problemi per tutta la vita ad entrare al college, ma ora sto andando al mio terzo anno. Nel mio primo anno ho incontrato persone al 4 ° anno, maestri, e sono stato in grado di tenere conversazioni produttive sulle teorie di AI, HCI, assemblatore e ect di sviluppo del compilatore. Ma con tutte queste conoscenze non sono riuscito a creare un programma ragionevole. Cosa mi mancava ... L'unica cosa che non puoi ottenere da nessun libro o online.

Struttura. Nel primo anno non ho appreso nulla di natura tecnica (sapevo già tutto e ho analizzato tutto senza uno studio di giorni, ho eseguito matematica e design poiché questi erano ragionevolmente nuovi per me), ma ho imparato la struttura e il lavoro di squadra. Nelle mie prime vacanze estive mi sono avvicinato più che mai al completamento del mio primo vero lavoro.

Nel mio secondo anno, ho imparato molte nuove cose tecnologiche (ancora le basi in confronto a ciò che sapevo, ma stavo mettendo la teoria che conoscevo nella pratica reale). Ciò ha sottolineato ancora una volta l'importanza della struttura. Non ho completato il mio primo vero progetto. Ora mi considero un programmatore.

Non credo sia necessario leggere libri per imparare a programmare. Ma è un aiuto. Tuttavia, credo fermamente che nessun libro o sito web insegna o può insegnare ciò che ottieni anche da 2 anni di college. Se sei riuscito a completare i progetti senza mai andare al college, il fair play, ma è un'esperienza che consiglio vivamente indipendentemente dall'età.

I libri sono buoni, internet è meglio, google e il tuo canale sono favolosi, ma niente batte il buon vecchio college alla moda nella mia opinione. E dubito che qualsiasi quantità di googling e youtubing lo farà mai, e so in prima persona che nessun numero di libri lo farà mai.


Dove dice sopra "Non ho completato il mio primo vero progetto. Ora mi considero un programmatore". Dovrebbe leggere "Ora ho completato il mio primo vero progetto. Ora mi considero un programmatore". Mi dispiace per l'ortografia.
Jack Spratt,

0

Non ho idea. Sono contrario alla programmazione di libri. Nella maggior parte dei casi, è ancora necessario effettuare ricerche su Internet per cercare informazioni aggiuntive.

Vuoi imparare un linguaggio di programmazione? Google per questo. Odiavo jQuery perché sembrava difficile. Poi sono arrivato a Stack Overflow e ne so molto. Senza l'aiuto di alcun libro.

  • Google per questo
  • Cerca un'applicazione open source professionale e completa
  • Cerca quel codice e PROVA per sapere cosa sta succedendo.
  • Prova a scrivere qualche applicazione veloce / semplice da frammenti di un codice esistente.
  • Prova a riscriverlo per te stesso.
  • Trova altri tutorial su Internet
  • Fai esperienza
  • Fai più esperienza
  • Hai appena imparato una nuova lingua! (Non ho detto che sarai un esperto, ma le basi vengono apprese in poche ore o giorni)

Avere un libro come riferimento è molto utile: guadagni dall'esperienza degli altri. Il "libro" potrebbe anche essere una vasta documentazione / tutorial online come django o jquery . Ma la sola prova ed errore + la sola fonte di lettura lascerà grandi lacune nelle tue conoscenze. Ora, se hai solo bisogno di poche righe di jQuery, il tuo metodo funziona ma non hai imparato la lingua. Ma se vuoi imparare C, ti consiglio di avere K&R come riferimento. Sicuramente la maggior parte delle informazioni sono online da qualche parte, ma sparse in molti post del blog.
dr jimbob,

0

Penso sia giusto che la programmazione non possa essere appresa solo dai libri (come la maggior parte delle persone menzionate), è necessario esercitarsi molto e ci sono molte risorse disponibili su Internet (articoli, video, esempi ecc.).

Ma un buon libro colma le lacune nelle tue conoscenze. Dopo aver letto una copertina del libro per copertina ti dà la sicurezza che non hai buchi spalancati nella tua conoscenza dell'argomento. Sebbene la sfida sia trovare buoni libri sull'argomento.

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.