C'è una data di scadenza per i libri di programmazione ben considerati, ma vecchi? [chiuso]


51

Dopo aver letto una domanda sui libri che ogni programmatore dovrebbe leggere , mi chiedo se quanto segue debba essere considerato obsoleto:

Tutti questi libri sembrano molto vecchi. Non c'è differenza tra il calcolo moderno e ciò che era attuale quando quei libri furono scritti?

Ad esempio, il mio insegnante di 61 anni spiega le cose molto bene, ma dimentica di prendere in considerazione tutto ciò che è stato fatto tra quando ha iniziato a insegnare 25 anni fa e adesso.

Non è lo stesso per quei libri? Non ci sono libri più moderni che insegnano principi e tecnologie più vicini alla pratica attuale? O li consideri utili e pertinenti anche oggi?


9
Vale la pena dedicare del tempo a considerare perché tutti i titoli elencati sono stati pubblicati per la prima volta almeno 12 anni fa, ma oggi sono ancora preziosi. Quattro dei cinque sono stati aggiornati dalla loro prima edizione, ma il tempo medio tra le edizioni è di 10,4 anni.
Caleb,

83
I principi di programmazione fondamentali non cambiano solo perché esiste un nuovo linguaggio o quadro "sapore della settimana".
Robert Harvey,

26
Aspettarsi che un laureato in informatica grezza costruisca un sistema software complesso è come aspettarsi un laureato in ingegneria civile grezzo che progetta un ponte sospeso, semplicemente non dovrebbe succedere. La scuola non ti insegna tutto ciò che devi sapere da molto tempo, dovrebbe insegnarti come imparare a essere un grande ingegnere del software, e questi vecchi libri hanno tanto da dire ora come facevano decenni fa: è finita 16 anni dalla pubblicazione del 20 ° anniversario di The Mythical Man-Month, oggi rilevante tanto quanto l'originale del 1975.
Mark Booth,

10
questi libri sono senza tempo; ma il programmatore che si limiterebbe a questi libri e che ignorerebbe le cose più recenti, sarebbe davvero obsoleto
moscerino del

4
Stai chiedendo in qualche modo la domanda: se i libri sono buoni, allora non sono obsoleti.
quant_dev,

Risposte:


92

Questi libri parlano dei principi di sviluppo. Questi principi sono, per loro natura, indipendenti dal linguaggio, e per alcuni addirittura indipendenti dal paradigma (OOP, programmazione funzionale, linguaggi imperativi).

Spiegano la teoria e i buoni modi di sviluppo perché, alla fine, il software si occupa sempre di ottenere dati, elaborarli e quindi restituirli. Facebook, Twitter, 3D, processo di contabilità batch, gestione del traffico ferroviario, lancio di missili, ecc.

Libri che parlano di una lingua, come "How to learn XXXXX in YY days", dove XXXXX è una lingua e YY è un numero che alla fine (e talvolta in realtà molto rapidamente) diventerà obsoleto, perché, per natura, si tratta di cose che si evolvono o vengono sostituite e diventano superata.

Code Complete , del fantastico Steve McConnell, è forse il libro che mi ha fatto capire questo. E il programmatore Pragmatic ha completamente cambiato la visione che avevo dello sviluppo del software. Leggendo tali libri, ti rendi conto che il 95% del problema che stai affrontando ogni giorno è già stato risolto e che il 95% di noi sta ancora reinventando la ruota.

Il cosiddetto "Cloud" non è il futuro dello sviluppo del software, è un modo per utilizzare il software sviluppato.

Non cadere nella trappola delle parole d'ordine hype / cazzate, concentrati su come migliorare le tue abilità di artigiano del software.

Concentrati sull'apprendimento da ciò che altri spiriti brillanti hanno inventato e imparato prima di noi, perché è l'unico modo per diventare uno sviluppatore esperto.


6
I buoni artisti copiano i grandi artisti che rubano
hafichuk il

16
... vera nave degli artisti. :-)
kindall

9
Eppure, non importa quante volte lo diciamo, le persone credono ancora di aver bisogno di JavaScript in 12 giorni.
Spencer Rathbun,

