(Translated by https://www.hiragana.jp/)
システムプログラミング言語 - Wikipedia コンテンツにスキップ

システムプログラミング言語げんご

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

システムプログラミング言語げんごとは、システムプログラミングでよく使用しようされるプログラミング言語げんごのことである。このような言語げんごは、システムソフトウェアくために設計せっけいされており、アプリケーションソフトウェア場合ばあいとはことなる設計せっけいアプローチがもとめられる。

システムソフトウェアとは、コンピューターのハードウェアの操作そうさ制御せいぎょのために設計せっけいされたコンピューターのソフトウェアであり、アプリケーションソフトウェアを実行じっこうするためのプラットフォームを提供ていきょうする。システムソフトウェアのカテゴリーとしては、オペレーティングシステムユーティリティソフトウェアデバイスドライバコンパイラリンカなどがある。

機能きのう

[編集へんしゅう]

アプリケーションけの言語げんごとはちがい、システムプログラミング言語げんごは、典型てんけいてきには、物理ぶつりてきなハードウェアへのより直接的ちょくせつてきなアクセス手段しゅだん提供ていきょうする。BCPLは、この意味いみでの典型てんけいてきなシステムプログラミング言語げんごだった。システムプログラミング言語げんごはしばしばビルトインの入出力にゅうしゅつりょくinput/output; I/O)機能きのういていた。かつては、システムソフトウェアが独自どくじ基本きほんてき入出力にゅうしゅつりょくメカニズムを開発かいはつしたり、基本きほんてきなモニタ入出力にゅうしゅつりょくやスクリーン管理かんり機能きのううえつくられることが普通ふつうだったためである。PL/ICPascalなどの言語げんごひろ普及ふきゅうするにつれ、システムプログラミング言語げんごとアプリケーションプログラミングけの言語げんご境界きょうかいはぼやけていった。

歴史れきし

[編集へんしゅう]

コンピュータの黎明れいめいのシステムソフトウェアは、のプログラミング言語げんご存在そんざいしなかったため、アセンブリ言語げんごかれていた。同時どうじに、効率こうりつてきなオブジェクトコードの存在そんざい、コンパイル時間じかん短縮たんしゅく、デバッグのしやすさなどの理由りゆうもあった。FORTRANなどのアプリケーション言語げんごもシステムプログラミングのために使用しようされることがあったが、アセンブリ言語げんごとしてすために追加ついかのルーチンが必要ひつようだった[1]

ちゅうレベル言語げんご

[編集へんしゅう]

ちゅうレベル言語げんごは「こうレベル言語げんごのようなおおくの構文こうぶん機能きのうつが、言語げんごないで(アセンブリ言語げんご同様どうように)機械きかい機能きのうへの直接ちょくせつアクセスも提供ていきょうするもの」である。最初さいしょなかレベル言語げんごは1960ねんごろにBurroughsメインフレームで使用しようされたESPOLである。つぎあらわれたのがNiklaus WirthのPL360であった(もともとBurroughsシステムじょうクロスコンパイラとして実装じっそうされたものである)。PL360は、ALGOL 60の一般いっぱんてき文法ぶんぽうっていたが、かくステートメントはCPUレジスタやメモリを直接ちょくせつ操作そうさするものだった。そのには、MOL-360PL/Sがある。

いちれいとして、よくあるPL360のR9 := R8 and R7 shll 8 or R6というステートメントをげる。このステートメントの意味いみは、「レジスタ8とレジスタ7をandし、その結果けっかを8ビットひだりシフトしたのち、レジスタ6の中身なかみとorし、さらにその結果けっかをレジスタ9に格納かくのうせよ」という意味いみになる[2]

こうレベル言語げんご

[編集へんしゅう]

PL360は、構文こうぶんレベルではアセンブリ言語げんご同等どうとうであったが、よりたかいレベルの構文こうぶんつプログラミング言語げんごでも、システムプログラミングにてきした特定とくてい拡張かくちょうおこなえるものもあった。そのたね言語げんご初期しょきいちれいとしては、LRLTRANがある[3]。この言語げんごは、Fortranに、文字もじとビットの操作そうさ、ポインタ、アドレスの直接ちょくせつ指定していによるジャンプテーブルの機能きのう追加ついかしたものである。

