月別アーカイブ: 2017年7月

コンピュータ言語ではなぜ×が*で÷が/なのか。 おまけ

ASCII の記号と使用用途

. ピリオド 英語の文章で普通に使用される
, コンマ 英語の文章で普通に使用される
‘ アプストロフィー 英語の文章で普通に使用される
‘ シングルコーテーション 英語の文章で普通に使用される
” ダブルコーテーション 英語の文章で普通に使用される
_ アンダースコア タイプライターの下線用 ※ASCII 1963年度版では←だったらしい
/ 日付表記用、または/および
? 疑問符
! 感嘆符
* アスタリスク
% パーセント記号
@ 単価記号
# ナンバー
& アンパサンド ~と~
$ ドル記号 ※ASCII なので当然か
()[]{} 括弧

^ サーカムフレックス ※英語だとあまり使われない? ASCII 1963年度版では↑だったらしい
~ チルダ ※英語だとあまり使われない?
  サーカムフレックスとチルダは英語以外のラテン文字で使用される記号(ダイアクリティカルマーク)である。他のダイアクリティカルマークは入らず、この二つだけ ASCII に入った。
| バーティカルバー ※コンピュータ以外ではあまり使用されない?
\ バックスラッシュ ※コンピュータ以外ではあまり使用されないがALGOLのために追加?

上四つの記号がなぜ ASCII に入ったのかは結構謎である。バックスラッシュは ALGOL のためらしいが、そこで×÷が入らなかったのはなぜなのだろうか。
やはり FORTRAN の */ が普及してしまっていたからなのか。

コンピュータ言語ではなぜ×が*で÷が/なのか。 その3

次に最古の高級言語である FORTRAN 言語を調べてみる。
Wikipedia アスタリスクによると「乗算に * が使用されたのは、FORTRAN が設計された際に、IBM 721 系のカードパンチ機に×のキーが存在しなかったため、* で代用した名残といわれる。」とある。
FORTRAN は 1954 ドラフト、1956 マニュアル、1957 コンパイラリリースとなっている。
つまり ASCII の最初の制定時(1963) にコンピュータ言語として FORTRAN がすでにあった事になる。
FORTRAN は今の言語仕様から考えても、除算も / を使用していたと思われる。つまり * や / は FORTRAN 由来と考えて良いように思う。
しかし、コンピュータ言語 ALGOL 60 (1960) では×÷があったのである。
1961 ALGOL のために ASCII にバックスラッシュが追加されたという事もあるようだ。
結局×÷が ASCII に入らなかったのは、やはり世界共通ではないのと、ALGOL とは異なりすでに実用となっていた FORTRAN での * / の採用が大きかったではないかと考えている。
ということで、×÷が ASCII に入らなかったため、コンピュータ言語では乗算は * で除算は / で代用するという事になったのではなかろうか。

余談
コンピュータ言語 APL (1964) も×÷があったが、これもマイナー言語なため、ほとんど影響はなかったと思われる。

コンピュータ言語ではなぜ×が*で÷が/なのか。 その2

理由その2
コンピュータで使用する文字コードに×÷がなかった。

文字コードというか符号化形式としては元々電信用の符号があった。
電信機はキーボードでテープに穴を開けていたが、文字の使用頻度が多いほど穴の数が少ないようになっていた。
テープの穴を二進数と見なした場合、電信機用の符号の並びとアルファベットの並びは一致していない。
電信用としては初期は 5 ビット符号で Baudot、Murray といった符号があった。
これらを見てもやはり +- はあっても×÷はない。電信で使うような文章で乗算除算が入る事はまずないと思われるのでこれは妥当であろう。
1931 に CCIT の制定した国際電信アルファベットは二通りあるが、やはり +- はあっても×÷はない。

今使用されている Unicode の 7 ビット部分については ASCII がベースである。
ASCII(American Standard Code for Information Interchange)
1960/10/4 標準化開始。当初は 6 ビットで考えていたが不足とみて 7 ビットに移行した。
1961/11 最初の ASCII 規格案ができ、平行して ISO が 1962/5/4 に 6 ビットと 7 ビットの文字符号作成を決定した。
1963/3/29 に ECMA 6ビット符号 制定され、1963/6/17 7ビット符号の ASCII が制定された。
※ただし 1963 の ASCII は現在の ASCII と比べると、英小文字がない、^ が↑等の違いがあったらしい。1967 に修正された ASCII が現在のものと同じのようである。
電信用コードとは異なりコンピュータ使用も念頭に置いて制定されたため、ソート等の用途を考えアルファベットの実際の並びと同じになった。
しかしながら一般的な文章で使用されない | やバックスラッシュが採用されたにもかかわらず、×÷は採用されなかった。
他の文字コードとして、IBM が制定した EBCDIC(Extended Binary Coded Decimal Interchange Code) というのもある。
これは 1964/4/7 System360 発表と同時に仕様公開された。パンチカードで使用されていた BCD Binary-coded decimal ベースである。
EBCDIC の記号  .<(+&*);-/,%_>?:#@’=”  は BCD Binary-coded decimal に準じたものと思われる。当然×÷は無い。

続く

参考
安岡孝一・安岡素子著「文字符号の歴史」