2
I buoni artisti copiano, i grandi artisti copiano E mantengono pulito il codice! (Ho avuto così tanti mal di testa a scuola a lavorare con altri bambini che hanno incasinato il progetto perché avrebbero copiato da tutto e tutti ...)
HTDutchy,

@SpencerRathbun inoltre (IMHO), Javascript è molto più consumante rispetto ad altre lingue, come PHP. Eppure c'è un bazillion "Learn Javascript in 15 seconds"e solo mezzo bazillion di"Learn PHP on 17 secsonds"
Clemente Herreman,

80

Tutti quei libri sembrano molto, molto, molto vecchi. "

Psicologia-Programmazione-Computer (1971) - Con milioni di volte i programmatori che nel 1970 la psicologia di come progettano i programmi e quali errori commettono e come evitarli è più importante che mai.

Software Tools (1976) - Poiché il Web è una raccolta di frame frame, utility, script e plugin - le idee in Software Tools non sono mai state così rilevanti.

EDIT: per rispondere alla domanda generale di: i vecchi libri di programmazione sono rilevanti?

I principi generali dell'ingegneria del software non sono cambiati molto, ci sono nuove tecnologie OO, TDD ecc. Ma generalmente gli utenti e i problemi non sono cambiati - e pensare a come dividere un problema è lo stesso adesso lo è sempre stato.

Questi libri più vecchi erano generalmente scritti da esperti del settore. Molti libri di programmazione moderni hanno lo scopo di correre fuori da una porta di 2000 pagine per l'ultima parola d'ordine mentre è ancora attuale.

I libri sulle lingue e le tecnologie che non vengono più utilizzate probabilmente non sono rilevanti: nessun manuale dell'assemblatore Vax è nell'elenco. Ma "C" è ancora molto usato e "La lingua di programmazione C" non è solo il miglior libro su "C", è un modello di come scrivere un tutorial conciso e un riferimento alla tua lingua.

Ci sono nuovi algoritmi? Sì. Ma tutti i vecchi algoritmi sono ancora pertinenti e la maggior parte di quelli nuovi si trovano in aree oscure che difficilmente incontrerai. Nessuno ha escogitato un tipo migliore o FFT di recente. Sebbene altre persone abbiano tentato di spiegarle meglio, non c'è motivo per cui i libri sugli algoritmi di quest'anno siano migliori del CLRS.

ps. Il tuo nuovo fantastico iWhatsit esegue BSD, sviluppato nel 1977. Ora voi ragazzi scendete dal mio prato!


28

Tutti quei libri sembrano molto, molto, molto vecchi. Non pensi che ci sia differenza tra oggi e quando quei libri sono stati scritti?

IMHO non è una sorpresa che i libri molto buoni rimangano popolari per decenni - questo dimostra quanto siano bravi. Ma penso di poterti dire qualcosa per ciascuno dei candidati che hai elencato:

Code complete: 2nd edition = may, 2004

In realtà la prima edizione di "Codice completo" è stata del 1993, quindi questa è davvero un "classico". Riguarda lo stile di codifica di base, usando esempi che si applicano a quasi tutti i linguaggi di programmazione della famiglia C, che contiene i linguaggi più popolari al giorno d'oggi (C / C ++ / Java / C # / Objective-C / D / ...). Quindi sì, questo libro è aggiornato.

Introduction to algorithms (Cormen, Leiserson, Rivest, Stein)

Bene, in realtà non ho letto quel libro (il mio libro di testo sugli algoritmi era di "Sedgewick"), ma l'apprendimento di algoritmi e la costruzione di algoritmi è in realtà un linguaggio agnostico. Certo, questo mestiere sta diventando un po 'sottovalutato negli ultimi anni da quando trovi oggi molti algoritmi di base nelle librerie standard, ma IMHO ogni programmatore professionista dovrebbe avere alcune conoscenze di base in questo campo.

The Pragmatic Programmer

Questo è un ottimo libro sulla programmazione come arte. Linguaggio agnostico e molto, molto aggiornato, purché la programmazione venga eseguita dai programmatori come attività manuale, utilizzando editor di testo, IDE, controllo della versione ecc.

