Per anni ho considerato di scavare in quelle che considero lingue "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 alcuna necessità, mi sento come se dovessi semplicemente programmare un certo momento in cui studierò l'argomento o abbandonare il piano per sempre.
La mia posizione
Negli ultimi 4 anni mi sono concentrato sulle "tecnologie web", che possono cambiare, e sono uno sviluppatore di applicazioni, che difficilmente cambierà.
Nello sviluppo di applicazioni, penso che l'usabilità sia la cosa più importante. Scrivi applicazioni che devono essere "consumate" dagli utenti. Più queste applicazioni sono utilizzabili, più valore hai prodotto.
Al fine di ottenere una buona usabilità, credo che le seguenti cose siano praticabili
- Buon design : funzionalità ben concepite 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 un'applicazione B diversa, con nuove funzionalità che A potrebbe implementare. Le applicazioni che affrontano lo stesso problema non dovrebbero differire per funzionalità ma per 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 è evidente dall'utente è discutibile.
Penso che la programmazione a basso livello non mi aiuterà, tranne per le prestazioni. Ma scrivere un'intera app in un linguaggio di basso livello per motivi di prestazioni è un'ottimizzazione prematura per me.
La mia domanda
Cosa potrebbe insegnarmi la programmazione di basso livello, quali altre lingue non mi insegnerebbero? Mi sto perdendo qualcosa, o è solo un'abilità, che è di scarsa utilità per lo sviluppo di applicazioni? Per favore, comprendi che non sto mettendo in discussione il valore di C e assembly. È 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 assemblati stessi). Semplicemente non vedo alcun concetto, che potrebbe essere nuovo per me, solo dettagli con cui dovrei riempirmi la testa. Quindi cosa c'è dentro 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 che lascerò cadere quest'area di interesse fino a quando non ne avrà bisogno.
Per quanto ne sappia, scrivere assembly in questi giorni per i processori in uso nelle attuali CPU non è solo inutilmente complicato, ma rischia di tradursi in prestazioni di runtime peggiori rispetto a una controparte C. L'ottimizzazione manuale è quasi impossibile a causa di OOE, mentre non si ottengono tutti i tipi di ottimizzazioni che un compilatore può eseguire automaticamente. Inoltre, il codice è portatile, perché utilizza un piccolo sottoinsieme di comandi disponibili, oppure è ottimizzato, ma probabilmente funziona su una sola architettura.
Scrivere C non è più così necessario, come in passato. Se dovessi scrivere un'applicazione in C, userei altrettanto librerie e framework testati e consolidati, il che mi risparmierebbe l'implementazione di routine di copia di stringhe, algoritmi di ordinamento e altri tipi di cose che servono come esercizio all'università. Il mio codice verrebbe eseguito più velocemente a scapito della sicurezza del tipo. Non sono né entusiasta di reinventare la ruota nel corso del normale sviluppo di app, né di provare a eseguire il debug osservando i dump principali: D
Attualmente sto sperimentando lingue e interpreti, quindi se c'è qualcosa che vorrei pubblicare, suppongo di porterebbe un concetto funzionante su C, anche se C ++ potrebbe anche fare il trucco.
Ancora una volta, grazie a tutti per le risposte e la comprensione.