フローチャートの功罪

プログラミングを指導するにあたってフローチャートを多用することに否定的なプログラマは多いようだ。 フローチャートの表現力は限定的であり、現代的なオブジェクト指向や関数スタイルに対応付かない古い方法であるというのがその主な論拠(ろんきょ)である。

プログラムの処理の流れというのは様々な側面があり、もちろんフローチャート的な側面もあるのは間違いないものの、プログラミング入門においてはフローチャートばかりがあまりに頻出(ひんしゅつ)するというのは(うなず)ける話ではある。

だが、私はフローチャートを多用するプログラミング入門教育についてそれで良いと思っている。 訓練する前の人間は手順を表現するということがまるっきり出来ないのが普通だからである。 だからまずはフローチャートで表現・理解することを目標にするのは手頃であろうし、それが身に付かないようでは他の視点を持つことはどうせ出来ない。

初心者の段階を終えていつまでもフローチャートに拘泥するようでは良くないが、入門の段階でフローチャートを中心にする分には問題ではないだろうと思う。 (現実には最初に身に付けたことを後々まで引き摺ってしまうのもよくあることではあるだろうが。)

Document ID: 0f4470d7af129ad0029ffdf299bca37d

library declaration

プログラミング言語 Scheme についてぼんやりと仕様 (R7RS) を眺めていてふと思ったことがある。

define-library を解釈する時点ではライブラリは読み込まれていないのでこれは通常の構文よりもメタな存在だと考えられる。 define-library 以下の <library declaration> 部に現れることができるとされている begin 等の宣言も同様にメタな存在 (普通の構文としての解釈は行われない) だと考えていいのだろうか?

具体的に言えば以下のような書き方をしてもエラーではないのだろうか?

