ときどきの雑記帖 i戦士篇

最新ページへのリンク
目次ページへのリンク

一つ前へ 2008年12月(下旬)
一つ後へ 2009年月(中旬)

ホームへ

2009年01月10日

■_

ジュンク堂池袋店での例のイベントに行ってきたのと、 帰宅してからもいろいろあったのでまとめている暇が(^^;

そうそう。 昨日書き忘れてたのだけど、今月のまつもとさんの日経Linuxでの連載記事。 C++に finaly があるように読めるけど、C++にはないよね? __finaly とかで使える処理系はあるけど。

メイド刑事のコミック版が3巻でおしまいになっててしょぼーん。

■_


シェルスクリプトでシンボリックリンク先が同一かチェックする方法 - hnwの日記

2009年1月9日(金) シェルスクリプトでシンボリックリンク先が同一かチェックする方法 この
エントリーを含むブックマーク このエントリーのブックマークコメントCommentsAdd Star

「シェルスクリプト中でシンボリックリンクのリンク先を比較したい -OKWave」というページを
見つけたんですが、もっとスマートに出来る気がしたので紹介します。実は-ef演算子が利用で
きます。

$ touch a b; ln -s a c ; ln -s c d
$ ls -lai [abcd]
188974 -rw-r--r-- 1 hanawa hanawa 0 2009-01-05 03:52 a
188976 -rw-r--r-- 1 hanawa hanawa 0 2009-01-05 03:52 b
188977 lrwxrwxrwx 1 hanawa hanawa 1 2009-01-05 03:52 c -> a
188978 lrwxrwxrwx 1 hanawa hanawa 1 2009-01-05 03:52 d -> c
$ if test a -ef c ; then echo "same file" ; fi
same file
$ if test a -ef d ; then echo "same file" ; fi
same file
$ if test c -ef d ; then echo "same file" ; fi
same file
$ if test b -ef d ; then echo "same file" ; fi
$


ここで利用している-efは下記のような演算子です。(bashのman pageより)

    file1 -ef file2

    True if file1 and file2 refer to the same device and inode numbers.


inode番号を比較するらしいのですが、どうやらシンボリックリンク自体のinode番号ではなく、
シンボリックリンクを辿った先の実体のinode番号を比較するようです。

たまたま手元の実装がそういう挙動だっただけなのか、違う挙動の環境もあるのかはわかりませ
ん。そもそも、由緒正しいshが標準装備しているのかも僕は情報を持っていません。ただ、
Ubuntu8.04とMacOS10.5のshでも上記と同じ挙動でした。

配布するようなシェルスクリプトでもこの-efの挙動を仮定して大丈夫なのでしょうか。どなた
か資料をお持ちの方は教えてもらえると嬉しいです。

とりあえず opengroup の test のところを見ると該当するようなオプション(や機能)が 書かれていないようなので、AIXとかSolarisあたりだと困ったことになるかもしれません。 って、odzさんが先にっw

まあ気づいた時点(土曜日の昼間)でとっととアップロードしとけという話ではあるんですが (記事自体はほぼそのときに書いてました)。



testT
he Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.
NAME

    test - evaluate expression

(略)


OPERANDS

    The application shall ensure that all operators and elements of primaries are presented as separate arguments to the test utility.

    The following primaries can be used to construct expression:

    -b  pathname
        True if pathname resolves to a file that exists and is a block special file. False
        if pathname cannot be resolved, or if pathname resolves to a file that exists but
        is not a block special file.
    -c  pathname
        True if pathname resolves to a file that exists and is a character special file.
        False if pathname cannot be resolved, or if pathname resolves to a file that
        exists but is not a character special file.
    -d  pathname
        True if pathname resolves to a file that exists and is a directory. False if
        pathname cannot be resolved, or if pathname resolves to a file that exists but
        is not a directory.
    -e  pathname
        True if pathname resolves to a file that exists. False if pathname cannot be
        resolved.
    -f  pathname
        True if pathname resolves to a file that exists and is a regular file. False
        if pathname cannot be resolved, or if pathname resolves to a file that exists
        but is not a regular file.
    -g  pathname
        True if pathname resolves to a file that exists and has its set-group-ID flag
        set. False if pathname cannot be resolved, or if pathname resolves to a file
        that exists but does not have its set-group-ID flag set.

(略)

    s1 =  s2
        True if the strings s1 and s2 are identical; otherwise, false.
    s1 !=  s2
        True if the strings s1 and s2 are not identical; otherwise, false.
    n1 -eq  n2
        True if the integers n1 and n2 are algebraically equal; otherwise, false.
    n1 -ne  n2
        True if the integers n1 and n2 are not algebraically equal; otherwise, false.
    n1 -gt  n2
        True if the integer n1 is algebraically greater than the integer n2; otherwise,
        false.
    n1 -ge  n2
        True if the integer n1 is algebraically greater than or equal to the integer
        n2; otherwise, false.
    n1 -lt  n2
        True if the integer n1 is algebraically less than the integer n2; otherwise, false.
    n1 -le  n2
        True if the integer n1 is algebraically less than or equal to the integer n2;
        otherwise, false.
    expression1 -a  expression2
        [XSI] [Option Start]
        True if both expression1 and expression2 are true; otherwise, false. The -a binary primary is left associative. It has a higher precedence than -o. [Option End]
    expression1 -o  expression2
        [XSI] [Option Start]
        True if either expression1 or expression2 is true; otherwise, false. The -o binary primary is left associative. [Option End]

(略)

RATIONALE

(略)

    On historical BSD systems, test -w directory always returned false because test 
    tried to open the directory for writing, which always fails.

    Some additional primaries newly invented or from the KornShell appeared in an 
    early proposal as part of the conditional command ( [[]]): s1 > s2, s1 < s2,
    str = pattern, str != pattern, f1 -nt f2, f1 -ot f2, and f1 -ef f2. They were not
    carried forward into the test utility when the conditional command was removed
    from the shell because they have not been included in the test utility built into
    historical implementations of the sh utility.

    The -t file_descriptor primary is shown with a mandatory argument because the 
    grammar is ambiguous if it can be omitted. Historical implementations have allowed
    it to be omitted, providing a default of 1.

■_

■_

フリーソフト作者の愚痴 34
857 仕様書無しさん [sage] Date:2009/01/10(土) 14:10:18  ID: Be:
    C言語の宿題の丸投げメール来た
    勘弁して欲しい 

858 仕様書無しさん [sage] Date:2009/01/10(土) 14:20:18  ID: Be:
    バイナリコードで返してやれ 

859 Socket774 [sage] Date:2009/01/10(土) 15:33:20  ID: Be:
    >>858
    コンパイルまですると疲れるしバイナリだと意味ないし。

    ここは余裕のある納期と絶対に損しない見積りを添えて丁重に返すのが大人の対応。
    納期が6ヶ月先で5万/日×日数、相当額の着手金を提示すれば普通は諦めて罵倒すると思うけどな。

861 仕様書無しさん [sage] Date:2009/01/10(土) 16:00:27  ID: Be:
    アセンブリコードで返してやればいい 

862 仕様書無しさん [sage] Date:2009/01/10(土) 16:05:44  ID: Be:
    いや、つまんないから 

863 仕様書無しさん [sage] Date:2009/01/10(土) 19:12:53  ID: Be:
    つーか返さなくて良いよ 

864 仕様書無しさん [sage] Date:2009/01/10(土) 19:30:25  ID: Be:
    そんなメールアドレスは存在しない云々のメール偽装しれ 

865 仕様書無しさん [sage] Date:2009/01/10(土) 19:35:57  ID: Be:
    初心者はメーラーデーモンからメール送られてくるとかなりビビるよな 

宿題丸投げじゃないけど、似たようなのがきたことがあるなあ。 思い出したくもない。

Perlについての質問箱 38箱目
923 デフォルトの名無しさん [] Date:2009/01/08(木) 11:41:29  ID: Be:
    my $p= [ { TAG => data, TAG2 => [ { TAG_INNER => data_inner} , ..] .. }, ... ];

    みたいな構造のデータを、まるごとコピーするには、何がいいでしょう。
    my $q = $p; としたのでは、あとで shift(@$p) とかすると、$q の内容も壊れてしまいますので。

    c で memcpy(q,p,sizeof(p)) とやるのと似た手はないでしょうか。 

924 デフォルトの名無しさん [sage] Date:2009/01/08(木) 12:05:10  ID: Be:
    >>923
    CPANでcloneをキーワードに検索するとそれっぽいのがいくつか
    出てくるので好きなの使え 

925 923 [sage] Date:2009/01/08(木) 12:15:57  ID: Be:
    おお thx 

926 デフォルトの名無しさん [sage] Date:2009/01/09(金) 10:39:22  ID: Be:
    use Storable; Storable::dclone($p) がオススメ。 

927 デフォルトの名無しさん [sage] Date:2009/01/09(金) 12:25:44  ID: Be:
    >>923
    Data::Dump::dumpして、evalするのはどうだろうか? 

928 デフォルトの名無しさん [sage] Date:2009/01/09(金) 12:29:38  ID: Be:
    …んな事までするくらいだったら普通に
    my $q = [ @{$p} ] ;
    で良いだろーに 

929 デフォルトの名無しさん [sage] Date:2009/01/09(金) 21:05:29  ID: Be:
    >>928
    アウト。

    リファレンスの先にさらにリファレンスが
    あった場合に破綻する。 

930 デフォルトの名無しさん [sage] Date:2009/01/10(土) 03:27:56  ID: Be:
    >>929
    memcpyなら一段しかコピーされないだろ 

931 デフォルトの名無しさん [sage] Date:2009/01/10(土) 05:49:46  ID: Be:
    >>930
    Cだと配列のメンバに構造体を持てるからね。
    当然、構造体のメンバに構造体や配列も持てて、明示的にポインタで分離していないならば
    memcpy一発で内包するデータごとコピーできる。

    質問(923)の「まるごとコピー」の解釈違いだろうけど、1段階の展開で間に合うならサンプル
    で多段階のリファレンスを持つ構造は書かないと思うよ。 

932 デフォルトの名無しさん [sage] Date:2009/01/10(土) 13:57:15  ID: Be:
    うゎあ、だんだん泥沼に…… 

933 デフォルトの名無しさん [sage] Date:2009/01/10(土) 17:45:17  ID: Be:
    Perl道とは泥沼に嵌ることと見つけたり 

934 デフォルトの名無しさん [sage] Date:2009/01/10(土) 18:09:30  ID: Be:
    perl6のことですね 

935 デフォルトの名無しさん [sage] Date:2009/01/10(土) 18:53:25  ID: Be:
    perl全般です 

936 デフォルトの名無しさん [sage] Date:2009/01/10(土) 20:00:11  ID: Be:
    Perlからの逃走。これを今年の抱負にします。いや、まじに。 

937 デフォルトの名無しさん [sage] Date:2009/01/10(土) 20:15:36  ID: Be:
    逃走しようとするとPerlがどこまでもしつこく追いかけてくる、いやマジで。 

938 デフォルトの名無しさん[ [sage] Date:2009/01/10(土) 21:56:49  ID: Be:
    ふと思ったんだが、perlって日本ユーザー会みたいなものあるのか?
    ググっても見当たらんのだが。

    rubyは当然としても、pythonはあるし…

    もっとも、無くても困らんからどうでもいいといえば、どうでもいいんだが… 

939 デフォルトの名無しさん [sage] Date:2009/01/10(土) 22:20:10  ID: Be:
    ユーザ会って何するグループなの? 

940 デフォルトの名無しさん [sage] Date:2009/01/10(土) 22:20:43  ID: Be:
    孤高のperlerに馴れ合いグループは必要ない 

941 デフォルトの名無しさん [sage] Date:2009/01/10(土) 23:10:11  ID: Be:
    http://perl-users.jp/
    からmongersでもたどってみれば? 

942 デフォルトの名無しさん [sage] Date:2009/01/11(日) 00:06:57  ID: Be:
    C言語もC++言語もないんじゃね? 

943 デフォルトの名無しさん [sage] Date:2009/01/11(日) 00:08:00  ID: Be:
    Perlはドキュメントの翻訳もはじめから個人がやってたからなあ。 

944 デフォルトの名無しさん [sage] Date:2009/01/11(日) 00:51:27  ID: Be:
    >>939
    お互いの傷を慰め合う 
Ruby 初心者スレッド Part 24 
311 デフォルトの名無しさん [sage] Date:2009/01/10(土) 14:01:03  ID: Be:
    青空文庫形式のテキストを処理しています。
    青空文庫形式では親文字とルビを次のように書いています。

     |親《おや》|文《も》|字《じ》

    これを一つにまとめる形で、

     |親文字《おやもじ》

    という形に変換(置換処理)したいのですが、どうすれば良いでしょうか。
    親文字が幾つあるかは一定していません。
    この処理を一行毎に行いたいのです。 

312 デフォルトの名無しさん [sage] Date:2009/01/10(土) 14:59:15  ID: Be:
    >>311
    irb> s = '|魑《ち》|魅《み》|魍《もう》|魎《りょう》が|跋《ばっ》|扈《こ》する'
    irb> 1 while s.gsub!(/|(.*?)《(.*?)》|(.*?)《(.*?)》/, "|¥¥1¥¥3《¥¥2¥¥4》")
    => "|魑魅魍魎《ちみもうりょう》が|跋扈《ばっこ》する"

    gsub!は置換が行われればレシーバ(s)を、行われなければnilを返す。
    1っていうのはとくに意味はない。後置whileを繰り返すためだけの存在。

313 デフォルトの名無しさん [sage] Date:2009/01/10(土) 15:13:57  ID: Be:
    s.gsub(/(|.+?《.+?》)(?!|)/){"|%s《%s》" % $1.scan(/|(.+?)《(.+?)》/).transpose}

    正規表現であまり悩みたくない人向け

    >>312
    gsub の第 2 引数は使うなとお達しが来てるはずだが 

314 デフォルトの名無しさん [sage] Date:2009/01/10(土) 15:27:57  ID: Be:
    初心者スレで transpose と sprintf 使って手抜きしてる人には言われたくないだろうな

    s.gsub(/(|.+?《.+?》)(?!|)/){
    base = Array.new
    ruby = Array.new
    $1.scan(/|(.+?)《(.+?)》/){|m|
    base.push(m[0])
    ruby.push(m[1])
    }
    # 以下の文字列が gsub(re){str} の str に当たるもの
    "|#{base.join('')}《#{ruby.join('')}》"
    }

    前にも gsub の 2番目の引数使ってた人がいたけど同一人物かね
    無駄にエスケープ連打せずにブロック使えという認識になってたと思う


315 デフォルトの名無しさん [sage] Date:2009/01/10(土) 15:42:35  ID: Be:
    >>312
    s = "|日《に》|本《ほん》|語《ご》の|漢《かん》|字《じ》"
    1 while s.gsub!(/|(.*?)《(.*?)》|(.*?)《(.*?)》/, "|\\1\\3《\\2\\4》")
    puts s

    |日本語字《にほんご》の|漢《かんじ》

316 デフォルトの名無しさん [sage] Date:2009/01/10(土) 15:43:46  ID: Be:
    > gsub の第 2 引数は使うなとお達しが来てるはずだが
    kwsk 

317 デフォルトの名無しさん [sage] Date:2009/01/10(土) 16:28:35  ID: Be:
    正規表現で漢字のかんむりやへんやつくりをマッチさせるにはどうするんですか? 

318 デフォルトの名無しさん [sage] Date:2009/01/10(土) 16:32:31  ID: Be:
    >>317
    

    どっかの誰かに「部首と漢字文字との対応表データ」を作ってもらうしかないね
    ネット上には適当なデータを作ってる熱心な人がいるから、それをRubyでどうにか使うしか 

319 デフォルトの名無しさん [sage] Date:2009/01/10(土) 16:37:40  ID: Be:
    発想としては斬新でけっこう好きだ
    その視点を失わずにプログラミングして欲しいなと思う 

323 デフォルトの名無しさん [] Date:2009/01/10(土) 19:33:38  ID: Be:
    (3.2-2.0) == 1.2 がfalseの理由を教えて下さい。 

325 デフォルトの名無しさん [sage] Date:2009/01/10(土) 19:47:19  ID: Be:
    >>323
    等しくない
    たぶん浮動小数点数の誤差のせい

    irb(main):024:0> sprintf("%.16f", 3.2 - 2.0)
    => "1.2000000000000002"
    irb(main):025:0> sprintf("%.16f", 1.2)
    => "1.2000000000000000" 

326 デフォルトの名無しさん [sage] Date:2009/01/10(土) 19:51:08  ID: Be:
    >>323
    浮動小数点だから

    何かを計算した結果の浮動小数点の値と、
    それ以外の数式で何かを計算した(あるいは計算していない)浮動小数点の値が、
    全く同じになるというようなことはふつう無い

    だから、小数を含んでいる数値は絶対にイコールで比較してはいけない

    どうしても比較したい場合は、たとえばその差を誤差並に小さな数 Float::EPSILON と比較する

    irb> (3.2 - 2.0) -1.2 < Float::EPSILON
    false
    irb> (3.2 - 2.0) -1.2 < Float::EPSILON*10
    true

    10倍や100倍以内なら同じ数値とみなしてよい 

327 デフォルトの名無しさん [sage] Date:2009/01/10(土) 19:53:11  ID: Be:
    >>323
    なるほど。
    てことは、浮動小数点数の比較は安易にするなってことですかね。

328 デフォルトの名無しさん [sage] Date:2009/01/10(土) 19:55:18  ID: Be:
    >>326
    ありがとうございます!
    そうゆうもんなんですね。
    PHPから入った素人なんで、勉強になりました。 

329 デフォルトの名無しさん [sage] Date:2009/01/10(土) 19:55:38  ID: Be:
    あ、いかん、絶対値とらないと

    ((3.2 - 2.0) -1.2).abs < Float::EPSILON*10

    こういうのでよろしこ 

330 デフォルトの名無しさん [sage] Date:2009/01/10(土) 19:55:47  ID: Be:
    rubyに限らず実数の比較をしないってのは基本
    おおむね>>26の通りなんだけど、欲を言えば絶対値を取っておくほうがいい 

331 デフォルトの名無しさん [sage] Date:2009/01/10(土) 19:57:40  ID: Be:
    厳密じゃなくていいのなら、文字列にして比較してしまうというのがいいかもしれん
    一般的な用途では文字レベルでしか判断しないからな

    irb> (3.2-2.0).to_s == 1.2.to_s
    true 

332 デフォルトの名無しさん [sage] Date:2009/01/10(土) 20:29:17  ID: Be:
    なぜ文字列にして比較を??
    数値の比較の話じゃなかったの? 

333 デフォルトの名無しさん [sage] Date:2009/01/10(土) 20:59:37  ID: Be:
    >>332
    文字列は

    てか浮動小数点の指数の基数って
    初心者の頃はずっと10なんだと思ってた。
    で、なんで誤差が発生するんだとさんざん悩んでみたり
    今からしたら俺アホかと


334 デフォルトの名無しさん [sage] Date:2009/01/10(土) 21:02:00  ID: Be:
    しまったメインの話題を途中やめにしてた

    数値を文字列に変換する過程である程度の誤差を丸めてくれるなら、
    >>329みたいな過程を記述する必要がないってこと

    たとえruby内で記録されている値が
    1.19999999999 であっても
    1.20000000001 であっても
    表示するときは最下位を丸めて 1.2 になると。

    浮動小数点はちょっとわかりにくいからwikipediaで調べてみそ
    http://ja.wikipedia.org/wiki/浮動小数点数 

341 デフォルトの名無しさん [sage] Date:2009/01/10(土) 21:27:17  ID: Be:
    >>332
    目に見える範囲の小数が等しいかどうかを調べるだけなら
    これが「我々がアタマの中で考えてる」処理に一番近い

    どちらが大きいかということが必要な場合はあまり(あるいは全く)使えないので用途に注意 

345 デフォルトの名無しさん [sage] Date:2009/01/10(土) 22:25:21  ID: Be:
    Float::EPSILON < Float::EPSILON
    false

    Float::EPSILON <= Float::EPSILON
    true

    0.0 < Float::EPSILON
    true

    って話?

346 デフォルトの名無しさん [sage] Date:2009/01/10(土) 22:27:51  ID: Be:
    Float::EPSILON とは <= で比較するのが正しいのかな

347 デフォルトの名無しさん [sage] Date:2009/01/10(土) 22:30:50  ID: Be:
    A <= B と A < B || A == B の動作違うのってまずくね 

349 デフォルトの名無しさん [sage] Date:2009/01/10(土) 23:05:35  ID: Be:
    >> 336
    マシンイプシロン Float::EPSILON は
    1.0 + Float::EPSILON != 1.0
    になる最小の数って意味だから違う。

    IEEE754 の浮動小数点表現では、32 ビットの単精度でも指数部は 8 bits、仮数部 23 bit あるから
    EPSILON はせいぜい 2.0**(-23) 程度

    >> Float::EPSILON + 1.0 == 1.0
    => false
    >> Float::EPSILON/2 + 1.0 == 1.0
    => true
    >> 1e-20 < Float::EPSILON
    => true

    だから、ちゃんと比較するなら絶対値で割ってから比較するべき
    abs((a-b)/b) < Float::EPSILON
    とか。b < Float::EPSILON のときの処理も必要だけど。

350 デフォルトの名無しさん [sage] Date:2009/01/10(土) 23:23:19  ID: Be:
    1.0 + Float::HOGE == 1.0
    になる最大の値 HOGE のことを何と言いますか 

351 デフォルトの名無しさん [sage] Date:2009/01/10(土) 23:25:12  ID: Be:
    マシンウプシロン 

352 デフォルトの名無しさん [sage] Date:2009/01/10(土) 23:29:49  ID: Be:
    Delphiだと引数にEpsilonを指定できる浮動小数用の比較関数(SameValueだっけか)が
    あるんだけど、Rubyにはないのん?

    いちいち絶対値とってそれがEpsilon以下って書かなきゃならない?
    組み込みかライブラリであれば教えて頼む 

353 デフォルトの名無しさん [sage] Date:2009/01/10(土) 23:32:30  ID: Be:
    http://i.loveruby.net/d/20040502.html 

354 デフォルトの名無しさん [sage] Date:2009/01/11(日) 00:00:41  ID: Be:
    Ruby Cookbookに載っているコード

    class Float
    def approx(other, relative_epsilon=Float::EPSILON, epsilon=Float::EPSILON)
    difference = other - self
    return true if difference.abs <= epsilon
    relative_error = (difference / (self > other ? self : other)).abs
    return relative_error <= relative_epsilon
    end
    end

    100.2.approx(100.1 + 0.1) # => true
    10e10.approx(10e10+1e-5) # => true
    100.0.approx(100+1e-5) # => false 

355 デフォルトの名無しさん [sage] Date:2009/01/11(日) 00:04:56  ID: Be:
    浮動小数点を比較しなきゃ逝けない用途って何?
    コンピュータに向いてない作業の一つだな。 

361 デフォルトの名無しさん [sage] Date:2009/01/11(日) 00:50:37  ID: Be:
    >>357
    http://pc11.2ch.net/test/read.cgi/tech/1200175247/302-312 

362 デフォルトの名無しさん [sage] Date:2009/01/11(日) 01:08:45  ID: Be:
    ここまでBigDecimalへの言及無し。
    ttp://www.ruby-lang.org/ja/man/html/BigDecimal.html

    irb> require 'bigdecimal'
    => true
    irb> BigDecimal.new("3.2") - BigDecimal.new("2.0") == BigDecimal.new("1.2")
    => true

363 デフォルトの名無しさん [sage] Date:2009/01/11(日) 01:11:56  ID: Be:
    浮動小数点数の比較の話をしてるんだからBigDecimalの出る幕は無いだろ 

364 デフォルトの名無しさん [sage] Date:2009/01/11(日) 01:20:00  ID: Be:
    >>354
    サンクス。組み込みではないっつーことか。

    >>355
    まーゲーム作るときとかちょっとした数値計算、
    後ユニットテスト書くときなんかにはいるけど、
    確かに最後の例以外Rubyには不適だかなあ 

369 デフォルトの名無しさん [sage] Date:2009/01/11(日) 01:33:47  ID: Be:
    >>363
    おおもとは、>>323
    > (3.2-2.0) == 1.2 がfalseの理由を教えて下さい。
    だから、小数を含む数の扱いについて一通り言及すべきだと思うんだ。 


話題に上る小数部の誤差の話ってのは大概が2が基数であることに起因するものなので、 浮動小数点数だから引き算の結果とリテラル数値の比較で同じはずのものがfalseになる というわけでもないんだけどね。 実際、昨年通ったIEEE 754の改定では10を基数にした浮動小数点数のフォーマットが規定されている。

【SICP】計算機プログラムの構造と解釈 Part2 [bbs2chreader]
230 デフォルトの名無しさん [sage] Date:2009/01/09(金) 00:41:37  ID: Be:
    訳が酷いな。
    「プログラムとして表現された機構の心の中と計算機の上での絶え間なき解明」
    全く意味がわからない。酷すぎる。

231 デフォルトの名無しさん [sage] Date:2009/01/09(金) 00:44:37  ID: Be:
    訳の巧拙ではなく日本語で読めることに価値がある。




    とんでもない嘘だ。日本語じゃねえもの。 

232 デフォルトの名無しさん [sage] Date:2009/01/09(金) 01:17:37  ID: Be:
    原書どっかに公開されてたじゃん
    日本語がわからんかったらそれ見るよろし 

233 デフォルトの名無しさん [sage] Date:2009/01/09(金) 04:50:15  ID: Be:
    >>231
    それは元の文も曲芸的だから仕方ないよ。

    The source of the exhilaration
      associated with computer programming
     is
       the continual unfolding
          within the mind
         and
          on the computer
       of mechanisms expressed as programs
      and
       the explosion of perception they generate.

    意訳
    プログラムとして表現されるメカニズムが、
    心とコンピュータで、終わることなく展開され、
    それにより知覚が爆発する。
    これがコンピュータプログラミングの興奮の源である。

234 デフォルトの名無しさん [sage] Date:2009/01/09(金) 11:18:47  ID: Be:
    基の英文も平易じゃないならなあ 

235 デフォルトの名無しさん [sage] Date:2009/01/09(金) 16:03:03  ID: Be:
    unfoldingを解明ってのはどうかと思う。
    このunfoldは、つぼみがひらく、心をひらくの「ひろげる」。
    次のexplosionと対応してる。
    Unfold Your Mind!って曲がある。 

236 デフォルトの名無しさん [sage] Date:2009/01/10(土) 04:03:19  ID: Be:
    >>233
    その訳ならよくわかりますね。
    意訳にしても。 

237 デフォルトの名無しさん [sage] Date:2009/01/10(土) 22:53:21  ID: Be:
    名著を偉い人の名前で翻訳したと言えば売れる
    っていう、、
    メジャーなアーチストの興行に付いて廻ってるヤクザのしのぎ並だろ。
    こんな商売が成り立ってるから日本のITは三流なんだ。 

238 デフォルトの名無しさん [sage] Date:2009/01/10(土) 23:06:11  ID: Be:
    >>236
    意訳といっても文構造代えただけで、
    言い換え、削除、付け足しはないけどね。
    Continual unfoldingとexplosion of perceptionの
    平置関係が、構造代えたから分かりづらくなってる。

    訳しにくい文だったから、
    全体を同程度の時間かけて翻訳すると、
    仕事としては割に合わないね。
    俺は余技でしか翻訳はしたことがないけれど。
    時給にするとコンビニバイト以下だったw

    ただ、もしSICPの翻訳をやるとしたら、
    持ち出しになっても時間をかけたと思うけれど。
    名著なので。出版に関われることは素晴らしいこと。 

239 デフォルトの名無しさん [sage] Date:2009/01/10(土) 23:49:24  ID: Be:
    ここのunfoldは解明でいいと思うけどね。絶え間なき解明とかカッコイイ。 


■_

ゲームプログラミングが出来る小学生は存在するのでしょうか? - Yahoo!知恵袋
草莽崛起ーPRIDE OF JAPAN マスコミが報道しなかったインド首相の国会演説
CFruhwirth's Weblog: Liskell standalone
Twitter / mizuami - cxx Tumblr
http://d.hatena.ne.jp/PyTest/

The Future of .NET Languages - developerFusion - the global developer community
Christian’s Projects - LDC 0.9 released
Revisiting Python
A 3-INSTRUCTION FORTH FOR EMBEDDED SYSTEMS WORK
Tiny C compiler written in Forth - comp.lang.forth | Google グループ
Things that amuse me

2009年01月08日

■_

・昨日の分をちょっといじって再利用。

・VAIO P
食指が動くなあ。 本当に買うかどうかは微妙だけど。

・日経Linux
まつもとさんの連載でIconがちょっとだけ登場。

■_

まあすでに何人か書いていますが。

Creating a minimal HTTP server in Haskell | Colin Ross から「Hasekellで書く最小のHTTPサーバー」 ステップごとに色々説明しているんだけど、結果のコードだけ :)

module Main where
 
import Prelude hiding (catch)
import Network (listenOn, accept, sClose, Socket, withSocketsDo, PortID(..))
import System.IO
import System.Environment (getArgs)
import Control.Exception (finally, catch)
 
main = withSocketsDo $ do
    [portStr] <- getArgs
    let port = fromIntegral (read portStr :: Int)
    servSock <- listenOn $ PortNumber port
    putStrLn $ "listening on: " ++ show port
    acceptLoop servSock
        `catch` (\e -> error $ "===EXCEPTION: " ++ (show e) ++ "===")
        `finally` sClose servSock 
 
acceptLoop :: Socket -> IO ()
acceptLoop servSock = do
    (cHandle, host, port) <- accept servSock
 
    hPutStr cHandle $ "HTTP/1.1 200 Ok\r\n" ++
                      "Content-Length: 2\r\n" ++
                      "\r\n" ++
                      "Hi"
    hClose cHandle
    acceptLoop servSock
  

読んでみてわかるようなわからないような…

■_

■_

上のリストの最後にあったVoodooのページから。

Voodoo - Annon Inglorion

Introduction

Voodoo is a programming language designed to be a thin abstraction layer over CPUs' 
native instruction sets and operating systems' calling conventions. It provides 
functionality to read and write memory, perform arithmetic, define and call functions, 
and not much more. In particular, Voodoo has no concept of types, let alone type 
safety. Voodoo is as dangerous as it is powerful.

Voodoo はCPU に固有の命令セットやオペレーティングシステムの呼び出し規約の上に
被さる abstraction layer を薄いものにするという設計がされているプログラミング
言語です。プログラミング言語としてメモリの読み書きや算術演算、関数の定義と
呼び出しといった機能を提供しますが、それ以外のものはほとんどありません。
特に、Voodoo には型という考えがなく(no concept of types)、
型安全 (type safety) といったものを放棄しています。
Voodoo は危険な反面、強力な言語なのです。

Rationale

When implementing programming languages, one of the hurdles to overcome is code 
generation. Ultimately, the program must be translated from the source language into 
machine code for the machine that the program is to run on. Generally, the code to be 
generated differs from machine architecture to machine architecture and from operating 
system to operating system. Implementing efficient code generators for all 
combinations of hardware and operating system requires a lot of work and expertise.

プログラミング言語を実装する際の one of the hurdles to overcome は
コード生成です。最終的にはプログラムはソース言語から
それが実行される機械に対応する機械語へと変換されなければなりません。
一般的には、生成しなければならないコードはマシンのアーキテクチャーや
オペレーティングシステムごとに異なるものになっています。
すべてのハードウェアとオペレーティングシステムの組み合わせに対する
コード生成器を効率的に実装するのは requires a lot of work and expertise.

To reduce the effort required for code generation, many programming language 
implementations compile to higher level languages, instead of to machine code. An 
existing implementation of the higher level language can then be used to execute the 
program. Unfortunately, many higher level languages provide models of computation that 
may hinder efficient implementation of the source language.

コード生成のために要求される労力を低減するために、多くのプログラミング言語は
機械語へコンパイルするのではなくそれよりも高水準の言語にコンパイルするように
実装されています。
既にある高水準言語の実装ではそのあとでプログラムを実行するのに使うことができます。
残念なことに、多くの高水準言語はソース言語の効率の良い実装を妨害してしまう可能性のある
models of computation を提供しているのです。


Voodoo aims to provide a level of abstraction high enough to reduce the effort of 
generating code for numerous target platforms, while allowing any construct to be 
expressed efficiently.

Voodooでは抽象化のレベルを、ある構造を効率よく表現できるようにするよりもむしろ
多くのターゲットプラットフォーム向けにコード生成するのに十分なレベルにまで落としました。

Language Overview (言語の概観)

A Voodoo program consists of a data, function definitions, and code. All of these are 
introduced by magic words such as "function", "call", and 
"string". Any part of the program may be preceded by a label, and labels can 
be referred to from the code. Finally, a program is divided into a data section and a 
code section.

Voodooのプログラムはデータ、関数定義、そしてコードから構成されます。
これらすべては“function”、“call”、“string” といった
magic words によって intorduceされます。
プログラムの任意の部分でラベルをpreced することができ、
ラベルはコードから参照することが可能です。
そして、プログラムはデータセクションとコードセクションとに分かれています。

Hello World in Voodoo (VoodooでのHello World)

section ".data"
greeting:
string "Hello, world!\x00"

section ".text"
import puts
export main

main:
function argc argv
call puts greeting
return 0
end function

以下略

データセクションとコードセクションがあるとかまるでアセンブリ言語。

■_

Re: [gawk-stable] bug: fatal error when getline from directory
http://lists.nongnu.org/archive/html/bug-gnu-utils/2009-01/msg00040.html

Re: egrep bug
http://lists.nongnu.org/archive/html/bug-gnu-utils/2009-01/msg00019.html

egrep の方は [A-Z] で期待通り大文字のみマッチにならないぞゴルァという タイムリーな話(笑)

■_

これもすでに紹介している人が。 _why が作っているという新言語。

why's potion at master — GitHub


README

         .ooo
          'OOOo
      ~ p ooOOOo tion ~
          .OOO
           oO      %% a little
             Oo    fast language.
            'O
             `
            (o)
        ___/ /          
       /`    \ 
      /v^  `  ,
     (...v/v^/
      \../::/
       \/::/ 


  ~ potion ~

  Potion is an object- and mixin-oriented (traits)
  language.

  Its exciting points are:

   * Just-in-time compilation to x86 and x86-64
     machine code function pointers. This means
     she's a speedy one. Who integrates very
     well with C extensions.

     The JIT is turned on by default and is
     considered the primary mode of operation.

   * Intermediate bytecode format and VM. Load
     and dump code. Decent speed and cross-
     architecture. Heavily based on Lua's VM.

   * Bootstrapped "id" object model, based on
     Ian Piumarta's soda languages. This means
     everything in the language, including
     object allocation and interpreter state
     are part of the object model.
     (See COPYING for citations.)

   * Scoped mixins. Basically, you can modify
     object behavior within a scope. So changes
     to core classes can be localized.
     ++ INCOMPLETE ++

   * Interpreter is thread-safe and reentrant.
     I hope this will facilitate coroutines,
     parallel interpreters and sandboxing.

   * Small. Under 10kloc. Right now we're like
     4,000 or something. Install sloccount
     and run: make sloc.

  However, some warnings:

   * Strings are immutable (like Lua) and byte
     arrays are used for I/O buffers.

   * No floating point support yet.

   * No error handling. I'm wary of just tossing
     in exceptions and feeling rather uninspired
     on the matter. Let's hear from you.

   * GC is reference counting. I know, I know,
     but I put my eggs in other baskets. At
     least it's quick.

以下略

■_ 2009年。あなたが学ぼうとすることは?

What new thing will you try to learn in 2009? - Stack Overflow

As a software developer, it is important to learn new things each year. What new tools, 
methodologies or technologies (including programming languages) are you looking to 
learn in 2009?


Once I've got to grips with Java I'll be tackling C#. I can't help but feel that C# is 
going to be successful.


WPF (I already started)


Improving my TDD skills and testing skills in general.

I would also like to do some Google Android development.


Learn and find a legitimate use for Prolog (hey I can always dream :-)


Python. I've heard so many good things I just have to try it.


I think Cloud Computing should be very interesting this year. I'll probably look in to 
Google App Engine which will probably push me in to learning more about using Python.

Silverlight is also gaining steam and look interesting.

Ruby 1.9 has been released and learning the new ins and outs should be big fun.

Other than that. I'm going to try to remain employed. :)


I'm working on learning to be a good technical lead. People are way harder than 
computers...

Now

    * jQuery
    * Windows Workflow
    * Scrum
    * Silverlight
    * SQL Server 2008 (its not too late...)

Later

    * Oslo (I hope late 2009, if it pleases the Microsoft gods)


■_

関数型言語ML(SML, OCaml, etc.), Part 5 

630 デフォルトの名無しさん [] Date:2009/01/01(木) 23:05:22  ID: Be:
    引く手あまたのプログラミング言語は?
    http://slashdot.jp/developers/article.pl?sid=08/04/06/2313251
    ---
    Java(16479件)、C++(8080件)、C#(7780件)、JavaScript(6749件)、
    Perl(5710件)、PHP(2641件)、Python(1408件)、COBOL(1207件)、
    Ruby(769件)、Lisp(33件)といった感じらしい。

    とりあえずJavaとC/C++/C#、あとJavaScriptを覚えれば、
    当分仕事には困らないようである。COBOLのしぶとさも目立つ。

    ちなみにHaskellやOCamlの求人は10以下だったそうだ。
    --- 

631 デフォルトの名無しさん [] Date:2009/01/03(土) 03:15:13  ID: Be:
    当然だ。HaskellやOcamlの素晴らしさを理解できる人種は
    限られているからな。JavaやC++みたいな糞言語を使う糞グ
    ラマがいる限り日本のIT産業の生産性は低いままだろう。
    今必要とされているのは我々のような高い能力をもつエンジ
    ニアであるにも関わらずスーツ族にはそりがわからんのですよ。
    うはwテラガンダムwww俺自重www

    こうですかわかりません 

632 デフォルトの名無しさん [] Date:2009/01/03(土) 05:18:13  ID: Be:
    パラダイムシフトはある日突然のように起こる 

633 デフォルトの名無しさん [sage] Date:2009/01/03(土) 11:20:18  ID: Be:
    >>631
    職業プログラマは免許制にすればいいんじゃね? 

634 デフォルトの名無しさん [sage] Date:2009/01/03(土) 11:43:11  ID: Be:
    >>633
    情報処理技術者試験の実務への役立ち度を考えると・・・ 

635 デフォルトの名無しさん [sage] Date:2009/01/03(土) 12:03:45  ID: Be:
    プログラマの能力なんて知ってる知らないでは計れない。
    圧倒的多数の凡グラマーとごく一部の神グラマーww 

636 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:21:35  ID: Be:
    >>634
    試験は基本中の基本の事柄が出てくるだけだよ。
    実務には直接関係ないかもしれないが、その程度のことも知らないようでは
    応用性がなくて35歳で定年を迎えるだけ。
    ソフトウェア開発を一生仕事にできるのは基本を知っている人間だけだよ。 

638 デフォルトの名無しさん [sage] Date:2009/01/03(土) 16:58:45  ID: Be:
    ソフ開で午後八割くらい午前四割くらいのおれは生きててはだめということですね。わかります 

639 デフォルトの名無しさん [sage] Date:2009/01/03(土) 17:58:29  ID: Be:
    >>633
    盲目的に試験勉強する人間はもううんざりだな。 

640 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:06:33  ID: Be:
    >>639
    たとえばプログラマでも東大院卒と公立高校卒とでは、やはり東大卒のほうが優秀な奴が多いよ。 

641 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:59:38  ID: Be:
    そりゃそうだ
    スタートは同じでも高卒と大卒では行き着く先が違う 

くだすれPython(超初心者用) その2 
900 デフォルトの名無しさん [sage] Date:2009/01/08(木) 17:20:07  ID: Be:
    Pythonでネットワークプログラミングしたいのですが参考になるサイト等教えてください。
    英語でも構いません。 

901 デフォルトの名無しさん [sage] Date:2009/01/08(木) 17:24:00  ID: Be:
    >>900
    とりあえず、日本の公式→本家だな
    話は、それからだ 

902 デフォルトの名無しさん [sage] Date:2009/01/08(木) 17:29:58  ID: Be:
    >>900
    円高の今のうちに買っておき給へ
    ttp://www.amazon.com/dp/1590593715/

903 デフォルトの名無しさん [sage] Date:2009/01/08(木) 17:50:04  ID: Be:
    >>901優しいな
    >>900感謝するべき 

904 デフォルトの名無しさん [] Date:2009/01/08(木) 18:02:19  ID: Be:
    感謝する 

905 デフォルトの名無しさん [] Date:2009/01/08(木) 20:59:58  ID: Be:
    感謝する 

906 デフォルトの名無しさん [sage] Date:2009/01/08(木) 21:30:47  ID: Be:
    顔射する 

907 デフォルトの名無しさん [sage] Date:2009/01/08(木) 21:40:50  ID: Be:
    twisted 

908 デフォルトの名無しさん [sage] Date:2009/01/09(金) 02:40:47  ID: Be:
    APressもオライリーみたいに日本法人作って翻訳してほしい 

ぐち0x1B ~最も働いている現場の人間から解雇~ 
25 仕様書無しさん [] Date:2009/01/08(木) 08:44:13  ID: Be:
    年末から年始にかけて殆ど休みなしの現場。
    体調崩す奴が多くて、風邪引いてダウンとかで1末納品が厳しくなってきている。
    が、俺は風邪をひかないよう体調管理し、リーダーも含めほぼ全員が一度は
    風邪で休んできていた中、昨日まで耐え抜いていた。

    だが、一昨日の晩に泊り込んだ時、横に寝ていたやつの風邪をとうとう
    もらってしまったようだ。(そいつは昨日39度の高熱で休んだ)

    俺も今朝38度5分と頭痛いし腹痛い、仕方が無いということで
    リーダーに電話した。
    ・・皆が休みまくっててイライラしてるのはわかるけど、、、今日がイライラの最高点だったのか、
    リーダー俺にぶちきれしやがった・・・今まで保ってたモチベーションも消え去ったよ。。

    「はあ?この忙しい中、風邪引くなんて何考えてんだ馬鹿野郎!!
     皆が体調管理に努めているというのに、お前はそれさえも出来ないのか!無能め!!
     いいか、今日中に必ず直せ。明日は這ってでも出てこい。
      本当なら今から迎えに行ってでも出勤させなければならない状況なんだからな!
      わかったか!!!」

    リーダー、あんたこないだ仮納品前後に風邪3日も休んだじゃねえか・・・
    といいたかったが頭痛いので「はあ」とだけ言って切って寝ることにした。
    なんでここまで耐えてきたうえ、仮納品前後に5人以上休んだ中を一人4連徹夜して
    仮納品チェックから資料作成まで全部一人でやった俺がここまで言われないといけないんだよ。

26 仕様書無しさん [sage] Date:2009/01/08(木) 09:29:54  ID: Be:
    >>25
    乙 とりあえず2日くらいは休んどけ
    最悪そのまま月曜まで連休でも。

    マジな話、無理して出てくると却って効率が落ちる

27 仕様書無しさん [] Date:2009/01/08(木) 10:11:51  ID: Be:
    まさかリーダーがこのスレ見ていたとは orz 
    すみません、今後一切書きません。

    ということで、リーダーからきちんと謝りの連絡がありました。
    気が立っていたので怒鳴りつけたが、功績はよくわかっているとのこと。
    ここ最近泊り込みや終電帰りばかりさせていたので、今までよくもってくれた、
    今回は忙しいがなんとか皆をフォローするので、無理せずきちんと休んで
    治してくれ、できれば明日には出てきてほしいが無理なら無理と早めに伝えてくれとのこと。

    医者行ってインフルじゃないと診断されて、帰ってきてさあ寝るか・・と思ったら
    まさかの留守電で心臓止まりそうになった。

    リーダーへの文句への謝罪も含めてここに結末だけ書いて寝ます。 

28 仕様書無しさん [sage] Date:2009/01/08(木) 10:16:19  ID: Be:
    壁に耳あり障子にメアリー 

31 仕様書無しさん [sage] Date:2009/01/08(木) 11:11:39  ID: Be:
    忙しいのにこんなスレ覗いてる場合じゃないだろ上司 

32 仕様書無しさん [sage] Date:2009/01/08(木) 11:13:04  ID: Be:
    ( ;∀;)イイハナシダナー 

33 仕様書無しさん [sage] Date:2009/01/08(木) 11:13:44  ID: Be:
    いや、ダメな職場ってそんなもんよ?

    どうせ早く終わらせても早く帰れないの分かってるから
    常に時間いっぱい使ってやる感じw 

34 仕様書無しさん [sage] Date:2009/01/08(木) 11:17:20  ID: Be:
    >>33
    会社に無限ループというバグが仕掛けられてるんだなw

35 仕様書無しさん [sage] Date:2009/01/08(木) 11:38:52  ID: Be:
    早く終わらせたら、早く帰れる方が、
    モチベーションも上がるし、仕事もみんな早くなるもんなんだけどな

38 仕様書無しさん [] Date:2009/01/08(木) 20:05:03  ID: Be:
    >25のリーダーへ。読んでるよな。

    いくら気が立っていたからといって、関係無い他者(しかも貢献してる他者)
    に当たり散らすなんてのは、上に立つ者として失格だ。

    謝罪したのは偉いが、それで毎回済ませようなんて思うなよ。 

39 仕様書無しさん [sage] Date:2009/01/08(木) 21:52:18  ID: Be:
    まぁ、人間ってのはそんなもんだ。
    特に今は上に立ちたくって立ってるわけじゃない奴も多いしな。
    もっと余裕のある仕事するにはどうしたらいいかとかそっちも重要。

    とりあえず良い雰囲気になったみたいだし、
    次からはお互いに気をつければいいさね。 

40 仕様書無しさん [sage] Date:2009/01/08(木) 21:57:20  ID: Be:
    >>27
    ガス抜きのいい機会だったよね。
    なんか意外とけっこううらやましいかも。 

■_ ごく一部の人向けw

3.1.6に対するパッチ

細かい説明などは後日。

2009年01月08日

■_

・しまった
途中まで仕込んでいた8日分のテキストを忘れてきてしまった。

■_ 正誤表

どっかにあったよなあと思いつつ探してなかったんですが、 某スレで紹介されてたキーワードで検索したら一発で見つかりました。 90年代はじめのテキストなので、最新版の訳本と比べるとどうなのかはわかりませんが まあそれはそれとして。



K & R 邦訳修正リスト
※ このページは Psycho氏が ネット上(niftyやvector等)で配布されています
    「K&R 2nd. 邦訳書の正誤リスト」 をWEBブラウザで読むのに見やすいように、
    色分けして行間を空けたHTMLに変換したものです。
    (もとは、テキストファイルを.lzs形式で圧縮した状態で配布されています)

    ※なお、この正誤リストは邦訳2ndの初期のものに対するもので、現在の邦訳は
    この正誤表がそれなりに反映されたものになっているらしいです。

    ※あとこちら でも正誤頁をかかれています。 

→ K&R2(訳書訂正版)の訳文について

                         91/11/24  by Psycho

 K&R 2nd. はC言語の最も基本的な文献でありながら、邦訳書には意味不明の個
所が多く、読んでいるうちにイヤになってきます。実は私もこの本を通読したこ
とはなかったのですが、思い立って、数ヵ月前に原著を買ってきて、邦訳書と並
べて通読してみました。そして、誤訳・悪訳の多さに驚きました。これでは、読
んでわからないのは当然です。言語仕様に関する誤解の元になる場合もあるでし
ょう。
 そこで、これら誤訳・悪訳・誤植とその訂正の一覧を作成してみました。C言
語のユーザは英語に強い人ばかりではないので、信頼できるのは原著だけという
のでは具合が悪いだろうからです。
 K&R 1st. の邦訳書もついでに読み比べてみましたが、なんと、その誤訳・悪訳
がほとんどそのまま 2nd. に引き継がれています(私は 1st. の原著は持ってい
ないが)。出版されて何年もたつのに、だれも教えてあげなかったのでしょうか。
それとも問題の個所が多すぎて、知っている人もあきらめていたのでしょうか
(このリストを書き出すだけでも大変な作業だった。これをダウンロードして邦
訳書と突き合わせて読むのも、かなりの手間であろう)。それはともかく、1st.
の邦訳書が出たのはC言語に関する日本語の本のないころだったので、間違いが
あっても、これを日本に紹介された石田先生の功績は大きかったのですが、2nd.
ともなれば翻訳に正確を期してもらいたかったと思います。

 まず、この正誤表についての注釈を書いておきます。

 使った本は次のものです。

  Brian W. Kernighan &\1 Dennis M. Ritchie
    "The C programming language", 1988, 1978.
    Prentice Hall, ISBN 0-13-110362-8 (pbk.)
    /* 表紙に SECOND EDITION と書かれ、ANSI C という赤スタンプのプリ
    ントされた版。ペーパーバック */

  石田晴久訳
    「プログラミング言語C 第2版 - ANSI 規格準拠」
    共立出版、1989 年 6 月 15 日、初版1刷

 最近の印刷では誤植はかなり直されているようですが、誤訳・悪訳はほとんど
直っていないようです。

 以下のリストでは、次の順序で問題点を書き出しています。

  1.章節の番号、邦訳書のページ、行(見出しは1行に数えるが、空行およ
    び図は数えない)
  2.邦訳書の訳
  3.正しい訳

以下略

■_ 文字クラスとか



シェルスクリプトで役立つテキスト文字列のパターンマッチングの基礎 - SourceForge.JP Magazine

キャラクタクラスの範囲指定に関しては、主として英語圏の人間が見逃し勝ちな問題も隠されて
いる。それは[a-z]という指定がアルファベットの小文字すべてに一致するとは限らないという
もので、より厳密に言うと小文字以外にもマッチする可能性があるのだ。

(略)

いずれにせよ[a-z]という指定をすれば26あるアルファベットの小文字に一致するというのは汎
用性のある一般的な想定と見なせるはずだが、アクセント付きのアルファベットまで考えた場合、
このパターン指定にてマッチさせることはできない。更にこの種の特殊なアルファベットに関し
ては、汎用性のあるマッチング指定ができないどころか、その確認法すら存在しないのである。
この種の問題の対処法としては、スクリプトを実行する個々の環境に応じてキャラクタセットの
指定も変更するしかないと考えておくのが無難だろう。

 現状ではksh(pdkshを除く)やbashなどに限定される話だが、一部のシェルはPOSIXにて導入
されたその他のキャラクタクラスも追加サポートしている。それは[[:class:]]という指定法で、

(略)

これとよく似たものに、特殊なコレーティング(collating)シンボルとのマッチングを行う
[.name.](地域や言語によっては、chといった特定アルファベットの組み合わせとその他のcとh
が並ぶ場合とではマッチングとソーティングに関する規則が異なるといった場合がある)、およ
び特定の小文字とそこから派生したアクセント付き記号といった等価クラスに対するマッチング
を行う[=name=]という規則がある。これらの規則は多国語対応のスクリプトを記述する際に便利
なはずだが、現状では実際の移植性を確保できるほどの普及はしていない。い

この日記でも何度となく指摘(紹介)していますが、a-z で指定したときの対象が aAbBcCdD....xXyYz となるような locale が実在します。 で、事情を知らないユーザーから「バグだーっ」と報告が来ると。 collating symbol と equivalence symbol ってまともに実装した環境はあるんだろうか?

■_

■_ あなたにオススメする十の言語(その1)

以前に言語の名前だけ紹介したもの。

H3RALD : 10 programming languages worth checking out
H3RALD

10 programming languages worth checking out
Sunday, December 21st 2008 @ 03:01 PM
Tags: programming Comments: 14

If you program for fun or profit, chances are that you know C, C++, Java, PHP, Perl, 
Python or Ruby. These programming languages are all widely known, and, to a different 
degree, used in commercial applications. At least some of them can safely be 
considered mainstream, even if that word has become so overused and misused that has 
almost lost its original meaning, if it ever had one. If you are earning your living 
by coding, it's often one of these languages that pays the bills. Nevertheless, true 
hackers frequently meander in other directions, exploring and discovering different 
paradigms and methodologies, sometimes to the most esoteric extremes.

あなたがプログラムすることを楽しみのためや利益のためにやっているのであれば、
C、C++、Java、PHP、Perl、Python、Rubyといった言語を知るチャンスです。
これらのプログラミング言語はすべて広く知られているものであり、
かつ異なる degreeに対する商用アプリケーションでも使われています。
少なくともこれらのうちのいくつかはメインストリームに位置していると考えても
大丈夫でしょう。
even if that word has become so overused and misused that has 
almost lost its original meaning, if it ever had one.
真のハッカー(true hackers) はしばしば
exploring and discovering different paradigms and methodologies
other direction にさまようのです。

    “The most obvious common ‘personality’ characteristics of hackers are high 
      intelligence, consuming curiosity, and facility with intellectual abstractions. 
      Also, most hackers are ‘neophiles’, stimulated by and appreciative of novelty 
      (especially intellectual novelty). Most are also relatively individualistic and 
      anti-conformist.”

   Eric S. Raymond, The Jargon File

Even if you're particularly devoted to one of the languages mentioned above, it is 
normal to be curious about what else is out there. As the end of the year approaches, 
I find myself thinking about learning - or at least become acquainted with - some less 
known, more experimental, programming languages. I was originally planning on learning 
another programming language as a New Year's Resolution, which is quite common among 
programmers. The most difficult task turned out to be choosing a particular language: 
there are so many out there which makes it very hard to decide.

もしあなたが先に挙げた言語のうちのどれか一つに忠誠を誓っていたとしても、
それ以外のものにも興味を示すことはおかしなことではありません。
the end of the year approaches として
わたしはいくつかのより知名度の低い、実験性の高いプログラミング言語を学習すること
 - or at least become acquainted with -
について考えてみたのです。
わたしは元々 プログラマーの quite common among である New Year's Resolution 
として異なるプログラミング言語の学習の計画を立てていました。
最も困難な作業はある特定の言語を選び出すことになっていました。
there are so many out there which makes it very hard to decide.
 
This article deals with ten possible candidates, and it's far from being an 
exhaustive list. The programming languages described henceforth are very different 
from each other, but they all have one thing in common: they all stimulate my 
curiosity in their own, very different ways.

この atricle では十個の possible candidatesを扱います。
and it's far from being an exhaustive list. 
これから紹介するプログラミング言語の数々はそれぞれがリストのほかのものと大きく異なって
いるものです。しかし、リストに挙げた言語のすべてに共通することがらが一つあります:
they all stimulate my curiosity in their own, very different ways.

    * Haskell
    * Erlang
    * Io
    * PLT Scheme
    * Clojure
    * Squeak
    * OCaml
    * Factor
    * Lua
    * Scala

Haskell

I tried to learn Haskell in the past. Quietly, I started diving into the multitude of 
articles, tutorials, overviews and even books about this fascinating academic language 
which claims to achieve functional purity though remaining extremely useful, practical 
and efficient. Sadly, I'm still not able to fully grasp some of its most crucial 
concepts, such as monads, but this still doesn't put me off wishing to learn the 
language.

わたしは過去にHaskellを学ぼうと挑戦したことがあります。
ひそかにこの
fascinating academic language が
achieve functional purity though remaining extremely useful, practical and efficient.
であると主張しているたくさんの
articles, tutorials, overviews and even books
に dive したのです。
悲しいことに Haskellでもっとも決定的なコンセプトである
モナドのようなものを
わたしはまだ完全に理解できていません。
でもまだHaskellを学ぶことを諦めてはいません。


If you've never enountered Haskell before, I find The Evolution of a Haskell 
Programmer an amusing and informative read. Although aiming to be humorous in a way, 
it serves a very important didascalic purpose: it is one of the most complete 
collections of the different paradigms and programming approaches Haskell allows.

もしあなたがこれまでHaskellに遭遇したことがないのであれば、
I find The Evolution of a Haskell Programmer an amusing and informative read.
Although aiming to be humorous in a way, it serves a very important didascalic purpose: 
Haskellによって可能となる異なるパラダイムとプログラミングアプローチ
の最も完全に近いコレクションの一つです。

Besides its very elegant, pragmatic and almost-magical syntax, what really intrigues 
me about this language is what it offers, in terms of features:

そのエレガントさや実用的かつほとんど魔術的な構文に加えて
わたしの好奇心を引き寄せたのは以下のようなことがらでした。


    * 9 different implementations (multiple compilers and interpreters)
      異なる九つの実装 (複数のコンパイラーとインタープリター)
      
    * Countless standard libraries packages which can be used to solve any programming challenge
      any programming challenge を解決するのに使うことのできるたくさんの標準ライブラリパッケージ
      
    * Abundant learning material
      ありあまるほどの learning material
      
    * Speed that rivals C and C++
      CやC++に匹敵するスピード
    
    * Very mature cross-platform compatibility
      非常に高度なプラットフォーム間の互換性

The catch? It is likely to be very different from any other language you might have 
encountered before, and that’s probably the reason why some people find it difficult 
to learn and master. That being said, if you are looking for a challenging (but very 
rewarding, I believe) New Year's Resolution, you should definitely go for this.

どうですか?
あなたがこれまで出会ってきたであろう言語とはかなり違ったものではありませんか?
それはまた、一部の人がこの言語を学んだりマスターすることが難しいと考える理由でもあります。
もしあなたが challenging New Year's Resolution を探しているのなら、
是非この言語に挑んでみるべきでしょう(得るところは多いとわたしは信じています)。

To get you started…
ここから始めてみよう

    * Official Haskell Wiki
    * Haskell Wikibook
    * Real World Haskell
    *  37 Reasons to Love Haskell
    *  Haskell for the Ruby Guy
    * A-Z of Programming Languages: Haskell
    * Learn you a Haskell for Great Good!
    * Haskell Hacking

リストの2番目以降は改めて。

■_

昨日だか一昨日辺りにDHHがblogに書いたことに噛み付いてるのがいるなあ (で、そのblogのコメント欄にDHH登場)。 誰か訳し(ry

2009年01月07日

■_

・バンダイチャンネル
プロモ映像とかOPは問題なく再生できるのに、本編がぜんぜん再生されないのはなぜだ。

■_

んー最近豊作なのはいいがこればっかりになるというのもなあ。

Lisp Scheme Part24 
925 デフォルトの名無しさん [sage] Date:2009/01/06(火) 01:03:48  ID: Be:
    ■問
    関数fのaからbまでの積分値を計算する手続きを定義せよ。
    引数にf,a,bとnをとり、Simpson公式を使うこと。(nは公式で使用する分割数で偶整数) 

926 デフォルトの名無しさん [sage] Date:2009/01/06(火) 01:23:31  ID: Be:
    >>925
    それがどうしたんだ? 

927 デフォルトの名無しさん [sage] Date:2009/01/06(火) 01:36:30  ID: Be:
    宿題の丸投げか 

928 デフォルトの名無しさん [sage] Date:2009/01/06(火) 02:30:56  ID: Be:
    教えて君はHead first Scheme読めば?英語だけど。 

929 デフォルトの名無しさん [sage] Date:2009/01/06(火) 10:51:21  ID: Be:
    >>925
    積分ぐらい紙とペンでやれよ 

930 デフォルトの名無しさん [sage] Date:2009/01/06(火) 12:41:18  ID: Be:
    >>925
    公式通りに愚直に実装したよ
    こんなの提出したら赤点喰らうだろうな
    これは多分SICP 1章の練習問題だから、綺麗なものはググったら見付かるだろう

    (define (simpson f a b n)
    (if (and (< b a) (zero? n))
    (error "undefined")
    (let* ((h (/ (- b a) n))
    (f0 (f a))
    (sige (do ((ret 0)
    (i 1 (+ i 1)))
    ((> i (- (/ n 2) 1)) ret)
    (set! ret (+ ret (f (+ a (* 2 i h)))))))
    (sigo (do ((ret 0)
    (i 1 (+ i 1)))
    ((> i (/ n 2)) ret)
    (set! ret (+ ret (f (+ a (* (- (* 2 i) 1) h)))))))
    (fn (f b)))
    (* (/ h 3) (+ f0 sige sigo fn)))))

    しかしsicpが教科書とか羨ましすぎる
    俺の学校は林晴比古の新C入門だった 

931 デフォルトの名無しさん [sage] Date:2009/01/06(火) 13:02:20  ID: Be:
    (* (/ h 3) (+ f0 (* 2 sige) (* 4 sigo) fn))ね…orz 

932 デフォルトの名無しさん [sage] Date:2009/01/06(火) 13:19:47  ID: Be:
    >>930
    > 俺の学校は林晴比古の新C入門だった

    ...説教してやるから先生連れてこい、とか言いたくなった 

933 デフォルトの名無しさん [sage] Date:2009/01/06(火) 13:25:25  ID: Be:
    >>930
    925じゃないが,やっぱSchemeすごいな.
    (define testfunc (lambda (x) (* x x)))
    (simpson testfunc 0 1 100)
    で「1/3」と出るんだね.C/Fortranばっかやってたから新鮮だわ. 

934 デフォルトの名無しさん [sage] Date:2009/01/06(火) 15:17:26  ID: Be:
    CLで

    (defun simpson (f a b n)
    (let* ((h (/ (- b a) n))
    (e (* 2 (loop for i from 1 to (1- (/ n 2)) sum (funcall f #1=(+ (* 2 i h) a)))))
    (o (* 4 (loop for i from 1 to (/ n 2) sum (funcall f (- #1# h))))))
    (* 1/3 h (+ (funcall f a) e o (funcall f b)))))

    (simpson (lambda (x) (* x x)) 0 1 2) ;=>1/3 

935 デフォルトの名無しさん [sage] Date:2009/01/06(火) 22:20:18  ID: Be:
    はひー 
    新年早々 積分で盛り上がるこのスレって 
    奇跡で出来てるんですね~ 

936 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:56:04  ID: Be:
    はい、そこ
    恥ずかしいS式禁止 

938 デフォルトの名無しさん [sage] Date:2009/01/07(水) 00:07:42  ID: Be:
    今年の抱負
    Seasoned Schemerの残り(15~最後)を読む!
    SICP読む!
    ものまね鳥読む!
    GEBよむ!
    わだばSchemerになる!わだばSchemerになる!
    わだばSchemerになる!わだばSchemerになる!
    わだばSchemerになる!わだばSchemerになる! 

939 デフォルトの名無しさん [sage] Date:2009/01/07(水) 00:08:44  ID: Be:
    xyzzy Lispで

    (defun simpson (f a b n)
    (let* ((h (/ (- b a) n))
    (i 1) (r 0) (e (* 2 (loop (if (> i (1- (/ n 2))) (return r)) (setq r (+ r (funcall f (+ (* 2 i h) a)))) (setq i (1+ i)))))
    (i 1) (r 0) (o (* 4 (loop (if (> i (/ n 2)) (return r)) (setq r (+ r (funcall f (- (+ (* 2 i h) a) h)))) (setq i (1+ i)))))
    )
    (* 1/3 h (+ (funcall f a) e o (funcall f b)))))

    (simpson '(lambda (x) (* x x)) 0 1 100) -> 1/3
    (simpson '(lambda (x) 1) 0 5 100) -> 5
    (simpson '(lambda (x) x) 0 5 100) -> 25/2

940 デフォルトの名無しさん [sage] Date:2009/01/07(水) 01:03:33  ID: Be:
    あらあら うふふ 

941 デフォルトの名無しさん [sage] Date:2009/01/07(水) 01:07:56  ID: Be:
    Alysia P. Hackerさんですか 

954 デフォルトの名無しさん [sage] Date:2009/01/07(水) 22:01:48  ID: Be:
    ARIAネタにつきあってくれたSchemerのみんな、ありがとう。 

955 デフォルトの名無しさん [sage] Date:2009/01/07(水) 23:37:09  ID: Be:
    こちらこそ、でっかいありがとうです。 

ものまね鳥の日本語版求む。

推薦図書/必読書のためのスレッド 43
619 デフォルトの名無しさん [] Date:2009/01/06(火) 20:11:57  ID: Be:
    友人が副業を手伝いたいと言い出したので、プログラミングを覚えさせようとしてるのですが、
    プログラミングの知識0でPCも会社でエクセルをいじるくらいだそうです。
    主としてC++、JavaScript(Ajax)、PHPあたりをやらせることになります。
    家にPCが無いので購入させたのですが、納期が今月末になりそうなので、
    PCが来るまでは座学で、来たら私が持っている本で
    これならわかるC++→AcceleratedC++→EffectiveC++→EffectiveSTLをやらせて
    その後プログラミングWindowsやAdvancedWindows、
    副読書としてプログラミング作法、珠玉のプログラミング等読ませるつもりですが、
    このPCが来るまでの数週間遊ばせておくのもなんですので、何かやらせようと思っております。
    本屋を見て回ったところ、
    これからはじめるプログラミングの基礎の基礎、アルゴリズムの絵本、栢木先生の基本情報技術者教室
    あたりが実機で動かす前の下知識としていいかなと思ったのですが、
    他に何か良書があったら教えていただけませんか?
    自分は十数年前にQuick-Cから始まり、C++やPerlやJava等適当にいじりながら覚えたもので、
    体系的に覚えたことがなく、初学者にどう教えたらいいものかわかりません。 

623 デフォルトの名無しさん [sage] Date:2009/01/06(火) 21:21:17  ID: Be:
    まあ、その友人がモノになることは無いだろうな 

626 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:14:02  ID: Be:
    >>619
    まずCASLIIでコンピュータアーキテクチャの基礎とマシン語をしっかり覚えさせる。
    ネタじゃなくてマジで。机上でステップ実行してバグ取りさせる。 

627 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:23:57  ID: Be:
    アセンブラとかCみたいな低レベルの言語からやれとか、机上デバッグとか、意味があるとは思えん。 

628 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:27:40  ID: Be:
    CASLはありだね。通常PCを使わずに学べるし。
    Cの文字列やポインタにもすんなり入っていけそうだ。 

630 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:32:41  ID: Be:
    アセンブラやるにしても、x86とか薦めてやってください。 

631 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:38:51  ID: Be:
    CALSかどうかは兎も角、
    コンピュータが時計仕掛けで、
    機械語を処理していることくらいは知ってなきゃダメだろ。
    メモリがプロセス毎に分けられているとか、スレッドでは共有とか、イメージつかめないだろうし。

    Excelをいじっただけなら、知らないことは沢山あるだろ。
    論理演算も概念から教えなきゃならないし、ドモルガンの法則を知っているかチェックしたほうがいい。
    コードの三構造も知らないだろうし、情報量の概念も分かるまい。
    そもそも、教えるつもりの予定にDB関連の内容がないし、副読本が異常に古い。 

632 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:38:53  ID: Be:
    やさしいアセンブラ入門、独習アセンブラ辺りでいいじゃん

633 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:41:27  ID: Be:
    オブジェクト指向のこころの前に読むといい、OOPの入門書って何がありますか? 

634 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:44:07  ID: Be:
    ドモルガンの法則くらい、EXCEL使ってれば知ってるんじゃないの。わからんけど。
    とりあえずCプログラミング入門以前でも薦めておきます。 

635 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:45:47  ID: Be:
    プログラミングは、アセンブラとかCみたいに低レベルから入るより、
    高レベルの言語から入ったほうが理解しやすいよ。
    アセンブラとか、プログラマの教養のひとつとして経験しといても
    いいけど、そんなに優先順位は高くない。 

636 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:46:08  ID: Be:
    >>630
    現実のCPUに向き合う機会があれば対象のアセンブラを学ぶことにして、基礎はCASLで
    いいんじゃないかな。 いきなりセグメントレジスタとか不憫すぎる… 

637 デフォルトの名無しさん [] Date:2009/01/06(火) 23:47:53  ID: Be:
    「プログラムはなぜ動くのか」にもCASLⅡがおすすめだって書いてあったな 

638 デフォルトの名無しさん [sage] Date:2009/01/06(火) 23:49:27  ID: Be:
    とりあえず>>637のプログラムはなぜ動くのかでいい気がする 

639 デフォルトの名無しさん [sage] Date:2009/01/07(水) 00:01:12  ID: Be:
    本人のやる気が出るようにうまくやらないとな・・・
    そっちの方が問題な気が 

641 デフォルトの名無しさん [sage] Date:2009/01/07(水) 00:45:58  ID: Be:
    プログラムはなぜ動くのか
    の矢沢って評判悪いじゃん 

642 デフォルトの名無しさん [sage] Date:2009/01/07(水) 00:54:11  ID: Be:
    あー、矢沢の本か。 

643 デフォルトの名無しさん [sage] Date:2009/01/07(水) 01:06:45  ID: Be:
    闘うプログラマーとかを読ませるとか 

644 デフォルトの名無しさん [] Date:2009/01/07(水) 01:10:10  ID: Be:
    >>641
    その本の評判はいいよ
    初心者限定だけど 

646 デフォルトの名無しさん [] Date:2009/01/07(水) 02:35:23  ID: Be:
    >>633
    前にかどうかはわからんが、おいらは↓この本がよいと思う。

     憂鬱なプログラマのためのオブジェクト指向開発講座
     ―C++による実践的ソフトウェア構築入門

     UML関連の記述はちと古いけど、この本はオブジェクト指向開発のキモが
    分析&設計であることと、その手法の基礎を教えてくれる。
     ちなみにC++知らなくてもほとんど理解できるぞ。

     そしてこれ↓。
     Delphi オブジェクト指向プログラミング

     マイナーな言語且つ古い本ですまないが、この本は、オブジェクト指向言語のキモが
    多態性であることを実装例を挙げて示してくれる。
     こちらも記載しているコード自体はDelphi知らなくても問題なく理解できる。

     オブジェクト指向書籍にはこういう指南書みたいなのが少ないような気がするよ・・・。
     
     

      

647 デフォルトの名無しさん [sage] Date:2009/01/07(水) 04:15:54  ID: Be:
    >>633
    Head first デザパタ 

648 デフォルトの名無しさん [sage] Date:2009/01/07(水) 09:09:57  ID: Be:
    結局デザインパターンを知らない人はデザインパターンを駆使したプログラムが
   読めないってことはデザインパターンを適用することによってプログラムの可読性を
   損ねてることになるよな知ってるひとが知らない人に勉強を強いるというのもなんか変だ 

649 デフォルトの名無しさん [sage] Date:2009/01/07(水) 09:28:30  ID: Be:
    アレだよアレ、に正式名称をつけただけなので
    勉強というのは大げさだ 

650 デフォルトの名無しさん [sage] Date:2009/01/07(水) 09:39:45  ID: Be:
    憂オブは、最近ブログで糞みそにけなされているのをいくつか見た。
    もう今の潮流にはあってないんじゃないか? 

651 デフォルトの名無しさん [sage] Date:2009/01/07(水) 10:12:30  ID: Be:
    >>650
    今じゃ色んなところで貶されてる。 

652 デフォルトの名無しさん [sage] Date:2009/01/07(水) 10:21:24  ID: Be:
    カモノハシ本とかメイヤー本薦めてれば玄人気取れます 

659 デフォルトの名無しさん [sage] Date:2009/01/07(水) 20:01:41  ID: Be:
    憂鬱はねえ、自分がCからC++に移る、5年くらい前に読んだときは目からウロコと思ったし
    実際読んでおいて良かったと思えるけど、今ひとに薦めるか、と言われると考えてしまうな。 

660 デフォルトの名無しさん [sage] Date:2009/01/07(水) 20:15:29  ID: Be:
    当時はいやダメ本だろって何がダメか詳細に語ったもんだが、袋叩きにあったよ。
    時代がやっと追いついてくれたのか。

661 デフォルトの名無しさん [sage] Date:2009/01/07(水) 20:22:04  ID: Be:
    >>659
    結城本じゃなければ、今からCを始めるプログラミング初心者に勧める本はなんですか?

662 デフォルトの名無しさん [sage] Date:2009/01/07(水) 20:56:25  ID: Be:
    >>661
    C言語ですか?それなら>>1のまとめサイトにあるものどれでもたいして変わらないんじゃないかなあ。
    個人的には、総合的な入門書の他に「C言語ポインタ完全制覇」を薦めたい。 

663 デフォルトの名無しさん [sage] Date:2009/01/07(水) 21:56:16  ID: Be:
    憂鬱本のダメさは少し前にここで議論されていたはずだけど(私が質問したんだが) 

666 デフォルトの名無しさん [sage] Date:2009/01/07(水) 22:30:11  ID: Be:
    憂鬱は、まあ、あれ読んでも、オブジェクト指向できるようにはならないな。 

667 デフォルトの名無しさん [sage] Date:2009/01/07(水) 22:34:16  ID: Be:
    >>666
    何読めばオブジェクト指向できるようになりますか? 

669 デフォルトの名無しさん [sage] Date:2009/01/07(水) 23:12:27  ID: Be:
    ちょっと古い本だけど、 これはどうかな。
    P. Wegner (著), 尾内 理紀夫 (翻訳)
    はやわかりオブジェクト指向 共立出版 

本屋で見かけたので、「プログラムはなぜ動くのか」をちょっと立ち読みしたんですけど、 浮動小数点数のところとデータ圧縮のところの説明が怪しい。 間違いだとは断言できないのだけど、えー? と首を傾げる感じな。 金払ってまでDISる気にはなれないのでまあそゆことで。

Perlについての質問箱 38箱目 
911 デフォルトの名無しさん [sage] Date:2009/01/06(火) 13:17:53  ID: Be:
    >>829さんの、

    print if /^state/ .. '';

    ですが、最後のシングルクォーテーション2つ「''」は
    何を意味するのでしょうか?「行の最後」ってこと?
    この処理のロジックを説明していただけませんか?
    「もし行頭がstateの場合~」というところまではわかるのですが… 

912 デフォルトの名無しさん [sage] Date:2009/01/06(火) 13:37:15  ID: Be:
    >>911
    どう見てもただの空文字列だろ。

    スカラーコンテキストの「..」演算子の意味を理解すればいいと思うよ。 

913 デフォルトの名無しさん [sage] Date:2009/01/06(火) 13:49:23  ID: Be:
    >>912
    「空文字」を指定しているのはわかります。
    (最初は改行文字の指定の\nを省略したものだと思いましたが。)
    でも範囲演算子「..」の後に空文字指定ってどういうロジック?
    「空文字が見つかるまで」というロジックなのか、
    「空文字もすべて」ということなのか、判断がつきません。
    上のif文のロジックを言葉で説明してくれませんか? 

914 デフォルトの名無しさん [] Date:2009/01/06(火) 14:18:00  ID: Be:
    perltrap.podに「Perl4とPerl5でsplitのデフォルトが変わりました」
    という記事のサンプルで理解できない部分があります。
    split(/ /)とsplit(' ')で動きが違う(先頭の空要素の有無)のを
    どう解釈すればいいのか教えていただけないでしょうか?
    (パターンが空白以外の時は同じ動きです)

    #!/usr/bin/perl
    # This is perl, v5.8.6 built for i386-linux-thread-multi
    use warnings;
    use strict;

    $_=' hi mom';
    print "<",join(':', split(/ /)),">\n"; # <:hi:mom> Perl4 DEFAULT
    print "<",join(':', split(' ')),">\n"; # <hi:mom> Perl5 DEFAULT

    $_=',hi,mom';
    print "<",join(':', split(/,/)),">\n"; # <:hi:mom>
    print "<",join(':', split(',')),">\n"; # <:hi:mom>

915 914 [sage] Date:2009/01/06(火) 14:23:25  ID: Be:
    アゲてしまいすいません 

916 デフォルトの名無しさん [sage] Date:2009/01/06(火) 14:24:06  ID: Be:
    >>913
    912じゃないけど、本をよく読みなよ。
    「/^state/ .. ''」は「/^state/」が真になった後に「''」が真になるまで
    真を返すわけだが、「''」は真にならないので、「/^state/」が真になった後、
    「/^state/ .. ''」は常に真になる。 

917 デフォルトの名無しさん [sage] Date:2009/01/06(火) 14:26:12  ID: Be:
    >>913
    たぶんこれだな

    プロンプト>perldoc perlop
    より抜粋
    In scalar context, ".." returns a boolean value. The operator is
    bistable, like a flip-flop, and emulates the line-range (comma) operator
    of sed, awk, and various editors. Each ".." operator maintains its own
    boolean state. It is false as long as its left operand is false. Once
    the left operand is true, the range operator stays true until the right
    operand is true, *AFTER* which the range operator becomes false again.
    It doesn't become false till the next time the range operator is
    evaluated. It can test the right operand and become false on the same
    evaluation it became true (as in awk), but it still returns true once.
    If you don't want it to test the right operand till the next evaluation,
    as in sed, just use three dots ("...") instead of two. In all other
    regards, "..." behaves just like ".." does. 

918 デフォルトの名無しさん [sage] Date:2009/01/06(火) 14:29:48  ID: Be:
    >>914
    splitのエントリに書いてある 

919 914 [sage] Date:2009/01/06(火) 14:44:37  ID: Be:
    ありがとうございます。
    split(' ')だけ特別なのですね。 

920 デフォルトの名無しさん [sage] Date:2009/01/06(火) 15:00:05  ID: Be:
    >>916: 本を読みなといいつつ親切に噛み砕いて説明
    >>917: マニュアルを代わりにひいてペースト
    >>918: マニュアルのここに書いてある、だけ

    次に「マニュアル読め!」が来たら完璧だったのに。

921 デフォルトの名無しさん [sage] Date:2009/01/06(火) 15:09:57  ID: Be:
    最近、偉人ググレカス見かけないな 

922 デフォルトの名無しさん [sage] Date:2009/01/06(火) 20:32:29  ID: Be:
    今の人は、すぐググっちゃうからね 
スレを勃てるまでもないC/C++の質問はここで 5
754 デフォルトの名無しさん [sage] Date:2009/01/05(月) 02:49:45  ID: Be:
    規格書高ぇ・・・ 

760 デフォルトの名無しさん [sage] Date:2009/01/05(月) 11:46:49  ID: Be:
    >>754
    X3010なら俺の上でアンアン言ってるぜ 

761 デフォルトの名無しさん [sage] Date:2009/01/05(月) 13:15:32  ID: Be:
    それ規格書じゃなくて魔導書じゃね? 

762 デフォルトの名無しさん [sage] Date:2009/01/05(月) 20:33:37  ID: Be:
    インデックスか 

764 デフォルトの名無しさん [sage] Date:2009/01/05(月) 20:45:14  ID: Be:
    >>762
    イ、禁書目録? 

■_ いかにして心配することをやめ、Python3を愛するのか

===
How to stop worrying and love Python 3 ≪ Lennart Regebro: Plone consulting
http://regebro.wordpress.com/2008/12/06/how-to-stop-worrying-and-love-python-3/

How to stop worrying and love Python 3
Posted on December 6, 2008 by Lennart Regebro

There is loads of discussion about Python 3 right now, with people lovin' and people
hatin'. Mostly lovin' it has to be said. And just to clear some things up right now:

Python 3を愛する人と嫌う人との間での(Python 3についての) discussion が正に今行われています。
Mostly lovin' it has to be said. And just to clear some things up right now:

Firstly, unless you are the maintainer of a python library, there is no, I repeat no,
reason for you to port to Python 3 right now except that you probably will like it
better. That's it. Python 3 is a amazing language, but Python 2 is still great! If you
are happy with Python 2, you can ignore Python 3 and continue as normal. It will take
some time before even most Linux distros come with Python 3, dot-zero releases always
have bugs, etc, etc. There will come a time where there are more reasons. I'd expect
that in a year or so we'll start getting Python 3 only libraries and stuff. But right
now, there is no reason.

まず第一に、あなたがpytonライブラリのメンテナーでない限り、今Python 3に移行する理由は
ありません。大事なことだから繰り返します。移行する理由はありません。
ただし you probably will like it better. な場合を除きます。
これで決まりです。
Python 3 は amazing language です。でも、Python 2だって greatなんです!
あなたがPython 2を使っていて不満も何もないのならPython 3を無視してPython 2を
使いつづけることができます。
多くのLinux ディストロがPython 3を収録するには時間が掛かるでしょうし、
.0 リリースというのはバグがあるのが常です。そのほかにもまあ色々と。
There will come a time where there are more reasons.
わたしは一年かそこらのうちにPython 3専用のライブラリなどが出始めるだろうと予測していますが、
現時点では移行しなければならない理由はないのです。

Secondly, porting to Python 3 is not so painful as you might be led to believe som
from the discussion. 2to3 works fine. I did some testing by runnig a highly complex
and magical piece of software through 2to3 in august, namely setuptools. Sure, it didn't
work straight out of the box, but I did get it working. The big problem was that
setuptools mixes binary and string data in it's filehandling. It opens files without
either a text or a binary flag, because in python 2.x that flag doens't actually do
anything, and then looks to see if it's binary or string data by looking at the start
of the file. That part needs to be rewritten. I got it, and buildout, running it's
tests and seemingly working with a couple of hours of quick and dirty fixes. Other
than that, it worked. 99% of Python software will require that level or lower of TLC
after conversion, and converting to Python 3 will for a software project of typical
sizes be about a days work, I guess. And the people that needs to port early is going
to write documentation for you to help you. So don't worry. The problem is if you
need to support Python 2.5 and Python 3 from the same codebase, because then you will
want to modify your 2.5 code so that the 2to3 conversion works without you needing to
make any changes to the code afterwards. That's a bit more work.

二番目に、Python 3に移植するのは
(as you might be led to believe som from the discussion ほどには)
苦痛ではありません。2to3はよくできています。
I did some testing by runnig a highly complex and magical piece of software
through 2to3 in august, namely setuptools.
もちろん
Sure, it didn't work straight out of the box, but I did get it working. 
大きな問題だったのは、setuptools がファイルを取り扱うのにバイナリデータと文字列データとを
混在して使っていたことにあります。setuptools はテキストフラグとバイナリフラグのいずれも
指定せずにファイルをオープンしていました。それは python 2.x には
そのような指定をするフラグは存在していなかったので
ファイルの先頭部分を見てそのファイルがバイナリなのかテキストなのかを
判定する必要があったからです。この部分は書き直す必要がありました。
I got it, and buildout, running it's tests and seemingly working with a couple of
hours of quick and dirty fixes. Other than that, it worked.
99% of Python software will require that level or lower of TLC after conversion,
and converting to Python 3 will for a software project of typicalsizes be about a days work,
I guess. And the people that needs to port early is going to write documentation for
you to help you. So don't worry. 
問題なのはPython 2.5 と Python 3の両方を同じコードベースでサポートする必要がある
ときのことです。それは2.5のコードを修正したくなってしまって
2to3 での変換が
you needing to make any changes to the code afterwards.
を抜きに動いてしまうからです。
That's a bit more work.


Thirdly, it's perfectly possible to write code that works under both 2.6 and 3.0
without conversion. Yes, I know the whatsnew document doesn't recommend that, but
that document is seriously outdated, and for example claims that you can't use print.
This is incorrect, there if since a long time ago a future import that deals with that
in 2.6. And before you need to port to 3.0 there will probably be a 2.7 out, with even
more forward compatibility. Most software projects out there doesn't need to support
more than one Python version at a time. Those who do, that is libraries and framework
plugins, can for the most part move to 3.0 gradually and support two Python versions
at the same time.

三番目に、変換を必要とせずに2.6でも3.0でも動作するコードを書くことは perfectly possible です。
whatsnew document がそれを薦めていないことはわたしももちろん知っています。
でもそういったドキュメントは seriously outdated なもので、
たとえば print を使うことができないといったことを主張していたりします。
これは正しくありません。
2.6にはそれに対処する future import がずいぶん前から存在しています。
あなたが3.0への移行が必要となるよりも前に、より forward compatibility を備えた
2.7がおそらくはリリースされることでしょう。
大部分のソフトウェアプロジェクトは二つ以上のバージョンのPythonを一度に
サポートする必要はありません。
Those who do, that is libraries and framework plugins,
can for the most part move to 3.0 gradually and support two Python versions at the same time.


So, the conclusion is, Python 3 is not scary, it's not so incompatible as you think,
and I do not think it's going to split the community. That was a serious worry two
years ago, but those who raised that worry, like me and Martijn Faassen, was listened
to, and 2.6 has serious amounts of backwards compatibility. So take it easy, it's
going to be fine!

ですから、結論は Python 3は scary でないということであり、
あなたの考えるような非互換性はなく、
そしてコミュニティを分断するようなことは起こらないとわたしは確信しているのだということです。
That was a serious worry two years ago, but those who raised that worry,
like me and Martijn Faassen, was listened to,
and 2.6 has serious amounts of backwards compatibility. So take it easy,
it's going to be fine!

Why Python 2.6 and 3.0 compatibility would be a Very Good Thing. ≪
Lennart Regebro: Plone consulting
http://regebro.wordpress.com/2008/03/22/why-python-26-and-30-compatibility-would-be-a-very-good-thing/?referer=sphere_related_content/

■_ 宿題

年末年始の休み中に終わらせておくはずだったんだけど、 gawk に inplace-edit 機能をつけるためのメモ。 たぶん↓この辺をいじる必要がある。


builtin.c
/*
 * redirect_to_fp --- return fp for redirection, NULL on failure
 * or stdout if no redirection, used by all print routines
 */

static inline FILE *
redirect_to_fp(NODE *tree, struct redirect **rpp)
{
       int errflg;     /* not used, sigh */
       struct redirect *rp;

       if (tree == NULL)
               return stdout;

       rp = redirect(tree, &errflg);
       if (rp != NULL) {
               *rpp = rp;
               return rp->fp;
       }

       return NULL;
}
/* do_printf --- perform printf, including redirection */

void
do_printf(NODE *tree)
{
       struct redirect *rp = NULL;
       register FILE *fp;

       if (tree->lnode == NULL) {
               if (do_traditional) {
                       if (do_lint)
                               lintwarn(_("printf: no arguments"));
                       return; /* bwk accepts it silently */
               }
               fatal(_("printf: no arguments"));
       }

       fp = redirect_to_fp(tree->rnode, & rp);
       if (fp == NULL)
               return;
       tree->lnode->printf_count = tree->printf_count;
       tree = do_sprintf(tree->lnode);
       efwrite(tree->stptr, sizeof(char), tree->stlen, fp, "printf", rp, TRUE);
       if (rp != NULL && (rp->flag & RED_TWOWAY) != 0)
               fflush(rp->fp);
       free_temp(tree);
}


eval.c
       case Node_K_print:
               INCREMENT(tree->exec_count);
               do_print(tree);
               break;

       case Node_K_print_rec:
               INCREMENT(tree->exec_count);
               do_print_rec(tree);
               break;

       case Node_K_printf:
               INCREMENT(tree->exec_count);
               do_printf(tree);
               break;

       case Node_K_delete:

awkgram.y
simple_stmt
       : print { in_print = TRUE; in_parens = 0; } print_expression_list output_redir
         {
               /*
                * Optimization: plain `print' has no expression list, so $3 is null.
                * If $3 is an expression list with one element (rnode == null)
                * and lnode is a field spec for field 0, we have `print $0'.
                * For both, use Node_K_print_rec, which is faster for these two cases.
                */
               if ($1 == Node_K_print &&
                   ($3 == NULL
                    || ($3->type == Node_expression_list
                       && $3->rnode == NULL
                       && $3->lnode->type == Node_field_spec
                       && $3->lnode->lnode->type == Node_val
                       && $3->lnode->lnode->numbr == 0.0))
               ) {
                       static short warned = FALSE;

                       $$ = node(NULL, Node_K_print_rec, $4);

                       if (do_lint && $3 == NULL && begin_or_end_rule && ! warned) {
                               warned = TRUE;
                               lintwarn(
       _("plain `print' in BEGIN or END rule should probably be `print \"\"'"));
                       }
               } else {
                       $$ = node($3, $1, $4);
                       if ($$->type == Node_K_printf)
                               count_args($$);
               }
         }


