断食安息日。ずっとカジュアルな格好を好んでいた息子は、 今週から教会にスーツを着ていくことを決心した。 馬子にも衣装とはこのことだ。みんな感心していた。
コンピュータ業界で悩んでいる人の相談に乗る。 というか、ただ単に話を聞いてあげただけだけど。 ユーザ部門と外注との間の板挟みだそうだ。 身につまされる話だ。 いろいろ話をしたが、どの程度お役に立てたどうかはわからない。
話題のOSSAJの報道。
言ってることは分かるんだけど、次のステップが聞きたいんだよねえ。 「ベンダーも含めたOSS利用者が利用情報を共有する」とは具体的になにかとか、 「利用者の高い志」とは具体的になんのことかとか、 「若干の仕掛け」とはどんなものを考えているかとか。
まだあまり具体化してなくて、メンバの脳内でイメージが熟成中なのかしら。 それならそれでそう言ってほしい。
本気ですか?
begin-end系の言語は{-}系の言語に比べて、まつもとさんの言葉を借りれば「言語のユーザビリティが低い」と思うのですよ。
- まず、生産性。明らかに括弧の方が生産性は高いですね?文字数も短いし、 end を使う方式で短いイテレータを一行にまとめようと思うと';'を補わなきゃいけないのも生産性に負のバイアスを与えてると思います。
- 次に理解のしやすさも括弧の方がわかりやすいです。とくに非英語文化圏の人間にとっては「英単語和訳」という作業がない分括弧は理解が簡単。
あと、 ruby の場合だと end に対応する単語が一意に定まらないので、パッと見ただけで対応が分かりづらいと思います。インデントしてあれば分かりますけど、それは括弧でも同じなんだから差っ引いて考えるべきですよね。
私の作った言語のユーザビリティを私の言葉を引用して論じるとはいい度胸だ。(笑)
言語のユーザビリティというのは全体のバランスから決まるわけで、 もっと広い視点に立たなくてはいけない。 近視眼的な視点から考えると 「end」という3文字よりも「}」という1文字の方が入力の手間が少ないと感じたかもしれないが、 実際には
と明確に不利であるとはいえない。むしろ逆に有利であるかもしれない。
理解しやすさについては、
であり、有意な差はほとんどないと考える。 予約語に色をつけるなどツールの支援でより便利になるのは明らかだし。
わからなかったのは、mputさんの
個人的には ruby-mode.el が end に対応する予約語をハイライトしてくれるようになったらもっと end 使うかも。
という発言だ。きちんとインデントしていれば、対応する予約語はほぼ明らかだと思うのだが。
さて、ここまでで「endは決してユーザビリティが低くない(「}」に負けない)」ことを示すことができたと思うのだが、 実はRubyのend採用にはさらに別の効果がある。
結果的に他の多くの言語が「end」を避けているので、 Rubyのプログラムを見た時にひと目で「これはRubyのプログラムである」と認識できるのだ。 この効果は意識のスイッチに役立つので、少なくとも私にとっては非常にありがたい。 私はCとRubyを交互に使うのだが、おかげで今どの言語を使っているかで混乱することはない。
これはユーザビリティが相当高いといえるのではないだろうか。
寒いと思ったら雪が積もっている。インフルエンザもはやっているらしく、 次女と長男のクラスは学級閉鎖。長女はちょっと不満げな顔で登校。 もっとも自宅に残った子らも外出禁止なのでうれしいわけではない。 まあ、流行拡大を避けるためには当然の処置であろう。
しかし、考えてみれば社会人は風邪引いても仕事休めなかったりするわけで、 企業でのインフルエンザ拡大とかは現実的な脅威だったりしないんだろうか (うちの会社の連中は(よっぽど仕事が煮詰まってない限り)ちゃんと休みます)。
4774121770 昨日、本屋に立ち寄ったら目に止まった。 恩師(中田育男先生)が監修していらっしゃるし、 価格も手ごろだったのでレジへ。 と思ったら、財布にお札が一枚も入ってなくて、あわててカードで購入。
教え子としては朝倉書店の『4254121393』も購入すべきなんだろうけど、ちょっとお財布にやさしくなくて(実は脳にもやさしくない)。
で、今日になって雪降る午前中に読んでみたら、なかなかよろしい。
文系出身で法政大学の大学院、IT Professional Courseに入学した著者は、
中田先生の「コンパイラはコンピュータサイエンスの基礎である」という言葉に
だまされて惹かれてコンパイラをテーマに選び、
とうとう1年で携帯電話で動く小さなコンパイラを作り上げるところまで到達したという。
本書はその彼女が文系の視点でコンパイラの本を書き上げたのだそうだ。
1章は「たとえ」をつかってソフトウェアの働きについて解説しているのだが、 これはまさに私が書きたかったアプローチだ。某出版社から企画を通すところまで行ったのだが、 時間が取れずとても書けなかったので私の方からキャンセル。残念だ。
2章以降はJVM上で動作するCell言語のコンパイラとインタプリタ(VM)を作っている。 これも(別の本で)書きたかったテーマだ。 Rubyは元々書籍の解説用言語としてプロジェクトが始まったことを知っている人はもはや少ないが、 『(言語を)作りながら学ぶオブジェクト指向プログラミング』というような本になるはずだったのだ。 あまりにも売れそうにないので早々にキャンセルされたんだけど。
というわけで、「まつもとに(才能が足りなくて)書けなかった本」の片鱗がここにある、ということで。 言語に興味のある人は眺めてみて損はない本だと思う。他の中田先生の本よりもずっとやさしいし。
また、えーっというような判決が出た。この特許の内容は
「アイコンの機能説明をさせる第1のアイコン」をクリックしてから第2のアイコンをクリックすると、第2のアイコンの機能説明をしてくれる処理
である。
こんなの誰でも思いつくんじゃない? こんなアイディアを本当に保護する必要があるわけ?
更に、こんなのに対して「製造・販売の中止と製品の廃棄を命じる判決」というのは、ちょっと。
ジャストシステムには、ぜひとも高裁まで争って逆転していただきたい。 また、私は当面、松下(Panasonic)の製品を買いません。 長らくLet's Noteユーザでしたが、今はIBMだし。
しかし、私の懸念はこれだけではない。松下がこのような「特許闘争」を行う企業体質だとすると、 いつの日か彼らの持つ特許2945753号、2982752号、2982753号を「行使」して、 日本を大混乱に陥れないとは限らないということだ。
いや、待てよ。
それで特許の「問題」がクローズアップされればむしろ望むところなのか?
だとすれば「Matzにっき」は松下電器産業を(普通とは違う意味で)応援します。
追記
いくらなんでも「応援する」は不謹慎だと思うようになった。 訂正したい。
4086302365
2巻まで読んだ時点であまりポジティブでない評価を書いた『よくわかる現代魔法』だ が、気になったので既刊5巻まで読んでみた。
まあ、予想外の現れ方をする業界用語を楽しむという点では、「にやり」くらいしかで きないのだが、最後まで読んでみたらストーリーが予想外に面白かった。うーむ。
いや、最初は「私が書いた方が面白いのでは」などという不遜な考えが頭をよぎったのだが、やはりプロの仕事を甘く見てはいけない。
ちなみに面白かった用語。
全部、ちょっと(あるいは全然)違った意味に使われているのがミソ。あ、「TIMTOWTDI」だけは本来の意味のままか。タイトルにしか使われなかったけど。
なお、Rubyは登場しません、残念ながら。JavaやCやPerlは出るのに。
Spam分類技術のためにSophosに買収されたActiveStateが、本来の領域であるスクリプト 言語の技術をベンチャーファンドに買われて、 Sophosから独立した、という話。
いや、暗澹たる言語ビジネスに一条の光明って感じですな。 Sophosの傘下にいたときも Komodoを開発したりと頑張りつづけたのが評価されたに違いない。
うんうん、よかった、よかった。
元祖ハッカー、和田先生(75歳)は今日もお元気です。
「一生プログラマ」を目標とする私としては、 歳をとっても和田先生のようでありたいと望む。 こんな私も、最近、老化の足音が聞こえるようになってきたが、 プログラミングに対する老化の影響(悪影響)については いまだに確たる自覚がない。 体力をそれほど必要としない知的作業(徹夜とかは別として)なので 影響は限定的だと信じたいのだが。
プログラミングからは離れるが、
先日、77歳の叔父伯父(父の兄)がバイク(たぶんビッグスクーター)で事故して
10日ほど入院したと聞いた。
「でかけるから」と言ったところとはまったく逆方向での事故だったそうだが、 本人の記憶が飛んでいて、なぜそこにいたのかまったく思い出せないのだそうだ。 まあ、大事にいたらず良かった、良かった。
しかし、体力は落ちていると思うので、あまり無理をなさらないでください。
とはいえ、この兄弟(伯父と父)は私よりも体力がありそうなので 油断できない。父(69歳)はいまだに握力70Kg弱を維持しているような気がする。
かなわない。
「PC 2.0とはなんぞや」という気もするが、 小さなUSBデバイスを持ち歩き、それでブートすればどのPCでも 同じ環境で作業ができること、を意味するらしい。
まあ、それだけなら昔から技術的には可能なわけだが、 そのUSBデバイスが単体ではLinux駆動のメディアプレーヤーとして動作する(ので、持ち歩きに対するインセンティブが増す)ことと、 オンラインストレージとネットワークアップデートが(有償で)提供されることが 新しいと言えば新しいか。
単なるディストリビュータを脱却しようとするTurboLinuxの新しい動きは 興味深い。同じ土俵で勝負したらRedHatに勝てないものね。
ところで、この一連の話題性のせいかTurboLinuxの株価は上昇している。 しまった、こうなることはある程度予想できてたんだから、 昨年の時点で買っておけばよかったなあ。
Arcがとうとうリリースされた。
現時点ではMzSchemeで書かれたSchemeへのコンパイラとして実装されているようだ。 チュートリアルを見ると 「簡潔な表現を重視したLisp-1」という感じ。 ふーん、Lisp-2じゃないんだ。
興味深いのは「~」と「:」。
「~f」は「(fn (x) (not (f x)))」を意味する。 「f:g」は「(fn (x) (f (g x)))」を意味する。 これらはより関数型プログラミングを強く意識していることを意味してるんだと思う。
あと、「lambda → fn」とか「defmacro → mac」とかは まあ単なる短縮形って感じ。「setf → =」ってのはちょっと意外だったけど。
で、さっそく批判されている。 「ビッグネーム」が6年越しでほのめかしてきた言語だけに 期待が膨らんでいたぶん、失望も大きかったらしい。 まあ、彼ほど忙しい人が自分で開発したんだから、 あんまり進まないのは当然だと思うよ。
さて、いくつもある批判のうち最大のものは 「ASCIIの96文字しか扱わない」というもの。 とはいえ、フルUnicodeをサポートするのは大変だし、 「とりあえず」という意味ではそんなに悪い判断ではないと思うよ。 むしろ下手にUnicodeべったりな処理系にするよりは賢いかも。 変に実装すると今さら「1文字=16ビット」で実装しかねないから。アメリカ人は。 逆に「1文字=1バイト」にべったりしてもらっても困るわけだが。
私にとってもっと大きな欠点だと思えるのは、 オブジェクト指向機能あるいはgeneric functionが導入されていないこと。 まあ、Arcがオブジェクト指向言語でない理由はPaulがすでに述べているわけだが、言語の拡張性や柔軟性を考えるとgeneric functionは欲しかった。
あと、Lisp-1にCommonLisp的マクロシステムを導入しているような気がするんだけど、 これって安全に書けるんだっけ。よく知らないんだけど、 Schemeの人々がR5RSの時にマクロシステムでさんざん悩んだのはまさにそこにあった ような気がするんだけど。この辺は識者に聞いてみたいところ。
ここで説明もなくLisp-1とかLisp-2とか書いたが、 そういえば日本語であまりこの用語を見たことがないので補足しておく。
基本的に名前空間が一つしかないLispのことをLisp-1と呼ぶ。 たとえばSchemeがそう。関数の名前空間と変数の名前空間か分離していないので
(display "hello world") ;; (1) hello world (define p display) ;; (2) displayをpに代入 (p "hello world") ;; (3) 1行目と同じ動作
となる。一方、名前空間がひとつでないLispをLisp-2と呼ぶ 別に名前空間の数はふたつに限るわけではない。CommonLispでは7つと聞いたような気がする(本当?)
(print1 "hello world") ;; (1) hello world (setq p print1) ;; (2) undefined variable print1
CommonLispでは関数の名前空間と変数の名前空間が異なっているので、 上記の代入はエラーになる。
Lisp-1とLisp2の区別はLisp以外のプログラミング言語でも存在する。 たとえば、PythonやJavaScriptはLisp-1であり、 RubyはLisp-2である。
どっちが良いとかは難しいが、Lisp-1の方が関数型プログラミングを 統一的に書きやすいというメリットはある。 一方、伝統的なオブジェクト指向プログラミングモデルにはLisp-2の方が なじみやすいだろう。
「なめねこ」まで引っ張り出すとは。なんか私が前フリをかましたように見えるけど、 先日の「Webアプリケーションをなめるな」の元ネタは 「月をなめるな」ですからね*1。
ちなみにこの研修、うちの娘の参観日でも行われていた。 が、中学生たちはちゃんと月について理解してたようだ。 少なくとも「酸素ボンベは要らない」などとは言わなかった。
*1 正確には「はっきりと意識はしてなかったけど、あえて言えば」くらいだね
意外な展開。見守りたい。
これがどういう意味を持つのかは 内部事情を知らない私には断言するのは難しいけれど、 オープンソースをはじめとした技術(未来技術?)に価値を見いだす企業が増えており*1、 お金に余裕があれば会社を買うことでその技術を入手しようという行動が 少なくとも海外では目立っており、 この買収は国内でもその動きが出てきてい兆候なのだ、 とも読める。
そうなんだろうか。
*1 最近の例だとMySQL, Trolltechなど
「パパ」という呼び名は恥ずかしいので、最初の子供が産まれて以来、 「お父さんと呼びなさい」と指導してきた。おかげで「お父さん、お母さん」が 定着していたわけだが、末娘だけは頑固に「パパ、ママ」と呼び続ける。
恥ずかしいからよしなさい。
そういえば、私の兄弟でも下の妹は「パパ」とか呼んでたなあ。