【初月無料キャンペーン中】gooドクター

低水準言語があるのは、例えば、この人は、これができた。あの人は、これができた。しかし、一つだけできたのでは、意味がないから、それを総称(合併)して、アセンブリ言語という名前になった。で、
アセンブリ言語がなければ、C言語などの高水準言語は、誕生していなかった。という事で、合っていますでしょうか?教えていただけないでしょうか?すみません。

gooドクター

A 回答 (7件)

プロファイルのようなものです。



IPLとかブートストラップローダをはじめとし、OSのカーネルやマイクロコード、チップ内のLUTコードなんかを作ってました。
その世界から言って、高級言語は低級言語がないと作れないのはあたりまえです。

アルファベットなしに文章をどう書け、と言っているようなものですから。

この質問の目的はいったい何なのでしょう。
そして、それを言ってどうしようというのでしょう。
    • good
    • 0

>それを総称(合併)して、アセンブリ言語という名前になった。



話が逆です。
初めに機械命令(2進数の羅列)があって、その命令を文字コード化したアセンブリ言語が用意された。「最初にアセンブリ言語ありき」です。

後に高水準言語が生み出され、機械語やアセンブリ言語を低水準言語と後付けで呼ぶようになったわけです。

-------

アセンブリ言語は、コンピューターのCPUの機械命令(機械語)と1対1に対応した、最もプリミティブなプログラミング言語です。
機械命令の仕様はCPUの機種ごとに違うので、それぞれ専用のアセンブラーが用意されていました。今はCPUの種類も淘汰されたので、主力のCPUを知っていれば、それほど困ることはないと思います。

例:情報処理技術者試験用仮想CPUの命令セット
http://masudahp.web.fc2.com/casl2/casl2100.html

例:IBMメインフレームの命令セット
http://www.arteceed.net/797.html

例:Intel x86系CPUの命令セット
https://tanakamura.github.io/pllp/docs/x8664_lan …

-------

高水準言語は、プログラミングの生産性を高めるために、個々の機械命令に依存しない=記述レベルの高い言語として作られたものです。
アセンブリ言語に比べて、記述レベルが高い=生産性が高い=可読性が高い=メンテナンス性が高い=移植性が高いなどのメリットがあります。

初期の高水準言語、
科学技術計算用のフォートラン(FORTRAN;formula translation)、
事務計算用のコボル(COBOL;common business-oriented language)
などは、今でもスパコンやメインフレームの世界で使われています。

そのほか、ALGOL、PL/I、パソコン用のBASICなども高水準言語です。
C言語はプリミティブな動作も記述できるので、低水準言語に近いとするむきもあります。
Webアプリケーションの記述に使われる JAVA や XML は、さらに記述レベルの高い言語といえます。

-------

アセンブリ言語で記述されたソースプログラムは、アセンブラーによって機械語プログラムに変換されます。

高水準言語で記述されたソースプログラムは、コンパイラーによって機械語プログラムに変換(翻訳)されます。
言語によっては、ソースプログラムを逐次解釈しながら実行するインタプリター方式もあります。初期のパソコンはBASICインタプリタが標準で実装されていました。BASICコンパイラーはオプション。

コンパイラーが生成する機械語やインタプリタ―で実行する機械語は、それなりにオーバーヘッドが大きく、機械命令の実行速度が遲くメモリー容量の少ない昔のコンピューターでは使えないこともありました。

今は桁違いに高速で大容量のコンピューターが当たり前になったので、そういう制約がなくなりました。
生産性が高い=可読性が高い=メンテナンス性が高い=移植性が高いという、高水準言語のメリットをフルに活かせる時代です。

プログラマーがコンピューターのプリミティブな動作の仕組みを知らなくても済む時代ですが、機械組み込みのマイクロプロセッサーのプログラミングには、やはり機械語・アセンブリー言語の知識・技術は必要かと思います。
    • good
    • 0

No.2です。



>では、なぜ低水準言語が存在するのでしょうか?教えていただけないでしょうか?すみません。

存在する理由はと問われると、単純に歴史が古いからです。No.2の回答にも書いた通り、現代では「低水準言語」と呼ばれているアセンブリ言語は、発明された当時は最高水準言語だったのですよ。中学校の社会の授業で楔形文字とか習いませんでしたか?あれと同じノリです。

存在意義はと問われると、表現力が最高だからです。C言語のようなコンパイル言語は機械翻訳のようなもの、PHPのようなスクリプト言語は家電製品の操作手順書(ボタンを押す順序とかが書いてある手順書)みたいなものです。どちらも、その言語で表現可能な処理をコンピュータにさせることはできますが、コンピュータができる全てのことを表現できるわけではありません(正確には、高水準な言語でも表現可能な場合はあるが、著しく可読性の悪いコード(数字の羅列など)を書かなくてはならず、現実的ではない)。特に機器操作部分においてどうしても接続機器に依存した処理があったりして、高水準な言語では表現しきれない処理が必要になることがあります。こういった必要性が生じることを見越して、たとえばIntel系のCPU向けのアセンブリ言語はいまだに消滅しません。
    • good
    • 0

>では、なぜ低水準言語が存在するのでしょうか?



単純な話です。
( 現在のほとんどの)コンピュータが実行できるのは機械語だけだから。
コンピュータがある限り、機械語(と、それのほぼ直訳であるアセンブリ言語)は無くなりません。


