■_
ジュンク堂池袋店での例のイベントに行ってきたのと、 帰宅してからもいろいろあったのでまとめている暇が(^^;
そうそう。 昨日書き忘れてたのだけど、今月のまつもとさんの日経Linuxでの連載記事。 C++に finaly があるように読めるけど、C++にはないよね? __finaly とかで使える処理系はあるけど。
メイド刑事のコミック版が3巻でおしまいになっててしょぼーん。
一つ前へ
2008年12月(下旬)
一つ後へ
2009年月(中旬)
ジュンク堂池袋店での例のイベントに行ってきたのと、 帰宅してからもいろいろあったのでまとめている暇が(^^;
そうそう。 昨日書き忘れてたのだけど、今月のまつもとさんの日経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
まあすでに何人か書いていますが。
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
読んでみてわかるようなわからないような…
ネット上の文章の日付は年も付けてもらうと再利用時にありがたいってことですね。
日本のピアソンなんかも1回解散したほうがいいんじゃねーか。あそこはAWとトッパンのころからダメだから。
We embed GPU kernels as data-parallel array computations in the purely functional language Haskell. GPU and CPU computations can be freely interleaved with the type system tracking the two dierent modes of computation.
Falcon 0.8.14.2 has been released. Falcon is a multi-paradigm language with an open source implementation.
Seed7 is a strongly-typed, general-purpose language, offering object-oriented capabilities, exception handling, user-defined statements and operators, plus more.
IKVM is a Java implementation running on Mono and the .NET Framework.
eTcl is a standalone, single-executable distribution of Tcl, supporting a number of platforms and including several popular extensions.
It is "a low-level language, providing just a thin abstraction layer around the platform's instruction set and calling conventions", with an initial x86 implementation.
上のリストの最後にあった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 以下略
データセクションとコードセクションがあるとかまるでアセンブリ言語。
「ひとのはなしをきけー!」 って怒られちゃうよ?
In the busy-ness of the holiday season you may have missed the quiet passing of Dr. Dobb's Journal. The official story is that the magazine is evolving into a section within InformationWeek, but that's just spin. Dr. Dobb's is gone.
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. 以下略
What new thing will you try to learn in 2009? - Stack OverflowAs 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 ガス抜きのいい機会だったよね。 なんか意外とけっこううらやましいかも。
・しまった
途中まで仕込んでいた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 ってまともに実装した環境はあるんだろうか?
いまは、落ち目の言語ですが、Perlというのがあります。
以前に言語の名前だけ紹介したもの。
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
・バンダイチャンネル
プロモ映像とか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 イ、禁書目録?
=== 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
忙しいんだか忙しくないんだか
数日前にけちつけたあれですが、通勤途中の書店でも見かけたので getsの解説とかを確認してみました。
gets に関して一言も注意がない strncpy の動作の説明が中途半端(nに対して転送元が短いときの0埋め動作の解説がない)
だめだこりゃ○| ̄|_
方針をいきなり戻して、古いライブラリ使ってでも実行ファイルが作れるかを先にやることにした。
・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 OverflowOther 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-errorsI 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-errorsI 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-typeI 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
ずいぶんいろいろあるんだなあ。
さてどうなるか?
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 なんつーものがあるですか。
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.
すっかりビルド方法を忘れてしまっていたのであった。 とりあえず、使っているライブラリのバージョンなんかを調べてみた。 以前ビルドしたときに使ったものでは
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/
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++に移行します。 ありがとうございました。
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じゅーよーっすか。
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#やってみようかなあ…
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/
変わったといっても違う言語になったわけじゃないとはねえ。
これは読んでて結構面白かった。
剰余を使うのは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
日本は別に円を刷ってそれを支払いにあてて輸入してるわけじゃないんですよね。何かを輸出して、その代金で買ってるわけ。
数学関数は数学的に明解に定義されているものであってもコンピュータで計算するのは面倒というものが多い。単純に言えばCPUは有限桁の四則演算しか出来ないので、その制限の中で表現する式を利用する必要がある。 計算しやすい典型的な表現として多項式展開や乗積展開がある。ただ、三角関数など、有限回の四則演算で求めることの出来ないものも多々ある。その場合は速度や精度の兼ね合いを考えて作った近似式を使えばよい。具体的な式は「三角関数 多項式近似」といった風に検索すれば見つかる。自分で求めるには代数と数値計算の教科書を読んだ方が良いかも。
複素数や三角関数を実現したいのですが、ほとんど知らないのでできませんでした。どこかいいサイトがないでしょうか。
きっと FPGA が必須になるのは 50 年も後の事だろうから今やるべきではないという結論になった。しかし去年は奇しくも LISP 生誕 50 年。現在の LISP の影響の大きさを考えると、決して遠い未来の話では無い。
つまり大規模開発ってエースじゃないクラスの人に仕事を与えるって意味で意味がある。そこで成長したり後のエースになったりするわけだから結構重要。
・無為な一日
積読を若干消化。週明けはもう仕事なんだよな○| ̄|_
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: 引用 - イノセンス関連情報まとめ
・これは面白い
学校では教えてくれない近現代史(笑)
中東が今のようになった経緯や(なぜイスラエルとパレスチナがあのようになっているかとか) 、
冷戦の進展などがよくわかります。
ボリュームの問題もあるので細大漏らさずというわけにはいきませんが
(アフリカはほぼノータッチ)、
知っておくべきことはきちんと抑えられていてしかもわかりやすい。
イギリスくんのひどさとか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 ってナニ? おいしいの?
先日まで自分のパソコンの管理者権限を保有していたのですが、親に制限ユーザーに変更されてしまいました。 理由を聞いても教えてくれませんが、ハッキング(クラッキングではありません)して管理者に変更できれば何も言わない、といってくれました。
F#のパッケージには、コンパイラ、Visual Studio拡張パッケージなどの他に、F#インタープリタ(fsi.exe)というコンソール画面で対話的にプログラムを実行できるプログラムが付属しています。
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のここがなあと言うお話。
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のブロックみたいなものって結構需要あるのかなあ。 特に前者。
・ご挨拶
今年もよろしくお願いします。
新年にあたっての抱負などというものもないのですが、
プログラミング関連では、RとSQL(とHaskell)に力を注ぎたいかなと思っています。
Programming in Haskell しっかり読んでがんばろー
Rについては
最もタメになる「初心者用言語」はRです - Hacking is believing@itoshi.tv(2008-02-04)
という話もあるし、Rを活用できる職場といえなくもないので。
ScalaやらClojure といったあたりはとりあえず見(ケン)で。
いけがみさんのところの大晦日にあった公案について考えてみた。 が、一日や二日ちょっと考えたぐらいで結論など出るはずもないのであった。
・読んだ
あまり心に響くものがなかった。
金返せとまではいかないけど。
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ショップは元旦から開いてるからな ベンチよろ
./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
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以外のものでできていた。と。
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年月(中旬)
メールの宛先はこちら