Structure and Interpretation of Computer Programs: = September 1, 1996

Questo è il mio preferito, anche se (o forse perché) il libro usa Scheme per insegnarti le differenze tra i diversi paradigmi di programmazione. Non conosco nessun altro libro che si concentri così tanto sulla costruzione di astrazioni. E costruire astrazioni è un'abilità chiave che fa la differenza tra un programmatore mediocre e un programmatore di spicco - che non è cambiato negli ultimi decenni, quindi in realtà questo libro è senza tempo. Inoltre, i linguaggi funzionali e gli elementi linguistici sono diventati più popolari di recente, quindi le idee presentate in questo libro hanno avuto una rinascita.

The C Programming Language

Bene, questo libro potrebbe non essere così senza tempo come gli altri quattro. Ma dato che C è qualcosa di simile alla "madre" di tutte quelle lingue popolari che ho elencato sopra, potrebbe essere una buona idea leggere questo libro - non penso che ci siano dei moderni libri a "C" che sono davvero migliori. E se devi programmare la manutenzione del codice C ++ che è stato scritto da qualcuno che conosceva meglio C del C ++, allora questo libro è un must.

Infine, stavi chiedendo libri che tengano maggiormente conto della "realtà attuale", senza essere troppo specifici per la tecnologia. Allora, qual è la "realtà attuale" e cosa è cambiato dal lato "non tecnologico"? Ecco alcuni punti dell'ultimo decennio, senza dire che questo elenco è completo o con le giuste priorità.

  1. Esistono più codici legacy (soprattutto più codice legacy non solo in Fortran e Cobol, ma anche in C ++ e Java).
  2. Test unitari e TDD sono diventati i preferiti.
  3. C'è molto più codice open source disponibile.
  4. OO ha ottenuto sempre più critici

(Non elencherò qui nulla sullo sviluppo di Web o App, perché penso che questa tecnologia sia specifica).

Esistono buoni libri per gli argomenti 1 e 2, in particolare "Clean Code" , che è del 2008, e "Lavorare efficacemente con il codice legacy" del 2004. Forse questi sono alcuni dei "nuovi" libri che stai cercando?


5
Il linguaggio di programmazione C è senza tempo. Un libro così distillato è raro. L'ho riletto per il ... Non lo so, ho perso il conto (l'ho letto per la prima volta quando avevo 13 anni) e lo apprezzo ancora. Piuttosto, lo apprezzo molto di più ora.
Francesco,

3
Aggiungerò il numero 5 al tuo elenco: calcolo parallelo. Non esattamente una nuova idea, ma al giorno d'oggi viene fatta su una scala senza precedenti, il che porta ad alcuni nuovi problemi. Ma tutto ciò è ancora costruito sulle stesse basi delle vecchie cose, e ho la sensazione che l'OP ancora non capisca davvero quelle basi.
Mike Baranczak,

2
@Mike: sono d'accordo, il calcolo parallelo sta ottenendo sempre più attenzione nell'ultimo decennio, quando l'ho scritto la mia risposta mi è mancato.
Doc Brown,

2
@Doc Brown Le tue opinioni sull'intramontabilità della letteratura sono dovute alla tua visita nel 1885, 1955, 1985 e 2015 nel giro di pochi giorni dalla tua prospettiva?
Kalamane,

13

Tra quelli che hai citato "Codice completo", "Il programmatore pragmatico" e "SICP" sono stati nella mia lista di letture consigliate per tutti i nuovi sviluppatori che iniziano qui nella mia azienda e vogliono arrivare a un livello superiore.

Non sono obsoleti da molto tempo perché la scienza fondamentale in Informatica non è cambiata.


10

Non ho letto tutti quei libri, ma possiedo Code Complete e The Pragmatic Programmer. Questi libri sono lungi dall'essere obsoleti. Potrebbero avere un paio di paragrafi un po 'arrugginiti, ma la maggior parte dei contenuti è ancora pertinente oggi.

