2024-01-23

新大陸には水と空気と土地があった

朝日新聞のオンライン版で「「宇宙世紀は来ない」ガンダム描いた富野由悠季が見据えるリアルとは」という記事を読みました。その記事に、次のような文がありました。

 次に、宇宙空間での衣食住について。(1620年に英国からアメリカ大陸に渡った)メイフラワー号が新大陸でアメリカ合衆国を建国できたのは、そこに水と空気と土地があって、先住民が住んでいたことで、人が住めることが明らかだったからです。宇宙はそれが一切合切ない。宇宙開発を目指している企業の責任者は、人が宇宙に住むことの深刻さを想像できていません。


アニメで「ガンダム」が放映されたころは「人類が宇宙で暮らすようになる時が来る」と夢みていました。現実においても、2000年を過ぎて以降は、スペースコロニーは無理だとしても、火星に移住するようにはなるのではないか、しかもそれは、2050年頃までには実現しているのではないか、という「夢」のような話も出ています。


私自身では、何百年も先の遠い未来には、もしかするとそうなっているかもしれませんが、そこに至る過程は容易ではないと思っています。何故ならば、先の記事にもあるように、世界史における大航海時代や新世界発見ならば「そこには水と空気と土地があった」のに、宇宙には(火星でも良いですが)「一切合切ない」からです。

 

メイフラワー号の乗組員たちが新世界をインドと勘違いしたように、当時の航海では目的地を逸れて見知らぬ土地に流れ着くことも多かったでしょう。そうであったとしても、所詮は地球上の何処かですから、水も空気もあるし、もしかすると航海に復帰することもできるでしょう。それまで生き延びることもできるでしょう。

 

しかし宇宙は地球上と同じではありません。火星を目指していたつもりが、どこか別の惑星に辿りつく(と言っても、辿りつくまで乗組員は生き延びられないと思いますが) としても、そこには土地はあるかもしれませんが、水や空気が存在する可能性は限りなく小さいでしょう。

 

そう考えれば、地球上の冒険と宇宙での冒険と同等と見做している事が信じられません。先の記事にあるとおり「人が宇宙に住むことの深刻さを想像できていません」という意見を見て、同じように考えている人が居ることを知り、心強く感じました。

2024-01-17

B6系蒸気機関車

偶然『図説蒸気機関車全史』という書籍がある事を知り、近所の図書館が所蔵していたので借りてみました。明治初期は国鉄ではありませんでしたが、概念としての「国鉄」に所属した全ての蒸気機関車について書かれています。これは資料として手元に置いておきたいと思いました。


まだ途中までしか読んでいませんが、いろいろと発見がありました。例えば、B6と呼ばれた蒸気機関車が存在していたことは知識として知っていました。これは2120形とも呼ばれていたということも知っていましたが、書籍によっては2100形と記述されていることもあり、どちらが正しいのだろう(一方は誤植ではないか)とも思っていました。

 

本書には「3-2-5 「明治の標準機関車5」 B6系 1890年~ 2100/2120/2400/2500形」として、それらの経緯が詳しく書かれており、B6と2120形や2100形の関係がよくわかりました。そもそもB6というのは「3-1-1 1898年の形式変更によるクラス分け」に書かれているように、明治時代に鉄道国有化で蒸気機関車が雑多な形式で集まってしまったため、管理するための体系だったようです。「B系 六輪連結タンク機関車」の細分類として「B6系」を定義し、それが「4-2 1909年の「大改番」」で書かれているように、「2100形、2120形、2400形、2500形」に変わったということのようです。


蒸気機関車の形式は、D51とかC62のように、最終的には英文字が動輪の数を示しているので、「B6」というのも同様かと誤解していました。しかしB6というのは「0-6-2」という軸配置なので、何故「B」なんだろう、何故「C」ではないんだろうと思っていました。


B6以外にも、明治期の蒸気機関車は様々な番号が付与されて呼称されているので、なんだかよくわからないというモヤモヤがありましたが、それがスッキリと晴れてきそうです。

2023-12-16

Haskellにパッケージ「System.Random」を追加

Haskell アクション 超入門」でHaskellの勉強を続けていたら、例題に出てくるパッケージ「System.Random」がありませんでした。Webを検索すると、パッケージ「random」を追加する必要があるようです。そのためにはコマンド「stack」を使う用なのですが、僕が利用しているFreeBSD上にはコマンドが入っていません。


Web上の記事「Haskellのパッケージ管理について調べてみた」によると、コマンド「cabal」を使うとパッケージを追加できるようです。ここで「stack」と「cabal」の関係が不明でしたが、またもやWeb上の記事「Haskellの環境構築2023」によると、どちらのコマンドでも構わないようです。FreeBSDにはパッケージ「hs-cabal-install」があったので追加したら、コマンド「cabal」が使えるようになりました。


さてHaskellのパッケージ「random」をコマンド「cabal」で追加しようと思ったのですが、これを実行するアカウントはどうするのか分かりませんでした。どうやらアカウントごとにパッケージを追加するもののようですが、当初はアカウント「root」で実行したものの、個人用アカウントから参照されず悩みました。


パッケージ「random」を追加するのは簡単でした。

  1. cabal update
  2. cabal install --lib random

