ときどきの雑記帖 RE* (新南口)
セルフコントロール
コブラ
クリボー(クリスタルボーイ)の表現、今の技術だったら どんな感じになる(できる)だろうかと思った。
レンズマンとかバルディオス辺りもお願いできないっすかね😄 >BS12 日曜アニメ劇場
地下鉄の冷房
東京メトロ某線に乗っているときにふと思った。 そういやあ平成の初めころは地下鉄には冷房入ってなかったよなあ (相互乗り入れしていると、地下鉄に入ったところで冷房切ったり)
町内
ニュースで「デジタル庁内で~」 というのを聞いたとき、 一瞬「デジタル町内」と解釈してしまい、 なんじゃそれはと混乱した夏の昼下がり。
梨
ぼつぼつ見かけるように。
相対性理論
- サンシャイン池崎が100分で相対性理論を学んで推しにカッコよく説明するEテレ深夜(コメントあり) - お笑いナタリー
- “相対性理論”を100分間学べば、3分で説明できる? NHKが検証 挑戦者はサンシャイン池崎さん - ITmedia NEWS
この番組は当初8月19日(土)深夜放送の予定でしたが、台風報道の影響で放送日時が変更となりました。
19日(から20日)の番組表を見ても見つからないので どういうことだと思っていたのだけど、 さっき記事を見直したら日時が変わっていた😄
タトゥー
何かの時刻のような(7セグメントの数字2桁 ‘:’ 数字2桁) タトゥーをひじの辺りに入れてるおねえちゃんを見かけたんだけど なんだったんだろう、アレ。
Rubyのアレ
map と collect、reduce と inject ―― 名前の違いに見る発想の違い
自分がなじんでいるのと違うものを「変」と表現するのは ちょっといただけないけどそれはさておき Qiitaに書いてたらあの人から長文のコメントがついたんじゃないかな (それで投稿主が納得するかはともかく)。
あーそりゃ歴史的経緯ってやつだよねえとか、
そう感じるのも無理はない
(特に:
の扱い)とか色々だけど、
ひとつとりあげてコメントしておくと
ラムダの記法が独特
->(e) { }
ラムダの->なぜそこにつけた。
なぜ->
を使ったのかではなく、それがある場所が気になってるのか。
これは単純に構文解析の都合じゃないかなあ。
JavaScriptの (x,y)=>{}
はRubyのこれより後だし。
当時の議論でもそれはあまり争点になってなかったような気がする (要検証)。
collision
メモ。
新山さん
新山祐介 (Yusuke Shinyama): “上司が厄介なプログラマに対処する法。いくつかの代表的な「厄介…” - Mastodon 🐘
上司が厄介なプログラマに対処する法。いくつかの代表的な「厄介なプログラマ」の類型を紹介し、 対処方法を説明している。上司でなくても読む価値あり。
リンク先で実際にどんなものがあげられているかというと
3. Difficult Software Engineers
- The Procrastinator
- The Lone Wolf
- The Negative Nancy
- The Over-Promiser
- The Know-It-All
- The Silent Type
- The Perfectionist
- The Unreliable One
- The Conflict Instigator
- The Burned-Out Employee
こんな感じ。まあこれだけ見ても具体的なイメージは湧きづらいと思うけど。
ところでMastodonでの発言を、 かつてtwitterと呼ばれた(以下略) のようにHugoで埋め込み表示できないのか 調べてみたらできるようだ、
- 【Hugo】Mastodonのtootを埋め込むshortcode - Qiita
- Hugo Shortcodes Theme — hugo-kg-shortcodes
- Displaying a Toot in Hugo | Brandon Rozek
新刊近刊
ROCA
「吉川ロカエピソード集花の雨が降る」9月3日Kindleでも販売します。紙でも電子でもよろしくお願いします🙇♀️ pic.twitter.com/etFm242PQu
— 白玉あずき9/3コミティアて33ab (@kagonoikeazuki) August 1, 2023
「ののちゃん」の作中に登場していた作中作「ROCA 吉川ロカ ストーリーライブ」が自費出版が口コミで話題になったことでついに電子書籍化! - Togetter https://t.co/EYNAbF4MLc
— 白玉あずき9/3コミティアて33ab (@kagonoikeazuki) August 3, 2023
新人プログラマーのためのエラーが怖くなくなる本
コードが動かないので帰れません! 新人プログラマーのためのエラーが怖くなくなる本 | SEshop| 翔泳社の本・電子書籍通販サイト
数字であそぼ。
10巻カバー絵、よくみたらdocumentclass宣言してた。 pic.twitter.com/1bGbacbyQu
— 森川真 (@mmww) August 14, 2023
あ、ホントだ。
for
というのが話題になっている(た)けど、 2年近く前にも似たような記事が話題になっていたのに それに触れている人が少ないのは、 あえて触れていないのか 知らなかったか忘れたか。
ところで今回の方のブコメに
ドイツ語で正解。ヴィルト(『系統的プログラミング入門』2001年, 近代科学社,p35-36)によれば、 1952年にH.Rutishauserが言語の表記法を「研究して定式化」して、57年にFORTRANで普及、58年にRutishauserの考え方がALGOLで採用
というのがあって、実際の記述がどうなのかちょっと気になってるんだけど 近場の図書館にはなさげ。 ではと都立中央図書館の蔵書検索で…あった。が、多摩の方かあ。 じゃあ国会図書館は…まあ当然あるか。
make miniruby
Ruby言語 (ruby/ruby) のビルド時に、make miniruby
がこけた - Qiita
ビルド手順もずいぶん変わっているっぽいなあ。
onetrueawk
ビルドと言えば Windows(というか Visual C++)で one true awk の実行ファイルを作りたいんだけど という話 How can we build awk under Windows? · Issue #186 · onetrueawk/awk があって、 issue起こした人はとりあえず
#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */
# if (! defined __GNUC__ || __GNUC__ < 2 \
|| (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__)
# define __attribute__(Spec) /* empty */
# endif
#endif
や
#ifndef F_SETFD
#define F_SETFD 2
#endif
#ifndef FD_CLOEXEC
#define FD_CLOEXEC 1
#endif
という修正を加え、さらにbisonを別途調達して 構文解析器のCファイルを作成した上で コンパイルすると
lib.obj : error LNK2019: unresolved external symbol _strncasecmp referenced in function _is_valid_number
main.obj : error LNK2019: unresolved external symbol _srandom referenced in function _main
run.obj : error LNK2001: unresolved external symbol _srandom
run.obj : error LNK2019: unresolved external symbol _popen referenced in function _openfile
run.obj : error LNK2019: unresolved external symbol _pclose referenced in function _closeall
run.obj : error LNK2019: unresolved external symbol _WIFEXITED referenced in function _bltin
run.obj : error LNK2019: unresolved external symbol _WEXITSTATUS referenced in function _bltin
run.obj : error LNK2019: unresolved external symbol _WIFSIGNALED referenced in function _bltin
run.obj : error LNK2019: unresolved external symbol _WTERMSIG referenced in function _bltin
run.obj : error LNK2019: unresolved external symbol _random referenced in function _bltin
run.obj : error LNK2019: unresolved external symbol _fcntl referenced in function _openfile
こうなったと。
なんか見覚えのあるような面々だわねえ😄>未定義シンボル
A language for gremlins
- Raku: A language for gremlins | Hacker News
- https://buttondown.email/hillelwayne/archive/raku-a-language-for-gremlins/
Raku: A Language for Gremlins By Gremlins, For Gremlins?
After several days of experiments, I’m at a loss of how to describe Raku. The best I can come up with is that the language was designed by a bunch of really intelligent gremlins. Gremlins who spent a lot of time gathering feedback from other gremlins.
このGremlinsはどういう意味で使われているのだろう?🤔
return
つづき。
ツッコまれてますが、「C言語」にそういう仕様はありません。一応、wikipedia経由でBCPLやBも調べましたが、「return」(BCPLはRESULTIS)はあるようです。
— mohno (@mohno) August 13, 2023
当時、FORTRANやPascalでは“値を返す”ために“関数名に代入”を使っていたので、「return」に斬新な印象があったのはたしかですが。 https://t.co/y52x4msXWq
Lisp→Rubyの流れでいう「最後の評価が結果」というのとは少し違う理由ですけど、大昔の C はそれを定めないことで、最後のレジスタに残った計算結果が int (長さがCPUアーキテクチャによる) の戻り値になる(そうなる過程はCでもインラインアセンブラでもよい)というふうな言語ではあったと思うのです
— 田中ひさてる (@tanakahisateru) August 13, 2023
「大昔のC」っていつ頃のことでしょう。
— mohno (@mohno) August 13, 2023
一応、K&Rの時代(1986年頃)からC言語を見てますけど、「レジスタに残った計算結果が戻り値として使える」と想定するのはコードゴルフのときくらいで、“そういう言語”という認識はなかったと思うんですよね。
浮動小数だと、そうはなりませんし。
Cの仕様として定義されたものとしてはそんなのなかった、は、たしかに仰る通りです。Cについては、90年代中頃までにx86アセンブラとミックスでやっていたとき、実質的にそんな感覚だったなあ、という主観です(^^;
— 田中ひさてる (@tanakahisateru) August 13, 2023
つまり、
— mohno (@mohno) August 13, 2023
> 関数というのは本当は
> def f(x) = x + 1
> というような形をしているべきものだった
が、“個人の感想”レベルってことですよね。
元の主旨としては、せっかく CPL〜BCPLの頃関数といえば let f(x) = value of $…$ といった静的な感覚だったのに、C では機械語の RET を意味する「returnという手続き的な命令」になって、しかもそれが仕様不定だったことから、実質必須になって、それが後のより高級な言語に影響したとこがメインで
— 田中ひさてる (@tanakahisateru) August 13, 2023
これはアレですね。言いたいことを改めて整理すると、最初に「C より前は」と表現すべきでした。BCPL 〜 C の間で取られた現実解によって、制御命令 return と関数の射の概念とが混ざった低レベルプログラミングにいったん戻り、それがまだ後を引いている、というふうに自分は思ってるところです
— 田中ひさてる (@tanakahisateru) August 13, 2023
戻り値の件については、Ruby開発者が「Lispの影響を強く受けている」とおっしゃってますし、BCPL/Bにもreturnはありますし、そもそもC言語ほど普及してないですし、90年代には淘汰されていたのでは。
— mohno (@mohno) August 13, 2023
なんというかその以下略、
lint
この件でlintはどうなってたっけ(どういうチェックをしていたっけ) ということが気になったので読んでみようかと思ったが (まだ)手を付けていない。
v7unix/v7/usr/src/cmd/lint at master · v7unix/v7unix
lintの警告避けの
(void)printf
っていつ頃からあったんだろう? (voidってキーワードはANSIからだよねたしか)
ところでlintと言えば(三段くらいジャンプして)「Cプログラマの十戒」のとかあったよねえ。 こんなの。
http://www.literateprogramming.com/ten-commandments.pdf
The Ten Commandments for C Programmers
Henry Spencer
- Thou shalt run lint frequently and study its pronouncements with care, for verily its perception and judgement oft exceed thine.
- Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.
- Thou shalt cast all function arguments to the expected type if they are not of that type already, even when thou art convinced that this is unnecessary, lest they take cruel vengeance upon thee when thou least expect it.
- If thy header files fail to declare the return types of thy library functions, thou shalt declare them thy- self with the most meticulous care, lest grievous harm befall thy program.
- Thou shalt check the array bounds of all strings (indeed, all arrays), for surely where thou typest ‘‘foo’’ someone someday shall type ‘‘supercalifragilisticexpialidocious’’.
- If a function be advertised to return an error code in the event of difficulties, thou shalt check for that code, yea, even though the checks triple the size of thy code and produce aches in thy typing fingers, for if thou thinkest ‘‘it cannot happen to me’’, the gods shall surely punish thee for thy arrogance.
- Thou shalt study thy libraries and strive not to re-invent them without cause, that thy code may be short and readable and thy days pleasant and productive.
- Thou shalt make thy program’s purpose and structure clear to thy fellow man by using the One True Brace Style, even if thou likest it not, for thy creativity is better used in solving problems than in creating beautiful new impediments to understanding.
- Thy external identifiers shall be unique in the first six characters, though this harsh discipline be irk- some and the years of its necessity stretch before thee seemingly without end, lest thou tear thy hair out and go mad on that fateful day when thou desirest to make thy program run on an old system.
- Thou shalt foreswear, renounce, and abjure the vile heresy which claimeth that ‘‘All the world’s a VAX’’, and have no commerce with the benighted heathens who cling to this barbarous belief, that the days of thy program may be long even though the days of thy current machine be short.
解説付きバージョンもあった。 The Ten Commandments for C Programmers (Annotated Edition)
日本語訳も紹介しておこう。
プログラム言語 C の推奨されるスタイルとコーディング規範 に、現代文風と文語訳聖書風があった。 そのうち後者を転載しておこう (元記事ではHTMLのrubyを使っていなかったのを使うように手を入れました)。
文語訳聖書風の訳 (豊田英司による)
- 汝屡 lint を走らしめ、謹みてその託宣を学ぶべし。 誠に、その悟りと裁きしばしば汝にまさればなり。
- 汝ヌルポインタを追ふべからず。その先には混沌と狂気待ち受けをればなり。
- 関数の引数もし期待されし型にあらずば、 たとい不要なりとの確信あるとも、汝すべてキャストすべし。 恐らくは汝に荒き応報をなさん。
- 汝のヘッダファイル汝のライブラリ関数の返却値の型を宣言しをらずば、 汝みづから謹みてこれを宣言すべし。 恐らくは汝のプログラムに甚だしき災禍 ふりかからん。
- 汝すべての文字列またすべての配列の境を省み糺 すべし。 汝の ‘‘foo’’ と打鍵するところで ‘‘supercalifragilisticexpialidocious’’ と打鍵なす者、 いつの日か必ず現れればなり。
- 関数もし禍害 起これる時にエラーコードを返すと説かれあらば、 汝エラーコードを糺すべし。 さよう、たとい汝のコードを三層倍になし、 打鍵なす指に痛みをもたらすといへども。 汝もし「おれには起こりっこない」と考うれば、 神々必ずや汝の不遜に罰を下さん。
- 汝のライブラリを学ぶべし、理由なき再創造を避くべし。 汝のコードを短く読みやすからしめ、日々を楽しく稔り豊かならしむためなり。
- 汝もしこれを憎むとも、One True Brace Style を用ひ汝のプログラムの目的と構造を汝の仲間に判りやすからしむべし。 美しき理解の妨げを新たに創りなすことに汝の力を用ふよりは、 問題を解決することに用ふは善きことなればなり。
- 汝の外部識別子をはじめの六文字にて一意たらしむべし。 この厳しき掟は苛立たしく、 その避け難き日々は汝の前に果てしなく延びるとも。 恐らくは汝のプログアムを古きシステムで走らせんと企みし運命 の日に、 汝髪をかきむしり狂はん。
- 「世の中みんな VAX だ」などと説く賤しき異端信仰を、 汝放棄し、拒絶し、絶縁すべし。 またこの夷狄 めく信仰に頼る蒙昧たる敵と取引をなすべからず。 汝の今の機械の寿命は短く、汝のプログラムの寿命は長かりうればなり。
まあ今となっては「なにこれ」というのばかりか。
話がちょっとそれるけど Ten Commandments programming といったキーワードで検索したところ こんな本が引っかかった。
どんな内容かちょっと気になる。
while
for文の名前の由来はともかくとして、最初に学んだとき、なんでforとかwhileとか高々ループの制御構造のためだけにこんなに種類があるんやろと思いませんでしたか。
— Yuta SAWA (@sawawww) August 13, 2023
僕は未だにCはforかwhileのどっちかだけでいいやろと思っています。foreachのある言語は別として。
そんなあなたにOberon(not Oberon-2。ループ文はwhileしかない)。
にも、whileだけでどうとかいう話があったような気がするんだけど さてどこにあるやら。