output_redir
       : /* empty */
         {
               in_print = FALSE;
               in_parens = 0;
               $$ = NULL;
         }
       | IO_OUT { in_print = FALSE; in_parens = 0; } common_exp
         {
               $$ = node($3, $1, (NODE *) NULL);
               if ($1 == Node_redirect_twoway
                   && $3->type == Node_K_getline
                   && $3->rnode != NULL
                   && $3->rnode->type == Node_redirect_twoway)
                       yyerror(_("multistage two-way pipelines don't work"));
         }
       ;

まあ一時ファイルをどのタイミングでどのように作るのかと、 変更を元ファイルに反映させるやり方は気をつけないといけないのだけど (エディタでバックアップファイルを作るときと同じ)、とりあえずその辺は後回し。

■_

http://stackoverflow.com/questions/414779/what-should-a-self-taught-programmer-with-no-degree-learn-read
http://stackoverflow.com/questions/418896/how-to-redirect-output-to-a-file-and-stdout
http://stackoverflow.com/questions/415537/math-programming-and-learning
http://stackoverflow.com/questions/418914/why-is-c-so-fast-and-why-arent-other-languages-as-fast-or-faster
http://stackoverflow.com/questions/418876/what-was-your-most-uncomfortable-programming-experience
http://stackoverflow.com/questions/377361/sum-of-the-digits-of-the-number-21000

