コンピュータ言語における演算子(えんざんし、: operator)とは、各種の演算を表わす記号シンボルである。通例、演算子は単なる記号あるいは記号列であって構文論的な要素であり、それに対応する演算は意味論の側にある。たとえばJavaにおいて、演算子 + を使った a + b という式は、構文論上は単にそういう式だというだけである。意味論的には数値の加算であったり、文字列の連結であったりするが、それは a と b の型に依って決まる(理論的には項書き換えのように、構文論的といったものもある)。

演算が作用する対象のことを被演算子operand; オペランド、被演算数、引数)という。たとえば、n と 3 とのを表す式 "n + 3" において、"+" は演算子であり、その被演算子は "n" と "3" である。また、数式として一般的な被演算子と被演算子の間に演算子を記述する構文は中置記法と呼ばれる。

分類

編集

コンピュータプログラミングにおいては、主に記号を用いて演算を指示するものが演算子と呼ばれる。概ね数式などの記述を模倣しているが、一部の演算子に(文字コードおよび文字セットの関係上)通常と異なる記号あるいは文字列が用いられたり、副作用を持っていることがあるなど、数学の演算子とは異なる点もある。

算術演算子

編集

算術演算子として、四則演算のうち加算の演算子には、一般的な算術と同じプラス記号 "+" を用いる。減算の演算子には "−" の代わりにハイフンマイナス "-" が用いられることが多い。乗算の演算子には "×" の代わりにアスタリスク "*" を用い、除算の演算子には "÷" の代わりにスラッシュ "/" が用いられる。整数同士の除算の結果は通例切り捨てにより整数に丸められる言語が多いが、Pascalでは整数の商を求める専用の演算子として英字列 "div" を用いる。一般的な算術にはない演算子として、除算の余りを求める剰余演算のための演算子が定義されていることがある。C言語およびC++の剰余演算子は "%" であり、整数型にしか適用できないが、JavaおよびC#では浮動小数点数型にも適用できる。Pascalでは剰余演算子として英字列 "mod" を用いる。また、BASICにおける "^" やPythonにおける "**" のように累乗の演算子を持つ言語もある。

関係演算子

編集

関係演算子は、およそ数学とあまり変わらないが、プログラミング言語によって細かい差異が比較的多い傾向にある。以下はその例である。

= の意味
Pascalの系統では、代入に := を用い、比較等号(等価演算子)には = を用いる。
C言語の系統では、代入に = を用い、比較等号(等価演算子)には == を用いる。代入式は値を持ち、= だけでは文脈によって違いを判断できない。
BASICの系統では、代入にも比較等号(等価演算子)にも = を用いる。代入はではなくであり、= が代入と比較のどちらを意味するかは文脈によって決まる。
また、PHPJavaScriptのように、===== という、異なる比較基準の演算子を持つ言語もある。
不等号
1 < x < 5が「xは1より大きく5より小さい」を意味しないプログラミング言語が多い。そのような場合には論理演算子を使って「1 < x and x < 5」のように記述する。
≤, ≥
<=, >=を用いることが多いが,言語によってはさらに=<, =>を認めるものもある。
言語によって、<>!= などが使用される。

論理演算子

編集

論理演算子として、論理積の "and"、論理和の "or"、否定の "not" などがある。排他的論理和の "xor" もある。他に、数値に対して二進法での各桁に論理演算を適用するビット演算(bitwise operation)のためのビット演算子(bitwise operator)がある。一部の言語では、ビット演算の演算子が論理演算子の意味にも多重定義(オーバーロード)されている(C言語ではブーリアン型が無く、基本整数型intで代用されているので、論理演算子とビット演算子を混用するとバグになることがある)。他に三項演算子の、条件演算子や、条件演算子のnull比較時の糖衣構文としてNull合体演算子をもつ言語もある。

その他の演算子

編集

代入やインクリメントといった、動作に応じて変化していくプログラミング言語の変数としての機能に対応した演算子も存在する。

このほかにも、プログラミング言語によっては文字列正規表現参照配列動的メモリ確保名前空間など、数学的な範囲を超えた多様な分野について、それを操作するための演算子が存在する。

C++C#などのように、プログラミング言語の中には既存の演算子に利用者(プログラマー)が自分で新たな意味を定義することができるものがある(演算子多重定義)。またSmalltalkHaskellOCamlF#ALGOLおよびFortran(Fortran 90 以降)など、利用者が自分で新たな演算子を定義することができる言語もある(利用者定義演算子)。これらはうまく使いこなせばコードの記述性や直感性を向上させるのに有用だが、乱用すると混乱を招きかねない。Javaのように言語仕様をシンプルに保つため、あえて演算子多重定義をサポートしなかった言語もある。

脚注

編集

注釈

編集

出典

編集

関連項目

編集

📚 Artikel Terkait di Wikipedia

ディープラーニング

Caffe - Python, C++ torch - Lua Theano - Python。関数型言語。並列化に特化し、GPUのコードが自動的に生成される。 Pylearn2 - Python Blocks - Python Keras - Python。TensorFlowのラッパー。Theanoでも動作可能。

NOP

NOP(ノップ)あるいは NOOP(ノープ)とは no operation (何もしない)を意味する。プログラミングやネットワーク通信と言ったコンピュータ関連の技術用語として使用される。 機械語において NOP は多くの命令セットで用意されている命令である。プロセッサはこの命令を読みとると文字通り

制御構造

オブジェクトを解放する。Pythonの with 文やRubyの File.open へのブロック引数も同様の効果がある。 このような言語はいずれも標準の例外を定義し、それらがどのような状況で発生するかを定義している。ユーザーは独自の例外を発生させることもできる(実際、C++ と Python は任意の型の

マスタースレーブ

ースの分野ではマスタースレーブの代替語として「プライマリー」や「レプリカ」といった語句を採用するケースもある。2018年には、プログラミング言語Pythonが論争の末、マスタースレーブを「ペアレント」や「ワーカー」「ヘルパー」といった語句に置き換えている。 2020年6月より、ジョージ・フロイド抗議

IBM 650

The IBM 650 at Columbia University An IBM 650 Simulator written in Python An IBM 650 Simulator History Galore at IBM Museum. IBM 650 documents at

LOIC

また、LOICを使うことで、自主的にボットネットに参加する人々も存在する。 PythonLOICは、二人の若者が開発したLOICで、Pythonによって実装されている。iPhoneやiPad、Mac OS X、Linux、Windowsなど多くのプラットフォームで実行することができ、Google

イミュータブル

ほとんどのオブジェクト指向言語では、オブジェクトは参照の形でやり取りされる。Java・C++・Perl・Python・Rubyなどがその例である。この場合、オブジェクトが参照を通じて共有されていると、その状態が変更される可能性が問題となる。

システム時刻

Principles of Operation, (Poughkeepsie, New York:International Business Machines, 2007) 7-187. ^ z/Architecture Principles of Operation, (Poughkeepsie