Not only is the Internet dead, it's starting to smell really bad.:2018年11月下旬

2018/11/20(Tue)

[モタスポ] F1最終戦 アブダビGP

第3期マクラーレン・ホンダ復活楽しみですね(しろめ)

2018/11/21(Wed)

[プログラミング幻語C] 移植性の高いプログラムを書くためにint{8,16,32,64}_tを使えという解説は真実なのか?

前に書いた記事の補足、将来int4096_tを導入したくなった時long long long long long long long long intみたいな食堂でバイキング達が大声で歌いだしそうなシロモノを実装するよか *1intN_tの方をプリミティブ型にした方が都合がいいけど36bitアーキを考えると難しいよねって話、これには別解があってint_{fast,least}N_tの方をプリミティブ型にすれば可能ではあるよな。 まぁ将来的にそうなるんすかね、もはや興味ないし多分ワイその頃生きてないだろうから知らんけど。最近のワイのテーマソングはジミヘンの「今日を生きられない」。

こいつらは元々はC99で追加されたもので

という厳密にNビットでなくてよい詰め物ビットがあるかもしれない整数型、こいつら真面目に使ってるコードにワイもお目にかかったことが無いし、規格読んだことない人だと存在自体知らないかもね。

なんでこんなものがあるのかというと、そもそも36bitワードマシンなら2のべき数であるint{8,16,32,64}_tなんぞ実装できないし、実はC99の規格にはint{8,16,32,64}_tの実装はMUSTではないどころか、提供できない処理系はむしろ定義してはならないと仕様に書いてある (逆にint36_tなどを提供できるならそれは好きにしろと書いてある)。

つまりそもそもintN_tを使ったコードには仕様の時点で元から移植性なんて無いのですわ、ちゃんとgccのドキュメントにも 注意が書いてあるゾ。

If your C compiler and target machine do not allow integers of a certain size, the corresponding above type does not exist.

そのかわりint_{fast,least}{8,16,32,64}_tの実装は必須なのよね、だから前回記事のUNISYS社のメインフレームのような36bitワードマシンの事まで移植性にこだわるなら

の方を使うのがスジということになる *2

また2のべき乗アーキテクチャであっても安心はできない、64bitアーキの初期にはILP64(intも64bit)とかSILP64(shortまで64bit)というシロモノがあったわけで、こいつらもまたint16_tやint32_tを欠いてる可能性があるのだ。

つまりは「移植性のあるコードを書きたければint{8,16,32,64}_tを使え」なんて巷にはびこる解説は、あくまで「ILP32とLP64の間だけ移植性のある」コードであって 真に移植性のあるコードということであればint{8,16,32,64}_tが実装できない処理系まで考えて、int_{fast,least}{8,16,32,64}_tの方を積極的に使うべきなんだよな本当は。

まぁそれはあまりに現実的ではないし無理だけどね、その手の処理系ではコンパイル通らないint{8,16,32,64}_tを使ったコードの方世の中の大半を占めているわけでな。 全部書き換えてテストするんですかねストレージサイズとか境界値とか変わるし、定数マクロあるといっても大変よねこれ。