What calculator is an aid to you as a programmer? - Stack Overflow
http://stackoverflow.com/questions/418612/what-calculator-is-an-aid-to-you-as-a-programmer

K&R Exercise 2-4 - Stack Overflow
http://stackoverflow.com/questions/418894/kr-exercise-2-4

How to add padding bytes to a bitmap? - Stack Overflow
http://stackoverflow.com/questions/419045/how-to-add-padding-bytes-to-a-bitmap

How Do You Read Books? - Stack Overflow
http://stackoverflow.com/questions/419042/how-do-you-read-books

char x[256] vs. char* = malloc(256*sizeof(char)); - Stack Overflow
http://stackoverflow.com/questions/419022/char-x256-vs-char-malloc256sizeofchar

Compile time checking in Design by Contract? - Stack Overflow
http://stackoverflow.com/questions/418588/compile-time-checking-in-design-by-contract

A Perl6 Christmas
http://dave.whipp.name/sw/perl6/perl6_xmas_2008.html

2009年01月06日

■_

忙しいんだか忙しくないんだか

■_ 例のC標準ライブラリ関数のリファレンス本

数日前にけちつけたあれですが、通勤途中の書店でも見かけたので getsの解説とかを確認してみました。

gets に関して一言も注意がない
strncpy の動作の説明が中途半端(nに対して転送元が短いときの0埋め動作の解説がない)

