Un ingegnere del software dovrebbe sapere come assemblare il proprio computer?[Chiuso]

StackOverflow https://stackoverflow.com/questions/58864

  •  09-06-2019
  •  | 
  •  

Domanda

Provenendo da un ambiente Mac, non ho mai passato molto tempo ad armeggiare/assemblare/modificare il mio computer oltre agli aggiornamenti occasionali della RAM e alla sostituzione dei dischi rigidi.Sento di avere una buona conoscenza di come funziona un computer a livello concettuale, CPU, bus, memoria, ecc., ma non ho molta esperienza pratica nel metterlo insieme/smontarlo tutto.

La mia domanda è: si può guadagnare qualcosa in termini di competenze di ingegneria del software imparando ad assemblare il proprio computer?Se hai passato tutta la vita a mettere insieme pezzi di hardware, in che modo questo ha influenzato il modo in cui scrivi o pensi al software?

È stato utile?

Soluzione

Non impari molto che sia utile a un programmatore mettendo insieme un computer.Sapere dove mettere le schede PCI e come collegare un processore non è molto utile se non per costruire computer.

Penso che tu abbia bisogno di una conoscenza di basso livello su come funzionano i computer, ma tutto ciò che è interessante per i programmatori è già saldato insieme sulla scheda madre.Imparerai molto di più programmando in c o assembly e magari leggendo il libro di Charles Petzold Code...

Altri suggerimenti

Fai attenzione ai programmatori che trasportano cacciaviti.(Leonard Brandwein)

Come programmatore non impari nulla assemblando un PC.Posso usare tranquillamente un bagno senza installare un sistema fognario.

Dipende da che tipo di studente sei.Se hai una buona immaginazione probabilmente puoi imparare tutto quello che c'è da sapere sull'hardware senza toccare niente di più di un libro, ci sono persone che hanno bisogno di guardare le cose per migliorare la loro comprensione.

Detto questo, potresti imparare molto se cogli l'opportunità di costruire un nuovo computer come un computer di apprendimento, ad esempio prenditi il ​​tempo per guardare dove si trova il Southbridge, quale chip è e cercalo, trova dov'è il SATA controller, di che marca è, cercarlo, vedere le loro caratteristiche e così via.Se metti insieme i pezzi il più velocemente possibile, probabilmente imparerai cosa fare in caso di guasto e risparmierai qualche soldo, niente di più.

Inoltre, costruire oggetti aumenta la curiosità nei loro confronti, il che non può essere negativo.

Costruire i tuoi computer ti rende un generalista migliore, non uno specialista migliore.Se consideri la programmazione come l'applicazione specializzata del codice in un editor che si trasforma in applicazioni, costruire i tuoi sistemi non aiuta in alcun modo questa pratica.

Tuttavia, se hai bisogno di mettere un server in una colonna, amministrarlo, capire quando si blocca, se si tratta della tua applicazione o di un disco difettoso o di una ventola difettosa che è andata a rotoli, allora sì, sapendo quali sono tutti i pezzi, capendo cosa sono fare, quali hai acquistato e perché, se è probabile che il problema sia l'hardware o il software, quindi costruire un computer è il primo passo minimo lungo quella strada.Se non sei responsabile dell'esecuzione effettiva e dell'utilità del tuo codice, è una perdita di tempo.

Un essere umano dovrebbe essere in grado di cambiare un pannolino, pianificare un'invasione, macellare un maiale, conn una nave, progettare un edificio, scrivere un sonetto, conti di equilibrio, costruire un muro, impostare un osso, comfort il more Gli ordini, collaborano, agiscono da soli, risolvono le equazioni, analizzano un nuovo problema, letame di pitch, programma un computer, cucina un pasto gustoso, combattono in modo efficiente, muori galantemente.La specializzazione è per gli insetti.

Eh.

Onestamente ritengo che l'atto stesso di assemblare un computer non migliori sostanzialmente la tua comprensione dei computer.Non stai costruendo queste parti, le stai assemblando in una custodia seguendo le istruzioni.

Tuttavia, è possibile ottenere alcuni miglioramenti nel far funzionare correttamente il sistema operativo con i componenti e risolvere i problemi di debug relativi a ciò.

