目次
32 関係: 型システム、可変長引数、契約プログラミング、定義域、式 (プログラミング)、例外処理、バッファ、ボトム型、ブーリアン型、プログラミング、プログラミング言語、プログラム (コンピュータ)、オペレーティングシステム、クラッシュ (コンピュータ)、コンピューティング、シグナル (Unix)、ゼロ除算、値 (計算機科学)、空文字列、競合状態、無限ループ、計算可能性理論、部分写像、配列、連想配列、Null、Nullable型、Perl、POSIX、XOR連結リスト、楽観的並行性制御、未定義動作。
型システム
型システム(かたシステム、type system)は、コンピュータプログラミングの数々の構成要素および値に対して、型(type)と呼ばれる特性を付与するための数々の規則群から成立している形式体系である。型の付与は、型付け(typing)と言われる。例えば、変数・式・関数・モジュール・オブジェクトなどが型の付与対象になり、それらの型付け要素を規則的な関係でまとめたデータ構造にも型は付与されてカテゴライズされる。 型システムの目的は、プログラムエラーとバグの発生を抑止することである。そのための型安全性とは、各計算および各オペレーションでの型エラー(不正計算、ロジックエラー、バッファオーバーフロー、不正ポインタなど)の発生を防止することと同義になる。
可変長引数
可変長引数(かへんちょうひきすう、variable length arguments、variadic arguments)とはプログラミング言語において、関数(サブルーチンやメソッドを含む)やマクロの引数が固定ではなく任意の個数となっている引数のことである。 可変引数、可変個引数とも呼ばれる。 可変長引数を持つ関数を可変長引数関数(variadic function)と言う。 いくつかの言語では型安全が保証されなくなるので注意が必要である。
契約プログラミング
契約プログラミング(けいやくプログラミング、Contract programming)または契約による設計(けいやくによるせっけい、Design by Contract; DbC)は、ソフトウェアの正確性 において、ソフトウェアの正確さはと定義されている。と頑健性 において、ソフトウェアの頑健さはと定義されている。ここで「異常な状態」とは仕様によって示されていない状態を指す。を高めるためのソフトウェア設計の方法論である。DbC はロバート・フロイド、アントニー・ホーア、エドガー・ダイクストラらの形式的検証の仕事を基礎にしている。DbC は(抽象データ型に基づく)オブジェクト指向プログラミングにおける表明の利用や、継承に伴う表明の再定義の原理的規則、例外処理の原理的規則などを提供する。
定義域
数学における写像の定義域(ていぎいき、domain of definition)あるいは始域(しいき、domain; 域, 領域領域という語を充てている文献として、例えば, など。ただし「領域」というと複素解析などで「連結開集合」の意味で用いることが多く紛らわしい。)とは、写像の値の定義される引数(「入力」)の取り得る値全体からなる集合である。つまり、写像はその定義域の各元に対して(「出力」としての)値を与える。 例えば、実数の範囲での議論において、余弦函数の定義域はふつう実数全体の成す集合(実数直線)であるし、正の平方根函数の定義域は 以上の実数全体の成す集合であるものとする。定義域が実数から成る集合(実数全体の成す集合の部分集合)であるような実数値函数は、その定義域が -軸上にあるものとして -直交座標系に表すことができる。
式 (プログラミング)
式(しき、expression)とは、プログラミングにおいて、言語によって定められた優先順位や結びつきの規定に則って評価される値、変数、演算子、関数などの組み合わせである。数学における式と同様、式は評価された値を持つ。言語によっては式が副作用を持つこともあり、参照透過性がない場合もある。
例外処理
例外処理(れいがいしょり、)とは、IT業界で用いられる専門用語で、ある抽象レベルにおけるシステムの設計で想定されておらず、ユーザー操作によって解決できない問題に対処するための処理である。例外処理の結果として問題が解決されないとシステム障害になる。システム停止やデータ破損の原因になり、ユーザーに損害を与える可能性があるため、システム開発で例外処理は重要視されている。 システムの設計で想定されておらず、継続不能や継続すると問題になる様な状態としては、次のようなものが挙げられる。
バッファ
情報処理機器におけるバッファ・緩衝(域)(buffer)とは、記憶単位間のデータ転送において一時的にデータを記憶することを指す。2つの記憶単位が同期されていなかったり、それぞれの処理速度が異なる場合によく用いる。
ボトム型
ボトム型(ボトムがた、Bottom type)とは、型理論や数理論理学において値を持たない型のことである。ゼロ型または空型とも呼ばれ、アップタック記号(⊥)で表記される。戻り値の型がボトム型である関数は、いかなる値も返さない。カリー=ハワード同型対応ではボトム型は偽に対応する。
ブーリアン型
ブーリアン型(ブーリアンがた、Boolean datatype)は、真理値の「真。
プログラミング
プログラミング()とは、コンピューター上で、ある特定のコンピューティングの結果を得るために、実行可能なコンピュータープログラムを作成することである。 プログラミングが関係するタスクの例として、アルゴリズムの生成、アルゴリズムの正確さとリソースの消費量のプロファイリング、選択したプログラミング言語でのアルゴリズムの実装(これは一般にコーディング(英語:coding)と呼ばれる)などがある。 プログラムのソースコードは、コンピューターのCPUで直接実行される機械語ではなく、プログラマー(ヒト)が理解できるプログラミング言語で書かれる。プログラミングの目的は、あるタスクを自動化する一連の命令をコンピューターに実行させ、与えられた問題を解決することである。
プログラミング言語
プログラミング言語(プログラミングげんご、)とは、プログラムを記述するための人工言語。コンピュータプログラムを書くために考案された、正確に定義された記号と規則のしくみ。以前は、しばしばプログラム言語と表記された。
プログラム (コンピュータ)
JavaScriptで書かれたコンピュータプログラムのソースコード コンピュータプログラム(computer program)は、コンピュータに対する命令(処理)を記述したものである。programの原義は、前もって()書く()であり、いわゆるプログラミング言語の世代に応じて意味合いは変わっている。プログラム内蔵方式のコンピュータのCPUには、CPUで実行するプログラムの命令が必要である。
オペレーティングシステム
オペレーティングシステム(operating system、略称:OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)を司るシステムソフトウェアである。
クラッシュ (コンピュータ)
クラッシュ(crash)または異常終了(いじょうしゅうりょう)とは、コンピュータの分野において、プログラムが通常とは異なる形で終了することを指す用語である。クラッシュの英語での本来の意味は「衝突、破壊、墜落」などであるが、本項では主に異常終了のケースについて記述する。 なお、ハードディスクドライブなどの補助記憶装置(ストレージ)が物理的に破損・故障して記憶内容が損なわれることを、クラッシュと呼ぶこともある。
コンピューティング
コンピューティング(computing)。
シグナル (Unix)
シグナル(signal)とは、Unix系(POSIX標準に類似の)オペレーティングシステム (OS) における、限定的なプロセス間通信であり、プロセスに対し非同期でイベントの発生を伝える機構である。シグナルが送信された際、OSは宛先プロセスの正常な処理の流れに割り込む。どんな不可分でない処理の間でも割り込むことができる。受信プロセスが以前にシグナルハンドラを登録しておけば、シグナル受信時にそのルーチンが実行される。さもなくば、デフォルトのシグナル処理が行われる。(同様なものは他のTSSなどでも開発されてはいるが、UNIXのシグナルは)1970年ごろベル研究所でUNIXに実装された。後にPOSIXである程度は標準化されているが、標準化が諦められているような振舞などもいくつかあり、特に他の幾つかの要素(fork等)とマルチスレッドとシグナルが絡むと実装毎の対処にプログラミングが大変になることがある。
ゼロ除算
数学においてゼロ除算(ゼロじょさん、ゼロじょざん、0除算、division by zero)とは、0で除す割り算のことである。このような除算は除される数をとするならば、形式上は と書くことができるが、このような式を矛盾なく定義することはできない。コンピュータにゼロ除算をさせようとした場合、処理が停止してしまうなど深刻なことが起きることがある。
値 (計算機科学)
プログラミング言語における値(あたい)について説明する。値は、何らかの式を評価した結果である。式はデータ型を持ち、評価結果は内部的にはビット列になる。データ型が異なれば、同じビット列が異なる値(意味)を持つこともある。例えばあるビット列は整数、浮動小数点数または文字列として解釈されることがある。 いくつかの種類の値はほとんどのプログラミング言語で共通してサポートされている。様々な数値表現などがその例である。一方、あまり広くサポートされていないものもある。Pascalにある集合型などがその例である。
空文字列
形式言語理論における空文字列(くうもじれつ・からもじれつ、empty string)とは、長さが0の一意な文字列であり、文字列における空集合である。主にコンピュータ、特にプログラミング言語において用いられる用語である。ヌル文字列(null string)とも呼ばれ、空文字列と同一視されることもあるが、ヌルポインタやヌル参照と紛らわしい。Javaではnull stringと言えば無効な参照値であるを指し、型の有効な参照値である空文字列とは明確に区別する。
競合状態
競合状態(きょうごうじょうたい、race condition、レースコンディション、またはrace hazard、レースハザード)は、システムや処理過程における欠陥であり、処理過程の出力結果がイベントなどの順序やタイミングと予期しない(かつ危険な)依存関係にある場合をいう。本来の意味は、2つの電気信号が競合していずれかが出力に影響を与える状態である。 競合状態は設計の不十分な電子工学システム、特に論理回路で発生するが、コンピュータソフトウェアでもよく発生する。 この問題の最も厄介なところは、毎回誤った動作結果になるわけではなく、タイミングによっては正常に動作してしまう場合もある、ということである。そのため、原因が判明しにくく対処の難しい不具合(バグ)を引き起こす。
無限ループ
は、コンピュータ・プログラム等の一連の手続き等が無限に繰り返される(ループする)ことである。ともいう。 専門用語としての他、刺激的に感じられる他の用語(例えばメモリリーク)と同様に、不正確な通俗的な使い方もされている(「日常会話での使用」を参照)。専門的な意味としての無限ループは、ようだが、実際のところそうではないこともある(#無限ループの検出)。
計算可能性理論
計算可能性理論(けいさんかのうせいりろん、computability theory)とは、チューリングマシンなどの計算模型でいかなる計算問題が解けるか、またより抽象的に、計算可能な問題のクラスがいかなる構造をもっているかを調べる、計算理論や数学の一分野である。
部分写像
単射な部分写像の例 単射でない全域写像の例 数学において部分写像(ぶぶんしゃぞう、partial mapping)あるいは部分函数(partial function)は適当な部分集合上で定義された写像である。即ち、集合 から への部分写像 は の任意の元に の元を割り当てることが求められる写像 の概念を一般化して、 の適当な部分集合 の元に対してのみそれを要求する。 となる場合には は全域写像 (total function) と呼ばれ、これは写像と同じ概念を意味する。部分写像を考えるときには、その定義域 がはっきりとは分かっていないという場合もよくある。
配列
この記事では、コンピュータ・プログラムにおいて配列(はいれつ、array)と呼ばれているデータ構造およびデータ型について説明する。計算科学方面ではベクトルという場合もある。また、リストも参照。一般に、添え字で個々の要素を区別する。
連想配列
連想配列(れんそうはいれつ、associative array。)とは、コンピュータプログラミングにおいて、添え字にスカラー数値以外のデータ型(文字列型等)も使用できる配列である。抽象データ型のひとつ。連想リスト、連想コンテナ、辞書(あるいはカタカナでディクショナリ dictionary)、ハッシュ(hash)、マップ(map)とも呼ばれる。 歴史的には、最初に LISP の連想リストとして広く認知された。その後、SNOBOL で table として、AWK で連想配列として実装したことで、その潜在能力がさらに広く知られるようになった。現在、Rubyなど一部の言語では、添え字にはどのようなデータでも使えるものもある。
Null
Null(ヌル、ナル)は、何もない、という意味で、プログラミング言語などコンピュータ関係では、「何も示さないもの」を表すのに使われる。同様のものとして、PascalにおけるNil(ニル)、PythonにおけるNone(ナン)、VB.NETにおけるNothing(ナッシング)のように、他のキーワード(予約語)や識別子が使われることもある。 ドイツ語において は数値の0(ゼロ)を意味し、発音は である。一方、英語において は と発音される実際の発音はを参照のこと。。ドイツ語においても、数値の0と区別するために、本記事の意味の は英語風に と発音される場合がある。 日本においては「ヌル」という発音が定着しているが、英語読みに近い「ナル」という発音で呼ばれる場合もある。例えば、JISののP4には「ナル値 (Null Value)」、のP4には「ナル文字 (Null Character)」という記述がある。この他にも専門書や国家試験でも見られる。
Nullable型
Nullable型、Null許容型 (nullable type) は、一部のプログラミング言語の機能であり、 データ型の通常の値の代わりに、値を特殊な値Nullに設定できる。静的型付け言語では、Nullable型はOption型だが、動的型付け言語(値には型があるが変数にはない)では、単一のnull値を持つことで同等の動作が提供される。 Nullは、SQLにおけるNULLのように、返されなかった関数やデータベースのフィールドの欠落などから、欠落した値または無効な値を表すためによく使用される。 整数型やブーリアン型などのプリミティブ型は通常nullにすることはできないが、対応するNullable型(Nullable整数およびNullableブーリアン型)はNull値をとることができる。
Perl
Perl(パール)とは、ラリー・ウォールによって開発されたプログラミング言語である。実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。ウェブ・アプリケーション、システム管理、テキスト処理など、さまざまなプログラムの開発に広く利用されている。 言語処理系としてのperlはフリーソフトウェアである。Artistic LicenseおよびGPLのもとで配布されており、誰でもどちらかのライセンスを選択して利用することができる。UNIX、Windows、macOSやLinuxのようなUNIX互換OSなど多くのプラットフォーム上で動作する。
POSIX
POSIX(ポジックス、Portable Operating System Interface)は、オペレーティングシステム (OS) の標準的なインタフェースおよび環境を定義するIEEE規格であるIEEE公式サイト。。ソースコードレベルでの移植性の高いアプリケーションソフトウェアの開発を容易にすることを目的として、主にUNIX系のOSに関して、各OSが共通して持つべきコマンドラインインタプリタ(シェル)、共通のユーティリティプログラム、およびアプリケーションプログラミングインタフェース (API) について定めている。POSIX仕様に準拠したソースコードは、POSIX準拠OSであればどれでも動作させることができる。アプリケーション開発者とシステム実装者の両方から利用されることを意図している。
XOR連結リスト
XOR連結リスト(英: XOR linked list)は、プログラミングにおけるデータ構造の一種。ビット毎の排他的論理和 (XOR) の特徴を生かして、双方向連結リストに必要なメモリ量を削減する。なお、以下ではXOR演算を ⊕ と記述する。
楽観的並行性制御
楽観的並行性制御(らっかんてきへいこうせいせいぎょ、optimistic concurrency control)とは、並行性制御(ロック)の手段の種別の一種である。楽観的ロックの概念である。他の処理と競合してはならないトランザクションにおいて、開始時には特に排他処理など行なわず、完了する際に他からの更新がされたか否かを確認し、もし他から更新されてしまっていたら自らの更新処理を破棄し、エラーとする。対照的に悲観的並行性制御がある。
未定義動作
コンピュータプログラミングにおいて、とは、コンピュータ言語が準拠する言語仕様において動作(振る舞い)が予測できないと規定されたプログラムを実行した結果のことである。これに対して、言語仕様が動作結果を規定せず、プラットフォーム上の別のコンポーネントのドキュメント(ABIやトランスレータドキュメントなど)が処理系の実装を規定する動作のことを(unspecified behavior)と呼ぶ。 「未定義のコードを実行した結果コンパイラは何をしてもいい。鼻から悪魔が飛び出しても仕様に反しない」というcomp.std.cでの投稿から、C言語コミュニティではユーモアを込めて未定義動作のことを と呼ぶことがある。