だめだこりゃ○| ̄|_

■_ xgawk

方針をいきなり戻して、古いライブラリ使ってでも実行ファイルが作れるかを先にやることにした。

・Makefile を以前のものからコピー
・xml*.[ch] を extensions の下からコピー
・encoding 関連のファイルを以前のものからコピー(作るの面倒くさかった)
・一回目のmake
・ R_OK が未定義だとエラーにされたので、適当に定義。

#define R_OK 1
#define W_OK 2
#define X_OK 4

・gawkmisc.pc がないと文句いわれたので、以前のものからコピー
・getid.c が ヾ
・main.c でインクルードしようとしている
#include <sigsegv.h>
なんてヘッダーファイルはないのでインクルードしないように #ifndef する

  if (i < s->nelem && p.index == s->elems[i].index)
    s->elems[i].constraint |= p.constraint;
  else
    {
      ++s->nelem;
      int update_pos;
      for (update_pos = s->nelem - 1; update_pos > i; update_pos--)

のようにC99しているので update_pos の宣言場所を前の行と入れ替える

などしてみて

make  all \
        "CC=cl -nologo" O=.obj "CF=-o2 -DWIN32 -D__STDC__=0 -MT" \
        OBJ=popen.obj \
        LNK=LvcWin32
make[1]: Entering directory `/cygdrive/d/work/src/xgawk/xgawk-3.1.6a-20090101'
cl -nologo -c -o2 -DWIN32 -D__STDC__=0 -MT -DGAWK -I. -I./iconv -DHAVE_CONFIG_H getid.c
getid.c
echo array.obj builtin.obj eval.obj field.obj floatcomp.obj gawkmisc.obj io.obj main.obj xml_puller.obj > gawk.rsp
echo ext.obj msg.obj node.obj profile.obj re.obj replace.obj version.obj  >> gawk.rsp
echo awkgram.obj getid.obj popen.obj getopt.obj getopt1.obj dfa.obj regex.obj random.obj >> gawk.rsp
echo xml_enc_handler.obj xml_interface.obj mpfr.obj win32util.obj >> gawk.rsp
echo iconv.lib libexpat.lib mpfr.lib gmp.lib >> gawk.rsp
link -nologo -subsystem:console -release -nodefaultlib:libc -out:gawk.exe @gawk.rsp
cl -nologo -c -o2 -DWIN32 -D__STDC__=0 -MT -DGAWK -I. -I./iconv -DHAVE_CONFIG_H eval_p.c
eval_p.c
d:\work\src\xgawk\xgawk-3.1.6a-20090101\eval.c(2519) : warning C4090: '関数' :
異なる 'const' 修飾子です。
cl -nologo -c -o2 -DWIN32 -D__STDC__=0 -MT -DGAWK -I. -I./iconv -DHAVE_CONFIG_H profile_p.c
profile_p.c
echo array.obj builtin.obj eval_p.obj field.obj floatcomp.obj gawkmisc.obj io.obj main.obj xml_puller.obj > pgawk.rsp
echo ext.obj msg.obj node.obj profile_p.obj re.obj replace.obj version.obj  >> pgawk.rsp
echo awkgram.obj getid.obj popen.obj getopt.obj getopt1.obj dfa.obj regex.obj random.obj >> pgawk.rsp
echo xml_enc_handler.obj xml_interface.obj mpfr.obj win32util.obj >> pgawk.rsp
echo iconv.lib libexpat.lib mpfr.lib gmp.lib >> pgawk.rsp
make[1]: Leaving directory `/cygdrive/d/work/src/xgawk/xgawk-3.1.6a-20090101'

D:\work\src\xgawk\xgawk-3.1.6a-20090101>dir *exe
 ドライブ E のボリューム ラベルがありません。
 ボリューム シリアル番号は FDAA-BA29 です

 D:\work\src\xgawk\xgawk-3.1.6a-20090101 のディレクトリ

2009/01/06  23:23              860,160 gawk.exe

今日はここまで。

■_

オススメのgccのオプションを教えてくれという話。

Recommended gcc warning options for C - Stack Overflow

Other than -Wall what other warnings have people found useful?

http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
subjective c gcc compiler-errors


I usually compile with "-W -Wall -ansi -pedantic" this helps ensure maximum 
quality and portability of the code.


I routinely use:

    gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual \
        -Wstrict-prototypes -Wmissing-prototypes

This set catches a lot for people unused to it (people whose code I get to compile 
with those flags for the first time); it seldom gives me a problem (though -Wcast-qual 
is occasionally a nuisance).


-pedantic-errors


I also use:

    -Wstrict-overflow=5

To catch those nasty bugs that may occur if I write code that relies on the overflow 
behaviour of integers.

And:

    -Wextra

Which enables some options that are nice to have as well. Most are for C++ though.


-pedantic -Wall -Wextra -Wno-write-strings -Wno-unused-parameter

For "Hurt me plenty" mode, I leave away the -Wno...

I like to have my code warning free, especially with C++. While C compiler warnings 
can often be ignored, many C++ warnings show fundamental defects in the source code.


-Wfloat-equal, -Wshadow, -Wmissing-prototypes,


I like -Werror. Keeps the code warning free.


-Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wextra 
-Werror-implicit-function-declaration -Wunused -Wno-unused-value -Wreturn-type


I started out with C++, so when I made the switch to learning C I made sure to be 
extra-anal:

-fmessage-length=0
-ansi -pedantic -std=c99
-Werror
-Wall
-Wextra
-Wwrite-strings
-Winit-self
-Wcast-align
-Wcast-qual
-Wpointer-arith
-Wstrict-aliasing
-Wformat=2
-Wmissing-declarations
-Wmissing-include-dirs
-Wno-unused-parameter
-Wuninitialized
-Wold-style-definition
-Wstrict-prototypes
-Wmissing-prototypes


ずいぶんいろいろあるんだなあ。

■_

■_ PREP

さてどうなるか?

ruby-core
21141
21142
21143
21145
21148
21163

21144
21146
21152
21155

まあ提案がどうなったか、どうなっているかをわかりやすくするためにも PEP的なものを取り入れたほうがいいと思う。 MLだと埋もれるし。

■_

Ruby 初心者スレッド Part 24
94 デフォルトの名無しさん [sage] Date:2009/01/06(火) 01:15:43  ID: Be:
    てかなんでwindowsのパス区切りは\なんだ?
    \\にしたりしなかったり一体どれだけの混乱を強いていると思ってるんだ 

103 デフォルトの名無しさん [sage] Date:2009/01/06(火) 02:25:49  ID: Be:
    >>94
    MS-DOSはCじゃなくてBasicで書かれていたから
    バックスラッシュでエスケープの問題は無かった 

107 デフォルトの名無しさん [sage] Date:2009/01/06(火) 10:05:36  ID: Be:
    >>94
    パス区切りが\でコマンドオプションが/なのは、VMS由来。 

108 デフォルトの名無しさん [sage] Date:2009/01/06(火) 10:34:33  ID: Be:
    >>107
    まじで?
    CP/M由来だと思ってたんだが 

109 デフォルトの名無しさん [sage] Date:2009/01/06(火) 11:34:19  ID: Be:
    >>107
    VMSはディレクトリを[]でくくり、区切りは '.'
    相対パス [.foo.bar.baz]filename.ext
    絶対パス [foo.bar.baz]filename.ext

110 デフォルトの名無しさん [sage] Date:2009/01/06(火) 11:38:59  ID: Be:
    CP/M にはディレクトリないだろ 

111 デフォルトの名無しさん [sage] Date:2009/01/06(火) 12:16:41  ID: Be:
    CP/M++

    DQN 

112 デフォルトの名無しさん [sage] Date:2009/01/06(火) 12:29:20  ID: Be:
    >>109
    command.comがこれをお手本にしてるから。
    http://h50146.www5.hp.com/products/software/oe/openvms/manual/v82-1/html/DEBUG/DOCU_052.HTM#122_usingsymbolsandoperat 

113 デフォルトの名無しさん [sage] Date:2009/01/06(火) 13:05:14  ID: Be:
    DOS は CP/M を元にして作った(参考にした?)
    CP/M はコマンドオプション指定に"/"を使ったので DOS もそうなった
    んで、ディレクトリを実装する時に"/"を使えないので"﹨"を使った

    というのが、普通に聞く説だと思うが 

114 デフォルトの名無しさん [sage] Date:2009/01/06(火) 14:17:20  ID: Be:
    しかし「MS-DOSはCじゃなくてBasicで書かれていたから」には吹いた。

    ちなみに最初はフルアセンブラです。 

115 デフォルトの名無しさん [sage] Date:2009/01/06(火) 14:29:45  ID: Be:
    イメージで言いたいことはわからんでもないがぬ 

116 デフォルトの名無しさん [sage] Date:2009/01/06(火) 17:37:08  ID: Be:
    0終端じゃなくて$終端だったような 

117 デフォルトの名無しさん [sage] Date:2009/01/06(火) 17:57:59  ID: Be:
    >>116
    それはファンクションコール9番の特殊仕様。
    たしかキルドールが「その仕様の理由をゲイツに訊いてみな、答えられないから」と
    言ってるという話を読んだ記憶がある。ソース忘れた。 

118 デフォルトの名無しさん [sage] Date:2009/01/06(火) 18:14:47  ID: Be:
    >>117
    俺もその話聞いたことがある。
    同じくソース忘れたけど。 

CP/MのそこかしこにVMSの影響が見受けられるというのは自分も聞いたことがある。 まあディレクトリに関しては、CP/M-80の時代には必要がなかったとか言う話ではないのかなあ (まあディスクのフォーマットとかからすると難しいってもあるかな)。

つか、ファンクションコール9番のターミネーターが云々は、ゲイツじゃなくて ティム・パターソンあたりに訊くべきじゃないのか?w

Prologでまったり Part3
788 デフォルトの名無しさん [] Date:2009/01/05(月) 13:33:23  ID: Be:
    progolの質問って、ここでいいんでしょうか?
    以下のプログラムでgeneraliseに失敗するんですが、何故だかわかりません。
    モード宣言が無いからでしょうか?
    どなたか詳しい方、教えてください。
    環境は、CProgol Version 5.0です。

    grandfather(paul,john).
    grandfather(paul,tod).
    grandfather(brian,john).
    grandfather(brian,tod).

    :-grandfather(john,paul).
    :-grandfather(tom,john).
    :-grandfather(sarah,john).

    father(paul,tom).
    mother(sarah,tom).
    father(tom,john).
    father(tom,tod).
    father(brian,amy).
    mother(amy,john).
    mother(amy,tod).
    parent(A,B) :- father(A,B).
    parent(A,B) :- mother(A,B).

    generalise(grandfather/2)?

    結果
    |- no
    [:- generalise(grandfather/2)? - Time taken 0.00s] 

789 デフォルトの名無しさん [] Date:2009/01/05(月) 13:47:56  ID: Be:
    ×progol
    ○prolog

790 788 [] Date:2009/01/05(月) 23:44:52  ID: Be:
    prologのスレというのは承知の上なんですが、
    さすがにprogolのスレは無いみたいで…。
    ココが一番ちかいかな、と。
    すいません、お願いします。 

791 デフォルトの名無しさん [] Date:2009/01/05(月) 23:51:32  ID: Be:
    >progol

    帰納論理プログラミングですね。

792 デフォルトの名無しさん [sage] Date:2009/01/06(火) 05:47:38  ID: Be:
    Progol大歓迎。久しぶり使ってみた。
    grandfather(A,B) :- parent(A,C),parent(C,B).
    を導きたいと思ったのだけど、
    [Generalising grandfather(paul,john).]
    [No mode declaration for example grandfather(paul,john).]
    .......
    grandfather(paul,john).
    grandfather(paul,tod).
    grandfather(brian,john).
    grandfather(brian,tod).
    しか出てこないな。 

793 デフォルトの名無しさん [sage] Date:2009/01/06(火) 06:25:34  ID: Be:
    モード宣言をごっそり入れたら、以下のようなものも生成してくれた。
    なにしろ出力が多すぎて訳が分からない・・・

    grandfather(A,B) :- father(A,C), father(D,E), father(E,F), father(G,
    H), mother(H,F), mother(I,E), parent(A,C), parent(C,B),
    parent(D,E), parent(E,F), parent(G,H), parent(H,F),
    parent(I,E).

    [0 explored search nodes]
    f=-10100,p=3,n=3,h=10000
    [No compression]


    grandfather(A,B) :- father(A,C), parent(C,B). 

794 デフォルトの名無しさん [sage] Date:2009/01/06(火) 06:35:26  ID: Be:
    モード宣言は以下の通り。
    modeh(*,grandfather(+atomid,-atomid))?
    modeh(*,grandfather(-atomid,+atomid))?
    modeb(1,father(+atomid,-atomid))?
    modeb(1,father(-atomid,+atomid))?
    modeb(1,father(+atomid,+atomid))?
    modeb(1,father(-atomid,-atomid))?
    modeb(1,mother(+atomid,-atomid))?
    modeb(1,mother(-atomid,+atomid))?
    modeb(1,mother(+atomid,+atomid))?
    modeb(1,mother(-atomid,-atomid))?
    modeb(2,parent(+atomid,-atomid))?
    modeb(2,parent(-atomid,+atomid))?
    modeb(2,parent(+atomid,+atomid))?
    modeb(2,parent(-atomid,-atomid))?

795 デフォルトの名無しさん [sage] Date:2009/01/06(火) 06:39:43  ID: Be:
    これで大分絞られて来た。 

796 デフォルトの名無しさん [sage] Date:2009/01/06(火) 07:09:53  ID: Be:
    >>783
    Ajax?

797 デフォルトの名無しさん [sage] Date:2009/01/06(火) 07:33:59  ID: Be:
    grandfather(A,B) :- father(A,C), mother(D,C), parent(A,C), parent(C,B).

    こういうのを抑制するにはどうすればいいのか。 

798 デフォルトの名無しさん [sage] Date:2009/01/06(火) 07:47:27  ID: Be:
    >>796
    一応、prototype.js系は使っている。組み込み述語の中のかなり多くが、
    これに依存している。好ましいことではないかも知れない。
    Javascriptを全く意識せずそれ以上の事をするためには何が必要か、
    という研究なのだが、Ajaxの一翼を担うとなると、もう少し本格的な
    Prologが必要だろう。300要素くらいのリストの再帰でスクリプトエラー
    になるのでは困る。 

799 デフォルトの名無しさん [sage] Date:2009/01/06(火) 08:56:47  ID: Be:
    別に困らねーしw 

800 デフォルトの名無しさん [sage] Date:2009/01/06(火) 09:10:23  ID: Be:
    Prologで書かれたソースからJavascriptのコードを吐くコンパイラを作ればおk 

801 デフォルトの名無しさん [sage] Date:2009/01/06(火) 10:00:15  ID: Be:
    Prologで書かれたPrologコンパイラね。
    P#はC#を吐き出すね。PrologCafe上でコンパイル処理を行う。 


Progol なんつーものがあるですか。

■_ジャアクなC

http://www.steike.com/code/useless/evil-c/ から。

Evil C (邪悪なC)

This is a collection of strange C (and some Java) constructs. It's probably best not 
to use them, but you should know why they work.

これらの手法を使うことはおそらく最善のことではありませんが、なぜ動作するのかということを
あなたは知っておくべきでしょう。

The cast-to-bool operator (ブール型へのキャスト演算子)

        Node *left, *right;
        int childCount() {
                return !!left + !!right;
        }

Logical XOR (論理的なXOR)

A variation on the above. 
(Note that ^ is bitwise XOR, not logical XOR; 3 ^ 4 does not give 0.)

上の例のバリエーションです
(^ はビットごとのXORであって論理的な XORではないことに注意してください。
3 ^ 4 は0になりません)。

        int xor(int a, int b) {
                return !a != !b;
        }

The "goes toward" operator ("goes toward" 演算子)

        void doStuff(int count) {
                while(count --> 0)
                        fleh();
        }

Useless but pretty definitions of BOOLs (BOOL値の役に立たないけど prettyな定義)

        #define TRUE  '/'/'/'
        #define FALSE '-'-'-'

Two (2) readers wrote in to comment that the above is unsafe due to operator precedence.

Yes.

That is true.

If you are doing arithmetic with the above, please seek help.

Optimization, the Microsoft way (Microsoft流の最適化)

This was found in the 2004 leaked Windows sources
以下の例は2004年に流出したWindowsのソースで見つかったものです


__inline BOOL
SearchOneDirectory(
                  IN  LPSTR Directory,
                  IN  LPSTR FileToFind,
                  IN  LPSTR SourceFullName,
                  IN  LPSTR SourceFilePart,
                  OUT PBOOL FoundInTree
                  )
{
    //
    // This was way too slow. Just say we didn't find the file.
    //
    *FoundInTree = FALSE;
    return(TRUE);
}

The canonical temp-less swap (正統的な一時変数を使わないswap)

As about a dozen people have reminded me over the last 24 hours, and as this page used 
to say, this is not well-defined nowadays.

        a^=b^=a^=b;

Duff's Device for loop unrolling (ループ展開のためのDuffのDevice)

        switch(c&3) while((c-=4)>=0) {
                foo(); case 3:
                foo(); case 2:
                foo(); case 1:
                foo(); case 0:
        }

Struct/class offsets (構造体/クラスのオフセット)

        int ofs = (int)&((Class*)0)->element;

[Vilhelm S. comments: Note that <stddef.h> provides an offsetof(type, field_name) 
macro, so you can leave the dirty work of abusing NULL pointers in perverted ways to 
your standard library implementor! (The typical implementation of it is as above, 
though...)]
Vilhelm S.によるコメント: <stddef.h> にoffsetof(type, field_name) マクロがあるので
in perverted ways to your standard library implementor
ナルポインターを誤用したdirty workをする必要はありません
(とは言え典型的な実装は上で挙げた例のようなものなんですけどね)。

Fun with comments (コメントで遊ぶ)

This font definition has a bug. Find it.
以下のフォント定義にはバグがあります。
見つけてください。

char font[] = {
....
0x00,0x61,0x51,0x49,0x45,0x43,0x00,0x00, // 1 :0x5A Z
0x70,0x29,0x24,0x22,0x24,0x29,0x70,0x00, // 1 :0x5B [
0x00,0x3D,0x42,0x42,0x42,0x42,0x3D,0x00, // 1 :0x5C \
0x00,0x3C,0x41,0x40,0x41,0x40,0x3C,0x00, // 1 :0x5D ]
...

[Bernd Jendrissek writes: OMG I can't believe you stole code from my ex-job! I 
actually bumped into the font definition problem... except that two compilers behaved 
differently! TopSpeed C and GCC, in particular. The former didn't respect the 
backslash as a line continuation of a comment, so the code worked. Can't blame it too 
much, I think that compiler predates C99.]

Endian magic (エンディアンマジック)

This is just plain evil.

        // this is from GMP (GMPから)
        #define BYTE_OFS(x) (((char *)&internalEndianMagic)[7-(x)])
        static double internalEndianMagic = 7.949928895127363e-275;

Yes, it works by exploiting the exact IEEE binary representation of that constant.

もちろんこれはこの定数がきちんとIEEEの二進表現である場合にのみ動作します。

2008-09-04: According to Moritz Both the Borland compiler gets the constant wrong. Ouch.
Moritz Both によると、Borlandのコンパイラーは定数を間違って得てしまうそうです。
なんてこったい。

Another micro-optimization (もう一つのmicro-optimization)

"If x or y is less than 0"  :-)  Works with and and xor as well
“x か yのいずれかか0未満である”:-)
and や xor でも同じように(andやxorの条件として)動作します

        if((x|y) < 0) { ... }