L'avanzata dell'informatica e della programmazione è un processo evolutivo . Nuove astrazioni vengono introdotte in aggiunta a quelle vecchie ma queste nuove cose non rendono necessario il vecchio obsoleto.

Un'analogia ... Sia che tu stia studiando per essere un chirurgo traumatologico o un chirurgo specializzato nel trapianto cardiaco, devi ancora sapere come funziona il corpo umano, la chimica cellulare, i sistemi di organi, come aprire il torace e come rapidamente smettere di sanguinare se si verifica, ecc ... Solo perché hanno inventato apparecchiature endoscopiche e tecniche meno invasive, non significa che non sei pronto a imparare le basi. Significa solo che devi imparare di più.


sì, l'anatomia di Gray (il vero libro non lo show televisivo) è stata scritta nel 1918 e gli studenti di medicina lo usano ancora.
HLGEM,

7

Il "cloud" non è un fattore. Il "cloud" è in realtà molto più antico della maggior parte dei libri che hai elencato. la maggior parte di quei libri parla di principi fondamentali, non cambiano mai spesso. Framework e librerie cambiano continuamente, ma il modo in cui dovresti strutturare il tuo codice non cambia molto. Allo stesso modo un puntatore è ancora un puntatore che non inizia a fare cose diverse solo perché. L'unico libro specifico per lingua che hai elencato riguarda C, nel qual caso quel vecchio libro è molto più utile di qualsiasi cosa nuova, perché probabilmente è stato scritto più vicino al periodo di tempo in cui è stato sviluppato qualsiasi codice C con cui lavoreresti.


6

L'elenco che hai citato, no, non sono obsoleti. Un libro è obsoleto solo quando l'argomento è cambiato abbastanza da non essere utile. La natura della programmazione e il linguaggio C sono entrambi cambiati molto poco dalla pubblicazione


6

Una delle cose che devi realizzare è che esistono principi sottostanti che sono essenzialmente senza tempo e implementazioni che tendono ad andare e venire.

I principi sottostanti sono essenzialmente tutta la noiosa teoria su cui l'informatica tende a passare molto tempo e che continua ad essere valida anche se il mondo cambia attorno ad essa. Questo al contrario di cose come "Come usare Win32s in Windows 3.11" che è molto vecchio e obsoleto.

Per mettere le cose in prospettiva: il testo canonico sulla geometria ha duemila anni. La maggior parte della matematica insegnata a livello universitario ha almeno 300 anni. L'unica ragione per cui i libri CS non sono più vecchi è perché il campo è ancora nuovo.


La proposizione 1 di Euclide del libro 1 non può essere provata dalle definizioni, dagli assiomi e dai postulati forniti. Non è una buona scelta da imparare al giorno d'oggi, e dopo millenni può essere considerato obsoleto.
David Thornley,

1
@DavidThornley se Euclids Elements non è il testo canonico sulla geometria, che cos'è?

6

Alcuni libri sono senza tempo perché discutono di idee così fondamentali per la pratica dello sviluppo del software, che saranno sempre applicabili.

Prendiamo ad esempio il Mythical Man Month , quando stavo leggendo questo libro, continuavo a dimenticare che era stato scritto nel 1975. Quando spruzza nel riferimento occasionale su IBM System 360, mi stona sempre perché è l'unico contenuto che risale al libro. Tutto il resto vale qui e ora. Conservo ancora la mia copia di Patterns of Enterprise Application Architecture di Martin Fowler , ora di 9 anni ma di nuovo senza tempo e ancora applicabile al lavoro che faccio oggi.

Il mio libro preferito in questo momento è Java Modeling in Color with UML (1999) di Peter Coad, anche se sono uno sviluppatore C # ed evito UML, perché le tecniche e i concetti mi rendono un programmatore migliore.

Faremmo bene a imparare dalla prima generazione di sviluppatori perché hanno camminato sul terreno che stiamo camminando in questo momento e la loro saggezza guadagnata duramente può aiutarci a fare un balzo in avanti su ciò che stiamo facendo / imparando oggi.


MMM - Mi piace la parte del team che corregge costantemente i bug, ma il numero di bug è rimasto costante :)
JoelFan,