(define-library (foo)
  (export foo)
  (import (except (scheme base) begin))

  (begin
    (define foo 'foo)))

GaucheSagittarius で試してみると通ることが確認できるが foment ではエラーになる。

仕様の 5.6.1 では

The begin, include, and include-ci declarations are used to specify the body of the library. They have the same syntax and semantics as the corresponding expression types.

とあるのだが define-library の性質を考えると same syntax というのが字句的にマッチするという意味にもそうでないようにも思える。 あるいは未定義だと考えるべきなのだろうか。

Rust 入門してみた

プログラミング言語 Rust に興味が出ている。 公式の入門書の日本語訳が無料で読めるので基本的なことを理解するだけならそれほどハードルは高くない。

私はとりあえず練習として簡単なプログラムをひとつ完成させただけでまだまだ Rust を使い込んでいるわけではないのだが、 Rust はとても良いプログラミング言語だというのが現時点での感想だ。

私は以前に Haskell の入門書をいくつか読んでその型システムとても有用なものだと思ったものの、色々と不満があって普段使いするほどにはならなかった。

  • Haskell は静的な型検査をしっかりやっているのにメモリの管理は GC なの? (完全とは言えなくてもメモリ解放のタイミングをある程度はコンパイル時にわからないものか?)
  • Haskell は ML 系を踏襲した文法なので、 慣れの問題ではあるが C や C++ に慣れた身からするとどうにも使いづらさがある。
  • Haskell だけでは低レイヤを扱い難い。 結局は C (など) の助けが要る。

Rust ではこれらの不満が解消されつつ型システムはかなり似ているので私の好みに合うプログラミング言語だと思う。

Document ID: 7890bf8618279b5eea88ea6d1a00aedb

分散リポジトリ

URL は永続的であるべきだ。 情報は永続的であるべきだ。 それはウェブの理想的な運用であるが、現実はそうではない。 情報の保持にはそれなりに費用もかかるのであるから、途中で放棄せざるを得ないこともあるだろう。

無料でウェブサイトを開設できるサービスのジオシティーズが終了したときには大きく話題になったりもした。 大規模にやっているサービスが消えると時代がひとつ消えたかのように空白になってしまう。 今なら、たとえばツイッタやピクシブが消えれば失なわれる情報は多い。

インターネットは情報にアクセスするために複数の経路を持つことを趣旨として設計された。 しかし情報の保持はかならずしも分散されていない。 技術的には CDN (Content Delivery Network) といったものも活用されているが「サービス」に所有されていることにはかわりなく、いずれ消える不安はいつでもある。

だからサービスとして堅牢であることを指向するよりは、ユーザが簡単に情報を複製できる仕組みが積極的に活用されて欲しいと思うのだ。 ブログは RSS で全文配信されて欲しいし、 Git リポジトリとして公開されていればなおよい。 小説作品なら ePub 形式が好ましい。

Document ID: b74bacc704af355c368b28eb86a818ff

ニブシ

私の地元 (香川県観音寺市) では不動産屋のことをニブシというのだと父から聞いた。

とりあえずウェブ検索で調べてみたところ、方言を紹介したページでニブシという語は取り上げられているものの由来は書かれていない。

父の不確かな記憶によると売買したときの手数料の取り分が二分(にぶ)だからだったような気がするのだという。 つまりニブシを漢字で書くと二分師 (または二分士) ということなのだろう。

地域の情報というのは思ったよりもインターネット上には流れていない。 ささいなことだがここに書きとめておくことにした。

追記

土地の取引(とりひき)について明るい人に尋ねたところ、売買額の 2% ずつを売主と買主から手数料として徴収する (合計 4%) という習慣があったということに由来するそうだ。

Document ID: d20cf3396032b5fbc9bf815b91de2b0b

Fire HD 8

小説家になろう」という小説投稿サイトの小説を読むのに使っていた Sony Reader RPS-350 が数カ月前に壊れてしまった。 Sony Reader は既に生産しておらず、現在出回っている電子インクを使った読書用端末の主要なものはやや高価路線なこともあって雑に普段使いするために買うのは躊躇われるのでどうしたものかと思っていた。

そして結局は電子インクを諦めてタブレットコンピューター Fire HD 8 を購入した。 ストレージが 16GB のモデルである。 値下げキャンペーンの期間だったので 5680 円という安値で買えた。

実際に使ってみると Fire HD 8 は値段の割にはずいぶんと出来の良い端末に思える。 一昔前のパソコンよりは快適なくらいだ。 おそらくアマゾンから電子書籍や映画を買うことを見越して端末は安目に設定しているのだろう。 私はアマゾンからコンテンツを買うつもりはないので申し訳ないが。

こんな夢をみた「三人の死体」

こんな夢を見た。

夢の中の私は学校 ((じゅく)かもしれない) の教室にいた。 私も含めてその場にいる人は学校の制服らしきものを着ていた。 白い半袖のワイシャツと黒いズボンだ。 そして、どういう理由だかわからないが私は席を移動することになり、机と椅子を教室の最後列に運んだ。 新たに隣の席になった人と「上手く便乗して移動できたな」という意味の会話をした。

すると、教室の外から入って来た人が私にかなり分厚い書類の束を渡しながら、外へ出るようにと教室の皆を(うなが)した。 私は受け取った書類を机に仕舞(しま)った後に外へ出た。 建物の出入口は民家の玄関のような幅しかなく、扉も民家の扉といった雰囲気だった。 ぞろぞろと出ていく人達に続いて私が扉に手をかけると、扉が妙に重い気がしたので、何かが引っ掛かっているのではないかと視線を動かした。

結果としては (少なくとも外観からわかる範囲では) 扉に異常はなかったが、扉を開けてすぐの目の前にある左側の軒下(のきした)に死体が引っ掛かっていた。 その死体は作務衣(さむえ)のような服を着ていて、私はそれを「陶芸家風だな」と思った。 思わず「うわぁ」と声を出すと、すぐ前を歩いていた男性が振り向いたので死体を指差して示すと、彼もまた驚いていた。

割と目につくところにある死体なのに私の前を歩いていたたくさんの人達はこれに気付かなかったのだろうかと視線を進行方向に戻すと、十メートルほど向うにある大木からふたつの死体が落ちてきた。 この死体は背広を着ていて、夢の中の私は何の理由もなくそれを刑事の死体だと思った。

以上。

この夢には私の知っている人も場所も登場しない。 推理物を読んだ記憶などから構成されたのかもしれないが、物語を読んだときにはないひどく不快な印象が残った。

Document ID: de2fb1118fccbba93f576a88850b319b