[Benoit Hudson comments: Thankfully, gcc -- usually the lowest common denominator 
among compilers -- implements this optimization. So it's all right to beat your minion 
programmers with a stick when they do this by hand.]
Benoit Hudson のコメント:
usually the lowest common denominator among compilers である gcc はとてもありがたいことに
この種の最適化を実装しているので、もしあなたの minion プログラマーが手作業でこの手の
最適化を行っていたならステッキでもってそいつを自由にて打擲して良い。


Lispy with-foo-bound-to (Lisp的 with-foo-bound-to)

#define within(obj) for(QWidget *__t = (obj), *parent = __t; parent; parent=0)

within(this) {
  within(new QSplitter(parent)) {
     within(new QVBoxWidget(parent)) {
       ...
       ...
     }
     within(...) {
  ...

Dan's lexer tester (Danによる字句解析器テスター)

/* Test whether compiler supports C++-style comments */ 
(コンパイラーがC++形式のコメントをサポートしているかを検査)
#define HELPER 0//**/
#define CPLUSPLUS_COMMENTS_SUPPORTED (HELPER+1)

[] is symmetric ([]はシンメトリック)

thanks sigfpe (sigfpeに感謝)

int direction = 1;
char direction_name = direction["nsew"];

Walsh-Moler-Newton inverse square root

Thanks captainfwiffo, gsg and Anders; this one is actually useful (and thus shouldn't 
really be on this page) but makes up for it by pure IEEE abuse. History here.
captainfwiffo, gsg そして Andersに感謝。
このテクニックは本当に便利なもの(なのでこのページに収録されるべきではない)ですが
makes up for it by pure IEEE abuse. History here.

float Q_rsqrt( float number )
{
  long i;
  float x2, y;
  const float threehalfs = 1.5F;

  x2 = number * 0.5F;
  y  = number;
  i  = * ( long * ) &y;                       // grab bits (ビットを取得)
  i  = 0x5f3759df - ( i >> 1 );               // do magic (魔法をかける)
  y  = * ( float * ) &i;
  y  = y * ( threehalfs - ( x2 * y * y ) );   // improve

  return y * number;
}

snoob

This one is for mrkite. Given an integer with n bits set, it will return the next 
higher number with the same number of bits set. From Hacker's Delight.

以下のものは mrkite に。
nビットがセットされている整数を与えるとこの関数は
同じ数のビットがセットされている次に大きな数を返します。
Hacker's Delight から。

unsigned snoob(unsigned x) {
   unsigned smallest, ripple, ones;
                                // x = xxx0 1111 0000
   smallest = x & -x;           //     0000 0001 0000
   ripple = x + smallest;       //     xxx1 0000 0000
   ones = x ^ ripple;           //     0001 1111 0000
   ones = (ones >> 2)/smallest; //     0000 0000 0111
   return ripple | ones;        //     xxx1 0000 0111
}

List comprehensions, Java style (Javaスタイルのリスト内包)

return new ArrayList<String>() {{ for(String x : foo) add(x.toUpper(); }};


Some rights reserved.

Random, semi-related background image by AmUnivers.
  

2009年01月05日

■_ 仕事始め

・新年早々(以下略[お察しください]

実際、プログラマって職業はどうなんですか? -OKWave どうなんですか。ってねえ?

■_ xgawk

すっかりビルド方法を忘れてしまっていたのであった。 とりあえず、使っているライブラリのバージョンなんかを調べてみた。 以前ビルドしたときに使ったものでは

expat		2.0.0
mpfr		2.2.0
gmp		4.1.4
PostgreSQL	7.x ?

で、現時点での最新版はそれぞれ

expat		2.0.2
mpfr		2.3.2
gmp		4.2.4
PostgreSQL	8.3.5

なので、ライブラリのバージョンアップから手をつけることにする。 が、gmp と mpfr を vc7.1 でビルドするのは結構面倒だったんだよな。 Windows用にソリューションファイルとか用意してくれる人がいるんだけど、 今だとVC9とVC8だけなんだよな。 まあ .sln ファイルとか .vcproj ファイルをちまちまいじればいいんだけどね。 基本的には。

■_

The tutorial that helped your programming the most in 2008 - Stack Overflow
http://stackoverflow.com/questions/411314/the-tutorial-that-helped-your-programming-the-most-in-2008

What can we learn from your most recent cataclysmic paradigm shift? - Stack Overflow
http://stackoverflow.com/questions/411668/what-can-we-learn-from-your-most-recent-cataclysmic-paradigm-shift

Why do people think functional programming will catch on? - Stack Overflow
http://stackoverflow.com/questions/411290/why-do-people-think-functional-programming-will-catch-on

Code optimizations - Stack Overflow
http://stackoverflow.com/questions/412019/code-optimizations

How to get pointer-to-member-function of instance - Stack Overflow
http://stackoverflow.com/questions/412183/how-to-get-pointer-to-member-function-of-instance

Perl 6 Articles and Presentations / Perl 6
http://www.perlfoundation.org/perl6/index.cgi?perl_6_articles_and_presentations

学び続けること - COBOL技術者の憂鬱
http://d.hatena.ne.jp/quill3/20090103/p1

思っているよりもずっとずっと人生は短い。
http://d.hatena.ne.jp/takahashim/

SourceForge.net: Expat XML Parser: Files
http://sourceforge.net/project/showfiles.php?group_id=10127&package_id=10780&release_id=513851

OPC Diary: 気になる本:Concurrent Programming on Windows by Joe Duffy
http://www.isisaka.com/blog/archives/2009/01/concurrent_prog.html

ここギコ!: コンピュータは2進法が効率的でとかいう話、続き
http://kokogiko.net/m/archives/002227.html

ここギコ!: コンピュータは2進法が効率的でとかいう話
http://kokogiko.net/m/archives/002226.html

The Merbist ≫ Blog Archive ≫ Merb/Rails merge, or Why should merbists be happy? | Merb & Rails 3 news - consulting - training
http://merbist.com/2008/12/25/merb-rails-merge-or-why-should-merbists-be-happy/


Ask Proggit: What are some good books for learning SQL? : programming
http://www.reddit.com/r/programming/comments/7n9q8/ask_proggit_what_are_some_good_books_for_learning/

How many programmers here have a CS degree? : programming
http://www.reddit.com/r/programming/comments/7nfr0/how_many_programmers_here_have_a_cs_degree/

Ask Proggit: What programming language are you going to learn in 2009? : programming
http://www.reddit.com/r/programming/comments/7nd11/ask_proggit_what_programming_language_are_you/

demo-lisp - Google Code
http://code.google.com/p/demo-lisp/

Unthinkingly.com » Extreme Programming vs. Interaction Design
http://unthinkingly.com/extreme-programming-vs-interaction-design/

■_ 洋書(というか英語)のCの入門書って?

Teach yourself C ってのが独習Cというタイトルで訳されているらしいけど、 果たして海の向こうの「入門書」ってのはどんなものなのか、 実際に見てみようとふと思いたったのでAmazonさんにどんなものがあるか教えてもらったところ、 発行年月がちょっと古めのも含めてこんな感じ?


Amazon.co.jp: C++: A Beginner's Guide (Beginner's Guide): Herbert Schildt: 洋書
http://www.amazon.co.jp/C-Beginners-Guide/dp/0072194677/ref=pd_ts_fb_24?ie=UTF8&s=english-books

Amazon.co.jp: Teach Yourself C (Teach Yourself): Herbert Schildt: 洋書
http://www.amazon.co.jp/Teach-Yourself-C/dp/0078823110/ref=pd_ts_fb_20?ie=UTF8&s=english-books

Amazon.co.jp: Absolute Beginner's Guide to C: Greg M. Perry: 洋書
http://www.amazon.co.jp/Absolute-Beginners-Guide-Greg-Perry/dp/0672305100/ref=pd_ts_fb_9?ie=UTF8&s=english-books

Amazon.co.jp: C Programming for the Absolute Beginner (For the Absolute Beginner): Michael A. Vine: 洋書
http://www.amazon.co.jp/C-Programming-Absolute-Beginner/dp/1598634801/ref=pd_ts_fb_36?ie=UTF8&s=english-books

Amazon.co.jp: Sams Teach Yourself C++ In 21 Days (Sams Teach Yourself): Jesse Liberty, Bradley L. Jones: 洋書
http://www.amazon.co.jp/Sams-Teach-Yourself-21-Days/dp/0672327112/ref=pd_ts_fb_40?ie=UTF8&s=english-books

Amazon.co.jp: C Programming: A Modern Approach: K. N. King, Manuel Bermudez: 洋書
http://www.amazon.co.jp/Programming-Approach-K-N-King/dp/0393969460/ref=pd_ts_fb_41?ie=UTF8&s=english-books

Amazon.co.jp: C: How to Program (How to Program): Harvey M. Deitel, Paul J. Deitel: 洋書
http://www.amazon.co.jp/C-How-Program/dp/0131426443/ref=pd_ts_fb_47?ie=UTF8&s=english-books

Amazon.co.jp: Sams Teach Yourself C in 21 Days (Sams Teach Yourself in 21 Days): Bradley L. Jones, Peter G. Aitken: 洋書
http://www.amazon.co.jp/Sams-Teach-Yourself-21-Days/dp/0672324482/ref=pd_ts_fb_53?ie=UTF8&s=english-books

Amazon.co.jp: Beginning C: From Novice to Professional (Beginning: from Novice to Professional): Ivor Horton: 洋書
http://www.amazon.co.jp/Beginning-C-Novice-Professional/dp/1590597354/ref=pd_ts_fb_61?ie=UTF8&s=english-books

Amazon.co.jp: Sams Teach Yourself C in 24 Hours: Starter Kit (Sams Teach Yourself): Tony Zhang: 洋書
http://www.amazon.co.jp/Sams-Teach-Yourself-24-Hours/dp/067231861X/ref=pd_ts_fb_88?ie=UTF8&s=english-books

日本にあふれるCの入門書に比べて数がぜんぜん違いますな。 ま、値段と販売開始年などから適当に選んでみます。

■_


初心者のためのプログラミング言語ガイド Part12
944 デフォルトの名無しさん [] Date:2009/01/05(月) 04:27:04  ID: Be:
    PythonとRubyどちらを学ぶべきだろうか?
    世界的な勢力図ではPythonだけど
    日本国内ではRubyだよね。
    少なくとも本屋で見かける書籍に関してはそうだ。
    ていうか本屋でPython関連本見たことないんだけど…。 

945 デフォルトの名無しさん [] Date:2009/01/05(月) 04:36:11  ID: Be:
    >>944
    Python
    理由
    日本脱出して、国外で働く事になっても、ツブシが利くw
    だが、

    >世界的な勢力図ではPythonだけど日本国内ではRubyだよね。
    この前提自体どうなんだ?w 

946 デフォルトの名無しさん [sage] Date:2009/01/05(月) 04:59:08  ID: Be:
    C#で書いたGUIプログラムを配布して使ってもらうには .NetFramework
    をクライアントにインストールしてもらう必要がありますよね?
    ということは、exeさえ落としてくれればWindowsであれば動くよ、
    というプログラムはC或いはC++を使って作ればよいのでしょうか。 

947 デフォルトの名無しさん [sage] Date:2009/01/05(月) 05:33:25  ID: Be:
    .NET Framework 2.0 なら割と普及してるし、別に必須にしても良いと思うけどね。 

948 デフォルトの名無しさん [] Date:2009/01/05(月) 05:54:31  ID: Be:
    >>946
    違うよ
    DelphiやPythonやRubyの場合もあるよ 

949 デフォルトの名無しさん [sage] Date:2009/01/05(月) 06:19:27  ID: Be:
    PythonやRubyが素のwinで動くか? 

950 デフォルトの名無しさん [sage] Date:2009/01/05(月) 06:23:16  ID: Be:
    Pythonはpy2exeなどのツールを使えば、インタプリタといっしょに配布できるので動く。 

951 デフォルトの名無しさん [] Date:2009/01/05(月) 06:32:22  ID: Be:
    アメリカではPythonでプログラミングを学びなさい的なことが言われているらしい。
    日本だと始めて学ぶプログラミング言語はWebやってる人ならJavaScriptかPHP
    そうでなければVBかJavaとういう人がほとんどだと思う。
    最近はC#も増えてきたのかな?
    そういう私はVB(旧式ね)とJavaを同時に始めました。
    VBが.NET化してからはJavaに完全移行。
    そこからインタプリタがあれば便利だなということでPythonを学んだ経緯があります。
    参考にしてください。 

952 デフォルトの名無しさん [sage] Date:2009/01/05(月) 06:52:39  ID: Be:
    PythonはLinuxなんかだとかなり普及してるね
    ちょっとしたツール動かすためにPython必須ってのが良くあるから
    もはや入ってない環境のが少ないかも

    >947
    ウチの親父はこないだ落としたアプリが動かんって言ってて
    見たら.NETが入ってなかった 

953 デフォルトの名無しさん [sage] Date:2009/01/05(月) 06:58:31  ID: Be:
    >>952
    これで普及台数が1台増えたな。 え、そういう話じゃない? 

954 デフォルトの名無しさん [sage] Date:2009/01/05(月) 07:05:56  ID: Be:
    うぃんどずうpだてで、どとねとは自動的にインストールされるのかな。
    いつのまにかver3.5が入ってた 

955 デフォルトの名無しさん [] Date:2009/01/05(月) 07:12:13  ID: Be:
    Pythonの普及は、ブラマン効果が大きい 

956 デフォルトの名無しさん [sage] Date:2009/01/05(月) 07:28:02  ID: Be:
    http://msdn.microsoft.com/ja-jp/netframework/cc807042.aspx

    2009 年 1 月 27 日 (太平洋標準時刻)にXP以降で.NET2.0以降が入ったPCを対象にして
    .NET 3.5 SP1とGDR(General Distribute Release)が配布されるとの事。

    >>954
    2.0が入ってれば手動更新に2.0 SP1が出るけど、3.5が勝手に入るなんて事は・・
    3.5使ってるソフト入れた時に、一緒にインストールしたんじゃないの?
    (Visual Studio 2008と一緒に入れたとか) 

957 デフォルトの名無しさん [sage] Date:2009/01/05(月) 07:33:04  ID: Be:
    >>956
    今確認したら2.0だった。なにか幻覚を見ていたらしい。 

958 デフォルトの名無しさん [sage] Date:2009/01/05(月) 07:35:16  ID: Be:
    海外での求人数を調べたサイトによるとPythonとRubyにそんなに
    大きな差はないけどな。Rubyが急激に伸びていることを示すサイトもあれば、
    伸びが止まったとする所もある。 

959 デフォルトの名無しさん [sage] Date:2009/01/05(月) 09:12:13  ID: Be:
    >>946
     サラマンダーのリンカを使って、.NETフレームワークの必要部分を埋め込むという手もある。
    値段が高いけど。 

960 デフォルトの名無しさん [sage] Date:2009/01/05(月) 09:15:38  ID: Be:
    >955
    いやLinux界ではブラマン以前から
    入ってるのがデフォのディストリが多いんだよ 

961 デフォルトの名無しさん [sage] Date:2009/01/05(月) 10:08:41  ID: Be:
    >>959
    >Salamander .NET Linker
    へぇ、こんなのあるんだ。面白いな 

962 デフォルトの名無しさん [sage] Date:2009/01/05(月) 11:20:21  ID: Be:
    perlを食った感はあるね。
    まぁ多分rubyでもjavascriptでも結構近いものなんだが、pythonが一番bindingsが豊富だからな。
    jsのbindingsが流行れば、webページやactionscriptとの絡みもあってモテそうな気はするが。 

963 946 [sage] Date:2009/01/05(月) 16:08:03  ID: Be:
    .NET Frameworkが普及してるとなると 迷いますね。
    どっちもVC使えばGUIはそんなに手間取らない……のかな。
    (D&1Dで勉強になってるのか疑問だけど)。
    C#でもC++でも、VC使わないでGUI作ろうとしたら、結局似たような難易度になるのかな。 

964 デフォルトの名無しさん [sage] Date:2009/01/05(月) 16:15:33  ID: Be:
    VC++はDocument/Viewアーキテクチャを押し売りしてくるからウザイ。
    それ以外の流儀で作ろうとするとまた難儀するし。
    これからwindows限定でC#かC++かなんて悩んでいる奴はC#一択だろ。

965 946 [sage] Date:2009/01/05(月) 16:22:32  ID: Be:
    とりあえず、C#に手をつけることにして、物足りなくなったら、C++に移行します。
    ありがとうございました。 

2009年01月04日

■_ 休暇は終わりぬ

仕事始めー(夜が明けてからね)。

・xgawk
あたらしいβが出たらしい。あう余裕がナッシング。

■_



Jesse Ruderman » Fuzzing TraceMonkey
Fuzzing TraceMonkey

Making JavaScript faster is important for the future of computer security. Faster 
scripts will allow computationally intensive applications to move to the Web. As messy 
as the Web's security model is, it beats the most popular alternative, which is to 
give hundreds of native applications access to your files. Faster scripts will also 
allow large parts of Firefox to be written in JavaScript, a memory-safe programming 
language, rather than C++, a statically typed footgun.

Mozilla's ambitious TraceMonkey project adds a just-in-time compiler to Firefox's 
JavaScript engine, making many scripts 3 to 30 times faster. TraceMonkey takes a 
non-traditional approach to JIT compilation: instead of compiling a function at a time, 
it compiles only a path (such as the body of a loop) at a time. This makes it possible 
to optimize the native code based on the actual type of each variable, which is 
important for dynamic languages like JavaScript.

以下略

JavaScirptじゅーよーっすか。

■_ redditに訊け!



PHP vs Python/ruby. Question to all of you gurus! : programming

Dear Programming Gurus,

I' m using php+mysql for developing small to medium dynamic sites, especially for 
intranets (budget, customer service etc etc). I' m not a guru but I'm pretty fluent in 
php and now I was thinking of studing AJAX to add that 2.0 whiff to my applications. A 
couple of days ago I discovered that reddit is not AJAX + php but instead is based on 
python (pylons framework?). A whole world discovered, ruby, phyton and the such. Now I 
was wondering if it would be wiser to study those framework instead of the old (?) 
java?

Also:

1) Are python/ruby a complete substitute of php or they work toghether, i mean: can i 
write a forum in phyton that interface with a sql database that outputs html?

2) Are these interpreted languages like php (i write them in notepad++ upload the 
script to the server and i see the results) or they must be compiled?

3) If you were to start and pick one, which one would you choose?

4) Please correct all of my misunderstanding.

