ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

抽象化 (計算機科学)

索引 抽象化 (計算機科学)

抽象化(ちゅうしょうか、Abstraction)は、計算機科学において詳細を捨象し、一度に注目すべき概念を減らすことおよびその仕組みである。 この概念は数学における「抽象化」からのアナロジーである。数学での抽象化技法の起源は数学的定義である。例えば、コンピュータでも数学でも、数はプログラミング言語上の概念であり、数学上の概念でもある。数の計算概念は数学の概念に基づいているため、実装の詳細はハードウェアとソフトウェアに依存したとしても、それが制約とはならない。 大まかに言えば、抽象化は制御抽象化とデータ抽象化に分けられる。制御抽象化は動作の抽象化であり、データ抽象化はデータ構造の抽象化である。例えば、構造化プログラミングでの制御抽象化とは、サブプログラムや定式化された制御フローの使用を意味する。データ抽象化とは、本来ビット列であるデータを意味のある方法で扱うことを意味する。例えば、データ型の背景にある動機は抽象化である。オブジェクト指向プログラミングはデータとコードを同時に抽象化する試みと見ることもできる。.

92 関係: Ada健全性変数 (プログラミング)委譲定義実行ファイル九去法人工言語二分探索木仮想記憶形式手法ハードウェアハッシュテーブルバイナリポリモーフィズムモデリング言語モデル検査モジュールラムダ計算ラベル (プログラミング)ライブラリライスの定理ループ (プログラミング)レジスタ (コンピュータ)プログラミング言語プログラマプログラム意味論プロジェクトビジネスプロセスモデリングデータデータ型データモデリングデータベースデザインパターン (ソフトウェア)ドメイン固有言語制御構造アルゴリズムアプリケーションソフトウェアアセンブリ言語インスタンスインタプリタインタフェース (情報技術)エンドユーザーオペレーティングシステムオブジェクト (プログラミング)オブジェクト指向オブジェクト指向プログラミングカプセル化クラス (コンピュータ)コンパイラ...コンピューティングコンピュータ言語システム工学ジョエル・スポルスキジェネリックプログラミングスクリプト言語ソースコードソフトウェアソフトウェアアーキテクチャソフトウェアコンポーネントサーバサードパーティーサブルーチンC++Common Lisp Object System継承 (プログラミング)統一モデリング言語類推設計計算モデル計算機プログラムの構造と解釈計算機科学詳細化高階関数論理回路関数型言語電子回路連結リストJavaLindaLISPModula-2Self抽象化レイヤー抽象データ型抽象解釈束縛 (情報工学)構造化プログラミング機械語数学整数の合同 インデックスを展開 (42 もっと) »

Ada

Ada(エイダ)は、強力な言語機能を豊富に持ち、高度な型の体系をもつ、プログラミング言語の一つである。構文はAlgol系である。 史上初のプログラマとされるエイダ・ラブレスの名前にちなんでAdaと命名されているため、ADAと表記するのは誤り。 フリーのコンパイラとしては、GNATなどがある。.

新しい!!: 抽象化 (計算機科学)とAda · 続きを見る »

健全性

健全性(けんぜんせい、Soundness)は、論証が次の属性を持つことと同値である。.

新しい!!: 抽象化 (計算機科学)と健全性 · 続きを見る »

変数 (プログラミング)

プログラミングにおいて、変数(へんすう、variable)とは、プログラムのソースコードにおいて、扱われるデータを一定期間記憶し必要なときに利用できるようにするために、データに固有の名前を与えたものである。 一人一人の人間が異なる名前によって区別されるように、一つ一つの変数も名前によって区別される。これにより、複数のデータを容易に識別することができる。変数名は一般に(字句的には)識別子である、ないし、変数の識別子のことを変数名という。一般に、変数が表しているデータをその変数の値(あたい)という。.

新しい!!: 抽象化 (計算機科学)と変数 (プログラミング) · 続きを見る »

委譲

委譲 (delegation) とはオブジェクト指向プログラミングにおいて、あるオブジェクトの操作を一部他のオブジェクトに代替させる手法のこと。.

新しい!!: 抽象化 (計算機科学)と委譲 · 続きを見る »

定義

定義(ていぎ)は、一般にコミュニケーションを円滑に行うために、ある言葉の正確な意味や用法について、人々の間で共通認識を抱くために行われる作業。一般的にそれは「○○とは・・・・・である」という言い換えの形で行われる。基本的に定義が決められる場合は1つである。これは、複数の場合、矛盾が生じるからである。.

新しい!!: 抽象化 (計算機科学)と定義 · 続きを見る »

実行ファイル

実行ファイル(じっこうファイル、Executable、Executable file)とは、コンピュータがプログラムとして解釈実行できるファイルである。実行可能ファイル、実行形式ファイル、あるいは単に実行形式とも呼ばれる。 多くの場合、特定のCPUの機械語を格納したバイナリ形式である(この形式の実行ファイルを単に「バイナリ(ファイル)」と呼ぶこともある)。あるファイルが実行ファイルかどうかは、主に規約の問題である。オペレーティングシステムによっては実行ファイルであることを示すファイル名の規約が存在する(拡張子 ".bin" ".exe"など)。あるいはファイルのメタデータで実行ファイルかどうかを示す(例えばUNIX系オペレーティングシステムのファイルパーミッションビット)。 最近のアーキテクチャでは、実行ファイルにはプログラム自体に含まれない情報も格納される。例えば、実行に必要な環境についての情報、デバッグ情報、シンボル情報などである。 実行ファイルには特定のオペレーティングシステムのシステムコールを呼び出すコードが含まれることもある。つまり実行ファイルはプロセッサ固有であるだけでなくオペレーティングシステム固有でもある。 ソースファイルと実行ファイルの違いはあいまいである。というのもソースから実行形式への変換が暗黙のうちに行われることがあるためである。インタプリタのファイル(シェルスクリプトやバッチファイルを含む)は、厳密に言えばインタプリタプログラムが解釈する命令を与えるものである。.

新しい!!: 抽象化 (計算機科学)と実行ファイル · 続きを見る »

九去法

九去法(きゅうきょほう、くきょほう、casting out nines)とは、整数の四則演算の検算の一種である。入力と出力の数字根を求めることで、その計算が正しいかどうかを確認するテストになる。非常に単純な方法なので、その数学的意味を理解できなくても活用可能である。.

新しい!!: 抽象化 (計算機科学)と九去法 · 続きを見る »

人工言語

人工言語(じんこうげんご、constructed language 又は conlang、artificial language)とは、個人や団体などによって語彙や文法が人為的に作られた言語の総称である。.

新しい!!: 抽象化 (計算機科学)と人工言語 · 続きを見る »

二分探索木

二分探索木 二分探索木(にぶんたんさくぎ、binary search tree)は、コンピュータプログラムにおいて、「左の子孫の値 ≤ 親の値 ≤ 右の子孫の値」という制約を持つ二分木である。探索木のうちで最も基本的な木構造である。.

新しい!!: 抽象化 (計算機科学)と二分探索木 · 続きを見る »

仮想記憶

仮想記憶(かそうきおく、Virtual Memory、バーチャルメモリ)とは、コンピュータ分野におけるメモリ管理の仮想化技法の一種であり、オペレーティングシステムなどが物理的なメモリを、アプリケーション・ソフトウェア(プロセスなど)に対して、専用の連続した主記憶装置に見えるように提供する。 この技術により、物理的な主記憶装置に加えてハードディスク装置等の補助記憶装置を併用すれば、物理的な主記憶装置よりも大きな仮想メモリを提供する事ができる。またアプリケーション・プログラム側は、物理メモリ上のアドレスを意識しなくて良いため、マルチタスクの実現が容易である。このため現代のオペレーティングシステムの多くが仮想記憶をサポートしている。 仮想的に与えられたアドレスを仮想アドレス (virtual address) または論理アドレス (logical address)、実記憶上で有効なアドレスを物理アドレス (physical address) または実アドレス (real address) という。仮想アドレスの範囲を仮想アドレス空間、物理アドレスの範囲を物理アドレス空間という。.

新しい!!: 抽象化 (計算機科学)と仮想記憶 · 続きを見る »

形式手法

Z言語を使った形式仕様記述の例 形式手法(けいしきしゅほう、formal methods)は、ソフトウェア工学における数学を基盤としたソフトウェアおよびハードウェアシステムの仕様記述、開発、検証の技術である。ソフトウェアおよびハードウェア設計への形式手法の適用は、他の工学分野と同様、適切な数学的解析を行うことで設計の信頼性と頑健性が向上するという予想によって動機付けられている。 形式手法は理論計算機科学の様々な成果を基盤として応用したものであり、数理論理学、形式言語、オートマタ理論、プログラム意味論、型システム、代数的データ型などを活用して、ソフトウェアおよびハードウェアの仕様記述とその検証を行う。.

新しい!!: 抽象化 (計算機科学)と形式手法 · 続きを見る »

ハードウェア

ハードウェア (hardware) とは、システムの物理的な構成要素を指す一般用語である。日本語では機械、装置、設備のことを指す。ソフトウェアとの対比語であり、単に「ハード」とも呼ばれる。.

新しい!!: 抽象化 (計算機科学)とハードウェア · 続きを見る »

ハッシュテーブル

ハッシュテーブルの例(名前をキーとして電話番号を検索) ハッシュテーブル (hash table) は、キーと値の組(エントリと呼ぶ)を複数個格納し、キーに対応する値をすばやく参照するためのデータ構造。ハッシュ表ともいう。ハッシュテーブルは連想配列や集合の効率的な実装のうち1つである。.

新しい!!: 抽象化 (計算機科学)とハッシュテーブル · 続きを見る »

バイナリ

バイナリ (binary) とは二進法のことであるが、コンピュータが処理・記憶するために2進化されたファイルまたはその内部表現の形式(バイナリデータ)のことを指して用いることが多い。 コンピュータが扱うすべてのデータはバイナリデータ(バイトの並び)であり、プレーンテキスト(または単にテキスト)もバイナリデータの一種ではあるが、通常バイナリとテキストは対比して用いられる。テキストとはデータの内容すべてを人間が読んで理解できる (human-readable) もの、バイナリとはそうでないものを指す。human-readableに対する語はmachine-readableだが、これは(機械的に読むことが可能であるように)フォーマットが定められているもの、という意味である。バイナリフォーマットではエンディアンなどに互換性・移植性の上で注意が必要であり、それを避けてテキスト形式で記録することも少なくない(UNIX哲学も参照。なお浮動小数点数やループした構造の表現など、テキスト形式にも注意が必要な点は多い)。バイナリエディタを用いると、バイナリファイルを1バイトずつの(16進法での)数値の並びとして表示・編集を行うことができる。バイナリのファイルでも多くは部分的にテキストとして読み取れる箇所が存在するため、そういった箇所のみを抜き出すstringsというユーティリティもある。 バイナリファイルにはたとえば画像ファイルや音声ファイル、圧縮されたファイルなどがある。バイナリファイルの中にはファイルの先頭にメタ情報(ヘッダ)を持っているものがある。たとえばGIFファイルは複数の画像を持つことができ、ファイルの先頭でそれぞれの画像を区別する情報が記述されている。そのようなメタ情報を持たないファイルはフラットバイナリファイルと呼ばれる。コンピュータプログラム関係では、テキストであるソースコードとの対比からコンパイルされたコード(オブジェクトファイルや実行ファイルなど。またそのような機械語(ネイティブバイナリ)に限らず、WebAssemblyやJavaなどのバイトコード類なども含む)のファイル等を指してバイナリと呼ばれることがしばしばある。プロプライエタリのソフトウェアは、バイナリの形態でさらに難読化を掛けて、販売されることが多い。 バイナリ形式でのデータの表現方法はさまざまなものがある。例えば、数値であれば0~9までの数をパターン化して記録するBCD、ゾーンビットと実際の数値、正の数か負の数かを記録する符号ビットからなるアンパック10進数(ゾーン10進数)や、実際の数値と符号ビットだけからなるパック10進数などがある。文字列の扱いとしては、ナル文字('\0')で終端する方法や、長さ(オクテット数、あるいは文字(符号点)の個数)を別に保持する、といった方式がある。前者では、'\0' を含むようなバイナリを「文字列」として扱うことができない。.

新しい!!: 抽象化 (計算機科学)とバイナリ · 続きを見る »

ポリモーフィズム

ポリモーフィズム()とは、プログラミング言語の型システムの性質を表すもので、プログラミング言語の各要素(定数、変数、式、オブジェクト、関数、メソッドなど)についてそれらが複数の型に属することを許すという性質を指す。ポリモルフィズム、多態性、多相性、多様性とも呼ばれる。対義語はモノモーフィズム(Monomorphism)、単態性、単相性で、プログラミング言語の各要素が唯一つの型に属するという性質を指す。 ポリモーフィズムは次のようないくつかの種類に分けられる。.

新しい!!: 抽象化 (計算機科学)とポリモーフィズム · 続きを見る »

モデリング言語

モデリング言語は、ルールの一貫したセットで定義された構造によって情報、知識あるいはシステムを表現するため使われるあらゆる人工言語である。そのルールは、その構造における構成要素の意味を解釈するため使われる。.

新しい!!: 抽象化 (計算機科学)とモデリング言語 · 続きを見る »

モデル検査

モデル検査(Model Checking)とは、形式システムをアルゴリズム的に検証する手法である。ハードウェアやソフトウェアの設計から導出されたモデルが形式仕様を満足するかどうか検証する。仕様は時相論理の論理式の形式で記述することが多い。.

新しい!!: 抽象化 (計算機科学)とモデル検査 · 続きを見る »

モジュール

モジュール(module)とは、工学などにおける設計上の概念で、システムを構成する要素となるもの。いくつかの部品的機能を集め、まとまりのある機能を持った部品のこと。モジュールに従っているものをモジュラー (modular)という。 入出力を絞り込み、標準化することで、システム開発を「すり合わせ」から「モジュールの組合わせ」にすることができる。.

新しい!!: 抽象化 (計算機科学)とモジュール · 続きを見る »

ラムダ計算

ラムダ計算(ラムダけいさん、lambda calculus)は、計算模型のひとつで、計算の実行を関数への引数の評価(evaluation)と適用(application)としてモデル化・抽象化した計算体系である。ラムダ算法とも言う。関数を表現する式に文字ラムダ (λ) を使うという慣習からその名がある。アロンゾ・チャーチとスティーヴン・コール・クリーネによって1930年代に考案された。1936年にチャーチはラムダ計算を用いて一階述語論理の決定可能性問題を(否定的に)解いた。ラムダ計算は「計算可能な関数」とはなにかを定義するために用いられることもある。計算の意味論や型理論など、計算機科学のいろいろなところで使われており、特にLISP、ML、Haskellといった関数型プログラミング言語の理論的基盤として、その誕生に大きな役割を果たした。 ラムダ計算は1つの変換規則(変数置換)と1つの関数定義規則のみを持つ、最小の(ユニバーサルな)プログラミング言語であるということもできる。ここでいう「ユニバーサルな」とは、全ての計算可能な関数が表現でき正しく評価されるという意味である。これは、ラムダ計算がチューリングマシンと等価な数理モデルであることを意味している。チューリングマシンがハードウェア的なモデル化であるのに対し、ラムダ計算はよりソフトウェア的なアプローチをとっている。 この記事ではチャーチが提唱した元来のいわゆる「型無しラムダ計算」について述べている。その後これを元にして「型付きラムダ計算」という体系も提唱されている。.

新しい!!: 抽象化 (計算機科学)とラムダ計算 · 続きを見る »

ラベル (プログラミング)

プログラミング言語において、ラベルとは特定の文を表すためにつけられる識別子である。 一般に、goto文によるジャンプや多重ループから一度に抜けるときといった、処理の移動先を指定する場合などに用いられる。古典的BASICでは、行番号自体がラベルになっている。Pascal、Cといった構造化言語では、「スパゲッティプログラム」の原因であるとしてgoto文の使用を避けるが、大域脱出などの目的で残されているため、ラベルもまた残されている。 Pascalでの例(Cでの例はgoto文参照) procedure HogeHoge; label 666; var done, flag: boolean;...

