Reinventare la ruota, perché dovrei? [duplicare]

7

Quindi ho questo problema, potrebbe essere il mio OCD (ho OCD non è grave ..... ma mi fa dire molto..specificamente su certe cose, programmando di essere uno di loro) o potrebbe essere il fatto che mi sono laureato e sento ancora "meh" alla programmazione. Leggendo Questo mi ha fatto pensare" OH questo è me! " ma questo non è veramente il mio problema principale. Il mio grande problema è .... in qualsiasi momento sto usando un linguaggio / API / etc di alto livello. Penso sempre a me stesso che non sono davvero "programmazione".

So che lo so ... sembra stupido. Ma come mi sento come ... se non riesco a capire come farlo al livello più basso, allora non lo sto davvero "comprendendo". Lo faccio per quasi ogni nuova tecnologia che imparo. Guardo il livello più basso e cerco di capirlo. A volte lo faccio ..... il più delle volte no, voglio dire, sto programmando da solo da 4 anni (al college, se addirittura lo chiami programmazione ... il programma della nostra università era "meh" ").

Per esempio faccio un po 'di programmazione embedded (con Atmel AVR 8bit / roba di Arduino). E non posso portarmi ad usare il compilatore C, anche se è 8 milioni di volte più facile che usare l'assemblaggio ...... è stupido lo so ...

Qualcun altro si sente così, penso che sia solo il mio OCD che mi fa sentire così .... ma qualcuno ha mai sentito la necessità di scendere al livello più basso della lingua per essere anche soddisfatto dell'uso vero?

Mi scuso per la domanda molto strana, ma penso che mi impedisca davvero di entrare in profondità in un linguaggio di programmazione e di fare una vera applicazione della mia. (è sciocco lo so)

    
posta Community 07.03.2011 - 19:34
fonte

6 risposte

10

All'università siamo partiti al livello basso. Scrivi il tuo elenco collegato, dizionario, albero rosso-nero, fusione / ordinamento rapido, ... algoritmi e strutture. Una volta che li abbiamo conosciuti, era OK usare le librerie standard.

E simile con le lingue. Abbiamo iniziato con C e una volta che sai come funzionano i puntatori è più semplice vedere come, ad esempio, funzioni Java.

In breve, penso che sia utile implementarlo una volta per vedere come funziona . Da lì in poi vai avanti e usa le implementazioni standard. Sono testati da migliaia di utenti, conterranno meno bug del tuo codice.

    
risposta data 07.03.2011 - 19:45
fonte
10

if i can't figure out how to do it at the lowest level then Im not really "understanding" it.

È vero che non lo capisci completamente. Ma va bene. Capire il codice non è l'obiettivo ...

L'obiettivo è ottenere il lavoro fatto. L'unico motivo per capire come funziona è perché ti aiuta a fare il lavoro (e farlo funzionare correttamente).

Devi aggiustare il tuo pensiero, altrimenti sarai quel ragazzo che Joel parla di chi è intelligente ma non ottiene mai niente.

    
risposta data 07.03.2011 - 20:12
fonte
5

Questo non è OCD. In effetti, non è niente come l'OCD.

Questo è NIH. Non inventato qui .

È una pessima abitudine, ma a molte persone sembra piacerci.

    
risposta data 07.03.2011 - 19:47
fonte
2

Forse una preoccupazione per l'astrazione?

I linguaggi di livello superiore tentano di introdurre un livello maggiore di astrazione per risolvere il problema sottostante nel minor numero possibile di passi concettuali. Nel tuo caso, sembra che tu non ti senta a tuo agio a essere protetto dalla complessità intrinseca del problema e quindi vuoi affrontarlo al livello più basso possibile di astrazione (o la più alta "concretezza").

Forse è necessario ricordare che a un certo punto il software deve guidare l'hardware per far sì che si verifichi qualcosa di fisico (il concreto). Un passo indietro da quello è il livello più basso di astrazione a tua disposizione come programmatore. Una volta che accetti che è necessaria una qualche forma di astrazione per creare effettivamente un software, allora puoi salire e salire nei livelli più alti di astrazione fino a raggiungere un punto in cui ti senti più a tuo agio.

    
risposta data 09.03.2011 - 22:42
fonte
1

Buona lettura Non reinventare la ruota, a meno che non pianifichi di saperne di più sulle ruote .

Il mio punto è che reinventare la ruota ha senso quando lo fai per scopi di apprendimento. Ha senso se è (o sarà) la tua principale area di competenza. Internet è pieno di "non reinventare la ruota", ma a volte ha senso.

    
risposta data 08.03.2011 - 09:48
fonte
0

Metti alla prova le tue abilità di codifica di basso livello con linguaggi / librerie di livello superiore implementando le operazioni CRUD in una struttura dati in assembler, poi in C, poi in C #. Tieni traccia di quanto tempo hai impiegato per codificare ciascuna versione (ovviamente questo presuppone che tu sia ugualmente facile in ogni lingua). Fanno alcuni test per vedere la differenza di velocità tra le versioni. Potresti scoprire che il tempo extra necessario per implementare le versioni di livello inferiore non vale la piccola differenza di velocità. O peggio ancora, scopri che la tua versione di livello superiore è più veloce - oh l'umanità!

Non c'è niente di sbagliato nell'imparare i livelli inferiori. Il trucco sta nel trovare l'equilibrio tra completare un progetto in tempo e fornire prestazioni decenti.

    
risposta data 08.03.2011 - 06:08
fonte

Leggi altre domande sui tag