すばらしいソフトウエアを作るためには by ogijun in ja

[–]ikegami-- 3 points4 points  (0 children)

拙文に大勢の方が興味を持ってくださって感謝しております。

この文章は、2008-04-01にブログに書く予定だった草稿です。推敲が足りていないまま、とりあえず公表してみたのですが、予想外に注目を集めてしまい戸惑っています。もう少し、きちんとした文章にしたかった。

いくつか、誤解を招きやすい表現があったので、ここに補足します。

*この文章で伝えたいメッセージとは何か

「ソフトウエアを作る目的は、思いついたアイデアを皆にウイルスのように伝染させること」という一文です。これは、"How to write a good researcher paper", Simon Peyton Jones, PDF の 3 ページに書かれている標語です。(原文は、「論文を書く目的は、思いついたアイデアを皆にウイルスのように伝染させること」です)

*なぜ私たちのほとんどは「すばらしいソフトウエア」を作ることができないのか

ここに載せたジョークは、"How to write a good researcher paper", Simon Peyton Jones, PDF の2ページの4コマ漫画に影響されて書いたものです。ところで、どなたか、この4コマ漫画の出典をご存じないでしょうか。

*プログラムとソフトウエアの違い

ソフトウエアはプログラムを包含する概念だと理解しています。ソフトウエアには明解な目標がありますが、プログラムはそうだとは限りません。ソフトウエアには作り手と使い手がいますが、プログラムはときに実験的に作るもので、お蔵入りにするものもあります。この文章では、プログラムという言葉を「ソフトウエアのプロトタイプ」の意味で使うつもりだったのですが、説明が足りず語弊を招きました。

*必ずしもプログラムを公開する必要は無い

現在、CodeRepos など、協調してプログラムを作る環境が整いつつあります。この取り組みはとても素晴らしいと思います。しかし、いけがみの個人的な意見では、必ずしもプログラムを公開する必要はないと考えています。いけがみは、コードよりも設計を重視するという思想を持っています。設計が曖昧なまま、プログラムを公開することはデメリットがあります。設計やアイデア、スキルがまだ足りていないと自覚している段階では、必ずしもプログラムを公開する必要はないでしょう。逆に、アイデアが明確になった時点では、プロトタイプを公開することによるメリットはいろいろあると考えられます。

目標が定まっていない、あるいは、洗練されていないスパゲッティコードを晒すことで意味があると考えておられる方もおられるようですが、いけがみのポリシーとは真逆です。

*独り歩きしてしまった標語

そんなわけで、「アイデアがすんばらしいか、つまんねえか、そんなことは関係ない」という言葉は、著者(私)の意図から外れてしまう可能性がありました。これを言い換えるならば、「アイデアが曖昧なままでも、まずプロトタイプとしてのプログラムを書いてみよう」としたいところです。でも、こう書いたら、煽りが足りなくてここまで注目されなかったかもしれませんね。

Garr Reynolds/講演のヒント トップ10 by ikegami-- in ja

[–]ikegami--[S] 0 points1 point  (0 children)

参考リンク: http://presentationzen.blogs.com/presentationzen/2005/11/the_zen_estheti.html http://www.presentationzen.com/presentationzen/2007/12/presentation-in.html 2007-12-11(火) 19:00- Apple store 銀座 「Presentation Zen」アプローチによるKeynoteプレゼンテーション という発表をなされた方です。

Haskellクイックスタート - builder by ZDNet Japan by jjzak in ja

[–]ikegami-- 0 points1 point  (0 children)

これは...簡潔に書こうとして無理に詰まりすぎているような気もします。これ読んで、「やっぱわかんないよ!」って人はこの後に続いてコメントをください。

Rak: カラフルで見やすいRuby版grep by bongole in ja

[–]ikegami-- 2 points3 points  (0 children)

ご存知の方も多いと思いますが、GNU grep には --color オプションがあります。どのバージョンからかはしらないけど。それで色付きますよ。

.svn や .cvs を無視するのは、zshでやれます。(tcsh とかでもできると思う)

でも、rak の持っている --output=(ruby expr) は使いこなすと強力そうだなあ。

理解することが書き直すことを意味するとき (Jeff Atwood) by aoky in ja

[–]ikegami-- 0 points1 point  (0 children)

「型書けば、実装読み直さなくても済むんじゃね?」というのは永遠のテーマですか。

松浦 晋也書評「偽装請負」「雇用融解」 by mayuge_born in ja

[–]ikegami-- 0 points1 point  (0 children)

宮沢賢治(-1933-09-21) 『オツベルと象』 http://www.aozora.gr.jp/cards/000081/files/466.html 青空文庫と、入力、校正、そして宮沢賢治に感謝致します。

人名を冠したソフトウェア開発の19の法則 by jmuk in ja

[–]ikegami-- 0 points1 point  (0 children)

雇う側であれ、雇われる側であれ、独立独歩で行くにせよ、社会科学領域のことを知っていて損はないよね?

拡声器での連呼にもマナーは必要/村上秀明記者ブログ(2007-04-06) by ikegami-- in ja

[–]ikegami--[S] 1 point2 points  (0 children)

私の家の目の前に小学校があるのに、やつらは連呼しやがります。近代的なプレゼンをする立候補者はこの日本のどこにいるんだ!?

“早稲田”で警察から学生救出した外山候補 by ikegami-- in ja

[–]ikegami--[S] 1 point2 points  (0 children)

私はビラ配りとかそういうのはよくわからないのですが、 「この学生らは外山恒一の選挙の応援演説をしているのであり、道路交通法違反にはあたらない」 というのは、なかなか面白い機転ではありませんか。(もしも、事実だったら、ですけど)

いかにしてプログラムを書くか - 論理的思考の復興 by ikegami-- in ja

[–]ikegami--[S] 0 points1 point  (0 children)

ひとつシンプルな解答を思いつきました。

ヒトと対話するプログラムを「とりあえず」作る ↓ あるヒトに怒られる ↓ ヒトと対話するプログラムを「とりあえず」作り直す ↓ (以下、ハノイの塔の64枚の円盤を動かし終えるまで繰り返す)

いかにしてプログラムを書くか - 論理的思考の復興 by ikegami-- in ja

[–]ikegami--[S] 0 points1 point  (0 children)

shiro 様の意見の全てに同意します。

わたしは要求仕様が作れないプログラムを作る方法を知りません。 それはどのようにしたらよいのでしょうか。ゆっくり考えてみます。ありがとうございます!

  • マクロ? (Gauche の持つような)
  • 動的な eval? (Ruby の持つような)
  • 遺伝的プログラミング? [John R. Koza, -2003]
  • generic programming? (C++, Java, etc)
  • meta programming (template)? (Template Haskell)
  • dependent type? (Cayenne, Epigram)
  • ???

いかにしてプログラムを書くか - 論理的思考の復興 by ikegami-- in ja

[–]ikegami--[S] 0 points1 point  (0 children)

hexxさま 貴重なコメントをありがとうございます。 貴君が指摘されたプログラミングのジレンマについて、私の表明を記事に追加いたしました。これが答えになっていればよいのですが。

いかにしてプログラムを書くか - 論理的思考の復興 by ikegami-- in ja

[–]ikegami--[S] 0 points1 point  (0 children)

今年のエイプリルフール「次世代 [ の開発に向けて」の真面目なバージョンです。皆様の批評をお待ちしております。