ときどきの雑記帖 RE* (新南口)
Get 9
We’re not in Kansas anymore.
Compiling Rust for .NET, using only tea and stubbornness!
小見出しに
We are not in Kansas anymore
というのがあって、これはきっとそのまま単語の意味の通りに訳してはいけないやつだと思って調べてみると
We’re not in Kansas anymore. この意味は? - Mau Lingua
We’re not in Kansas anymore. このフレーズを直訳すると「私たちはもうカンザスにいない」。オズの魔法使いだけでなく、 普通に映画や海外ドラマでも登場するフレーズですが、聞いたことはありますか?さて、 ここで「カンザス」とは何を意味しているのでしょうか。詳しく見ていきましょう。
ふむ。
Simon Peyton Jones
Podcast。
Simon Peyton Jones: In Pursuit of Simplicity | Danielle Newnham Podcast
i
世にガセネタの種は尽きまじ(言い過ぎ)
for文で「i」が繰り返しの変数名として使われることが多いのはなぜですか? - Quora
integerから。とかねえ。
Python 3.11.5
気がついていなかったか忘れていたか、3.11でこれが 使えるようになっていたらしい。
Python Release Python 3.11.5 | Python.org
Python 3.11.5 Release Date: Aug. 24, 2023
Major new features of the 3.11 series, compared to 3.10
gh-34627 – Atomic grouping ((?>…)) and possessive quantifiers (*+, ++, ?+, {m,n}+) are now supported in regular expressions.
SRE: Atomic Grouping (?>…) is not supported · Issue #34627 · python/cpython
Bjarne Stroustrup Shares Life Advice
すっぽすっぽセンセイのありがたい(?)お言葉
- 72-Year-Old C++ Creator Bjarne Stroustrup Shares Life Advice - Slashdot
- Bjarne Stroustrup Shares Life Advice | Hacker News
- 72-Year-Old C++ Creator Bjarne Stroustrup Shares Life Advice | Hacker News
- 72-year-old C++ creator Bjarne Stroustrup shares life advice : r/programming
72-year-old Bjarne Stroustrup invented C++ (first released in 1985). 38 years later, he gave a short interview for Honeypot.io (which calls itself “Europe’s largest tech-focused job platform”) offering his own advice for life:
The creator of C++, Bjarne Stroustrup, shares some valuable life advice that, let’s face it, all developers, no matter their years of experience could use. According to Bjarne, ‘You can’t just do code’, you need to develop more skills if you want to be a well-rounded successful developer. Watch this unreleased interview if you want some inspiration and guidance on your developer journey from one of the OGs.
Language Creators Charity Fundraiser
9/1の時点ではsmalltalkのtが大文字になっていたんだけど 指摘が入ったんだろうか😄
Python、Java、TypeScript、Smalltalk の作成者がチャリティイベントに共同参加 | TECH+(テックプラス)
2023年9月19日(米国時間)、PyData Seattleが米シアトルにおいて、非営利団体のNumFOCUSとLast Mile Education Fund (ラストマイル教育基金)を支援するためのチャリティイベントを開催する。このイベントには、Python、Java、TypeScript、 Smalltalkという4つのプログラミング言語の作成者が参加し、プログラミング言語の設計に関するディスカッションを繰り広げるという。
- Adele Goldberg - Smalltalkの作成者
- Guido Van Rossum - Pythonの作成者
- Anders Hejlsberg - Turbo Pascal、C#、TypeScriptの作成者
- James Gosling - Javaの作成者
同様のイベントは過去にも開かれたことがある。2019年に開催された「Puget Sound Programming Python」では、 Guido Van Rossum氏、Anders Hejlsberg氏、James Gosling氏、そしてPerlの作成者であるLarry Wall氏が 出演してディスカッションを繰り広げた。その様子は次のYouTubeチャンネルで公開されている
へー。
三浦半島の先っちょ
炎天下、三浦半島の先っちょを歩いてまぐろきっぷを使う旅 :: デイリーポータルZ
劔崎の辺りは行きづらいんだよねえ (記事にもある通りバスの本数が少ない。系統によっては朝と夕方しかないものも)。 以前行こうとしたけど断念したことがある。
西武百貨店池袋本店
あそこにはちょっとした縁がある(あった)ので ストライキの話は気になっていたけど なんというかその(もごもご)
新刊近刊
9/1先行販売『#数値シミュレーションで読み解く統計のしくみ〜Rでためしてわかる心理統計』#技術評論社(9784297136659)小杉 考司 他著◆ 「#Ruby」棚にて!プログラミングによる数値シミュレーションを利用して解説。今押さえておきたい知識を1冊にまとめています。 pic.twitter.com/WRWY3rUOho
— 書泉ブックタワーコンピュータ書【営業時間11:00~20:00】 (@shosen_bt_pc) September 1, 2023
Rの本なのになぜRuby棚…
ISO 8601
新山さんも拾っていたけど面白い(ためになった)サイトだった。
新山祐介 (Yusuke Shinyama): “RFC 3339 と ISO 8601の違い。日時はリアルタ…” - Mastodon 🐘
んで
PT2M |
P1Y |
P1.5W |
P1,5Y |
P1.5Y |
P2M |
P1W |
P2.5M |
P2,5M |
P1Y2.5M |
P1Y2M |
P1Y2,5M |
のような見慣れないものがいくつか目についたので、なんじゃこれはと調べてみた。
- P2Y3DT6H8M!? この暗号を解読するための ISO 8601 duration specification とは | 株式会社AMG Solution
- ISO 8601: Date and Time API の基礎知識
期間(Duration)なんかも決まってたのね。 当然と言えば当然のことか。
人々,これだけ NULL 安全がもてはやされる時代になったのに,もっとリスクの高い日付時刻タイムゾーンに関してみなさん無頓着すぎませんか?
— 炭水化物食べたい (@mpyw) August 31, 2023
エラーメッセージ
昔々のコンパイラーのエラーメッセージに(ぴー)なものがあったという話
- Some of the error messages produced by Apple’s MPW C compiler (2006) | Hacker News
- https://www.cs.cmu.edu/~jasonh/personal/humor/compile.html
いくつか気に入った(謎)ものを紹介
“…And the lord said, ’lo, there shall only be case or default labels inside a switch statement'” |
“You can’t modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler” |
“type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11 (I know you don’t care, I’m just trying to annoy you)” |
“Can’t cast a void type to type void (because the ANSI spec. says so, that’s why)” |
“Huh ?” |
“Call me paranoid but finding ‘/*’ inside this comment makes me suspicious” |
awk
gawkで報告されたバグがone true awkにもあると Arnoldがissueを立てていた。
Incorrect value for RSTART on UTF-8 string · Issue #188 · onetrueawk/awk
BEGIN { str="\342\200\257" print length(str) match(str,/.+/) print RSTART, RLENGTH match(str,/$/) print RSTART, RLENGTH }
When I run it, I get this:
$ ./a.out -f /tmp/morton.awk 1 1 1 -1 0
In the last line, the start value should be 2. FWIW, the gawk bug was that RSTART was 4; it was using byte counts instead of character counts.
んでgawkのリポジトリを見ると
+ * builtin.c (do_match): Translate rstart (byte idx to char idx)
+ even when rlength is zero. For this we tweak the conversion of
+ rlength to keep it in bounds when rstart and rlength are both 0.
+ * node.c (str2wstr): Add an entry to the indices array for the
+ terminating null. It facilitates the tweak above and is needed
+ to translate the idx of a zero-width match at the end of the
+ string.
これか。
そう言えばawk本第2版の話はその後どうなっているんだろうか? と The AWK Programming Language, Second Edition を見たら、あ、書影がある!
で、10月1日発売らしい。
Available in paperback and e-book formats around October 1, 2023. Preorder at Amazon.
↑のリンク先はアメリカのAmazonだけど、.co.jpのにも来ていた。
Kindle本でいいかと思うけど、Kindle本で5000円オーバーはちょっと考えちゃうなあ。
そう言えば(PART II)、カーニハン大先生のUNIX本の翻訳は…
GNU C Language Intro and Reference
ふとついでがあってリポジトリを覗いたところ、 複数の変更があったらしいことに気がついた。 が、内容が大きく変わったとか加筆されたというものではなさそう。
c-intro-and-ref.git - GNU C Language Intro and Reference
Hugo メモ
- Release v0.117.0 · gohugoio/hugo
- Release v0.118.0 · gohugoio/hugo
- Release v0.118.1 · gohugoio/hugo
- Release v0.118.2 · gohugoio/hugo
0.117は.0だけで次へ。 で、0.118ではちょっと気になる変更(機能追加)があった。
Hugo 0.118.0 now builds with Go 1.21. This version also comes with:
Proper CJK support in Markdown:
[markup.goldmark]
[markup.goldmark.extensions]
[markup.goldmark.extensions.cjk]
# Whether to enable CJK support.
eastAsianLineBreaks = false
# Whether softline breaks between east asian wide characters should be ignored.
enable = false
# Whether a '\' escaped half-space(0x20) should not be rendered.
escapedSpace = false
FORTRAN Compiler on IBM 704
FUNCTION
うぃきぺ(英語版)の記述によれば、ユーザー定義関数を最初に実装した プログラミング言語はFORTRAN IIかALGOL 58(さらにほかのものの可能性もあるが)らしい。
Function (computer programming) - Wikipedia
One of the first programming languages to support user-written subroutines and functions was FORTRAN II. The IBM FORTRAN II compiler was released in 1958. ALGOL 58 and other early programming languages also supported procedural programming.
文関数(statement function)の扱いはどうなってるんだろうか? (これはFORTRAN Iからあったはず)
DO
ご存知の通り、BASICなどではFOR
を使っている繰り返しの構文がFORTRANではDO
なわけだけど、
なんでDO
?
という疑問がかすかにあってですね。
気にはなっていたもののそれについて調べるということはしていなかったのだけど、
他の探し物をしているときに
The historical development of Fortran
のFORTRAN 0のところに
DO-loop was less elegant, the digits give starting line and the final line for the loop and where the execution should be transferred when the loop is terminated.
という記述を見つけた。 なるほど実際にFORTRANで採用された
DO 10 I=1,10
ではなくFOTRAN 0の
DO 10 20 30 I=1,10
のような記述方法であれば、文章として読みやすかった(解釈しやすかった)なるのではないかと思った。 そして、
“The early development of Programming Languages” by Donald E. Knuth and Luis Trabb Pardo, published in “A History of Computing in the Twentieth Century” edited by N. Metropolis, J. Howlett and Gian-Carlo Cota, Academic Press, New York, 1980, pp. 197-273.
http://www.club.cc.cmu.edu/~ajo/disseminate/STAN-CS-76-562_EarlyDevelPgmgLang_Aug76.pdf
のp.62に
The DO statement in line 3 means “Do Statements 3 thru 8 and then go to 11”
という記述(問題のDO文はDO 3,8,11 J=1,11
というもの)
があり、個人的には納得。
このほかの形式(COBOLのVARYINGなど)は また機会があったら。
level-analysis
ふと
TXI L43130,B,1 UNARY... -(N+2) TO -(N+1) 4F13841 off N = N - 1
TXI L13130,B,1 BINARY... -(N+2) TO -(N+1) 4F13842 on N = N - 1
TXI L23130,B,1 -(N+1) TO -N 4F13885 N = N - 1
TXI L33130,B,1 -(N+2) TO -(N+1) 4F13936 N = N - 1
のようなコードを見ていて(右端の番号を見てもわかるように ソースコード上でこの4行が連続しているわけではない)ふと、 ラベルの番号の振り方になにか法則というか オヤクソクがあるのではないか? という疑問がわいてきた (実は以前からぼんやりとは引っかかっていたのだけど)。
FINI03 PXD CM4300,B L22000 PXD ,B L32000 PXD ,B FINI03 PXD CM4300,B
ARS 18 ARS 18 ARS 18 ARS 18
SSM SSM
STO LAMBDA+12,A STO LAMBDA+5,A STO LAMBDA+8,A STO LAMBDA+12,A
ADD L(1) ADD L(1)
LA0041 SLT 1 LA0041 SLT 1
TXI L23130,B,1 TXI L33130,B,1
TXI L43130,B,1 TXI L43130,B,1
TXI L13130,B,1 TXI L13130,B,1
*
L23000 PXD ,B L33000 PXD ,B
ARS 18 ARS 18
STO LAMBDA+8,A STO LAMBDA+11,A
ADD L(1) ADD L(1)
SSM SSM
TXI L23090,B,1 TXI L33090,B,1
L23090 STO LAMBDA+6,A L33090 STO LAMBDA+9,A
L13130 SLW ALPHA+3,C L23130 SLW ALPHA,C L33130 SLW ALPHA,C L43130 SLW ALPHA,C
CLS L(0) CLS L(0) CLS L(0) CLS L(0)
STO LAMBDA+9,A STO LAMBDA+3,A STO LAMBDA+6,A STO LAMBDA+9,A
SLN 1 SLN 1 SLN 1 SLN 1
LA1000 CLS CBAR LA2000 CLS ALPHA-1,C LA3000 CLS ALPHA-2,C LA4000 CLS ALPHA-3,C
ふむ。L[1234]-3130 でグループできそう。 この中ではL[23]2000とL[23]3000もか。
ということでlevel-analysisの辺りを雑にgrep
grep -e "^L[A0-9][0-9]" stateb.asm
LA0000 LXA L(0),A 4F13749 0
LA0001 TXH LA0002,B,-301 4F13780 31 error if N > 300
LA0002 TXL LA0003,C,0 4F13782 33 jump if A==0
LA0003 CLA MS9002 4F13797 CM4200
LA002 STA LA4320 4F13813 set CM4100/CM4300
LA003 CLA E 4F13814
LA0041 SLT 1 4F13840 unary or binary?
LA0044 CLA FIRSTC 4F13843
LA0050 SLT 1 4F13847 unary or binary?
LA0058 PXD ,B 4F13850 set N to decr part of acc
LA0010 TQP LA0015 GO TO * ROUTINE 4F13855
LA0072 CLA FIRSTC 4F13859
LA0015 SLT 2 * OR / 4F13863 light 2 on?
LA0021 CLA FIRSTC 4F13866
L13130 SLW ALPHA+3,C STO -(N+2) IN ALPHA+A+3 4F13871
LA1000 CLS CBAR 4F13875 set C to acc
LA1040 SXD ABAR,C 4F13879 A = A + 3
L22000 PXD ,B 4F13881 set N to decr part of acc
L23000 PXD ,B 4F13886 set N to decr part of acc
L23090 STO LAMBDA+6,A STO -N IN LAMBDA+3(L+2) 4F13892
L23130 SLW ALPHA,C STO -N IN ALPHA+A 4F13893
LA2000 CLS ALPHA-1,C 4F13897
L43130 SLW ALPHA,C STO -(N+2) IN ALPHA+A 4F13901
LA4000 CLS ALPHA-3,C 4F13905
LA4010 STO LAMBDA,A STO C(ALPHA+A-3) IN LAMBDA+3L 4F13906
LA4150 CAL ADSTAR 4F13919 "*"
LA4170 PXD ,B from '(' '/' '*' (acc=B) 4F13921 set N to decr part of acc
LA4180 ARS 18 ' 4F13922 move to address part
LA4320 TXI **,A,-9 4F13931 CM4100/CM4200/CM4300 3L = 3L + 9
L32000 PXD ,B 4F13932 set N to decr part of acc
L33000 PXD ,B 4F13937 set N to decr part of acc
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
LA3000 CLS ALPHA-2,C 4F1394
OTHERWISE
ホッパーが関わった初期のプログラミング言語について いろいろリンクをたどっていたら
(1) COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (B) ; IF GREATER GO TO OPERATION 10 ;
IF EQUAL GO TO OPERATION 5 ; OTHERWISE GO TO OPERATION 2 .
というサンプルコードを見つけた。
この OTHERWISEを
if~elseのelseと同じものと考えると
うまく解釈(構文解析)できない気もするのだけど、
以前新山さんが紹介していたIF文のELSEの話にも
ちょっと繋がるものがありますね。
さらに
Preliminary Manual for MATH-MATIC and ARITH-MATIC Systems for Algebraic Translation and Compilation for Univac I and II
http://archive.computerhistory.org/resources/access/text/2016/06/102724614-05-01-acc.pdf
というのも見つけて、これまた興味深いことが書かれていそうな気がするのだけど
ASM2COBOL
この話。
[B! language] TIS、アセンブラ言語をCOBOL言語に変換する「アセンブラマイグレーションサービス」を提供
オープン系の波に完全に乗り遅れて 30 年経った人向けサービス https://t.co/ulpFFctBMm
— AoiMoe a.k.aしお兄P (@AoiMoe) August 30, 2023
COBOL なので汎用機だと思うのだが、汎用機アセンブラってさすがに大元のソースは 1970 年代くらいなんじゃないのかって気がするけども
— AoiMoe a.k.aしお兄P (@AoiMoe) August 30, 2023
どうもよくわからん話なんだよなあ (どのくらい需要がある(と見込んだ)のかとか) と思いつつ、問題の会社のサイトを見ていたら 事例の一つ(今回の発表とは直接関係しないかもしれないけど) があった。
PALSYS|アセンブラtoCOBOL自動コンバージョン事例
旧構成 IBM Zシリーズ 新構成 Redhat Enterprise Linux (MF-COBOL) 開発規模 アセンブラ 約13Kステップ
特徴 COBOLから呼び出されるアセンブラ・サブルーチンをCOBOL化する。 ホストの31Bit環境からオープンの64Bit環境への対応、EBCDICからS-JISへの文字コード変更対応も実施した。 OS機能呼出やホストのミドルウェア依存の機能でCOBOL化できないものは、新しい仕組みの提案を行うか、C言語で実装した。 ツールにより自動変換し工数を削減する。 変換ツールは、変換率よりもソースの可読性を重要視したもので、変換できない箇所は、手変換を実施した。 可読性を重要視した為、リリース後のソース改修も容易に行なうことが出来る為に運用面への不安を軽減することに成功した。
アプリケーションまるごとアセンブリ言語で書かれたものだけではなく、 COBOLから呼び出されるサブルーチンなんかもターゲットにはあるらしい。 にしても、そういう(アセンブリ言語による)サブルーチンの中身をCOBOLに変換… やっぱりよくわからん。
- アセンブラソースをCOBOLソースに自動変換| OKWAVE
- “古いCOBOL”が動き続けるのは「単に動くから」である可能性:レガシーシステムがなくならない6つの理由【第2回】 - TechTargetジャパン システム開発
- [B! software] “古いCOBOL”が動き続けるのは「単に動くから」である可能性
360
IBM360のアセンブラはかなり奇妙なので最近のCPUしか知らない人だと驚くかもしれんな https://t.co/HZUB0ixzAK
— naoya2k (@naoya2k) August 30, 2023
360(正確には某日本のメーカーによる互換機上)のアセンブリ言語は 自分も使った(書いた)ことがあるけど そんなに「奇妙」だったかなあ? もちろん、今のプロセッサーの命令にはない命令があったり 逆にあれやこれやがないというのはある。
たとえばサブルーチン呼び出しの規約辺りは「なんじゃこりゃ」 となるのは間違いないと思うけどそういう話ではない?
高精度計算サイト
英語版サイトと掲示板がクローズ?
keisan English website(keisan.casio.com) is due for closure.
Scheduled closing date: Wednesday, September 20, 2023
Thank you for using our service for many years.
掲示板は2023年9月20日をもちまして廃止することになりました。 これまでご利用ありがとうございました。
URLをよく見ると掲示板と高精度計算サイトは.comじゃなくて.jpなのか。
vi
改行といえば、 vim で :s/// による文字置換する時に改行に置き換えようとして「\n」と書くと NUL (^@) が入って「\r」にすると改行になるのなんで?
— yoh2 (@yoh2_sdj) August 25, 2023
— orumin (@orumin) August 26, 2023
このやり取りにあった regular expression - What is the rationale for \r and \n meaning different things in s command? - Vi and Vim Stack Exchange を読んでみたけど面白かった(こなみかん)
転職
二人揃って移籍できたのか。よかった。
おかげさまでSTORESでRubyの開発を続けられることになりました。
— _ko1 (@_ko1) September 1, 2023
転職活動では多くの方にご相談させていただき、またたくさんのありがたいご提案をいただきました。この場を借りて深く御礼申し上げます。https://t.co/vYbPBsMe5K
COVID-19
宮川さんもか。 7月入った辺りから知っている人が罹患した数が それ以前より格段に増えてるよなあ。
Got COVID last week. The symptom was mild (I would've called it was just a cold if I didn't test) and I'm fully recovered by now. No matter how you think it's over, it's still with us and seems on the rise. Stay safe.
— Tatsuhiko Miyagawa (@miyagawa) September 1, 2023
今日の遠い目
30 years ago this month, my first book, “Understanding Japanese Information Processing” (@OReillyMedia, 1993), was published. I received my first copy on 1993-09-15. I plan to celebrate at #IL7. 🍻 #日本語情報処理 @oreilly_japan https://t.co/mYzqazOzzb pic.twitter.com/IWXFgte3mj
— Ken Lunde 小林剣 (@ken_lunde) September 2, 2023
30年…
true or false
「 2!=2 」は
— 草餅 (@omochi_oicne) September 2, 2023