高水準言語とは? わかりやすく解説

こうすいじゅん‐げんご〔カウスイジユン‐〕【高水準言語】

読み方:こうすいじゅんげんご

高級言語


高級言語

読み方こうきゅうげんご
別名:高水準言語
【英】high-level language, high-level programming language

高級言語とは、プログラミング言語のうち、より自然語に近く人間にとって理解しやすい構文概念持った言語総称である。

高級言語は、主に英単語記号などを組み合わせて命令記述しコンパイラインタープリタなどで機械語変換され実行される。より機械語に近い言語記述を行う低級言語低水準言語)と比べて言語理解がしやすく、また汎用性が高いという利点がある。

代表的な高級言語の種類としては、BASICFORTRANCOBOLC言語、C++JavaPascalLispPrologSmalltalkなどがある。現在行われているプログラミング作業は、ほとんどが高級言語によって行われている。

プログラミングのほかの用語一覧
言語分類:  開発言語  会話型言語  機械語  高級言語  コンパイラ型言語  クラスライブラリ  マクロ言語

高水準言語

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/03/10 13:44 UTC 版)

高水準言語(こうすいじゅんげんご、high-level programming language、高級言語とも)とは、機械語アセンブリ言語などの低水準言語に対して、コンピュータハードウェアの詳細から高く抽象化されたプログラミング言語であり[1]、主に1950年代以降に実用化が進んだ。

高水準言語は、レジスタやメモリアドレス、呼び出しスタックといったプロセッサ固有の概念ではなく、変数、配列、オブジェクト、算術式、ブール式関数、ループ、スレッドなどの抽象概念を用いてプログラムを記述する。このような抽象化の程度が、その言語がどの程度「高水準」であるかを定義する[2]

概要

抽象度が高いプログラミング言語という意味で代表的な言語としては、Javaがある。抽象度が比較的低いため議論のある言語としてC言語がある。

高水準言語は、低水準言語と比べ、以下のような特徴を持つ。

  • 人間にとって理解しやすい構文を持つ
  • 特定のプロセッサに依存した処理を書かなくてよい
  • メモリ管理や入出力制御などの低水準操作を自動化、あるいは隠蔽する
  • プログラムの可読性や保守性を高めやすい

一方で、高水準言語の多くは機械語のオペコードに直接対応する言語要素をほとんど持たない。そのため、ソースコードはハードウェアから切り離された形で記述される。プログラマの明示的な記述なしにデータ移動などが行われる場合もある。

歴史

1960年代には、コンパイラを用いる高水準言語を「オートコード」と呼ぶこともあった。代表例としてCOBOLFortranがある。

最初期の高水準言語としては、コンラート・ツーゼにより設計されたプランカルキュールがあるが、当時は実装されなかった。

広く普及した最初期の高水準言語はFortranである。これはIBMのオートコード系言語を発展させ、機械非依存性を高めたものである。

ほぼ同時期に、欧米の研究者によってALGOL系言語(ALGOL 58、ALGOL 60)が開発された。ALGOLは再帰、静的スコープに基づく入れ子関数、値渡しと名前渡しの明確な区別などを導入し、さらにバッカス・ナウア記法(BNF)によって文法を形式的に定義した最初の言語となった。

Lispは完全なラムダ計算に基づく抽象機能を実装した最初期の言語であり、COBOLはレコード構造を広く普及させた。

抽象化の代償

高水準言語は、共通処理の標準化、豊富なデバッグ支援、アーキテクチャ非依存性といった利点を持つ。一方で、低水準言語と比べると、抽象化による性能上の「代償」が存在するとされる。

低水準言語ではハードウェア資源を直接制御できるため、極限的な最適化が可能である。しかし実際には、ユーザー体験レベルで性能差が顕著になることは多くないとする研究もある[3][4]。性能やメモリ制約が厳しい箇所のみをアセンブリ言語で記述し、他を高水準言語で実装する手法も広く用いられている。

また、適切に設計されたコンパイラは、人手によるアセンブリコードと同等、あるいはそれ以上に効率的なコードを生成できる場合もある[5]

相対的概念

「高水準」と「低水準」という分類は本質的に相対的なものであり、ある言語が他の言語より高水準である、あるいは低水準である、と比較される。

例えば、C言語は文脈によって高水準言語とも低水準言語とも見なされることがある。C言語は式評価、引数付き関数、再帰呼び出し、構造体など、アセンブリ言語やプロセッサが直接は提供しない抽象機能を備えている。この点ではアセンブリ言語より高水準である。

一方で、C言語はポインタによるアドレス操作、手動メモリ管理、ビット単位操作など、ハードウェアに近い制御を可能にする。また、ガーベジコレクションや組み込みの文字列型など、より高水準の言語で一般的な機能は標準仕様には含まれていない。そのため、多くの現代的言語と比較すると低水準寄りと位置付けられることもある。

