[解決済み] なぜ"||"は "or "の記号なのですか?[クローズド]
質問
知っている
||
論理演算の "or "を表しているのですが、この記号を選んだ経緯を知っている人がいたら教えてください。たまたまキーボードで使われていない記号だったからなのだろうか。
どのように解決するのですか?
分離形("or")を示す一本の縦線"|"の起源。
から ASCII文字の歴史 :
縦書き文字が使われるようになったのは、1960年代からと推測されています。 バッカス・ナウル形式がコンピュータの分野に導入されました。 プログラミング言語を記述するためのメタ言語。また、この言語は 1960年代前半にAPLで使用され、PL/Iにほぼ同時に組み込まれた。 OR演算子と同時期に、連結演算子として2倍化されました。 演算子です。
ジョン・ワーナー・バッカス (1924年12月3日 - 2007年3月17日)は、アメリカのコンピュータ科学者である。最初に広く使われた高級プログラミング言語(FORTRAN)を発明したチームを率い、形式的な言語構文を定義するためにほぼ普遍的に使われている表記法であるバッカス・ナウア形式(BNF)の発明者である。また、関数レベルプログラミングの研究を行い、その普及に貢献した。
IBMのプログラミング言語設計者であり、現在ALGOL 58として知られている新しいプログラミング言語IALの構文をBNF記法で記述する"metalinguistic formulas"を提案した。
バッカス・ナウル形式では、式は記号の列および/または選択肢を示す'|'で区切られた列からなり、全体は左側の記号の可能な代入であることを示す。
<personal-name> ::= <name> | <initial>
ALGOL 58の仕様では、Backusはもともと縦線を使わず、"or"という単語の上に線を引いて使っていた(論理記号の ). ピーター・ナウル ALGOL 60に貢献したデンマークの計算機科学者であるS.A.T.は、いくつかの記号を標準的なキーボードで入力できるように変更した。 彼の変更の中には、縦線の追加も含まれている。 (出典: " プログラミング言語の歴史 "、リチャード・L・ウェクセルブラット(Richard L. Wexelblat)
偶数
後
の例はたくさんあります。
の記号は、今でもALGOLで使われている。 実際、1961年にASCII文字セットにバックスラッシュが追加され、ALGOLの論理演算子はこのようにスラッシュで入力できるようになりました。
\/ /\
この記号は、60年代半ばに発売されたIBM2741のキーボードで確認することができる。
しかし、ナウルがALGOL 60に縦線を追加した明確な証拠がある。 1964年に発表された記事(Knuth D., "Backus Normal Form vs. Backus Naur Form" Letters to the Editor, Communications of the ACM, Vol.7 (1964). pp.735-736, available こちら ドナルド・クヌースは、ナウアの貢献により、バッカス正規形をバッカス・ナウア形式と呼ぶべきであると主張しました。 彼が言及した貢献の中には、or演算子として縦線を追加したことが含まれています。
1964年の記事の一部を画像で紹介します。 右側の箇条書きされた④に注目。
この記事には、ナウルが1960年のアルゴール報告書の編集責任者として、この意味での変更を担当したと書かれている。
二重の縦線 "||"の起源。
で C言語の発展 Dennis M. Ritchieは、二重縦線演算子が追加された理由を説明しています。
<ブロッククオート言語が命名された後も、急速な変化が続いています。 という演算子が導入されました。BCPLとBでは 式の評価は文脈に依存します。 式の値を0と比較する条件文。 これらの言語では、and (&) と or (or)は特別に解釈されます。 (|) 演算子です。通常の文脈では、これらの演算子はビット単位で動作しますが Bステートメント
if (e1 & e2) ...
は、コンパイラがe1を評価し、それが0でなければe2を評価し、そして も0でなければ、ifに依存するステートメントを詳しく説明する。 この要件は、e1内の& および | 演算子に対して再帰的に降り注ぐ。 とe2がある。このようなブール演算子の短絡的なセマンティクスは 真理値」コンテキストは望ましいと思われるが、そのオーバーロードは の演算子は説明しにくく、使いにくいものでした。 の提案で Alan Snyder は、&& と || 演算子を導入して、この2つの演算子で 機構をより明示的にする .
(ありがとうございます リチャード・ブラウン このセクションの調査について)
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] Pythonの "at"(@)マークは何をするものですか?
-
[解決済み] IFステートメントを使用しているときに、シェルコマンドを複数行に分割するにはどうすればよいですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] twigで文字列を連結する方法
-
[解決済み] にはどんな意味があるんだろう?
-
[解決済み] PowerShellで"@"マークは何をするのですか?
-
[解決済み] なぜ"||"は "or "の記号なのですか?[クローズド]
-
[解決済み] OCamlにおける`and`キーワードの意味とは?
-
[解決済み] YAMLです。YAML の文字列には引用符が必要ですか?
-
[解決済み】PowerShellで"&&"や"-and "を動作させることはできますか?
-
[解決済み] 様々な言語のコードをシンタックスハイライトするためのLaTeXパッケージ
-
[解決済み] プログラミング言語における文法と意味の違いは何ですか?
-
[解決済み] Kotlinの変数名前アスタリスク演算子またはSpread演算子