!kiyoka.blog.2009_04 RSSPLAIN

Related pages: !kiyoka.blog.list
155155544444444444444320444555555555555555550555555555555555055555555555550555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555505555555555555555555555505555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555550555555555555555555555555555555555555555555555555555555555555555555055555555555555555555555555555555555555555555555555550555555555555555555555555555555555555550555555555555505555555555555555555555555555555555555505555555555555555555055555555505555555550555555555555555555505
1

kiyoka日記。NendoSekkaの開発や、最近思うことなど

5

最新10件!kiyoka.blog   過去記事一覧!kiyoka.blog.list

5

kiyoka.blog_header 

1

このブログを書いている人: 西山 清香(kiyoka) - twitter: @kiyokaEXT

5

5

 

5

 

4

kiyoka.2009_04_29[Nendo] Nendoのオープンソースライセンスを何にするか

4

NendoはRubyベースなので、選択肢は二つになりそう

4
Rubyと同じ(GPLとArtisticのデュアルライセンス)
4
修正BSD
4

 

4

どちらにするかは別プロジェクトからどちらのランセンスのコードを多く輸入する可能性があるかで考えてみる。

4

直感では、NendoのライブラリはRubyではなくNendo言語自身で書く量のほうが圧倒的に多いと思うので、Scheme等の処理系によく採用されている修正BSDの方がいいいかなと思う。

4

今のところ、修正BSDで公開されていて参考にしているScheme処理系。

4
Gauche
4
TinySchemeEXT
4
Chibi-SchemeEXT
4

 

4

NendoはSchemeではないので、そのまま取込むことはできないけど、少しの変更で再利用できるだろう。

4

 

3

COMMENT通りすがり

MITライセンス(二条項BSDライセンスと等価)はどうでしょ?

2

COMMENTkiyoka

コメントもらったのがきっかけで、yharaさんのブログエントリを見つけました。ありがとうございます。

MITライセンスも緩くていいかもですね。

  BiwaScheme ライセンスを決めよう

  http://mono.kmc.gr.jp/~yhara/d/?date=20090319

ただMITにしてしまうと、BSDライセンスのコードを取り込ませてもらう時にライセンスをMITにしてもいいかという確認とか、BSDのままと言われた場合は、それを記載するなどめんどくさそうなので、いま参考にしているソフトウェアにあわせて修正BSDのほうがいいかなと思っています。

おそらくこのままいけば修正BSDのソフトウェアだけでも事足りそうな気がしています。

そういえば、moshはMITライセンスだった。ひげぽんさんにもいろいろ意見をもらってこようかな。

0

comment (disabled)

4

4

 

4

 

5

kiyoka.2009_04_26[プログラミング][勉強] 屋外でプログラミング

5

最近家では10分も集中することができない(というか、子供が無いたらすぐになんとかしないといけないので、集中することを禁止されている)

5

というわけで、1週間に2時間くらいは開放させてもらって、プログラミングに集中するようにしてみた。

5

子供がいない時(Sumibi.orgを作っていた時)は土日に8時間くらいは集中する時間があったので、えらく使える時間は減ったなぁと思う。

5

 

5
 モスバーガーの屋外の席でこれからプログラミングするぞという時の写真
5
 誰も邪魔する人がいないので、集中を切らすことがない。
5
 3476297206_071532ea66_m
5

 

5

ちなみに、今週は集中する時間は取れなかった...

5

子供がいる家でも、プライベートの時間で勉強を続けている人もいるけど、どうやっているんだろう。

5

秘密が知りたい。

5

 

5

COMMENTもぎゃ

<内緒話>

会社を一時間残業したことにして、どこかの喫茶店でやって帰るのですよ。

</内緒話>

もっとも昨今の会社の状況だと、残業したと言う時点で不自然かもしれないですね..

5

COMMENTkiyoka

嘘はいけませんよー(笑)

幸い、ここ1年くらいは残業無しでやれているので仕事帰りに毎日1時間でどう?と嫁に打診したところ、あえなく却下されたのでした...

他には、1時間早く起きてというのもトライしたのですが、病気になりかけました(泣;)

睡眠時間には手をつけないほうがいいです。

