Penso che uno dei valori dei linguaggi di assemblaggio che spesso viene trascurato è il valore didattico. Sostengo che una lingua assembly è la migliore lingua d'ingresso per qualcuno che non ha mai programmato prima. Perché? Perché è semplice e spoglio. Nell'assembly ci sono fondamentalmente tre elementi: registri, opcode e indirizzi di memoria. Impara come combinare e abbinare questi tre elementi di base e puoi fare molto. Ora prendi C per esempio, per qualcuno che non ha mai codificato prima, C è dannatamente complesso. Sin dall'inizio, hai funzioni, #include
s, macro, strutture e altro. C'è molto da imparare. Vai a un linguaggio di livello superiore come Java e poi hai l'intero concetto di classi e oggetti che devono essere capiti in anticipo. La mia opinione personale è che quando imparo qualcosa di nuovo, preferisco iniziare in piccolo. Questo è il motivo per cui penso che l'assemblaggio sia uno strumento didattico trascurato.
Ora sugli aspetti pratici, quando si ottiene il lavoro di ottimizzazione del codice, c'è anche un valore nella capacità di leggere e comprendere l'assemblaggio. Un sacco di ottimizzazioni riguardano la lettura del codice compilato e la visione del punto in cui il compilatore sta fallendo e di come modificare il codice di livello superiore in modo da consentire al compilatore di generare un codice macchina più veloce.
In particolare sulla programmazione del gioco, se guardi indietro agli anni '80 e '90, c'era un sacco di programmi di assemblaggio in corso su giochi e altri software ad alte prestazioni, principalmente perché era una necessità urgente. La maggior parte dei giochi utilizzava il codice assembly per poter accedere a caratteristiche hardware speciali, come le istruzioni di vettorizzazione come MMX / SSE / AltiVec / etc. Oggi, queste istruzioni di vettorizzazione sono disponibili come intrinseche del compilatore, quindi c'è poco guadagno nella loro scrittura usando assembly.
Un altro problema che sta trascinando i programmatori di giochi dall'assemblaggio è la portabilità. Non molti studios possono permettersi di pubblicare i propri giochi su un'unica piattaforma in questi giorni. È necessario scrivere codice portatile, quindi l'assembly viene utilizzato solo come ultima risorsa.
Le console di ultima generazione come la PS3 vedevano ancora un bel po 'di programmazione degli assiemi, principalmente a causa delle sue caratteristiche hardware speciali a cui non si poteva accedere in nessun altro modo. Ma l'hardware next-gen è molto più vicino ai PC desktop in architettura e prestazioni, quindi ancora una volta, l'assembly sta perdendo spazio lì.