E il punto di Aku sul risparmio di denaro è valido.

I vantaggi sono evidenti:

  • Puoi risparmiare un paio di dollari per un buon utilità
  • Se perdi la posizione di ingegnere del software per aver dedicato troppo tempo a SO, puoi guadagnare denaro assemblando computer.

L'ultima volta che ho acquistato un computer assemblato ho scoperto che non c'era pasta termoconduttrice tra CPU e radiatore.

Per quanto riguarda le competenze di ingegneria del software, non ho trovato alcun vantaggio.

No, non necessariamente, ma penso che i programmatori dovrebbero sapere come ottimizzare il codice per l'hardware su cui viene eseguito.

Le risorse della CPU, della memoria, della rete e del disco hanno un grande effetto sulle prestazioni.I programmatori dovrebbero sapere quando e come utilizzare la memorizzazione nella cache per aumentare le prestazioni dell'applicazione e anche come sfruttare il codice per utilizzare grandi risorse quando disponibili.

Essendo un geek direi imparare ad assemblare un computer per divertimento.

Per citare uno dei nostri padri fondatori (Jeff Atwood):

Nel mio libro, uno dei modi migliori per capire l'hardware è sporcarti le mani e metterne una insieme, tra cui l'installazione del sistema operativo, tu stesso.È un peccato che i programmatori di Apple non possano farlo ...

Anche se non sono così sicuro che ti renda un programmatore molto migliore, ma è lo strumento che usi.Queste macchine si rompono costantemente o necessitano di aggiornamenti.Penso che sia una buona idea essere in grado di farlo e costruirne uno da zero è IL modo per impararlo.

Questo è simile alla domanda su Software ed ingegneria elettronica.

Se indossi le scarpe, probabilmente dovresti sapere come allacciarle.Ma molto probabilmente, se sei abbastanza intelligente da indossarli, puoi capirlo.

Altrimenti hai dei problemi.

Beh, onestamente, non saprei quali parti scegliere per assemblare un PC di sviluppo o da gioco di altissimo livello.So come tutto si incastra, conosco i colli di bottiglia del software, ecc.

Quello che faccio quando devo assemblare un PC è trovare prima lo scopo.PC di sviluppo?gioco?multimedia?Ufficio?Poi penso ai requisiti.Ovviamente, un semplice PC da ufficio funziona con molto meno spazio sul disco rigido, una GPU integrata, ecc.Quando l'ho capito, ho cercato in Internet recensioni, sistemi già composti, benchmark hardware di Tom, per cercare di trovare la migliore combinazione entro il mio budget.Un’altra cosa da tenere in considerazione sono i nuovi sviluppi.Se, ad esempio, Intel rilasciasse un nuovo modello di CPU entro il mese, aspetterei che i prezzi dei modelli inferiori scendano.Una volta che ho l'elenco dei componenti richiesti, vado al negozio di computer locale o trovo il prezzo migliore in rete.Preferisco un negozio locale, perché mi fa risparmiare molto tempo quando ricevo un componente guasto o devo richiedere la garanzia.Di solito però un po' più caro.

Assemblare richiede principalmente pensiero logico, un po' di pazienza e concentrazione ;)

Ho costruito il mio computer, ma non penso che abbia aggiunto la mia capacità di essere un ingegnere del software.Né sapere come costruirne uno ti aiuterebbe a diventare un ingegnere migliore.

Capire come funziona un computer e come il software interagisce con l'hardware è ciò che ti rende un ingegnere migliore.

Solo perché posso inserire una CPU multi-core in una scheda madre non significa che capisco perché i processi paralleli mi aiutano, o cosa significa entrare in una parte critica di una chiamata di funzione.E poiché ha una cache da 4 MB, ciò non significa che io capisca cosa fa la cache e come funziona il paging.

Ci sono molte persone che sanno costruire computer, ma ce ne sono meno che possono progettare software per loro.Se così fosse, gli ingegneri del software guadagnerebbero molto meno di loro.