名乗り朝臣

平家物語の有名な「祇園精舎」を読んでいたら、以下のような箇所が出てきました。

  1.  六波羅の入道前太政大臣平朝臣清盛公と申し人のありさま
  2. 刑部卿忠盛朝臣の嫡男なり

 

朝臣というのは藤原朝臣とか源朝臣のように姓につくと思っていたので、「忠盛朝臣」のように名前にもつくのかと意外に思いました。ウィキペディアで「朝臣」では、名前(諱)に朝臣をつける場合を「名乗り朝臣」と呼ぶと書かれていました。しかし平家物語は、歴史の教科書でも国文学の辞書でもないので、「忠盛朝臣」というのを「名乗り朝臣」のつもりで書いているのかどうかはわかりません。


名乗り朝臣については、資料を網羅的に調べている「「朝臣(あそん)」の位置について」という記事がWeb上にあるのを見つけました。それはともかく、朝臣というのは八色の姓で制定されたはずですが、真人など朝臣以外が消えていってしまったので、姓につくのか、諱につくのかという、制定された際の目的とは違う使われ方になってしまったという印象です。

2023-12-14

「Haskell超入門」が分かりやすい

以前からHaskellを学んでみたいと思っていて、いろいろと情報を集めていました。Pythonなど人気のある言語ほどではありませんが、書籍やオンラインの入門書が見つかります。

 

新しい言語を学ぶとしても、似ている言語を既に知っているなら、それほど難しくはないと思います。例えば、C言語を知っている場合にPASCALを学ぶとか、AWKを知っている場合にPerlやPythonを学ぶならば、もちろん別の言語なので違いが多々あるかもしれませんが、似ている面も少なくないので、勉強する閾は高くないと思います。


それに比べるとHaskellは、だいぶ雰囲気が違います。関数型言語に分類されていますので、LISPを知っていれば、概念自体は理解できるかもしれませんが、Haskellのプログラムが読めるかというと、そうでもないと思います。

 

Haskellを全く知らないところから入門するとして、オンラインで読めるものを探して見ると「Haskell超入門」が分かりやすいと思いました。入門書によっては、Haskellの構文を「こういうものがあります。ああいうものもあります」と淡々と列挙していくだけのものもあるのですが、それだけではHaskellとしての発想が学べないのです。それに比べると「Haskell超入門」はHaskellの発想が学べるので、とても理解が進みました。

2023-12-10

MOPDの実装:select()かpoll()か

DEC製ワークステーションをネットワークから起動するために必要となるMOPDの実装を調べています。調査をすすめているうちに、横道にそれるという言うか、派生する技術についても把握しておく必要に迫られます。しかも空き時間を見つけながら調査しているので、なかなか先に進みません。


ともかく、MOPDをデーモンとして動作させるための中心部分とおもわれる「Loop()」(mopd-2.5.3/common/loo-bsd.c)を調べてみました。そこではシステムコール「select()」 が使われているのですが、NetBSD版ではシステムコール「poll()」に置き換わっています。他の実装、OpenBSD版、Linux版、FreeBSD版では、select()のままです。


システムコール「select()」と「poll()」は歴史的に見れば成り立ちが異なるようですが、それは2000年以前のUNIX乱立時代の頃の話であって、21世紀に入って20年以上も過ぎた今日では、両システムコールが実装されていないOSの存在を気にする必要はない気がします。


そうであるならば、システムコール「select()」と「poll()」の何れを用いるのが望ましいのでしょうか。select()の方が制限が厳しいようで、よりましなpoll()を使っておく方が良いとも考えられます。しかしMOPDにおいて、その制限が問題になるようなネットワーク的な同時接続数があるのかと言うと、そんな事はないと思います。程度問題なのかもしれませんが、机上の空論のような究極の状況を考慮してロジックを組むのも、やりすぎではないかとも思います。

 

NetBSD版MOPDのようにシステムコール「poll()」に置き換えるのが悪いとは思いませんが、圧倒的なメリットがある訳でもなさそうです。ならば他の実装のようにシステムコール「select()」のままにしておくのも、ひとつの判断でしょう。どちらのシステムコールを採用するのか、判断の決め手のようなものが何かあれば良いのですが。

2023-12-02

プログラミング言語Iconは日本語で「アイコン」なのか「イコン」なのか

先日ふとしたきっかけでIconに再開したので、久しぶりに情報を集めています。公式サイトにはドキュメントなども置かれているようなので、勉強してみようと思っているところです。

 

ところで「Icon」は日本語で発音すると「アイコン」でしょうか、それとも「イコン」でしょうか。公式サイトにあるドキュメントは全て英語なので、日本語で何と発音すれば良いのかは当然ながら書いてありません。しかし『Icon Programming Language Handbook』の「About Icon」には以下のような記述があります。 

The name, Icon, was chosen a long time before graphical user interfaces became popular. It does not refer to “icons,” but probably to iconoclasm, as the developers were excited about how their language diverged from current practices in language design.


「Icon」という名前は、GUIで目にする「アイコン」というつもりではないようです。「iconoclasm」という単語を持ち出してくるのを考えると、日本語で言うところの「イコン」を意識しているのではないかという気がします。