Thanks!
1. Python and Ruby are programming languages. I tend to think of PHP as a incoherent 
blob of language and library functions. So in order to have a "complete substitute of 
php" you will need to learn the language (Python or Ruby) and find the libraries you 
need to get the job done. You would have to use some sort of programming framework 
such as Django and Ruby on Rails.

2. Both Python and Ruby are interpreted. Python can byte-compile your source and you 
can distribute only byte-compiled files. Current version of Ruby does not write out 
byte-compiled files so there is a bit of performance overhead when running Ruby.

3. If you have programmed in some structured BASIC variant such as VB, you should be 
able to pick up Ruby pretty easily. Both languages are pretty much on par in terms of 
expressiveness but in their current versions, Python is much faster. If you want to 
learn Python, start out with the "older" 2.6 version first. There are still a lot of 
useful libraries that need to be ported to Python 3K. My suggestion, try them both out 
and use whichever language you feel most comfortable and productive in. Pay no 
attention to rabid fanboys.

4. You must understand that deployment is a bit different for Python or Ruby based 
applications. The usual "upload scripts and run them" that used to work so well with 
PHP is not going to work with Python or Ruby if you are going to use a framework such 
as Django or Rails. You can mimic the "upload and run" process by programming using 
CGI though. On Python you can also choose a hosting provider that supports the WSGI 
standard (normally via mod_wsgi).

言語扱いされないPHPに涙w。



  Dear Proggit: Where does a C# programmer begin with functional programming? (self.programming)

Try to use lambdas/linq instead of foreach loops and for loops. Try to 
make fields readonly (and imagine that local variables are readonly). When you come 
across a stumbling block in doing that, find out what a Haskeller would do. Avoid 
repeated code. Try to use types to help you to avoid runtime errors.

Be energetic in your learning. SICP, TAPL and Real World Haskell are great. I also 
found Practical Common Lisp interesting.
F#
  
As a C# programmer myself, I recommend Haskell, since this forces you to work in a 
functional style. It also has the benefit of being the most beautiful language I've 
ever worked with. Another option would be F#, but I recently gave that a go and found 
it far more cumbersome and ugly than Haskell. One warning though: after learning 
Haskell you will be frequently annoyed at how verbose and braindead C# can be.

F#やってみようかなあ…

■_ 2 or 3?



If I'm going to learn Python, should I learn 2.x or just jump into 3.0? - Stack 
OverflowMaybe I'm old school, but when I sit down to really tackle a new language 
I like to buy whatever the definitive book is for that language rather than mess 
around with tutorials and online intro "toys" to the language.

Python in a Nutshell has gotten glowing reviews on Amazon, but it's written around 
Python 2.5. So far it looks like Programming in Python 3 is the only Python 3 book on 
the block, without any reviews to vouch for it.

If any of you current Pythonistas were to start learning the language right now, would 
you buy the "nutshell" book and continue working with the 2.x branch, or is 
Python 3 going to be taking over soon? From what I understand there are some 
significantly incompatible differences in the versions, which is why I ask.

I've been coding for a while if that makes a difference. I don't need an intro to 
programming, just coverage of the language.

Thanks everyone.
I've also began learning python recently. I decided to start with 2.5/2.6, as almost 
all 3rd party libraries are still only 2.5/2.6 compatible. The difference between 
2.5/2.6 and 3.0 doesn't seem really big. When 3.x becomes mainstream one should be 
able to switch easily.

BTW, I read Mark Summerfield's PyQt book's introductory Python chapters. They were 
quite helpful. I'd say a book from him is definitely worth looking into.
while there are enough differences, python 3 is not a new language. And python 2.x 
will be here for a long time still. Imho you're safe to start learning python 2. Keep 
in mind btw, that 'Python in a nutshell' is a (good) reference guide, not a tutorial!
Magnus Lie Hetland's Beginning Python: From Novice to Professional, Second Edition 
supposedly covers python 3. i haven't read the second edition, but i loved the first 
edition. and as the others said, if you're going to be using any libraries you might 
as well learn python 2 since a) at least at a high level, the backwards incompatible 
changes are fairly minor and b) all the libraries will be on 2.x for a probably a year 
or so.

http://www.amazon.com/dp/1590599829/

変わったといっても違う言語になったわけじゃないとはねえ。

■_ short coding

これは読んでて結構面白かった。 剰余を使うのはHakcer's deliteHacker's delightにあったかな?



【関数化】ビット演算 0x03 [bbs2chreader]
26 デフォルトの名無しさん [] Date:2009/01/03(土) 15:46:49  ID: Be:
    以下のような16進文字を値に変換する処理を書いているのですが、
    もっと短くする方法がありましたら教えてください。

    (引数のhには16進文字しか入ってきません)

    unsigned char ascii2hex(unsigned char h) {
    if (h <= '9') {
    h -= '0';
    } else {
    if (h > 'F') {
    h -= 0x20;
    }
    h -= 'A' - 10;
    }
    return h;
    }

27 デフォルトの名無しさん [sage] Date:2009/01/03(土) 16:31:08  ID: Be:
    短くと言うのは、ソースの行数なのか実行文のサイズなのか?

    ソースなら
    unsigned char ascii2hex(unsigned char h) {
     return h - (h <= '9' ? '0' : (h <= 'F' ? 'A' - 10 : 'a' - 10));
    }

    実行文なら
    unsigned char ascii2hex(unsigned char h) {
     static const unsigned char *const t = {
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,
      0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      0,10,11,12,13,14,15
     };
    return t[h];
    } 

28 デフォルトの名無しさん [] Date:2009/01/03(土) 18:10:41  ID: Be:
    AVR用なので、コード、メモリサイズともに小さければ可です。
    大きなテーブル使うとかは無理です。
    すいません。

29 デフォルトの名無しさん [] Date:2009/01/03(土) 18:17:42  ID: Be:
    ソースの文字数とバイナリに変換したサイズは違うと思うが? どうなの? 

30 デフォルトの名無しさん [] Date:2009/01/03(土) 18:19:12  ID: Be:
    バイナリ命令文とメモリの合計の最小値ですか 

31 デフォルトの名無しさん [] Date:2009/01/03(土) 18:21:03  ID: Be:
    0-9の場合 A-Fの場合 それ以外 で分岐して値を返すのが最小とは思う。 

32 デフォルトの名無しさん [] Date:2009/01/03(土) 18:30:37  ID: Be:
    0-9 A-Fしか入力無いとすると、A-Fは6bit目が1であることは利用できそう・
    分岐と配列なしで値を返せるとは思うが計算時間の方が掛かる。 

33 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:32:33  ID: Be:
    小文字の英字は考慮外でいいのか? 

34 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:33:21  ID: Be:
    文字コードはASCIIでええのん?
    それとも別? 

35 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:39:15  ID: Be:
    >>28
    なら、>>26 もしくは >>27 の上側でいいと思う。
    (今時のコンパイラなら、ほぼ似たようなコードを吐くはず。)
    それ以上を期待するなら、アセンブリコード出して手で最適化。
    ただ、最適化する余地はそんなにないと思う。 

39 デフォルトの名無しさん [sage] Date:2009/01/03(土) 20:59:05  ID: Be:
    16進文字以外が無くてASCII限定ならこんなもんじゃねーの。
    static unsigned char table[] = {0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15,};
    return table[(h & ~0x20) - '0'];
    速度無視すりゃこっちの方がコードサイズ短くなるかもな。
    static char a[2];
    a[0] = h;
    return strtol(a, NULL, 16); 

40 デフォルトの名無しさん [sage] Date:2009/01/03(土) 21:10:10  ID: Be:
    テーブルも分岐も使わないならこうかな。
    h &= ~0x20;
    h -= (h > '9') * ('A'-('9'+1));
    return h - '0';
    乗算があるけど7倍ならコンパイラがよろしくやってくれるだろ。 

41 デフォルトの名無しさん [sage] Date:2009/01/03(土) 22:50:29  ID: Be:
    適当に命令セットを見ながら速そうに書いてみた。
    とはいえAVRは使ったこと無いからどうすれば速いかよく分からんけど。

    unsigned char d;
    h &= 0x1F;
    d = (h>>4|h<<4);//swap 命令使ってほしいなっと
    d = d-1 & 9;
    h = h+d & 0xF;
    return h; 

42 デフォルトの名無しさん [sage] Date:2009/01/03(土) 22:58:53  ID: Be:
    除算が素直に可能ならこれでいいんだがな・・・。

    return (h & ~48) % 55; 

43 41 [sage] Date:2009/01/03(土) 23:26:34  ID: Be:
    あー事前にマスクしなければ1命令減らせた。

    unsigned char d = (h >> 4 | h << 4);
    d = (d&1)-1 & 9;
    h = h+d & 0xF;

    >>42
    除算がサポートされてても速度が微妙じゃね?
    でも格好良いなそれ。 

44 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:29:00  ID: Be:
    要求はサイズだけだったし。
    まあ除算できないから無理なんだけどね・・・。 

45 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:48:54  ID: Be:
    みなさんありがとうございました。
    AVRには乗除算命令は一部のモデルにしかなく、
    ない場合はコンパイラが適当に変換するようになっています。

    >>40は>>28と全く同じコードサイズでした。
    >>43が1ワード減って、最も小さくなりました。

    >>39は上記に比べて50バイト程増えました。
    strtol等ライブラリ関数は一応用意されてますが、
    リンクするとサイズがとんでもないことになるので使えません。

    >>42の割り算は、内部ルーチンが大きいため
    テーブルを使うのとと同程度でした。

46 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:49:44  ID: Be:
    >>28の出力コード
    8a 33 cpi r24, 0x3A ; 58
    28 f0 brcs .+10
    87 34 cpi r24, 0x47 ; 71
    08 f0 brcs .+2
    80 52 subi r24, 0x20 ; 32
    87 53 subi r24, 0x37 ; 55
    08 95 ret
    80 53 subi r24, 0x30 ; 48
    08 95 ret

    >>40の出力コード
    8f 7d andi r24, 0xDF ; 223
    8a 33 cpi r24, 0x3A ; 58
    10 f4 brcc .+4
    90 e0 ldi r25, 0x00 ; 0
    01 c0 rjmp .+2
    97 e0 ldi r25, 0x07 ; 7
    80 53 subi r24, 0x30 ; 48
    89 1b sub r24, r25
    08 95 ret

    >>43の出力コ-ド
    98 2f mov r25, r24
    82 95 swap r24
    81 70 andi r24, 0x01 ; 1
    81 50 subi r24, 0x01 ; 1
    89 70 andi r24, 0x09 ; 9
    89 0f add r24, r25
    8f 70 andi r24, 0x0F ; 15
    08 95 ret
    きちんとスワップされました 

47 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:59:04  ID: Be:
    unsigned char d = h + 0xC0;
    unsigned char e = (d << 4 | d >> 4);
    return (9 & ~e) + (h & 15);

    これでどうだ? 

48 デフォルトの名無しさん [sage] Date:2009/01/04(日) 00:05:24  ID: Be:
    >>47
    13ワードになってしましました。
    28 2f mov r18, r24
    20 54 subi r18, 0x40 ; 64
    92 2f mov r25, r18
    92 95 swap r25
    9f 70 andi r25, 0x0F ; 15
    22 95 swap r18
    20 7f andi r18, 0xF0 ; 240
    92 2b or r25, r18
    90 95 com r25
    99 70 andi r25, 0x09 ; 9
    8f 70 andi r24, 0x0F ; 15
    89 0f add r24, r25
    08 95 ret

49 デフォルトの名無しさん [sage] Date:2009/01/04(日) 00:11:07  ID: Be:
    ああ、これはひどいな・・・。 

50 デフォルトの名無しさん [sage] Date:2009/01/04(日) 00:35:44  ID: Be:
    もう無理ぽ。
    eori さえあれば・・・。 

51 デフォルトの名無しさん [sage] Date:2009/01/04(日) 01:00:01  ID: Be:
    >>40は被乗数が比較の0または1だから、
    乗算自体なくなって0か7になるのか。
    かしこいな。 

52 デフォルトの名無しさん [sage] Date:2009/01/04(日) 09:42:34  ID: Be:
    ていうか、この方が短くなるんじゃないか?
    if (h > '9') h -= 7;
     return h & 0xF;

    これを分岐無しにするともっと長くなりそうだが。
    int n = (h > '9');
    h += n;
    n <<= 3;
    h -= n;
    return h & 0xF; 

53 デフォルトの名無しさん [sage] Date:2009/01/04(日) 12:41:25  ID: Be:
    分岐は気になるけど確かに減るね・・・。

    cpi, brvs, subi, andi, ret

    の5命令でいけそうだ。
    分岐なしの方は 1 ビットシフトしかないのでかなり長くなるはず。 

54 デフォルトの名無しさん [sage] Date:2009/01/04(日) 21:44:08  ID: Be:
    お世話になっております。

    >>52
    unsigned char ascii2hex(unsigned char h) {
    h &= ~0x20;
    if (h > '9') h -= 7;
    return h & 0xF;
    }
    として、6ワードになりました。
    8f 7d andi r24, 0xDF ; 223
    8a 33 cpi r24, 0x3A ; 58
    08 f0 brcs .+2
    87 50 subi r24, 0x07 ; 7
    8f 70 andi r24, 0x0F ; 15
    08 95 ret
    すばらしいです。

55 デフォルトの名無しさん [sage] Date:2009/01/04(日) 22:50:41  ID: Be:
    h &= ~0x20; って必要? 

56 デフォルトの名無しさん [sage] Date:2009/01/04(日) 23:43:33  ID: Be:
    要らないはず。

    むかーし、Z80のプログラムを逆アセンブルしてたら
    同じように16進ASCII2桁を数値に直すサブルーチンがあって
    正確には覚えてないが
     push af
     a >>= 4
     call half
     pop af
    half:
     以下1桁分の計算
     ret
    のような感じの、半再帰的な造りに感動した覚えがある。 

57 デフォルトの名無しさん [sage] Date:2009/01/04(日) 23:46:02  ID: Be:
    ん、2桁がAに入るわけないな。
    まあとにかく、サブルーチン内のわずか先を一度callするやり方、ってことで。 


■_


すべてのアルゴリズムは、たった3つの制御構造の組み合わせで記述することができる。3つの制御構造とは、図1~3が示すような順次実行、分岐実行、繰り返し実行である

すべてのアルゴリズムは、たった3つの制御構造の組み合わせで記述することができる。3つの
制御構造とは、図1~3が示すような順次実行、分岐実行、繰り返し実行である
​http://www.rsch.tuis.ac.jp/~kitakaze/2008/flow.html​

とありますが、

以前、学生時代、教授がこれについて、ハードウェアとからめて説明していたのを
思い出します。

「ハードウエアを見ても、CPUがどうの、こうのだから、順次実行、ハードウエアのここで分岐
を実行して、ハードウェアのここで反復実行をしている。だからソフトウエアとしてもこの3つ
の命令ですべてのアルゴリズムを記述できるわけだ」

というような感じの説明でした。

そのときは、なるほど深く理解しているひとは、アルゴリズムというソフトウエアと
回路、素子などによる構成物であるハードウエアと両方見て、合理的に説明する能力が
あるのだなと感心しました。
その具体的なひとことは残念ながら思い出せませんので質問します。

ハードウェアとアルゴリズムが3つの指令(分岐、繰り返し、順次)ですべて記述できること
の間の関係をうまく説明できる方はいますか?

よろしくお願いします。

第二次世界大戦中、エニグマというコンピューターを開発しているとき、アラン・チューリング
という数学者が証明していますね。

もしも、無限大の時間があれば、全ての計算が出来ることを説明しています。この理論が基礎に
なって、現在のコンピュータの基本が生まれています。

基本は、無限大の長さのテープとヘッドからなります。ループを繰り返す制御構造に、分岐を加
えれば、ループから抜け出せます。逐次計算を行えば、それで計算が出来ます。

それらの繰り返しが、ソフトウエアとハードウエアの基礎的構造になっているからですよ。

詳しいことは、Donal E.KunthのThe Art of Computer Programing の第一巻に出ていますよ。
私はちょっと納得できません。

繰り返しは、分岐の応用ではないんでしょうか?
とてもアルゴリズムの基本とは思えません。

例えば、回路の基本は、and,or,notですが、eorは
それらの組合せで出来るので、基本から外れて応用
に感じるのと同じように思えます。

私の捉え方が違うのでしょうか?

おいおい…エニグマはナチスドイツの暗号機だし、 チューリングマシンと構造化定理を直接結び付けるのどうかと思うのだけど。

■_

国産DIコンテナSeasar その14 [bbs2chreader]
550 デフォルトの名無しさん [sage] Date:2009/01/04(日) 15:08:49  ID: Be:
    恒例の福袋ですよ^^


       ∧l二|ヘ
      (・ω・ )  ←に土産を持たせてどこかのスレに送ってください
     ./ ̄ ̄ ̄ハ
     |  福  | |
     |  袋  | |,,,....
       ̄ ̄ ̄ ̄

    現在の所持品: 帽子 老眼鏡 爪楊枝 オプーナ 真緋蜂・改 エヴァッカニア・ドゥーム
    チャバネゴキブリ ネクロノミコン ラヴクラフト全集  ちんこケース ヨグ=ソトース


なんつーものが土産になってるんだw

2009年01月03日

■_

・無為な一日
積読を若干消化。週明けはもう仕事なんだよな○| ̄|_

■_ redditに訊け! Cを勉強しようと思っているのですが、良い本やwebサイトなどがあったら教えてください


AskProgramming: I'm going to start learning C. Any recommendations as far as books, websites, etc go? : programming

The C Programming Language, by Kernighan & Ritchie... Simply essential.
Incidentally, I'm reading it right now. Seems pretty good so far, although since I'm 
coming from Java I have to resist skipping through large chunks of it. I think I'm 
going to go back and do most of the excercises or something because otherwise I won't 
get used to writing C programs. Are the excercises pretty good? I noticed that after 
the first few they got fairly complex fairly fast for the amount of material covered 
up to that point, which seemed a bit odd to me, but I think it was more targetted at 
people who are programmers rather than novices, right?
THE choice, but I first picked up the SAMS Teach Yourself C in 21 Days, and it really 
was a great intro to real programming, since I hadn't learned anything since BASIC and 
Logo as a kid.
My first programming book was SAMS Teach Yourself C++ in 24 hours. 6 years later I'm 
still learning it.
Then you should read Peter Norvig's article "Teach Yourself Programming in Ten 
Years"
This is a fantastic book, I used it extensively when I made the switch from Pascal to 
C++. It's short, to the point and very clear.

For me, the biggest problem in learning C wasn't the language itself, but the tools 
that were required to program with it.
Please do not put C and C++ in the same basket.

They're both processor independent assembly. They belong in the same basket.

C is like processor-independent assembly. Basically every major feature C++ adds is a 
not-very-assembly-like feature, so in my opinion C++ is not processor-independent 
assembly.

You are right. But it is a common mistake to think that "C++ is C with OOP 
added."

What could you do in C++ that you couldn't do in Pascal?

Welcome to heavy metal.

In general, be careful: Only Java has more crappy books. And C++. And C#.

A old (2nd) edition of "C How to Program" is great, before the Deitels 
filled it up with all that other bloat. Which, unfortunately, wouldn't cover C99. But 
can be had for $3.99 online.

Also "C in a Nutshell" is great for a reference.

K&R, and Stevens are assumed by a lot of folks.

Get Eclipse and load all the debug versions of the C libraries you use on the Ubuntu 
machine you built for this endeavor. You'll be able to see what's going on.

"The Definitive Guide to GCC" helps with all the attendant ugliness. Also, 
the GCC Manual for your version.

"Practical C programming" is pretty good for starters.

teach yourself で 21days ってのと 24hours ってのがあるのか?

■_


C++相談室 part65 [bbs2chreader]

147 デフォルトの名無しさん [sage] Date:2009/01/03(土) 12:59:25  ID: Be:
    C++はRAIIができるからfinallyがないという話なんですが、どうも納得できません。
    後処理が必要なのはリソースの解放だけではないと思います。
    たとえば、特定の処理を行うときだけ乱数種を固定したいという場合、

    unsigned seed = Random::GetSeed();
    try {
      Random::SetSeed(0);
      DoSomething();
    } finally {
      Random::SetSeed(seed);
    }

    上のように書くのが自然だと思いますが、C++的には「RandomSeedMemorizer」のような
    クラスを定義しなければならないということなのでしょうか? 

148 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:02:20  ID: Be:
    そう。 

149 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:03:02  ID: Be:
    クラス作っておけば使い回し利くだろ。
    finally みたいなその場しのぎよりよっぽど良い。 

150 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:03:35  ID: Be:
    RandomSeedMemorizerではダメな理由がわからない。

    DoSomethingがrandom generatorを引数で受けるようにするというのもあると思うけど。 

151 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:05:50  ID: Be:
    >>147
    seedを固定できる乱数クラスを作る。
    finallyのようなその場しのぎだと、記述忘れを起こしたりでバグの巣窟になる。。

152 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:08:35  ID: Be:
    確かに乱数なら乱数クラス作るのが一番だな。
    まあ、ファイル操作なら >>147 みたいなのが必要になるね。 

153 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:11:34  ID: Be:
    え?要らないでしょ・・・ 

154 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:13:26  ID: Be:
    逐次的にファイルを読んでる時に
    一時的にファイルの途中を読みたいときに使うでしょ。 

155 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:15:19  ID: Be:
    >>154
    seek位置を保存再生するクラスを作れば? 

156 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:15:54  ID: Be:
    それFilePointerMemorizerでいいのでは 

157 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:17:54  ID: Be:
    >>148-150
    やっぱりそうなんですね。
    ただ、このような単純な処理までもクラスに分割してしまうことで、却って処理の流れが
    不透明になるような気もするんですが、そういう議論はないのでしょうか。

    >>151
    それはRandomSeedMemorizerとは違うんですよね?
    固定解除のタイミングが良くわからないんですが、たとえばどういうコードになりますか? 

158 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:21:08  ID: Be:
    >>155
    それがまさに RandomSeedMemorizer と同じような処理だろ・・・。 

159 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:22:40  ID: Be:
    慣れの問題な気がするナー
    finallyはクラスつくんなくていいけど
    対応を目でイチイチ追わないといかんのがちょっと・・・ 

160 デフォルトの名無しさん [sage] Date:2009/01/03(土) 13:22:42  ID: Be:
    >>157
    そもそも流れにはあまり固執する必要は無い。 

161 147 [sage] Date:2009/01/03(土) 13:41:13  ID: Be:
    >>159-160
    なるほど。クラスの粒度に関する考え方の問題に似ているように思います。
    ある意味、C++は小クラス主義を強制する言語なのかもしれないですね……。 

162 デフォルトの名無しさん [sage] Date:2009/01/03(土) 16:53:14  ID: Be:
    どちらかと言うと、C++はなにも強制しない言語なんだが。 

163 147 [sage] Date:2009/01/03(土) 17:54:38  ID: Be:
    >>162
    でも、委員会にはfinallyを標準化する意志はないみたいですよね。
    無名関数であるlambdaを入れられるくらいなら、無名デストラクタであるfinallyを
    入れられない理由はないと思うんですが、思想的なものが影響してるのかと思ったり。

    JavaにもC#にもDにもfinallyがあるのに、C++にだけはないなんて。 

164 デフォルトの名無しさん [sage] Date:2009/01/03(土) 17:56:54  ID: Be:
    他にあるから入れる、というのはあんまりな・・・ 

165 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:08:50  ID: Be:
    つか、ここでボヤいててもしょうがないと思うが。 

166 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:15:54  ID: Be:
    いやこのスレには割とC++0x標準化委員会のメンバーがいたりする 

167 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:16:53  ID: Be:
    finally がどうしても必要なのはガベコレがあるからであって、
    ガベコレのない C++ はデストラクタに頼ったので良い、という考え方なのだろう。 

168 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:21:37  ID: Be:
    lambdaがあればDのscope(exit)みたいなものを実装できないか
    finallyはしらね

    struct scope_exit_impl {
    scope_exit_impl(std::reference_closure<void ()> const& f):f(f){}
    ~scope_exit_impl(){f();}
    std::reference_closure<void ()> f;
    };
    #define scope_exit(hoge) scope_exit_impl guard([&](){ hoge })
    scope_exit( 後始末() ); 

169 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:23:16  ID: Be:
    finally使うと処理がユーザコード側に分散するからなあ 

170 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:43:17  ID: Be:
    やろうと思えばローカルクラス使ってこんなのはできる
    めんどくさいけどな

    void func()
    {
      class finally{
        ~finally(){
           //...後始末
        }
      } finally_;

      try{
        //...なんかする
      }catch(...){
        //...万が一に備えて
      }
    } 

171 デフォルトの名無しさん [sage] Date:2009/01/03(土) 18:51:01  ID: Be:
    こんな感じとかか。
    まずやらんが。

    void func() {
     {
      struct local_t {
       local_t() : a(1) {
       }
       ~local_t() { // finally
        std::cout << a << std::endl;
       }
       int a;
      } local;

      try {
       throw std::exception();
       local.a = 2;
      } catch (...) {
      }
      // ここには何も書かない
     }
     std::cout << "end" << std::endl;
    } 