Se tutto nella serie "Write Great Code" ha senso, allora direi di no, non c'è molto di più che otterrai dalla creazione effettiva di un sistema, per il tuo lavoro.Ora lavorare come tecnico e dover diagnosticare problemi, hardware e software, aumenta la tua capacità di affrontare i problemi e sarebbe di aiuto.Il problema è che non è qualcosa che puoi imparare mettendo insieme un paio di computer per divertimento.Alla fine ti perdi tutte le piccole cose strane che fanno i vari produttori e, se riesci ad applicarle, può aiutarti ad ampliare il tuo quadro generale delle scelte progettuali buone e cattive.

Tendo a pensare che ogni volta che impari qualcosa ed espandi le tue conoscenze e i tuoi orizzonti, è una buona cosa, quindi dirò "sì".

Costruivo i miei computer Windows e Linux prima di unirmi al culto del Mac.Ho imparato un po', non credo che mi abbia reso un programmatore migliore.

Non è però una conoscenza inutile.È come uno chef che sa qualcosa anche di idraulica.La conoscenza non si applica realmente alle tue attività principali, ma può essere utile quando qualcosa va storto.

Modificare:

C'è una grande differenza tra comprendere i fondamenti di come funzionano i computer e metterne insieme uno con parti di Newegg.Una comprensione di come la CPU, la cache e la funzione di memoria hanno un valore inestimabile per la programmazione.Sapere come aggiornare il tuo video è un'abilità utile, ma non aiuta nello sviluppo quotidiano del software.

Sì, ma non nel senso che pensi tu.Penso che sia incredibilmente utile conoscere la progettazione di base del microprocessore, l'architettura della memoria, ecc.Ancora meglio se puoi procurarti un kit di progetto per fare qualcosa di semplice con un PIC o un timbro.Togli di mezzo le astrazioni e impara un po' a livello di bit.Si consiglia inoltre una revisione dei libri rilevanti di Patterson e Hennessy.

Costruire un PC partendo dai componenti è un buon esercizio una tantum, solo per comprendere i problemi di compatibilità delle varie parti.

Come programmatore che ha costruito computer per anni, direi che non mi ha dato un'influenza considerevole sulla qualità o sulla struttura del mio codice, ma ha mi ha dato una buona base su come la qualità del tuo hardware influisce sull'esperienza dell'utente finale nell'esecuzione del codice.

Inoltre, e penso che forse questo sia il vantaggio più grande:costruire il tuo PC ti dà abbastanza conoscenze per dire se un sistema di sviluppo che ti è stato dato come dipendente è buono o meno.Fornire un'opinione informata a una persona IT/manageriale sul motivo per cui il sistema fornito è inferiore può essere la chiave per ottenere un aggiornamento.

Tutto ciò che riguarda la tecnologia su cui lavori direttamente ti aiuterà a migliorare in tutte le attività relative a quella tecnologia.

Conoscere l'hardware del computer ti renderà un programmatore migliore.Potrebbe non farlo direttamente, ma ci saranno casi in cui ti avvantaggerà.

Dipende davvero da quali vuoi che siano le tue abilità.Sarebbe una perdita di tempo armeggiare con l'hardware se vuoi specializzarti in matematica complessa o tipi specifici di software (A.I.Per esempio).

Tuttavia, se vuoi fare cose come costruire robot con una mente propria, dovrai conoscere sia il software che l'hardware.Se vuoi sviluppare giochi, soprattutto come indie o anche da solista, ti verrà richiesto di emulare più lavori e specialità.Che incubo sarebbe se uno sviluppatore indipendente non capisse in che modo l'hardware differenzia i sistemi.

IMO, non puoi definirti un vero nerd se non sai come realizzare sia software che hardware.Quando incontro programmatori che non sanno come installare una scheda grafica, sono indeciso se ridere o piangere.

Naturalmente, non tutti sono abbastanza intelligenti o abbastanza entusiasti della tecnologia da interessarsene al punto da voler sapere come viene creato l’hardware, per non parlare di assemblato e poi programmato.Crescendo, ho imparato a ridere meno spesso degli altri e invece a capire che potrebbero non aver bisogno di conoscere l'hardware mentre si concentrano sul software.Certamente non è un requisito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top