実際、ブライアン・カーニハンデニス・リッチーは『プログラミング言語C』第2版の序文において、Cを「それほど高水準ではない(not a very high level)」言語と述べている[6]

同様に、アセンブリ言語機械語よりは抽象度が高いが、依然として特定のプロセッサ・アーキテクチャに強く結びついている。

さらに、機械語もまた、多くのプロセッサ内部で用いられるマイクロコードやマイクロオペレーションと比較すれば、わずかに高い抽象度を持つといえる[7]

このように、「高水準」「低水準」という区分は絶対的な境界を持つものではなく、対象や比較関係によって変化する概念である。

実行形態

高水準言語のソースコードは、以下のような形で処理される。

コンパイル
コンパイラによりネイティブ機械語、あるいはバイトコードなどの中間表現へ変換される。中間表現は実行時にJITコンパイルされる場合もある。
インタプリタ実行
インタプリタがソースコードまたは中間コードを逐次解釈して実行する。
トランスパイル
他の言語(多くはより低水準の言語)へソースコード変換する。C言語JavaScriptなどが変換先として利用されることがある。
ハードウェア直接実行
まれではあるが、高級言語計算機のように、高水準言語を直接実行対象とするアーキテクチャも存在する。

なお、ある言語が「コンパイル言語」か「インタプリタ言語」かという分類は厳密ではなく、実装方式に依存する。たとえばJavaはバイトコードへコンパイルされ、その後仮想機械上で実行される。

その他

高水準言語とハードウェアとの間には、大きなセマンティックギャップがある。そのギャップを埋めるのがコンパイラインタプリタといったプログラミング言語処理系である。このギャップを縮小するため、過去にはさまざまな試みがなされてきた。

ひとつは、ハードウェアを高水準言語寄りに設計する試みである。例として、1961年のバロース B5000LISPマシンメインフレームにおけるCOBOL命令支援、ARMアーキテクチャのJazelleなどがある(高級言語計算機)。

もうひとつは、コンパイラ技術の高度化である。RISCはハードウェアを単純化し、コンパイラ最適化に重点を置く思想であった。一方で、TRONCHIPのようにコンパイラが利用しやすい複雑命令を備える設計も存在した。

脚注

  1. ^ 高水準言語とは - IT用語辞典”. IT用語辞典 e-Words. 2024年3月14日閲覧。
  2. ^ HThreads - RD Glossary”. 2007年8月26日時点のオリジナルよりアーカイブ。2026年2月22日閲覧。
  3. ^ Kuketayev, Argyn. “The Data Abstraction Penalty (DAP) Benchmark for Small Objects in Java.”. Application Development Trends. 2009年1月11日時点のオリジナルよりアーカイブ。2008年3月17日閲覧。
  4. ^ Chatzigeorgiou; Stephanides (2002). “Evaluating Performance and Power Of Object-Oriented Vs. Procedural Programming Languages”. In Blieberger; Strohmeier (eds.). Proceedings - 7th International Conference on Reliable Software Technologies - Ada-Europe'2002. Springer. p. 367.
  5. ^ Manuel Carro; José F. Morales; Henk L. Muller; G. Puebla; M. Hermenegildo (2006). “High-level languages for small devices: a case study” (PDF). Proceedings of the 2006 International Conference on Compilers, Architecture and Synthesis for Embedded Systems. ACM.
  6. ^ Kernighan, Brian W.; Ritchie, Dennis M. (1988). The C Programming Language: 2nd Edition. Prentice Hall. ISBN 9780131103627. オリジナルの25 October 2022時点におけるアーカイブ。. https://web.archive.org/web/20221025180501/https://books.google.com/books?id=FGkPBQAAQBAJ 2022年10月25日閲覧。 
  7. ^ Hyde, Randall. (2010). The art of assembly language (2nd ed.). San Francisco: No Starch Press. ISBN 978-1-59327-301-9. OCLC 635507601. https://books.google.com/books?id=sYHtTvQ-ObIC 

関連項目


高水準言語

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/01/15 15:17 UTC 版)

NOP」の記事における「高水準言語」の解説

NOPという表現はしばしば、何も起こさないような関数コード指して使われることがある (この場合冗長コード呼ばれることもある)。コンパイラ最適化では、このようなコード検出し削除する(オブジェクトサイズの削減といった直接的な効果があり、コードキャッシュが無駄に使われるのを回避するという副次的効果もある)。 プログラミング言語構文によっては、何もないことが許されないため、NOPのようなものが必要な場合がある。次に例を示す。

※この「高水準言語」の解説は、「NOP」の解説の一部です。
「高水準言語」を含む「NOP」の記事については、「NOP」の概要を参照ください。

ウィキペディア小見出し辞書の「高水準言語」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「高水準言語」の関連用語

高水準言語のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



高水準言語のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2026 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【高級言語】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの高水準言語 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのNOP (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2026 GRAS Group, Inc.RSS