free as in air

2007|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|09|11|12|
2012|03|04|05|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|03|04|06|09|
トップ 最新 /追記

2007-11-01 [長年日記] この日を編集

§ [//] tumblist way

 もしくはtumblogger?なんか使い方が違う気がしてきた。ネタへの嗅覚が弱いというか。もっと刹那を切り取る感じでいかなければならないように思われるのだが、となると他にツッコミ向けのスペースが欲しいなあ。

§ [devel] ER図

 なんで「なんでも区分値テーブル」を作りたがる人が多いんだろう。それER図で表現できないと思うんだけど。

 唐突に思い出したが、とっても昔、IDを(例によって手動で)生成するのに、(一例として)特売商品→Special Item→SI+連番とかいうのを見たことがある。当然charでPK。

§ [//] 節度

 朝起きたら「ニコ動らず、2chらず、twitterらず、これで生きていると言えましょうや」と浮かんできた。

 オチません。

§ [ruby] rjb_trunk

 IconvがGCされてしまう初歩的なバグを直したので生存期間は伸びたはず。でも延々とループさせるとメモリが少しずつ消費されていくんだけど、どこでだろう。C言語(プリプロセッサ含む)は無駄に複雑で悲しくて楽しい。

お名前 : コメント :


2007-11-02 [長年日記] この日を編集

§ [music] auto playlist

 Know Your Enemy/Rage Against The Machine, Swallowed In The Sea/Coldplay, Zee Deveel/Incubus, Supermassive Black Hole/Muse, Fall In Love With A Girl/The White Stripes, Shape Of Things To Come/Audioslave, The Lifting/R.E.M., Fault/Taproot, Starcrossed/Ash, Enterlude/The Killers, Too Bad/Nickelback, Some Might Say/Oasis, The Sign/Foo Fighters, Finally Awake/Hoobastank, We Suck Young Blood/Radiohead, Space Dementia/Muse, Breakout/Foo Fighters, Free Me/Foo Fighters, Virginia Moon/Foo Fighters, Van Tango/Franz Ferdinand, Oil And Water/Incubus, Bang And Blame/R.E.M., Parabola/Tool。

 プレーヤの自動選曲も悪くないが、邦楽が引っ掛らないのが難か。

 IncubusとRage Against The MachineとToolはガチだなあ。他は体調次第なとこがあるけど。

§ [ruby] rjb_trunk

長い文字列の変換で止まる。

require 'rjb'
 
include Rjb
JString = import('java.lang.String')
 
sjis_kj = "\x8a\xbf\x8e\x9a\x83\x65\x83\x4c\x83\x58\x83\x67"
500.times do
  sjis_kj += sjis_kj
    $KCODE = 'sjis'
    s = JString.new(sjis_kj)
    s.toString()
 
    GC.start
end
zsh/2 971 [1] % ~/ruby18/bin/ruby test_kj2.rb 
test_kj2.rb:10:in `new': unknown exception (NullPointerException)
        from test_kj2.rb:10
        from test_kj2.rb:7:in `times'
        from test_kj2.rb:7

SEGVならわかるが、Java側からNullPointerExceptionが飛んでくるのは理解できない。しかし限界なので寝る。あとOpenBSDのコードをさらっと見るTODO。priorityの件。

§ [program] PHPで未定義の定数を使用してはいけない

 当然すぎて書くのも憚られるが、どんな言語だろうと未定義の定数を使っちゃいけない、というだけの話。

 phpの連想配列の添字は必ずダブルクオートで囲むこと!?それって、PHPの仕様未定義の定数を使用した場合、ちょうどstringとして コールしたかのように(CONSTANT vs "CONSTANT")、 PHPはその定数自体の名前を使用したと仮定します。 だからあまり問題が表面化だけであって、たかがダブルクオート、されどダブルクオート、、、いい勉強になりましたって、そういうことじゃないでしょう。

 シンタックスがわかった上で未定義の定数を使うようなプログラマはもうこれ

§ [//] Twitterはじめました

 あー、こりゃ全然楽しみ方がわかんないや。誰か手取り足取り教えてください。

お名前 : コメント :


2007-11-03 [長年日記] この日を編集

§ [tag] そんないい業界はない

 のでは。いい会社はあるだろうけど。nihilistなのでなんとも言えんけど無意味な対話を見て思う。不人気というよりミスマッチという一文が正鵠を射ている。

 まあ少なくともTISとかNTTデータとかでSIやるのがどれだけ空虚なのか晒されたわけで、中の人とかこれから就職しようかとか言う人には逆に良かったんじゃなかろうか。獄門かこれは。

§ [unix] jfbterm for FreeBSD

 OpenBSDで動きませんかねえ?

§ [tag] アメリカ音楽界の現状

 その業界が好況かどうかを考える場合、売上より、可処分所得に対する割合で見たほうがいいんじゃないのかなー。北米はサブプライムローン問題以前は一応好況だったわけだし、そもそも可処分所得が多かったという可能性もあるのでは。

 まあコンシューマにしか適用できないけど。

§ [devel] The JNI and the Garbage Collector

 IBMのサイトなのに充実している。

お名前 : コメント :


2007-11-04 [長年日記] この日を編集

§ [//] どこでつぶやくべきか

 Livedoor Reader/Twitter(まあ、IMに通知されるけど)/tumblrをチェックするのと、2chをやりすぎたときの徒労感が似ている。

 さらに言うと雑多なリアルコミュニケーションの後の徒労感にも似ている。

 コミュニケーションは基本的にハレなんだな。

 全ては祭の蹟。

 discommunication体質か。

お名前 : コメント :


2007-11-05 [長年日記] この日を編集

§ [ruby] Rjb discussions

 RSS配信とかがないのでチェックしていなかったが、何件かあるね。インストールできない件が多い。まあgemで配ってるものの中でもインストール時に気をつかうほうだとは思うが、解決方法は今のところない。jdk-configコマンドとかがあればいいのだが。

 RoRで受信したファイルをInputStreamにしたいと書いてあるようだが仕様の勘違いだよな。

 Javaクラスのインスタンスをinspectした時何だかわからないってのとRjbのjava.lang.StringのインスタンスとRubyのStringが比較できない件は、理解できなくもない。JavaクラスのインスタンスとRubyクラスのインスタンスを混ぜて使っても、ある程度違和感がないようにすればいいのかね。

 Windowsで謎のエラーが出るのは、JAVA_HOMEにスペースが含まれるパスをダブルクォート付きで設定されている時("c:\jdk1.6.0_03 with space")に出る様な感じ。スペースなしで環境変数に指定すれば動作するみたい。

 というのを誰か英語で書いてほしい…。

お名前 : コメント :

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

<< 桑島雄一郎 [メールかRSSで配信してくれないとチェックしきれないですね。 文字列ってhttp://www.kuwashima.o..]

<< arton [メールモニター機能はRubyforgeは持っています。左上のほう(ディスカッションフォーラムと書いてある行の下)をチ..]

<< 桑島雄一郎 [ログインしてないと表示されないんですね>モニター機能 BTSもどこかからモニターできるんですか?]

<< arton [全然記憶にないし、見てもわからないですが、バグレポートが登録されるとメールが来ます。プロジェクトオウナーだからかな?]

<< 桑島雄一郎 [admin画面で設定できるみたいですけど、設定を変えるとどうなるのかよくわからないのでやめときます。 RSSもMLも..]


2007-11-06 [長年日記] この日を編集

§ [ruby][tag] yajbについていろいろ

 色々恐ろしいことが書いてある、気がするのでメモ。

 つかさっさとyarvで動かしてみればいいだけかも。

§ [ruby] installer does not find jni.h

 どうでもいいけどATOKいいなやっぱ。

 単にSolarisでのやり方がわかんないんだけど、SunFreeware.comからRubyをとってきてインストールしようとすると同じようなエラーになって、mkmf.logは以下。

have_header: checking for jni.h... -------------------- no
 
"cc -E -I. -I/opt/csw/lib/ruby/1.8/i386-solaris2.8 -I. \
 -I/usr/jdk/jdk1.5.0_13/include -I/usr/jdk/jdk1.5.0_13/include/solaris \
 -I/opt/csw/include -I/opt/csw/include -xO3 -xarch=386 -xspace -xildoff \
 -I/opt/csw/include -I/opt/csw/include   -KPIC \
 -I/usr/jdk/jdk1.5.0_13/include -I/usr/jdk/jdk1.5.0_13/include/solaris \
 conftest.c -o conftest.i"
/usr/ucb/cc:  language optional software package not installed
checked program was:
/* begin */
1: #include 
/* end */
 
--------------------

 報告してくれた人の環境のRubyがどこから来たか聞いて、gemのインストールログを見て、同じだったら追加ソフトウェア入れろでFAなのかね。

 追加ソフトウェアってどれ?

 HDD空き領域がギリギリなのでイメージ消そうかどうか思案中。

お名前 : コメント :

本日のツッコミ(全3件) [ツッコミを入れる]

<< arton [うーむ、僕は、SolarisとコンパニオンDVDをインストールして、ruby野良ビルド(これが違いか?)で、gem野..]

<< 桑島雄一郎 [僕はコンパニオンDVDを入れてません←たぶんこれ。 gemは野良です。 Rubyを野良ビルドできるような状態なら..]

<< 桑島雄一郎 [ん、僕が言うgemは野良というのは rubygems-x.xx.tar.gzを取ってきて、tar zxfして、rub..]


2007-11-07 [長年日記] この日を編集

§ [ruby] todo

 コンパニオンDVDのとこが違うということは、コンパニオンDVDからソフトウェアを追加してみればいいってことかというTODO。HDD空けなきゃ。

 追記:具合が悪くなってきたのでよくわかんないまま明日へ。

 同じメッセージに関するドキュメントがあるんだけど、そのパッケージがどこにあるのかわかんない現状。

お名前 : コメント :


2007-11-08 [長年日記] この日を編集

§ [ruby] Bad memory access exception

 どうにも行位置と呼出順が合わない気がするのだが。

§ [tag] K のこと

 文章としては相当に好きなの(でこっちにもログを残す。)だが、現実的には意味の無い話であり哀しい。

お名前 : コメント :

本日のツッコミ(全2件) [ツッコミを入れる]

<< arton [呼び出し順についてはjv2rvの呼び出しがジャンプに最適化で変えられたのだと思います。 しかし、これわからないなぁ。..]

<< 桑島雄一郎 [bt出てるから-g -p0でコンパイルしたんだろう、と安易に考えてました。 あれ?もう直ってる…。早いですね。]


2007-11-09 [長年日記] この日を編集

§ [tDiary] tDiaryのヘッダとフッタと追加CSSで頑張る

 もっそい頑張った。何やってるかはソース見てもらえばわかる。個人的には、各記事にはてブボタン付けたのはシュールだと思う。ソースの下の方に書いてある。コメントにはてブボタン付けたい。あとコメントにはて☆付けたい(←付けた)。

 内容をテキストファイルで上げておくので使いたければ適当にどうぞ。保証はしません。

 makerss.rb見て思ったけど、フィードのアドレスをヘッダ、フッタで参照する方法が無いのな。

お名前 : コメント :


2007-11-10 [長年日記] この日を編集

§ [diary] HDD不足

 深刻。

お名前 : コメント :


2007-11-12 [長年日記] この日を編集

§ [diary] 土日まとめ

 土曜日はtumblrとtwitterとRSS三昧過ぎてダメな日。Solarisを入れようとしたのだが、パーティションの分け方の関係上、インストールできないことが判明してガッカリ。Windows消すかntfsresizeしてUbuntu入れ直すべきかもしれない……!!!

 日曜日は鬼剣舞で一関市大東町京津畑地区まで行ってきた。田舎住まいの俺が物珍しく眺めるくらい山の中で携帯も圏外だけど、距離的にはそれほどでもない。冬はわからんけど。なんか活気があったなーというか戸数が当方より全然多いらしい。ショックだ。真剣に見ていただいたので皆喜んでおりました。

 あと防火点検をやったそうな。来年6月から火災報知器の設置が義務化されますのでよろしくお願いします。乾燥する季節になってまいりましたので火の元には充分ご注意ください。といったところ。

 ソース書いてないと、すごく……後ろめたいです……。

§ [//] the agents of the hatena.

 ID取っただけー。  しかしボットいっぱいいるな。
  • "Hatena Antenna/0.5 (http://a.hatena.ne.jp/help)"
  • "Hatena Bookmark/0.1"
  • "Hatena RSS/0.3 (http://r.hatena.ne.jp)"
  • "Hatena Star UserAgent"
  • "Hatena2::RemoteDocument/0.02"
  • "HatenaScreenshot/1.0 (checker)"

お名前 : コメント :


2007-11-13 [長年日記] この日を編集

§ [diary] ワイヤーリール破損

 出勤中にワイヤー切れた。鼻緒が切れた的な不吉な予感。

§ [rjb] Autoboxing

 rjbタグ新設。jdk1.6.0+rjb_trunkで以下のコードが実行できる。どう考えても呼出前にIntegerとかに変換してるからなのだが、ずっとこんな感じだっけ?

  def test_autoboxing
    assert_equal(false, Rjb::primitive_conversion)
    test = import('jp.co.infoseek.hp.arton.rjb.Test')
    tr = import('java.util.TreeMap')
    tree = tr.new
    tree.put(1, 128)
    tree.put(2, 256)
    test.setSortedMapS(tree)
    assert_equal 128, tree.get(1).intValue
    assert_equal 256, tree.get(2).intValue
  end

Hashのキー,値にFixnumがそのまま使える点に注目。

あんまり関係ないけどさ、以下は覚えておくべき。

Integer.hashCode():この Integer オブジェクトが表すプリミティブ型 int 値に等しい。
Integer.equals():結果が true になるのは、引数が null ではなく、このオブジェクトと同じ int 値を含む Integer オブジェクトである場合だけです。
Collections Framework インタフェース内の多数のメソッドは、equals メソッドとの関連で定義されます。たとえば、containsKey(Object key) メソッドの仕様は、「このマップコレクションに (key==null ?k==null : key.equals(k)) を満たすキー k が含まれる場合にのみ、true を返す」というものです。."この仕様は、「null 以外の引数 key を使用して Map.containsKey を呼び出すと、キー k で key.equals(k) が呼び出される」と理解すべきではありません。実装は、最初に 2 つのキーのハッシュコードを比較するなど、equals 呼び出しを回避するための最適化を自由に実装できます。(Object.hashCode() 仕様では、等価ではないハッシュコードを保持する 2 つのオブジェクトは等価ではないことが保証されます)。通常、さまざまな Collections Framework インタフェースの実装で、実装者が適切と判断するなら、基盤となる Object メソッドの指定された動作を自由に利用できます。

お名前 : コメント :


2007-11-14 [長年日記] この日を編集

§ [rjb] エラーチェック

コンストラクタでヒープエラーが発生してもわからない件に対処するため例外のチェックを足した。JNIのAPI呼出と例外のチェックはもうセットでもいい気がするんだけど、うまくまとめらんないかね。ラップするかマクロでやるぐらいしか思いつかない。

まあそれはいいんだけど、Object.finalize()をオーバーライドしても、プロセスが終了するまでに実行されていない気がするのだが、シスプリ©Yuguiで試しているので出力されないだけかも。さて…。

Java-RubyをまたぐGC

Ruby側のGCのタイミングをObjectSpaceで拾うことができるので、そこからJava側にGC対象のオブジェクトを知らせることで何とか実現。単にJavaをラップしている代理オブジェクトはこれでいけた。

ただし、Javaから呼ばれるRubyオブジェクトについては、JavaとRubyの両方から要らないと判断されない限り捨てられない。いろいろ考えた結果、これらのオブジェクトは手動で削除することにした。

[yajbについていろいろ より引用]

究極的にはこの辺の気がするけど荷が重い。とりあえずyajbのソースを読むというTODO。

お名前 : コメント :


2007-11-15 [長年日記] この日を編集

§ [tDiary] AutoPagerize対応

 俺が使っているバージョンの話。

 日々の出力のほうにLINK要素が既にあるのでそこはいい(が未来方向に進むのはどうか?)。

 plugin/00default.rbを編集してLINK要素のHREF属性に絶対URLが出るように変更する。うちでは#{@conf.base_url}で取れてるけど他は知んない。

 skel/diary.rhtmlを編集して全体を<div class="autopagerize_page_element">で囲む。

 skel/day.rhtmlを編集して下のHR要素を<div class="autopagerize_insert_before">で囲む。

 便利かどうかはわからんけど試してみるべし。

 しかしまあ、当然皆やってるよな。

§ [music] V Is For Vagina/Puscifer

 Toolのメイナードのサブプロジェクト。アートワークが酷いので晒しとく。Artwork of the V Is For Vagina

お名前 : コメント :


2007-11-16 [長年日記] この日を編集

§ [ruby] KagemushaとActiveRecordの不具合(2)

 Module::instance_methodでレシーバと関連付いてないメソッド(UnboundMethod)が生成される。元に戻したい場合は、そのメソッドが定義されているクラスその物に対してもう一度bindしてあげる必要がある。しかーし、Object.methodで取得してbind→ダメ、method.inspectからクラス名を取り出してModule.const_getで取得してみる→ダメ。以下メモ。

eval.c:umethod_bind
  if (FL_TEST(data->rklass, FL_SINGLETON)) {
      rb_raise(rb_eTypeError, "singleton method bound for a different object");
  }
 
ruby.h
#define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x))
 
#define FL_ABLE(x) (!SPECIAL_CONST_P(x))
#define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0)
 
#define FL_SINGLETON FL_USER0
 
struct RBasic {
    unsigned long flags;
    VALUE klass;
};
 
FL_SET(klass, FLAG)でセットする
FL_SINGLETONがセットされているのはclass.cの
VALUE rb_singleton_class_clone(obj)とVALUE rb_make_metaclass(obj,super)

method_missingで頑張るという手もなくもないが、それをRuby(ruby_1_8)が受け付けるか微妙だ。

お名前 : コメント :


2007-11-19 [長年日記] この日を編集

§ [diary] 初雪

 ひどい。

§ [//] UserAgents

 "Biz360 spider (blogsmanager@biz360.com; http://www.biz360.com)"

 "Modiphibot/0.9 (Rev.Nagayama1; http://www.modiphi.com/)"

 "Mozilla/5.0 (SnapPreviewBot) Gecko/20061206 Firefox/1.5.0.9"

 "disco/Nutch-1.0-dev (experimental crawler; www.discoveryengine.com; disco-crawl@discoveryengine.com)"

§ [ruby] Kagemushaの件

 core.rbのコードは、eval.cのdefine_methodのとこに載ってる方法とだいたい同じなのね。instance_evalの中でdefine_methodしてるぐらいの違いしかない。ということはRubyのバグじゃないのか。

 どうでもいいけど、Rubyは低レベルなところを抽象化してくれてるだけで、その思想とか哲学自体が変更可能だ。つまり、仕様は無いからソース読め。

 あれ、クラスメソッドとモジュールメソッドって、意味的に、何か違うの?違わんらしい。どのみちクラスかモジュールの特異メソッド扱い。

 instance_eval(rb_obj_instance_eval())の中では特異クラス扱いなのね。ということは、instance_evalする時に呼び元がModuleかClassなら特別視する必要がある?でなければUnboundMethod::bind()かModule::instance_module()あたり。でもあれか。クラスの特異クラスって今のRubyには無いよな。じゃあエラーになるのはやっぱり変か。

お名前 : コメント :


2007-11-20 [長年日記] この日を編集

§ [ruby] UnboundMethod::bind()

 Kagemusha的には結局これだけかね。

Index: eval.c
===================================================================
--- eval.c      (リビジョン 13964)
+++ eval.c      (作業コピー)
@@ -9340,7 +9340,7 @@
 
     Data_Get_Struct(method, struct METHOD, data);
     if (data->rklass != rklass) {
-       if (FL_TEST(data->rklass, FL_SINGLETON)) {
+       if (TYPE(data->rklass) != T_CLASS && FL_TEST(data->rklass, FL_SINGLETON)) {
            rb_raise(rb_eTypeError, "singleton method bound for a different object");
        }
        if (TYPE(data->rklass) == T_MODULE) {
しかしこれはどうなんだろうか。
irb(main):001:0> module Foo;def self.aa;:aa;end;end
=> nil
irb(main):002:0> Foo.aa
=> :aa
irb(main):003:0> Foo.method(:aa).unbind.bind(Foo)
=> #<Method: Foo.aa>
irb(main):004:0> Foo.method(:aa).unbind.bind(Foo).call
=> :aa
irb(main):005:0> class Bar;end
=> nil
irb(main):006:0> Foo.method(:aa).unbind.bind(Bar)
TypeError: bind argument must be an instance of Module
        from (irb):6:in `bind'
        from (irb):6

§ [java] Object#finalize

 Object#finalizeの実行は保証されていないでしょうまさしくその通りであり心より恥じる。

 Rjbが参照を解放してるかどうか見たい。Runtime#addShutdownHookか。あとでやる。

お名前 : コメント :


2007-11-21 [長年日記] この日を編集

§ [ruby] まだかんがえてる

 白鳥の声がする。

 親クラスで定義されているクラスメソッドを子クラスのinstance_methodで生成したUnboundMethodを子クラスのほうにbindできないのはやっぱ変だと思う、と忘れないうちに書いておく。

 あと昨日のパッチは動作するけど手抜きだな。

 ruby_1_8かわいいよruby_1_8

お名前 : コメント :


2007-11-22 [長年日記] この日を編集

§ [diary] Sake

 clipsakesake

 菊の司酒造の吟醸酒。ややフルーティー。

 緑の謎の物体は、みかんの網の口を止めるクリップみたいなやつ。なんかかわいい。

§ [//] 市町村合併からあぶれたひとたち

  • 和賀郡西和賀町
  • 胆沢郡金ケ崎町
  • 西磐井郡平泉町
  • 東磐井郡藤沢町
  • 気仙郡住田町
  • 上閉伊郡大槌町

ハローワークより引用。

お名前 : コメント :


2007-11-27 [長年日記] この日を編集

§ [book] ブルックリンの八月 (文春文庫)(スティーヴン キング/Stephen King/吉野 美恵子)

 読了。俺の思うスティーブン・キングらしさとは違うけど、悪くない。つか「ヘッドダウン」いいよ。

§ [diary] 烏賊釣り

 数を求めないなら初心者でも釣れるので面白いのだが体力勝負な面は否めない。生食できるスルメイカのキモ、超美味いよ。しかしあんまり健康的な食い物じゃないな。

港集魚灯仕掛イカ!

お名前 : コメント :


2007-11-28 [長年日記] この日を編集

§ [ruby] String#initializeが呼ばれない

irb(main):029:0> class String
irb(main):030:1> alias_method :original_initialize, :initialize
irb(main):031:1> def initialize(str = '')
irb(main):032:2> original_initialize(str)
irb(main):033:2> @double = str*2
irb(main):034:2> end
irb(main):035:1> attr :double
irb(main):036:1> end
=> nil
irb(main):037:0> x = ""
=> ""
irb(main):038:0> x.double
=> nil
irb(main):039:0> x = String.new("hoge")
=> "hoge"
irb(main):040:0> x.double
=> "hogehoge"
irb(main):041:0>                                   

 呼ばれてほしい訳ではないが。

 ソース見りゃ済む話だけど、要は自分で定義したクラスとかだとrb_class_new_instance()からrb_obj_call_init()が呼ばれるのだが、CレベルでStringを生成する際は大概rb_str_new2?を使用する故initializeが呼ばれぬのだよ。

 ruby_1_8の話であり他は知らん。

お名前 : コメント :


2007-11-30 [長年日記] この日を編集

§ [program] 構文

 手続き型言語の構文が二十数年かけてRubyとかPythonに結晶化したように、関数型言語の構文もいつか結晶化するんだろう、いやむしろ世界のどこかに関数型言語のRubyとかPythonみたいなものがもうあるんじゃないか、とか書こうと思ったんです。

 でも待てよと。

 関数型言語のRubyとかPythonみたいなものって、Lisp系言語の事じゃないの?Rubyのコードが平易に見えるのは、動的型であるのも理由の一つでしょ。型付手続き型言語はC以来あんまり変わってないよな。平易な型付手続き型言語って見たことないかもしれん。

 じゃあ型付関数型言語の構文が平易になるのはまだ先か?

 MinCaml忘れてた。

 追記:型付→静的型。単に字数が少ないからじゃないかという気もする。じゃあ長い変数名つけたら同じか。例えばlib/date.rbのメソッドの中でy,m,dという変数名を多用しているが、これがyear,month,dayだったらやや重くなる(気がする)。と考えると、そのものズバリな変数名(databaseConnectionとかtableSalesOfMonthとか)をいちいち付けるのは野暮。しかしそれにしてもスコープの広い変数の名前は長くなる。まあlib/date.rbというかDateでy,m,dと書いたら普通year,month,dayのことだろう、という暗黙の同意があるから問題がないのであって、つまり普遍的な事象に関する文脈に沿った変数名だから短くてもいい。しかし、では普遍的な事象でない場合どうなのかとも思う。唐突にSIの話になるがプログラマはそのプログラムを書いている間は出来うる限り業務のプロでもあるわけだが、その仕事が終わってしばらくしてから読む場合、暗黙の同意を元にした変数名では読めないのではないか。

 バランスの問題に過ぎないとも思う。

 どうでもいい追記:井上陽水で「型がない」。

 真に型のない言語ってあるのか?

お名前 : コメント :