その、C言語げんごのようなプログラミング言語げんご開発かいはつされると、システムソフトウェアをくのに十分じゅうぶん機能きのうのセットが開発かいはつされ、適切てきせつなハードウェアじょう効率こうりつよく実行じっこうできるオブジェクトプログラムを生成せいせいできるコンパイラがつくられるようになった。一般いっぱんに、こうした言語げんごでは、効率こうりつよく実装じっそうできない少数しょうすう機能きのう直接ちょくせつかず、ハードウェアの特定とくてい機能きのうにアクセスする必要ひつようがあるマシン依存いぞん機能きのう使用しようするために、インラインのアセンブリコードがまれる。C言語げんごasmぶんなどは、この目的もくてきでよく使用しようされる。同様どうよう言語げんご数多かずおお開発かいはつされてきたが[4]現在げんざいまでのこっているのはC言語げんごとC++である。

System Programming Language(SPL)という名前なまえHP 3000コンピュータシリーズじょうのプログラミング言語げんごもあった。この言語げんごは、オペレーティング・システムHP Multi-Programming Executiveや、そののシステム・ソフトウェアのパーツをつくるために使つかわれていた。

おもなプログラミング言語げんご

[編集へんしゅう]
言語げんご 設計せっけいしゃ 誕生たんじょうねん 影響えいきょうけた言語げんご 用途ようと
ESPOL Burroughs Corporation 1961 Algol 60 MCP
PL/I IBM, SHARE 1964 Algol, FORTRAN, some COBOL Multics
PL360英語えいごばん Niklaus Wirth 1968 Algol 60 Algol W
C言語げんご Dennis Ritchie 1969 BCPL Most operating system kernels, including Windows NT and most Unix-like systems
PL/S英語えいごばん IBM 196x PL/I OS/360
BLISS Carnegie Mellon University 1970 Algol-PL/I[5] VMS (portions)
PL/8 IBM 197x PL/I AIX
PL-6 Honeywell, Inc. 197x PL/I CP-6
SYMPL英語えいごばん CDC 197x JOVIAL NOS subsystems, most compilers, FSE editor
C++ Bjarne Stroustrup 1979 C, Simula See C++ Applications[6]
Ada Jean Ichbiah, S. Tucker Taft 1983 Algol 68, Pascal, C++, Java, Eiffel Embedded systems, OS kernels, compilers, games, simulations, CubeSat, air traffic control, and avionics
D言語げんご Digital Mars 2001 C++ Multiple domains
Nim Andreas Rumpf 2008 Ada, Modula-3, Lisp, C++, Object Pascal, Python, Oberon OS kernels, compilers, games
Rust Mozilla Research[7] 2010 C++, Haskell, Erlang, Ruby Servo layout engine, Redox OS
Swift Apple 2014 CObjective-CRust macOSiOSけアプリ開発かいはつ[注釈ちゅうしゃく 1]

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]

参考さんこう文献ぶんけん

[編集へんしゅう]
  1. ^ Sammet, Jean (October 1971). “Brief Survey of Languages Used for Systems Implementation”. SCM SIGPLAN Notices 6 (9): 1–19. doi:10.1145/942596.807055. http://dl.acm.org/citation.cfm?id=807055. 
  2. ^ Wirth, Niklaus. PL360, A Programming Language for the 360 Computers. Journal of the ACM, 15(1): 37-74.
  3. ^ Mendicino, Sam F., Robert A. Hughes, Jeanne T. Martin, Frank H. McMahon, John E. Ranelletti, and Richard G. Zwakenberg. The LRLTRAN Compiler. C. ACM 11(11): 747-755.
  4. ^ Poel, W. L. van der, and Maarssen, L. A. Machine oriented higher level languages: proceedings of the IFIP Working Conference on Machine Oriented Higher Level Languages, Trondheim, Norway, August 27–31, 1973. International Federation for Information Processing, 1974.
  5. ^ Wulf, W.A.; Russell, D.B.; Haberman, A.N. (December 1971). “BLISS: A Language for Systems Programming”. Communications of the ACM 14 (12): 780–790. http://dl.acm.org/citation.cfm?doid=362919.362936 January 11, 2014閲覧えつらん. 
  6. ^ C++ Applications”. 2018ねん10がつ2にち閲覧えつらん
  7. ^ Mozilla Research”. 2020ねん6がつ2にち閲覧えつらん

外部がいぶリンク

[編集へんしゅう]

関連かんれん項目こうもく

[編集へんしゅう]

この記事きじは2008ねん11月1にち以前いぜんFree On-line Dictionary of Computingから取得しゅとくした項目こうもく資料しりょうもとに、GFDL バージョン1.3以降いこうの「RELICENSING」(さいライセンス) 条件じょうけんもとづいてまれている。