5

I principi fondamentali del software non sono cambiati negli ultimi 20 anni. Una pila, un albero e un elenco collegato funzionano ancora allo stesso modo di allora. "XOR" significa ancora la stessa cosa. Un byte ha ancora 8 bit.

Stai seriamente suggerendo che lo "sviluppo multipiattaforma" è una nuova idea? Perché pensi che C sia stata inventata?

"Cloud" è una parola d'ordine di marketing. Significava qualcosa di specifico, ma è stato degradato a causa dell'uso eccessivo. Al giorno d'oggi, ogni volta che hai qualcosa che parla a un server remoto su una rete, gli esperti di marketing attaccano l'etichetta "cloud" su di esso. Quindi non ha davvero senso parlarne, perché è una parola insignificante.

Non conosco il tuo professore di 61 anni, quindi non posso garantire per lui. D'altra parte, chiaramente non sei intelligente come pensi di essere. Ascolta il professore, è possibile che imparerai qualcosa.


"Non si diventa vecchi non essendo sciocchi. Molti giovani saggi sono morti come figlio di puttana." - Richard Pryor


2
"D'altra parte, chiaramente non sei intelligente come credi di essere". Se pensassi di essere così intelligente, non avrei mai fatto una domanda del genere.
Olivier Pons,

4

Ecco alcuni libri molto vecchi e obsoleti:

  • The Art of Computer Programming, vol. 1-3 di D. Knuth. Questi furono pubblicati tra il 1968 e il 1981! Non stiamo più usando tubi a vuoto, gente! Tutto in questi libri è zoppo. Dov'è la discussione su Python e Ruby?

  • Computer e intrattabilità: una guida alla teoria della completezza NP di MR Garey e DS Johnson, 1979. Super zoppo! Tutti questi problemi sono stati risolti ormai, probabilmente.

Se negli ultimi tre anni non è stato scritto un libro incentrato su Python, non vale la pena leggerlo.


In tutta onestà c'è almeno un caso per rendere l'uso da parte di TAoCP di un assemblatore per il suo pseudocodice significa che i libri di algoritmi più moderni che usano lo pseudocodice più vicino a linguaggi più moderni sono più utili per il 90% + di noi che non scrivono per incorporato sistemi.
Peter Taylor,

-1: ogni settimana o due vedo qualcuno chiedere un algoritmo per gestire qualcosa o altro che Knuth ha descritto in modo incredibilmente dettagliato. Solo per divertimento: nomina un algoritmo di ordinamento più recente del 1981. Vuoi rispondere a un ordinamento parallelo? Knuth ha pagine sull'ordinamento dei dati in parallelo. Potresti avere ragione sui libri di Python, ma c'è un'enorme differenza tra i libri "Sapore della settimana" e i libri di ingegneria.
sarnold,

5
Apparentemente alcuni rilevatori di sarcasmo sono rotti ...
DaveE,

1
<Sarcasm> "Comment" </Sarcasm>
NWS

1
Penso che questa risposta renderebbe il punto ancora migliore se includesse la menzione di The Art of Computer Programming Volume 4A, che è stata pubblicata nel 2011 e Volume 5, prevista per il 2020!
Mark Booth,

3

Quei libri non sono obsoleti, quei libri sono classici.

Per citare Kaplansky , " passa ogni giorno un po 'di tempo a imparare qualcosa di nuovo che è disgiunto dal problema su cui stai attualmente lavorando (ricorda che la disgiunzione potrebbe essere temporanea) e leggi i maestri " .


3

So cosa intendi quando abbiamo dei progressi (mi viene in mente LINQ) che cambiano la leggibilità e l'uso del codice, ma semplicemente perché questi libri sono vecchi, non significa che non offrano grandi lezioni per il lettore.

Mentre i linguaggi di programmazione che usano potrebbero non essere più in voga, la teoria alla base dei linguaggi di programmazione suona ancora oggi. La maggior parte di questi libri ha lo scopo di trattare molto bene le basi, e le basi non sono cambiate molto.