172 147 [sage] Date:2009/01/03(土) 19:16:47  ID: Be:
    >>167
    DにはGCがありますが、C++のようなRAIIとfinallyの両方をサポートしています。
    理想論はともかく、現実的にはやはり両方あった方が便利ということかと。

    >>170-171
    そういう方法があるのは一応知ってますが、推奨される書き方ではないですよね。
    ここで質問したのは、C++にfinallyがなくても大丈夫な理由を説明してくれる人が
    いるかと思ったからなのですが、やたら小さいクラスは作りたくないしトリッキーな
    方法も使いたくない、だけど例外のメカニズムは使いたいという要求に応える回答は
    今のところないようです。 

174 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:20:20  ID: Be:
    いや、GC ないから RAII が必ず動く事が保証されるので
    RAII で大丈夫、ちうのが回答なわけだが。 

175 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:21:19  ID: Be:
    >>174
    GCあっても、RAIIが動かなくなるなんてことはない。
    この二つは直行概念だよ。 

176 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:25:05  ID: Be:
    まあ、C# の using や D の scope みたいなのを使えば動くからね。
    でも、こいつらって finally が導入された後に導入されたんじゃね? 

177 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:29:44  ID: Be:
    GC管理オブジェクトをRAIIすることはできないんだってば
    ファイナライザは不確かすぎてリソースの確実な開放のような重要な仕事を任せることは出来ない
    だからfinallyが必要になる

    逆にRAIIしたいオブジェクトはGCの管理から外れてないといけない
    というか後始末はプログラマの仕事になるから任せるわけにはいかない
    その区別のためにDではscopeなんていう予約語があるし
    C++/CLIではポインタとハンドルを分けてる 

178 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:30:31  ID: Be:
    >>176
    Dのscopeはクラス(参照型)でRAIIを実現するためのキーワード。
    (もちろん、finallyのシンタックスシュガーとも言える)

    Dでも構造体(値型)をスタックに確保すれば、C++のクラス(値型)と同様のRAIIを使える。 

179 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:35:42  ID: Be:
    >>176
    C#は1.0の最初からusingを持っている。
    一般的にはusingが推奨されているし、実際コーディングしていてもfinallyなんて滅多に使わない。 

180 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:36:57  ID: Be:
    >>179
    そうなのか。
    ま、やっぱり finally は GC 使っちゃった場合の
    苦肉の策でしかないわな。 

181 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:39:38  ID: Be:
    >>172
    「やたら小さいクラスは作りたくない」
    この主観が邪魔してるだけだろ。

    小さいクラスを作ってもたいしたデメリットは無いだろうし、あったとしても
    同じ後始末処理を使いまわせるメリットに勝ることはないだろう。

    auto_ptr は小さいクラスだが、コレ使わずに finally 使えとか言われたら死ねる。 

183 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:46:19  ID: Be:
    >>177
    それがfinallyである必要はない。
    DのscopeやC#のusing、C++/CLIの(参照クラスの)デストラクタのように、
    GC付き言語でfinallyよりC++のデストラクタに近いものはいくらでもある。 

184 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:52:33  ID: Be:
    >>183
    DやC#やC++/CLIはGC付き言語だけど
    そこで挙げてるようなのはGCの管理外だぞ
    だからC++のデストラクタに近いものなのは当たり前だし、GCとは別に用意されてるんだ

    わかってる?大丈夫? 

185 デフォルトの名無しさん [sage] Date:2009/01/03(土) 19:52:53  ID: Be:
    もっと議論読んでくれよ・・・ 

186 デフォルトの名無しさん [sage] Date:2009/01/03(土) 20:24:07  ID: Be:
    >>184
    C#やDなどの場合、finallyとusing/scopeはお互い等価に変換できるシンタックスシュガーの関係。
    using/scopeも後始末用のメソッドを呼ぶだけで、インスタンス自体のメモリの解放はGC任せ。

    「だからfinallyが必要になる」って書いているけど、
    本当に必要なのはfinallyそのものではなく「確実に後処理を行える機構」。
    finallyはそのための手段の1つでしかない。もちろんusingやscopeもその手段に該当する。 

187 デフォルトの名無しさん [sage] Date:2009/01/03(土) 20:33:32  ID: Be:
    まあ、特に finally とか必要ないと思う。
    finally でハードコーディングするよりゃRAII 使え。 

194 147 [sage] Date:2009/01/03(土) 23:00:39  ID: Be:
    >>181
    auto_ptrのように標準で用意されているクラスを使えばそれでよしというのなら
    まだ納得できるのですが、自分で小さいクラスを書かなければいけないとなると、
    やはり小クラス主義の思想を強制されているように感じてしまいます。

    RAII方式のデメリットといえば、
    (1) 一つの関数内だけでシンプルに記述できない
    (2) finallyで書いた場合よりも行数が増える
    (3) クラスの名前を考えなければならない
    (4) 後処理の実装を再確認するときにも一手間増える
    (5) クラスを定義するために別の場所に移動するとき一瞬思考が途切れる
    などでしょうか。

    これらを差し引いてもメリットが上回ると心の底から納得することができれば、
    面倒な思いをしなくても済むのでしょうけれど……。 

195 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:01:44  ID: Be:
    (2) finallyで書いた場合よりも行数が増える

    使い回せばむしろ減る。 

196 147 [sage] Date:2009/01/03(土) 23:04:08  ID: Be:
    >>195
    使い回せばと言いますけど、1回しか出現しないような処理も結構あるわけですよ。 

197 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:18:33  ID: Be:
    スコープはずれた時にコンストラクタ引数で渡した関数を呼び出すようなクラスを用意しとけば使い回せるじゃん。
    C++0x で lambda が書けるようになれば↑と組み合わせてほとんど解決されるんじゃね?
    lambda って言っても実質ローカルクラスなんだけどさ。 

198 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:19:00  ID: Be:
    OOPの理想の最終形態は自分でクラスを作らない、具体的な実装を知る必要もない
    というところにいくので1-5はデメリットにならない。 

199 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:23:40  ID: Be:
     小クラス主義って何だ?大クラス主義もあるのか?

    クラスというのは機能の単位だ
    長い関数が悪であるのと同じように、何でもかんでも詰め込んだ巨大クラスも悪だし、
    そういうクラスは適切に分割するのがOOPの基本
    それを小クラス主義と呼ぶのなら的外れだし、大クラス主義とやらはただのヘタな設計だ 

Ruby のメーリングリストにたまに「大クラス主義」ってでてきますわな。

Ruby 初心者スレッド Part 24
33 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:13:09  ID: Be:
    Emacs使っていると、ruby のファイルを書いて保存すると
    # -*- coding: utf-8 -*-
    というのが勝手に先頭につくようになったのですが、やめさせることはできますか。 

34 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:16:47  ID: Be:
    できますよ 

35 デフォルトの名無しさん [sage] Date:2009/01/03(土) 23:19:43  ID: Be:
    1.9以降では実質的に必須になるから慣れておいた方がいいとは思うけど。 
Perlについての質問箱 38箱目
855 デフォルトの名無しさん [] Date:2009/01/02(金) 21:13:08  ID: Be:
    Perl使う奴は心の捻じ曲がった奴が多いんだろうな。
    言語仕様から捻じ曲がってるし。 

856 デフォルトの名無しさん [sage] Date:2009/01/02(金) 21:23:55  ID: Be:
    >>855
    まったくその通りだと思う。Perlなんかさっさと忘れた方がいいよ。 

857 デフォルトの名無しさん [sage] Date:2009/01/02(金) 21:38:53  ID: Be:
    をいをい。Perl使いがどれだけ親切なのか知らないのか。
    そうだな。>>820の言葉が足りない分は察して補いつつ、しかも
    上司に提出したら、>>56が言うようにPerlのことをさっさと忘れられるように
    なるスクリプトをタダで作ってやったぞ。

    $ref = \@hydraoc;
    while(<DATA>){
      $ref = \@{%SEL_HTMLIFIED%amp;} if /(^hydraoc)|(^state)/;
      push @$ref, $_;
    }
    print "hydraoc log:\n", @hydraoc, "\n";
    print "state log: \n", @state, "\n";

    __DATA__
    hydraoc(188)Entering OC_PREINITIALIZE
    hydraoc(189)Component=terminalserver,
    hydraoc(188)Entering OC_INIT_COMPONENT
    hydraoc(189)Component=terminalserver, SubComponent=(null)
    state.cpp(1006)Setup Parameters
    state(1007)We are running on Wks
    state(1008)Is this adv server No
    state.cpp(1009)Is this Personal (Home Edition) No
    (1010)Is this SBS server No
    (1011)IsStandAloneSetup = Yes
    IsFreshInstall = No
    state.cpp(1013)IsTSFreshInstall = No

858 デフォルトの名無しさん [sage] Date:2009/01/02(金) 23:30:02  ID: Be:
    >>857
    残念。課題を100回読んでから出直して来い。 

859 デフォルトの名無しさん [sage] Date:2009/01/02(金) 23:38:09  ID: Be:
    まったくもう。これだからフローチャートの書けないヤツは・・・ 

860 デフォルトの名無しさん [sage] Date:2009/01/02(金) 23:58:37  ID: Be:
    シンボリックリファレンスなんか使うなよ 

861 デフォルトの名無しさん [sage] Date:2009/01/03(土) 00:27:10  ID: Be:
    先週乗った電車で、Perl使いがお婆さんに席譲ってる所見かけた 

862 デフォルトの名無しさん [sage] Date:2009/01/03(土) 01:12:03  ID: Be:
    それはよく訓練された性格悪いPerl使いだ。 

863 デフォルトの名無しさん [sage] Date:2009/01/03(土) 01:34:17  ID: Be:
    perl 使いは、紫外線を当てるとオデコに perl と文字が浮かぶからすぐわかる。 

865 デフォルトの名無しさん [sage] Date:2009/01/03(土) 15:27:45  ID: Be:
    「今年こそ良い年になりますように」景気回復や家族の幸せを祈り、明治神宮では
    大みそかの深夜から参拝する人が玉砂利の参道に列をなした。
    警察庁によると、明治神宮の正月三が日のPerl使いの人出予想は305万人。 

866 デフォルトの名無しさん [sage] Date:2009/01/03(土) 16:49:03  ID: Be:
    参拝に来ていたPerl使いの声
    「(何をお願いしたんですか?)
    今年こそPerl6がリリースされますように、
    とお願いしました」(20代女性、Perl暦2年) 



C++0x 4 [bbs2chreader]
905 デフォルトの名無しさん [sage] Date:2009/01/01(木) 02:18:43  ID: Be:
    いよいよ09年なわけだが 

906 デフォルトの名無しさん [sage] Date:2009/01/01(木) 03:41:14  ID: Be:
    今年中に纏まるとは思えないのだが。 

907 デフォルトの名無しさん [sage] Date:2009/01/01(木) 03:59:11  ID: Be:
    日本限定なら09年度という便利な言葉が使えるんだが。 

908 デフォルトの名無しさん [sage] Date:2009/01/01(木) 04:04:08  ID: Be:
    それでも猶予は4ヶ月しか増えないのだが 

909 デフォルトの名無しさん [sage] Date:2009/01/01(木) 06:57:41  ID: Be:
    いや、そもそも0x年まであと27年もあるわけだが 

910 デフォルトの名無しさん [sage] Date:2009/01/01(木) 07:08:47  ID: Be:
    C++0xa 

911 デフォルトの名無しさん [sage] Date:2009/01/01(木) 09:10:41  ID: Be:
    (++0x)
    だからあと2年猶予があるぞ 

912 デフォルトの名無しさん [sage] Date:2009/01/01(木) 09:13:14  ID: Be:
    どうせ急いで制定してもC++プログラマの大多数は飛びつかないな・・・ 

913 デフォルトの名無しさん [sage] Date:2009/01/01(木) 10:13:30  ID: Be:
    とりあえずautoだけでも早く使えるように頼む 

914 デフォルトの名無しさん [sage] Date:2009/01/01(木) 16:07:46  ID: Be:
    いやいやunique_ptrを 

915 デフォルトの名無しさん [sage] Date:2009/01/01(木) 16:14:38  ID: Be:
    スレッドの概念が入るだけでありがたい 

916  【豚】 【282円】  [sage] Date:2009/01/01(木) 23:19:47  ID: Be:
    variadic templatesが使えるようになるのはいつですか 

917 デフォルトの名無しさん [sage] Date:2009/01/01(木) 23:25:07  ID: Be:
    2011 

918 デフォルトの名無しさん [sage] Date:2009/01/02(金) 07:47:47  ID: Be:
    >916
    gcc 4.3 以降を入れれば今すぐにでも。

■_

■_ ふう

英語のblogでも結構面白そうなネタが引っかかってるんだけどやくすのめんどー。

日テレで放送中の「イノセンス」視聴中。でかい画面で観ないとありがたみねーなw 人はおおむね自分で思うほどには幸福でも不幸でもない。肝心なのは望んだり生きたりすることに飽きないことだ。 ref: 引用 - イノセンス関連情報まとめ

2009年01月02日

■_

・これは面白い
サクサク現代史!(ナレッジエンタ読本 6) (ナレッジエンタ読本)
学校では教えてくれない近現代史(笑) 中東が今のようになった経緯や(なぜイスラエルとパレスチナがあのようになっているかとか) 、 冷戦の進展などがよくわかります。 ボリュームの問題もあるので細大漏らさずというわけにはいきませんが (アフリカはほぼノータッチ)、 知っておくべきことはきちんと抑えられていてしかもわかりやすい。 イギリスくんのひどさとかw この巻で収録されなかった部分の刊行をしてもらうためにも是非どうぞ :)

■_



初心者のためのプログラミング言語ガイド Part12

821 デフォルトの名無しさん [] Date:2009/01/02(金) 15:42:27  ID: Be:
    よくC++は難解・複雑とかいうけど
    単にWindowsのAPI設計がダメすぎるだけなんだよね。
    そのためにC#を教えようとするぐらいなら
    ラッパーTK+C++を勧めたほうがいい気がするね。
    C#なんて初心者に教えるもんじゃねえ。
    ぬるま湯・プラットフォーム依存で楽できても行き詰まりそう。
    やっぱり可愛い子には旅をさせろで、
    将来自分で道を開ける子になってもらうにはC/C++を先に教えないと。
    C#なんてある程度経験ある奴が生産性を秤にかけて使うもんだろ。

    俺ならC++ + wxWidgetsとかでウィンドウアプリ作るの目標にさせる。 

828 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:15:16  ID: Be:
    >>821
    「初心者のための~」スレで何でクロスプラットフォーム開発とか
    出てくるんだよ……

    > 将来自分で道を開ける子になってもらうにはC/C++を先に教えないと。
    > C#なんてある程度経験ある奴が生産性を秤にかけて使うもんだろ。

    この発想も全く賛成しかねる。

    CS教えるカリキュラムでも、いずれCだのアセンブラも学ばせるにしても
    最初はSchemeとかで教えるわけだろう。

    一番重要な「抽象化」「アルゴリズム」「設計」のようなものを学ばせるには、
    CだのC++だのは、気にしなければならない雑音が多すぎる上に、
    言語のレベルが低すぎて、もっと抽象度の高い概念を学ぶことができない。

    下に下りるのは、抽象度の高いところで、やりたいことを
    やれるようになってからでいい。 

829 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:24:50  ID: Be:
    そこでHaskellですか? 

830 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:27:57  ID: Be:
    いきなりHaskellはどうなるかある意味興味深いなw 

831 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:36:31  ID: Be:
    関数型はともかく、デフォルトで遅延評価は比較的珍しいから
    そこがどう出るか分からん 

正規表現 Part5
556 551 [sage] Date:2009/01/01(木) 14:17:19  ID: Be:
    このスレのせいで550がイルカの虜になってしまった
    なんて親切なスレなんだ 

558 デフォルトの名無しさん [sage] Date:2009/01/02(金) 11:43:20  ID: Be:
    2007ではイルカ出なくなってるよね 

559 デフォルトの名無しさん [sage] Date:2009/01/02(金) 11:46:47  ID: Be:
    冴子先生がいい 

560 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:37:56  ID: Be:
    スターウォーズのジャージャービンクス
    Office のイルカ

    大ヒットメーカーが調子に乗りすぎて生み出してしまった
    世界の2大うざキャラ。 

561 デフォルトの名無しさん [sage] Date:2009/01/02(金) 17:31:36  ID: Be:
    なんかわかるw 

D言語 Part20 
579 デフォルトの名無しさん [sage] Date:2009/01/02(金) 19:21:34  ID: Be:
    dmcでTinySchemeうごいたぜうひひ 

580 デフォルトの名無しさん [sage] Date:2009/01/02(金) 20:35:23  ID: Be:
    D言語仕様が一社だけで決まるのは明らかによくないよなぁ
    だれかうぉるたん説得して 

581 デフォルトの名無しさん [sage] Date:2009/01/02(金) 20:36:59  ID: Be:
    >>580
    そして仕様が決まらないままん何年経つんですね、分かります。 

582 デフォルトの名無しさん [sage] Date:2009/01/02(金) 21:01:46  ID: Be:
    D 0x の旗揚げである 

583 デフォルトの名無しさん [sage] Date:2009/01/02(金) 21:03:04  ID: Be:
    実際には2xあたりになりそうだなw 


【逆立ちしても】使えない新人 0x18
372 仕様書無しさん [sage] Date:2009/01/01(木) 21:53:25  ID: Be:
    新人から来た年賀状。
    住所が「東京都神奈川県~」で郵便番号は北関東の某所のものだった。
    郵便屋さん、ご苦労様です。 

373 郵便屋さんだったマ [sage] Date:2009/01/01(木) 22:00:52  ID: Be:
    住所が「市内~」で郵便番号が多摩地区だったことがあった
    消印を見ると鹿児島県某市・・・・
    日付からすると半月ほどたってたから
    鹿児島と何回も行ったり来たりしていたんだろうなぁ 

374 仕様書無しさん [sage] Date:2009/01/02(金) 01:26:55  ID: Be:
    物凄い優秀だなw 

375 仕様書無しさん [sage] Date:2009/01/02(金) 03:06:43  ID: Be:
    さらなる民営化には反対せざるを得ない。w 

ふざけた変数名を使う奴
477 仕様書無しさん [sage] Date:2008/12/18(木) 00:11:36  ID: Be:
    グローバル変数に

    item1 , item2 , .... , item34 ;
    i , j , k ;

    グローバル変数にだぜ!!

    これを書いた先輩は、大手のIT会社に就職した ...
    世の中間違いだらけ orz 

480 仕様書無しさん [sage] Date:2009/01/02(金) 19:56:28  ID: Be:
    >>477
    ループ毎に宣言するのが面倒だからって、グローバルで宣言した先輩いたよ。
    案の定、ループ中に別関数へ飛ぶ処理書いて死んでた。 

Perlについての質問箱 38箱目
821 820 [sage] Date:2009/01/01(木) 13:43:22  ID: Be:
    すみません。>>820のログは間違いです。正しくは、
    -------ここから----------------------
    hydraoc(188)Entering OC_PREINITIALIZE
    hydraoc(189)Component=terminalserver,
    hydraoc(188)Entering OC_INIT_COMPONENT
    hydraoc(189)Component=terminalserver, SubComponent=(null)
    state.cpp(1006)Setup Parameters
    state(1007)We are running on Wks
    state(1008)Is this adv server No
    state.cpp(1009)Is this Personal (Home Edition) No
    (1010)Is this SBS server No
    (1011)IsStandAloneSetup = Yes
    IsFreshInstall = No
    state.cpp(1013)IsTSFreshInstall = No
    ---------ここまで----------------------------
    です。>>820は無視してください。 

822 820 [sage] Date:2009/01/01(木) 13:45:24  ID: Be:
    このログは「hydraoc」と「state」という2種類のログが
    合わさったものと考えてください。(上4行がhydraocログ、下8行がstateログ)

    質問ですが、Perlを使って、"cpp"のある行だけを抜き出すスクリプト
    は書けるのですが、5行目から下全部の合計8行をファイル出力する
    Perlスクリプトを作成することは可能でしょうか? 

823 デフォルトの名無しさん [sage] Date:2009/01/01(木) 13:50:44  ID: Be:
    sed なら 1,4d だけど・・・
    perl だと、そのファイルを open して、不要な行を読み飛ばせばいいんじゃないかな。

824 デフォルトの名無しさん [sage] Date:2009/01/01(木) 13:51:12  ID: Be:
    可能です。
    私には
    >(1010)Is this SBS server No
    >(1011)IsStandAloneSetup = Yes
    >IsFreshInstall = No
    がどちらのログか判断する根拠がありませんが、あなたにはあるのですよね?
    それをプログラムに教えてあげましょう。 

825 820 [sage] Date:2009/01/01(木) 14:20:25  ID: Be:
    >>824
    私はPerl初心者ですが、職場の先輩から上記に類似した宿題を
    出されていて困っています。もしかして課題の内容がおかしいのでは?
    と思っています。

    >(1010)Is this SBS server No
    >(1011)IsStandAloneSetup = Yes
    >IsFreshInstall = No

    ↑この3行もstateログです。
    これをcpp行と一緒に出力させるのは、共通の"Is"もパターンマッチ
    させれば良いのでしょうか?でもそうすれば、例えばhydraocログ内に
    "Is"が存在すれば一緒に出力されてしまいます。出力は↓のようにしたいです。
    --------------------------------------
    state.cpp(1006)Setup Parameters
    state(1007)We are running on Wks
    state(1008)Is this adv server No
    state.cpp(1009)Is this Personal (Home Edition) No
    (1010)Is this SBS server No
    (1011)IsStandAloneSetup = Yes
    IsFreshInstall = No
    state.cpp(1013)IsTSFreshInstall = No
    -------------------------------------

    やっぱり課題がおかしいと思うんです.....何かすみません。変な質問してしまって。

826 デフォルトの名無しさん [sage] Date:2009/01/01(木) 16:11:24  ID: Be:
    hydraocログって、先頭が'hydraoc'から始まるってこと?なら、
    print unless /^hydraoc/;
    で終わりだが。 

827 820 [sage] Date:2009/01/01(木) 18:48:21  ID: Be:
    >>826
    ありがとうございます。上のログでは、hydraocログの部分は
    各行に"hydraoc"が含まれるので、print unless /^hydraoc/;と
    やれば"hydraoc"が含まれる行以外の行を出力、となるのは
    初心者の私にもわかります。ただ実際に先輩から出された課題は
    "hydraoc"ログ部分に"hydraoc"が存在しない行も含まれます。
    上で出した私の事例が不適切でした。ネットや書籍でも調べましたが、
    やはり「キーワード"state"を見つけたら、そこから後のすべての行を出力」
    みたいな処理は書けませんかね? 

828 デフォルトの名無しさん [sage] Date:2009/01/01(木) 19:06:13  ID: Be:
    >>827
    プログラム言語なんだから、書けないわけないだろ。
    一体何を言ってるんだ? 

829 デフォルトの名無しさん [sage] Date:2009/01/01(木) 19:54:41  ID: Be:
    while(<DATA>) {
    print if /^state/ .. '';
    }

    __DATA__
    hydraoc(188)Entering OC_PREINITIALIZE
    hydraoc(189)Component=terminalserver,
    hydraoc(188)Entering OC_INIT_COMPONENT
    hydraoc(189)Component=terminalserver, SubComponent=(null)
    state.cpp(1006)Setup Parameters
    state(1007)We are running on Wks
    state(1008)Is this adv server No
    state.cpp(1009)Is this Personal (Home Edition) No
    (1010)Is this SBS server No
    (1011)IsStandAloneSetup = Yes
    IsFreshInstall = No
    state.cpp(1013)IsTSFreshInstall = No 

830 デフォルトの名無しさん [sage] Date:2009/01/01(木) 23:41:22  ID: Be:

    ようするにぃ、820 はぁ、perl の文法を全く知らないっ・・・と。
    ファイルのopenの仕方、読み込み方、closeのしかた。
    全て何も知らない。全く知らない。
    もちろん、本を買って勉強する気などサラサラ無い。
    ネットで検索する気もぜ~んぜん無い。
    教えてくれ、教えてくれ!を連発するだけで問題が解決すると考えている。

    もしかしたら perl どころか、他のプログラミング言語を全く知らない可能性もあるな。 

832 820 [sage] Date:2009/01/01(木) 23:53:43  ID: Be:
    >>830
    まだ勉強始めたばかりだけど少しなら知ってる。
    C#勉強中。
    open(OPENFILE >>"xxx.txt")とか、
    ファイルハンドル使用してファイルを読み込んだりファイルに書き込んだりは出来る。
    本はリャマ本を半分くらい読んだ。
    >>829だと、hydraocが4行分出力されてるので×。
    なあ、鼻くそチンカス、>>830、テメーしばくぞカスが。
    誰にモノ申しとんじゃワレ。

836 デフォルトの名無しさん [sage] Date:2009/01/02(金) 00:03:01  ID: Be:
    つーか>>820(>>832)は素人じゃないんだろ?
    だったらこんな簡単な処理くらいすぐ書けるだろ
    なんで書けないのかが不思議なんだが 

837 デフォルトの名無しさん [sage] Date:2009/01/02(金) 00:31:50  ID: Be:
    >>827の下二行で書いてるのがまさに>>829だろ。 

839 デフォルトの名無しさん [sage] Date:2009/01/02(金) 01:18:08  ID: Be:
    >>832

    > なあ、鼻くそチンカス、>>830、テメーしばくぞカスが。
    > 誰にモノ申しとんじゃワレ。

    直接顔あわせたらこんなこといえるわけ無いんだけど。

    もう何も答えなくていいでしょ 

842 デフォルトの名無しさん [sage] Date:2009/01/02(金) 03:32:04  ID: Be:
    >>832

    >C#勉強中。
    >本はリャマ本を半分くらい読んだ。

    嘘じゃんwww書籍読んでる人の質問じゃないし
    仮に読んでたとしても理解できてないなら読んでないのと同じだしなw
    おまいはもっと簡単な入門書的位置付けの本から始めるべきだったんじゃねぇの?www 

850 デフォルトの名無しさん [sage] Date:2009/01/02(金) 18:35:33  ID: Be:
    >>832
    >>>829だと、hydraocが4行分出力されてるので×。

    あれ?
    自分の環境だと出力されないけどなー 

851 820 [sage] Date:2009/01/02(金) 18:58:44  ID: Be:
    >>850
    ゴメン。__DATA__ 以下が出力結果だと勘違いしました。
    >>829さんのレスに感謝です。 

853 デフォルトの名無しさん [sage] Date:2009/01/02(金) 19:40:01  ID: Be:
    >>841 を読んで、「何言ってんだろう」と思ったけど、
    >>851 見ると、大当たりだな。
    それにしても820よ。本当にこれでいいのかい。
    >>829 は「>>827 に書かれた要望」には忠実だが、
    本当にこれが欲しかったものなのかどうか、
    よく意味を考えて自分で判断しないとな。

854 デフォルトの名無しさん [sage] Date:2009/01/02(金) 19:52:46  ID: Be:
    いいんじゃない?本人が納得したんだから。
    どうせ、な~~んにも考えてないやろ。 

855 デフォルトの名無しさん [] Date:2009/01/02(金) 21:13:08  ID: Be:
    Perl使う奴は心の捻じ曲がった奴が多いんだろうな。
    言語仕様から捻じ曲がってるし。 

推薦図書/必読書のためのスレッド 43
553 デフォルトの名無しさん [sage] Date:2009/01/02(金) 15:55:29  ID: Be:
    10年前にはC++とかのプロジェクトがどっかんどっかんと
    増えてくるかと思ってたら、相変わらずCばっかり、という気がする。俺の周りじゃ。

    比較的凡人ばかりの会社じゃ、C++がある程度のレベルで使える人間を集めた
    プロジェクトなんて無理じゃないだろうか? 他人の書いたきれいともいえない
    C++ソースを読むなんて無理じゃないだろうか。

    ある意味、力技でいろいろできるCぐらいが限度じゃないかと思う。

    まあ、そうじゃないレベルの高い職場もあるんでしょうケド。 

556 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:04:13  ID: Be:
    C++を難しいものだと勘違いしている人が多いのよ。
    C++はbetter Cの範囲に限ればCより遥かに簡単で安全。 

557 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:12:10  ID: Be:
    でもさあ、そういう風に布教されて、これだけ本もでて、相変わらずやっぱり定着しない
    ところみていると、どっかC++って無理があるんじゃないのかな。
    一般に(というのも定義が難しいが)普及する言語として。
    使うといっても、フレームワークが作ったスケルトンにちょこちょこ自前の処理をつけたり
    するだけで、C++の力を発揮してないのがほとんどじゃないかな。
    C++が使える自分て素敵、的なオタの自慢ネタに使われることが多い印象が多いのも気になる。
    また荒れそうだけど(w 

558 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:20:49  ID: Be:
    >>553
    すごく頭の悪そうな職場だな。
    煽りのつもりはないが、なんと言うか、お気の毒という一言に尽きるよ。

    うちの会社は10年前からC++導入してるよ。
    templateとかboostとか使いこなせない奴は門前払いな。

    まあ素人の書いたtemaplteは読みにくくて仕方ないというのは同意なんだが
    普通は必要最低限しかtemplateは自分では書かない。boostにたいていのものはあるからな。 

560 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:27:17  ID: Be:
    >>558
    規模とか、対象分野とかどんな風? 

561 デフォルトの名無しさん [sage] Date:2009/01/02(金) 16:50:23  ID: Be:
    >>558
    テンプレートについて教えてください。
    two phase lookupにおける限定名の解決はどの時点で行われますか? 

562 558 [sage] Date:2009/01/02(金) 17:56:17  ID: Be:
    >>560
    画像処理や物理シミュレーションなんかを中心にやっているよ。

    >>561
    そんなC++のdark sideを持ち出してくるとは意地悪だなぁ… 

563 デフォルトの名無しさん [sage] Date:2009/01/02(金) 18:01:48  ID: Be:
    >>562
    マジで日本語の解説を見たことないんですよ。
    言葉としては出てきますが、結構複雑で理解できていないです。 

564 558 [sage] Date:2009/01/02(金) 18:08:04  ID: Be:
    >+>563
    日本語の解説を何故求める?規格読もうよ。

    とは言うものの、その規格自体に誤りがあったり、その規格通りに実装されていなかったりするのが
    two phase name lookupなのよね。

    どう見ても暗黒面です。本当にあり(ry 

566 デフォルトの名無しさん [sage] Date:2009/01/02(金) 19:12:12  ID: Be:
    結局C++クンの自慢か。 

567 デフォルトの名無しさん [sage] Date:2009/01/02(金) 19:29:06  ID: Be:
    業界の底辺と頂点を見た気がした 

568 デフォルトの名無しさん [sage] Date:2009/01/02(金) 19:43:35  ID: Be:
    この業界、見栄張る奴が多いからな。
    実際見てみるとションボリってのが結構多い。 

two phase name lookup ってナニ? おいしいの?

■_

■_ 協力してくれる人募集らしい



Journal of chromatic (983)
Friday January 02, 2009
02:39 AM
A Little Parrot Task for the Interested
[ #38201 ]

If you have some spare time in the next couple of weeks, the Parrot TODO/skip test 
review is an embarrassingly parallel milestone which is suitable for anyone who can 
read code written in Perl 5 and skim code written in PIR.

All you need to do is pick a test file not listed on that page which contains either 
TODO or SKIP (capitalization does not matter) and list it on the page, with a count of 
the affected tests and a marker whether there's an RT or TT referenced in the reason.

That's it.

You can mail the Parrot developer list directly or tell someone in #parrot on 
irc.perl.org.

Reviewing one test file is a help. Reviewing more is wonderful. If you have five 
minutes, you can do it!

3月に1.0だっけ?

■_ Javaのここが嫌

Javaのここがなあと言うお話。



Jay Fields' Thoughts: Things to dislike about Java
Jay Fields' Thoughts

Back in August I started working with Java the majority of the time. I still do a bit 
of Ruby, but the vast majority of my work these days is in Java. Java is good for a 
lot of reasons, but that is absolutely not what this post is about. This post is, in 
no particular order, the things about Java that I really dislike.


Closed Classes

Lack of Closures, Blocks, Anonymous Methods

Army of NNPPs

Literal Arrays & Hashes

Command Line Execution for Snippets of Code

Java forces me to repeat things all the time.

public class NewOrderHandler {
    public void onNewOrder(NewOrder newOrder) {
       // handle new order
    }
}

Extensive Tool Support Raises the Barrier of Entry for Tool Builders

Conclusion

Java's not all bad. In fact, it might be the best tool for the work I'm doing these 
days. It's definitely tops in the areas that I need to be successful overall. But, I 
really do miss the things listed here, and all the other things that I've forgotten to 
write about but consistently swear about at work.

Happy New Year! Here's to a year where I find a suitable replacement for Java.


not all bad ではあるけれど。という主張でした。 各項目の理由の詳細は元記事をどぞ。 ハッシュのリテラルとかRubyのブロックみたいなものって結構需要あるのかなあ。 特に前者。

2009年01月01日

■_ 年年歳歳花相似 歳歳年年人不同

・ご挨拶
今年もよろしくお願いします。 新年にあたっての抱負などというものもないのですが、 プログラミング関連では、RとSQL(とHaskell)に力を注ぎたいかなと思っています。 Programming in Haskell しっかり読んでがんばろー Rについては 最もタメになる「初心者用言語」はRです - Hacking is believing@itoshi.tv(2008-02-04) という話もあるし、Rを活用できる職場といえなくもないので。 ScalaやらClojure といったあたりはとりあえず見(ケン)で。

いけがみさんのところの大晦日にあった公案について考えてみた。 が、一日や二日ちょっと考えたぐらいで結論など出るはずもないのであった。

・読んだ
マイクロソフト ビル・ゲイツ不在の次の10年 iPhoneの本質 Androidの真価
あまり心に響くものがなかった。 金返せとまではいかないけど。

OpenBSDユーザーコーナー Part6
234  【大凶】 【1671円】 株価【42】  [sage] Date:2009/01/01(木) 23:41:39  ID: Be:
    明けましTheoめでとう 

待て、なんだそのおみくじの結果はw

■_ アニソン三昧

所々でしか聴いてなかったのですが Peace, Love, Empathy - * 今日は一日 アニソン三昧ファイナル 2008年12月31日(日)9:15〜24:30 司会:水木一郎、緒方恵美、藤崎弘士 で曲リストを見て、最近(ってどのくらいの範囲だろう)の曲はどうでもいい (聴こうと思えばそれほど苦労せずに聴けるのがほとんどだから)けど、

111:「スーパースリー」  関敬六、石川進、愛川欽也

110:「宇宙怪人ゴースト」  音羽ゆりかご会  [宇宙怪人ゴースト]

109:「ドボチョン一家の幽霊旅行」  ザ・ラニアルズ  [ドボチョン一家の幽霊旅行]

108:「マイティハーキュリー」  ひばり児童合唱団  [マイティハーキュリー]

107:「スカイキッドブラック魔王」  大塚周夫  [スカイキッドブラック魔王]

106:「001/7親指トム」  フォー・シンガーズ  [キングコング・親指トム]

105:「チキチキマシン猛レース」  ケーシー浅沼  [チキチキマシン猛レース]

104:「少年シンドバット」  フォア・ジェッツ  [少年シンドバット]

  

ぐはっ。この辺の唄は歌詞もメロディーも幼少期に刷り込まれているので猛烈に聴きたかったw らりほーらりほー らりるれろん♪w

071:「もーれつア太郎」  桂京子  [もーれつア太郎]

070:「ひみつのアッコちゃん」  岡田恭子  [ひみつのアッコちゃん]

069:「タリラリラーンロックンロール」  嘉門達夫  [平成天才バカボン]

068:「タリラリランのコニャニャチワ」  コロムビアゆりかご会、グリンピース  [元祖天才バカボン]

067:「天才バカボン」  アイドルフォー  [天才バカボン]
  

この手の番組で「元祖天才バカボンの春」が流れたことないよなあ(元祖天才バカボンのED。 あれを名曲といわずに何をそう呼べというのかw)。 まあ、→ 赤塚不二夫トリビュート~四十一才の春だから~ に収録されていると聞いて買っちゃったんだけどねw

153:「毎日、ノープロブレム」  小町&奈緒子(三浦理恵子、三橋加奈子)  [こちら葛飾区亀有公園前派出所]
  

三浦理恵子はR.O.D. -THE TV -の方だろうw。 あ、でもあれシングルでは出てないのだっけ?

■_


Lisp Scheme Part24
883 デフォルトの名無しさん [sage] Date:2008/12/30(火) 00:36:57  ID: Be:
    そういやMITの初年度のカリキュラムはSchemeからPythonになったとどっかでみたような
    ソース示せないけど 

884 デフォルトの名無しさん [sage] Date:2008/12/30(火) 01:12:30  ID: Be:
    >>883
    これ?
    http://tech.mit.edu/V125/N65/coursevi.html

    その後どうなったのか、そういえば知らないなあ。 

887 デフォルトの名無しさん [sage] Date:2008/12/30(火) 13:42:09  ID: Be:
    >>883
    CSの一番最初っぽい授業は、課題にpythonが使われるとなってるね
    http://student.mit.edu/catalog/m6a.html 

888 デフォルトの名無しさん [sage] Date:2008/12/30(火) 16:37:01  ID: Be:
    そのうちRubyになるんだろうなぁ。 

889 デフォルトの名無しさん [sage] Date:2008/12/30(火) 16:39:38  ID: Be:
    ないない 

890 デフォルトの名無しさん [sage] Date:2008/12/30(火) 16:49:38  ID: Be:
    都内の洋書屋行くと置いてある種類は
    Ruby>Python>>>>>>>>Lisp
    だね。
    MITもポピュラー指向になったのだから次はより人気のあるRubyだよ。 

891 デフォルトの名無しさん [sage] Date:2008/12/30(火) 17:03:25  ID: Be:
    Java>>>>>>>>>>>>>>>>>>>>越えられない壁>>>>>>>>>>>>>>>>>>>>>>>>>>Ruby>Python>>>>>>>>Lisp 

892 デフォルトの名無しさん [sage] Date:2008/12/30(火) 17:11:34  ID: Be:
    >>890
    アメリカではPythonの方がずっと多い。
    ただRubyはたぶん日本のソフトウェアとしては過去最高の本の冊数だと思う。
    Lisp、Scheme合わせても全く及ばない。 

893 デフォルトの名無しさん [sage] Date:2008/12/30(火) 17:41:58  ID: Be:
    pearl、Rubyとくれば、次はDiamondだな 

894 デフォルトの名無しさん [sage] Date:2008/12/30(火) 18:21:52  ID: Be:
    Rubyは言語仕様が曖昧
    仕様変更とその理由はもっと曖昧
    だからあんまり教育には向かない。
    #それがいいか悪いかはまた別問題だが 

895 デフォルトの名無しさん [sage] Date:2008/12/30(火) 20:03:50  ID: Be:
    Scheme is the Diamond language. 

896 グラハム [sage] Date:2008/12/30(火) 20:06:50  ID: Be:
    そのうちアメリカの本屋に溢れかえるのはArc本だ。
    何故って世間はハッカーの遠く後を追っかけるからさ。 

897 デフォルトの名無しさん [sage] Date:2008/12/30(火) 21:23:04  ID: Be:
    >>895
     沈黙はGOLD ! 

898 デフォルトの名無しさん [sage] Date:2008/12/31(水) 21:46:47  ID: Be:
    >>896
    ミスター武士道とお呼びしてもいいですか 

899 デフォルトの名無しさん [sage] Date:2008/12/31(水) 22:18:33  ID: Be:
    武士道は首都高速ですか。 

900 デフォルトの名無しさん [sage] Date:2009/01/01(木) 01:24:51  ID: Be:
    今年はgaucheにかける! 



スレを勃てるまでもないC/C++の質問はここで 5
239 デフォルトの名無しさん [sage] Date:2009/01/01(木) 00:17:12  ID: Be:
    だめだ・・・僕にはプログラミングなんて・・無理かもしれない・・ 

240 デフォルトの名無しさん [sage] Date:2009/01/01(木) 00:31:42  ID: Be:
    なぜ?具体的に。 

241 デフォルトの名無しさん [sage] Date:2009/01/01(木) 00:39:35  ID: Be:
    ・・いま苦Cで文字列を扱う方法してるんですけど・・
    そこで少し分厚い壁に当たってしまいました・・
    こんなしょっぱなから壁にぶつかるようじゃ、俺にC言語習得なんて無理なんじゃないか・・?
    って考えてます・・ 

242 デフォルトの名無しさん [sage] Date:2009/01/01(木) 00:45:46  ID: Be:
    全然具体的じゃないきがするなぁ
    プログラムでつまづくのは別にいいけど「良い質問/相談」を持ちかけるのはやっぱり必要だとオモ

    あ、あけましておめでとう 

243 デフォルトの名無しさん [sage] Date:2009/01/01(木) 00:53:22  ID: Be:
    >>241
    web で勉強してるの?個人的には本一冊買った方が良いと思うなぁ。
    あと、論理的思考能力とやる気さえあればプログラミングはできるよ。 

244 デフォルトの名無しさん [sage] Date:2009/01/01(木) 01:00:58  ID: Be:
    あけましておめでとうございます

    >>243
    よし!本を買うことにします 

245 デフォルトの名無しさん [sage] Date:2009/01/01(木) 02:00:08  ID: Be:
    >>241
    俺もWEBで勉強した

    で、した感想

    本買ったほうが100倍速いぞw 

246 デフォルトの名無しさん [sage] Date:2009/01/01(木) 02:31:11  ID: Be:
    やはり、特に用途がないものを学ぶのは辛いもの。
    勉強でやってるなら、とりあえず作ってみて
    必要になったら、Webなり2chで聞くなりした方が絶対覚えが早いよ。 

247 デフォルトの名無しさん [sage] Date:2009/01/01(木) 03:29:27  ID: Be:
    gets()は絶対に使ってはならない

    ↑実際どうなの 

248 デフォルトの名無しさん [sage] Date:2009/01/01(木) 03:50:21  ID: Be:
    実際そのとおり。fgetsで何も困らない。 

249 デフォルトの名無しさん [sage] Date:2009/01/01(木) 04:25:07  ID: Be:
     使うべきではない、が正しいと思う。
    バッファオーバーフローで、PCがハック(今ではクラックの方が正しいか)されたいのであれば、使えばいい。
    1988年にfingerdを襲った悲劇の教訓からそう語り継がれているんだよ。 

250 デフォルトの名無しさん [sage] Date:2009/01/01(木) 04:35:03  ID: Be:
    やっぱそうか
    1つくらいいいところあるかなと思ったけど、いいとこないな 

257 デフォルトの名無しさん [] Date:2009/01/01(木) 14:41:09  ID: Be:
    誤爆してきた死ね

    おすすめのC++入門サイトを教えてください。
    Cは未経験です 

260 デフォルトの名無しさん [sage] Date:2009/01/01(木) 15:33:57  ID: Be:
    まずCをやったほうがいい。でないと死ぬ。

    もし、正しい理解とかどうでもいいから速攻でC++が使えないと困るみたいな
    状況だったら素直に質問にそう書いた方がいい。
    (叩かれるかもしれないけど) 

261 デフォルトの名無しさん [sage] Date:2009/01/01(木) 15:35:23  ID: Be:
    >>257
    ロベール 

262 デフォルトの名無しさん [sage] Date:2009/01/01(木) 15:36:10  ID: Be:
    べつにC++からでいいよ。
    C++やってる連中が自分がCから入ったから、それがいいって思い込んでるだけ。 

263 デフォルトの名無しさん [sage] Date:2009/01/01(木) 15:51:29  ID: Be:
    C++やってるうちにCもできるようになると思う 

264 デフォルトの名無しさん [sage] Date:2009/01/01(木) 16:25:01  ID: Be:
    むしろC++からの方が分かりやすいよね。
    C は初っ端から printf とか scanf とか面倒くさいし
    (C++は桁数指定とかしないのであればフォーマット指定の必要がない)、
    関数に変数の値を変更してもらうのにもポインタなんぞが必要になるし(C++なら参照で良い)、
    Cから始める方がややこしいと言わざるを得ない。 

265 デフォルトの名無しさん [] Date:2009/01/01(木) 16:32:29  ID: Be:
    STLから始めるのが初心者向き で生産的 

266 デフォルトの名無しさん [sage] Date:2009/01/01(木) 16:42:46  ID: Be:
    char で文字列操作とか面倒くさいし(絶対バッファオーバーフローさせやがる)、
    std::string 使わせた方がいいね。 

267 デフォルトの名無しさん [sage] Date:2009/01/01(木) 16:55:06  ID: Be:
    させやがる、ねぇ・・・ 

268 デフォルトの名無しさん [sage] Date:2009/01/01(木) 16:57:22  ID: Be:
    既存のクラス使うだけなら、C++で入門もいいだろうね 

269 デフォルトの名無しさん [sage] Date:2009/01/01(木) 17:54:06  ID: Be:
    補間機能 

270 デフォルトの名無しさん [sage] Date:2009/01/01(木) 17:56:03  ID: Be:
    挫折して挫折して挫折して
    そこでSTLですよ
    (゚∀゚)神のキターですよ 

271 デフォルトの名無しさん [sage] Date:2009/01/01(木) 18:58:09  ID: Be:
    STLなんて自分で実装してからその存在に気づいた 



【カルト】Ruby開発者Matz【モルモン】
890 仕様書無しさん [sage] Date:2008/12/31(水) 07:11:08  ID: Be:
    同じ会社に「俺は処理系つくったから、おまえらより偉い」と社内MLで放言する馬鹿がいて
    監督責任を問われている俺w

    ちなみにそいつが作ったと主張している処理系というのは、いわゆるPureLISP。つまらん。 


USBメモリ 34本目 
517 不明なデバイスさん [sage] Date:2008/12/31(水) 22:15:19 ID:D1mPzTWU Be:
    PicoBoostの8Gは今でもSLCだよね?
    GH-UFD8GBS
    8Gで速度重視ならやっぱこれか? 

519  【大吉】 【1598円】  [sage] Date:2009/01/01(木) 00:05:03 ID:53VD91wO Be:
    大吉なら、ピコブー8G買ってくる

520 不明なデバイスさん [sage] Date:2009/01/01(木) 00:07:48 ID:Ojp0poJh Be:
    >>519に期待 

521 不明なデバイスさん [sage] Date:2009/01/01(木) 00:30:12 ID:KC72RLTK Be:
    >>519
    PCショップは元旦から開いてるからな
    ベンチよろ 

■_ Zuneの例のバグ

./J にも取り上げられてますが

なんかこれが問題のコードだ的な書き込みのあるところが。 DRMに関連して日付を扱うところだとか何とか。



Cause of Zune 30 leapyear problem ISOLATED! - Zune Boards  

Default Cause of Zune 30 leapyear problem ISOLATED!

After doing some poking around in the source code for the Zune's clock driver 
(available free from the Freescale website), I found the root cause of the 
now-infamous Zune 30 leapyear issue that struck everyone on New Year's Eve.

The Zune's real-time clock stores the time in terms of days and seconds since January 
1st, 1980. When the Zune's clock is accessed, the driver turns the number of days into 
years/months/days and the number of seconds into hours/minutes/seconds. Likewise, when 
the clock is set, the driver does the opposite.

The Zune frontend first accesses the clock toward the end of the boot sequence. Doing 
this triggers the code that reads the clock and converts it to a date and time. Below 
is the part of this code that determines the year component of the date:

Code:

year = ORIGINYEAR; /* = 1980 */

while (days > 365)
{
    if (IsLeapYear(year))
    {
        if (days > 366)
        {
            days -= 366;
            year += 1;
        }
    }
    else
    {
        days -= 365;
        year += 1;
    }
}

このロジックじゃあループから抜けませんわなw

■_ Python3 の問題点(のひとつ)


Chris's Wiki :: blog/python/Python3UnixProblem

One of Python 3's fundamental problems on Unix

Here is a thesis that I have been mulling over lately:

One of Python 3's fundamental problems is that it is trying very hard to pretend that 
Unix is fundamentally a Unicode operating system, so that Python itself can be 
Unicode-based while still working on Unix. The problem with this is that it is 
demonstrably false, as seen in the os.listdir() problem; Unix is fundamentally a 
'bytecode strings' environment, and attempts to pretend otherwise can run into 
problems any time that this pretense runs up against actual reality.

(The os.listdir() problem is actually the smallest one.)

I am not sure why Python 3 has decided to hide this messy reality from programmers (it 
certainly knows that it exists; the release notes are full of commentary). It seems 
very atypical for Python, which has always struck me as quite honest about this sort 
of thing. My only theory is that the Python 3 people felt that programmers would 
revolt if they were forced to work in Unicode and to still deal explicitly with such 
conversion issues, so they felt that a flawed pretense that usually worked was 
absolutely required.

(Possibly this issue has been discussed to death on the Python 3 development lists, 
but I don't follow Python news in much depth any more; I ran out of time.)

Sidebar: why I care

It is tempting to brush this under the carpet with various excuses, especially because 
most people will never see this; most people work on Unix systems where everything is 
correctly encoded in a single encoding. But this is an unstable situation and results 
in software that merely usually works, if everything goes well. As a system 
administrator, I am unhappy about software that can be broken by someone doing 
something peculiar; I want my software to be as resilient as possible.

文字列を一律Unicodeで管理するようにしたのはいいけど、 世界はUnicode以外のものでできていた。と。

■_ 2009年の予想



Doug on the Eclipse CDT: Predictions for 2009

Predictions for 2009

I'm not usually one to make predictions. It's hard for me to tell the difference 
between a prediction and wishful thinking. But this article over at the Inquirer 
(still the best place to get an honest take on the industry along with /.) got me 
thinking about a couple of things I think are going to be important in 2009. So here 
we go...

2009: The Year of the GPGPU
(さっくり略)

2009: The year of WebKit
(さっくり略)


C++0x won't be C++09

I think that's a forgone conclusion but no one really wants to admit it yet. But look 
for the vote to finish this year at least. C++0x will be an exciting evolution of C++ 
into the next generation. No it doesn't have garbage collection, yet, but it does have 
smart pointers that do the job better if you use them right. C++0x makes it easier to 
do a lot of things, and the introduction of closures and lambda functions and 
expressions will breath some life into this stalwart of the software engineering 
community.

Well, that's it for now. If I think of more over the next couple of days I'll post 
them. There are a lot of things I hope will happen, but i'm not sure they will. But 
one thing is for sure, open source is here to stay and is becoming a core business 
model that companies still need to understand and learn to use effectively and I will 
continue with my work with Eclipse and Wind River to help figure that out and spread 
the word.

うひw。

■_


一つ前へ 2008年12月(下旬)
一つ後へ 2009年月(中旬)

ホームへ


Copyright (C) 2009 KIMURA Koichi (木村浩一)
この文書の無断転載はご遠慮ください(リンクはご自由にどうぞ)。

メールの宛先はこちらkbk AT kt DOT rim DOT or DOT jp