まあ、結局のところ私も育児やっていて大変なのがわかっているから時間が取れないのは仕方ないとは思っています。

あとは、この状況がいつごろまで続くかが気になるところです。

2年後くらいには1日1時間くらい時間が取れるようになればいいなぁ。

5

COMMENTshiro

うちは最初の1年半くらいは無我夢中でよく覚えてないくらいなんですが、それから少しづつ楽になってきたかなあという感じです。

3歳過ぎからプレスクールにも行くようになり、身体的な負担はぐっと減りました。

子供によってかなり違うでしょうが、最初の2〜3年くらいは仕方ないんじゃないでしょうか。

あと、二人目以降は楽になるって聞きますね。

5

COMMENTkiyoka

やっぱり3歳くらいからが楽になる目安でしょうか。

あと2年ですね。がんばります。

それから、二人目は無いですねぇー。一人で十分です。親の勝手で、子供には申し訳ないんですが...

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_25[音楽] Jazzで一番美しいと思う曲

5

これ。久々に疲れた時に聴いてみた。美しすぎる。

5
 Miles Davisの『Blue In Green』という曲。
5
 
5

 

5

このアルバムに入っている。

5
 B000002ADT
5

もう20年以上聴いていることになるのか。

5

 

5

Bill Evansのアルバムに入っているトリオの演奏も美しい。

5
 B000SLI7NI ポートレイト・イン・ジャズ+1: ビル・エヴァンス, スコット・ラファロ, ポール・モチアン
5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_24[Nendo][Ruby] RSpecを学習中

5

この記事を読みながら概略をつかもうとしているところ

5
 Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)EXT
5

Nendoの開発では、一旦ラフなコードを書いては、もっと簡潔になるようにリファクタリングするという繰返して開発しているので、RSpecがうまく使えそう。

5

とういかテストコードをすでに沢山書いていて、それをちゃんと整理しないとなと思っていたところ。

5

RSpecのDSLは慣れると読みやすそう。

5

いつか仕事でも役に立ちそうなのでみっちりやっておこう。

5

RSpecはオンラインドキュメントが充実しているので、現時点ではこの本を買うまでもないかなと思っている。

5
 1934356379 The Rspec Book
5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_22[Nendo] Ruby標準ライブラリを使ってNendoのライブラリ実装をサボりまくりな話

5

私がRubyで書いているLisp方言、 Nendoの開発状況続き。

5

 

5

RubyでLisp処理系を作ると楽できる

5

例えば、sort関数。

5

仕様は『引数にリストを取って、ソート済みの新しいリストを返す』というもの。

5

 

5
 nendoが動いている様子。