2
I linguaggi di programmazione che usano sono per lo più "C" - possono essere sfuggiti alla moda, ma sono notevolmente aumentati nell'uso.
Martin Beckett,

3
Dovresti leggere SICP, potrebbe aprire gli occhi per quanto riguarda la provenienza di LINQ :)
Joris Timmermans,

1

L'industria dell'informatica è ancora molto giovane. Libri scritti 30 anni fa, ritengo che siano ancora preziosi e necessari per una comprensione completa. I concetti astratti a volte richiedono del tempo per essere digeriti.


1

Alcune parti minori sono obsolete in tutti quei libri, ma il 99% è ancora eccezionale.

I libri degli algoritmi invecchiano lentamente. Gli algoritmi sono matematica e la matematica non sta cambiando rapidamente. Certo, c'è ancora la ricerca di nuovi algoritmi che sono superiori in determinate circostanze (ad esempio, l'algoritmo di Furer (2007) Schonhage-Strassen per moltiplicare numeri lunghi oltre 40000 cifre), ma l'introduzione è necessaria per imparare le basi (divide-and-conquer / Programmazione dinamica / Programmazione lineare / ecc.) In modo da poter imparare a pensare in modo sensato agli algoritmi.

L'apprendimento dello standard C da K&R è ancora la migliore fonte; anche se non sono sicuro che mi fiderei delle loro sezioni su come configurare il tuo ambiente.

SICP è un libro meraviglioso e insegna le basi del CS moderno insegnando lisp, che è una lingua meravigliosa. Tuttavia, lisp non è probabilmente la lingua più utile al giorno d'oggi; anche se altri sosterranno che lisp è la loro arma segreta e che l'apprendimento di lingue come java o python prima rende programmatori molto cattivi che non hanno mai bisogno di imparare come implementare elenchi o array collegati o notazioni big-O e finire per fare cose molto inefficienti.

Alcuni programmatori di codice completo o pragmatico sono meno rilevanti, specialmente se si sta programmando in linguaggi più recenti (ad es., Python / ruby ​​/ C ++ 11), poiché spesso si concentra su come fare qualcosa in C o fornisce soluzioni consigliate usando le migliori strumenti disponibili al momento (come CVS / RCS per il controllo della versione piuttosto che uno strumento moderno come git / bzr / hg / svn). Ma è ancora bene pensare a come il controllo della versione sia un must e come debba essere senza soluzione di continuità e autocompensante e passare attraverso la logica del perché è un must assoluto.

O i consigli di PP contro gli IDE per l'editor unix di base + gli strumenti unix - per non dire che non dovresti imparare come usare find / awk / Locate / grep / sed, ma un buon IDE può spesso risparmiare molto tempo. Ad esempio, emacs può eseguire l'evidenziazione della sintassi o il semplice completamento del codice; ma dire che un buon IDE dirà dare suggerimenti con le dichiarazioni di funzione quando le digiti, o analizzi il codice e contrassegni le variabili inutilizzate, rendi facile comprimere sezioni di codice, ecc.


1

Non c'è differenza tra il calcolo moderno e ciò che era attuale quando quei libri furono scritti? Pensi che cambi ciò che dovremmo imparare? Non dovremmo tenere conto degli sviluppi degli ultimi 20 anni?

Sì, sì e sì.

Ciò non rende obsoleti quei libri. "Elaborazione moderna" è un termine incredibilmente ampio. Tuttavia, include la programmazione C, quindi "Il linguaggio di programmazione C" è ancora un libro rilevante. Esso comprende algoritmi, così "Introduzione agli algoritmi" è ancora un libro in questione. Così via.

L'attuale enfasi sullo sviluppo multipiattaforma sviluppo multipiattaforma (vedi phonegap) dovrebbe cambiare ciò che impariamo oggi?

La maggior parte delle app su App Store (per utilizzare la piattaforma mobile più popolare come esempio) sono scritte nell'Obiettivo C, un linguaggio dei primi anni '80 che è un superset di C. Quindi, ancora una volta, C è ancora rilevante.

Pensi che il "cloud" sia una moda o il futuro?

È il nostro regalo

Quando gli studenti escono dall'università, dovrebbero essere veri sviluppatori e poter lavorare immediatamente

Ma cosa significa?

Ci sono troppe lingue, API, framework, piattaforme, strumenti, strategie di collaborazione, ecc. Affinché la scuola ti prepari per un lavoro specifico . La scuola può solo gettare le basi, dandoti un modello di lavoro di base su come funziona la macchina, su algoritmi, strutture dati, costruzione del codice, strategie di decomposizione, alcuni strumenti, ecc.

Un "vero sviluppatore" non è qualcuno che sa tutto, è qualcuno con le capacità per questo tipo di lavoro, che ha una base in teoria e pratica e che sa come imparare , perché la tua educazione non finisce mai.


1
+1 per il commento "come imparare": ecco a cosa serve il college, non la formazione professionale.
DaveE,

1

Ok, quindi ho intenzione di offrire una risposta molto più teorica. Concordo con tutti voi ragazzi che avete risposto, abbastanza ovvio secondo me, questi libri sono la base di ciò che facciamo come programmatori e tutti questi nuovi framework sono costruiti sulla stessa vecchia linea di pilastri.

Ecco i miei due centesimi, non proprio i miei, l'ho imparato da San Aquino e da Aristotele prima di lui.

An abstraction is useless to someone who doesn't understand the particulars.

La meccanica di un computer non è cambiata da von-neumann. Allo stesso modo, i dettagli che devi imparare per essere un grande programmatore saranno gli stessi fino a quando il modello von-neumann non sarà obsoleto. Assemblea, è il linguaggio dei computer ... imparalo, senza scuse.

C è la lingua madre di Windows e Unix. Imparalo o trova un nuovo trade. Se sei uno di quei ragazzi che sono andati direttamente a JAVA o C #, potresti essere un buon programmatore, ma saresti un programmatore molto migliore se imparassi il periodo C--.

Gli algoritmi e le strutture dati sono alla base dei programmi per computer, imparali.

Tutto il resto è un'astrazione di queste discipline fondamentali. Le astrazioni sono meravigliose se usate correttamente - sul serio, uso C # per il 75% di tutti i miei progetti. Tuttavia, ti rendono stupido se non ti prendi il tempo di capire come funzionano e come funzionano senza di loro. Trascorrerai un tempo infinito a fare in modo che il software si adatti al proverbiale buco quadrato quando ci sono approcci molto migliori e avrai bug che avrebbero potuto essere evitati. Lo sviluppo software è un mestiere che deve essere padroneggiato e, alla fine, gli strumenti cambiano raramente. Ecco perché questi libri sono così importanti.

Tutti questi programmatori solo JAVA e C #, tsk, scommetto che la maggior parte di loro non ha mai visto un episodio di Star Trek!


1

Ho sentito un detto da un mentore:

"Un buon consiglio ha una ragione per cui in modo da sapere quando non è più un buon consiglio." Quindi, nei termini del libro, un libro che spiega perché fare X su Y ti farà sapere quando quel consiglio non è più valido. Un libro "Fallo sempre, fallo e basta" come alcuni dei crash-course in lingua X non è così buono.

Ne ho visto uno intitolato "impara unix in 24 ore", beh, il libro aveva uno spessore di circa 8 cm, dubito che molte persone possano persino leggere ogni pagina in 24 ore :)

Ricorda che ciò che è in voga oggi potrebbe essere deriso in futuro. Tutti i seguenti erano considerati una volta mainstream (in voga ieri) ma ora non lo sono:

  • Vai a
  • Entrata singola uscita singola
  • Notazione ungherese
  • Approccio alla cascata

E ci sono alcune cose che una volta erano completamente anatemi ma ora sono accettate:

  • Ricorsione come strumento per risolvere i problemi (radicale nei primi giorni del BASIC)
  • Allocazione della memoria in fase di esecuzione con malloc / new
  • Uso del C ++ STL
  • Immondizia ha raccolto le lingue per i sistemi in tempo reale

Scopri perché e saprai quando i vecchi presupposti sono stati sostituiti con una nuova realtà, e così dovrebbe essere il consiglio.

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.