# Michael Abrash

Michael Abrash (1957) è un programmatore statunitense.
È un programmatore e scrittore tecnico specializzato nell'ottimizzazione del codice e nel linguaggio assembly 80x86. Nel 1990 ha scritto il libro Zen of Assembly Language Volume 1: Knowledgee e una colonna mensile sul Dr. Dobb's Journal all'inizio degli anni '90. Un libro successivo, Zen of Graphics Programming, ha applicato queste idee alla grafica 2D e 3D prima dell'avvento degli acceleratori hardware per PC. Sebbene non sia strettamente un programmatore di giochi, Abrash ha lavorato alla tecnologia alla base di giochi, come Quake, per gran parte della sua carriera. Dal 2014 è il capo scienziato (Chief Scientist) di Oculus VR, un marchio di Facebook Technologies, nonché consociata di META Inc.

## Programmatore di giochi

Il suo primo gioco commerciale è stato un clone di Space Invaders pubblicato da Datamost nel 1982 come Space Strike. È stato coautore di diversi giochi con Dan Illowsky, che in precedenza aveva scritto il clone di successo di Pac-Man Snack Attack per Apple II. Abrash e Illowsky hanno lavorato insieme al Cosmic Crusader (1982) simile a Galaxian, al gioco di labirinti Snack Attack II (1982) e al gioco platform Big Top (1983).
Dopo aver lavorato in Microsoft sulla grafica e sul codice assembly per Windows NT 3.1, è tornato nell'industria dei videogiochi a metà degli anni '90 per lavorare su Quake per id Software. Parte della tecnologia alla base di Quake è documentata in Ramblings in Realtime di Abrash, pubblicato sul Dr. Dobb's Journal. Menziona Quake come il suo gioco preferito di tutti i tempi. Dopo il rilascio di Quake, Abrash è tornato in Microsoft per lavorare sulla ricerca sul linguaggio naturale, quindi è passato al team Xbox, fino al 2001.
Nel 2002, Abrash è andato a RAD Game Tools dove ha co-scritto il renderer software Pixomatic, che emula la funzionalità di una scheda grafica DirectX a 7 livelli ed è utilizzato come renderer software in Unreal Tournament 2004. Alla fine del 2005, Pixomatic è stata acquisita da Intel. Durante lo sviluppo di Pixomatic, lui e Mike Sartain hanno progettato una nuova architettura chiamata Larrabee, che fece parte del progetto GPGPU di Intel.
Gabe Newell, amministratore delegato di Valve, ha affermato di aver "cercato di assumere Michael Abrash da sempre. Nel 2011 Abrash si è trasferito in Valve.
Il 28 marzo 2014, tre giorni dopo l'annuncio da parte di Facebook di accordi per l'acquisto della società, la società di cuffie per realtà virtuale Oculus VR ha pubblicato una dichiarazione in cui affermava che Michael Abrash era entrato a far parte della loro azienda come Chief Scientist.

## Scrittore tecnico
### Primi lavori

Michael Abrash è stato editorialista negli anni '80 per una rivista chiamata Programmer's Journal. Questi articoli sono stati raccolti nel libro del 1989, Power Graphics Programming.
Il suo secondo libro, Zen of Assembly Language Volume 1: Knowledge (1990), si è concentrato sulla scrittura di codice assembly efficiente per il processore 8086 a 16 bit, ma è stato rilasciato dopo che la CPU 80486 era già disponibile. Oltre all'ottimizzazione a livello di assembly, il libro si è concentrato sulle parti del sistema che influiscono silenziosamente sulle prestazioni del codice, che ha chiamato "cycle eaters". Un punto chiave di Zen of Assembly Language è che le prestazioni devono sempre essere misurate e il libro includeva lo strumento "Zen Timer" per verificare se le ottimizzazioni teoriche del codice funzionavano effettivamente. Il volume 2 non è mai stato pubblicato.

### Libri del dottor Dobb e successivi

Tra l'inizio e la metà degli anni '90, Abrash scrisse una colonna di programmazione grafica per PC per il Dr. Dobb's Journal chiamata "Ramblings in Realtime". Nel 1991 ha introdotto Mode X, una modalità grafica VGA 320x240 con pixel quadrati invece dei pixel leggermente allungati della modalità 320x200 standard. Allo stesso tempo, ha presentato ai lettori una parte poco nota dello standard VGA che consente di scrivere più pixel contemporaneamente. L'articolo e i suoi follow-up hanno acceso l'interesse tra i programmatori di giochi per PC.
Gran parte del contenuto di Zen of Assembly Language è stato aggiornato in Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit (1994), insieme a nuovo materiale. La presentazione del perfezionamento graduale del programma ha dimostrato empiricamente come la riprogettazione dell'algoritmo potrebbe migliorare le prestazioni fino a un fattore 100. La ricodifica del linguaggio assembly, d'altra parte, può migliorare le prestazioni solo di un fattore 10.
Nel 1997 è stato pubblicato il libro nero di programmazione grafica di Abrash,. Era una raccolta dei suoi articoli del Dr. Dobb's Journal e del suo lavoro sul sottosistema grafico di Quake.