2012-03-14 10 views
5

Sto cercando un suggerimento risorsa/libro su una scrittura più efficace del software. Ho appena terminato un paio di corsi Python, C++ e strutture dati, e conosco le basi su come programmare ora, ma ho margini di miglioramento. Direi che ho circa 100 ore di esperienza. Sto cercando dove andare da qui ... l'obiettivo sta costruendo la mia abilità di codifica.Suggerimento di risorse/libri per scrivere in modo efficace software per principianti python/C++

Non voglio un libro che sia solo per la lettura ma un libro con esempi concreti da cui posso imparare. Penso che il mio più grande problema sia che ho inventato le mie metodologie di design e scritto tutto il mio codice da solo, e ho bisogno di espandere i miei orizzonti per vedere come gli altri lo fanno.

Sono un programmatore principiante (python e C++), e sento che sto spendendo troppo tempo per il debugging e il refactoring del mio codice e insegnando me stesso ai metodi di progettazione. Il mio progetto più lungo è stato di 500 LOC, e ho bisogno di un buon libro preferibilmente con esempi concreti, piuttosto che reinventare la ruota da solo. La cosa più prioritaria di cui ho bisogno è la progettazione di software. Ho ascoltato vari discorsi sulla banda di quattro libri. È qualcosa che dovrei esaminare a questo punto?

Sto imparando molto per certo, ma penso che il mio progresso sarebbe molto più veloce se potessi studiare da un libro ben scritto. Tutto quello che ho imparato finora è stato "per finire il mio progetto" per altre classi, e mi piacerebbe diventare più bravo a programmare. Immagino che il mio eventuale lavoro coinvolgerà aspetti significativi della codifica.

Grazie per aver trovato il tempo di rispondere o discutere questa domanda aperta.

modifica: esiste un elenco equivalente per python? - The Definitive C++ Book Guide and List

+2

Per C++, stare lontano da GoF. Il codice C++ al suo interno è pieno di perdite di memoria e non è nemmeno lontanamente idiota C++. Inoltre, consultare [la lista di libri C++ definitiva] (http://stackoverflow.com/q/388242/485561). – Mankarse

+1

Questa domanda è off-topic qui (come si indica la tua conoscenza, è a tempo indeterminato e si tradurrà in discussione); è specificamente menzionato nelle [FAQ] (http://stackoverflow.com/faq) come inappropriato qui. Votare per chiudere come "non costruttivo". (È anche chiaro che sapevi che non era il caso di chiedere qui, se sei a conoscenza, non dovresti farlo. Aiuta a mantenere questo sito una risorsa utile, non è progettato per essere una chat room o un gruppo di discussione, e non dovrebbe essere trattato come uno. Grazie.) –

+0

Eccellente lo controllerò. Ora non voglio necessariamente diventare bravo in C++ ma programmare in generale. Ho sentito C++ è per programmatori professionisti in situazioni in cui la velocità di esecuzione è mission critical. Per quello che voglio fare, il tempo di sviluppo è mission critical. Questo è quello che mi ha guidato a Python in primo luogo. Ho cercato una lista equivalente per Python ma non ho trovato uno – SwimBikeRun

risposta

0

How To Design Programs è stato davvero utile per me ed è disponibile gratuitamente su Internet (http://www.htdp.org). Utilizza schema/racket, che è molto diverso da linguaggi come C++ e python, ma i principi di progettazione si applicano ancora e in fin dei conti è un libro che viene comunemente utilizzato nelle università per corsi di progettazione software principianti/intermedi.

1

Il design è importante. Molto importante. Ma perché? In modo che tu non incappi in problemi scalabili in seguito, in modo che quando lasci l'organizzazione il tuo codice possa essere facilmente compreso e gestito da altre persone e così via.

Tuttavia, prima di passare agli elementi precedenti, ciò che è davvero più importante è scrivere buoni algoritmi & che costruiscono strutture di dati scalabili. Quindi, anche se hai un ottimo codice & ben progettato, ma al di sotto dell'algoritmo medio, non serve a niente dato che non stai dando un design ai tuoi clienti ma grandi algoritmi. Il design è per te e la tua azienda & per il futuro. Di nuovo la gente potrebbe dire che una volta che ci sono buoni algoritmi di backend di progettazione, è possibile cambiare in qualsiasi momento. Questo non è giusto Gli sviluppatori sono procrastinatori (Leggi le tre virtù di un grande programmatore dal creatore di Perl :)). Persino Alex Stepanov, che ha creato C++ STL, ha scritto una routine quadratica per un Algoritmo, che secondo lui è stato spedito a lungo con STL e ha convenuto che se non fosse stato pigro avrebbe fatto cose più complesse.

Non sto dicendo che il design non è importante (si prega di leggere la riga di partenza della mia risposta), tuttavia tutto ciò che include algoritmi (con grande complessità spazio/tempo), strutture dati scalabili vanno di pari passo con Design. Questi due devono essere padroneggiati o appresi bene e praticati bene prima di entrare in Design (e credetemi, colpirete degli schemi anti durante la codifica e voi stessi li convertirete automaticamente in buoni schemi di progettazione). Durante il corso, inventerai te stesso modelli di design (tuttavia prenotare come GOF o Head First Design Patters potrebbe darti un buon inizio).

Vorrei raccomandare come prima lettura un libro di Jon Bentley intitolato "Programming Pearls". Prova a scrivere quella roba in Python se lo desideri. Risolvi quei problemi e guadagnerai molto. Poi vai per cose di design.

Problemi correlati