ときどきの雑記帖 RE* (新南口)
星空のメッセージ
電脳秘宝館
数日前に電脳秘宝館・マイコン展|角川武蔵野ミュージアム に行ってきたのだけど、あとで書く(たぶん)
「マイコン博物館」を訪問!懐かしの実機が登場&幻の珍品も? | TVer でマイコン博物館が取り上げられていたけど、 番組で出てきたマシンの大半が たぶん現在こっちに出張中😄
- 伊集院光の偏愛博物館(マイコン博物館訪問回)に感激しました - JH1LHVの雑記帳
- TVerで伊集院光の偏愛博物館「マイコン博物館」の回を視聴しました - 趣味と物欲
- 「伊集院光の偏愛博物館」で紹介された「マイコン博物館」が面白く,興味深かった | P.T.A.55
- 角川武蔵野ミュージアム(KCM) | 電脳秘宝館・マイコン展にご協力いただいているマイコン博物館が、「伊集院光の偏愛博物館」で紹介されました。 素晴らしいコレクションが見られますので、TVerでぜひご覧ください! https://tver.jp/episodes/epcicv42yz… | Instagram
バグ
[Bug #21437] 同じ日付でも年の値が巨大な場合に Date#hash の値が異なるというバグ報告
言われてみればそうなるかと納得できるのだけど、 こういうこと(バグ)があるんだねえ
ガシャポン クアアイナ
WG 14
いい加減長い(印刷するとA4で80ページ以上)ので 「つまみ読み」しかしていないのだけど
typedef int (*cb_t)(int);
void api_old_copy(cb_t cb, void *data, size_t data_size);
void example7()
{
// const-qualified variables can be copied
int (*const p)[10] = malloc(sizeof *p);
if (!p) return;
int bar(int x, void *data) _Closure(data)
{
return (*p)[x];
}
// sizeof can be used to obtain the required size
api_old_copy(bar, &_Closure(bar), sizeof(_Closure(bar)));
}
typedef int (*cb_t)(int);
void api_old_copy(cb_t cb, void *data, size_t data_size);
void example7_modified()
{
// non const-qualified variable is by-name
int (*p)[10] = malloc(sizeof *p);
if (!p) return;
// change to `const` to enable capture
int (const *cap_p)[10] = p;
int bar(int x, void *data) _Closure(data)
{
#if 0
// dangerous -- may not exist
return (*p)[x];
#else
// not dangerous -- captured by value
return (*cap_p)[x];
#endif
}
// sizeof can be used to obtain the required size
api_old_copy(bar, &_Closure(bar), sizeof(_Closure(bar)));
}
「キャプチャーの対象となる変数」にはconstがついていないと 面倒が起きる可能性があるらしい?
NB
こっちも結構な分量がある
N3677 2025/08/03 Svoboda, Examples of Undefined Behavior
#define assign(uc1, uc2, val) uc1##uc2 = val
void func(void) {
int \u0401;
// ...
assign(\u04, 01, 4); // Undefined Behavior
// ...
}
たくさん事例が載っているんだけど、こういう↑のも いちいち列挙していくのは大変だなあ
新刊近刊
図解まるわかり コンピュータのしくみ
【宣伝】
— K.Maeyama /電子計算機の日本史 (@mk95_hoc) July 31, 2025
自分が半分くらいを執筆した本が8月7日に出版されます!ぜひお願いします!
『図解まるわかり コンピュータのしくみ』
テクニカルな話ばかりではなく,(自分の研究のアプローチでもある)社会との関わりの中でコンピュータを描いていくスタイルになってますhttps://t.co/gK7nWslRLO pic.twitter.com/DMpL9xQcLw
図解まるわかり コンピュータのしくみ | 前山 和喜, 武井 一巳
『コンピュータのしくみ』というタイトルにもかかわらず,「ソロバン」はもちろん,「計算手(珠算競技会)」「計算尺」さらには
— K.Maeyama /電子計算機の日本史 (@mk95_hoc) August 1, 2025
「九元連立方程式求解機」まで出てきます
完全に自分が好き放題やっちゃっている箇所もありますが,おそらく多くの人にとって楽しく読めるはずです! https://t.co/yVBBicEvVE pic.twitter.com/IPxuN8bRnP
呪文の言語学
[4F]🌟新刊、好評発売中!🌟
— 書泉グランデ | 神保町 (@shosengnd) August 3, 2025
『呪文の言語学 ルーマニアの魔女に耳をすませて』
角 悠介 @ivsvce
(作品社)
呪文もことばである。… pic.twitter.com/4vTL6Wf4v6
その呪文、本当にあなたのですか?
— 角 悠介 (@ivsvce) August 2, 2025
ルーマニアの魔女達が思い出させてくれる「ことばの力」
「ふつうのことば」と「呪文」の違い
「宛名のある呪文」と「宛名のない呪文」
呪文という聖域に言語学者がメスを入れ
ここに「呪文学」が幕を開けるhttps://t.co/wGtEIRiJlY
初めてのGo言語
初めてのGo言語 第2版 ―他言語プログラマーのためのイディオマティックGo実践ガイド
初版からだけど、「idiomatic」ってカタカナ書きで意味がどのくらい伝わるんだろう?
プログラミング言語大全
sed―テキストファイルを加工するUNIX出身言語
PostScriptがプログラミング言語じゃないのにsedはこうなの?
原論文から解き明かす生成AI
原論文から解き明かす生成AI | 菊田 遥平 |本 | 通販 | Amazon
awk
Update support files. - gawk.git - gawk
@@ -831,7 +831,7 @@ init_dfa (re_dfa_t *dfa, size_t pat_len)
if (table_size > pat_len)
break;
- dfa->state_table = calloc (sizeof (struct re_state_table_entry), table_size);
+ dfa->state_table = calloc (table_size, sizeof (struct re_state_table_entry));
dfa->state_hash_mask = table_size - 1;
dfa->mb_cur_max = MB_CUR_MAX;
@@ -862,7 +862,7 @@ init_dfa (re_dfa_t *dfa, size_t pat_len)
{
int i, j, ch;
- dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
+ dfa->sb_char = (re_bitset_ptr_t) calloc (1, sizeof (bitset_t));
if (__glibc_unlikely (dfa->sb_char == NULL))
return REG_ESPACE;
callocの戻り値をキャストしたりしなかったりと一貫してなくてちょっと気になる(笑
まあほぼキャスト有りなので、たまたま忘れたというパターンかもしれない。 Cの言語仕様的にはつけないのが正解なんだっけか? (逆にC++はキャストが必須)
FORTRAN Compiler on IBM 704
- The arithmetic translator-compiler of the IBM FORTRAN automatic coding system | Communications of the ACM
- Assembly listing of transcription - Software Preservation Group
- FORTRAN II
L32000 PXD ,B 4F13932
ARS 18 4F13933
STO LAMBDA+8,A STO 5(N+2) IN LAMBDA+3(L+2)+2 4F13934
ADD L(1) 4F13935
TXI L33130,B,1 -(N+2) TO -(N+1) 4F13936
L33000 PXD ,B 4F13937
ARS 18 4F13938
STO LAMBDA+11,A STO S(N+2) IN LAMBDA+3(L+3)+2 4F13939
ADD L(1) 4F13940
SSM 4F13941
TXI L33090,B,1 -(N+2) TO -(N+1) 4F13942
L33090 STO LAMBDA+9,A STO -(N+1) IN LAMBDA+3(L+3) 4F13943
L33130 SLW ALPHA,C STO -(N+1) IN ALPHA+A 4F13944
STO LAMBDA+8,A
のコメントのSTO 5(N+2)
は
STO S(N+2)
の間違いのような気がするんだけど、
リスト出力のPDFを見ても本当に5で、Sの誤認識というわけではなかった。
入力ミス?
Hugoメモ
quote
この手の新技術が人間の仕事にもたらす変化の将来予測、たいてい当たらないんだよね。
— 江添亮 (@EzoeRyou) August 3, 2025
「ENIACが数台あれば世界の計算需要を満たす」
とか
「個人用のコンピューターというものは需要がない」
なんて先見性のない発言が当時の業界最先端の会社の経営者の口から発せられたりしたし。 https://t.co/79ck6yzcRV
「ENIACが数台あれば~」な発言は誰が言ったんだろう? 似たような発言では
ワトソンは1943年に「コンピュータは全世界で5台ぐらいしか売れないと思う」と言ったとされているが、証拠は不十分である。 Author Kevin Maney は引用の元を探したが、ワトソンのどのスピーチや文書からもその文章は見つけられなかったし、 当時のIBMに関する記事などを見てもそのような言葉は出てこない。
この辺が思い浮かぶけど。 あとその息子も
戦争が終わり、コンピュータに関する新聞記事や学術会議が賑わうようになる。 とは言えペンシルベニア大学のENIACを見学した時に、巨大かつ高価で、しかも信頼性の低いこの装置が、 いずれオフィス機器になるとは思えなかったと述懐している。
とか言ったとか。
ENIAC開発の中心であるところのエッカートとモークリーはのちに コンピューターを作る(そして販売する)会社を興しているし、 ENIAC云々は言いそうにない気がする(が実際のところどうなのか調べてない)
「個人用のコンピューター~」はケン・オルセンがそんな発言をしたと記憶していたのだけど、 調べてみるとこれも元の発言のコンテキストを無視した「切り取り発言」で 誤解されているっぽい(知らなかった)
In 1977, referring to computers used in home automation at the dawn of the home computer era, Olsen is quoted as saying “There is no reason for any individual to have a computer in his home."[12][13][14][15][16] Olsen admitted to making the remark, even though he says his words were taken out of context and he was referring to computers set up to control houses, not PCs.[14]
「640KBはすべての人にとって永久に充分なメモリだ」とか
— ぬん。 (@amasawa_seiji) August 3, 2025
「インターネットのアドレス空間は32ビットで充分だ」とかですな。。 https://t.co/PPVg8Uy92k
(ビル・ゲイツの)640K発言は以前にも書いたことがあると思うけど そのような発言をしたという明確な記録はない(はず)
quotes bill gates 640k - Google 検索
少なくとも「すべての人にとって」「永久に」は 尾ひれつけすぎだろう
「インターネットのアドレス空間~」は思い浮かぶものがなかったので調べてみたけど、 これもどうも歪曲されて世に流れているっぽい
Easy answer: because Vint Cerf decided so.
At the Google IPv6 Conference 2008, he hosted a panel discussion titled What will the IPv6 Internet look like? during which he recounted:
The decision to put a 32-bit address space on there was the result of a year’s battle among a bunch of engineers who couldn’t make up their minds about 32, 128 or variable length. And after a year of fighting I said — I’m now at ARPA, I’m running the program, I’m paying for this stuff and using American tax dollars — and I wanted some progress because we didn’t know if this is going to work. So I said 32 bits, it is enough for an experiment, it is 4.3 billion terminations — even the defense department doesn’t need 4.3 billion of anything and it couldn’t afford to buy 4.3 billion edge devices to do a test anyway.
めんどうくさいので↑の引用元までは確かめてないっす
- protocol theory - Why are IPv4 addresses 32-bit? - Network Engineering Stack Exchange
- IPv4 - Wikipedia
IPv4 uses a 32-bit address space which provides 4,294,967,296 (232) unique addresses, but large blocks are reserved for special networking purposes.[3][4] This quantity of unique addresses is not large enough to meet the needs of the global Internet, which has caused a significant issue known as IPv4 address exhaustion during the ongoing transition to IPv6.
time_t
1970年からの経過秒数を32bit符号付き整数で表現することに決めた人間は反省して欲しい。
— 江添亮 (@EzoeRyou) August 3, 2025
例えばtime_tを最初から64bit整数にしておけという話なのかもしれないけど、
32bit長にしたことが「反省を求められる」程のことではないと思う。
なぜならば、V7 UNIXの時点でもCにはlong long
のような64bit整数型はなかったし(たぶん)、
V7が最初に載ったPDP-11のレジスターの大きさは16ビットで、
システムコールからは二つのレジスター(R0、R1)を使って32bitの値が返されている。
てな状況があったから。
レジスター4つ使えば64bitにはなるけどさあ…
returns the time since 00:00:00, Jan. 1, 1972, measured in sixtieths of a second. The high order word is in the r0 register and the low order is in the r1.
BUGS
The time is stored in 32 bits. This guarantees a crisis every 2.26 years.
returns the time since 00:00:00 GMT, Jan. 1, 1970, measured in seconds.
the high order word is in the r0 register and the low order is in r1.
returns the time since 00:00:00 GMT, Jan. 1, 1970, measured in seconds.
the high order word is in the r0 register and the low order is in r1.
V7 はディジタル・イクイップメント・コーポレーションのPDP-11ミニコンピュータ向けに開発されたが、他のプラットフォームにも移植された。 PDP-11 - Wikipedia PDP-11 は、ディジタル・イクイップメント・コーポレーション(DEC)が1970年代から1980年代に販売した16ビットミニコンピュータシリーズ[1][2]。
/ C library -- time
/ tvec = time(tvec);
/
/ tvec[0], tvec[1] contain the time
.globl _time
.time = 13.
_time:
mov r5,-(sp)
mov sp,r5
sys .time
mov r2,-(sp)
mov 4(r5),r2
beq 1f
mov r0,(r2)+
mov r1,(r2)+
1:
mov (sp)+,r2
mov (sp)+,r5
rts pc
.globl _ftime
.ftime = 35.
_ftime:
mov r5,-(sp)
mov sp,r5
mov 4(r5),0f
sys 0; 9f
.data
9: sys .ftime; 0:..
.text
mov (sp)+,r5
rts pc
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/sys/sys/sysent.c
0, 0, gtime, /* 13 = time */
https://github.com/r1mikey/research-unix-v7/blob/modernisation/usr/sys/sys/sys4.c#L27
void gtime(void)
{
u.u_r.r_time = time;
}
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/sys/sys/clock.c
if(++lbolt >= HZ) {
if (BASEPRI(ps))
return;
lbolt -= HZ;
++time;
spl1();
runrun++;
wakeup((caddr_t)&lbolt);
time_tがどうとかいう話題は 昔tnozakiさんが書いていた記憶があるんだけど、 サイトがなくなっちゃってるしねえ…
a breeze
This post made my switch to C++ a breeze https://t.co/PoijOSRg0Y
— Dmitrii Kovanikov (@ChShersh) August 1, 2025
英語「breeze」の意味・使い方・読み方 | Weblio英和辞書
[a breeze] 《口語》 たやすい事.
へー
宇宙刑事s
なんだ?これ、、、? https://t.co/QLAiV4xOty
— 渡 洋史 (@watari164) July 31, 2025
神奈川県初!あの宇宙刑事たちがやってくる!消防・警察・海上保安庁で緊急通報の適正利用イベントを開催します! 横浜市
平日の昼間ではさすがに観に行く余裕はない😓