5
$ ./nendo 
5
nendo> (sort '(1 5 6 3 4))
5
(1 3 4 5 6 )
5

 

5
 Rubyでは
5
$ irb
5
>> [1, 5, 6, 3, 4].sort
5
=> [1, 3, 4, 5, 6]
5

 

5

さて、nendoの実装はというと

5
  def getIFunc( name )
5
    case name
5
      .
5
      略
5
      .
5
    when 'sort'
5
      lambda {|arg|     arg.to_arr.sort.to_list }
5
      .
5
      略
5
      .
5
    end
5
  end
5

となっている。

5

引数argはconsセル用の 'Cellクラス' の連結リストで、一旦RubyのArrayに変換することでRuby標準のsort関数を使っている。

5

 

5

上の様に短く書けるのはCellクラスにイテレータを実装したことと、Arrayクラスにto_listメソッドを追加したため。

5
 Cellクラスのキモの部分
5
class Cell
5
  include Enumerable
5
5
  def initialize( car = Nil.new, cdr = Nil.new )
5
    @car = car
5
    @cdr = cdr
5
  end
5
  attr_accessor :car, :cdr
5
    .
5
    略
5
    .
5
  def each                    # Supporting iterator
5
    it = self
5
    while Nil != it.class
5
      yield it
5
      it = it.cdr
5
    end
5
  end
5
5
  def to_arr
5
    self.map {|x| x.car}
5
  end
5
end
5

 

5
 こちらは、動的にArrayクラスにto_listを追加するコード
5
class Array
5
  def to_list
5
    cells = self.map { |x|
5
      Cell.new( x )
5
    }
5
    ptr = cells.pop
5
    cells.reverse.each { |x|
5
      x.cdr = ptr
5
      ptr = x
5
    }
5
    return ptr
5
  end
5
end
5

 

5

sortだけでなくreverseとuniqも同じ

5
 一旦Arrayに変換するだけで良い関数はsortと同様に書ける
5
  def getIFunc( name )
5
    case name
5
      .
5
      .
5
    when 'sort'
5
      lambda {|arg|     arg.to_arr.sort.to_list }
5
    when 'reverse'
5
      lambda {|arg|     arg.to_arr.reverse.to_list }
5
    when 'uniq'
5
      lambda {|arg|     arg.to_arr.uniq.to_list }
5
      .
5
      .
5
    end
5
  end
5

 

5

sortに評価関数を指定したい場合は?

5

ウーン… どうしようかな…

5

うまくこの仕組みにのっかって行けるかどうか微妙。

5

その時はsort関数をnendoで実装しなおさないといけないなぁ。

5

reverseはそのままでいいかも。

5

 

0

comment (disabled)

5

 

5

 

5

 

5

 

5

 

5

5

 

5

 

5

kiyoka.2009_04_20[育児][創作心理] 単純作業中に脳味噌を働かせる方法

5

毎日家に帰ってから、洗いものをしたり、いろいろ仕事がある。育児中のパパとはみんなそういうものだろう。

5

そんな単純作業中も脳味噌をグルグルと有意義な目的に使う方法を書いてみたい。

5
 3459636512_919ae7e469_t
5

その方法は、常に頭から離れない問題で頭の中を一杯にしておくこと。

5

それがあれば脳味噌はグルグルと勝手に何時間も働き続ける。

5

要は燃料を与え続けるわけだ。

5

案外、それに気づいていなくて、漠然とした時間を過ごしている人は多いのではないかな。

5

いいアイデアはないかなーとか期待して無駄にグルグルとブレインパワーを消費してみたり。

5

一人ブレストよろしく漠然としたイメージから想起されるイメージを連鎖的にたどって行けは誰も思いつかない画期的なアイデアにたどり付けるんじゃないかとか。

5

自分もそんな事をよくやった。何時間も何時間も。

5

そんな方法で思いついたアイデアは結局、見栄えは良いけれども浮ついた、それでいて何も現実の問題を解決しないアイデアだったりする。

5

『必要は発明の母』という言葉に代表されるように何か問題にぶちあたってみないと必要な物はわからない。

5

今更ながら当たり前なようで、実際に実践するのは難しいので意識して習慣化できないとね。というお話でした。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_17[オープンソース]ソーシャル化するOSS開発者たちEXTを読んだ

5

Subversionとgitについて書かれている。

5

私はまだgitを使ったことが無いのだけど、そんなに速いのか。

5

 

5
 ソーシャル化するOSS開発者たちEXT
5
 サーバが不要で、いくつかコマンドを叩くだけで、手軽にブランチが作れて、
5
 しかも非常に速い。単に新しくブランチを作るだけなら、1つあたり41バイト
5
 のファイルが生成されるだけなので、ブランチングは処理的にも心理的にもコ
5
 ストが低い。
5
 .
5
 .
5
 0.5秒で差分が取れるのか、同じ作業に30秒かかるのかでは、まったく仕事の
5
 やり方が変わってくるという。例えばPythonで書かれたMercurialというもの
5
 がある。これはGitと同様の分散ソースコード管理ツールでリーナスも評価は
5
 しているのだが、パフォーマンスの点でGitがベターだと訴える。「コミット
5
 や差分作成に30秒かかるかもしれない。30秒というと、そんなに悪くないと
5
 思うかもしれないけど、まじめな話、10分の1秒というのに慣れてしまったら
5
 30秒なんて最低なんです」
5

 

5

一体どんな顔をしているのかgitのソースコードをダウンロードしてチラ見しておいた。

5

スゲー。

5

LinusのコーディングスタイルはLinuxとgitでほとんど同じだ。

5

カーネル(Linux)とアプリケーション(git)は、おそらく違うスタイルで書かれているんだろうと思っていたのだが。

5

 

5

例えば、gitの中のsha1値をhexに変換する関数

5
char *sha1_to_hex(const unsigned char *sha1)
5
{
5
        static int bufno;
5
        static char hexbuffer[4][50];
5
        static const char hex[] = "0123456789abcdef";
5
        char *buffer = hexbuffer[3 & ++bufno], *buf = buffer;
5
        int i;
5
5
        for (i = 0; i < 20; i++) {
5
                unsigned int val = *sha1++;
5
                *buf++ = hex[val >> 4];
5
                *buf++ = hex[val & 0xf];
5
        }
5
        *buf = '\0';
5
5
        return buffer;
5
}
5

20とか50とか即値が使われまくり。

5

 

5

この関数もgitとは思えない。カーネルの中身みたいな雰囲気。

5
unsigned long unpack_object_header_buffer(const unsigned char *buf,
5
                unsigned long len, enum object_type *type, unsigned long *sizep)
5
{
5
        unsigned shift;
5
        unsigned char c;
5
        unsigned long size;
5
        unsigned long used = 0;
5
5
        c = buf[used++];
5
        *type = (c >> 4) & 7;
5
        size = c & 15;
5
        shift = 4;
5
        while (c & 0x80) {
5
                if (len <= used || sizeof(long) * 8 <= shift) {
5
                        error("bad object header");
5
                        return 0;
5
                }
5
                c = buf[used++];
5
                size += (c & 0x7f) << shift;
5
                shift += 7;
5
        }
5
        *sizep = size;
5
        return used;
5
}
5

 

5

ちなみに、Linusがなんで C++ で書かないのと言われて反論しているメッセージが見つかった。

5
 Gmane -- Mail To News And Back AgainEXT
5
 > 
5
 > When I first looked at Git source code two things struck me as odd:
5
 > 1. Pure C as opposed to C++. No idea why. Please don't talk about portability,
5
 > it's BS.
5
 
5
 *YOU* are full of bullshit.
5
 
5
 C++ is a horrible language. It's made more horrible by the fact that a lot 
5
 of substandard programmers use it, to the point where it's much much 
5
 easier to generate total and utter crap with it. Quite frankly, even if 
5
 the choice of C were to do *nothing* but keep the C++ programmers out, 
5
 that in itself would be a huge reason to use C.
5
   .
5
   .
5
   .
5

 

5

ところで、BS(bullshit)ってどれくらい強い言いまわしなの?

5

気の弱い私はちょっと心配になるよー。

5

さて、git本体のソースコードの話は置いといて、GitHubEXTには興味を持ったので、emacsの良いgit-modeを見つけたら一度つかってみよう。

5

pcl-svn.elと似たキーバインドの奴があるとうれしいんだけど。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_15[Nendo] 高階関数の定義(mapとfilter関数)

5

私がRubyで書いているLisp方言、 Nendoの開発状況続き。

5

 

5

mapとfilterの定義

5

先日『kiyoka.2009_04_13[Nendo] mapとfilterが動いた』で書いた関数定義は、それぞれこんな感じ。

5

あんまり美しいとは言えないけど... もっと簡潔に書けるんだろうか。

5

 

5
mapの定義
5
(define map
5
  (lambda (pred lst)
5
    (if (null? lst)
5
        '()
5
        (cons
5
         (pred (car lst))
5
         (map pred (cdr lst))))))
5

 

5
foreachはエイリアス定義
5
(define foreach map)
5

 

5
filterの定義
5
(define filter
5
  (lambda (pred lst)
5
    (if (null? lst)
5
        '()
5
        (let ((result  (pred (car lst))))
5
          (if result
5
              (cons
5
               result
5
               (filter pred (cdr lst)))
5
              (filter pred (cdr lst)))))))
5

 

5
ついでに値の標準出力への出力 p の定義
5
(define p
5
  (lambda (x)
5
    (printf "%s\n" x)
5
    x))
5

 

5

記念にFizzBuzz問題を書いてみた

5

実はletスペシャルフォームも実装済み。

5

 

5
FizzBuzz問題
5
;; FizzBuzz write in Nendo
5
(define fizzbuzz
5
  (lambda (max)
5
    (map
5
     (lambda (x)
5
       (let ((x (+ x 1)))
5
         (if (= 0 (% x 15))
5
             "FizzBuzz"
5
             (if (= 0 (% x 3))
5
                 "Fizz"
5
                 (if (= 0 (% x 5))
5
                     "Buzz"
5
                     x)))))
5
     (range max))))
5

[実行結果]

5
nendo> (fizzbuzz 30)
5
(1 2 "Fizz" 4 "Buzz" "Fizz" 7 8 "Fizz" "Buzz" 11 "Fizz" 13 14
5
 "FizzBuzz" 16 17 "Fizz" 19 "Buzz" "Fizz" 22 23 "Fizz" "Buzz" 26
5
 "Fizz" 28 29 "FizzBuzz" )
5

 

5

次は、可変長引数をあきらめた話と、Rubyのライブラリを使ってズルしまくりの話を書きます。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_14[音楽][創作心理] やる気はどこからやってくるのか

5

着手すると、やる気はあとからついてくる

5

これは、私が経験的に感じていること

5

 

5

弾さんもこう書いていらっしゃる。

5
 404 Blog Not Found:やる気出すより手足出せEXT
5
 やる気があるからやるんじゃない。やったからやる気が出るのだ
5
 朝礼とかラジオ体操とかには、案外重要な意味があることになる。やる気はや
5
 らなきゃ出ないのだから、とりあえず体を動かしてしまうというわけだ。脳の
5
 リハビリで手足を動かすのも、然り。
5
 「やる気」がある人というのは、実は例外なく「とりあえず手足を動かす」を
5
 実践しているようだ。レポーターはメモを取らずにいられない。絵描きはスケッ
5
 チせずにはいられない。そしてプログラマーはエディタを起動せずにはいられ
5
 ない。
5
 そうやって手足を動かしていくうちに、やる気なるものが出てくる。この「動
5
 作」が「意識」に変わるのにはある程度タイムラグがあって、このタイムラグ
5
 の間に動く分の「余計な動作」というか「捨て動作」とでも言える動作が、実
5
 はやる気には欠かせない。
5

 

5

脳科学ではいろいろ解明されてきているらしい、やる気のメカニズムについては、そのうちはっきりしてくると思う。

5

 

5

DOUBLEのEmotions

5

これは私の好きなDOUBLEのEmotionsという曲。

5

ミュージシャンというのは創作が仕事なので、やる気というものをコントロールする術を身に付けざるを得ない。

5

そんなテーマを扱ったR&B曲。うーん。いいねぇ。

5

歌詞はコピーできないそうなので、リンクだけ張っておく。

5
 DOUBLE Emotions <無料>歌詞検索の歌ネットEXT
5

 

5

YouTubeも埋め込んでおこう(音声のみ)

5
   DOUBLE - Emotions
5

 

5

 

5

気になるSF小説

5

弾さんの文章をもいちど引用。

5
 404 Blog Not Found:やる気出すより手足出せEXT
5
 この「動作」が「意識」に変わるのにはある程度タイムラグがあって、このタ
5
 イムラグの間に動く分の「余計な動作」というか「捨て動作」とでも言える動
5
 作が、実はやる気には欠かせない。
5

 

5

このタイムラグについて、SFなのにSFとは思えない内容の短編『7パーセントのテンムー』が良かったのでついでに紹介。

5

脳科学の研究でこのSFの仮説が証明されたらおもしろいなーと思った。

5

ネタバレになりそうなので、これ以上は書きませんけど。

5

 

5
 短編『7パーセントのテンムー』が収録された本
5
 4150309140  シュレディンガーのチョコパフェ: 山本 弘
5

 

5

結論

5

やる気が出るまで待ってても無駄。とにかく着手すべし。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_13[Nendo] mapとfilterが動いた

5

私がRubyで書いているLisp方言、 Nendoの開発状況。

5

なんとか、mapとfilterを動かす部品がそろったぞ。

5

 

5

残念ながらmapは副作用を許している。ちょっとキモチワルイ。

5
nendo> (map p '(true false nil 1 2 3 "a"))
5
true
5
false
5
5
1
5
2
5
3
5
a
5
(true false nil 1 2 3 "a")
5

 

5
mapの例
5
nendo> (map (lambda (x) x) '(true false nil 1 2 3 "a"))
5
(true false nil 1 2 3 "a")
5

 

5
mapとforeachは同じなの
5
nendo> (foreach (lambda (x) x) '(true false nil 1 2 3 "a"))
5
(true false nil 1 2 3 "a")
5

 

5
真偽の判定はRubyと同じ
5
nendo> (filter (lambda (x) x) '(true false nil 1 2 3 "a"))
5
(true 1 2 3 "a")
5

 

5

気づいてもらえただろうか。

5

Lisp-1族なのでSchemeに似ているかも知れないけど、true false nil はRubyで定義されているそのもの。

5

やっぱり実際に動くと楽しいよね。オレ言語やってみて良かったー。

5

これをきっかけにいろんな言語について知ることもできるし。

5

これから恥を気にせず、書いたコードとか、迷ったこととかをを晒していきます。

5

 

5

COMMENTsion

人に使ってもらえるツールを作るのは楽しいものです。

それで喜んでもらえたら、ひとしおですね。

と、考えると、オレ言語の開発は 究極かもしれませんね(^^)

余談ですが、先日 「別に技術にもプログラミングにも興味はない」と言い切るプログラマーに出会ってショックを受けました。

5

COMMENTkiyoka

人に使ってもらえるものになるかどうかわかりませんが、その心意気で作っていきます。

まずは、自分が日常的に使いたくなるものができれば... と思っています。楽しみながら続けたいです。

そうそう、プログラミング自体に興味が無いプログラマーは時々いらっしゃいますよね。

最初は私もショックだったのですが、意外とそういう人は多いので悲しいです。

プログラミング言語の表現力が年々向上しているので、数年先にはプログラミングを楽しめる人とそうでない人の差は、結果として大きな技術力の差になってくると信じています。いや、信じたいです。

でも時々、スクリプト言語が使える場面でも、C言語でとんでもない質と量のコードを量産する人がいたりして全てあてはまるわけではないんですけどね。

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_11[音楽] 恥の文化の対極にある日本人ラッパーのメンタリティ

5

rapper(ラップをする人)の歌詞って、一般的には自己評価の低いといわれる日本人からすると対極にあると思う。

5

ということは日本人ラッパーはかなり希少価値が高いかも。

5

恥も外聞もなく、『オレは最強、ナンバーワン、ダレにも真似できねぇ』系の歌詞が多い。

5

日本人的な、内向的で自己評価低い(ある意味暗い)ラップってあるのかな。そういうのも聴いてみたい。

5

そういえばEninemはちょっと内向的な気がするし、MC Sniperも韓国人で日本人にメンタリティが近そうだが、これも内向的なラップをやっている。

5
   MC Sniper- 한국인(韓國人)
5

今、YouTubeでKREVAとかVERBALのオレ最強的ラップを聴いていてふと思っただけなんだけど。

5

すみませんが、結論無しのエントリーです。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_10[言語][Nendo] そろそろオレ言語でもやっておくか(11)

5

このClojureのtutorialが非常に参考になる。本家のドキュメントではないけどたいへん分かりやすい。

5
 Clojure Tutorial For the Non-Lisp Programmer EXT
5

ClojureがJavaのClassライブラリをアクセスする構文を持っている。

5

対して、NendoはRubyのClassライブラリをアクセスする必要があるので、言語仕様を考える上でClojureの例は大変参考になる。

5

 

5

例えばこれは参考になる。

5
 Clojure provides the ability to interface with Java objects and
5
 primitives. Knowing how to do this is essential for non-trival
5
 programs.
5

 

5
 Let's start by instantiating a Java java.util.Date object:
5
   user=> (new java.util.Date)
5
   Mon May 26 10:25:25 PDT 2008
5

 

5
 To pass arguments to the object's constructor, just include them in
5
 the call to new:
5
   user=> (new StringBuffer "This is the initial value")
5
   This is the initial value
5
 To call an object's method use the dot (.) form:
5
   user=> (. (new java.util.Date) (toString))
5
   "Mon May 26 11:12:15 PDT 2008"
5

 

5
 The dot form uses a dot character (.) as the operator. The second
5
 argument is the object whose method will be called. The
5

 

5
 third argument is a list containing the method name and the method's
5
 arguments, if any:
5
   user=> (. (new java.util.HashMap) (containsKey "key"))
5
   false
5

 

5
 Static methods can be called in the same way:
5
   user=> (. Boolean (valueOf "true"))
5
   true
5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_08[言語][Ruby] Rubyがいろんなプラットフォームに広がっている件

5
 独SAP、自社VMでRuby処理系のサポート追加へ/@ITEXT
5
 独SAPは3月27日、同社のWebアプリケーションサーバで動くRubyの実験実装
5
 「Blue Rubyプロジェクト」について明らかにしている。ABAP(Advanced
5
 Business Application Programming)は、独SAPが提供するWebアプリケーショ
5
 ンサーバ「SAP NetWeaver Application Server」は、J2EEと独自言語ABAPによ
5
 るアプリケーション開発が可能なVMを備えている。
5
 3423998976_4782cb8327_o
5

IronRubyEXTJRubyEXT以外にもどんどん使える環境が広がっている。

5

MacRubyもLLVM化したりして、高速化競争も始まっており、Rubyプラットフォームの普及は最終段階に来ているのかも。

5
 JRuby 50倍速、MacRubyはすでに到達域 - 竹内関数 EXT 
5

今開発しているおもちゃ言語のNendoもいろんな場所で動くと思うと楽しみになってくる。

5

あとは、Google App EngineでRubyが使える様になると色々遊べそうだ。Googleはいつ対応するのかなぁ。

5

 

5

COMMENTshiro

JRubyはもう使えるみたいですよ。

http://olabini.com/blog/tag/gae/

5

COMMENTkiyoka

ほんとですねー。

Javaが使えるようになったらJRubyも自動的に使えるわけですね。

それにしてもRubyのように結構複雑なものがいろんな言語の上に再実装されるとは。

そんなに実装が簡単だとは思えないので、凄いことだと思います。ユーザとしてはうれしいことです。

http://d.hatena.ne.jp/technohippy/20090408#1239196300

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_07[言語][Nendo] そろそろオレ言語でもやっておくか(10)

5

nendoにlet構文を追加しようとして、ふと立ち止まる。

5

先にquasiquoteを実装して、その構文の上にletを構築するか、それともletを素直にRubyで書いたevaluatorで実装するか。

5

まずは段階的にRubyで書いてみようかな。

5

書いては捨て、捨てては書いてというのを繰返していきながら、一番いいやりかたを探していこうと思う。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_02[言語][Nendo] RedLisp改めNendo

5

昨日書いた通り、なんとredlispEXTは既にあった!ということで、Nendoという名前に変更した。

5

CodeReposの中で何度もディレクトリ名変えてすみません。

5

やっぱりプロジェクトの最初の方ではこういうドタバタは何度もある。

5

CodeReposに入れるのはもうちょっと先にしたほうが良かったかな...

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_04_01[言語][Nendo] そろそろオレ言語でもやっておくか(9)

5

オレ言語にRedLispという名前をつけたのだけど...

5

なんと、redlispEXTは既にあった! 名前がカブっていたのだ。

5

先日Google検索した時は、『日本語のページを検索』のラジオボタンにチェックが入っていたという初歩的な失敗をした。

5

Googleで検索しておけばグローバルに検索されるので間違い無いと思い込んでいた。思い込みとは怖い。

5

気をとりなおして別の名前にすることにしたぞ。

5

候補は子供のころから粘土細工が好きだったこと、S式でプログラミングをしている時の自分の心理状態が粘土でコネコネしているのと似ているような気がしているので、『粘土』というキーワードをどこかに入れたい。

5

そのまま粘土(nendo)にするのもありかな。候補は、

5
 nendo
5
 craylang
5
 rubycray
5
 rcray
5

もちろんnendoというSNSが存在することも、nendoというデザイン会社が存在することもnendo.orgというドメインがあることも知っている。(そんでもって、TMにはなってなさそう)

5

でも、プログラミング言語でカブなければよしとするしかない。

5

プログラミング言語の名前としてはArcとかIoというような短い名前は沢山ある。カブることを気にしていたら切りがないのだ。

5

 

0

comment (disabled)

5