BASICの行番号で 1
, 2
, 3
と振り番すると、あとで 2
と 3
の間に1行はさみたいときに
挟めなくて困るから、行番号は 10
, 20
, 30
と振りなさい、と教えられる。
あとで 20
と 30
の間に 25
を挟めるから なるほど! と思ったが、
じゃあ 25
と 26
の間に挟みたいときはどうするのか! という長年の疑問から
後からいくらでも挟めるような振り番が欲しかったので 仕様を発案した。
数値型ではなく 文字列型の辞書順 を利用する
「 数とか ベクトル(Vector)を思いついたのではなくて、表記(Notation)を思いついたんだぜ」
「 電脳ベクトル表記(Cyber Vector Notation) という名前の方が適切かだぜ?
日本語にすると 電脳向量表記 (でんのうこうりょうひょうき)?」
「 パソコンの 検索 能力の対象になるとき 意味が出てくるぜ」
「 自然数でも、小数でも、複素数でもなく、 整数 であることに意義があるぜ」
「 ただの 整数向量表記 じゃないんだぜ。優れた利点があるんだぜ」
「 名前が長すぎるぜ。だから略して サイバー数 にしたいんだぜ」
「 超BASIC行番号 とかかな。 BASIC の行番号ではなくて、それを壮大に超える性能の振り番なんだぜ」
「 今どきの人に BASIC の行番号って言っても 通じないでしょうね」
「 Super BASIC という商品は もう在るらしいぜ。名前被りだぜ」
「 自己稠密 で 辞書順 で 整数 な部分を まとめて サイバー と呼ぶことにしようぜ。
名前はしばらく Cyber Vector を使ってみて 良い案が出たら また考えようぜ?」
Step 0. 千葉
Step 1. 東京
Step 2. 大阪
Step 3. 愛知
「 👆 この Step
の右横に付いてるのは 零を含む自然数
であることが多いだろ」
Step 0. 千葉
Step 1. 東京
Step 1.1. 池袋
Step 1.2. 秋葉原
Step 1.2.1. 駅前
Step 1.2.2. 表通り
Step 2. 大阪
Step 3. 愛知
「 👆 章立てになってることもあるだろ。このときも 零を含む自然数
を使うことが多いだろ」
「 電脳向量 では、 負数 を使ってもよいことにする! 整数
だぜ」
👉 Step -1. 埼玉
Step 0. 千葉
Step 1. 東京
Step 1.1. 池袋
Step 1.2. 秋葉原
Step 1.2.1. 駅前
Step 1.2.2. 表通り
Step 2. 大阪
Step 3. 愛知
「 👆 このように Step 0.
の前に 項目を追加していけるのが 負数 だぜ」
「 電脳向量は 伝説の言語 BASIC の行番号の教えを発展させたものだぜ。
リナンバリングをなるべく避けるための 挿入のための数 だぜ」
Step 0. 千葉
Step 1. 東京
Step 1.1. 池袋
Step 0. 千葉
👉 Step 1.0. 東京
Step 1.1. 池袋
Step 0. 千葉
👉 Step 1.-1. ネズミーランド
Step 1.0. 東京
Step 1.1. 池袋
「 👆 負数を使えば、 Step 1.0.
の東京の前に 項目を置くことができるぜ。
Step 1.-1.
は 東京だぜ。千葉ではないぜ」
「 👆 わたしはこの手法を サイバーナンバリング(Cyber Numbering) と呼びたい」
「 あんたしか使わないから 好きに呼んだらいいんじゃないの?」
Step 0. 千葉
Step 1. 東京
Step 2. 大阪
Step 3. 愛知
Step 5. 福岡
Step 6. 北海道
「 章立ての連番は 抜けてないことを確認するために 使わない?」
Step 3. 愛知
Step 5. 福岡
Step O3o0 愛知
Step O5o0 福岡
「 👆 序数に見えなければいいのか。 じゃあ 例えば こんな感じかな」
Step 2. 大阪
Step 3. 愛知
「 👆 お父ん、 大阪
の下でも 愛知
の下でもなく、 青森
を 大阪
と 愛知
の間に挿入したいんだぜ。
どうすればいいんだぜ?」
Step O[2 0] 大阪
👉 Step O[3 -9 0] 青森
Step O[3 0] 愛知
「 👆 どちらかに所属してしまうのは しゃーない。
テクニックとして 後ろの項目から見て [0 -9] の位置に追加しろだぜ」
Step O[2 0] 大阪
Step O[3 -9 0] 青森
Step O[3 -1 0] 京都
Step O[3 0] 愛知
「 👆 お父ん、愛知の [0 -1]
の位置に 京都を入れてしまった。
京都 と 愛知 の間に 沖縄 を入れてくれだぜ」
「 数の隙間の消費が早い……。 バイナリーサーチの考え方とか使って欲しかった」
Step O[2 0] 大阪
Step O[3 -9 0] 青森
Step O[3 -1 0] 京都
👉 Step O[3 0 -99 0] 沖縄
Step O[3 0] 愛知
「 👆 しゃーない、テクニックとして 後ろの項目から見て [0 0 -99] の位置に追加しろだぜ」
「 -9
, -99
, -999
, -9999
とスケールアップしていく作戦なのね」
「 結局 うまく番号振らないと 隙間が速く 消費してしまう。
とはいえ、なるべくセンスが一番無い人に使える技術でありたいぜ」
「 なんで -10
, -100
, -1000
, -10000
じゃないの?」
-10
-9
-8
「 👆 -10
は 1桁 出っ張ってしまう。
-9
から使うのが 使いやすかった」
「 👆 電脳向量表記は 簡単な仕様のところだけ Python にクラスとして実装してある。もう使える。
話しを聞くより、動かして覚えたい人は 使ってくれだぜ」
128.0.0.1
「 👆 ネットワークを使ってたら こういう数、よく見かけるだろ」
[128 0 0 1]
OAA128o0o0o1o0
「 O
とか A
とか o
とか、末尾に o0
が余分に付いてるわよ」
「 O
は、プログラムのクラス名や変数名の先頭に 数字を使えないから、 ゼロに似てるから数字みたいだろ、という由来で 左端に付けるぜ」
「 A
は 辞書順に並べるために 2桁以上の正の整数の前に詰めていく。詳しくはあとで説明する」
「 小文字の o
はポイント( .
)の代わりだぜ。形が似てるだろ。
大文字、小文字は区別しない」
「 右端は o0
で終わっていることが 推奨 だぜ。
ローカル変数のような 公開しないスコープでは 末尾の o0
は省いてもいい。
これを With trailing zero
、略して trail_zero
ルール と呼ぶぜ」
[18 -4 -13 71]
[18 -4 -13 71 0]
18 -4 -13 71 0
18o-4o-13o71o0
18o 4o 13o71o0
「 👆 負数は符号を外して、桁数が2倍になるようにスペースを空けろだぜ」
18o_4o__13o71o0
10 100
18o_4o__13o71o0
「 👆 その数より1桁多い数の中で最小の数を 上に置けだぜ」
10 100
18o_4o__13o71o0
-- ---
_6 _87
OA18o_6o__87o71o0
「 👆 負数は差を使えだぜ。
これが負数を使った 電脳向量表記 だぜ」
📂 2022
└── 📂 07
└── 📂 20
└── 📄めんどくせ.txt
「 👆 また、上記のような 年月日フォルダー も想定している。 以下を見てほしい」
[2022], [7], [20]
「 👆 ベクトルが ワンライナー(1行)に 3個ある、と考えてほしい」
OAAA2022o0g7o0g20o0
「 👆 g
でつないでくれだぜ。 g
の右隣の O
は取れだぜ。
小文字の g
は カンマ ,
に似ているから そうした」
「 こんなフォルダー名付けてるやつのパソコン開けたくないよな」
1. 食べ物
1.1. 果物
1.1.1. アップル
1.1.2. バナナ
1.1.11. キーウィ
「 👆 また、上記のような ドキュメントの章立てに振る番号も想定している。 以下を見てほしい」
[1]
[1, 1]
[1, 1, 1]
[1, 1, 2]
[1, 1, 11]
「 ファイルエクスプローラーでも Word でも Excel でも Note でも Visual Studio でも プログラム仕様書 でも Confluence でも見かけるわねぇ。
職業プログラマーのIT利用技術にうんざりして生まれてきた数 というだけある実例ねぇ」
「 次の日の朝、ドキュメントを開くと リナンバリング されていることがある。
Id
もリナンバリング、文章番号も リナンバリング
、特に 欠番,飛び番は嫌がられて 連番 だぜ」
「 リモートの Windowsのフォルダー名に付いている章立ての番号が次の日リナンバリングされていて
フォルダーへのパスが変わってるから ファイル アクセスできなくなっていることがある。
それが嫌で 電脳向量表記のもとの数 は生まれてきた。
言うなれば 電脳向量 だぜ」
O1o0
O1o1o0
O1o1o1o0
O1o1o2o0
O1o1oA11o0
「 伝説の BASIC 言語では 1, 2, 3 ... ではなく 10, 20, 30 ... にしましょう、という習慣がある。
20 と 30 の間に行を足したくなったら 25 を差し込めるからだぜ」
00. 食べ物
00.00. 果物
00.00.00. アップル
00.00.01. バナナ
00.00.10. キーウィ
「 👆 小数でも解決しない。 振り番に 0
を使われてしまったときだぜ。
前ゼロを使って 2桁の数を使うシーンで 01
ではなく 00
から始まってるのをよく見かける。
0 の前に記事を挿入しようと思っても、 0 より小さい数はない。小数を使っても無理。詰んだ」
「 序数を 0 から始めるやつに 社内のルール作りをやらせるなだぜ。
物を数えるときに 指0本立てるところから数え始めるのか」
O[0 0] 食べ物
O[0.0 0] 果物
O[0.0.0 0] アップル
O[0 0 1 0] バナナ
O[0 0 10 0] キーウィ
「 👆 そういうとき、 (1) trail-zero
して、」
O[0 -1 0] 食べ物の前に
O[0 0] 食べ物
O[0.0 -1 0] 果物の前に
O[0.0 0] 果物
O[0.0.0 -1 0] アップルの前に
O[0.0.0 0] アップル
O[0 0 1 -1 0] バナナの前に
O[0 0 1 0] バナナ
O[0 0 10 -1 0] キーウィの前に
O[0 0 10 0] キーウィ
「 👆 (2) 右端の列を -1
して trail_zero
すれば 前に記事を挟める」
「 この2ステップを合わせて insert before here
操作と呼ぶことにするぜ」
O0o_9o0 食べ物の前に
O0o0 食べ物
O0o0_9o0 果物の前に
O0o0o0 果物
O0o0o0_9o0 アップルの前に
O0o0o0o0 アップル
O0o0o1_9O0 バナナの前に
O0o0o1o0 バナナ
O0o0o10o_9o0 キーウィの前に
O0o0o10o0 キーウィ
「 👆 -1
は Windowsのフォルダーでは 0
より前に行かないので 辞書順記数法
を使って _9
と書くぜ」
「 でも 会社の人が こんなん見たら あんたクビになるわよね」
「 こんなダメなものが流行り始める前に プログラム言語と フォルダー名ソートの方を 改良してほしい」
「 プログラム言語や OS が改良しても、 目の前の1つのアプリが対応してなかったら意味無いぜ。
電脳向量表記は 一番だめなやつになるべく幅広く合うようにしている。最悪の中での原理的な妥協だぜ」
# ふつう
2022年07月20日
# 電脳ベクトル表記
OAAA2022o7oA20o0
「 👆 フォルダーの名前で使うにはカンマ(,
)が使えないので
小文字のオー(o
)を使うこととし、
10進数は、 その桁数×2-1
の桁数があると考えて、前ゼロの代わりに 大文字のエー(A
)で埋めてくれだぜ」
# ふつう
[-1 -21 -321]
# 電脳ベクトル表記
O_9o__79o___679o0
「 👆 マイナスは Windowsのフォルダーの名前順では 0 の前にこないので アンダースコア(_
)を使うこととし、
負数の桁数×2
の桁数があると考えて、前ゼロの代わりに アンダースコア(_
)で埋めてくれだぜ。
このとき、あとで説明する数n + その負数
にしてくれだぜ」
「 1~9 なら n は 10、 10~99 なら n は 100、 100~999 なら n は 1000 だぜ」
「 詳しくは 辞書順記数法
を見てくれだぜ。負数の説明もある」
_ 0 1 2 3 4 5 6 7 8 9 A G O a g o
「 👆 電脳数は 上記の文字だけで記せる数で、大文字小文字を無視しても構わない(Ignore case)ぜ」
var o2o1banana = new O2o1Banana()
o2o1banana.loadsVO2o1(r"C:\This\Is\A\Path\O2o1\bananaO3o2o1.txt")
「 👆 変数名,クラス名,メソッド名,フォルダー名,ファイル名にも たいてい使える文字だな」
「 電脳向量 がプログラムのクラス名やフォルダーの名前で使えないのが嫌で 電脳向量表記 が生まれてきた。
事実は逆順で、先に 電脳向量表記 を作って、あとで 電脳向量 に気づいた」
「 名前の生態系や、プログラマーの文化や、数学の美的感覚を破壊しにいってるわね」
📂 O___100o0
📂 O__99o0
📂 O__10o0
📂 O_9o0
📂 O0o0
📂 O1o_9o0
📂 O1o0
📂 O1o0o1o0
📂 O9o0
📂 OA10o0
📂 OA99o0
📂 OAA100o0
📂 OAA999o0
📂 OAAA1000o0
「 こんな脳してるやつ 学校にいても 会社にいても おかしい人だと思われるの 妥当だぜ」
📂 OA10oAAA1000o0
📂 OAA100oAA100o0
「 👆 ベクトルの左の列の数から優先して昇順だぜ。 楽だろ」
[[2 1] 0]
「 電脳向量表記では 入れ子ベクトルは使わないぜ。
入れ子ベクトルを辞書順に並べるには文字数がだいぶ増えてしまうから、仕様に入れるのは諦めたぜ」
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント