ときどきの雑記帖 RE* (新南口)
技術への問い
いろいろダメ(謎)
null
こういう記事を見かけた。
コンピュータ、特にプログラミングでは、Nullは重要な役割を持つ。「何もない」こと、「何も指し示していない」 ことを表わすのにNullやNilといったシンボルを使う。Nullは、1966年に作られたALGOL Wで最初にプログラミング言語に導入された。
ALGOL Wが最初。そうだったっけ? と気になったので(ry
まずALGOL Wそのもののうぃきぺ。
ALGOL W is a relatively simple upgrade of the original ALGOL 60, adding string, bitstring, complex number and reference to record data types and call-by-result passing of parameters, introducing the while statement, replacing switch with the case statement, and generally tightening up the language.
ALGOL Wでいろいろ導入されたとはあるけれどもnullについての言及はなし (関連するであろう「reference to record data types」というのはある)。 そこでhoare nullといったキーワードで検索してみると
Null References: The Billion Dollar Mistake
Summary
Tony Hoare introduced Null references in ALGOL W back in 1965 “simply because it was so easy to implement”, says Mr. Hoare. He talks about that decision considering it “my billion-dollar mistake”.
というのが見つかった。 このほかにも
It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W).
というのが見つかったので、ALGOL Wが最初ということでよさそう。 疑ってすまんかった。
nullと言えば新山さんが拾った話題にこういうものもあった。
データの終端や"NULL"値を表す方法としてよく使われるのは bitmap (NULLであることを表す情報を付加する)方式か sentinel (ある値を特別な扱いにする) 方式である。sentinelは速そうに思えるが使える値に制限がかかるうえに、最適化した bitmap方式のほうが速い可能性がある。https://t.co/WwIi2R7mKX
— 新山祐介 (Yusuke Shinyama) (@mootastic) June 7, 2023
気になったので元記事 Is it time to stop using sentinel values for null / “NA” values? - Wes McKinney も読んだけど
Fri 12 October 2018
ちょっと前の記事ではあるか。
新刊近刊
データ分析失敗事例集
共立出版の刊行予定を眺めていたらちょっと気になる本があった(Amazonにはまだ登録なし)
発売日 2023/08/03
8月か。
kindle版
新刊情報で
というのを見かけ、ちょっと(だいぶ?)前に出た本だよなあ と気になったので確かめたら kindle本が出たということなのね。 というか今まで出てなかったのか。
MID$ statement
space ship operator?
前回書いた
謎の非公開演算子<=> N-BASICには未知の演算子が存在している。 試行錯誤した結果、演算子の具体的な内容は以下の通りであった。
- 2項演算子である
- 3文字の長さである
- <=>の3文字を任意の順番で並べたものである。ただし同じ文字は2回使えない
- 文字列と数値の組み合わせでは使用できない(Type mismatchエラーとなる)
- どのような値を指定しても-1という結果になる
のつづき。
「あなたの知らないN-BASICの真実」にはこのあと
具体的なところはソースを読めていないので分からないが、 おそらく2文字の比較演算子を実装する都合上、このような意味のない 演算子が発生してしまったのではないかと推定する。
(略)
おそらく実装の内容は、以下の通りだ。
- その1文字を比較演算子として評価する
- すべての評価結果のORを取る その結果、たとえば"1<=2"の評価結果は、“1<2"の結果と"1=2"の結果の ORを取り、"-1 OR 0"という処理を行って-1という結果を得ているのではないか。 “-1<>2"なら"1<2"の結果と"1>2"の結果のORを取り、"-1 OR 0"という 処理を行って-1という結果を得ているのではないか。これを3文字に拡張すると “<”, “=”, “>“どれかの演算子が必ず-1になるため、-1という結果しか 返さないのではないだろうか。
という記述がある。 なんとなく気になったのでGW-BASICのソースコードを眺めてみた。 もちろんN-BASICとGW-BASICで同じとは限らないのだけど そこはそれなにか痕跡でもと。
gw-basic
式の解析部分を上から辿りたいのだけど 分岐先をスタックに積んでおいて 忘れたころにそれを(RETで)呼び出す。 と言ったことをしているので 呼び出しフローの真ん中あたりがよくわからん😄
んで、演算子の解析をしているのは(たぶん)ここ。
gweval.asm
DORELS: MOV DH,LOW 0 ;ASSUME NO RELATION OPS
;ALSO SETUP THE HIGH ORDER OF THE INDEX INTO OPTAB
LOPREL: SUB AL,LOW OFFSET GREATK ;IS THIS ONE RELATION?
JB SHORT FINREL ;RELATIONS ALL THROUGH
CMP AL,LOW OFFSET NMREL ;IS IT REALLY RELATIONAL?
JAE SHORT FINREL ;NO JUST BIG
CMP AL,LOW 1 ;SET UP BITS BY MAPPING
RCL AL,1 ;0 TO 1 1 TO 2 AND 2 TO 4
XOR AL,DH ;BRING IN THE OLD BITS
CMP AL,DH ;MAKE SURE RESULT IS BIGGER
MOV DH,AL ;SAVE THE MASK
JAE SHORT ??L004
JMP SNERR ;DON'T ALLOW TWO OF THE SAME
??L004:
MOV TEMP3,BX ;SAVE CHARACTER POINTER
CALL CHRGTR ;GET THE NEXT CANDIDATE
JMP SHORT LOPREL
<
、=
、>
にそれぞれ特定の位置のビットを割り当てて
それが2回出てきたかどうかだけ見ていて、長さがどうかは見ていない。
三種類の記号が重複なく出現するときの長さは最長で3なので
まあそういうことなんだろう。
ところで記号の登場順序はチェックしていないようなので、
<>
を><
、
>=
を=>
、
<=
を=<
とそれぞれ書けるような気がするんだけど
実際のところどうなんだろう?
あと三種類全部を使った並びは三体合体六変化なので
<=>
以外の並びが五つあるわけなのだが。
って
- <=>の3文字を任意の順番で並べたものである。ただし同じ文字は2回使えない
とありましたわな。 そうすると二文字の方も…?
FORTRAN Compiler on IBM 704
はたらく○○さん
はたらくおじさん、はたらくおじさん、こんにちわ♪
— Miura Hideki (@miura1729) June 3, 2023
か、
はたらくおじさん、はたらくおばさん、こんにちわ♪
かで世代が分かる説 (Z世代からしたら誤差だけど https://t.co/A5EweWfIbm
ふむ?
「タンちゃん」と犬の「ペロくん」が気球に乗って空から望遠鏡で覗き、毎回様々な職業の「おじさん」から仕事の内容を説明して貰っていた。 しかし、実際には働くのはおじさんだけではないことから、番組は後に『みんなのしごと』と改題。 さらにその後は『はたらくひとたち』と題して放送されるようになった。ちなみに、「タンちゃん」の由来は探検好きなことから。
「はたらくひとたち」は記憶にあるけど、「みんなのしごと」は知らんなあ。
で
主題歌
- 作詞:飯島敏子
- 作曲:田中正史
- 歌:三井洋子、中森孝子
放送期間が長いため、アレンジが違ういくつかのバージョンが存在する。歌詞も女性の社会進出に伴い、 歌詞中の4箇所中2箇所の「おじさん」が「おばさん」に変更されている。
なんと。
みんなのしごと
『はたらくおじさん』の基本的な内容を継承した番組[1][2]。タンちゃんとペロくんが乗る乗り物は気球からヘリコプター「ペロ号」[1]に変更される。
- 放送期間:1982年4月7日 - 1984年3月
- 出演者:タンちゃん(声・三井洋子)[1]、ペロくん(声・中森孝子)[1]、八奈見乗児(ナレーター)
はたらくひとたち
『はたらくおじさん』・『みんなのしごと』からキャラクターを一新し、制作も従来のNHK大阪放送局から東京の放送センターへ移管された番組。 その為、職場風景のロケ地がそれまでの大阪をはじめとした近畿地方の事業所から、 東京・神奈川等を中心とした関東地方に拠点が置かれている事業所での収録となった。 1992年度から小学1・2年生向けの社会科授業が廃止される為、1991年度放送分を以って終了となった。
- 放送期間:1984年4月11日 - 1992年3月
- 出演者:ケンちゃん(声・川島千代子)[3]、フムフム(声・三輪勝恵)[3]、おじさん(声・八奈見乗児)
「みんなのしごと」が記憶にないのは放送されていた期間が短めだったというのもあるんだろうか。 82年から84年頃に自分が何をしていたかというと…
二曲目でたしかに「おばさん」いうとるな