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

短絡評価

索引 短絡評価

短絡評価(たんらくひょうか、short-circuit evaluation)または最小評価(さいしょうひょうか、minimal evaluation)とは、多くのコンピュータプログラミング言語の論理演算子における左辺(第一引数)と右辺(第二引数)の式の評価法の評価法を(意味、意味論を)表す語である。.

27 関係: AdaALGOL定数畳み込みヌルポインタブーリアン型ブール論理プログラミング言語プログラミング言語Cプログラム意味論ビット演算制御構造コンパイラ最適化共通部分式除去先行評価C++C言語遅延評価評価戦略論理和論理積論理演算子部分評価If文JavaMicrosoft Visual BasicPascal擬似コード

Ada

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

新しい!!: 短絡評価とAda · 続きを見る »

ALGOL

ALGOL(アルゴル)は、命令型プログラミング言語ファミリーの1つファミリー名は大文字/小文字をまじえて表記される場合 と、全て大文字で表記される場合 (ALGOL 68) がある。本項目では ALGOL で統一する。。名前「ALGOL」は「アルゴリズム言語」を意味する英語「algorithmic language」に由来する。1950年代中ごろに開発され、多くの言語に影響を及ぼし、ACMや教科書や学術論文などでアルゴリズム記述のデファクトスタンダードとして30年以上使われた。現代の多くの言語が「ALGOL系」あるいは「ALGOL風」(algol-like) とされているという意味で、ほぼ同世代の高水準言語である FORTRAN、LISP、COBOL に比べて最も成功したと言うこともできる。FORTRANで明らかとなった問題を防ぐよう設計され、BCPL、B、Pascal、Simula、Cといった様々なプログラミング言語に影響を与えた。ALGOLはLisp以外としては「begin と end で囲む」という構文によるブロック構造を導入し、制御構造を自在に入れ子(ネスト)にできる初の広まった言語となったFORTRANにはそのような構造は無い。COBOLではピリオドで全ての入れ子が終端するという仕様だったため(現在はend-ifなどを使う)、入れ子で書ける論理に制限があり、酷いバグの原因にもなりやすかった。。また構文の形式的定義を真剣に検討した最初のプログラミング言語でもあり、"Algol 60 Report" で導入されたバッカス・ナウア記法は、その後のコンピュータ言語等の構文の形式的定義を示す手法として(プログラミング言語だけに限られず)定番の記法となっている。.

新しい!!: 短絡評価とALGOL · 続きを見る »

定数畳み込み

定数畳み込み(ていすうたたみこみ、constant folding)および定数伝播(ていすうでんぱ、constant propagation)は、多くのコンパイラで使われている最適化技法である。定数伝播の進化したものを疎な条件分岐を考慮した定数伝播と呼び、定数伝播と同時にデッドコード削除も行って、より正確な伝播を行う。.

新しい!!: 短絡評価と定数畳み込み · 続きを見る »

ヌルポインタ

ヌルポインタ(null pointer)とは、何のオブジェクトも指していないことを表す特別なポインタである。 プログラムではヌルポインタを、不定長のリストの終端を表したり、何らかの動作の結果が失敗であることを表したりするのに使用する。後者の用法は、やのNothing値を使用することもできる。 ヌルポインタの値や型がいかなるものかという詳細は言語によって異なる。実際的にはいかなるオブジェクトも参照しないという言語もあり、参照先を求めようとするとJava(NullPointerException)のように例外が発生するものもある。 ヌルポインタはほとんどの処理系(この場合、言語処理系プログラムだけではなく、ハードウェアまでを含めて)で、内部的に0で表現されるが、ごく希に、0でない処理系もある。言語仕様上の意味としては普通「アドレス0(あるいは他のアドレス)を指し示すポインタ」ではなく、どこも指し示さないものとされる。 ヌルポインタを未初期化のポインタと混同してはならない。ヌルポインタは、あらゆる有効なオブジェクトとも異なることが保証されている。それに対し、言語や実装によっては、未初期化のポインタはそのような保証はなく、他のオブジェクトやヌルポインタと同じになる可能性がある。 ヌルポインタはヌル値とは意味が違う。ヌルポインタは多くのプログラミング言語において「値がない(no value)」ことを意味し、ヌル値はリレーショナルデータベースにおいて「未詳値(unknown value)」であることを意味する。ほとんどのプログラミング言語では2つのヌルポインタは等しいが、リレーショナルデータベースエンジンは2つのヌル値を等しいとはみなさない(それらは未詳値を表しているので、それらが等しいかどうかはわからない)。.

