目次
83 関係: Ada、ARMアーキテクチャ、Atmel AVR、多言語、字句解析、実装、並列化、互換性、マクロ (コンピュータ用語)、マサチューセッツ工科大学、ネスティング、バッファオーバーフロー、ライブラリ、リチャード・ストールマン、リーナス・トーバルズ、ループ (プログラミング)、プログラミング言語C、フリーソフトウェア財団、フロントエンド、ベクトル化、アセンブリ言語、インラインアセンブラ、インテル、オペレーティングシステム、クロスプラットフォーム、コンパイラ、コンパイラ最適化、コード生成、スレッド (コンピュータ)、Bison、Blackfin、C++、C99、C言語、Clang、Cygwin、米国国家規格協会、組み込みオペレーティングシステム、D言語、DOSエクステンダ、静的単一代入、複素数、自由ソフトウェア、Fortran、FreeBSD、GFortran、GNAT、GNU、GNU Compiler for Java、GNU General Public License、... インデックスを展開 (33 もっと) »
- 1987年のソフトウェア
- Cコンパイラ
- Java開発ツール
- UNIXプログラミングツール
- コンパイラ
Ada
Ada(エイダ)は、構造化・静的型付け・命令型・オブジェクト指向のパラダイムを持つ汎用プログラミング言語の一つである。構文はAlgol系である。 史上初のプログラマとされるエイダ・ラブレスの名前にちなんでAdaと命名されている。ADAと表記するのは誤り。 フリーのコンパイラとしては、GNATなどがある。
ARMアーキテクチャ
ARMアーキテクチャ(アームアーキテクチャ) とは、ARMホールディングスの事業部門であるARM Ltd.により設計・ライセンスされているアーキテクチャである。組み込み機器や低電力アプリケーションからスーパーコンピューターまで様々な機器で用いられている。
Atmel AVR
PDIP. AVR(AVR)は、Atmel社が1996年に開発した、RISCベースの8ビットマイクロコントローラ(制御用IC)製品群の総称である。2016年以降はMicrochip社によって製造・販売されている。
多言語
多言語で書かれたインドの紙幣 多言語(たげんご、multilingual)とは、複数の言語が並存すること。また、一個の人間、国家、社会、文書、コンピュータ、ウェブサイトやソフトウェアなどが、複数個の言語に直面したり対応したりすること。多重言語ともいう。 複数の言語を使用可能な人間を、多言語話者、マルチリンガル、ポリグロットと呼ぶ。人間は6言語以上の習得から難易度が高くなり、11言語以上の話者をハイパーポリグロット(Hyperpolyglot)と呼ぶ。
字句解析
計算機科学における字句解析 (じくかいせき、) とは、ある言語で書かれた文について、その文字の並びを解析し、言語的に意味のある最小の単位(トークン)に分解する処理のことIT用語辞典 e-words【字句解析】。
実装
実装(じっそう、implementation)とは、何らかの機能(や仕様)を実現するための(具体的な)装備や方法のこと。
並列化
並列化(へいれつか、parallelization)は、コンピュータにおいて、同時に複数の演算処理を実行すること(並列計算)によって処理のスループットを上げるプログラミング手法である。対義語は逐次化(serialization)。ハードウェアの資源を有効活用するための最適化手法のひとつである。
互換性
互換性(ごかんせい、)とは、ある部品やコンポーネント(構成要素)などを置き換えても同様に動作させることができる性質のこと。 特に工業製品では、互換性を確保することで新たなシステムを用意する必要がなくなり、設計や部品の再利用性が高まることでコストカットを見込めることや、過去の製品からの買い替えなどを進めることができたりする。ただし、古に縛られてしまうために技術革新の妨げとなるという側面もある。互換性を確保するために余計なコストがかかる場合は軽視されることがあるほか、メーカー間の互換性はベンダーロックインを狙うため、あえて削ぐものもある。
マクロ (コンピュータ用語)
マクロ (macro) あるいはマクロ命令 (macroinstruction) は、計算機科学の分野では、アプリケーションソフトウェアの自動操作のような、プログラミング言語での記述と比較して粒度が大きい処理を記述したり、テキストを別のテキストに置換したり、粒度が大きい命令を粒度の小さい命令(マイクロ命令)に変換したりするための規則または型のこと。マクロを記述するコンピュータ言語をマクロ言語と言う(言語の無いマクロ機能もある)。また、テキスト等の変換を記述する言語は変換言語と呼ばれる。マクロは「大きい」「巨大な」という意味。 この記事と、マクロ言語の記事は、それぞれに書くべき内容と書かれている内容が混乱している。また以下の内容のいくつかは変換言語についてのものである。
見る GNUコンパイラコレクションとマクロ (コンピュータ用語)
マサチューセッツ工科大学
マサチューセッツ工科大学(マサチューセッツこうかだいがく、Massachusetts Institute of Technology、MIT)は、アメリカ合衆国マサチューセッツ州ケンブリッジに本部を置く私立工科大学。 1865年に設置されたアメリカを代表する名門校のひとつで、コンピューターサイエンスや半導体開発、IT技術、電子工学など先端技術分野で画期的な研究が数多く行われた。歴代のノーベル賞受賞者は101人と、工科大学としては世界最多。MITメディアラボなど51の研究機関を擁する。 最も古く権威ある世界大学評価機関の英国Quacquarelli Symonds (QS) による世界大学ランキングでは、2013年版以来2025年版まで、ハーバード大学やケンブリッジ大学等を抑えて13年連続で世界第一位という記録的な偉業を達成している。その他の各種ランキングでも長年にわたって最上位グループに位置しており、学部の合格率 4.8% は全米最難関に属する。
見る GNUコンパイラコレクションとマサチューセッツ工科大学
ネスティング
構造化プログラミングにおけるネスティング(Nesting)、ネスト、入れ子とは、プログラムの構造が再帰的に繰り返されて記述されること。このような構造をネスト構造(Nested structure)、入れ子構造と呼ぶ。この記事ではC言語風の擬似コードを用いるが、ネスティングの概念はC言語に限らない。また、名前空間などC言語にない機能についても記述している。
バッファオーバーフロー
バッファオーバーフロー(buffer overflow)またはバッファオーバーラン(buffer overrun)は、コンピュータのプログラムにおけるバグのひとつ、またはそれにより引き起こされる現象で、プログラムがバッファに割り当てられた空間よりも大きなデータを書き込むことで、データがバッファ境界からあふれ、バッファの範囲外のメモリを上書きし、元々そのメモリにあったデータを破壊してしまうことを指す。 バッファオーバーフローは、上書きされるメモリ領域がスタック領域なのかヒープ領域なのかに応じてそれぞれスタックベースのバッファオーバーフロー、ヒープベースのバッファオーバーフローと呼ばれる。なお、名称が似ているスタックオーバーフローとは別の現象である。
ライブラリ
ライブラリ()は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶときは、それ単体ではプログラムとして動作させることはできない、つまり実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言える。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイブツール(アーカイバ)でひとまとめにして利用する。図書館()と同様にプログラム(算譜)の書庫であるので、索引方法が重要である。 また、ソフトウェア以外の再利用可能なものの集合について使われることもある(音声データなど)。
リチャード・ストールマン
リチャード・マシュー・ストールマン(Richard Matthew Stallman、1953年3月16日 - )は、アメリカ合衆国のプログラマー、フリーソフトウェア活動家。コピーレフトの強力な推進者として知られ、現在にいたるまでフリーソフトウェア運動において中心的な役割を果たしている。また、プログラマーとしても著名な存在であり、開発者としてその名を連ねるソフトウェアにはEmacsやGCCなどがある。なお、名前の頭文字を取って RMS と表記されることもある。
見る GNUコンパイラコレクションとリチャード・ストールマン
リーナス・トーバルズ
リーナス・ベネディクト・トーバルズ(Linus Benedict Torvalds、1969年12月28日 - 、)はフィンランド、ヘルシンキ出身のアメリカ合衆国のプログラマ。Linuxカーネルを開発し、1991年に一般に公開した。その後も、公式のLinuxカーネルの最終的な調整役(もしくは「優しい終身の独裁者」)を務める。 アンドリュー・タネンバウムが開発したカーネルとオペレーティングシステム (OS) であるMINIXに刺激を受け、自宅のパーソナルコンピュータ上で動作可能なUNIX OSの必要性を感じ、自分の趣味の時間と自宅の設備でLinuxカーネルの初期の開発を行った。
ループ (プログラミング)
この記事では、コンピュータプログラムにおけるループ (loop) について説明する。ループとは、特定の条件下において特定の処理を繰り返すこと、あるいはそのように作られた制御構造のことを言う。日本語の名詞として「繰り返し」とも。特定の条件が成立している限り、特定の処理を繰り返し何度でも実行する。逆に言えば、条件が成立しなくなったときに、処理を中止する。 ループの、特別な形あるいは最も一般的な形として、無条件に繰り返す無限ループがある。詳細は無限ループの記事を参照。 ループは、繰り返しを継続するかどうかを判断するための条件式(反復条件)を持つ。反復条件がループ構造の始まりに置かれる場合、そのようなループ構造のことを前判定ループと呼ぶ。一方、反復条件がループ構造の後ろに置かれる場合、これを後判定ループと呼ぶ。しかし結局のところ以上のような分類は、プログラミング言語の発展の初期に、まず最初にどちらか片方だけが作られ、後から別のものが追加されたという歴史的由来に過ぎず、ループの「内側」のどこかに「ループの脱出」がある、という構造に一般化できるので前判定/後判定という分類は本質ではない(実際に、たとえばVisual Basicの「Do...Loop 文」は、どの場合にも対応するよう対称的に作られている)。単にその「内側のどこか」が、その前端か後端にある場合が多い、というだけである。
見る GNUコンパイラコレクションとループ (プログラミング)
プログラミング言語C
『プログラミング言語C』(原題:The C Programming Language)は、ブライアン・カーニハン (Brian W. Kernighan) とデニス・リッチー (Dennis M. Ritchie) によって書かれたC言語についての書籍である。著者名の頭文字からしばしばK&Rと略される。 初版は1978年に出版され、C言語が標準化されるまでの間リファレンス的な扱いを受けていた。1988年の第2版ではANSIでの標準化 (C89) を反映して大幅に変更されている。 日本語訳は初版・第2版と訳書訂正版とも石田晴久。C Magazine創刊号の石田のインタビューによると、初版は某企業がC言語講座事業を行うにあたり、許可を取らずに勝手に翻訳していたものを貰い受けそれを下訳として翻訳を行なったという。
フリーソフトウェア財団
フリーソフトウェア財団(フリーソフトウェアざいだん、Free Software Foundation, Inc., 略称FSF)とは、1985年10月4日、リチャード・ストールマンにより創設された非営利団体である。当団体は、フリーソフトウェア運動、すなわち、コンピュータ・ソフトウェアを作成、頒布、改変する自由をユーザーに広く遍く推し進めることを狙い、コピーレフトを基本とする社会運動の支援を目標に掲げている。
フロントエンド
フロントエンド(front-end)とバックエンド(back-end)は、プロセスの最初と最後の工程を指す一般的用語である。フロントエンドは各種入力をユーザーから収集し、バックエンドが使える仕様に合うようにそれを加工する。フロントエンドとバックエンドの結合部はインタフェースと呼ばれる。
ベクトル化
ベクトル化(ベクトルか、)。
アセンブリ言語
モトローラ MC6800 のアセンブリ言語のソースコード アセンブリ言語(アセンブリげんご、assembly language、アセンブリ)はビット列命令に対応した文字列命令を利用する低水準プログラミング言語の総称である"ニモニックによって表したプログラムをアセンブリ言語(assembly language)プログラムと呼ぶ。" 伊藤..
インラインアセンブラ
インラインアセンブラ()は、主にC言語やC++などで書かれたプログラムの中にアセンブリ言語によるプログラムを埋め込むことができるようにする、コンパイラの機能であるIT用語辞典バイナリ【インラインアセンブラ】。
インテル
インテル(Intel CorporationBritannica, Intel)は、世界最大手の中央処理装置(CPU、MPU)および半導体素子のメーカー。 本社をカリフォルニア州サンタ・クララに置いている。社名の由来は(集積されたエレクトロニクス)。
オペレーティングシステム
オペレーティングシステム(operating system、略称:OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)を司るシステムソフトウェアである。
見る GNUコンパイラコレクションとオペレーティングシステム
クロスプラットフォーム
クロスプラットフォーム(cross-platform)とは、異なるプラットフォーム(例えばPC/AT互換機とMacintosh、あるいはWindows・macOS・FreeBSD・Linuxなどのように、仕様が全く異なる機械(ハードウェア)またはオペレーティングシステム)上で、同じ仕様のものを動かすことが出来るプログラム(ソフトウェア)のことを言う。同様の呼称にマルチプラットフォームmulti-platformがある。 また、家庭用ゲームにおいては「クロスプラットフォーム」と「マルチプラットフォーム」で意味が異なる場合がある。本項ではこのケースについても後述する。
コンパイラ
コンパイラ(compiler)は、高水準言語で書かれたコンピュータプログラムを、 コンピュータが実行や解釈できる形式に、一括して(※(※)コンパイラの定義文にわざわざ「一括して」という言葉を含めることが多いのは、インタプリタと対比するためである。「一括して」を入れないとインタプリタまで含んでしまい、定義文としては落第点ものとなる。Merriam Websterの英文の定義文でも、やはり「translates an entire set of instructions」と、「命令群(の一部分ではなく)全部を」と明記している。 )変換するソフトウェア。
コンパイラ最適化
コンパイラ最適化(コンパイラさいてきか、Compiler optimization)では、コンピュータ・プログラムの最適化に関する話題のうち、もっぱらコンパイラに関係するものに関して説明する。最も一般的な要求はプログラムの実行時間を最小化することであり、その次に使用するメモリ量を最小化することである。また、携帯可能なコンピュータが増えるにつれて、消費電力を最小化するという最適化も生まれてきた。 一部のコード最適化問題はNP完全問題であることが示されている。実際には、プログラマがコンパイラによる最適化の完了を待てる時間の上限なども考慮してコンパイラ最適化を実装する(最適化はCPU時間とメモリを多大に使用する)。かつては、コンピュータのメモリ実装量も実行できる最適化を制限する要因だった。
コード生成
コード生成(Code Generation)とは、コンパイルの最終段階であり、ソースコードの意味が実現された目的コードを生成する過程である。「何らかの目的コード」が具体的には、機械語である場合もあれば、アセンブリ言語である場合もあれば、バイトコードや、場合によっては「ソースコード側が比較すれば高水準であるのに対して低水準な側であると言える言語(例えばC言語など)」ということもある。同程度の水準の言語間の変換を指すトランスパイルなどという語も近年はできた。
スレッド (コンピュータ)
スレッド(thread)とは、コンピュータプログラムにおいて特定の処理を行うための一貫性のある命令の流れのことであり、プロセッサ利用の最小単位。プロセスは少なくとも1つ以上のスレッドを含む。一般的に各プロセスには独立した仮想アドレス空間が割り当てられるが、プロセス内のスレッド群はアドレス空間を共有する。そのためプログラムを実行するときのコンテキスト情報が最小で済み、同じプロセス内でスレッドを切り替える際はアドレス空間の切り替えが不要となるので、切り替えが高速になる。スレッドは、thread of execution(実行の脈絡)という言葉を省略したものである。複数のスレッドを生成して個々に処理を割り当てて実行させることで、並行処理による応答性の向上などを実現でき、さらにマルチコアプロセッサを複数のスレッドによって活用することで、並列処理による実行時間の短縮などを実現できる(これらの手法をマルチスレッドプログラミングと呼ぶ)。
見る GNUコンパイラコレクションとスレッド (コンピュータ)
Bison
Bison(バイソン)とは構文解析器を生成するパーサジェネレータの一種であり、CコンパイラとしてのGCCのサポートのために開発されたフリーソフトウェアである。
Blackfin
Blackfin は、デジタルシグナルプロセッサ(DSP)機能を組み込んだ16/32ビットマイクロプロセッサファミリであり、小型で省電力のマイクロコントローラとして使われている。オペレーティングシステムを動作させ、同時にH.264ビデオエンコーディングのような複雑な数値的タスクを並行して行う、低消費電力の統合プロセッサアーキテクチャである。 開発キットがいくつか存在し、Linuxもサポートされている。現在は、アナログ・デバイセズが製造している。
C++
C++(シープラスプラス)は、汎用プログラミング言語のひとつである。派生元であるC言語の機能や特徴を継承しつつ、表現力と効率性の向上のために、手続き型プログラミング・データ抽象・オブジェクト指向プログラミング・ジェネリックプログラミングといった複数のプログラミングパラダイムが組み合わされている。C言語のようにハードウェアを直接扱うような下位層向けの低水準言語としても、複雑なアプリケーションソフトウェアを開発するための上位層向け高水準言語としても使用可能である。アセンブリ言語以外の低水準言語を必要としないこと、使わない機能に時間的・空間的コストを必要としないことが、言語設計の重要な原則となっている。
C99
C99は、ISOで定められたC言語の規格である。正式な規格名は ISO/IEC 9899:1999。
C言語
C言語(シーげんご、C programming language)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発した汎用プログラミング言語である。英語圏では「C language」または単に「C」と呼ばれることが多い。日本でも文書や文脈によっては同様に「C」と呼ぶことがある。制御構文などに高水準言語の特徴を持ちながら、ハードウェア寄りの記述も可能な低水準言語の特徴も併せ持つ。基幹系システムや、動作環境の資源制約が厳しい、あるいは実行速度性能が要求されるソフトウェアの開発に用いられることが多い。後発のC++やJava、C#など、「C系」と呼ばれる派生言語の始祖でもある。 ANSI、ISO、またJISにより言語仕様が標準規格化されている。
Clang
Clang (:クランのように発音) は、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのである。OpenMPディレクティブや、OpenCL C/C++カーネル言語も正式サポートしている。バックエンドにLLVMのコンパイラ基盤を使用しており、LLVM 2.6以降はLLVMのリリースサイクルに組み込まれている。 Clang/LLVMベースの派生プロジェクトとして、、CUDAのNVCC、のHIP-Clangといった、Cライクなドメイン固有言語 (DSL) を組み込んだGPGPUフレームワークにおけるコンパイラフロントエンドとしても採用されている。 プロジェクトの目標は、GNUコンパイラコレクション (GCC) を置き換えることのできるコンパイラを提供することである。開発は完全にオープンソースの方法で進められており、Apple、Microsoft、Google、ARM、ソニー、インテル、AMDなどの大企業も貢献者となっている。ソースコードは、イリノイ大学/NCSAオープンソースライセンスで提供されている。バージョン9.0.0からはライセンスがLLVM例外付きApache License 2.0に変更された。
Cygwin
Cygwin(シグウィン)は、Windows OS上にUNIXライクな環境を提供する互換レイヤーで、フリーソフトウェアである。WindowsでUNIXのソフトウェア資産を活かすことが可能となる。 ゲストOSが不要でハードウェアの仮想化も行わないため煩雑な作業も無く軽量に動作する。X Window Systemにも対応しGUIアプリも動作する。 似たようなWindows上で動くソフトウェアとして、Mingw-w64/MSYS2が存在する。
米国国家規格協会
は、アメリカ合衆国の国内における工業分野の標準化組織であり、公の合意形成のためにさまざまな規格の承認を担っている。 米国国家規格協会そのものは規格を作成せず、SDOsと呼ばれる280以上の規格開発団体の作成した規格を認定して承認する機関が米国国家規格協会であり、認定された規格は米国国家規格(ANSI規格)として認定される。 略称はANSI(アンシ、アンジ、アンシー)。訳は米国国家標準協会とも。また、元は旧称 (ASA) の訳だった米国規格協会・米国標準協会とも呼ばれる。本部はワシントンD.C.にあるが、事務局はニューヨークにある。 電子工業会 (EIA)、電気通信工業会 (TIA) などの国内規格作成団体による仕様を承認し、ANSI規格とする。
組み込みオペレーティングシステム
組み込みオペレーティングシステム(くみこみオペレーティングシステム)は、組み込みシステムのオペレーティングシステムである。リアルタイムオペレーティングシステムでもあることが多い。 代表的なものにITRON、VxWorks、LynxOS、QNX、Enea OSEなどがある。近年はLinuxカーネルなど汎用のOSのカスタマイズ版を使うことも多い。
見る GNUコンパイラコレクションと組み込みオペレーティングシステム
D言語
D言語(ディーげんご、D programming language)は、プログラミング言語のひとつ。C言語をベースとしABI互換を保ちつつも、テンプレートによるジェネリックプログラミングやオブジェクト指向プログラミング、関数型プログラミングなどをサポートするマルチパラダイムプログラミング言語である。
DOSエクステンダ
DOSエクステンダ(ドスエクステンダ)とは、MS-DOSなどのオペレーティングシステムを拡張するためのプログラムのことであり、アプリケーションプログラムの操作・実行環境である。
静的単一代入
静的単一代入(せいてきたんいつだいにゅう、Static Single Assignment form, SSA)形式は、コンパイラ設計における 中間表現 (IR) のひとつで、各変数が一度のみ代入されるよう定義されたものである。もともとの中間表現における変数は「バージョン」に分割され、全ての変数の定義がバージョンを表現できるよう、通例新たな変数は元の名前に添え字を付けて表現される。SSA ではuse-def 連鎖が明示的であり、連鎖は要素を一つだけ持つ。 SSA はRon Cytron、Jeanne Ferrante、Barry Rosen、Mark Wegman、Ken Zadeck および IBM の研究者たちにより1980年代に開発された。
複素数
2。
自由ソフトウェア
自由ソフトウェア(じゆうソフトウェア、)See とは、ユーザーがどのような目的に対しても実行することを許可し、また、プログラムについて研究したり、変更したり、それを配布したりする自由も認めることを条件として配布されるコンピュータソフトウェアのことである (gnu.org)。自由ソフトウェアには、プログラムの対価として支払った価格とは無関係に、ユーザーが(個人で、あるいは、コンピュータプログラマーと協力して)ソフトウェアのコピーを用いて、自身が望むことを(自由ソフトウェアを用いて利益を獲得することを含めて)する自由が存在するということである (gnu.org)。コンピュータプログラムが自由であるとみなされる必要十分条件は、本質的には(開発者のみではなく)すべてのユーザーに第一にプログラムをコントロールする権利があるということであるとされる。したがって、ユーザーが所有する装置が「自由」であるためには、プログラムによって何が行われるのかを、ユーザーが本質的にはコントロールできなければならない。
Fortran
1956年に発行された最初のFortran解説書『The Fortran Automatic Coding System for the IBM 704』 Fortran(フォートラン)は科学技術計算に向いた手続き型プログラミング言語。1954年にIBMのジョン・バッカスが考案したコンピュータ用で世界最初の高水準言語であり、その後も改訂されて使用されている。
FreeBSD
FreeBSD(フリービーエスディー)は、フリーでオープンソースのUnix系オペレーティングシステム (OS) である。Research UnixをベースにしたBerkeley Software Distributionに由来しており、最初のバージョンは1993年にリリースされた。2005年には、FreeBSDは最も人気のあるオープンソースのBSDオペレーティングシステムとなり、単純に寛容にライセンスされたBSDシステムのインストール数の4分の3以上を占めていた。 FreeBSDはLinuxと似ているが、 範囲とライセンスに2つの大きな違いがある。すなわち、Linuxはカーネルとデバイスドライバのみを提供し、システムソフトウェアをサードパーティーに頼っているのに対し、FreeBSDはカーネル 、 デバイスドライバ 、 ユーザーランドユーティリティ、およびドキュメントといった完全なシステムを維持している。FreeBSDのソースコードは通常、寛容なBSDライセンスでリリースされており、Linuxで使われているコピーレフトのGPLとは対照的である。
GFortran
GFortran(ジーフォートラン)またはGNU Fortranは、GNU Fortran compilerの名前であり、GNUコンパイラコレクション (GCC) の一部である。Fortran 95を完全にサポートしており、Fortran 2003 と Fortran 2008 の一部もまた実装されている。バージョン4.5までのOpenMPマルチプラットフォーム共有メモリマルチプロセッシングをサポートしている。Gfortranはまた、g77でサポートされているほとんどの言語拡張やコンパイルオプションと互換性があり、Fortran言語の他の多くの一般的な機能拡張と互換性がある。 GFortranは2003年1月にG95から枝分かれし、2005年4月にリリースされたGCC version 4.0.x以降、古いg77コンパイラを置き換える形で開発された。GCCの開発者によれば、二つのコードベースは現在、全く異なっている。2010年以降、フロントエンドはGCCプロジェクトの他の部分と同様にC++に移行されたが、以前はCで書かれていた。
GNAT
GNAT(グナット)は、GCCの一部であるAdaコンパイラ をいう。フロントエンドやランタイム自体もAdaで実装されている。GNATという名称の由来は、当初GNATがAdaからCへのトランスレータとして開発されたため、GNU NYU Ada Translatorと呼称されたためである。 GNATプロジェクトは、Ada 9Xの標準化過程を助成するため、米空軍がニューヨーク大学 (NYU) に対して、1992年よりオープン・ソースのAdaのコンパイラ開発を委託したことに端を発している。同契約では、開発のすべてがGNU GPLであることを要求していた。 1994年には、GNATの開発を継続し商用サポートを行うため、Ada Core Technologies社が設立された。この頃よりフロントエンドがAdaで再実装され、GCCの中間形式を生成するコンパイラとなった。なお、GNATの最初の公式コンパイラ検証は、1995年に通過した。
GNU
GNU(グヌー、)とはオペレーティングシステム であり、かつコンピュータソフトウェアの広範囲に渡るコレクションである。GNUは完全にフリーソフトウェアから構成されている。 GNUは"GNU's Not Unix!"(「GNUはUNIXではない」)の再帰的頭字語である。この名称が選ばれたのは、GNUはUnix系の設計ではあるがUNIXとは違いフリーソフトウェアでありUNIXに由来するソースコードを全く使っていないことを示すためである。GNUの正式な発音は「グヌー」である。一般的な英語では、gnuは「ヌー」と発音し、ウシカモシカまたはヌーと呼ばれる動物をさす言葉である。GNUプロジェクトは自らの名称の呼び方について「it is pronounced g-noo, as one syllable with no vowel sound between the g and the n.(gとnの間に母音がない1音節として、g-nooと発音する)」と要請している。
GNU Compiler for Java
GNU Compiler for Java(グニュー・コンパイラ・フォー・ジャバ、GCJ、ジーシージェー)はJavaのためのフリーなコンパイラで、GCCの一部である。Javaソースコードをコンパイルし、Java仮想マシンのJavaバイトコードまたは機械語を出力する。また、バイトコードを格納したJavaクラスファイルや、それらを格納したJAR全体をマシン語にコンパイルすることも出来る。GCJで使用されるほとんど全てのランタイムライブラリはGNU Classpathプロジェクトに由来する。 AWTとSwingの2つのグラフィカルAPIをGNU Classpathにサポートさせることに現在多くの労力が投入されている。AWTとSwingの両方のフルサポートは間近であり、AWT/Swingアプリケーションを実行するためにサン・マイクロシステムズから提供されたランタイムを使用する必要性は遠からずなくなる見通しである。
見る GNUコンパイラコレクションとGNU Compiler for Java
GNU General Public License
GNU一般公衆ライセンス(GNU General Public License、GNU GPLまたは、単にGPL) とは、GNUプロジェクトのためにリチャード・ストールマンにより作成されたフリーソフトウェアライセンスである。八田真行の日本語訳ではGNU 一般公衆利用許諾書と呼んでいる。現在、GNU公式サイト日本語ページではGNU一般公衆ライセンスと表記されている。
見る GNUコンパイラコレクションとGNU General Public License
GNUプロジェクト
GNUプロジェクト(グヌープロジェクト、)とは、フリーソフトウェアのマス・コラボレーションなプロジェクトである。 プロジェクトは1983年9月27日にMITのリチャード・ストールマンにより発表された。このプロジェクトの狙いは、ユーザーが自由にソフトウェアを実行し、(コピーや配布により)共有し、研究し、そして修正するための権利に基づいたソフトウェアを開発し提供することにより、ユーザーにそのような自由な権利を与えた上でコンピュータやコンピューティングデバイスの制御をユーザーに与えることにある。GNUのソフトウェアはこれらの自由な権利を(そのライセンスによって)法的に保障しているため、フリーソフトウェアである。なおフリーソフトウェアの「フリー」という言葉は常に自由な権利を指し示すために必要なため使われている。
GNUツールチェーン
GNUツールチェーンは、GNUプロジェクトが生み出したプログラミングツール群の総称。これらツールがツールチェーン(次々と使用されるようなツール群)を形成し、アプリケーションソフトウェアやオペレーティングシステムの開発で使われる。 GNUツールチェーンは、Linuxカーネル、BSD、組み込みシステム向けソフトウェアなどの開発で重要な役割を果たしている。Solaris、macOS、Windows(Cygwin、MinGW/MSYS、Mingw-w64/MSYS2経由)、PlayStation 3などでも、そのまま、あるいは移植した上でGNUツールチェーンを使っている。 GNUツールチェーンに含まれるプロジェクトは以下の通り。
Go (プログラミング言語)
Goはプログラミング言語の1つである。Googleにおいて2009年ロバート・グリースマ、ロブ・パイク、ケン・トンプソンによって設計された。Goは、静的型付け、C言語の伝統に則ったコンパイル言語、メモリ安全性、ガベージコレクション、、CSPスタイルの並行性などの特徴を持つ。Goのコンパイラ、ツール、およびソースコードは、すべてフリーかつオープンソースである。 また、軽量スレッディングのための機能、Pythonのような動的型付け言語のようなプログラミングの容易性、などの特徴もある。Go処理系としてはコンパイラのみが開発されている。マスコット・キャラクターはGopher(ホリネズミ)。 発表当初はLinuxとMac OS Xのみしかサポートしていなかったが、2012年3月にリリースされたバージョン1.0からはWindowsもサポートされている。2014年12月にリリースされたバージョン1.4からAndroidをサポートし、2015年8月19日にリリースされたバージョン1.5からiOSをサポートしている。また、2011年5月10日に公開された Google App Engine 1.5.0でも、Go言語がサポートされている。2018年8月にリリースされたバージョン1.11からWebAssemblyをサポートした。
見る GNUコンパイラコレクションとGo (プログラミング言語)
H8
H8/323 HD6473238F10 H8は、1980年代後半に日立製作所(担当部門は2002年に分社し現在はルネサス エレクトロニクス)が開発・発売したマイクロコントローラのシリーズである。 ターゲットは組み込み市場であり、様々な機能を内蔵した多様な製品群がシリーズ展開され、形態としてはマスクROM版・ROMレス版のほかに、EPROMを内蔵したZTAT版のほか、フラッシュメモリを内蔵したF-ZTAT版がある。ビット数が当初は8ビットだったのでH8と命名されたが、後に、名前はH8のまま16ビット・32ビットの後継シリーズが展開された。内部レジスタ幅は16ビットまたは32ビットで、データバスの幅によってビット数を分類している。
Intel 80386
Intel 80386(またはi386)はインテルの32ビットマイクロプロセッサ (CPU) である。1985年10月に発表され、x86アーキテクチャを32ビットに拡張し、レジスタを強化した。インテルが現在使用している名称はIntel386TMプロセッサ (Intel386TM Processor) である。互換CPUにも386の型番が付くものがある。 後にIA-32と呼ばれる、インテルの32ビットCPUのベースとなる命令セットアーキテクチャは、このCPUで確定した。アーキテクチャとしてのi386については、x86およびIA-32の項目も参照のこと。
Intel Pentium
Intel Pentium (インテル ペンティアム)。
見る GNUコンパイラコレクションとIntel Pentium
Itanium
Itanium(アイテニアム)は、インテルが2001年にリリースした、64ビットマイクロプロセッサ。ヒューレット・パッカード (HP) と共同開発した高性能サーバ向けの命令セットアーキテクチャであるIA-64を初めて採用した。 Itanium 2(アイテニアムツー)は、翌2002年に発表されたItaniumの後継で、3次キャッシュを内蔵させるなど性能の向上を図った。2008年2月25日、インテルはItanium 2の表記を「Itanium 9000」などに変更した。これはプロセッサナンバーの採用によりItaniumとItanium 2を区別する必要性が薄れたこと、ブランド力の強化などがあげられる。
Java
Java(ジャバ、ジャヴァ)は、汎用プログラミング言語とソフトウェアプラットフォームの双方を指している総称ブランドである。オラクルおよびその関連会社の登録商標である。1996年にサン・マイクロシステムズによって市場リリースされ、2010年に同社がオラクルに吸収合併された事によりJavaの版権もそちらに移行した。 プログラミング言語Javaは、C++に類似の構文、クラスベースのオブジェクト指向、マルチスレッド、ガベージコレクション、コンポーネントベース、分散コンピューティングといった特徴を持ち、平易性重視のプログラム書式による堅牢性と、仮想マシン上での実行によるセキュリティ性およびプラットフォーム非依存性が理念とされている。
Lex
Lex(レック、レックス)は、1975年にエリック・シュミットとによって開発された、レキシカルアナライザ(字句解析プログラム、字句解析器)を生成するプログラムである。unixにおける標準のレキシカルアナライザとなっており、POSIX標準ともなっている。コンパイラの作成のためにパーサジェネレータのyaccとともに使用されることも多い。
Linux
Linux(リナックス、他の読みは#「Linux」の読み方で後述)とは、狭義にはUnix系オペレーティングシステムカーネルであるLinuxカーネルを指し、広義にはそれをカーネルとして周辺を整備したシステム全体のことをいう(GNU/Linuxも参照)。
LLVM
LLVM(エルエルヴィーエム、 またはエルエルブイエム)とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。当初は、LLVMの名称の由来は、Low Level Virtual Machine (低水準仮想機械) の略であるとしていたが、現在は、何の頭文字でもないとしている。
M16C
M16C M16Cファミリとは三菱電機(現在はルネサス エレクトロニクスとして分離)の開発したマイクロプロセッサである。M16C の M は三菱電機、 16 は 16bit 、C は CISCを表す。リトルエンディアンであり、12MHzから 24MHzで駆動することができる。ルネサス テクノロジ(現:ルネサス エレクトロニクス)となったため、R8C/Tinyのみ名前が独特となっている。
M32R
M32Rは32ビットのRISC命令セットの組み込み用途のマイクロプロセッサとマイクロコントローラであり、 三菱電機(現・ルネサス エレクトロニクス)によって開発された。 M32Rは、エンジン制御ユニットやデジタルカメラ、PDAなどの組み込みシステムで使われている。 命令セットは、GNUコンパイラコレクションでサポートされており、かつてはLinuxサポートもあったが、Linux 4.16 にてサポート対象CPUから外されている。 ロジックと DRAM では製造プロセスが異なることからコスト上のメリットが薄いと思われたが DRAM を混載したM32R/Dも開発された。
MC68000
MC68000(エムシーろくまんはっせん)、68000は米・モトローラ(フリースケール・セミコンダクタを経由して、現NXPセミコンダクターズ)が開発したMPU(MPUはマイクロプロセッサを指すのにモトローラが使った語でマイクロプロセッシングユニットの略)である。略して68K(ろくはちケー)などとも。後継MPUも含めた同一アーキテクチャのシリーズを総称するときは、680x0と呼称される。モトローラ自体は周辺LSIを含めてM68000ファミリと呼称した。MC型番は量産ロットで、量産先行品はXC型番となる。M68000ファミリは、Apple Macintosh や Apollo/Domain、NeXTcube、HP 9000、Sun-3、ソニーNEWS、NEC EWS4800、シャープX68000、DCL Uステーションなど様々なパソコンやワークステーションに採用された。オペレーティング・システムとしては、Mac OS、Domain/OS、NeXTSTEP、HP-UX、SunOS、CP/M-68K、OS-9/68000、NetBSDなどがある。
Microsoft Windows
Microsoft Windows(マイクロソフト ウィンドウズ)は、マイクロソフトが開発・販売するオペレーティングシステム (OS) の製品群である。グラフィカルユーザインタフェース (GUI) を採用している。Windows発売以前では高価なワークステーション(ハイエンドパソコンを上回る性能のデスクトップコンピュータ)でしか実現されていなかったマルチタスクやGUIを中心とした使い勝手の良さを、一般消費者が入手しやすい標準的な規格のパソコンに順次取り込んで行き、一般向けOSのシェアのほとんどを占めるに至り、今や大きな知名度を持つ。
見る GNUコンパイラコレクションとMicrosoft Windows
MinGW
MinGW(ミン・ジー・ダブリュー、Minimalist GNU for Windows)はGNUツールチェーン、GCCをWindowsで利用できるようにする開発環境である。Windows APIのためのヘッダファイルを含んでおり、GCCでネイティブWindowsアプリを開発できる。MinGW自体はほぼ開発終了だが、後継のMingw-w64が積極的に開発されている。 MinGWプロジェクトは32ビット環境向けに主に2つのパッケージを配布している。ひとつはWindowsに移植したGCCで、コマンドラインやIDEから利用できる。もう1つは軽量のUNIX風シェル環境であるMSYS (minimal system) である。
MIPSアーキテクチャ
MIPSアーキテクチャは、ミップス・コンピュータシステムズ(現ミップス・テクノロジーズ)が開発したRISCマイクロプロセッサの命令セット・アーキテクチャ (ISA) である。
NEC Vシリーズ
NEC Vシリーズは、日本電気(NEC、現在はルネサス エレクトロニクスに分離)が製造したマイクロプロセッサー・マイクロコントローラのシリーズである。 V30・V40・V50は16ビットの8086互換のシリーズである。V60以上は、独自仕様の32ビットプロセッサのシリーズである。なお、VR3000などのMIPSプロセッサやV850などのV810系列のプロセッサの名称もVから始まるが直接のつながりは無い。名称のVはVLSIの頭文字を取ったもので、Victoryの意味も込められている月刊アスキー別冊 蘇るPC-9801伝説 永久保存版 第2弾 2007年4月9日初版 「NEC V30開発秘話」 (ISBN 978-4-7561-4883-4)。
Objective-C
Objective-C(オブジェクティブ シー)は、プログラミング言語の一種。CをベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語である。 Objective-CはNeXT、macOSのオペレーティングシステム (OS) に標準付属する公式開発言語である。macOSのパッケージ版に開発環境がDVDで付属するほか、ユーザ登録をすれば無償でダウンロードできる(Xcodeの項目参照)。現在では主にAppleのmacOSやiOS上で動作するアプリケーションの開発で利用される。
OpenMP
OpenMP(オープンエムピー)は、並列計算機環境において共有メモリ・マルチスレッド型の並列アプリケーションソフトウェア開発をサポートするために標準化されたAPIである。「OpenMP」は「open multiprocessing」の略である。 同様に並列コンピューティングに利用されるMPIでは、メッセージの交換をプログラム中に明示的に記述しなければならないが、OpenMPではディレクティブ(指令)を挿入することによって並列化を行う。OpenMPが使用できない環境では、このディレクティブは無視されるため、並列環境と非並列環境でほぼ同一のソースコードを使用できるという利点がある。また、プラットフォーム固有のスレッドAPIを使わず、コンパイラによって暗黙的に生成されたスレッドを利用してタスクを振り分けることになるため、並列プログラムを簡潔に記述できるだけでなく、複数の環境に移植しやすくなる。
PA-RISC
PA-RISC(ぴーえーりすく)は、ヒューレット・パッカード社 (HP) のSystems & VLSI Technology Operationが開発したマイクロプロセッサ アーキテクチャである。 その名前にも含まれているようにRISCアーキテクチャの実装であり、PAはPrecision Architecture(精密なアーキテクチャ)の略である。また、HP/PAつまりHewlett Packard Precision Architectureと呼ばれることもある。 1986年2月26日、PA-RISCの最初の実装であるTS1を採用した HP 3000 Series 930 と HP 9000 Model 840 が発表された。
Pascal
Pascal(パスカル)は、1970年に発表されたプログラミング言語。ニクラウス・ヴィルトにより構造化プログラミングとして設計・デザインされた。名称は、ブレーズ・パスカルにちなむ。 ALGOL、ALGOL Wをベースとし、簡素だがよく整った言語仕様(構文と意味)を持つ。プログラミング教育を意識しており、「判読性」を重視している反面、「最適化」を犠牲にしていると批判もされた。 言語的には、自身のコンパイラを自身で書けるといった、言語処理系のブートストラップを備え、多くの#実用プログラム例を持っている。
PDP
PDP とは。
PowerPC
IBM PowerPC 601 マイクロプロセッサ PPC601FD-080-2 IBM PowerPC 601+ マイクロプロセッサ PPCA601v5FE1002 IBM PowerPC 601 マイクロプロセッサ PPC601FF-090a-2 PowerPC(パワーピーシー、Performance optimization with enhanced RISC - Performance Computing)は1991年にApple Computer、IBM、モトローラの提携(AIM連合)によって開発された、RISCタイプのマイクロプロセッサである。 PowerPCはIBMのPOWERアーキテクチャをベースに開発され、AppleのMacintoshやIBMのRS/6000などで採用された。
SPARC
UltraSPARC IIマイクロプロセッサ SuperSPARC TMX390Z50GF H359403658C SPARC(スパーク、Scalable Processor Architecture)は、サン・マイクロシステムズが開発・製造したRISCベースのマイクロプロセッサであり、その命令セットアーキテクチャの名称である。 現在はSPARCインターナショナルの登録商標であり、複数のメーカーがこのアーキテクチャに基づいたプロセッサを製造している。 オープンソース版がある。
SuperH
SuperH(スーパーエイチ)は、日立製作所(後のルネサスエレクトロニクス)が開発した組み込み機器用32ビットRISCマイクロコンピュータ用アーキテクチャである。
Unix系
複数のUnix系システム間の関連図 Unix系(ユニックスけい、Unix-like、ユニックスライク)とは、Unixに類似した振る舞いをするオペレーティングシステム (OS) を指す用語である。その判断基準や範囲には複数の議論がある。
VAX
VAX (バックス) は、1970年代中ごろディジタル・イクイップメント・コーポレーション (DEC) が開発し販売した32ビットのミニコンピュータのシリーズ、及び同シリーズの命令セットアーキテクチャ (ISA) を指すこともある。前述のように32ビットアーキテクチャだが、同時に16ビット時代の最も人気のあったモデルであるPDP-11の後継ないし代替を意識した互換命令などを持っている点では、PDP-11の拡張という面もあるアーキテクチャでもある。 直交性の高い命令セット(機械語)とページング方式の仮想記憶が特徴である。VAXには、キュー挿入/削除命令や多項式計算命令などといった複雑な処理をする命令があり、豊富なアドレッシングモードとの組み合わせ-->といった特徴がある。
X64
x64またはx86-64 とは、x86アーキテクチャを64ビットに拡張した命令セットアーキテクチャ。 実際には、AMDが発表したAMD64命令セット、続けてインテルが採用したIntel 64命令セット(かつてIA-32eまたはEM64Tと呼ばれていた)などを含む、各社のAMD64互換命令セットの総称である。x86命令セットと互換性を持っていることから、広義にはx86にx64を含む場合がある。 なお、インテルはIntel 64の他にIA-64の名前で64ビット命令セットアーキテクチャを開発・展開していたが、これは全くの別物であり、x64命令セット、x86命令セットのいずれとも互換性がない。 2023年4月にはIntelが、x64のLegacyモードを切り捨てることによりLongモードのみにしてサブセット化することで回路をシンプルにして性能向上するうえで問題になっているボトルネックを解消することを目標にしたX86-Sの提案の文書を公表した。もっとも、構想が発表されただけで、具体的な製品化に関する情報は発表されていない。
構文解析
構文解析(こうぶんかいせき、英語: parsing, syntactic analysis, syntactic analysis)は、ある言語において、その形式文法に従って記号の文字列を分析する手続きである。構文解析を行う機構を構文解析器(parser)と呼ぶ。
演算子 (コンピュータ言語)
コンピュータ言語における演算子(えんざんし、operator)とは、各種の演算を表わす記号・シンボルである。通例、演算子は単なる記号あるいは記号列であって構文論的な要素であり、それに対応する演算は意味論の側にある。たとえばJavaにおいて、演算子 + を使った a + b という式は、構文論上は単にそういう式だというだけである。意味論的には数値の加算であったり、文字列の連結であったりするが、それは a と b の型に依って決まる(理論的には項書き換えのように、構文論的といったものもある)。 演算が作用する対象のことを被演算子(operand; オペランド、被演算数、引数)という。たとえば、n と 3 との和を表す式 "n + 3" において、"+" は演算子であり、その被演算子は "n" と "3" である。また、数式として一般的な被演算子と被演算子の間に演算子を記述する構文は中置記法と呼ばれる。
見る GNUコンパイラコレクションと演算子 (コンピュータ言語)
木構造 (データ構造)
親子構造 木構造(きこうぞう)とは、グラフ理論における木に対応づけられるデータ構造である。
2012年
この項目では、国際的な視点に基づいた2012年について記載する。
参考情報
1987年のソフトウェア
- Adobe Illustrator
- Adobe Persuasion
- GNU Screen
- GNUコンパイラコレクション
- HyperCard
- LAN Manager
- MINIX
- MINIXファイルシステム
- Microsoft PowerPoint
- Microsoft Windows 2.0
- OS/2
- Oberon
- PTC Creo Parametric
- QuarkXPress
- RISC OS
- Self
- Turbo C
- Twm
- VZ Editor
Cコンパイラ
- BDS-C
- C++ Builder
- Ccache
- Clang
- CodeWarrior
- GNUコンパイラコレクション
- Intel C++ Compiler
- Microsoft Visual C++
- MinGW
- Mingw-w64
- Portable C Compiler
- The Portland Group
- Tiny C Compiler
- Turbo C
- VisualAge
- Zig (プログラミング言語)
Java開発ツール
- AnyLogic
- Apache Ant
- Apache Maven
- Astah*
- Azure DevOps Server
- BlueJ
- Checkstyle
- Eclipse (統合開発環境)
- FindBugs
- GNUコンパイラコレクション
- Gradle
- Hudson
- IntelliJ IDEA
- J Sharp
- JBuilder
- JDeveloper
- JMeter
- JUnit
- JavaCC
- Javadoc
- Jenkins
- KDevelop
- NetBeans
- Open Inventor
- Oracle Application Development Framework
- PMD (ソフトウェア)
- Plumbr
- SableCC
- Sbt
- Visual Studio Code
- XDoclet
- XMLBeans
UNIXプログラミングツール
- Ar (UNIX)
- Autotools
- C99
- Cfront
- Ctags
- Distcc
- Expr
- Fortran
- FreeMat
- GNUアセンブラ
- GNUコンパイラコレクション
- GNUデバッガ
- Lex
- M4 (プログラミング言語)
- Make (UNIX)
- Netpbm
- Nm (UNIX)
- Perl
- Strace
- Yacc
- グロブ
コンパイラ
- C--
- Emscripten
- Free Pascal
- GNUコンパイラコレクション
- GnuCOBOL
- IBM COBOL
- LLVM
- NVIDIA CUDA Compiler
- PL/0
- Pコードマシン
- Roslyn
- TDM-GCC
- The Portland Group
- VisualAge
- インクリメンタル・コンパイル
- コンパイラ
- スレッデッドコード
- バイナリ・リコンパイラ
- ブートストラップ問題
- リンケージエディタ
- 動的リンク
- 束縛 (コンピュータ)
- 逆コンパイラ
GNU C Compiler、GNU C コンパイラ、GNU Compiler Collection、Register Transfer Language 別名。