例えばPythonを直接実行できるCPUが作られたとしたら、PythonがそのCPUにとっての「低水準言語」になるだけです。
    • good
    • 0

>では、なぜ低水準言語が存在するのでしょうか?教えていただけないでしょうか?すみません。



低水準言語でないと記述できないあるいは、低水準言語で記載するのがふさわしい、「CPUにやらせたい事」があるからでしょう。
    • good
    • 0

コンピュータの世界では、水準の高低は物理装置と人間です。

最低位に物理装置があり、最高位に人間がいます。目的は、人間が物理装置を動かすことですが、物理装置を動かすために何かをしているものが中間にあり、それが物理装置寄りであれば低水準、人間寄りであれば高水準と表現します。

アセンブリ言語は、これができた当時には最高水準言語だったと思います。だって、これまでコンピュータに足し算をさせる命令を数字でしか表現できなかったものを「ADD」と表現することができるようになったのですから、画期的ですよね。

また、アセンブリ言語そのものも、その言語仕様さえ互換性があれば、物理装置すなわちCPUの仕様が多少変わったとしても(たとえばADDが今まで10だったのが20に変わったとしても)、それを解釈するアセンブラさえ対応すれば同じプログラムで新鋭CPUで動くように移植することもやりやすくなります。

アセンブリ言語と比べると高水準なC言語は、コンパイラと呼ばれる、プログラムコードから実行プログラムに変換するプログラムによってコンピュータの命令に直接変換しています(細かい説明は省きますが、たいていの「コンパイラ」と呼ばれるプログラムは、いくつかのプログラムの組になっており、最終的に機械語まで変換してくれます)。実際のところ、ここにアセンブリ言語が介在する必要性はありませんので、アセンブリ言語の上にC言語がある、というわけではありません。たとえばCPUの開発では、まずアセンブラを作る場合もありますが、いきなりCコンパイラを作る場合もあります。

なので、

>アセンブリ言語がなければ、C言語などの高水準言語は、誕生していなかった。という事で、合っていますでしょうか?

は、的外れです。

ちなみに、現代の高水準言語には大きく分けて2種類あり、一つはCPUの命令に直接変換するもの、もう一つはCPU上で動くプログラムに対して間接的に命令を与えるものです。後者は特に「スクリプト言語」と呼ばれることもあります。いずれにしても、低水準な装置を操作するための部分はコンパイラなり、受け取るプログラムなりが肩代わりしていますので、人間から見るとどちらが高水準なのかを意識することはないと思います。

また、「言語」という体系以外に「処理」という体系があり、我々が普通プログラムを作って動かす処理環境は、かなり高水準な部分です。Windowsなどのオペレーティングシステム(OS)は、比較的低水準な位置にありますが、OSの中でも高水準な部分と低水準な部分があります。物理装置を直接操作するプログラムセット(いわゆるドライバ)はOSの中でも低水準な位置にあり、ユーザプログラム(私たちが作るプログラム)から依頼を受けて物理装置への作用に介在する部分(いわゆるAPI)は高水準な位置にあります。
    • good
    • 1
この回答へのお礼

では、なぜ低水準言語が存在するのでしょうか?教えていただけないでしょうか?すみません。

お礼日時:2021/05/28 21:16

フォンノイマン型コンピュータは現在のパソコンの基礎となります。

その構成は、演算装置の CPU があり、主記憶装置のメインメモリと補助記憶装置の SSD/HDD から成り立っています。

CPU で処理するのは機械語です。機械語は、バイナリデータで作られていて、2 進数のロジックで動作し CPU が解釈できるものです。ただし、それでは人間が読みにくいので、扱いやすいようにしたのがアセンブリ(アセンブラ)言語です。

最下流の機械語の近いので、低水準言語と言われていますが、それは CPU 近いという意味であり、決してレベルが低いわけではありません。それは、機械語とほぼ 1:1 に対応しているために、プログラムとしては命令語の羅列であ、人間の言葉にはなっていません。また、どういう処理をしているかを人が判断しなければなりませんので、扱うのは難しいものになっています。

※アセンブラはかなり以前に使っていたことがあります。Z80 で機械制御をしていたころで、デバッグは機械語でパッチを当てて行っていました。当時は、それ程命令も複雑ではなかったので機械語も読め、直接コードを打ち込むこともありましたね(笑)。

それに対して、高級言語とはより人間が理解できるように、整理されているもので、人間の言葉に近付けた命令語で作られています。文章の体系もなるべく判り易いようになっていて、それ故に高級言語と言われています。代表的なものに、C 言語や C++ があります。

※高級言語は、抽象化が進んでいますので、様々なプロットフォームに対応することができます。

人間が作成するプログラムに近い程上流にあるから高級言語、CPU の機械語に近くい位置にある下流の低水準言語、と言う訳です。コンパイラやアセンブラが、高級言語をバイナリに変換してくれますので、現在は殆ど低水準での機械語やアセンブリ言語を扱うことがありませんけれど、デバッグでは関係してくるでしょうね。

プログラミング言語の歴史を解説!よくわかるおすすめ本も
https://tech-camp.in/note/technology/93627/

低級言語と高級言語とその先にあるもの
https://gihyo.jp/dev/serial/01/ll-future/0002
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング