「低級品」(2006/02/04 (土) 01:42:29) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
「高級言語」「低級言語」という言葉があります。
一般にアセンブラ、マシン語などが「低級」とよばれ、コンパイラを使用する言語が「高級」と呼ばれます。
最近では、Javaなどの抽象度の高い言語が「高級」でC言語などは「低級」扱いされることも多いようです。
ちょっと、誤解を招く言葉だと思います。
プログラムの世界で「高級」というのは、「レイヤ(層)が上位にある」という意味です。
「高級言語」とは、
・人間にとってわかりやすい
・CPUに依存した処理を書かなくてよい
・メモリ制御、IO制御等CPUレベルの操作を意識しなくてよい
また「低級言語」とは
・コンピュータにとってわかりやすい(機械語とのセマンティクスギャップが少ない)
・プラットフォーム(CPU)に特有の処理が書ける
・メモリ操作、IO制御等CPUレベルの操作ができる
といった意味で使用されます。(Wikipediaより引用)
同じく、Wikipediaからの引用ですが、
『「高級」の由来はコンパイラなどで直接機械語にするのではなく
一度アセンブリ言語に変換されて、機械語に変換されることがあ
ったため、アセンブリ言語を低級言語、低級言語に変換できる言
語を高級言語と区別したことから。』
決して、「高級」==「いいもの」ではないことがお分かりでしょうか。
単なる、トレードオフの関係でしかないのです。
でも、最近「Javaは高級な言語だから」「C言語なんて低級言語じゃん」なあんて言い方をする人がいます。
本人は偉そうに言ってますが、こういった発言は馬鹿にされるもとなので気をつけましょう(笑)。
例えば、Javaは「仮想マシン」と呼ばれる処理系を間に挟むため、
実行速度、実行メモリといった意味で非常に不利な言語です。
また、環境に依存しないということは逆にある特殊な機器を制御したりするのには向いていません。
このあたりの事情は.net Framework上でのマネージドな言語も同様です。
逆にアセンブラやマシン語などはきめ細かな制御ができますが、機種や環境に依存する、
そもそもターゲットCPUによって命令系統からまるきり異なるなどのマイナス点もあります。
結局、ケースバイケースなんですよね。
私の場合は、C/C++マンセーというわけではないんですけど、
それでもやっぱり高級言語のような書き方もできれば低級言語のようなメモリアドレスの処理もできて
インラインでアセンブラコードを混ぜることすらできてしまうあたり、C/C++って柔軟だと思うんですよね。
その気になったらOSすら記述できてしまうわけで。
JavaはSUMがなくなったら意味ないし。
.netはマイクロソフトがなくなったりWindowsがなくなったらやっぱりあんまり意味がない。
だからVBやC#なんかもちょっとなあ。。
Delpiはまあ、Pascalだからそれなりに生き延びそうだけど
それでもボーランドがなくなったらやっぱやばそう。。
その点ではUNIX/Linuxで標準で使えるC言語って生き残る可能性も高そうだし。
どっかの企業や環境に依存しない(←コードの話ではなく、文法・技術としての話)。
やっぱまだしばらくは、C言語が一番食いっぱぐれがなさそうな気がします。
表示オプション
横に並べて表示:
変化行の前後のみ表示: