16進リテラルの「0x」規則はいつどこで発生しましたか?

Aug 16 2020

1980年代初頭までに、Cは0x、16進数で表される整数リテラルを示す接頭辞として使用していました0xCAFE。これは1972年の時点ではBには存在しませんでしたが、Bは0プレフィックスを介して8進整数リテラルをサポートしていました。

この0xプレフィックスが最初に使用されたのはいつどこですか。

回答

36 Raffzahn Aug 16 2020 at 13:28

これは1972年の時点ではBには存在しませんでしたが、Bは0プレフィックスを介して8進整数リテラルをサポートしていました。

本当ですが、Bの前身であるBCPLには、#8進数と#x16進数の表記がありました。したがって、このアイデアは世代を「ジャンプ」させました。


Cの歴史は、後で再び追加される機能を削除することの1つです...良くも悪くも。

  • CPL(Combined Programming Language)は、システムプログラミング用の簡略化されたAlgolとしてケンブリッジとロンドンで開発されました(* 1)。1965/66年にEDSAC2、Atlas、IBM7094に実装されました。

  • BCPL(Basic CPL)は、その名前が示すように、CPLの簡略版であり、1967年にIBM 7094(* 2)に最初に実装されました。

  • Bは、1969年にPDP-7に適合するように作成された簡略化されたBCPL(* 3、* 4)でした。

  • Cは、1972ffにPDP-11用にNB(New B)を介して開発され、機能が追加されました(戻ってきました)。

#8進定数を表すために使用されるCPL。実装されたすべてのマシンのワードサイズは3で割り切れ、出力には6ビット文字を使用していたため、16進数は実際には必要ありませんでした。

BCPLは(非常に短い)時間の経過とともに進化しました。最初から#8進数をマークするために使用されていましたが、16進数、さらには8進数の#b2進数ですぐに補足されました。これらの追加は時間と実装に固有でしたが、少なくとも迅速な標準になりました。#x#o#x

Bは、前のゼロを優先して表記#x全体#(* 5)で再びドロップし、パーサーを単純化しました。PDP-7は3ワードサイズのマシンの倍数であったため、必要なマシン固有の表記は8進数のみでした(* 6,7)。

CはPDP-11用に開発されました。16ビットマシンとして、多くのマシン依存定数が16進数で自然に発生します。8ビットバイトとASCIIの32のグループへのセグメンテーションは言うまでもありません。16進数表記の再導入が検討されました。便利です-今回は、先行するゼロのアイデアを維持します。


* 1-CPLは一見の価値があります。基本要素としての単語へのポインタなど、Cの基本の多くはすでに含まれていますが、今日からはまったく型破りに見えるいくつかの機能も含まれています。たとえばa = bc、変数bcをaに割り当てませんが、bとcの積を割り当てます。複数文字の識別子は大文字で始める必要がありました。これは、非常に好まれたキャメルケースの起源かもしれません。

* 2-そして、当時は中括弧や角括弧がなかったモデル35 TTYであるため、有向グラフが追加されました。同様にバックスラッシュがないため*、文字列の特殊文字に使用されました。

* 3-さらにいくつかの面白いスイッチ。+:=拡張割り当てとしてAlgolを使用していたため、CPLとBCPLを使用し=+、Bはに切り替えました+=

* 4-多分いくつかのPL / Iが追加されました。

* 5-#比較演算子の一部として同様に削除されました

* 6-8ビットバイトとそれに対応する16進表記は、IBM / 360で少し前に導入されただけであることを常に覚えておく価値があります。

* 7-興味深いサイドノートは、CTCが1970データポイント2200のアセンブラーで8進定数の先行ゼロも使用したことです。ですから、直接的な関係はありませんが、トンプソンが行ったのと同時に同じ解決策を思いついたのは非常に興味深いことです。