新しい!!: 抽象化 (計算機科学)とラベル (プログラミング) · 続きを見る »

ライブラリ

ライブラリ()は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶ時は、それ単体ではプログラムとして作動させることはできない実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイバでひとまとめにして利用する。図書館()と同様にプログラム(算譜)の書庫であるので、索引方法が重要である。 また、ソフトウェア以外の再利用可能なものの集合について使われることもある。.

新しい!!: 抽象化 (計算機科学)とライブラリ · 続きを見る »

ライスの定理

ライスの定理(ライスのていり、Rice's theorem)は、計算機科学における計算可能関数の理論に関する定理で、 定められた性質Fを満たすかどうかを任意の部分計算可能関数について判定する方法は(Fが自明な場合を除いて)存在しない、というもの。 名称の由来は Henry Gordon Rice から。.

新しい!!: 抽象化 (計算機科学)とライスの定理 · 続きを見る »

ループ (プログラミング)

この記事では、コンピュータプログラムにおけるループ (loop) について説明する。ループとは、特定の条件下において特定の処理を繰り返すこと、あるいはそのように作られた制御構造のことを言う。日本語の名詞として「繰り返し」とも。特定の条件が成立している限り、特定の処理を繰り返し何度でも実行する。逆に言えば、条件が成立しなくなったときに、処理を中止する。 ループの、特別な形あるいは最も一般的な形として、無条件に繰り返す無限ループがある。詳細は無限ループの記事を参照。 ループは、繰り返しを継続するかどうかを判断するための条件式(反復条件)を持つ。反復条件がループ構造の始まりに置かれる場合、そのようなループ構造のことを前判定ループと呼ぶ。一方、反復条件がループ構造の後ろに置かれる場合、これを後判定ループと呼ぶ。しかし結局のところ以上のような分類は、プログラミング言語の発展の初期に、まず最初にどちらか片方だけが作られ、後から別のものが追加されたという歴史的由来に過ぎず、ループの「内側」のどこかに「ループの脱出」がある、という構造に一般化できるので前判定後判定という分類は本質ではない(実際に、たとえばVisual Basicの「Do...Loop 文」は、どの場合にも対応するよう対称的に作られている)。単にその「内側のどこか」が、その前端か後端にある場合が多い、というだけである。 むしろ、ループの先頭で何らかのデータをファイルから読み込んで計算を開始し、その途中で、繰り返しのその回を打ち切り次の繰り返しに進む、あるいは繰り返しを終わる、といったこともよくあり(ダイクストラは、最後が途中で終わる場合を「n+1/2回の反復」と名づけた)、さらには入れ子になった内側のループの中から外側のループを終わる、というような処理にどう対応するか、が思案のしどころである。 なお。.

新しい!!: 抽象化 (計算機科学)とループ (プログラミング) · 続きを見る »

レジスタ (コンピュータ)

レジスタ(register)はコンピュータのプロセッサなどが内蔵する記憶回路で、制御装置や演算装置や実行ユニットに直結した、操作に要する速度が最速の、比較的少量のものを指す。.

新しい!!: 抽象化 (計算機科学)とレジスタ (コンピュータ) · 続きを見る »

プログラミング言語

プログラミング言語(プログラミングげんご、programming language)とは、コンピュータプログラムを記述するための形式言語である。なお、コンピュータ以外にもプログラマブルなものがあることを考慮するならば、この記事で扱っている内容については、「コンピュータプログラミング言語」(computer programming language)に限定されている。.

新しい!!: 抽象化 (計算機科学)とプログラミング言語 · 続きを見る »

プログラマ

プログラマ(Programmer)とは、コンピューターのプログラムを作成する人全般を指す。プログラマーとも表記される(#プログラマに対する呼称参照)。.

新しい!!: 抽象化 (計算機科学)とプログラマ · 続きを見る »

プログラム意味論

プログラム意味論(program semantics)とは、計算機科学(特に理論計算機科学と分類されることもある)の一分野で、プログラミング言語の意味と計算モデルに関する分野である。形式的なものは、プログラミング言語の形式意味論とも呼ばれる。標準規格等では形式的でなく意味論を与えているものも多い。.

新しい!!: 抽象化 (計算機科学)とプログラム意味論 · 続きを見る »

プロジェクト

プロジェクト()は、何らかの目標を達成するための計画を指す。小さな目標の達成のためのものではなく、大きな目標を集団で実行するものを指すことがある。その計画の実現のための個々のタスク(仕事)の実行までを含めて指すこともある。 既存の組織の枠をはずし、各組織から臨時に人を集めて実行する集団をプロジェクトと呼ぶこともある。これらは、英語でも同様である。ソフトウェアの設計では、統合設計環境における設計単位をプロジェクトと呼ぶ。.

新しい!!: 抽象化 (計算機科学)とプロジェクト · 続きを見る »

ビジネスプロセスモデリング

ビジネスプロセスモデリング(Business Process Modeling)は現在のプロセスを分析・改善するための、事業体によるプロセスモデリング活動である。 ビジネスプロセスモデリングは典型的に、事業分析家とプロセスの効率と品質を改善しようとするマネージャによって実行される。ビジネスプロセスモデリングによって行われるプロセス改善は、ビジネスプロセスをモデル化することに必要な共通の駆動力である。 変更管理プログラムは、典型的に改善された事業プロセスを実践に移すことに関わる。大きなプラットフォームベンダーから先進技術を伴った、完全実行可能な(そしてシミュレーションや両方向エンジニアリングの能力を持つ)ビジネスプロセスモデリングのバージョンが連日現実に近づいてきている。.

新しい!!: 抽象化 (計算機科学)とビジネスプロセスモデリング · 続きを見る »

データ

データ(data)とは、事実や資料をさす言葉。言語的には複数形であるため、厳密には複数の事象や数値の集まりのことを指し、単数形は datum(データム)である。.

新しい!!: 抽象化 (計算機科学)とデータ · 続きを見る »

データ型

データ型(データがた、)とは、(コンピュータにおける)データ(値)の種類に関する分類である。データタイプとも。 具体的にいうと、たとえば 0, 1, 2, -42 といったような値は整数型であり、"foo", "Hello" といったような値は文字列型である。プログラミングなどにおいて、まずデータオブジェクトや関数などの「値」について、またさらに、それらに関連付け(束縛)される変数や定数、リテラル、それらを組合せる演算子、さらにそれらからなる式といった構文上の要素の型が、データ型の議論の対象となる。.

新しい!!: 抽象化 (計算機科学)とデータ型 · 続きを見る »

データモデリング

データモデリング(data modeling)は、コンピュータ科学の文脈では、何らかのデータモデリング方法論を適用してデータモデルのインスタンスを作る過程である。 データモデリング方法論は、データモデリングを形式的に記述したものである。 現在までに考案されたデータモデルの種類としては、次のようなものがある。.

新しい!!: 抽象化 (計算機科学)とデータモデリング · 続きを見る »

データベース

データベース(database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指すが、紙の住所録などをデータベースと呼ぶ場合もある。コンピュータを使用したデータベース・システムでは、データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。.

新しい!!: 抽象化 (計算機科学)とデータベース · 続きを見る »

デザインパターン (ソフトウェア)

フトウェア開発におけるデザインパターン(型紙(かたがみ)または設計パターン、design pattern)とは、過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し、名前をつけ、再利用しやすいように特定の規約に従ってカタログ化したものである。.

新しい!!: 抽象化 (計算機科学)とデザインパターン (ソフトウェア) · 続きを見る »

ドメイン固有言語

ドメイン固有言語(ドメインこゆうげんご、domain-specific language、DSL)とは、特定のタスク向けに設計されたコンピュータ言語である。 DSL は一種類のタスクをうまく実行することに集中したものであり、古くから存在した。何らかのプログラミング言語それ自体の構文と処理系を利用する internal DSL(あるいは embedded DSL)と、独立した構文と処理系を持つ external DSL に大別されるが、そのいずれにしても近年の、自由度と機能が高いプログラミング言語により手軽に扱えるようになったことから広まっている。ドメイン固有モデリングの支持者によれば、ドメイン固有モデリングの発達と共にDSLという用語も広く知られるようになってきた、とされる。実際にはドメイン固有言語はモデリングとは特別な関係が何もあるわけでもなく(ドメイン固有モデリングのためのドメイン固有言語、といったものはあるが)、モデリング以外にもあらゆる分野のための言語がある。 例えば、ハードウェア記述言語のVerilog HDLやVHDL、表計算ソフトのマクロ、データベースへの問い合わせ言語(SQLなど)、文脈自由文法を記述するBNFや正規文法を記述する正規表現、図を作成する言語を構築する 、音響や音楽の合成用のCsound、グラフ(ネットワーク)描画システムGraphvizのDOT言語、依存関係解決用のmakeなどがある。.

新しい!!: 抽象化 (計算機科学)とドメイン固有言語 · 続きを見る »

制御構造

制御構造(せいぎょこうぞう)は、コンピュータ・プログラミング言語、特に手続き型プログラミングや命令型プログラミングにおいて、ループや飛び越しなどといった、手続き(プロシージャ)中の実行順を順次実行から変化させたり、サブルーチン呼出しやその戻り、などといった制御を行う「文 (プログラミング) 」などの構造(言語の構成要素)である。 制御構造の種類は言語によって様々だが、典型的には以下のようなものがある(用語「ブロック」については、ブロック (プログラミング) の記事を参照)。.

新しい!!: 抽象化 (計算機科学)と制御構造 · 続きを見る »

アルゴリズム

フローチャートはアルゴリズムの視覚的表現としてよく使われる。これはランプがつかない時のフローチャート。 アルゴリズム(algorithm )とは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。算法と訳されることもある。 「問題」はその「解」を持っているが、アルゴリズムは正しくその解を得るための具体的手順および根拠を与える。さらに多くの場合において効率性が重要となる。 コンピュータにアルゴリズムをソフトウェア的に実装するものがコンピュータプログラムである。人間より速く大量に計算ができるのがコンピュータの強みであるが、その計算が正しく効率的であるためには、正しく効率的なアルゴリズムに基づいたものでなければならない。.

新しい!!: 抽象化 (計算機科学)とアルゴリズム · 続きを見る »

アプリケーションソフトウェア

アプリケーションスイートである。 アプリケーションソフトウェア(application software, 応用ソフトウェア)は、アプリケーション(応用)プログラムともいい、ワープロや表計算などといった、コンピュータを「応用」する目的に応じた、コンピュータ・プログラムである。なお、それに対してシステムプログラムは、アプリケーションプログラムに対して処理実行のための計算機資源を抽象化して提供する、などのインフラとしての役割のプログラムであり、ユーザーが要求する情報処理を直接実行するものではなく、ユーザーが普段は意識することはない裏方的な存在がシステムプログラムである。.

新しい!!: 抽象化 (計算機科学)とアプリケーションソフトウェア · 続きを見る »

アセンブリ言語

モトローラ MC6800 のアセンブリ言語のソースコード アセンブリ言語(アセンブリげんご、英: assembly language)とは、コンピュータ、マイクロコントローラ、その他のプログラム可能な機器を動作させるための機械語を人間にわかりやすい形で記述する、代表的な低水準言語である。なお、英語の assembly とは「組立」という意味である。.

新しい!!: 抽象化 (計算機科学)とアセンブリ言語 · 続きを見る »

インスタンス

計算機科学でのインスタンス()とは実体のことをいう。は英語で「実例」を意味する。.

新しい!!: 抽象化 (計算機科学)とインスタンス · 続きを見る »

インタプリタ

インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコードないし中間表現を逐次解釈しながらするプログラムのこと。.

新しい!!: 抽象化 (計算機科学)とインタプリタ · 続きを見る »

インタフェース (情報技術)

インタフェース(interface)は、ものごとの境界となる部分と、その境界でのプロトコルを指す。コンピュータなどでは、コンピュータシステム内、あるいはシステム間のインタフェースや、人間と機械の間のインタフェース(ヒューマンマシンインタフェース)などがある。他分野の専門用語の借用になるが、界面という訳語がある。.

新しい!!: 抽象化 (計算機科学)とインタフェース (情報技術) · 続きを見る »

エンドユーザー

ンドユーザー()とは、経済学と商業において、「商品を使う人」を意味する言葉である。エンドユーザーの議論は一般的にコンピュータアプリケーションに関する文脈で行われる。.

新しい!!: 抽象化 (計算機科学)とエンドユーザー · 続きを見る »

オペレーティングシステム

ペレーティングシステム(Operating System、OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)のために、ソフトウェアの中でも基本的、中核的位置づけのシステムソフトウェアである。通常、OSメーカーが組み上げたコンピュータプログラムの集合として、作成され提供されている。 オペレーティングシステムは通常、ユーザーやアプリケーションプログラムとハードウェアの中間に位置し、ユーザーやアプリケーションプログラムに対して標準的なインターフェースを提供すると同時に、ハードウェアなどの各リソースに対して効率的な管理を行う。現代のオペレーティングシステムの主な機能は、ファイルシステムなどの補助記憶装置管理、仮想記憶などのメモリ管理、マルチタスクなどのプロセス管理、更にはGUIなどのユーザインタフェース、TCP/IPなどのネットワーク、などがある。オペレーティングシステムは、パーソナルコンピュータからスーパーコンピュータまでの各種のコンピュータや、更にはスマートフォンやゲーム機などを含む各種の組み込みシステムで、内部的に使用されている。 製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 OSの中で、タスク管理やメモリ管理など特に中核的な機能の部分をカーネル、カーネル以外の部分(シェルなど)をユーザランドと呼ぶ事もある。 現代の主なOSには、Microsoft Windows、Windows Phone、IBM z/OS、Android、macOS(OS X)、iOS、Linux、FreeBSD などがある。.

新しい!!: 抽象化 (計算機科学)とオペレーティングシステム · 続きを見る »

オブジェクト (プログラミング)

ブジェクト(object)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象を抽象化する概念である。.

新しい!!: 抽象化 (計算機科学)とオブジェクト (プログラミング) · 続きを見る »

オブジェクト指向

ブジェクト指向(オブジェクトしこう)とは、オブジェクト同士の相互作用として、システムの振る舞いをとらえる考え方である。英語の object-oriented (直訳は、「対象物志向の」「目的重視の」という意味の形容詞) の日本語訳である。 オブジェクト指向の枠組みが持つ道具立ては、一般的で強力な記述能力を持つ。複雑なシステム記述、巨大なライブラリ(特に部品間で緊密で複雑な相互関係を持つもの)の記述においては、オブジェクト指向の考え方は必須である。.

新しい!!: 抽象化 (計算機科学)とオブジェクト指向 · 続きを見る »

オブジェクト指向プログラミング

ブジェクト指向プログラミング(オブジェクトしこうプログラミング、)は、コンピュータ・プログラミングのパラダイムのひとつで、オブジェクト指向の概念や手法を取り入れたものである。プログラムを、データとその振舞が結び付けられたオブジェクトの集まりとして構成する、などといった特徴がある。このパラダイムを指向しているプログラミング言語がオブジェクト指向プログラミング言語である。.

新しい!!: 抽象化 (計算機科学)とオブジェクト指向プログラミング · 続きを見る »

カプセル化

プセル化(カプセルか、)とは、オブジェクト指向を構成する概念の一つ。オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう。データ隠蔽と勘違いされやすいが、データ隠蔽はカプセル化の具体例の1つにすぎず、同一のものではない。.

新しい!!: 抽象化 (計算機科学)とカプセル化 · 続きを見る »

クラス (コンピュータ)

ラス()は、クラスベースのオブジェクト指向においてオブジェクトの設計図にあたるもの。抽象データ型の一つ。クラスから生成したオブジェクトのことをインスタンスという。 クラスには、インスタンスの保持するデータ(メンバ変数、フィールド(UMLでは「属性」ともいう))と操作(メソッド、メンバ関数)が記述される。 クラスは、継承・ポリモーフィズム・カプセル化などの、オブジェクト指向プログラミングにおける重要な概念を実現する強力な手段である。.

新しい!!: 抽象化 (計算機科学)とクラス (コンピュータ) · 続きを見る »

コンパイラ

ンパイラ(英:compiler)とは、コンピュータ・プログラミング言語の処理系(言語処理系)の一種で、高水準言語によるソースコードから、機械語に(あるいは、元のプログラムよりも低い水準のコードに)変換するプログラムである。.

新しい!!: 抽象化 (計算機科学)とコンパイラ · 続きを見る »

コンピューティング

階差機関。多項式関数の解を計算する機械 とある大学の計算機室 (2003) ウィキメディア財団のサーバ コンピューティング(computing)の古来の意味は「数えること」と「計算すること」であり、算術ないしは数学の計算を指した。現在は転じてコンピュータによる数値計算や、より広くデータ処理(data processing)や情報処理 (information processing) といったコンピュータを使う活動全般も指すことがある。 日本語ではどちらも「計算」と呼んでいるが、対応する英語にはcalculationとcomputationがある。条件分岐などを伴う複雑な計算がcalculationではなくcomputationである。.

新しい!!: 抽象化 (計算機科学)とコンピューティング · 続きを見る »

コンピュータ言語

ンピュータ言語(コンピュータげんご)とは、コンピュータにおいて用いられる言語の総称である。一般に人工言語で、もっぱら形式言語である(親しみやすさなどの目的で、自然言語風にデザインされることもある)。 プログラムを記述するためのプログラミング言語の一群が最も有名であり、そのため「コンピュータ言語」と「プログラミング言語」は同じ意味で使われることもある。しかし、コンピュータ言語としては他にもハードウェア記述言語や、マークアップ言語のようなデータ記述言語などがあり、それらは「プログラミング言語」ではない。.

新しい!!: 抽象化 (計算機科学)とコンピュータ言語 · 続きを見る »

システム工学

テム工学(システムこうがく、systems engineering)とは、システムの設計、制御、および効率などを研究する学問(工学)である。ここでの「システム」の定義としては、システムの記事(システム#JIS Z 8115)などを参照のこと。工学として応用される実社会の具体例としては、工業プラントやロボットから、コンピュータを用いたシミュレーションゲームや人工補助脳(ロボットスーツに搭載されるもの)、会社組織や行政機関に至るまで、きわめて広範囲に及ぶ。システム工学は、個々の要素からシステムを合成するということと、複雑なシステムを解析するという、大きく分けて2つの目的がある。なおシステム科学も参照のこと。.

新しい!!: 抽象化 (計算機科学)とシステム工学 · 続きを見る »

ジョエル・スポルスキ

ョエル・スポルスキ ジョエル・スポルスキ(Joel Spolsky、1965年 - )は、米国のソフトウェアエンジニアで著作家である。ソフトウェア開発について論じたブログであるJoel on Softwareの著者として知られている。1991年から1994年にかけて、Microsoft Excelチームのプログラムマネージャとして活躍し、その後Fog Creek Softwareを創業した。.

新しい!!: 抽象化 (計算機科学)とジョエル・スポルスキ · 続きを見る »

ジェネリックプログラミング

ェネリック(総称あるいは汎用)プログラミング(generic programming)はデータ形式に依存しないコンピュータプログラミング方式である。.

新しい!!: 抽象化 (計算機科学)とジェネリックプログラミング · 続きを見る »

スクリプト言語

リプト言語(スクリプトげんご、scripting language)とは、アプリケーションソフトウェアを作成するための簡易的なプログラミング言語の一種を指す。 スクリプト(英語で「台本・脚本」の意味)とは、その簡易的な言語記述方法を指してそう呼ばれるようになった。.

新しい!!: 抽象化 (計算機科学)とスクリプト言語 · 続きを見る »

ソースコード

青で示されているのが有効なコードである。 ソースコード(source code)とは、コンピュータプログラミング言語で書かれた、コンピュータプログラムである文字列(テキストないしテキストファイル)のことである。.

新しい!!: 抽象化 (計算機科学)とソースコード · 続きを見る »

ソフトウェア

フトウェア(software)は、コンピューター分野でハードウェア(物理的な機械)と対比される用語で、何らかの処理を行うコンピュータ・プログラムや、更には関連する文書などを指す。ソフトウェアは、一般的にはワープロソフトなど特定の作業や業務を目的としたアプリケーションソフトウェア(応用ソフトウェア、アプリ)と、ハードウェアの管理や基本的な処理をアプリケーションソフトウェアやユーザーに提供するオペレーティングシステム (OS) などのシステムソフトウェアに分類される。.

新しい!!: 抽象化 (計算機科学)とソフトウェア · 続きを見る »

ソフトウェアアーキテクチャ

フトウェアアーキテクチャ(Software Architecture)は、ソフトウェアコンポーネント、それらの外部特性、またそれらの相互関係から構成される。また、この用語はシステムのソフトウェアアーキテクチャの文書化を意味することもある。ソフトウェアアーキテクチャの文書は開発依頼主とのコミュニケーションを容易にするもので、概要レベルの設計に関する早期の決定を促し、プロジェクト間でのコンポーネントとパターンの設計を再利用することを可能にする。.

新しい!!: 抽象化 (計算機科学)とソフトウェアアーキテクチャ · 続きを見る »

ソフトウェアコンポーネント

UML 2.0 のコンポーネント図で、2つのコンポーネントを表現した例。CheckoutコンポーネントはCardProcessingコンポーネントを使用している。 ソフトウェアコンポーネント(Software Componentry)は、ソフトウェアシステムの様々な機能を関心の分離によって分割したものである。システムを独立した結合の弱い再利用可能なコンポーネント群で構成する設計技法は Component-based software engineering (CBSE) と呼ばれ、ソフトウェア工学の一分野となっている。 コンポーネントの考え方は、サービス指向の起点となっている。例えば、Webサービスやサービス指向アーキテクチャ (SOA) ではソフトウェアコンポーネントの考え方を発展させサービスをコンポーネント化するという考え方をする。.

新しい!!: 抽象化 (計算機科学)とソフトウェアコンポーネント · 続きを見る »

サーバ

ウィキメディア財団のサーバ サーバあるいはサーバー(server)は、サービスを提供するコンピュータである。コンピュータ分野のクライアントサーバモデルでは、クライアントからの要求に対して情報や処理結果を提供する機能を果たす側のコンピュータやソフトウェアを指す。本稿ではこの意味で記載する。 サーバにはファイルサーバ、メールサーバ、Webサーバなど多数の用途や種類がある。更にサーバ用のコンピュータ機器(ハードウェア)などもサーバと呼ぶ場合がある。.

新しい!!: 抽象化 (計算機科学)とサーバ · 続きを見る »

サードパーティー

ードパーティー(third party)とは、第三者団体(企業、機関 等)のことである。「サード」は第三者の「第三」であり、非当事者、つまり、当事者からは独立した者ということである。いくつかの場合に使われるが、日本での使用はコンピュータ関連が多い。他分野では「第三者」と訳し分けないことが多い。.

新しい!!: 抽象化 (計算機科学)とサードパーティー · 続きを見る »

サブルーチン

ブルーチン(subroutine)は、コンピュータプログラミングにおいて、プログラム中で意味や内容がまとまっている作業をひとつの手続きとしたものである。繰り返し利用されるルーチン作業をモジュールとしてまとめたもので、呼び出す側の「主」となるもの(メインルーチン)と対比して「サブルーチン」と呼ばれる。サブプログラム (subprogram) と呼ばれることもある。また、「サブ」をつけずに「ルーチン」と呼ぶこともある。 プログラムのソース中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、キャッシュのような階層的メモリの設計を持つコンピュータ(現在のパソコンやワークステーションなどほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。.

新しい!!: 抽象化 (計算機科学)とサブルーチン · 続きを見る »

C++

C++(シープラスプラス)は、汎用プログラミング言語の一つである。日本語では略してシープラプラ、シープラなどとも呼ばれる。.

新しい!!: 抽象化 (計算機科学)とC++ · 続きを見る »

Common Lisp Object System

Common Lisp Object System(コモン リスプ オブジェクトシステム、略称 CLOS)は、ANSI Common Lisp (CL) の一部をなすオブジェクト指向プログラミング機能であり、他の類似の言語(EuLisp や Emacs Lisp)にも導入されている。当初アドオンとして提案され、ANSIの標準に組み込まれた。CLOS は強い型付けをもつ(無名クラスは許されない)動的(実行時に定義を変更できる)オブジェクトシステムであり、C++やJavaのような静的なオブジェクト指向言語とは大きく異なる。初期のLISPオブジェクトシステム(MIT Flavors や Common LOOPS)に影響されているが、より汎用的である。 LISPにオブジェクト指向を導入することは簡単である。2ページ程度のコードがあれば実現できる(Graham, 1994)。一方、オブジェクト指向LISPを柔軟で拡張性に富んだものに設計するのはより困難であった。CLOS は完全なオブジェクトシステムであり、オブジェクト指向風に実装されている。CLOS のオブジェクト指向実装は CLOS Metaobject Protocol (MOP) と呼ばれ、これによってカスタマイズや拡張が可能となっている。 Standard Method Combination の概念図.

新しい!!: 抽象化 (計算機科学)とCommon Lisp Object System · 続きを見る »

継承 (プログラミング)

継承(けいしょう、inheritance:インヘリタンス)とはオブジェクト指向を構成する概念の一つである。あるオブジェクトが他のオブジェクトの特性を引き継ぐ場合、両者の間に「継承関係」があると言われる。 主にクラスベースのオブジェクト指向言語で、既存クラスの機能、構造を共有する新たなクラスを派生することができ(サブクラス化)、そのようなクラスは「親クラス(スーパークラス)を継承した」という。具体的には変数定義や操作(メソッド)などが引き継がれる。またJavaのインタフェース継承のように機能セットの仕様のみを引き継ぐ場合もある。 一般的に、BがAを継承する場合、B is a A. (BはAの一種である)という意味的な関係(Is-a関係)が成り立つ。従って、同じふるまいを持つからと言って、意味的に無関係なクラス間に継承関係を持たせるのは適切でない場合が多い。 プロトタイプベースのオブジェクト指向言語(Self、NewtonScript等)のように「クラス」という概念を持たない場合でも、クローン元となるオブジェクトを指して「継承」と呼ぶ。 継承と類似の概念に「委譲」があるが、継承では一度定まった継承関係は通常変更されないのに対して、委譲対象は必要に応じて変更されうるものである。 Is-a関係を持つ継承とは階層が異なる概念として集約 (aggregation) とコンポジション集約 (composition) があるが、これはクラス間の関係がHas-aである包含関係であり、クラス間の関係は継承よりも疎である。.

新しい!!: 抽象化 (計算機科学)と継承 (プログラミング) · 続きを見る »

統一モデリング言語

統一モデリング言語(とういつモデリングげんご、UML、英: Unified Modeling Language)は、主にオブジェクト指向分析や設計のための、記法の統一がはかられた(Unified)モデリング言語(Modeling Language)である。仕様記述言語であるなどとされることもあるが、統一されているのは構文に相当する記法だけで、仕様を表現するような意味が形式的に与えられていない図もあるので、形式仕様記述言語ではない。 最初期の版はラショナルにおいて、グラディ・ブーチ、イヴァー・ヤコブソン、ジェームズ・ランボーの3人が策定した。この3人はスリーアミーゴスと呼ばれている。現在は Object Management Group(OMG) が管理しており、現在最も普及していると主張されている。2015年7月現在の最新版は UML 2.5 であり、ISO/IEC 19501:2005 として UML 1.4.2 を、また、ISO/IEC 19505-1:2012 ならびに ISO/IEC 19505-2:2012 として UML 2.4.1 を標準化している。 UML 2.0 以降では、ダイアグラム(図法)が13種類もあり(#UMLのダイアグラムを参照)、各種の図法を必要に応じて使い分けなければならない(というより、別に節を改めて説明しているが、単なる肥大化であり、単に必要ないものは無視すべきということである)。よく使う図としては、ユースケース図、ステートマシン図、シーケンス図、クラス図などがある。UMLはデザインパターンを説明するために良く使われている。.

新しい!!: 抽象化 (計算機科学)と統一モデリング言語 · 続きを見る »

類推

類推(るいすい)は類比(るいひ)、アナロジー(Analogy)ともいい、特定の事物に基づく情報を、他の特定の事物へ、それらの間の何らかの類似に基づいて適用する認知過程である。古代ギリシャ語で「比例」を意味する ἀναλογία アナロギアーに由来する。 類推は、問題解決、意思決定、記憶、説明(メタファーなどの修辞技法)、科学理論の形成、芸術家の創意創造作業などにおいて重要な過程であるが、論理的誤謬を含む場合が高いため、脆弱な論証方法である。科学的な新概念の形成過程は、チャールズ・パースによるアブダクション理論として区別される場合が多い。 異なる事象に対し類推することで、共通性を見出す言語的作業が比喩である。 言語学では、言語自体に対する類推が言語の変化の大きな要因とされる。.

新しい!!: 抽象化 (計算機科学)と類推 · 続きを見る »

設計

設計(せっけい、design)とは、建築物や工業製品等といったシステムの具現化のため、必要とする機能を検討するなどの準備であり、その成果物としては仕様書や設計図・設計書等、場合によっては模型などを作ることもある。.

新しい!!: 抽象化 (計算機科学)と設計 · 続きを見る »

計算モデル

計算モデル(model of computation)とは、人工的な計算機を含め、計算・推論・証明といった行為を理論的・抽象的に考察するための数理モデルのことである。計算模型とも。 また、抽象機械(abstract machine)と言った場合、主にオートマトン理論での計算システムの理論的モデルを意味する。 計算過程の抽象化は計算機科学と計算機工学で一般に使われる手法である。 計算モデルのもうひとつの定義として、複雑系をコンピュータシミュレーションで研究する際に、自然現象を計算できるようにモデル化したものも意味する。 計算理論において、抽象機械はアルゴリズムの計算可能性や計算複雑性に関する思考実験で使われることが多い。 典型的な抽象機械はチューリングマシンに代表される、入力と出力を定義し、入力から出力を生成するための可能な操作を定義したものである。 より現実の計算機に近づけた機械の定義には命令セット、レジスタ、メモリモデルなども含まれる。現在の一般的なコンピュータ(要するにいわゆるノイマン型)を抽象化した計算モデルとしてはRAMモデルがある。これはインデックス付きのメモリに対してランダムにアクセス可能な計算モデルである。キャッシュメモリが一般化し、そのヒット率が性能に与える影響が大きくなってくると、メモリの階層を前提とした計算モデルが重要となってきた。 ハードウェアとして実装されていない(実装する予定のない)マイクロプロセッサの設計も一種の抽象機械である。特にインタプリタの形式でソフトウェアとして実装されている抽象機械を仮想機械と呼ぶ。 抽象機械を使用することで、実際にシステムを組み立てることなく時間、メモリ使用量など特定の操作の実行に要するリソースを計算で求めることが可能である。.

新しい!!: 抽象化 (計算機科学)と計算モデル · 続きを見る »

計算機プログラムの構造と解釈

『計算機プログラムの構造と解釈』(Structure and Interpretation of Computer Programs。原題の略称SICPがよく使われる)は、1985年にMIT出版から刊行された、計算機科学分野の古典的な教科書。著者はマサチューセッツ工科大学 (MIT) の教授ハル・アベルソンとジェラルド・ジェイ・サスマン、ジェラルドの妻ジュリー・サスマン。かつてMITコンピュータ科学科の6.001として知られるプログラミングの入門講義で使われていた。第2版(ハードカバー版 ISBN 0-262-01153-0、ペーパーバック版 ISBN 0-262-51087-1)が1996年に刊行された。計算機科学の古典として広く認められている。 表紙に魔術師が描かれているため魔術師本(Wizard Book)としても知られ、まれに表紙の色をとって紫本(Purple Book)とも呼ばれる。 プログラミング言語LISPの方言Schemeが用いられ、抽象化、再帰、インタプリタ、メタ言語的抽象といった計算機科学の概念の真髄が説明されている。 第二版の和田英一による日本語訳(ISBN 978-4894711631)がピアソン桐原から2000年2月に発売された。、和田はHTML版を公開した。。。その後2014年5月に翔泳社より再版されている。.

新しい!!: 抽象化 (計算機科学)と計算機プログラムの構造と解釈 · 続きを見る »

計算機科学

計算機科学(けいさんきかがく、computer science、コンピュータ科学)とは、情報と計算の理論的基礎、及びそのコンピュータ上への実装と応用に関する研究分野である。計算機科学には様々な下位領域がある。コンピュータグラフィックスのように特定の処理に集中する領域もあれば、計算理論のように数学的な理論に関する領域もある。またある領域は計算の実装を試みることに集中している。例えば、プログラミング言語理論は計算を記述する手法に関する学問領域であり、プログラミングは特定のプログラミング言語を使って問題を解決する領域である。.

新しい!!: 抽象化 (計算機科学)と計算機科学 · 続きを見る »

詳細化

詳細化(しょうさいか、Refinement)とは、形式手法において、抽象的な形式仕様記述から具体的な実行プログラムへと検証可能な変換を行うことである。 段階的な詳細化として段階を踏んで詳細化を行うこともできる。論理的には、詳細化は含意による変換であるが、追加的な複雑化を生じる要因もある。 詳細化の反対語は抽象化である。.

新しい!!: 抽象化 (計算機科学)と詳細化 · 続きを見る »

高階関数

階関数(こうかいかんすう、higher-order function)とは、第一級関数をサポートしているプログラミング言語において、関数(手続き)を引数にしたり、あるいは関数(手続き)を戻り値とするような関数のことである。.

新しい!!: 抽象化 (計算機科学)と高階関数 · 続きを見る »

論理回路

論理回路(ろんりかいろ、logic circuit)は、論理演算を行う電気回路及び電子回路である。真理値の「真」と「偽」、あるいは二進法の「0」と「1」を、電圧の正負や高低、電流の方向や多少、位相の差異、パルスなどの時間の長短、などで表現し、論理素子などで論理演算を実装する。電圧の高低で表現する場合それぞれを「」「」等という。基本的な演算を実装する論理ゲートがあり、それらを組み合わせて複雑な動作をする回路を構成する。状態を持たない組み合わせ回路と状態を持つ順序回路に分けられる。論理演算の結果には、「真」、「偽」の他に「不定」がある。ラッチ回路のdon't care, フリップフロップ回路の禁止が相当する。 ここでの論理は離散(digital)であるためディジタル回路を用いる。論理演算を行うアナログ回路、「アナログ論理」を扱う回路(どちらも「アナログ論理回路」)もある。 多値論理回路も量子コンピュータで注目されている。 電気(電子)的でないもの(たとえば流体素子や光コンピューティングを参照)もある。 以下では離散なデジタル回路を扱う。.

新しい!!: 抽象化 (計算機科学)と論理回路 · 続きを見る »

関数型言語

関数型言語(かんすうがたげんご、functional language)は、以下に述べる関数型プログラミングを基本スタイルとして推奨する機能を持つプログラミング言語、関数型プログラミング言語の略称である。.

新しい!!: 抽象化 (計算機科学)と関数型言語 · 続きを見る »

電子回路

I/Oが1つのチップに集積されている。 プリント基板を使った電子回路 電子回路(でんしかいろ、electronic circuit)は、電気回路の一種であるが、その対象が専ら電子工学的(弱電)であるものを特に指して言う。構成要素は良導体による配線の他、主として電子部品である。組み合わせにより、単純なものから複雑なものまで様々な動作が可能である。信号を増幅したり、計算したり、データを転送したりといったことができる。回路は個々の電子部品を電気伝導体のワイヤで相互接続することで構築できるが、近年では一般にプリント基板にフォトリソグラフィで配線を作り、そこにはんだで電子部品を固定することで回路を構築する。 集積回路では、ケイ素などの半導体でできた基板上に素子と配線を形成する。集積回路も電子回路の一種だが、この記事ではもっぱら集積回路は不可分な一個部品として扱う。集積回路の内部の電子回路については集積回路の記事を参照のこと。 プリント基板は試作には向いていないため、新規設計の評価にはブレッドボード、ユニバーサル基板などを一般に使用する。それらは開発途中で素早く回路に変更を加えることができる。 プリント基板が多用されるようになる以前は、ワイヤラッピング配線や、ラグ板などを利用した空中配線により、電子回路は作られていた。 大きくアナログ回路・デジタル回路(論理回路)・アナログとデジタルの混合信号回路(アナログ-デジタル変換回路、デジタル-アナログ変換回路など)に分けられる。取り扱う周波数により、低周波回路・高周波回路という分け方をする場合もある。.

新しい!!: 抽象化 (計算機科学)と電子回路 · 続きを見る »

連結リスト

連結リスト(れんけつリスト、Linked list)は、最も基本的なデータ構造の1つであり、他のデータ構造の実装に使われる。リンクリスト、リンクトリストとも表記される。 一連のノードが、任意のデータフィールド群を持ち、1つか2つの参照(リンク)により次(および前)のノードを指している。連結リストの主な利点は、リスト上のノードを様々な順番で検索可能な点である。連結リストは自己参照型のデータ型であり、同じデータ型の別のノードへのリンク(またはポインタ)を含んでいる。連結リストは場所が分かっていれば、ノードの挿入や削除を定数時間で行うことができる(場所を探すのにかかる時間はリスト上の順番の条件などにも依存するし、後述する片方向リストなのか双方向リストなのかにも依存する)。連結リストにはいくつかの種類があり、片方向リスト、双方向リスト、線形リスト、循環リストなどがある。 連結リストは多くのプログラミング言語で実装可能である。LISP や Scheme 、Prologといった言語は組み込みでこのデータ構造を持っていて、連結リストにアクセスするための操作も組み込まれている。手続き型やオブジェクト指向型の言語(C言語、C++、Java)では、連結リストを作るには mutable(更新可能)な参照を必要とする。.

新しい!!: 抽象化 (計算機科学)と連結リスト · 続きを見る »

Java

Java(ジャバ)は、狭義ではプログラミング言語Javaを指す。広義では言語仕様以外にも、仕様が与えられているJavaクラスライブラリやJava仮想マシン、さらにはJDKやJREなどの公式のものをはじめとする、場合によってはサードパーティのものなどを含め曖昧にJavaプラットフォームと総称されるようなものなどのエコシステムなどを指すこともある。構文についてはJavaの文法の記事を参照。.

新しい!!: 抽象化 (計算機科学)とJava · 続きを見る »

Linda

Linda は、並列プログラミング言語であり、Prolog、C言語、Javaなどの他の(逐次的)言語上に拡張として実装される。.

新しい!!: 抽象化 (計算機科学)とLinda · 続きを見る »

LISP

LISPは、プログラミング言語である。 によって記述される。-->前置記法などが特徴である。 1958年にはじめて設計されたLISPは、現在広範囲に使用されている高水準プログラミング言語の中でもFORTRANに次いで2番目に古い。ただし、FORTRANと同様に、現在のLISPは初期のものから非常に大きく変化している。 これまでに多数の方言が存在してきたが、今日最も広く知られるLISP方言は、Common LispとSchemeである。 元々、LISPは、アロンゾ・チャーチのラムダ計算表記法に影響を受け、コンピュータープログラムのための実用的かつ数学的な表記法として作られた。そして、すぐに人工知能研究に好まれるプログラミング言語になった。最初期のプログラミング言語として、LISPは計算機科学にて、木構造、ガベージコレクション、動的型付け、条件分岐、高階関数、再帰、セルフホスティング、コンパイラを含む多くのアイディアを切り開いた。 LISPの名前は、「list processor」に由来している。リストはLISPの主要なデータ構造であり、LISPソースコードはそれ自体がリストからできている。その結果、LISPプログラムはソースコードをデータとして操作することができ、プログラマーは、マクロ・システムで新しい構文やLISP埋め込みの新しいDSLを作成できる。 コードとデータの互換性は、LISPにそのすぐに認識できる構文を与える。すべてのプログラム・コードはS式または入れ子のリストとして書かれる。関数呼び出しまたは構文は先頭が関数または演算子の名前で、その続きが引数であるリストとして書かれる。具体的には、3つの引数を取る関数fは、(f arg1 arg2 arg3)として呼び出される。.

新しい!!: 抽象化 (計算機科学)とLISP · 続きを見る »

Modula-2

Modula-2(モジュラ・ツー)は、コンピュータのプログラミング言語の一種で、1978年頃にチューリッヒ工科大学のニクラウス・ヴィルトにより、先立って構想されたプログラミング言語「Modula」の後継として創案されたものである。汎用手続き型言語で、構文の多くは同様にヴィルトの手掛けたPascal言語に基いたものとなっている。名前「Modula-2」は「モジュールの」を意味する英語「modular」に由来する。.

新しい!!: 抽象化 (計算機科学)とModula-2 · 続きを見る »

Self

Self は、「プロトタイプ」の概念に基づいたオブジェクト指向プログラミング言語である。1980年代から1990年代にかけて言語設計の実験的システムとして使われていたが、2006年、Self の開発は活発に続けられており、Self言語自身で書かれた Selfバーチャルマシンを構築する Klein プロジェクトが進められ、2006年7月にバージョン 4.3 がリリースされた。2010年7月に最新バージョン 4.4 がリリースされた。.

新しい!!: 抽象化 (計算機科学)とSelf · 続きを見る »

抽象化レイヤー

抽象化レイヤー(または抽象化層)とは、ある特定の機能の詳細な実装を隠す手段である。抽象化レイヤーを用いたソフトウェアモデルで有名なものとしては、コンピュータ・ネットワーク・プロトコルのOSI参照モデルや、OpenGLのグラフィック描画ライブラリ、あるいはUNIXで生まれてMS-DOSやLinuxなど最近のオペレーティングシステムのほとんどが採用しているバイトストリーム入出力モデルなどがある。 UNIXでは、ほぼすべての入出力を、装置から読み込んだり装置に書き込んだりするバイトの連なりとみなす。装置の独立性を達成するために、ファイルI/O、ソケットI/O、端末I/Oなどでこのバイトの連なりモデルが使われている。アプリケーションが装置に対して読み書きを行う場合、まずその装置をオープンする機能を呼び出す。装置は、端末などの実在する装置の場合もあれば、ネットワークポートやファイルシステム内のファイルといった仮想的な装置の場合もある。オペレーティングシステムが装置の物理的な特性を隠蔽し、抽象的なインタフェースを代わりに提供することにより、プログラマは装置を意識せずにバイト列を読み書きするだけでよくなる。個々の装置の読み書きに必要な変換処理は、オペレーティングシステムが行う。 OpenGLのようなグラフィックライブラリのほとんどは、抽象化されたグラフィック装置をインタフェースとして提供している。プログラマが書いたコマンドは、ライブラリによって特定の装置に図形を描く専用コマンドに翻訳される。プロッター用のコマンドと、CRTモニター用のコマンドとは別物だが、グラフィックオブジェクトを描画するための汎用的な命令をグラフィックライブラリが抽象インタフェースとして提供することで、実装や装置に依存したこまごましたことを気にせずにすむ。 計算機科学において、抽象化層とはモデルやアルゴリズムを一般化したものであり、いかなる特定の実装からも独立したものである。このような一般化は、各種の実装の間に幅広い共通点があることに基づいている。これらの共通点は、モデルによってうまくカプセル化できる。モデルによるカプセル化とはまた、各種の個別の実装に類似性があることを明確に示すことでもある。よくできた抽象化レイヤーは有益な概念やメタファーを純粋な形で取り出し、単純化して提供するので、再利用が容易になり、正しい使い方をすばやく把握できるようになる。 すぐれた抽象化は、どこが抽象的であるべきかも含めて一般化を行う。従って、抽象化レイヤーを利用するアプリケーションが特別な要件や問題を抱えている場合でも、対処を可能にする。 抽象化レイヤーは、複数の抽象化層からなる階層を構成することが多い。OSI参照モデルは7層の抽象化レイヤーから成る。各層が、デジタル通信における各層のニーズに対処しつつ隠蔽することで、さまざまな技術が複雑に絡み合うのを防ぐことができる。 バトラー・ランプソンの有名な格言に「情報工学のあらゆる問題は別のレベルのインダイレクションで解決される」というものがあるが、「インダイレクション」を「抽象化」にわざと置き換えた形でよく引用される。.

新しい!!: 抽象化 (計算機科学)と抽象化レイヤー · 続きを見る »

抽象データ型

抽象データ型(ちゅうしょうデータがた、abstract data type、ADT)とは、データ構造とそれを直接操作する手続きをまとめてデータ型の定義とすることでデータ抽象を実現する手法またはそのひとまとまりとして定義されたデータ型を言う。通常のデータ型であれば変数宣言で変数に束縛されるものは値であるが、抽象データ型の世界において値に相当するものはデータ構造とその操作のまとまりである。 抽象データ型を用いない場合、データ構造またはデータの操作手続きのアルゴリズムの変更を行うとソースコード中にその変更部分が散在してしまい規模によっては修正困難となるが、データとその操作がひとまとめに記載されることになる抽象データ型においては、型の定義における実装部分を変更するだけで修正が完了する。.

新しい!!: 抽象化 (計算機科学)と抽象データ型 · 続きを見る »

抽象解釈

抽象解釈(ちゅうしょうかいしゃく、Abstract interpretation)は、コンピュータプログラムの意味論の健全な近似の理論であり、順序集合(特に束)における単調関数に基づいている。全ての計算を実施することなく、プログラムの部分的な実行(ある種の部分評価)をするものと見ることができ、それによりプログラムの意味に関する情報(例えば、制御構造、情報の流れなど)を獲得する。 主な応用として、形式的な静的コード解析があり、プログラム実行に関する情報を自動抽出するものである。このような解析には次の2つの利用法がある。.

新しい!!: 抽象化 (計算機科学)と抽象解釈 · 続きを見る »

束縛 (情報工学)

束縛またはバインディング(Binding)は一般に、参照 (情報工学) の集合である。コンピュータ関連で「束縛」という語が使われるものはいくつかあり、それぞれ具体的な内容は異なるので、以下いくつかの例を示す。.

新しい!!: 抽象化 (計算機科学)と束縛 (情報工学) · 続きを見る »

構造化プログラミング

構造化プログラミング(こうぞうかプログラミング、structured programming)は、1960年代後半にエドガー・ダイクストラらによって提唱された、構造化されたプログラムの構成要素(制御構造)の利用や、 p.49)-->段階的詳細化などを特徴とするプログラミング手法である。.

新しい!!: 抽象化 (計算機科学)と構造化プログラミング · 続きを見る »

機械語

機械語(きかいご)またはマシン語(Machine code、machine language)とは、コンピュータのプロセッサが直接解釈実行可能な一連の命令群のデータそのもの(を、コンピュータ・プログラミング言語とみなしたもの)である。.

新しい!!: 抽象化 (計算機科学)と機械語 · 続きを見る »

数(かず、すう、number)とは、.

新しい!!: 抽象化 (計算機科学)と数 · 続きを見る »

数学

数学(すうがく、μαθηματικά, mathematica, math)は、量(数)、構造、空間、変化について研究する学問である。数学の範囲と定義については、数学者や哲学者の間で様々な見解がある。.

新しい!!: 抽象化 (計算機科学)と数学 · 続きを見る »

整数の合同

ウスの『Disquisitiones Arithmeticae(整数論)』のタイトルページ。 整数の合同(ごうどう、congruence)は、数学において二つの整数の間に定められる関係である。初めてこれを構造として研究したのはドイツの数学者ガウスで、1801年に発表された著書『Disquisitiones Arithmeticae』でも扱われている。今日では整数の合同は、数論や一般代数学あるいは暗号理論などに広く用いられる。 整数の合同に基づく数学の分野は合同算術 (modular arithmetic) と呼ばれる。これは整数そのものを直接的に扱うのではなく、何らかの整数(法と呼ばれる、以下本項では で表す)で割った剰余を代表元として扱う算術である。合同算術の歴史や道具立てあるいはその応用については合同算術の項を参照。また、より包括的で堅苦しくない説明は剰余類環 の項へ譲る。.

新しい!!: 抽象化 (計算機科学)と整数の合同 · 続きを見る »

ここにリダイレクトされます:

データ抽象化制御抽象化

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »