まつもとゆきひろ 答える 143
初インタビュー大成功 部門より
先週、みんなはRubyの開発者まつもとゆきひろ(matz)さんにさまざまな質問をした。そこからスコアの高かったものを約10個をチョイスし、メールで送り、回答してもらった。興味深いお話、ありがとうございます。そして、さすがまつもとさん、質問のリストに直接は含められなかったいくつかの質問や疑問、コメントへの返答もちゃんと含まれている。前置きはこれぐらいにしておかないと物が飛んできそうなので、さっそくどうぞ!
質問:2003/3/11
回答:2003/3/13
1)モットー
by yukifj
Perl のモットーは "There's more than one way to do it." だけど、まつもと氏は Ruby のモットーは何だと考えていますか?
まつもとゆきひろ(以下matz):
Larryが自身のインタビューで述べている通り、RubyはPerlからたくさんのものを引き継いでいて、そのもっとも重要な部分はその「哲学」であると考えています。ですから、Perlの哲学を表現したモットーである「やり方はいろいろある(TMTOWTDI)」というのは当然Rubyのモットーでもあります。もともとRubyはPerlとは「別のやり方」の実現であるわけですから。
しかし、Rubyがもっとも重視しているのは多様性ではありません。それよりもむしろプログラミングという精神活動の中でいかにストレスを減らすかという点に注目しています。私は短気なのでプログラミング中の「イラツキ」は嫌いです。怒りによって生産性が下がるからです。生産性が低いとたくさん仕事をしなければなりません。それは怠惰な私にとって耐えられません。ですから、そのようなことをできるだけ感じずにすむようにRubyを設計しています。そして、私は傲慢なので私にとって良いものは他人にとっても良いと決めつけて世界中に広く公開しています。
そしてなによりストレスが多いとプログラミングが楽しめないじゃないですか。「Enjoy programming」がRubyの真のモットーです。
2) Larry Wall氏のインタビューで。
by unnya
このインタビューが行われるきっかけになったLarry Wall氏のインタビューを読まれてどのような感想を抱かれましたか? 特にRubyについて言及されていた一節
たとえば、なんでもオブジェクト扱いするのは、「初心者にとっての驚き最小の原則」の侵害だと思う。初心者にとっては、数字は数字だし、文字列は文字列だ。コンピュータが扱う限りでは、それらは当然オブジェクトなのだろうし、もちろん、上級者は、これらをオブジェクト扱いするのを問題にさえしない。けれど、いきなりオブジェクト指向を強いると、加速中の初心者にとっては徐行帯になってしまう。
については、おそらくこのような話は繰り返しあったのでしょうけど(僕はRubyについては全く知らないので推測でしかないのですが)、どのような感想をいだかれましたか?
後、どうもPerl -> Rubyを勧める人たちはPerlのことをかなり貶している(というか嫌っている?)人が多いように私には感じます。あくまでイメージしかないですが。私の持っているイメージは当たっているとお考えでしょうか?もしそうならそのことについてはどう思われますか?
matz:
聞いたこともある人もいるかもしれませんが、Larryはずっと昔から私の尊敬する人物のトップ10には入っていて、彼がRubyについて知っているというだけで感激モノです。また、Rubyのローカル変数のスコープの点に気がついた彼はやっぱりとても鋭い人だと思います(古今最高のルネッサンス人かどうかは別として)。私自身もこれはRubyの最大の欠点だと思っていて、機会があれば直したいと思っているので。
しかし、初心者に対しては私は彼とは違う考えを持っています。私は「初心者はいつまでも初心者ではなく、いつまでもその立場に甘んじているべきでもない」という理由で初心者に媚びることを拒否します。初心者向けの言語が存在してはいけない理由はありませんが、少なくともRubyの目指すポジションは「Rubyに十分に慣れた人が最高のパワーを発揮できる道具」です。自転車屋に行けば自転車にまだ乗れない人のために補助輪の付いた自転車を買うこともできますが、万人にそれが必要なわけではありません。私が乗りたいのは軽快に走れる自転車で、初心者に優しい補助輪付き自転車ではないからです。しかし、初心者も当然人間なので、人間に優しいプログラミング言語は初心者にとっても優しい側面があるでしょう。
同様の理由からRubyが「驚き最小の原則」と言う場合には、さまざまなバックグラウンドの人々すべてを驚かせないことではなく(それはそもそも不可能でしょう)、Ruby のやり方に十分に慣れた人が持つ常識が一貫して通用するという意味です。言い方を変えれば「私(matz)の驚き最小の原則」と呼んでも良いでしょう。そして、私にとってはすべてがオブジェクトである方が驚きが最小であるうえ、一貫性があり、しかも強力であったということです。
Perlを嫌っている人が多いというのは分かるような気がします。Perlは良い点も悪い点もある言語です。もちろんRubyを含めたすべての言語がそうなんですが、Perlは特にそれが極端な気がします。そういう言語を使ってプログラミングをするとストレスを感じる人がいます。しかも、仕事などの事情で言語を自由に選べない場合は特にそうです。私も以前仕事でC++プログラミングをしていたときにはC++が嫌いでした。もっとも、C++だけが悪いのではなく、私のチームが開発していたプロジェクトがC++を濫用していたことに真の原因があるのですが、それでも濫用しやすい言語は憎悪の対象になりやすいでしょう。
私はPerlを嫌いではありませんよ。私はRubyを選ぶことができますから、傍観者でいられますから。でも、私がPerlでのプログラミングを強制されたら嫌いになるかもしれません。
3) Rubyの入り口は?
by Katuragi
私はPerlを使っています。しかしRubyにも興味があります。だがRubyはPerlのように入り口が簡単であるとは思えません。それは私がオブジェクト指向に弱いせいかもしれません。そんな私にRubyも書けるようになるためのアドバイスをください。
matz:
人にはいろいろな好みと適性があり、Rubyがどうしても性にあわない人はいるのだろうと思います。そういう人にまで無理にRubyを使ってもらおうとは考えていません。あなたを含めたほとんどの人にとってRubyというのは単なる道具であって、やりたいことを実現させる手段のひとつにしか過ぎません。私にとっては少々違いますけどね。私にとってはRubyは作品だったり、自己表現だったり、パズルだったりしますから。
ただ、あなたがなぜ「簡単であるとは思えない」のかについては大変興味があります。オブジェクト指向に弱いからとおっしゃいますが、オブジェクト指向をばりばり使わないレベルではRubyとPerlとでは大差ないように、私には感じられます。
open(PWF, "/etc/passwd"); while (<PWF>) { @pw = split(":", $_); print $pw[0], "=", $pw[4], "\n"; }
と
pwf = open("/etc/passwd") while (line = pwf.gets()) pw = line.split(":") print pw[0], "=", pw[4], "\n" end
がそれほど違うとは思えないからです。むしろ配列全体は@なのに要素のアクセスには$をつけるなどのルールの方が私にはストレスになります。もちろん「$はスカラー」というルールは理解しているのですが、スカラーかどうかは私が今関心があることではないからです。自分の関心と言語が要求する注意点にずれがある時にはストレスを感じます。
逆にオブジェクト指向プログラミングが必要になれば、後づけでいびつなPerlのオブジェクト指向機能とRubyのそれとでは比較するまでもと思います。
となるとRubyだから難しいというのは幻想のように思えます。あるいは「簡単であるとは思えない」という真の原因は実は「今さら新しい言語を覚えたくない」言い換えると「Perlなら知っている。Rubyを覚えるのはめんどくさい」という深層心理からくるものかもしれません。いえ、仮にそうだとしても、それは責められることではありません。新しい言語を覚えるのはコストの高い行為で、心理的にも抵抗が大きいのは当然です。そこでの選択肢は「一歩踏み出して学ぼうとしてみる」か、あるいは「ここが幸せ、外の世界は恐ろしい」と踏みとどまるかのいずれかです。どちらを選びますか?
私自身は、新しい言語の学習には時間以外のコストはたいしてかからない上、結局その言語を使わなかったとしても学ぶことが多いので、Rubyを試してみることをお勧めしますけどね。
4)「国産」「純国産」と呼ばれることについて
by moreau
まつもとさんは、Rubyがしばしば「国産」「純国産」と呼ばれ、「国産なんだから応援しよう」「国産だから使う」というような評価をされることについて、どのような感想をお持ちでしょうか?
私個人としては、近代の国民国家的なコンテクストの中で教育を受け生活してきた人間として、「日本人」であるまつもとさんの成功を誇らしく思(ってしま)う気持ちがある反面、(私自身がしばしばしてしまう)「国産だから」というような評価に対しては、インターネット上でゆるやかに形成されている国民国家とは別のコンテクストに対する視点を軽んじてしまう危険性(インターネットの方がえらい!正しい!というような意味ではなく)や、まつもとさんに限らず、そういったコンテクストで活動されている人々の個性を矮小化してしまう可能性等々に、多くの違和感を感じてもいます。
他の方のご意見もいろいろあるでしょうが、そのあたりについてまつもとさんの感想、ご意見を伺えれば幸いです。
matz:
正直なところ、国産なんだからというフレーズには少々抵抗があります。日本人のためのプログラミング言語を作ったつもりはありませんし、日本のためにという思いもそれほど持っていません。もはやRubyのもっとも活発なコミュニティは英語によるメーリングリストruby-talkであり、日本のRubyと呼ぶべきものではないように思います。
しかし一方、私が日本人であることや、英語が下手くそな点は否定しがたい点もあります。日本人であることがRubyに影響を与えたのかどうかは自分でも分かりませんが。それにいろいろなところから支援を引き出すのに「国産」、「日本発」というキーワードを利用したりする私は「曖昧な日本の私」でもあったりします。ある意味ずるいんですが、大人が現代を生きていくためにはそういう小賢しさが必要なときもあります。悲しい。
5)後悔仕様
by argon
Ruby の仕様で、これはやめておけばよかったというものはありますか?String の連結は、左右が可換ではないのだから + ではなくて * だろうという話はいまさらだよねということでそのままなのを残念に思っていたりします。すでに定着した仕様はそうそう変えるわけにいかないのはわかっていますが、Dr. Dennis Ritchie もC言語の設計で creat の spell を挙げていますので、せっかくなので、まつもとさんの心の棘を訊いてみたいと思います。
matz:
あんまりないです。今のRubyとまったく異なってRubyと同じくらい良い言語は存在できるだろうとは思いますが、Rubyをそのように変えようとは思いません。変えるとしたら、Larryも指摘したローカル変数のスコープくらいでしょうか。これは2.0(Rite)で変更しようと考えています。
「Stringの連結が * であるべきだ」という主張は私には理解できていませんし、そうするつもりもありません。私にとって + ってのは小学生のときに学んだ
■■■(3)+□□(2) = ■■■□□ (5)
というレベルのままなんで。
その他にメソッドの名前や戻り値など微妙な後悔はあります。が、妥協できるかな。
6) 生い立ちについてお話を聞かせていただけますか?
by yh
雑誌などでまつもとさんのインタビューはいくつか拝読しておりますが、生い立ちについて触れられたものはあまり見たことがありません。
人に役立つものを作るプログラマになるためには、ただプログラミングが得意なだけではいけないはずです。他の素養はどう吸収し、言語開発にどう反映されているのか。つまり、子供の頃から、どんなひとに出会い、どんな言葉に感動を受け、何を学び、そして、それらによってどんな考え方のプリンシプルが形成されたのか。
抽象的な質問ですが、様々な分野の後進へのメッセージを兼ねて、思うところを自由にお話していただけませんか?Larry Wallのインタビューを翻訳しているときに、願うことなら、まつもとさんにも聞いてみたいと思っておりました。このような機会が得られたことに大変驚いています。
matz:
生い立ちですか。知ってあんまり役に立つ情報じゃないような。ま、ともかく。1965年大阪生まれ、4歳からは鳥取県米子市育ち、6 人兄弟の長男、ただし他の兄弟と歳が離れているのでわりと一人っ子的にのんびり育ったらしい。実家の前が書店だったので本屋に入り浸り、立ち読み三昧の少年時代を送っています。友達の多くは私を本屋の子だと思ってたらしいです。
コンピュータとの第1種接近遭遇は小学校6年のとき、父親が買ってきたL-kit16なるボードコンピュータ。ダンプリストを打ち込んで8 セグメントLEDが光るのを見て喜ぶ程度で「コンピュータ」としては理解していませんでした。第2種接近遭遇は中学校2年のとき、やはり父親が買ってきたSHARPのポケットコンピュータ(PC-1210)。今度はBASICを理解しプログラミング初体験でした。
しかし、すぐ飽き足らなくなり、次に進んだのはプログラミングの書籍でした。コンピュータ雑誌(ASCII, I/O, マイコン、RAM)やPascal入門、Lispや人工知能の本を読み漁りました。書籍の多くは立ち読みでしたから、今でもお世話になった本屋さんには足を向けて寝られません。ただ、高校時代は漫画やアニメ、SFにはまっていた時期でもあり、高校の友人は私がコンピュータ好きだったことは知らなかったかもしれません。プログラミング言語に興味を持ったのもこの頃です。おぼろげな記憶ではこの頃すでに自分のプログラミング言語を作ろうと思っていたように思います。文法も機能も何も決まってないのに、名前だけは先に決めて。当時から形から入るタイプだったのかも。
高校時代は数学が苦手でした。今でも十分苦手ですけど。一度、数学の試験で学年でだんとつでビリだったことがあります。得意科目は国語と英語、志望は工学部情報工学科という変な理系学生でした。
大学は情報系でした。今までは触れなかったUNIXや書籍の中でしか見たことがなかったソフトウェアや言語などに直接触れる経験は貴重でした。やっと知識に経験が追いついてきたという。また、高校時代に読んだ本の著者の授業を受けられたのも名誉なことでした。難しかったですけど。
大学在学中に2年間休学してキリスト教の宣教師として奉仕しました。一緒に働く同僚や上司の多くがアメリカ人だったので、この頃英語を覚えました。英語は今でも役に立っています。また、異文化や人によって異なる考えについての理解が深まったのもこの頃だと思います。また、自分自身を含めて人間を見つめる機会でもありました。
私がクリスチャンであることはオープンソースの動機にも関係していると思います。私のオープンソースへの動機と情熱の源は愛です。愛と言っても、恋愛の愛じゃなくて、もっと一般的なものです。それは自分自身を楽しませたいという自己愛と、人類にすばらしいものを提供したいという人類愛の両方が入り交じっています。でも、利己的な愛の方がちょっと割合が高いかな。
まとめると、今の「Rubyの作者」としての私の形成した原則はおお むね
- 父親の(買ったおもちゃの)影響は大きい
- 経験よりも知識と想像力で勝負
- 機械よりも人間が重要
- OSSの動機は「愛」
というようなことではないかと思います。
7) 関連する質問からの抜粋
by bluedwarf
まつもとさん自身の経験から、今未来のおたくな高校生に向けてなにか伝えておきたいアドバイスや教訓などをはありませんか?
matz:
今の若い人たちは恵まれています。計算機パワーは潤沢でしかも簡単に入手できるし(娘の小学校にパソコン室なんてのがあってびっくりしました)、情報もインターネットですぐに最新のものが入手できます。こういう時代に育つ人は前時代の遺物のような私たちとは違う育ち方をするのかもしれません。
しかし、逆に恵まれているがゆえに逆境をバネにする「勢い」ってのには欠けるのかもしれません。また、出来合いのプログラムが豊富なために自分でプログラミングする楽しみを知らない人も多いかも。でも、スラッシュドットの読者は違うかな。
それから、高校までの学生時代には「全方位よくできる人」が期待されます。脳味噌から数学を理解する能力が欠落していた私はそういう周囲の期待には応えられませんでした。しかし、実際に世の中に出てみると成功している人ってのはどこかしら「いびつ」な人のような気がします。ひとつのことだけ得意な人、人格的になにか欠けた人、なにかすごく苦手なことがある人。
いびつであること、マイナーであることを恐れていてはいけない、たとえ周囲は理解してくれなくても。それが私からの教訓です。
8) ソフトウェア開発プロセスに対する考え方
by mumumu
まつもとさんは「ソフトウェアを書くときに仕様書を書かない」という話をどこかで読んだことがあります。普段から煩悩、常識というものにとらわれまくりの自分にとってこれは非常に興味深い事実でした。
さて、開発者をデスマーチに追い込みがちな旧来の開発手法に対してXP等の新たなパラダイムが提案され、また実践が進んでいる昨今ですが、まつもとさんにとって理想のソフトウェア開発プロセスとはどのようなものでしょうか?
また、Rubyの開発に際して、プロジェクト管理をこうやって切り盛りしているよという裏話があれば是非教えてください。
matz:
「仕様書を書かない」なんて書いたかな。
でも、私は仕様を考えながら試行錯誤的にプログラムを書くことが多いので「仕様書はプログラムそのもので、バグまで記述してある」というケースはけっこうあります。ただ、プログラムには意図は記述されていませんから、意図を表現するためのテストプログラムを用意して(これも仕様の考察が進むたび変化する)、プログラムをコンパイルしてはテストプログラムを実行するというスタイルをここ10年以上行ってきました。XPのテストファーストプログラミングみたいですが、XPほど徹底してもいないし(テストを先に書いたりまではしないし)、網羅的でもないんで、私のは「えせXP」ですね。いつまでたってもテストファーストにもペアプログラミングにも踏み切れないし。
そういうこともあるんで、私はXPをはじめとするアジャイルプログラミングには好意的です。アジャイル陣営にはDave Thomas, Andy Hunt, Marin Fowler, Ward Cunningham, Alistair Cockburnなど個人的に面識のある人が多いってのもあります。
Rubyのプロジェクト管理はあんまりうまくいっているかどうか自信がありません。私はすぐにものごとを忘れちゃうし、Rubyの全容を把握するのは大変でバグが入り込んじゃうこともたびたびだし。
でも、CVSを中心にしているので間違いがあってもすぐやり直せる点と、議論のほとんどがメーリングリストで行われているので、私が忘れても誰かが覚えてるし、アーカイブの検索も行える点とでなんとか運営できています。つまりはオープンであることが失敗しない秘訣ということでしょうか。
オープンソースプロジェクトが成功するには、という話をすると、そのために必要なことは「継続すること」で、その秘訣はふたつのことを維持することです。つまり「やる気」と「生活」です。やる気がなくなればプロジェクトは停滞してしまうし、停滞したプロジェクトはほぼ間違いなく衰退します。また、生活が維持できなければ時間を喰うオープンソースプロジェクトどころじゃなくなってプロジェクトは停滞します(以下同文)。私はたまたまうまく行ってますが、このふたつを継続的に維持できる一般的で良い方法は私にもまだ分かりません。
9) 学んだこと、予想外のできごと
by Anonymous Coward
ACで本当に申し訳ないですが。
- Ruby に取り組んで学んだことを三つあげてもらえますか?
内容に制限はなく技術的なものでも倫理的なもの、抽象的なものでも構いません。 - Ruby に取り組んできたこの10年で、Rubyに起こったもっとも予想外のできごとを三つあげていただけますか?
matz:
私が今このインタビューでえらそうに語っていることのほとんどはRubyの開発を通じて学んだことです。あえて三つ選ぶならば
- プログラミング言語は人間のためにあるコンピュータとのインタフェースである
- インタフェースの設計は自分の完成を信じてデザインしてよい。
ただし、フィードバックはいつも必要だ。 - スクリプト言語(インタプリタ言語)がプログラミングニーズの90%以上をカバーできる日は遠くない。
くらいかな。
一方、予想外のことは
- Rubyがこんなに広い分野に使われるようになったこと
気象解析やバイオインフォマティクスでRubyが使われるようになるとは思いませんでした。先日Webでクマムシについて調べていたのですが、ページの下のほうにBioRubyのバナーが張ってあって驚愕しました。 - Rubyがこんなに広い地域で使われるようになったこと
日本を越えて、南北アメリカ、ヨーロッパ、ロシアなどなど本当に世界中でRubyは使われています。またRubyに関する集会も世界中で開かれています。また、Rubyの作者であるという理由で海外のイベントに招待されることさえあります。これは10年前には想像もできなかったことです。 - Rubyで生活できるようになったこと
私は今Rubyを開発しているということで給料をもらっています。「タダのソフト」を開発してるのに人並みに生活できて家族を養っていけるというのは、これまた予想外です。
とか。
10) トレードオフ
by taro-k
今後、既存のRubyの言語仕様で対応しきれないパラダイム/スタイルが主流となった時、どこまで言語仕様を拡張して対応していきますか?言語仕様の複雑化を選ぶか、流行遅れの言語となることを選ぶか、というところに非常に興味があります。
# とある肥大化してしまった言語の愛好者として。
matz:
先程も述べた通り、ほとんどの人にとって言語っていうのは単なる道具なんで、あらゆるパラダイムやスタイルに対応しようという試みは単純にナンセンスです。できるならやればいいけど、無理してまでやることじゃない。私は新しいプログラミングパラダイムの将来について悲観的なので、Rubyは広く使われているような近い将来にそのような「Rubyで対応しきれないパラダイム/スタイルが主流になる」とは思っていないのですが、仮にそのような事態になったとしても、それはRubyでない別の言語がカバーすべきではないかと考えます。そのような時代にはRubyは流行遅れになるとは思いますが、たぶんそうなっても私は(まだ生きているならば)Linux 20.4.2 あたりでRubyを使っているでしょう。私は今Rubyを使ってハッピーなので、そのような時代にあっても今Rubyを使っているようなタスクを解決するためにはRubyでハッピーなのではないかと思うのです。
Rubyが将来変化するとしたら(かならず変化すると思いますが)、それは新しいパラダイムに対応するためではなく、今まで気がついていなかった人間(プログラマ)の精神的特質をサポートするためでしょう。そしてその変化はゆっくりとしたものではないかと思います。Rubyは人間のためにあり、そして人間は機械に比べてゆっくりとしか変化しないからです。1950年代に登場した言語(FORTRAN, COBOL,Lisp)が人気は衰えつつも現役であることを考えると、言語の変化のスピードが分かるでしょう。
さて、言語の肥大化は言語設計者にとって非常に気をつけなければならない点です。世の中にはかつて数千とも数万とも言われる数のプログラミング言語が存在し、今も誕生し続けていますが、そのほとんどは現在生き残っていません。その最大の理由は「ユーザが少なく生き残るのに必要な人気を獲得できなかったので忘れ去られた」というものです。人気の獲得という最初の難関を乗り越えた言語が陥る罠が肥大化です。言語はあらゆる局面で使われるため、いろいろな局面に便利な機能をどんどん取り込んでいくと次第にその仕様が大きくなっていきます。そして肥大化を続けた言語はいつしか自らの重さで重力崩壊してブラックホールになり周囲のものすべてを飲み込むようになります(笑)。そのような言語は実装が難しく、使いこなすのが難しく、結局人気を失う危険性が高いのです。今、Perl6がその道を歩んでいるのではないかと心配です。Rubyは決してその道はたどらないようにしようと決心しています。
11) Ruby以外に好きな言語
by himuro
Rubyの他に好きな言語はありますか?もしあれば、どういう点が好きですか?
私は数ある言語の中で、Rubyがダントツ一番好きです。でも言語おたくというわけではないので、もしかして Ruby 並(以上?) に面白い言語があっても私が知らないだけかもしれません。ぜひ言語おたくとしての意見をお聞きしたいです。
matz:
言語オタクとしてのあるべき答えは「私はすべてのプログラミング言語を愛している」です。しかし、「より好きな言語」はLispの影響を受けたものです。直接Lispの血統であるCommonLisp, Scheme, LOGOは当然として、SmalltalkやMLなどにも影響を感じます。理由はおそらく「少ないルールによって広い範囲をカバーする」というところのような気がします。
12) 普及のために
by Anonymous Coward
Ruby の利用者を増やすために何が必要だとお考えですか?
matz:
この質問をした人をはじめ多くの人が普及は善であると考えているようです。「普及のためにはWindows対応を強化すべき」とか「cpam.pm相当が必要」とか、親切に提言してくれる人はたくさんいます。しかし、考えてみればRubyはオープンソースソフトウェアですからたとえ世界中のプログラマがRubyを利用しても(そして実際に利用していますが)、私にはどれだけメリットがあるのでしょうか。少なくとも経済的にはゼロです。
みなさんの中でRubyを使っている人、学んでいる人、知っている人など多くいると思いますが、その中でRubyを作ったことに対して私に報酬を払った人はいないでしょう。私の本を買ってくれた人は私に印税をもたらしてくれましたが、それはRubyを作ったことにではなく、Rubyの解説書を書いたことに対する対価だと思います。別にRubyを作った人でなくても本は書けるし、実際にそうしている人もたくさんいますよね。
それでもRubyを作るのはそれが楽しいからです。みなさんが「Ruby は良いものだからもっと普及した方がいい」と考えてくださることには本当に感謝します。ありがたいことです。普及して嬉しくないはずがありませんし、普及のための協力の申し出は喜んで受けます。でも、だからといって私に楽しくないことを押しつけるのは勘弁してください。オープンソースソフトウェアにマーケティングは必要ありません。私は期待以上のたくさんのユーザに恵まれています。普及は良いものを作った結果、副作用で十分です。
Windows対応については多くの協力者が大変な苦労をしてメンテナンスしてくれています。もしもっとたくさんの人が情報や労力などを提供してくださればもっとよくなるでしょうが、ほっておいてもよくなることはないでしょう。Rubyが成功した理由の一部は、Ruby のような言語になにが必要か私が分かっていたことにあると思います。私はWindows について知識がないので、Windowsユーザにとって正しい判断ができるとは思えません。より良いWindows対応のためには、どのようなものが欲しいか、どのようなWindow対応が「良い」のかきちんと定義できる人たちの積極的な参画によって実現できるのではないか、私は思います。
まつもと ゆきひろ /:|)
p.s.
ああ、日本語の文章は楽だ。
成功ということで (スコア:4, すばらしい洞察)
Re:成功ということで (スコア:3, 興味深い)
日本レコード協会会長かつエイベックス株式会社代表取締役会長 兼
社長の依田 巽 氏の名前があがらないかなぁ?盛り上がる事必死
ですぜ。
という話はさておいて、だ。個人的には次の方にインタビューを
していただけたら面白いのではないかと思います。
ソニー(株)の土井利忠氏。
CDの規格策定に際して多大な貢献をし、ワークステーションNEWSの
プロジェクトを成功させ、いまはロボットと戯れる?これぐらい
面白い事をやってきたひとはなかなかいないでしょう。
もちろんお約束の精神世界の話もたっぷりとお願いしたい。
困難かな、とも思いますが是非に。
--- Lcs(http://lcs.myminicity.com/ [myminicity.com])
Re:成功ということで (スコア:1)
マックセクションで原田社長にインタビュー。
Re:成功ということで (スコア:1, おもしろおかしい)
高木浩光 vs jbeef
もきぼん。
傲慢万歳 (スコア:2, 興味深い)
いつだったかテレビ番組で,どこかの料理人が,客の欲しがるものを出すのではなく,自分が薦めるものを提供するのだ,と言っていて,すばらしいと思ったものの,後ろめたい気持ちもあり,声を大にして言えませんでした。RubyやPerlやPythonや,その他いろいろあるにもかかわらず,「自分好みのスクリプト言語を作ろう」という気持ちが湧いてきました。とりあえず正規表現エンジンあたりから取り組んでみようかと思います。
人はなぜ車輪の再発明をするのか。
「それが僕には楽しかったからさ。」
# なんか勘違いしているような気がしないでもないが,まぁいいか。
文字列連結 (スコア:2, 興味深い)
harako氏がなぜ残念に思うのか聞いてみたいところ。
Re:文字列連結 (スコア:2, 興味深い)
argonさんでなくても構わないのですが、意味が理解できている方に解説を願えませんでしょうか…。
#煽りでもなんでもなく、本当に分からないので…。
Re:文字列連結 (スコア:1)
"*" は、Ada で使われてたような気がします。
ですので、割と一般的な記号だと考えられます。
Plan 9 の rc や、ML 等は、"^" を使っています。
可換性とか考える必要が無さそうなので、これは良いんじゃないかと。
最も良いのは、(string-append "hello " "world" "...")
でしょう。見たままだし。
# って、解説になってない(汗)。
Re:文字列連結 (スコア:1, 参考になる)
どうも可換群の演算子は+と書くことが一般的 [nagaokaut.ac.jp]だから、という主張の様子。
実数全体から0を除いた集合って、小学校で習うような通常の積法に関して群だよね。
しかも可換。
これも通常+で書く?書かないよね?
確かに代数学やってる人間にとっては、加法群って常識的な定義なのかもしれない。
けど、なんつーか説明時の利便性のために導入された、適当なものにしか見えないんだけど。>加法群
Re:文字列連結 (スコア:2, 興味深い)
a = a + 1
に比べれば、可換でないのに"+"を使う方のはなんでもない。
Re:文字列連結 (スコア:2, 参考になる)
それはともかく、演算という目で見ると文字列連結には終端処理が入るためそもそも勝手が違ってきます。数値として見た場合、文字列は終端を含めたものが群になるべきではないかと思いますので、片方の終端を削って全体を繋げるという演算は数学には存在しないのではないかと考えてしまうのです。(数学エキスパートではないので、もし存在してましたら失礼!)つまり数学として見る事自体が不自然ではないかと。
>それが気になる人は、代入演算に"="を使う方がよほど気持ち悪いと思うのだが。
↑そしてまさにこれです。私が最初プログラミングに出会ったとき(最初はBASICでした、その後は色々と…)、(=)が左辺と右辺を等価にみなすための意味ではなく、単なる代入を意味する記号として使われているのに違和感を覚えると同時に「ああ、マイコンではこう書くんだ。」(当時パソコンという呼び方はしてなかった(笑))とむしろ新鮮でした。
なので文字列連結も、数値演算とは別に言葉として「加える」という意味合いで(+)が使われていると普通に連想していたわけです。少なくともこの連想では「掛ける」を使うのが不自然に見えても仕方がないとお考えください。
結局のところ、ソース上の演算子って演算目的の記号と特定の動作を表す記号のダブルミーニングなんですよね。Cだとさらにポインターの意味も加わったりしますし。それは時たま目やコンパイラを迷わせますが、まあ慣れの問題で良いのではないかな~。…って、それだと(*)でもいいやんってなっちゃいますよね。でもそれだと英語で読む時に違和感があるんだよー。addだと文字列の場合でもそのままで読めるんで。
#だから私の感性ではって話ですので、論陣張らないようにお願いしますね…。
Re:文字列連結 (スコア:1)
少し違った観点から見ても(本質的にはあまり違わないような気もするけど)、文字列の連結は結合律 (a*b)*c = a*(b*c) を満たすので、 - や / よりは * のほうがいい理由にはなるでしょう。
ぼくは、 Visual Basic の&はけっこういいと思います。 + と比べても特に悪いとは思わない、という意味ですが。 Perl の . よりも&のほうが多少好きです。
でも、 #279123 [srad.jp] の「Perl の . は \cdot みたいだ」という意見を聞いて、ちょっと印象が変わったかもしれません。
ML では文字列の連結の演算子は ^ だ、と書いておくと喜ぶ人がいるかもしれないので、一応書いておきます :)
鵜呑みにしてみる?
感謝 (スコア:1)
激しく感動&勇気づけられました。同種の友人にも伝えておきます^^;
それとクリスチャンであることは初めて知りました。「愛」ですか...私の場合は「仁」かな?
// Give me chocolates!
Re:感謝 (スコア:1, 興味深い)
「アレゲ」の定義を見たような気がします。
Re:感謝 (スコア:1)
現代日本語においてもニュアンスを伝えるにはこの語の方がしっくり来ますね。コンパクトでないので運用は難しいですが。
ありがとうございます (スコア:1)
私はPerl以外にもVBやAppleScriptなどを使います。
古くはPB-100BASICやN88BASIC、HyperCard、触っただけのCなど多くの言語を使ってきました。だから新たな言語を覚えるのに苦を感じることはありません。
自身の質問でPerlを引き合いに出したのは少しミスをしたかなと感じます。
まつもとさんの回答で十分な”解凍”を得ることはできませんでしたが、今回の回答で「とりあえず何度でもぶつかって砕けてみよう」と思いました。まずはPerlをRubyで置き換える”遊び”からはじめてみようかな。
まつもとさんの素敵な言葉に感謝です。
-- ラテール部参加者募集中
あれれ? (スコア:1)
Re:あれれ? (スコア:1)
こういうのってどこに言えばいいんだ???
Re:あれれ? (スコア:1)
BGM♪ Blind Guardian / Time Stands Still (At the Iron Hill)
Re:あれれ? (スコア:1)
しゃあないんでたれこむとしよう。
Re:あれれ? (スコア:1)
# おせっかいかと思いつつ(アセ。
BGM♪ Blind Guardian / Blood Tears
Re:あれれ? (スコア:1)
Re:あれれ? (スコア:1)
harakoさんならびにargonさんには大変失礼をいたしました。申し訳ありません。
Re:あれれ? (スコア:1)
まつもとさん、お忙しい中お答えいただきありがとうございました。
やさしい独裁者を説得できなかったのですから、
文字列の演算子の話をだしたのは不適切だったようです。
typoの指摘 (スコア:1, すばらしい洞察)
while () {
@pw = split(":", $_);
print $pw[0], "=", $pw[4], "\n";
}
インタビュー超面白かったです。宣教師の下りを知らなかったので、発見でした。
concat → open (スコア:1)
手元の5.6.1ではundefined subroutineと言われました。
Pythonだと
ですかね... と書いてプレビューしたら、open (←ほんとはASCIIね) がconcatに化けました (^^;
Slashcodeの問題でしょうか。
Re:typoの指摘 (スコア:1)
…誰の責任?
Re:typoの指摘 (スコア:1)
編集段階でミスがありました。まつもと氏からいただいた回答ではちゃんと閉じていました。
Re:typoの指摘 (スコア:1)
内のコードですが、 2行目ですが、tietewさんの御指摘 [srad.jp]通り
while(<PWF>) {
だと思います。
こちらの方も御確認/御修正の程よろしくお願いします!
# プレビューの時気がついたのですが、
# 不等号は&GT; &LT;(本当は半角Asciiです)
# と大文字で入れないとうまく入力出来ませんでした。
# 不思議なことに、大文字表記と小文字表記で挙動が違いました。
Re:typoの指摘 (スコア:1)
ご指摘の通り、小文字で書くとうまく実体参照にならず、直したつもりで直っていない状態でした。実体参照は本来ケース・センシティブなので、小文字でないと解釈できないWWWブラウザがある可能性はありますが……。
Re:typoの指摘 (スコア:1)
このスラッシュコードの挙動は不可解ですね。
(大文字の実体参照をうまく扱えないのなら分かるのですが)
バグでしょうか...?
今度コードを読んでみます。
# typo fixes, お疲れ様でした
Re:typoの指摘 (スコア:1)
ただ、HTMLのソースを見たら
<PWF>
となっているんで、
アクシデントで、意図と反してタグとして扱われて抜けているだけだろう、と判断した次第でした。
あと、不等号の大文字表記・小文字表記のTIPS(?)も気づいたので
付記してみました。
インタビュー御苦労さま (スコア:1)
という点は開発に携わる者としてはとても嬉しいな。
# 編集の方にも感謝。でも俺はfjじゃなくてyukifjだぜぃ(´ー`)y-~~
This cookie has a scrap of paper inside. It reads:
If you can't learn to do it well, learn to enjoy.
Re:インタビュー御苦労さま (スコア:1)
yukifjさんには大変失礼をいたしました。申し訳ありません。
十分に慣れた人が最高のパワーを発揮できる道具 (スコア:1)
Perlのオブジェクト指向をぼちぼち勉強していて、「簡単なことは簡単に、難しいことは可能に」のスローガンの裏返しで、print "Hello, World!\n"; の頃に比べると随分坂がきつくなってきたなぁとか思っていますが(なんてこの場で書くと恥ずかしいのだけれど)、お答えを読んでいて、Rubyは最初の方が坂がきついのかな、とか勝手な感想を抱いたりしています。
ほとんどCGIを書くためにPerlを扱っている僕が、Rubyといえばまっさきに思いつくのがtDiary [tdiary.org]です。僕の環境では.htaccessが使えないなどの制限があって、そのままでは使えないのですが、Rubyで書いてあるためどこをどういじっていいかわからずいいCGIなのにと残念に思ったことが大きいからです。せっかくなのでこれを機会にRubyもやってみようかな、とか思う今日この頃です。
まさか選ばれると思ってなかったので感激のあまり(笑)、文章が支離滅裂ですが、とにかくありがとうございました。
オフトピ creat (スコア:1)
> ・・・・
> Dr. Dennis Ritchie もC言語の設計で creat の spell を挙げていますので
> ・・・・
Ritchie ではなくて、Ken Thompson ですよね。
ついでに補足すると (スコア:1)
C言語の設計に対する後悔ではなく、UNIXの設計に対する後悔ではないかと。原典でなくて申し訳ないですが、 ここ [computer.org] の"CREATIVITY AND SOFTWARE DEVELOPMENT"のUNIXのところに記述があります。
Re:ついでに補足すると (スコア:1)
御指摘感謝。
肥大化を心配していたので (スコア:1)
どんどん肥大化,複雑化してしまって残念に思うってこと…ありますよね. Rubyについても私は非常に愛用しているし,人気も高くなってきてるので その点はちょっと心配だったのですが,ちゃんと気がついて
いらっしゃることがわかって安心しました.
自分も(プログラムじゃないんだけど)モノを作る職業にいる身として
「もっと人に気に入られるためには機能(何か特徴)を追加すればよい」と安易に考えるんじゃなくて 本当に良いとは何かについて真剣に
考えるべきだよなぁと改めて思います.
ちなみに…今,肥大化について結構心配なのは w3mとかvimとか…かなぁ. まぁ自分でmakeする時に機能が選べるのは救いなんだけど.
あと…Rubyの肥大化はたしかに歓迎できないけど…標準ライブラリは
もうちょっと豪華になってもいいんじゃないかなぁと(ちょっと矛盾してるかもな意見?)
Re:尻切れトンボ (スコア:1)
あれ?と思ってリロードしたら、今度は全部表示されました。
当方ライトモード、Netscape7.0、win2kでござる。
#長すぎるとたまにこうなる、、、とか?
Re:尻切れトンボ (スコア:1)
そのつどリロードして切り抜けましたが。
Re:typo (スコア:1)
数字の右下にドットがついていたのではないでしょうか。
Re:typo (スコア:1, 興味深い)
"7-segment LED" [google.com]…約9,980件
"8-segment LED" [google.com]…約696件
"9-segment LED" [google.com]…約193件
Re:ローカル変数のスコープ (スコア:1)
a=i
end
# error
p a
↑これはエラーになるけど、
a=1
10.times do |i|
a=i
end
# 10が出力される
p a
こっちではaの値が上書きされてしまう、
という問題では?
Re:ローカル変数のスコープ (スコア:4, 参考になる)
ブロックローカル変数の問題については、 ruby-dev ML [nagaokaut.ac.jp]の、
[ruby-dev:17276] blocks and local variables [nagaokaut.ac.jp]
辺りの議論が参考になると思われます。
# 読むのが大変ですが(^^;
ちなみにまつもとゆきひろさん本人が、 [ruby-dev:17352] [nagaokaut.ac.jp] で、
という発言をされています。
また後に [ruby-list:36417] [nagaokaut.ac.jp] のような案も出ています。
受身の意味だと思うんですが…… (スコア:1)
「(私は)AはBであると思います。」
という意味で、
「AはBであると思われます。」
と言うのは一般的ではないんでしょうか?
Re:自尊(オフトピック) (スコア:1)
"Quidquid latine dictum sit, altum videtur."
Re:ローカル変数のスコープ (スコア:1)
Re:割り算 (スコア:1)
Re:割り算 (スコア:1)
で、元のコメントに話を戻しますと、Rubyには型が無いわけではなく、「変数に型宣言が不要」というだけで、値には型があります。なので3.0は実数、3は整数で別物と考えられますし、そうすれば不自然な感じはしないんじゃないかと思います。