ときどきの雑記帖 RE* (新南口)
Attack of the Killer Tomatoes
ミンミンゼミ
今年初遭遇。
パニーニ
さらに値上げされてた。
Apolo 13
NHK BS のBSシネマでアポロ13が放映されたのを観た。 この映画も公開から20ン年と考えると遠い目になってしまいますな。
そういえば「新・電子立国」でもちょこっと出てきてたような。
温故知新
とはいうけれど、「ロングテール」だとか「フリーミアム」 の本を今読むとどんな感想になりますかね。 それはともかく
Amazon.co.jp: 最大50%OFF コンピュータ・ITキャンペーン: Kindleストア
期間:2022年7月15日(金) 00時00分 ~2022年7月28日(木) 23時59分(日本時間)
半額でなら買って読んでみてもよいというのもあるかな? (すでに持っているものもあるけど)
R.I.P.
- Tom Lord has died | Hacker News
- Thomas Lord 1966-2022. Category: Obituaries from The Berkeley Daily Planet
Is it this Tom Lord: https://www.gnu.org/software/gnu-arch/ ?
It was my first introduction to proper branching/merging support, vs RCS and CVS at the time.
Yes apparently: https://lwn.net/Articles/901807/
Unfortunately yes. That was interesting system before git…
Free software lost a good one. I remember him as the principal hacker in the 90s on Guile, which goes with everything.
世間一般(?)的には GNU ArchやGuileの人という認識なのだろうけど、 自分にとってはrxという正規表現ライブラリの作者。 だったりする。 このライブラリはGNU regex の置き換えを目指して開発が始まり、 GNU sedに使われていた時期もあったのだけど 開発はそれほど進まずに中断されてしまった (その後GNU sedはglibcのregexを使うように)。
90年代に一年ごとにFSFが日本でセミナーを開いていた時期があったのだけど その中のある年にTom Lordも講師として来日したことがあった。 そのときにGuileのことで少しばかし話をしたことがある (が、今より輪をかけて英語が壊滅的だったので大したことは話せてない😓)
記事を見て思っていたよりもずっと若かったことを知ってそれにも驚いた。
R.I.P.
RX - GNU Project - Free Software Foundation
TSUTAYA
閉店
【「TSUTAYA元住吉店」が2022年9月11日レンタル最終日で閉店、武蔵小杉・新丸子・武蔵中原に続き中原区からTSUTAYA消滅へ】 #元住吉 https://t.co/c4V14omxrU 元住吉店は23年の歴史に幕を下ろすこととなりました。 pic.twitter.com/d5XbAScvgz
— 武蔵小杉ライフ公式 (@musashikosugi) July 20, 2022
「TSUTAYA元住吉店」が2022年9月11日レンタル最終日で閉店、武蔵小杉・新丸子・武蔵中原に続き中原区からTSUTAYA消滅へ|元住吉駅周辺|武蔵小杉ブログ(武蔵小杉ライフ 公式ブログ)
中原店もすでに閉店してたのか。
考えるカラス
録画予約していたはずの 考えるカラス | NHK for School が録画されていなかったので 最終回になっていたかと調べてみると、
- 第13回 (放送日:7月6日)
- 第14回 (放送日:7月13日)
- 第15回 (放送日:8月24日)
- 第16回 (放送日:8月31日)
お休み期間だったらしい。 夏休み?
gawk
特に理由はなかったのだけどgawkのgitリポジトリを眺めていたら 気になるコミットが目についた。
+ As of version 5.2, the arbitrary precision arithmetic features in
+ 'gawk' are _deprecated_. They will be removed from 'gawk' in 2024.
+ If you use this option, 'gawk' generates a warning message. Create
+ the environment variable 'GAWK_NO_MPFR_WARN' with an arbitrary
+ value in order to silence the warning.
MPFR(とGMP)のサポートがdeprecated
になったらしい。
自分はサポートされたときにちょっと使ったことがあるだけで、
正直どのくらい使われているのか疑問に思っていたのだけどそうかあ。
が、少し後のコミットを見ると ちょっとニュアンスが変わっていた。
As of version 5.2, the arbitrary precision arithmetic features in
- 'gawk' are _deprecated_. They will be removed from 'gawk' in 2024.
- If you use this option, 'gawk' generates a warning message. Create
- the environment variable 'GAWK_NO_MPFR_WARN' with an arbitrary
- value in order to silence the warning.
+ 'gawk' are "on parole." The primary maintainer is no longer
+ willing to support this feature, but another member of the
+ development team has stepped up to take it over. As long as this
+ situation reamins stable, MPFR will be supported. If it changes,
+ the MPFR support will be removed from 'gawk'.
paroleの意味・使い方・読み方|英辞郎 on the WEB
FORTRAN Compiler on IBM 704
Q bit
704のアーキテクチャーを見ていてよくわからないことのひとつ。 704のアキュムレーターは以前にも書いたように 38ビットの大きさがあるのだけど
S | Q | P | 1 | 2 | 3 | …… | 33 | 34 | 35 |
上から2ビット目のQビットの役割がよくわからん。 その下のPビットは演算のオーバーフローやアンダーフローが発生したときに 1になるということで何の疑問もないのだけど。
たとえば、Pビットがオンになった状態のアキュムレーターとメモリ上の何かを加算すると、 繰り上がりでQビットがオンになる可能性はあるけど それを使ったなにかというと…
あるいはシフト演算でもQビットが関係するけど、こっちも 増えた1ビットでどうなるかというと?
ところで704のこのビットのならび、 MSBがビット1でLSBがビット35なんですな (360だとどうだったっけ?)。
END(
前回見たFORTRAN-IIソースコード中のDIC
に
END
ではなく開きガッコの続いたEND(
が置かれていたのが疑問だったのだけど、
FORTRAN-IIのENDは引数をとったらしい?
ADD06 LXA L(12),1 THIS RECORD IS OF FIRST CARD OF F1BM0490
rem ------ scanned 10/8/06 304349-Volume_I.pdf Page 027/027 ------
LXA L(7),2 FORTRAN STATEMENT. PREPARE TO TEST F1BM0500
CLA BUFFER FOR END(..,..,..,..,..) CARD F1BM0510
STO BUFFER-2 POSITION ENDMARK F1BM0520
LDQ BUFFER-13 F1BM0530
TSX SUB1,4 F1BM0540
SUB L(E) TEST FIRST CHAR FOR E F1BM0550
TNZ ADD01 F1BM0560
TSX SUB1,4 F1BM0570
SUB L(N) TEST SECOND CHAR FOR N F1BM0580
TNZ ADD01 F1BM0590
TSX SUB1,4 F1BM0600
SUB L(D) TEST THIRD CHAR FOR D F1BM0610
TNZ ADD01 F1BM0620
TSX SUB1,4 F1BM0630
SUB L(() TEST FOURTH CHAR FOR ( F1BM0640
TNZ ADD01 F1BM0650
TSX SUB1,4 F1BM0660
TSX SUB1,4 F1BM0670
SUB COMMA TEST SIXTH CHAR FOR , F1BM0680
TNZ ADD01 F1BM0690
TSX SUB1,4 F1BM0700
TSX SUB1,4 F1BM0710
SUB COMMA TEST EIGHTH CHAR FOR , F1BM0720
TNZ ADD01 F1BM0730
TSX SUB1,4 F1BM0740
TSX SUB1,4 F1BM0750
SUB COMMA TEST TENTH CHAR FOR , F1BM0760
TNZ ADD01 F1BM0770
ADD93 WEF 2 THIS IS END CARD, TERMINATE FILE F1BM0780
RTB 1 SKIP OVER MACHINE ERROR RECORD. F1BM0790
TRA 4 GO TO 1-CS FOR SECTION ONE F1BM0800
ADD80 BST 5 TAPE ERROR F1BM0810
TIX ADD015,4,1 F1BM0820
TSX PRINT,4 F1BM0830
TP5ERR,0,TP5END F1BM0840
SPROER SLN 3 SL3-ON IF TAPE CANNOT BE READ OR END CARD F1BM0850
BSTRTN BST 1 TROUBLE. F1BM0860
BST 1 BACKSPACE SYSTEM TAPE TO SOURCE PROGRAM ERRORF1BM0870
BST 1 RECORD. F1BM0880
TRA 4 CALL IN 1 - CS. F1BM0890
ADD90 SLT 1 IS THERE A PROBLEM TO BE COMPILED F1BM0900
TRA ADD91 FINISHED, REWIND ALL TYPES F1BM0910
TSX PRINT,4 F1BM0920
ENDCD,0,CDTEND F1BM0930
REW 5 F1BM0940
TRA SPROER F1BM0950
ADD91 BST 1 F1BM0970
REW 6 F1BM0974
REW 5 F1BM0976
TSX PRINT,C F1BM0980
REMA,0,ENDA F1BM0990
TSX PRINT,C F1BM1000
HTR RESTR,0,RESTR+1 F1BM1010
TQO *+1 F1BM1020
rem ------ scanned 10/8/06 304349-Volume_I.pdf Page 028/028 ------
TRA BSTRTN F1BM1030
コメントでしか追いかけていないけど
END
のあとに(
や,
が来るか検査しているように読める。
うぃきぺを見る限りでは引数付きのENDは見当たらない。
なんだろうこれ。
FORTRAN
IBM 704用に開発された最初のFORTRANは32の命令をもっていた。
IBM 1401版FORTRAN
IBM 1401版は革新的な65パスのコンパイラであり、わずか8k語の磁気コアメモリで動作する。 コアに記録されたプログラムが段階的に実行可能なコードへと変換されて上書きされる。 変換されたコードは機械語ではなく、UCSD PascalのPコードが生まれるよりも20年も前ながら、中間コードを利用していた。
FORTRAN II
IBMのFORTRAN IIは1958年に開発された。主な改良点は手続き型プログラミングのサポートであり、サブルーチンや関数を定義できるようになった。
その後、FORTRAN IIのデータ型として、DOUBLE PRECISION(倍精度型)とCOMPLEX(複素数型)が追加された。
FORTRAN The initial release of FORTRAN for the IBM 704[9] contained 32 statements, including:
- DIMENSION and EQUIVALENCE statements
- Assignment statements
- Three-way arithmetic IF statement, which passed control to one of three locations in the program depending on whether the result of the arithmetic statement was negative, zero, or positive
- IF statements for checking exceptions (ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOW, and DIVIDE CHECK); and IF statements for manipulating sense switches and sense lights
- GO TO, computed GO TO, ASSIGN, and assigned GO TO
- DO loops
- Formatted I/O: FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT, and PUNCH
- Unformatted I/O: READ TAPE, READ DRUM, WRITE TAPE, and WRITE DRUM
- Other I/O: END FILE, REWIND, and BACKSPACE
- PAUSE, STOP, and CONTINUE
- FREQUENCY statement (for providing optimization hints to the compiler).
それはそれとして前回の「辞書」から抜き出した命令を 辞書順に並べなおして上記の引用部の記述と比べると
- ASSIGN
- BACKSPACE
- CALL
- COMMON
- CONTINUE
- DIMENSION
- DO
- END(
- ENDFILE
- EQUIVALENCE
- FORMAT
- FREQUENCY
- FUNCTION
- GOTO
- IF
- IF(SENSELIGHT
- IF(SENSESWITCH
- IFACCUMULATOROVERFLOW
- IFDIVIDECHECK
- IFQUOTIENTOVERFLOW
- PAUSE
- PUNCH
- READ
- READDRUM
- READINPUTTAPE
- READTAPE
- RETURN
- REWIND
- SENSELIGHT
- STOP
- SUBROUTINE
- WRITEDRUM
- WRITEOUTPUTTAPE
- WRITETAPE
一致しているかな。 この時点だとまだINTEGERやらREALはないようなので、 型宣言は暗黙のものだけなのだろうか。
その後、FORTRAN IIのデータ型として、DOUBLE PRECISION(倍精度型)とCOMPLEX(複素数型)が追加された。
この時点ではさすがにexplictな型宣言がないとつらそうだけど。
構文解析
どこがコンパイラーの入口なのかも まだよくわからないのだけど (「ローダー」込みだよねえ、これ)、 コメントを追いかけていると こんな記述に遭遇した。
REM SECTION 1 / STATEA = 4F11556
REM 704 FORTRAN MASTER RECORD CARD / STATE A = F0190000. 4F11557
ORG 0 4F115571
PZE ORGA,,DMWR09 4F115572
PZE ENDA-1 4F115573
REM 4F11558
REM NAME FUNCTION 4F11559
REM PART 1 / ASSEMBLE AND CLASSIFY ALL STATEMENTS= 4F11560
REM CA000 ASSEMBLE STATEMENT. 4F11561
REM CD000 SCAN FOR HOLLERITH AND ILLEGAL CHS.4F11562
REM CB000 CLASSIFY=ARITHMETIC/NON-ARITHMETIC.4F11563
REM CC000 CLASSIFY=WHICH NON-ARITHMETIC. 4F11564
REM PART 2 / PROCESS CONTROL AND SPECIFICATION STATEMENTS. 4F11565
REM C0100 DO. 4F11566
REM C0200 GO TO. 4F11567
REM C0300 IF. 4F11568
REM C0400 IF (SENSE SWITCH. 4F11569
REM C0500 IF (SENSE LIGHT. 4F11570
REM C0600 IF DIVIDE CHECK. 4F11571
REM C0700 IF AC OVERFLOW. 4F11572
rem ------ scanned 10/8/06 304349-Volume_I.pdf Page 065/065 ------
REM C0800 IF MQ OVERFLOW. 4F11573
REM C0900 PAUSE. 4F11574
REM C1000 ASSIGN. 4F11575
REM C1100 SENSE LIGHT. 4F11576
REM C1200 DIMENSION. 4F11577
REM C1300 STOP. 4F11578
REM C1400 FREQUENCY. 4F11579
REM C1500 EQUIVALENCE. 4F11580
REM C1600 CONTINUE. 4F11581
REM C3000(C3500) SUBROUTINE / FUNCTION. 4F11582
REM C3100 COMMON. 4F11583
REM C3200 RETURN. 4F11584
REM C3300 CALL. 4F11585
REM C3400 END. 4F11586
REM PART 3 / PROCESS INPUT-OUTPUT STATEMENTS= 4F11587
REM RDC READ CARD 4F11588
REM RIT READ INPUT TAPE. 4F11589
REM RDP PRINT. 4F11590
REM WOT WRITE OUTPUT TAPE. 4F11591
REM PDC PUNCH. 4F11592
REM WBT WRITE TAPE. 4F11593
REM RBT READ TAPE. 4F11594
REM WRD WRITE DRUM. 4F11595
REM RDD READ DRUM. 4F11596
REM EFT END FILE. 4F11597
REM RWN REWIND. 4F11598
REM BSP BACKSPACE. 4F11599
REM FOR FORMAT. 4F11600
REM RSC RESET AND SCAN. 4F11601
REM LISTR CONTROL FOR LIST SCAN. 4F11602
REM LPR LEFT PARENTHESES IN LIST SCAN. 4F11603
REM EOS EQUAL SIGN IN LIST SCAN. 4F11604
REM SPCTR CONTROL FOR SPECIFICATION SCAN. 4F11605
REM SPC SUBSCRIPT SPECIFICATIONS. 4F11606
REM RPR RIGHT PARENTHESIS IN LIST SCAN. 4F11607
REM CMA COMMA IN LIST SCAN. 4F11608
REM EMK ENDMARK IN LIST SCAN. 4F11609
REM PART 4 / SUBROUTINES USED BY STATE A= 4F11610
REM BEG(TYP),4 BEGIN SCAN AND TYPE TEST. 4F11611
REM BEGTR CONTROL FOR BEGINNING SCAN. 4F11612
REM BRW,4 BINARY READ OR WRITE COMPILER. 4F11613
REM BSS,2 COMPILES= IFN BSS 0. 4F11614
REM CA100,4 READ SOURCE PROGRAM TAPE. 4F11615
REM CC500,4 SCAN DICTIONARY. 4F11616
REM ETM(LTM)SW,4 IF SW=NOP, COMPILES ETM(LTM). SL=0.4F11617
REM IFFIX,1 SETS UP FORVAR OR FORVAL ENTRY. 4F11618
REM IN(OUT)PUT,2 COMPILES CAL *, AND XIT (LEV). 4F11619
REM LIB,1 MAKES CLOSUB ENTRY, COMPILES CIT. 4F11620
REM VRA(VRD),4 MAKES FORVAR, FIXCON, CIT ENTRIES. 4F11621
REM PART 5 / CONSTANTS AND VARIABLES USED BY STATE A. 4F11622
REM DIC DICTIONARY. 4F11623
REM T TRANSFER TABLE. 4F11624
REM 4F11625
REM THE FOLLOWING CONVENTIONS ARE USED IN THIS LISTING= 4F11626
rem ------ scanned 10/8/06 304349-Volume_I.pdf Page 066/066 ------
REM 4F11627
REM ** IN ADDRESS, TAG, OR DECREMENT OF AN INSTRUCTION 4F11628
REM INDICATES THAT THIS FIELD WILL BE MODIFIED BY THE PROGRAM. 4F11629
REM * IN COL/36 INDICATES THE INSTRUCTION IS A TRANSFER OUT OF 4F11630
REM THIS LOGICAL BLOCK OR SUBROUTINE. 4F11631
REM C IN COL/34 INDICATES THE INSTRUCTION WAS CORRECTED. 4F11632
REM P IN COL/32 INDICATES THE INSTRUCTION WAS INSERTED (PATCH). 4F11633
REM 4F11634
REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *4F11635
REM 4F11636
REM STATEA/1-ASSEMBLE AND CLASSIFY ALL STATEMENTS= 4F11637
ORGA ORG 1824 4F11638
REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *4F11639
REM 4F11640
REM CA000/ CALLS=CA100,SR6DC1,TET00,DIAG. 4F11641
REM CA000 ASSEMBLES STATEMENT IN THE F-REGION AND ASSIGNS AN IFN.4F11642
CA010 LXD ENDWRD,4 IF THE FINAL STATEMENT HAS BEEN 4F11643
REMの直後にある名前とソースコード上のラベルとを比較すると この順番でソースコード(のある塊)を解析しているように見える。 つまり、まず「算術式」かどうかを判定し、 算術式であれば算術式用のサブルーチンへ徒ぶ、 算術式でない場合はさらに どの文であるかを順番に見ていく。 と云った具合。
DO
、
GOTO
、
IF(SENSESWITCH
、
IF(SENSELIGHT
、
IFDIVIDECHECK
という並びを見ると
前回書いた「辞書の並び順」はこれか?
と思ったが微妙に違っていた😄
linss
- Index of /pdf/ibm/704
- http://bitsavers.org/pdf/ibm/704/FORTRAN_paper_1957.pdf
- Transcription of Smithsonian IBM 704 Fortran II source code. ? Software Preservation Group
- 704 FORTRAN II - Software Preservation Group
- Assembly listing of transcription - Software Preservation Group
マイクロマウス
関西地区大会マイクロマウス競技優勝
— ロボフェス委員会 (@robofes) July 17, 2022
宇都宮さん、紫電Neo
記録1.880
圧巻の走り! pic.twitter.com/iITnrGKk0j
数年前にも同様の動画を見た覚えがあるけど、 自分らがやってた頃と比べるとスピードが段違いだねえ😓
Firefox
NHKオンデマンドがいつのまにかfirefoxでログインできなくなってた。こういうの困るなあ。しかもブラウザサポート外とか出ずに、パスワードが間違っていますってエラー出すんだよこいつ。うそつき
— みどりの恐竜先生 (@gachacomplete) July 18, 2022
SHORT_MAX
東京コロナ
— たいにゃん (@bugnekotinyan) July 18, 2022
明日にでも32767人を超えて
マイナスになりそう
そういえばそういえば。 某社のとあるUNIXを使ったシステムでユーザーIDを社員番号と同じにして管理していたのだけど、 あるとき社員番号がSHORT_MAXを越えてしまってひと騒動。
ま、前世紀のお話なんですが。
Java
昨日 Java言語仕様よんでてvar回りを調べてたんだけどhttps://t.co/KZNexKULKb
— なぎせ ゆうき (@nagise) July 1, 2022
var b = 2, c = 3.0; // Illegal: multiple declarators
var f = { 6 }; // Illegal: array initializer
あたりは把握してなかった。そうなのかー
コンパイラーの中の人(謎)の手間を考えるとまあ納得?