新しい!!: 短絡評価とヌルポインタ · 続きを見る »

ブーリアン型

ブーリアン型(ブーリアンがた、Boolean datatype)は、真理値の「真.

新しい!!: 短絡評価とブーリアン型 · 続きを見る »

ブール論理

ブール論理(ブールろんり、Boolean logic)は、古典論理のひとつで、その名称はブール代数ないしその形式化を示したジョージ・ブールに由来する。 リレーなどによる「スイッチング回路の理論」として1930年代に再発見され(論理回路#歴史を参照)、間もなくコンピュータに不可欠な理論として広まり、こんにちでは一般的に使われている。 本項目では、集合代数を用いて、集合、ブール演算、ベン図、真理値表などの基本的解説とブール論理の応用について解説する。ブール代数の記事ではブール論理の公理を満足する代数的構造の型を説明している。ブール論理はブール代数で形式化され2値の意味論を与えられた命題論理とみることができる。.

新しい!!: 短絡評価とブール論理 · 続きを見る »

プログラミング言語

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

新しい!!: 短絡評価とプログラミング言語 · 続きを見る »

プログラミング言語C

『プログラミング言語C』(原題:The C Programming Language)は、ブライアン・カーニハン (Brian W. Kernighan) とデニス・リッチー (Dennis M. Ritchie) によって書かれたC言語についての書籍である。著者名の頭文字からしばしばK&Rと略される。 初版は1978年に出版され、C言語が標準化されるまでの間リファレンス的な扱いを受けていた。1988年の第2版ではANSIでの標準化 (C89) を反映して大幅に変更されている。 日本語訳は初版・第2版と訳書訂正版とも石田晴久。 1.1 Getting Started に、例として掲載されている"hello, world"プログラムは、あらゆる「プログラミングの最初の例題」として定番となった。.

新しい!!: 短絡評価とプログラミング言語C · 続きを見る »

プログラム意味論

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

新しい!!: 短絡評価とプログラム意味論 · 続きを見る »

ビット演算

ビット演算(ビットえんざん、bitwise operation: 直訳すると「ビット毎操作」)とは、固定長のワードなどといった「ビットのカタマリ」(コンピュータの数値表現なども参照)に対して、各のビット全てに対する論理演算をいっぺんに行う演算操作である。 実装の観点からは、現在一般的な二進法(ディジタル)式の電子式コンピュータでは、加減算ではビットあたり数個程度の論理ゲートに加え多少複雑なキャリー伝搬の処理が、乗除算では多段に渡る処理が必要であるのに対し、ビット演算は1個か高々2個の論理ゲートで行えるため、多くの場合、最短サイクルしか必要としない。そのことから、高性能なプログラムを実現するための機械語コーディングではビット演算の使いこなしは重要なテクニックである。 ビットマスクを利用したフラグ管理などに用いられるほか、Bitapアルゴリズムなど、各種のビット並列アルゴリズムの実装にも使われる。ビット並列アルゴリズムは特に、NEON(ARM)あるいはSSE/AVX(x86)などのSIMD拡張命令をサポートするCPUやGPUといった、容易に入手可能なハードウェアにおける高効率プログラミングの鍵である。.

新しい!!: 短絡評価とビット演算 · 続きを見る »

制御構造

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

新しい!!: 短絡評価と制御構造 · 続きを見る »

コンパイラ最適化

ンパイラ最適化(こんぱいらさいてきか、Compiler optimization)の記事では、コンピュータ・プログラムの最適化に関する話題のうち、もっぱらコンパイラに関係するものに関して説明する。最も一般的な要求はプログラムの実行時間を最小化することであり、その次に使用するメモリ量を最小化することである。また、携帯可能なコンピュータが増えるにつれて、消費電力を最小化するという最適化も生まれてきた。 一部のコード最適化問題はNP完全問題であることが示されている。実際には、プログラマがコンパイラによる最適化の完了を待てる時間の上限なども考慮してコンパイラ最適化を実装する(最適化はCPU時間とメモリを多大に使用する)。かつては、コンピュータのメモリ実装量も実行できる最適化を制限する要因だった。 コンパイラメーカによっては、「コンパイラの最適化の能力が売り上げや評判に大きく影響する」と信じている場合があり、そういう信念に従って「最適化コンパイラ」と銘打つことがある。少なくとも、同程度にバグが無いコンパイラ同士であれば、という前提の範囲内なら、最適化の能力が高いほうが魅力的と言えるであろう。.

新しい!!: 短絡評価とコンパイラ最適化 · 続きを見る »

共通部分式除去

共通部分式除去(きょうつうぶぶんしきじょきょ、Common subexpression elimination, CSE)は、計算機科学におけるコンパイラ最適化方法の一つで、同じ式 (すべて同じ値に評価される) の出現を探し出し、計算結果を格納する一つの変数に置き換える価値があるかどうかの解析を行うものである。 下記の例では、 コードが下記のように記述されたとして解釈できるよう変更すると、 (プログラムの実行が速くなるため)利点がある。 最適化プログラムはコストと利点の解析を行い、tmpを格納するコストが複数回計算を行うコストより低いかどうかを計算する。実際には、どの値がどのレジスタに格納されるかといった要素も重要である。 上記のような単純な場合には、プログラマはコードを記述する際に重複した式を手動で除去してしまうことが多い。CSE の入力としてもっとも重要なものはコンパイラが出力する中間コードである。例えば配列のインデックス計算などで生成されるもので、開発者が介在して手動で除去することができない。また、言語の特徴によって重複した式が多数作られる場合もある。たとえばC言語のマクロでは、マクロの展開により元のコードに現れない共通部分式が生成される。 CSE を実行する利点は大きく、広く用いられる最適化手法である。 CSE ではコンパイラが値を一時的に格納する変数の数に関して十分賢いものである必要がある。膨大な一時変数を作成するとレジスタが枯渇し、メモリを使用する必要を生じる。単純な演算結果を必要に応じて再計算するより時間がかかってしまう場合もある。 コンパイラ開発者は二種類の CSE を区別している.

新しい!!: 短絡評価と共通部分式除去 · 続きを見る »

先行評価

先行評価(せんこうひょうか、eager evaluation)、正格評価(せいかくひょうか、strict evaluation)、厳密評価とは、プログラミング言語における評価戦略の一種であり、多くの言語処理系で標準的に使われている戦略である。.

新しい!!: 短絡評価と先行評価 · 続きを見る »

C++

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

新しい!!: 短絡評価とC++ · 続きを見る »

C言語

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。.

新しい!!: 短絡評価とC言語 · 続きを見る »

遅延評価

遅延評価(ちえんひょうか、lazy evaluation)や必要呼び(ひつようよび、call-by-need)は評価戦略の一種類であり、非正格な関数型言語で使用もされる。対義語は先行評価(eager evaluation)。.

新しい!!: 短絡評価と遅延評価 · 続きを見る »

評価戦略

評価戦略(ひょうかせんりゃく、evaluation strategy)とは、プログラミング言語や、ラムダ計算のような式から成る計算模型において、如何なる手順で、評価すなわち式から値を得るか、という(通常決定的な)規則群である。.

新しい!!: 短絡評価と評価戦略 · 続きを見る »

論理和

''P'' ∨ ''Q'' のベン図による表現 数理論理学において論理和(ろんりわ、Logical disjunction)とは、与えられた複数の命題のいずれか少なくとも一つが真であることを示す論理演算である。離接(りせつ)、選言(せんげん)とも呼び、ORとよく表す。 二つの命題 P, Q に対する論理和を P ∨ Q と書き、「P または Q」と読む。後述のように、日常会話における「または」とは意味が異なる。.

新しい!!: 短絡評価と論理和 · 続きを見る »

論理積

数理論理学において論理積(ろんりせき、logical conjunction)とは、与えられた複数の命題のいずれもが例外なく真であることを示す論理演算である。合接(ごうせつ)、連言(れんげん、れんごん)とも呼び、ANDとよく表す。 二つの命題 P, Q に対する論理積を P ∧ Q と書き、「P かつ Q」や「P そして Q」などと読む。 ベン図による論理積P \wedge Q の表.

新しい!!: 短絡評価と論理積 · 続きを見る »

論理演算子

論理演算子(ろんりえんざんし、Logical operator)は、コンピュータプログラミング言語など(コンピュータ関係に限らず、命題論理の命題においてなど、普通にもっと一般に使われる)における論理演算の演算子である。プログラミング言語の場合は短絡評価の演算子であることが多い。 ベン図による論理積 (AND) ベン図による論理和 (OR) ベン図による論理否定 (NOT) Category:プログラミング言語の構文.

新しい!!: 短絡評価と論理演算子 · 続きを見る »

部分評価

部分評価(ぶぶんひょうか、partial evaluation)は、計算理論における特殊化(特化)による最適化の技法の1つ。.

新しい!!: 短絡評価と部分評価 · 続きを見る »

If文

if文(イフぶん)はプログラミング言語において、真理値に従って「もしXならば、Yせよ、さもなくばZせよ」というような条件実行の「文 (プログラミング) 」で、制御構造のひとつである。if else文と呼ばれることもある。 具体的な構文はプログラミング言語によって異なるが一般的に、条件式と、条件式の評価結果の値が「真として扱うべき値」の場合に実行される「then節」と呼ばれる部分があり、「偽として扱うべき値」の場合に実行されるelse節と呼ばれる部分が付く場合もある。 then節とelse節が式になる「条件演算子」がある言語も多い。言語によってはifが文ではなく、条件演算子と同様の「if式」である言語もある。.

新しい!!: 短絡評価とIf文 · 続きを見る »

Java

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

新しい!!: 短絡評価とJava · 続きを見る »

Microsoft Visual Basic

Microsoft Visual Basic (マイクロソフト ヴィジュアル ベーシック)はマイクロソフトが1990年代に開発していたプログラミング言語およびその処理系。通常はVisual BasicまたはVBと呼ぶ。Visual Studioに組み込まれ、さまざまな種類のアプリケーション開発に用いられる。後継となるMicrosoft Visual Basic.NETに関してはそちらの項目を参照。1970年代〜1980年代に開発されていた前身のMicrosoft BASICについてはそちらの項目を参照。.

新しい!!: 短絡評価とMicrosoft Visual Basic · 続きを見る »

Pascal

Pascal(パスカル)は、ニクラウス・ヴィルトの設計(デザイン)によるコンピュータ・プログラミング言語である。ALGOL(直接的にはその一派生である、ヴィルトが関与したALGOL W)などの影響があるが、個人の設計であることに由来する簡素だがよく整った言語仕様(構文と意味)を持つ。用途の中に教育を意識しており、構造化された制御構造など、その当時「良きプログラミングの慣習」と考えられていたことの影響もある。一方で批判者からは、あくまでも教育用に過ぎない言語だ、といったような評もあることにはあったが、PascalコンパイラをPascalで書ける(いわゆる言語処理系のブートストラップ)ことをはじめ、Pascalで書かれた#実用プログラム例は多くある。名前は、哲学者・数学者・科学者で、機械式計算機を製作するなど技術者でもあったブレーズ・パスカルにあやかったものである。.

新しい!!: 短絡評価とPascal · 続きを見る »

擬似コード

擬似コード (ぎじコード、pseudocode)とは、アルゴリズムなどを、架空の非常に高水準なプログラミング言語(擬似言語)で記述したものである。Pascal、Fortran、C言語などの既存のプログラミング言語の構文と、自然言語に近い表現を組み合わせて記述することが多い。.

新しい!!: 短絡評価と擬似コード · 続きを見る »

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

最小評価

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