目次
16 関係: 型システム、並列計算、区分化大域アドレス空間、バリア、命令型プログラミング、オブジェクト指向プログラミング、クレイ (コンピュータ企業)、クロスプラットフォーム、C言語、静的型付け、Fortran、G95、GFortran、Unified Parallel C、構造化プログラミング、手続き型プログラミング。
型システム
型システム(かたシステム、type system)は、コンピュータプログラミングの数々の構成要素および値に対して、型(type)と呼ばれる特性を付与するための数々の規則群から成立している形式体系である。型の付与は、型付け(typing)と言われる。例えば、変数・式・関数・モジュール・オブジェクトなどが型の付与対象になり、それらの型付け要素を規則的な関係でまとめたデータ構造にも型は付与されてカテゴライズされる。 型システムの目的は、プログラムエラーとバグの発生を抑止することである。そのための型安全性とは、各計算および各オペレーションでの型エラー(不正計算、ロジックエラー、バッファオーバーフロー、不正ポインタなど)の発生を防止することと同義になる。
並列計算
並列計算(へいれつけいさん、parallel computing)は、コンピュータにおいて特定の処理をいくつかの独立した小さな処理に細分化し、複数の処理装置(プロセッサ)上でそれぞれの処理を同時に実行させることである。並列コンピューティングや並列処理ともいう。
区分化大域アドレス空間
区分化大域アドレス空間、PGAS(partitioned global address space)とは、計算機科学における並列計算の理論モデルの一つである。これは大域アドレス空間のことで、論理的には区切られていて、その一部は各プロセッサーに固有の局所空間を構成すると仮定するものである。区分化大域アドレス空間とそれまでのものと違うのは共有メモリー空間の一部分は特定のスレッドに対して親和性があってもよい点である。これによって、参照の局所性を有効に生かしている。区分化大域アドレス空間のモデルは Unified Parallel C、Co-array Fortran、Titanium、Fortress、Chapel、X10、Global Arrays 、XcalableMPの基盤となっている。
見る Co-array Fortranと区分化大域アドレス空間
バリア
バリア; Barrier(バリヤ、バリヤー、バリアーとも)。
命令型プログラミング
命令型プログラミング(めいれいがたプログラミング、imperative programming)は、プログラムのを変化させるステートメントを基本文に用いる総称的なプログラミングパラダイムである。ステートメントではコマンド(命令文)が多用される。宣言型プログラミングと対をなしてのプログラミング言語の分類用語としても扱われている。宣言型の数学的性質に対して、命令型はノイマン型コンピュータ向けの計算機科学特有の性質である。このパラダイムは、手続き型、構造化、、オブジェクト指向などを包括している。 ステートメント上のコマンドで状態は変化され、変化した状態の参照でステートメントの動作も変化することは副作用と呼ばれる。コマンドと副作用の存在によって命令型プログラミングは、各オペレータを状態の遷移と照らし合わせて解釈することになる。このことから命令型はhow a program operates(どう処理するか)と形容される。
見る Co-array Fortranと命令型プログラミング
オブジェクト指向プログラミング
オブジェクト指向プログラミング(オブジェクトしこうプログラミング、, OOP)とは、「オブジェクト」という概念に基づいたプログラミングパラダイムの一つである。 OOPでは、相互に作用するオブジェクトを組み合わせてプログラムを設計する。 OOPの方法として、クラスベースOOPとプロトタイプベースOOPがある。 クラスベースOOPでは、オブジェクトが属する集合としてクラスを定義し、クラス定義からそのインスタンスとしてオブジェクトを生成する。 プロトタイプベースOOPでは既存のオブジェクト(プロトタイプ)を複製し、プロトタイプの複製に変更を加えることで様々な対象を表すオブジェクトを生成する。 広く使われているプログラミング言語の多く、例えばC++やJavaやPythonなどは、マルチパラダイムであるが、程度の差はあれ、オブジェクト指向プログラミングをサポートしており、大抵は命令型や手続き型プログラミングとの組み合わせで用いられる。
見る Co-array Fortranとオブジェクト指向プログラミング
クレイ (コンピュータ企業)
クレイ・インコーポレイテッド (Cray Inc) は、アメリカ合衆国ワシントン州シアトルのスーパーコンピュータ製造企業である。 その前身であるクレイ・リサーチ (Cray Research, Inc., CRI) は1972年にコンピュータ設計者シーモア・クレイによって設立された。1989年、シーモア・クレイは自身の会社クレイ・コンピュータ (Cray Computer Corporation。
見る Co-array Fortranとクレイ (コンピュータ企業)
クロスプラットフォーム
クロスプラットフォーム(cross-platform)とは、異なるプラットフォーム(例えばPC/AT互換機とMacintosh、あるいはWindows・macOS・FreeBSD・Linuxなどのように、仕様が全く異なる機械(ハードウェア)またはオペレーティングシステム)上で、同じ仕様のものを動かすことが出来るプログラム(ソフトウェア)のことを言う。同様の呼称にマルチプラットフォームmulti-platformがある。 また、家庭用ゲームにおいては「クロスプラットフォーム」と「マルチプラットフォーム」で意味が異なる場合がある。本項ではこのケースについても後述する。
見る Co-array Fortranとクロスプラットフォーム
C言語
C言語(シーげんご、C programming language)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発した汎用プログラミング言語である。英語圏では「C language」または単に「C」と呼ばれることが多い。日本でも文書や文脈によっては同様に「C」と呼ぶことがある。制御構文などに高水準言語の特徴を持ちながら、ハードウェア寄りの記述も可能な低水準言語の特徴も併せ持つ。基幹系システムや、動作環境の資源制約が厳しい、あるいは実行速度性能が要求されるソフトウェアの開発に用いられることが多い。後発のC++やJava、C#など、「C系」と呼ばれる派生言語の始祖でもある。 ANSI、ISO、またJISにより言語仕様が標準規格化されている。
静的型付け
静的型付け(せいてきかたづけ、static typing)は、値やオブジェクトの型安全性を、コンパイル時に検証するというコンピュータプログラミングの型システムの方法である。型の検査はソースコードの解析によって行われる。変数代入、変数束縛、関数適用、型変換といったプログラム記述箇所での型安全性がチェックされる。型エラーの場合は、コンパイルエラーに繋げられることが多い。 対義語は動的型付けであり、こちらでは値やオブジェクトの型安全性を実行時に検証する。型の検査はランタイムシステムの実行時型情報(RTTI)の照会などによる実行時プロセス上の解析で行われる。
Fortran
1956年に発行された最初のFortran解説書『The Fortran Automatic Coding System for the IBM 704』 Fortran(フォートラン)は科学技術計算に向いた手続き型プログラミング言語。1954年にIBMのジョン・バッカスが考案したコンピュータ用で世界最初の高水準言語であり、その後も改訂されて使用されている。
G95
G95(ジー95)は、 フリーでポータブルなFortran 95コンパイラである。 G95は、Fortran 95をインプリメントしており、また、Fortran 2003 機能の一部と、古い機能並びに、Co-array FortranのようなFortran 2008で提案された新しい機能を含んでいる。 また、G95コンパイラが、-std。
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で書かれていた。
Unified Parallel C
Unified Parallel C、UPC は大規模な並列計算機上での高性能計算向けにC言語を拡張して作られたプログラミング言語である。これには、共有大域アドレス空間(対称型マルチプロセッシング、NUMA)を伴うものと、クラスターなどの分散メモリーを伴うものが含まれる。プログラマーには共有された単一の区分化アドレス空間を割り当てられる。変数はどのプロセッサーからでも直接に読み書きできるが、いずれの変数も物理的にはどれかひとつのプロセッサーに関連づいている。UPC は SPMD モデルを使う。このモデルでは全ての並列性がプログラム実行開始時点で固定化される。大抵は一つのプロセッサーに一つのスレッドを割り当てられる。
見る Co-array FortranとUnified Parallel C
構造化プログラミング
は、コンピュータプログラムの処理手順の明瞭化、平易化、判読性向上を目的にしたプログラミング手法である。一般的には順接、分岐、反復の三種の制御構造(control structures)によって処理の流れを記述することと認識されている。制御構造は制御構文、構造化文(structured statement)、制御フロー文(control flow statement)とも呼ばれる。また、プログラムを任意に分割した部分プログラム(サブルーチンとコードブロック)の階層的な組み合わせによるプログラムの構造化も指している。 このプログラミング手法の普及に貢献したのは、1968年の計算機科学者エドガー・ダイクストラによるACM機関紙への投書「Go To Statement Considered Harmful」と言われている。しかし同じくダイクストラが、1969年度NATOソフトウェア工学会議で発表した論文「Structured Programming」との混同を招いてこちら側の名称で知られるようになった。現在に到るまでの国内外の多くの書籍で、構造化プログラミングは制御構文に関する説明に結び付けられている。なお、1969年の論文内容はプログラム正当性検証のための設計技法を扱っており、トップダウン設計、段階的な抽象化、階層的なモジュール化、抽象データ構造と抽象ステートメントを連携させる共同詳細化といった考え方が提唱されていた。
見る Co-array Fortranと構造化プログラミング
手続き型プログラミング
200x200ピクセル 手続き型プログラミング(てつづきがたプログラミング、procedural programming)は、コンピュータが実行すべき命令や手続き(プロシージャ)を順に記述していくことでプログラムを構成するスタイルのプログラミングパラダイムである。この「手続き」とは分類便宜上の用語であり、プログラミング言語によってはサブルーチン、関数、メソッドとも呼ばれているが、手続き型パラダイムの観点からは概ね同一視される。手続きはプログラム全体を区画した部分プログラムでもあり、一定量の計算ステップまたは命令コードのまとまりを、任意の定義名に結び付けて識別化したコードユニットである。手続き型プログラミングは命令型プログラミングの分類に属しており、厳密には命令型の部分集合だが、同一視されることもある。手続きの定義と呼び出しの機能をサポートし、プログラム全体を組み立てる土台とする言語を手続き型言語と呼ぶ。1958年のFORTRAN II、ALGOL、COBOLといった最も初期の高水準言語から導入されている。

