抽象化 (計算機科学)
コンピューティングの大部分は実世界とは独立している。ハードウェアは計算モデルを実装したものであり、他のモデルとの入れ替えが可能である。ソフトウェアはソフトウェアアーキテクチャで構築され、人間が一時に一部の問題に集中することで巨大なシステムを生み出すことを可能にしている。このようなアーキテクチャは特定の抽象化を選択して利用している。グリーンスパンの10番目の規則は、そのようなアーキテクチャがいかに必然的で複雑であるかを示す格言である。
コンピューティングでの主な抽象化は言語の抽象化である。新たな人工言語はシステムの特定の観点を表現するために開発される。モデリング言語は計画立案を補助する。コンピュータ言語はコンピュータで処理できる。このような抽象化プロセスの例として、プログラミング言語の世代的開発が挙げられる。各世代は次の世代の基盤となった。
プログラム意味論、形式手法、抽象解釈などを論じるとき、抽象化とは観測されたプログラムの動作の定義をより大雑把にかつ安全に検討する作業を意味する。例えば、実行途中の全段階を追うことなく結果だけを検討する場合などである。抽象化とは具体的実行モデルと反対の概念として定義される。
抽象化は、属性が具体的モデルと同じとなるよう属性に関して「正確」または「忠実」でなければならない。例えば、加減算と乗算だけを使った式が n で割り切れるかを知りたければ、n で割り切れる値を全て計算すればよい(この抽象化は九去法と類似の形式である)。
抽象化は必ずしも「正確」である必要はないが、「健全」であることを要求されることもある。つまり、決定不能な結果を生むとしても、抽象化から正当な結果が得られるべきだという意味である。