Per anni ho considerato di scavare in quelle che considero linguaggi "di basso livello". Per me questo significa C e assemblaggio. Tuttavia non ho ancora avuto tempo per questo, né è mai stato necessario.
Ora, poiché non vedo sorgere nulla, mi sento come se dovessi o pianificare un punto nel tempo in cui studierò l'argomento o abbandonerò per sempre il piano.
La mia posizione
Negli ultimi 4 anni mi sono concentrato su "tecnologie web", che potrebbero cambiare, e io sono uno sviluppatore di applicazioni, che è improbabile che cambi.
Nello sviluppo di applicazioni, penso che l'usabilità sia la cosa più importante. Scrivi applicazioni da "consumare" dagli utenti. Più quelle applicazioni sono utilizzabili, più valore hai prodotto.
Per ottenere una buona usabilità, credo che le seguenti cose siano valide
- Buon design : funzionalità ben pensate accessibili attraverso un'interfaccia utente ben ponderata.
- Correttezza : il miglior design non vale nulla, se non implementato correttamente.
- Flessibilità : un'applicazione A dovrebbe evolversi costantemente, in modo che i suoi utenti non debbano passare a una diversa applicazione B, che ha nuove funzionalità, che A potrebbe implementare. Le applicazioni che affrontano lo stesso problema non dovrebbero differire nelle funzionalità ma in filosofia.
- Prestazioni : le prestazioni contribuiscono a una buona esperienza utente. Un'applicazione è idealmente sempre reattiva e svolge i suoi compiti in modo ragionevolmente veloce (in base alla loro frequenza). Il valore dell'ottimizzazione delle prestazioni oltre il punto in cui è visibile dall'utente è discutibile.
Penso che la programmazione di basso livello non mi aiuterà in questo, tranne che per le prestazioni. Ma scrivere un'intera app in un linguaggio di basso livello a fini di performance è per me un'ottimizzazione prematura.
La mia domanda
Che cosa potrebbe insegnarmi la programmazione di basso livello, quali altre lingue non mi insegnerebbero? Mi manca qualcosa, o è solo un'abilità, che è di pochissimo uso per lo sviluppo di applicazioni? Per favore, comprendi che non sto mettendo in dubbio il valore di C e dell'assemblaggio. E 'solo che nella mia vita di tutti i giorni, sono abbastanza felice che tutte le complessità di quel mondo siano astratte e gestite per me (principalmente da strati scritti in C / C ++ e assemblaggi stessi). Semplicemente non vedo nessun concetto, potrebbe essere nuovo per me, solo i dettagli con cui dovrei fregarmene la testa. Quindi cosa c'è in esso per me?
La mia conclusione
Grazie a tutti per le loro risposte. Devo dire che nessuno mi ha davvero sorpreso, ma almeno ora sono abbastanza sicuro di abbandonare questa area di interesse fino a quando non ne avremo bisogno.
Per quanto ne so, scrivere assembly in questi giorni per processori come sono in uso nelle CPU di oggi non solo è complicato in modo non necessario, ma rischia di comportare prestazioni di runtime inferiori rispetto a una controparte C. Ottimizzare a mano è quasi impossibile a causa di OOE, mentre non si ottengono tutti i tipi di ottimizzazioni che un compilatore può fare automaticamente. Inoltre, il codice è o portatile, perché usa un piccolo sottoinsieme di comandi disponibili, oppure è ottimizzato, ma probabilmente funziona su una sola architettura.
Scrivere C non è più necessario, come nel passato. Se dovessi scrivere un'applicazione in C, utilizzerei le librerie e le strutture testate e consolidate, che mi risparmierebbero nell'implementare le routine di copia delle stringhe, gli algoritmi di ordinamento e altri tipi di roba che servono come esercizio all'università. Il mio codice sarebbe eseguito più velocemente al costo della sicurezza del tipo. Non sono propenso a cercare di migliorare la ruota nel corso del normale sviluppo di app, né a cercare di eseguire il debug osservando i core dump: D
Attualmente sto sperimentando con linguaggi e interpreti, quindi se c'è qualcosa che vorrei pubblicare, suppongo che porterei un concetto di lavoro in C, anche se C ++ potrebbe anche fare il trucco.
Ancora una volta, grazie a tutti per le vostre risposte e la vostra intuizione.