<< 2008/08/ 1 2 3 4 1. 帰省 2. 読者プレゼント 5 1. [映画] アイ・アム・レジェンド 6 1. 夏休み 2. 山口ちょうちん祭 7 1. 松江帰還 2. 読者プレゼント受付 3. 瀕死のPrius 8 1. [Ruby] Ruby合宿 2. 当選発表 9 1. [映画] どろろ 10 11 12 13 14 15 16 17 18 1. 出発準備 2. フィード削減 3. 妻のブログ 19 1. 東京 20 1. 三鷹ジブリの森美術館 2. Ruby Academy開講記念セミナー 21 1. U20プロコン審査委員会 22 23 24 25 26 1. 航空券手配 2. [言語]シーケンス述語 3. [言語] Lisp, the Universe and Everything: Re: An Acceptable Lisp 4. ぎっと 27 1. e-T
プログラミング言語 Grass の Ruby 1.9 による処理系です。 # parse A, L = Struct.new(:m, :n), Struct.new(:code) code = File.read(ARGV[0]) code = code.gsub("\uFF37", "W").gsub("\uFF57", "w").gsub("\uFF56", "v") code = code.gsub(/[^wWv]/, "") code = code[/w.*\z/m].split(/v/).map do |sub| sub = sub.scan(/w+|W+/) arity = sub.first[0] == "w" ? sub.shift.size : 0 sub = sub.each_slice(2).map {|n, m| A[n.size - 1, m.size - 1]
これは? Compiler (compile.h, compile.c) VM Generator (rb/insns2vm.rb, insns.def)命令記述 VM (Virtual Machine, vm.h, vm.c)レジスタ スタックフレームメソッドローカルフレーム ブロックローカルフレーム クラスフレーム フレームデザインについての補足 メソッド呼び出しについて 例外例外テーブル rescue ensure break, return(ブロック中)、retry 定数の検索定数検索パス 最適化手法threaded code Peephole optimization inline method cache inline constant cache ブロックと Proc オブジェクトの分離 特化命令 命令融合 オペランド融合 stack caching JIT Compile
■ [scheme][ruby] call/ccの7つの典型的な使い方 わだばさん(でいいのかな?)のところで紹介されていたCall with Current Continuation Patternsをちょっと見てみた。 7/26 第9回 慢性的CL勉強会@Lingr 8時だョ!全員集合まとめ - わだばLisperになる - cadrグループ それによると、callccの典型的な使い方には以下のようなものがあるらしい。 (無限)ループからの脱出 再帰からの脱出 Cでいうcontinue 脱出+再入 コルーチン non-blindな(??)バックトラッキング マルチタスク で、だ。 1, 2, 3は、breakとかcontinueがある言語なら普通にできる。 5や4の一部は、PythonのジェネレータとかRuby1.9のFiberでできる。 7はコルーチンやスレッドを使えばできる。 とな
Ruby 1.9 の新機能のひとつに「lambda { ... } を -> { ... } と書ける」というのがあります。この表記は反対意見が根強い *1 ですが、確実にすばらしい点があって、全部記号だということです。これによって Ruby が記号だけでチューリング完全になります *2 。 デモとして、brainfuck インタプリタを記号だけで書いてみました。 $___,@_,@__,$_=(@@__="")=~//,?#=~/$/,->(_){_<(__="####"=~/$/)**__&&(@@__<< _;@__[_+@_])},[*$<]*@@__;@__[$___];$____,$_,@___,$__,@__=$_[@_+($_+?!=~/!/ )..-@_],$`,[],[],->(_){(__=$_[_];__=~/[><+\-\.,]/?$__<<$_[_]:__==?
ってことだったのか!(おそらく) というのも、以前、Rubinius GemstoneのOODBがJRubyとRubiniusをサポート を読んだとき、JRuby と Rubinius があるのになんで Matz Ruby や YARV への言及がないんだろうと疑問に思って、くしくも Matz にっきにも関連して、 Gemstoneといえば昔一世を風靡したOODBMS。これがJRubyやRubiniusから使えるようになる、という話。私はその頃ObjectStoreを使ってたけど。 待て。JavaとのコネクションでなんでもできるJRubyは分かるが Rubiniusが出てて、なんで本家Rubyが対象にならないのか。不思議。 http://www.rubyist.net/~matz/20070807.html#p06 といった指摘があったのを見ても、(“昔一世を…”とか、例によって Smal
以前、動き続ける事を前提としたプログラムについて記事を書き、 Smalltalk勉強会を開催させていただいた事がありました。 その結果、梅澤さんから教えていただいたGemStoneを使ったGLASS (= GemStone, Linux, Apache, Seaside, Smalltalk) というのが面白そうだと思ったのですが、先のRailsConf2008で、 今度はMagLevというのが出てきたそうで、面白そうです。 ということで、情報源をメモしておきます。 MagLev - Ruby that scales(英語) Maglev (英語) GemStone の独自拡張 VM(Facets Java VM および MagLev Ruby VM)と、JRuby および Rubinius の Ruby 処理系記述部分を組み合わせると同社製 OODB をフルに使える Ruby 処理系がで
<< 2008/03/ 1 1. [Ruby] Ruby 1.9.0-1 snapshot released 2. 高木浩光@自宅の日記 - 公開鍵暗号方式の誤り解説の氾濫をそろそろどげんかせんと 3. [Ruby] Lisa Awards: Biggest Hack for a Language Runtime on Dion Almaer's Blog 2 1. [教会] 第一安息日 3 1. [言語] CS 11: Python track: python idioms 2. [Ruby] Binary search algorithm - Wikipedia, the free encyclopedia 3. [OSS] Theological Cultural Analysis of the Free Software Movement 4. 小寺信良:正直、テレビはもうダメかも
<< 2008/03/ 1 1. [Ruby] Ruby 1.9.0-1 snapshot released 2. 高木浩光@自宅の日記 - 公開鍵暗号方式の誤り解説の氾濫をそろそろどげんかせんと 3. [Ruby] Lisa Awards: Biggest Hack for a Language Runtime on Dion Almaer's Blog 2 1. [教会] 第一安息日 3 1. [言語] CS 11: Python track: python idioms 2. [Ruby] Binary search algorithm - Wikipedia, the free encyclopedia 3. [OSS] Theological Cultural Analysis of the Free Software Movement 4. 小寺信良:正直、テレビはもうダメかも
身の回りに溢れているほとんど全てのプログラムは、 静止状態の表現としてソースコードを持ち、 計算機上で実行され、そして終了します。 少なくとも、終了しようと思えばできるように作られています。 しかしながら、近年では、Webサーバやネットワークプログラムのように、 継続的に動作することが当たり前で、停止状態に移行する事自体が 例外とされるようなプログラムが珍しくなくなってきています。 RubyやPerl, Pythonなどの動的言語と呼ばれる言語が普及し、 プログラム言語の価値は、実行速度から開発速度で測られる 比率が高くなりました。 そんな中、去年ぐらいから、静的言語でも動的言語でもない、 新しいプログラミング言語のパラダイムの可能性について考えています。 走り続けるプログラム はてしない物語。終了状態の無いプログラム。 停止することなく、動き続けることが想定されるService型プログラ
■ [event][Ruby/SDL] Ruby1.9のFiberはゲームにも使えるのか? 結論から言うと、余裕で使える。 今使ってるノートPC (PenM 1.2GHz, メモリ1GB) だと300キャラくらいまで大丈夫な感じです。 大丈夫というのは「描画フレーム数が50/秒以上」とかそんな。 ていうかFiberってなによ いわゆるコルーチンです。 ふつーのゲームプログラミングでは、敵を「右→下→左→上」という順に動かすために「いま動作のどこまでやったかフラグ」 を用意したりして頑張るんですが、コルーチンがあればこんなに簡単に。 def act_move1(i) @x = rand(640) @y = rand(480) 40.times{ @x += 8; Fiber.yield } # 40回右に動く 40.times{ @y += 8; Fiber.yield } # 40回下に動
現在の Unix システムでの最大時刻は、協定世界時の2038年1月19日午前3時14分7秒です。 http://www.ruby-lang.org/ja/man/?cmd=view;name=Time Timeは2038/1/19以降がエラーになる。 >> Time.gm(2038,1,19).strftime("%Y-%m-%d %a") => "2038-01-19 Tue" >> Time.gm(2038,1,20).strftime("%Y-%m-%d %a") ArgumentError: time out of range from (irb):7:in `gm' from (irb):7 from :0DateTimeはもっとずっと先まで大丈夫。 >> require 'date' => true >> DateTime.civil(2038,1,19).strftime(
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日本 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直
数学ゴルフが終了したようです。僕の解答も niha さんのと同じです。それはともかく、数学ゴルフの言語の入出力拡張版*1を提案されていました。とりあえず turing 完全であることを確かめるため brainfuck インタプリタを書こうと思ったのですが、面倒だったので brainfuck から数学ゴルフへの変換を定義してみました。 テープのエンコード 僕も変数の数は有限な方がかっこいいと思うので、テープをエンコードするために多倍長倍数を使うことにしました。テープ上の各セルは 1 バイトとして、以下の 3 変数でエンコードします。 l : ポインタ位置より左側の数字を多倍長で表現する m : ポインタ位置の数字を表現する r : ポインタ位置より右側の数字を多倍長で表現する 例えばテープが [1, 2, 3, 4, 5, 6, 7] で、ポインタが 4 の位置を指している状態は l = 3
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く