二種類のレイヤが混ざってる。あと、スクリプト言語のレイヤは要らない。例は突っ込みどころが多すぎるので触れない。
コンピュータ上で動作するもの全て、システム周りの低レベルプログラムを含めてアプリケーションとして括るのはちょっと乱暴。
OSを書いてる人間から見ればユーザープロセスは全部アプリケーションだし、twitterから見たらAPIを叩くものは全てアプリケーションだろう。
基本的には外から持ってきたソフトウェア基盤の上に作るものを総称してアプリケーションと呼ぶのがより実態に近いと思う。
だいたい合ってる。ただ、高級言語より上にあるのは変。スクリプト言語は高級言語に含まれる。
だいたい合ってるが、自然言語云々は余計。例えばS式は自然言語のアナロジーではない。単に比較問題で抽象度が高いかどうかだけの区別でしかない。
OS云々は関係ない。OSもミドルウェアやライブラリーは使う。一般には自分が書いてないソフトウェア・コードをライブラリと呼び、何かと比較してより低いレイヤにあるライブラリをミドルウェアと呼ぶ。
問題ない
ここが一番まずい。まず、中間コードはコンパイラが内部的に処理の段階を分ける仕組みであって、出力ではない。
また、インタプリタはソース言語を逐次実行するのではなく、正確には中間コード(抽象構文木そのもを含む)を逐次実行するものだ。
他のプログラムで実行するコードを生成するものがコンパイラ、自分自身でコードを実行するのがインタプリタ、という区分けがわかりやすいと思う。
ただ、現実的にはインタプリタは内部的にコンパイラを持つし、コンパイラも最適化の過程では内部的にインタプリタを使う。
昨今はLLVMみたいに、コンパイラなのかインタプリタなのかコンテキストによって変わるものもあるので、正直区別しても意味がないと思うけど。