Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Matzにっき(2007-01-12)
[go: Go Back, main page]

«前の日記(2007-01-11) 最新 次の日記(2007-01-13)» 編集

Matzにっき

<< 2007/01/ 1 1. The Ruby Virtual Machine
2. matzrubyブランチ on Subversion
3. 大当たり
2 1. 一族集合
2. リクルート エンジニア適職フェア
3. フニクリフニクラ
4. Groovy 1.0 is there
3 1. nkf-utf8
4 1. Headius: New JRuby Compiler: Progress Updates
2. ユメのチカラ: マルチプロセッサ向けソフトウェアパラダイムとは?
3. Class Variables
5 1. asahi.com:米共和党、ロムニー氏が大統領選に始動
2. 絶版書籍、ネット閲覧可能に・政府が著作権法改正へ
3. Ruby declared TIOBE's Programming Language of the Year 2006!
4. JJ Club
6 1. スケート
2. 年賀状問題
3. るびま特別編
4. 著作権保護期間の延長問題を考える国民会議 - thinkcopyright.org | 保護期間「延長派」「慎重派」それぞれのワケ
5. eigenclass.org Happy 2007! Ruby mini-contest
6. Origin of Programming Language Names
7. 第4回 関数型言語とオブジェクト指向,およびOCamlの「O」について
7 1. かぜひき
8 1. 冬休み最終日
2. まつもとの弱点
9 1. 仕事初め
2. Ruby に今一番ほしいもの
3. Ruminations of a Programmer: Why I should learn Lisp
4. プログラミング2.0
10 1. セキュリティキャンプ・キャラバン島根
2. Ruby on Rails トレーニングプログラム
3. 打ち合わせ
4. 懇親会
5. あるJava使いの場合 - Javaを学ぶ価値
6. mapとreduce、あるいはマクロ不存在の理由
11 1. 日経Linux 2007年3月号
2. 日経ソフトウエア2007年1月号打ち上げ
3. [言語」XML and J2EE: Commodity Skills
4. jijixi's diary - Ruby の文法的欠陥
12 1. 丸山先生レクチャーシリーズ in 東京 2006-2007
2. 静的/動的言語
3. 2006年「Ruby on Rails」が愛された理由
4. local variables new scoping rule
13 1. 日経Linux 2007年3月号
2. On Ruby: Will rubinius Be An Acceptable Lisp
3. ホワイの(感動的)Rubyガイド
14 1. セミナリー補習
15 1. サン、Fortranに代わる新プログラミング言語をオープンソースに - ZDNet Japan
2. ITmedia エンタープライズ:まつもとゆきひろ−第3回:僕の存在価値はそこにある
3. InfoQ: Ruby Version of Refactoring In the Works
4. Groklaw - BSD - The Dark Horse of Open Source, by Brendan Scott, OS Law
16 1. クレイジーjavac? - 'Kitchen Sink Language'で仕様の試食を楽しもう
2. Steve Jobs はなぜ説得力があるのか
3. IBM 境界を越える: Ajax on Rails - Japan
4. IA32(x86)JITアセンブラ Xbyak
5. スライド
17 1. 第6回 OCamlの「モジュール・システム」
2. 出張
3. 人材募集
18 1. グーグルのクリス・ディボナ氏:「われわれはプロプライエタリソフトも重視している」 - CNET Japan
19 1. スターティア、独自CMSを「Ruby on Rails」に対応 開発を効率化
2. receiver, name, owner of Method object
20 1. リクルート エンジニア適職フェア 「理想のソフトウェア開発の現場とは?」
2. 『我らクレイジー☆エンジニア主義
21 1. バプテスマ会
22 1. steve dekorte - projects - open source - skipdb
2. なぜ実現しないネット放送--「品質論」唱える既得権益者の本音
3. Ruby Programming - 向Ruby之父学程設計
4. 「賞味期限切れ」のソフトよさらば。ようこそSugarCRMへ - 日本のITは世界を制す!?
5. Fork JavaScript
23 1. OSDLとFSGが合併、Linux Foundationを設立
2. Dynamic Draw
24 1. ALSA、音出ない
2. Lisp:S式の理由
3. Asoby: Aspect-Oriented Programming in Ruby - New Playground for Rubyists 2.0
25 1. ソフトウェア ジャパン2007−社会を変えるイノベーション−
2. mixiのようなSNS開発も夢じゃない?---ニーズウェルがRubyのトレーニング:ITpro
26 1. 帰宅
2. スタイラス紛失
3. 新年会
4. SRFI 89: Optional and named parameters
5. O'Reilly Open Source Convention 2007 July 23-27, 2007 Portland, Oregon
27 1. 画像ビューア絵箱@nekobooks
2. ウェブキャリアでWebエンジニアとしてのキャリアを磨こう
3. セキュリティキャンプ・キャラバン島根
28 1. リアホナ2007年2月号
29 1. 中身の見える言語
2. XML.com: What's New in Prototype 1.5?
30 1. forums.ps2dev.org :: View topic - Ruby on PSP
2. Practical Ruby for System Administration: Books: AndrBen Hamou
3. Open Tech Press | FOSSの理想郷ブラジルにイメージ失墜の危機
31 1. OSS普及には新しい価値観をもった人々がリーダーシップを--日本OSS推進フォーラム
2. Effective Debugging using Dave Thomas' ”Programming Ruby” - evolutionNext WebLog
3. 「松本零士氏 クリエーターの思い」著作権攻防
4. プログラマーの常識を学ぶ前に
5. xruby - Google Code
>>
Dr.Web 予測するアンチウイルス 持ち込み PC 対策でお悩みの方にオススメです。
ウイルス・スパイウェア検査・駆除 用ツール Dr.WEB CureIt! を無償配布中!

2007-01-12 [長年日記]

NEW!_ [Ruby] 丸山先生レクチャーシリーズ in 東京 2006-2007

半蔵門から大森へ移動。

レクチャーシリーズ、今回のテーマは「web2.0 -- 新しい技術と新しいビジネスモデル」 なんだそうだが、Rubyの話はアウェイな気がしないでもない。

丸山先生の話は盛り沢山であった。時間内に終わるかな、と心配したが、 案の定、スライドを消化しきれてなかった。 ま、しょうがない。Web2.0のアウトラインを理解するには良かったのではないかと。

次が私の話。「動的言語の世界」と題して、 Rubyのような言語がなぜ注目されているか、というような話。 最近の講演(日経BP次世代フォーラム、福岡)とややかぶる。

次がマイクロソフトの安藤さんによる「マイクロソフト技術で体現するWeb 2.0「Windows Live」〜ソフトウェア+サービスの目指すところ〜」。 要するにVistaのガジェットでなにができるか、どう作るかと言う話。 それほど目新しい話ではなかった。 注目すべき発言は「画期的なのはそのインストールベース(数)」というもの。 非常にマイクロソフト的であった(苦笑)。

次は首藤さんの「peer-to-peer の世界」。 ウタゴエCTOになってからははじめて会うのかな。 Wiiリモコンを使ってプレゼンしようとしていたようだが、 センサとの距離や蛍光燈の光などに負けて断念したようだ。

この話興味があったのだが、飛行機の時間の関係で途中で抜けないといけなかった。 最初の導入しか聞けなかったのが心残り。

コンポーネントスクエアのページから発表資料がダウンロードできる。

当日の感想リンク

NEW!_ [言語] 静的/動的言語

休憩時間に挨拶していただいた方と雑談していたのだが、 「動的言語の利点を持ちつつ、静的言語のように情報を与えてコンパイルすることで実行効率を実現できる言語(の組み合わせ)はありえないものか」というような質問を受ける。

プロトタイプは動的言語で作っておいて、 ライブラリやフレームワークとして切り出す時には、 コンパイルして効率の良いものにしたいという開発スタイルを考えておられるようだ。

RubyとかだとJavaに代表されるような静的言語とは プログラミングモデルからして違うから 単にちょいちょいと型情報を追加して、というわけには行きそうにもない。 最初から動的・静的のミックスを念頭に置いた言語が必要そうだ。

と、ここまで考えて気がついた。

それなんてLisp?

Lispなら基本は動的言語だし、柔軟さについては他の追随を許さない。 さらに型情報を負荷付加することもできるし、 多くの処理系ではコンパイラも用意されていて、 場合によっては通常のコンパイル型言語(Cとか)よりも速いことがある、そうだ。

ということで、 「Lispとかどうでしょうね」と答えたら、 その方は苦笑しておられた。

Lispの不人気は相当なものである

誤解(?)の根は深い。

NEW!_ [Ruby] 2006年「Ruby on Rails」が愛された理由

愛されてますねえ。NaClもちょっとだけ言及されてる。

NEW!_ [Ruby] local variables new scoping rule

Evan Phoenixがruby-talkでRubyConf 2003のスライドについて言及する。 すっかり忘れてたよ。

で、改めて考えてみると、これは悪くないアイディアかもしれない。 まあ、もともと自分のアイディアなんだけど。

まずは問題点から。

問題

現状のRubyでは、ブロックの中で初出のローカル変数の有効範囲は そのブロックの中に限定される。 これは無名関数のようにブロックが使われる時に その関数の中だけで有効なローカル変数が使えないと 非常に不自由だからだ。

しかし、一方、通常のループ的にブロックを使う場合、 値を持ち出すためにローカル変数に代入しても その変数が(そのままでは)ブロック外部には見えないため わざわざブロックの前まで戻ってあらかじめ代入しておく必要がある。

しかし、ブロック限定のローカル変数を使いたい局面は限定されており、 ハフマン圧縮的見地からは、より頻繁に使われる通常のローカル変数的使い方のために、 いちいちブロックの前に戻って宣言的代入が必須と言うのはめんどくさい。

解決法の提案

元々はローカル変数のスコープの昇格で解決することを考えていたのだけれど、 これは構文的に後ろに登場する情報が前の意味を変更するというのが 非常にRuby的でない(or 私の好みではない)気がしていて踏み切れなかった。 実装もそれなりに面倒なものしか思いつかなかったし。

しかし、Evanの指摘により、昇格法よりもさらに前に考えていた*1、 デフォルトはスコープローカル、明示的に指定した場合だけブロックローカル、 というものを採用する気になった。

具体的には

  • 通常の代入によって作られるローカル変数は(class,module,defが作る)スコープローカル変数
  • ブロックパラメータはブロックローカル
  • 以下のいずれか、または両方
    • ブロックパラメータの後ろに「;」を置き、そこに続けた変数はブロックローカル変数
    • 「:=」で代入した変数はブロックローカル変数

結局は3年前のエントリで 考察していた通りで、その時、あきらめた明示的なブロックローカル宣言を取り込んだものとなった。

英語圏の人のためには、このエントリをRCRにまとめた方がよいよなあ。 ちょっと面倒だなあ。

実装

一度心を決めたら話は難しくない。 丸山先生のお話を聞きながらハックしてたら30分でできてしまった。 変更はparse.yだけに限定されるので、きっとYARVでもそのまま動く、はず。

*1  より正確には、最初に昇格法を思いつき(1999年ごろ)、次にスコープローカル法に気持ちが動き(2003年)、さらにまた昇格法にしようかという気になり(2005年)、で、今回再びスコープローカル法にする気(2007年)になった、ということ。 とんでもない堂々巡りだなあ。

本日のツッコミ(全12件) [ツッコミを入れる]
_ oo (2007-01-18 17:18)

Rubyらしいという意味では、ブロックローカル変数名の先頭に何か記号をつけるというのもありではないですか?適当な記号がもう無いかなあ。

_ にゃんた (2007-01-18 17:42)

Lisp…個人的には大好きな言語なんですがねぇ。
いったいこの不人気の現況はどこにあるんでしょうね;

# >さらに型情報を負荷
# 付加ですかね?

_ まつもと (2007-01-18 17:50)

ooさん、
そうですね。prefixは最初に考えたんですが、どうやらもう記号は残ってなさそうです。

_ Jadawin (2007-01-19 11:56)

ml系は型推論付きlisp(ただし括弧は少ない)と言う話ですが、どうなんでしょ?

_ cut-sea (2007-01-19 12:24)

APLみたくRubyキーボードを作っちゃうとか(w

_ oo (2007-01-19 16:00)

「変数名の頭を見ればスコープがわかります」という看板を下ろすことになりますよね。2項演算子でしか使われていない記号だと使えるんじゃないですか?

_ まつもと (2007-01-19 16:23)

大きなくくりではスコープは同じローカル変数です。
さらにいえばこのスコープは今回新しく導入したわけでは
なくて、十年以上前からこうなんですけど。

_ 向井 (2007-01-19 16:44)

ML系の言語は、型推論をしてくれるので宣言しなくてもよいとはいえ静的型言語であって動的型ではありませんから、やっぱり勝手が違うんじゃないでしょうか。
基本的に動的型で、ところどころに型についての注釈を入れると、その情報をもとにチェックもしてくれるしコードが最適化される……なんてのはまさしく Lisp ですよね。

_ 凡人 (2007-01-20 00:11)

>Lisp…個人的には大好きな言語なんですがねぇ。
>いったいこの不人気の現況はどこにあるんでしょうね;
多分、()にあるのでは無いでしょうか?

_ それは (2007-01-20 03:43)

カッコ悪いってことか!

_ 凡人 (2007-01-20 09:10)

>カッコ悪いってことか!
というよりは、()をタイプする分、腕が疲れたり、()を確認する分、目が疲れる、という事ではないでしょか?

_ 凡人 (2007-01-20 12:01)

これは冗談ですが,lispには,"The dignity of parentheses",すなわち,"()の品格",というものが有るのでしょうか?
また、"The dignity of commas",すなわち,",の品格"というものは無いのでしょうか?

お名前:
E-mail:
コメント:
本日のリンク元
検索

«前の日記(2007-01-11) 最新 次の日記(2007-01-13)» 編集

RSS feed meter for http://www.rubyist.net/~matz/ Creative Commons License This work is licensed under a Creative Commons License.