目次
21 関係: 契約、契約プログラミング、不変条件、仕様記述言語、マルチパラダイムプログラミング言語、マイクロソフトリサーチ、プログラミング言語、命令型プログラミング、イベント駆動型プログラミング、オブジェクト指向プログラミング、シュプリンガー・サイエンス・アンド・ビジネス・メディア、C Sharp、CodePlex、Eiffel、静的型付け、静的コード解析、関数型プログラミング、自動定理証明、Singularity、構造化プログラミング、.NET Framework。
契約
法律行為の三態様内田貴『民法I 総則・物権総論(第3版)』東京大学出版会、2005年、336 - 337頁 契約(けいやく、pactum, contrat, contract)とは、複数の者の合意によって当事者間に法律上の権利義務を発生させる制度で、合意のうち法的な拘束力を持つことを期待して行われるもののこと。贈与・売買・交換・賃貸・請負・雇用・委任・寄託など、「誰が誰のために、何を幾らでどのようにする。不履行となった場合はどのようにする」のかを定めるものが多い。
契約プログラミング
契約プログラミング(けいやくプログラミング、Contract programming)または契約による設計(けいやくによるせっけい、Design by Contract; DbC)は、ソフトウェアの正確性 において、ソフトウェアの正確さはと定義されている。と頑健性 において、ソフトウェアの頑健さはと定義されている。ここで「異常な状態」とは仕様によって示されていない状態を指す。を高めるためのソフトウェア設計の方法論である。DbC はロバート・フロイド、アントニー・ホーア、エドガー・ダイクストラらの形式的検証の仕事を基礎にしている。DbC は(抽象データ型に基づく)オブジェクト指向プログラミングにおける表明の利用や、継承に伴う表明の再定義の原理的規則、例外処理の原理的規則などを提供する。
不変条件
不変条件(英: invariant)とは、コンピュータプログラムの理論における用語で、ある処理の間、その真理値が真のまま変化しない述語 (predicate) であり、その処理シーケンスに対して不変であるという。
仕様記述言語
仕様記述言語(しようきじゅつげんご)は、システムなどの仕様を記述する、コンピュータ言語(すなわち形式言語)である。形式的でない仕様記述もあるが(後述)、そういったものを含めて何らかの主張がされている場合もある。 プログラミング言語がシステムそのものに変換されるのに対し、仕様記述言語は必ずしもシステムに自動変換されるものではなく、あくまで仕様の妥当性を検証することに重きを置いている。ソフトウェア工学における一般的な設計プロセスの位置づけから、多くはプログラミング言語を記述する前段階に記述されることを期待している。 仕様記述と検証の方法について説明する。仕様記述では、何らかのシステムの仕様を論理学的あるいは代数学的に、形式的に記述する(形式仕様記述)。検証では、論理学や代数学に基づき(すなわち「機械的」に)、無矛盾性などといったシステムにおける「好ましい性質」の保証、あるいはデッドロックの可能性があるといった「好ましくない性質」の不存在を保証する(あるいは存在することを示し、修正を促す)。代表的な形式的仕様記述言語としてZ言語やLOTOSなどがある。研究段階では長い歴史を持つが、記述が複雑で高度なスキルを要求する上、システム全体の仕様を全て表現するには膨大な量の記述が必要になる。
マルチパラダイムプログラミング言語
マルチパラダイムプログラミング言語 (マルチパラダイムプログラミングげんご、multiparadigm programming language)は、複数のプログラミングパラダイムに対応するプログラミング言語の総称である。「1つのプログラムは複数のプログラミングパラダイムを使う」とビャーネ・ストロヴストルップは述べている。マルチパラダイムプログラミング言語の設計目標は、問題解決に当たって最良の道具になることである。たとえばOzでは、論理型、関数型、オブジェクト指向、データフローコンカレントなど、多数のパラダイムを内包している。Ozは10年かけて従来のプログラミングパラダイムが調和するよう設計されたのである。
見る Spec Sharpとマルチパラダイムプログラミング言語
マイクロソフトリサーチ
マイクロソフトリサーチ(Microsoft Research、MSR)は、計算機科学に関するさまざまな研究を行う機関。リチャード・ラシッド博士がマイクロソフトに入社する条件として、同研究所の設立と、その独立性を約束させ、1991年9月に設立された。 名称からもわかるようにマイクロソフトの関連機関ではあるが、完全に独立した研究機関であり、そこで行われる研究内容については、たとえマイクロソフト本社の首脳陣であっても一切の口出しは出来ないことになっている。 世界でも最も有力な研究機関の一つである。現在、チューリング賞受賞者のアントニー・ホーア、フィールズ賞受賞者のマイケル・フリードマン、ウルフ賞受賞者のラースロー・ロヴァース、マッカーサー・フェローに選定されたジム・ブリン、受賞者のレスリー・ランポートらをはじめ、著名な物理学・計算機科学・数学の専門家たちが数多く参加している。
プログラミング言語
プログラミング言語(プログラミングげんご、)とは、プログラムを記述するための人工言語。コンピュータプログラムを書くために考案された、正確に定義された記号と規則のしくみ。以前は、しばしばプログラム言語と表記された。
命令型プログラミング
命令型プログラミング(めいれいがたプログラミング、imperative programming)は、プログラムのを変化させるステートメントを基本文に用いる総称的なプログラミングパラダイムである。ステートメントではコマンド(命令文)が多用される。宣言型プログラミングと対をなしてのプログラミング言語の分類用語としても扱われている。宣言型の数学的性質に対して、命令型はノイマン型コンピュータ向けの計算機科学特有の性質である。このパラダイムは、手続き型、構造化、、オブジェクト指向などを包括している。 ステートメント上のコマンドで状態は変化され、変化した状態の参照でステートメントの動作も変化することは副作用と呼ばれる。コマンドと副作用の存在によって命令型プログラミングは、各オペレータを状態の遷移と照らし合わせて解釈することになる。このことから命令型はhow a program operates(どう処理するか)と形容される。
イベント駆動型プログラミング
イベント駆動プログラミング(イベントくどうプログラミング、event-driven programming)とは、ユーザー側の操作による受動的なイベントの発生によって、コンピュータ側の能動的なプロセスの実行とプログラムフローの選択が決定されるというプログラミングパラダイムである。イベントドリブンとも邦訳される。グラフィカルユーザーインターフェース(GUI)ソフトウェアでよく用いられており、ユーザー入力に対するレスポンス出力の実装に適している。デバイスドライバプログラムでも多用されている。Webアプリケーションでも並行計算を実現するための非同期処理で活用されている。 ここで言うイベントとは、マウスクリックやキーボード押下によるユーザー操作、センサーやシグナル受信によるハードウェア入力、走行スレッドや発生トランザクションからのメッセージ受信を指している。プロセスの実行とは、スレッドの開始や手続き/関数の呼出しを指している。
オブジェクト指向プログラミング
オブジェクト指向プログラミング(オブジェクトしこうプログラミング、, OOP)とは、「オブジェクト」という概念に基づいたプログラミングパラダイムの一つである。 OOPでは、相互に作用するオブジェクトを組み合わせてプログラムを設計する。 OOPの方法として、クラスベースOOPとプロトタイプベースOOPがある。 クラスベースOOPでは、オブジェクトが属する集合としてクラスを定義し、クラス定義からそのインスタンスとしてオブジェクトを生成する。 プロトタイプベースOOPでは既存のオブジェクト(プロトタイプ)を複製し、プロトタイプの複製に変更を加えることで様々な対象を表すオブジェクトを生成する。 広く使われているプログラミング言語の多く、例えばC++やJavaやPythonなどは、マルチパラダイムであるが、程度の差はあれ、オブジェクト指向プログラミングをサポートしており、大抵は命令型や手続き型プログラミングとの組み合わせで用いられる。
シュプリンガー・サイエンス・アンド・ビジネス・メディア
シュプリンガー・サイエンス・アンド・ビジネス・メディア(Springer Science+Business Media, Springer)は、科学(Science)、技術(Technology、工学など)、医学(Medicine)、すなわちSTM関連の書籍、電子書籍、査読済みジャーナルを出版するグローバル企業である。シュプリンガーはまた、"SpringerLink"(「シュプリンガー・リンク」) 、"SpringerProtocols"(「」) 、"SpringerImages"(「シュプリンガー・イメージ」) 、"SpringerMaterials"(「シュプリンガー・マテリアル」) などいくつかの科学データベース・サービスのホスティングも行っている。
見る Spec Sharpとシュプリンガー・サイエンス・アンド・ビジネス・メディア
C Sharp
C#(シーシャープ)は、マイクロソフトが開発した、汎用のマルチパラダイムプログラミング言語である。C#は、Javaに似た構文を持ち、C++に比べて扱いやすく、プログラムの記述量も少なくて済む。また、C#は、Windowsの.NET Framework上で動作することを前提として開発された言語であるが、2023年現在はクロスプラットフォームな.NETランタイム上で動作する。 デスクトップ・モバイルを含むアプリケーション開発や、ASP.NETをはじめとするWebサービスの開発フレームワーク、ゲームエンジンのUnityでの採用事例などもある。 マルチパラダイムをサポートする汎用高レベルプログラミング言語で、静的型付け、タイプセーフ、スコープ、命令型、宣言型、関数型、汎用型、オブジェクト指向(クラスベース)、コンポーネント指向のプログラミング分野を含んでいる。
CodePlex
CodePlex は、マイクロソフトが運営するオープンソースを含む開発プロジェクトのホスティングウェブサイト。ウィキページがあり、バージョン管理システムとしてはMercurial、Subversion、Team Foundation Serverを使い、会議フォーラム、バグ管理システム、プロジェクトタギング、RSSサポート、統計情報、リリース機能などを備えている。 2006年5月、最初のベータ版が公開され、6月には公式リリースとなった。その後3週間ごとに新機能を追加していった。2009年11月23日現在、12,535 のプロジェクトがある。 しかし2017年4月にはCodePlexの年内サービス終了がアナウンスされ、2018年1月30日にアーカイブサイトへ置き換えられ終了した。
Eiffel
Eiffel(アイフェル、エッフェル)は頑健なソフトウェアの生産に注力したオブジェクト指向プログラミング言語である。
静的型付け
静的型付け(せいてきかたづけ、static typing)は、値やオブジェクトの型安全性を、コンパイル時に検証するというコンピュータプログラミングの型システムの方法である。型の検査はソースコードの解析によって行われる。変数代入、変数束縛、関数適用、型変換といったプログラム記述箇所での型安全性がチェックされる。型エラーの場合は、コンパイルエラーに繋げられることが多い。 対義語は動的型付けであり、こちらでは値やオブジェクトの型安全性を実行時に検証する。型の検査はランタイムシステムの実行時型情報(RTTI)の照会などによる実行時プロセス上の解析で行われる。
静的コード解析
静的コード解析 (せいてきコードかいせき、static code analysis) または静的プログラム解析 (static program analysis) とは、コンピュータのソフトウェアの解析手法の一種であり、実行ファイルを実行することなく解析を行うこと。逆にソフトウェアを実行して行う解析を動的プログラム解析と呼ぶ。静的コード解析はソースコードに対して行われることが多いが、少数ながらオブジェクトコードに対して行う場合もある。また、この用語は以下に列挙するツールを使用した解析を意味することが多い。人間が行う作業はインスペクション、コードレビューなどと呼ぶ。日本語では静的コード分析とも訳される。
関数型プログラミング
関数型プログラミング(かんすうがたプログラミング、functional programming)とは、数学的な意味での関数を主に使うプログラミングのスタイルである。 functional programming は、関数プログラミング(かんすうプログラミング)などと訳されることもある。 (functional programming language)とは、関数型プログラミングを推奨しているプログラミング言語である。略して関数型言語(functional language)ともいう。
自動定理証明
アルゴンヌ国立研究所は1960年代以降2000年代まで、自動定理証明のリーダーだった。 自動定理証明(じどうていりしょうめい、automated theorem proving, ATP)とは、自動推論 (AR) の中でも最も成功している分野であり、コンピュータプログラムによって数学的定理に対する証明を発見すること。ベースとなる論理によって、定理の妥当性を決定する問題は簡単なものから不可能なものまで様々である。
Singularity
Singularity は マイクロソフトリサーチ が2003年から実験的に開発しているオペレーティングシステム (OS)。高度なディペンダブルOSとすることを目標とし、カーネルやデバイスドライバ、アプリケーションも全てマネージコードで書かれている。
構造化プログラミング
は、コンピュータプログラムの処理手順の明瞭化、平易化、判読性向上を目的にしたプログラミング手法である。一般的には順接、分岐、反復の三種の制御構造(control structures)によって処理の流れを記述することと認識されている。制御構造は制御構文、構造化文(structured statement)、制御フロー文(control flow statement)とも呼ばれる。また、プログラムを任意に分割した部分プログラム(サブルーチンとコードブロック)の階層的な組み合わせによるプログラムの構造化も指している。 このプログラミング手法の普及に貢献したのは、1968年の計算機科学者エドガー・ダイクストラによるACM機関紙への投書「Go To Statement Considered Harmful」と言われている。しかし同じくダイクストラが、1969年度NATOソフトウェア工学会議で発表した論文「Structured Programming」との混同を招いてこちら側の名称で知られるようになった。現在に到るまでの国内外の多くの書籍で、構造化プログラミングは制御構文に関する説明に結び付けられている。なお、1969年の論文内容はプログラム正当性検証のための設計技法を扱っており、トップダウン設計、段階的な抽象化、階層的なモジュール化、抽象データ構造と抽象ステートメントを連携させる共同詳細化といった考え方が提唱されていた。
.NET Framework
Microsoft.NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発していたアプリケーション開発・実行環境である。バージョン4.8をもって.NET Frameworkのメジャーアップデートは終了し、セキュリティとバグ修正のための更新は継続されるが、以降の新規開発における推奨環境は.NETとなった。 Windowsアプリケーションだけでなく、XML WebサービスやウェブアプリケーションなどWebベースのアプリケーションなども包括した環境となっている。一般に.NETという場合、.NET全体の環境を指す。現在はOSS版の.NET CoreやMonoも包括した技術仕様の総称を.NETと呼び、プロプライエタリの初期から存在する従来のWindows専用実装のみを.NET Frameworkと呼んで区別している。
Sing Sharp 別名。

