人間からコンピュータ言語への翻訳
現代のコンピュータは非常に複雑であり、生産的にプログラムするためには、さまざまな抽象化が必要です。 アセンブラ、コンパイラ、リンカなどのプログラミングツールは、人間が書いたり読んだりできるソース言語から、コンピュータが実行できるビットやバイトにプログラムを変換します。
これらのプログラムは、人間が実行すると時間がかかり、エラーを起こしやすいにもかかわらず、多くのよく定義された反復的なタスクを実行します。一方、最適化コンパイラは、プログラムの実行速度やその他の特性を向上させるためにソースコードに複雑な変換を実行できます。
プログラムの情報を人間が利用できるようにする
ソフトウェアは非常に複雑なので、最も経験のあるソフトウェア開発者であっても、ほとんどのプログラムを一目で理解することは不可能です。
たとえば、デバッガを使うと、プログラマは実行中のプログラムに関する情報を、それをプログラムするために使われたソース言語の観点から抽出することができます。 メモリデバッガは、実行中のプログラムの疑わしいメモリアクセスや明らかに誤ったメモリアクセスを直接指摘することができます。