つまりはとっくの昔に手遅れであるし、今時そんな変態アーキテクチャとおつきあいする必要のごく限られた人間だけが力いっぱい壁殴ってればいいので忘れた方がマシですな。 よって結論としては「移植性のあるコードを書きたければintN_tを使え、 メインフレーマーは腕立て伏せでもしてろ」と解説を書き直せばいいだけだな(ぉ

ちなみに36bitワードなPDP-10にNなんとかBSDを移植する試みでは、すべてのコードのint{8,16,32,64}_tを書き換えるのは不可能と判断し

/* 7.18.1.1 Exact-width integer types */

#ifdef __GNUC__
typedef	__signed char		 __int8_t __attribute__ ((size (8)));
typedef	unsigned char		__uint8_t __attribute__ ((size (8)));
typedef	short int		__int16_t __attribute__ ((size (16)));
typedef	unsigned short int     __uint16_t __attribute__ ((size (16)));
typedef	int			__int32_t __attribute__ ((size (32)));
typedef	unsigned int	       __uint32_t __attribute__ ((size (32)));
#elif defined(__PCC__)
typedef	signed char		 __int8_t /* _Pragma ((size (8))) */;
typedef	unsigned char		__uint8_t /* _Pragma ((size (8))) */;
typedef	short int		__int16_t /* _Pragma ((size (16))) */;
typedef	unsigned short int     __uint16_t /* _Pragma ((size (16))) */;
typedef	int			__int32_t /* _Pragma ((size (32))) */;
typedef	unsigned int	       __uint32_t /* _Pragma ((size (32))) */;
#else
#error Need special types for compiler
#endif

と__attribute__(size)を使い無理矢理int{8,16,32,64}_tを実装することで動かそうとしていた。 まぁ完成しなかったからこれでイケたかは知らんそもそもint64_tが無いしなこれ。

*1:意味が判らない人はモンティ・パイソンの「スパムの多い食堂」を観よう。
*2:ものによっては GE-600みたいにcharが9bitになる以外short/int/long全部36bitの処理系もあるらしいゾ。

2018/11/25(Sun)

[映画] Nicolas Roeg, Movie Director Dies At 90

ニコラス・ローグ監督死去、洋楽好きならミック・ジャガー主演「パフォーマンス(Performance)」とかデヴィッド・ボウイ主演「地球に落ちて来た男(The Man Who Fell To The Earth」そして元ピンク・フロイドのロジャー・ウォータースのPVは一度は目にしたことがあると思う。

世間一般的には「赤い影(Don't Look Now)」「ジェラシー(Bad Timing)」の人かな、美しい映像と意味不明なストーリーそして無駄に濃厚なエロシーンというカルト映画監督だろうか。

特に「美しき冒険旅行(Walkabout)」とか美しいオーストラリア大自然のドキュメンタリーかな?とみはじめると開始10分で「ファッ!?」の嵐になること必至やね、今こんな映画撮るの不可能だよなありとあらゆる意味で。

2018/11/26(Mon)

[映画] Bernardo Bertolucci, Movie Director Dies At 77

ベルトリッチ監督も亡くなったのか、政治的主張とエロの描写がキツくて好みは分かれると思うけど映像美は文句のつけようがない監督であった、「1900年(Novecento)」とか「ラスト・エンペラー(The Last Emperor)」の追悼4Kリマスター上映とかあったら劇場に行きたい。

それにしても「ラスト・タンゴ・イン・パリ(Last Tango in Paris)」のバター塗って肛門姦するシーンを回想するインタビューが、ミートゥー吹き荒れる海外メディアに目をつけられたことで上映から半世紀近くたっての発禁になったと記憶してるんだけど、今Amazonみたらふつーに「無修正版」の煽りつきで廉売してんのね、一時すげープレミアムついてたのはなんだったんだ…

2018/11/27(Tue)

[音楽] 最近買ったCD

@Com Truise/Iteration

Ghostly Internationalレーベルのアーティストで、同レーベルのTychoのリミックスにも参加してたりする人。 よく考えたらユニット名これトム・クルーズのもじりで草、もしかして名古屋にあるアイシン・コムクルーズという自動車制御ソフトの会社もトム・クルーズのもじりで命名したのかな。

Tychoと曲の傾向がよく似てるけど、ギタードラムベースと生楽器じゃない分80年代エレポップ臭が強くてシンセサイザーオタク向けのサウンドに留まってしまってる感はある。

@Kiln/Sunbox

同じくGhostly Internationalから、こちらはよりアンビエントな環境音楽よりのエレクトロニカで作業用BGMにちょうどいい。

@Mobius Band/City Vs Country

またまたGhostly Internationalからだけどエレクトロニカではなくオルタナ系の3人組ロックバンドで、今回買ったCDの中で一番の掘り出し物かな。

ただまぁサウンドが荒削り過ぎるのでいいプロデューサーエンジニアが必要かなという音、Now, Now(Every Children)と同じく日本人ウケする要素はあると思うんだけど。

@Solvent/Apples And Synthesizers

やっぱりGhostly International、ジャケットからしてKraftwerkやThe Bugglesフォロワーのサウンドにもオリジナリティが薄くて今回の中では一番つまらんかった。

@Future Loop Foundation/PHunkRoc

ジャケットのイラストがたぶんファーストガンダム?でIT業界に蔓延る悪癖ガンハラがフラッシュバックしてアレなのだけど、一方でNirvanaのプロデュースなどを手掛けたスティーブ・アルビニ率いるBig Blackの名盤「Songs About Fucking」のジャケット(みやわき心太郎/THE レイプマン)っぽいセンスとおそらく「パンクロック」と読むであろうタイトルでジャケ買い。

なお全然パンクではなく普通のエレクトロニカだった、とすると Daft Punkの松本零士ジャケに影響されたのかなと思ったけど、こっちの方が先であった。 サブジャンル的としては廃れたダサ懐かしいJungleってやつで、倍速で再生したようなせわしないドラムが聴いててこっ恥ずかしくなるやつだけど、この曲はFender Rhodesと極太ベースのチルアウトなサウンドで悪くない。

2018/11/29(Thu)

[写真] EPSON GT-X820買った

先日スキャナの GT-X750を買ったばっかなんだけども、後継の GT-X820の動作未確認ジャンクが2kだったので買ってきたで。

スキャン性能が4800dpiから6400dpiに性能アップしてるけど、 GT-X750(4800dpi)とCOOLSCAN V ED(4000dpi)の比較ですらミラーやレンズといった光学系のショボさで画質ボロ負けしたので、6400dpiになったところで無駄にファイルサイズ大きくなるだけな気もする。 またいずれ比較してみるかね。

あと光源が冷陰極管からLEDになってるのでウォームアップ時間が短くなるのと経年劣化による輝度低下による色ズレがおきづらくなってるのがメリットかな。 まぁ壊れた時に自分で修理しやすいのは冷陰極管ではあるんだけどね…

ちなみにGT-X820と現行製品の GT-X830と比較するとスペックは完全に同一で単なるリバッジ、 GT-X970から GT-X980のように内面反射低減のためのコーティング変更やフィルムの平面性のためのホルダー改良などは一切無いっぽい。

ただし添付ソフトに写真スキャン専用ソフトとしてEasy Photo Scanが新たに追加されている(GT-X820などの旧製品では動作しないようロックされてる)。 このソフトがこれまでのEpson Scanのクソな操作性とは雲泥なので、それに価値を見出すなら買い換えるといいかもね。ワイはVueScan買ったのでどうでもいいですが。