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

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

一つ前へ 2010年2月(中旬)
一つ後へ 2010年3月(上旬)

ホームへ

2010年02月28日

■_

・なんだろうこれ Amazon.co.jp: Einstieg in Perl 6: Alvar Freude: 洋書 よく見ると 言語 ドイツ語, ドイツ語 うはw

・インストールしてみる
本買っといてインストールもしてなかったのでw WindowsでClojureの環境を整える(Clojure Box) - ありの日記 Clojure Box Clojure Box is an all-in-one installer for Clojure on Windows. この辺を参考にしつつぽちぽちと。

■_ 「正しい」

これ、書かれていないことをいくらでも深読みできるので、 つつこうと思えばかなりつつけるけどそれはおいといて。


閏年を判定するプログラムの評価方法 - Yahoo!知恵袋

現在、西暦を入力し閏年が閏年でないか判定するプログラムを作っています。
プログラムの方は完成し、きちんと動作しています。

しかし、そのプログラムにはバグが絶対に無いとは確証できません。

どうやってバグが絶対ないと判断したらよろしいでしょうか?

ただし、ソースが正しいから、バグは無いというのは無しです。

なにかいい評価方法はないでしょうか?
よろしくお願いいたします。

ベストアンサーに選ばれた回答

ソースのあり方を見ないテストをブラックボックスのテストと言います。
正常系であれば、
「どういう動きであれば正しいのか?」という観点でテストします。
この場合、うるう年とうるう年以外で、そのとおり判断してくれるかのテストですね。

さて、異常系です。
「どういう動きになったらマズいか?」という観点でテストします。
ただ、マズイものが浮かび上がらなかったら、わざわざテストする必要も無いです。
まあ、俺なら、
・文字列を含むケース
・全角数字ケース
・ブランク
・null
・3桁半角数字
・5桁半角数字
・0始まり4桁数字
で、しかるべき異常動作をしてくれるかをチェックしますね。

質問した人からのコメント

    * 感謝ブラックボックスのテストという用語を知ることができただけで、大変参考になりました。
      ありがとうごございます。

西暦2000年の閏年判定を間違えてしまった某メーカーの以下略

■_ スクリプティング言語を選択する

こういう基準もあるということで。


Choosing a scripting language - Wolfire Games Blog

Choosing a scripting language

By David on January 20th, 2010

For the last week or two I've been working on choosing a scripting language for 
Overgrowth. I haven't worked with scripting before, so I hooked up Lua, V8 and 
AngelScript in order to give them each a fair trial and see which is most appropriate 
for us.

What is a scripting language?
スクリプティング言語とは何か?

In general, scripting languages are programming languages that are used to control 
other applications. In games, their use is more specific: they are embedded into the 
game in order to run external "scripts" (pieces of code that can be modified 
without recompiling the entire game). This is useful in several ways. First, it makes 
gameplay programmers more efficient by reducing the amount of time they spend waiting 
for their code to compile. Second, it helps enforce the division between the game 
engine and the game itself, encouraging modular and reusable code. Finally, it allows 
players to write their own scripts, resulting in much more complex and interesting 
mods.

一般的には、スクリプティング言語とは他のアプリケーションを制御するのに使われるプログラ
ミング言語です。ゲームではスクリプティング言語の用途はより specific で、外部の「スクリ
プト」(ゲーム全体を再コンパイルすることなしに修正することが可能なコード片(pieces of 
code))を実行させるためにゲームの中に組み込まれたものです。これは幾つかの点において有用
です。第一に、スクリプティング言語はコードをコンパイルする際の待ち時間を短縮することに
よって、 gameplay programmer たちをより efficient (効率的) にします。第二に、スクリプテ
ィング言語はゲームエンジンとゲームそれ自身とのコードのモジュール化と再利用を促進して、
分割の強制 (enforce the division) を助けます。最後に、スクリプティング言語はプレイヤーが
自作のスクリプトを記述するのを可能にし、その結果としてより複雑で面白いmodを作れるように
します。


I've avoided scripting in the past because native C++ code runs orders of magnitudes 
faster than interpreted languages. However, this is not really that important: 
high-level game logic is almost never a performance bottleneck. I've seen how much 
live texture and shader updating speeds up my graphics work, so the idea of live code 
updating is very appealing.

過去においてわたしはスクリプティングを除外しました。それは、ネイティブな C++ コードは
インタープリットされる言語よりも桁違いに高速に実行されたからです。しかし、これは本当に
重要なことではありませんでした。高度なゲームロジック (high-level game logic) がボトル
ネックにはなることはほぼ皆無なのです。わたしは、更新しているどれくらいの live texure 
や shader がどのくらいわたしの graphics work のスピードアップに影響するかを調べました。
そして、live code updating の考えかたは非常にアピールしたのです。


What do we need from a scripting language?
わたしたちがスクリプティング言語に必要としていることは?

There are three things I need from a scripting language. First, it has to be easy to 
embed in Overgrowth. Second, it has to be similar to C++. Third, it has to support 
user-defined types and operator overloading.

わたしがスクリプティング言語に求めていることが三つあります。第一に、Overgrowth に組み
込みやすいものでなければなりません。第二に C++に似ていなければなりません。第三に、ユー
ザー定義型や演算子のオーバーロードをサポートしていなければなりません。


1. Easy to embed 組み込みやすい

In order for a scripting language to be able to do anything, it needs to be connected 
to the game engine. For example, a gun class in the game engine might need to call a 
'shoot' function from a script, and the script would then need to call a 'raycast' 
check from the engine to find out if it hit anything. The easier it is to share 
functions and variables between the game engine and the scripting language, the less 
development time it will take to hook up.


スクリプティング言語が何でもできるようにするためにゲームエンジンに接続できる必要があり
ます。たとえば、ゲームエンジン中にある gun クラスはスクリプトから 'shoot' 関数を呼びだ
す必要があるかもしれませんし、その後で弾が何かに命中したかどうかを判断するために
'raycast'チェックをエンジンから受ける必要があるでしょう。ゲームエンジンとスクリプティ
ング言語との間での関数や変数の共有が簡単になり、そして hook up (配置?) を行うために必
要な開発時間が短縮されました。


2. Similar to C++ C++に似ている

Many of you probably disagree with this point, but hear me out before writing irate 
comments! By using a scripting language that's similar to C++, I can prototype 
performance-critical functions, and then smoothly copy them into the game engine code 
when they are done. Constantly translating code between C++ and Scheme, for example, 
would be really annoying and error-prone.

あなたたちの多くがこの点には賛同しないでしょう。でも、irate なコメントを書く前に、わた
しの話を聞いてください! C++ に似たスクリプティング言語を使うことで、わたしは 
performance-critical な関数のプロトタイプを作ることができるしプロトタイプが完成したあ
とでゲームエンジンのコードにそれを移すのも順調にできたのです。対照的に、たとえば C++ 
と Scheme の間でコードの変換を行った場合には really annoying and error-prone となるでし
ょう。


3. User-defined types and operator overloading
ユーザー定義型と演算子のオーバーローディング

This is also controversial, but I find that operator overloading is essential for 
writing maintainable linear algebra code. Operator overloading lets us add, subtract 
and multiply vectors and matrices as easily as we add, subtract and multiply integers. 
For example, let's say I want to find how far apart two players are on the screen (in 
order to make sure their names don't overlap). I won't get into exactly how this works, 
but using operator overloading this would look like this:

これもまた controversial (論争の元) ですが、演算子多重定義 (operator overloading) が保
守可能な線形代数のコードを記述するための本質的なもの (essential)であることにわたしは気
がつきました。演算子多重定義はわたしたちが、整数に対する加算や減算、乗算と同じくらい簡
単にベクターやマトリックスの加算や減算、乗算をできるようにします。たとえば、スクリーン
上の二人のプレイヤーが(プレイヤーたちの名前がオーバーラップしていないようにするために)
どのくらい離れているのかを知りたいとしましょう。わたしはこの例の多重定義された演算子が
どのように動作しているのかを正確に知ろうとは思いませんが、演算子多重定義を使えば次のよ
うに書けるでしょう:

float distance = length(
    (model_view_matrix * player_one_position).xy() -
    (model_view_matrix * player_two_position).xy());

Without operator overloading, we have to replace all of those basic math operators 
with member functions like Multiply() or Subtract(), making it look more like this:

演算子多重定義がなければ、わたしたちはこういった基本的な算術演算子 (basic math 
operators) をMultiply() だとか Subtract() のようなメンバー関数に置き換えなければならず、
次のような見てくれるになるでしょう:

float distance = length(
    (model_view_matrix.Mult(player_one_position)).xy().Sub(
    (model_view_matrix.Mult(player_two_position))).xy());


I'm sure there are many great programmers out there who can read and debug code like 
that (the entire Scheme programming language is based on this principle, for instance) 
but I find it difficult!

わたしはこういったコード(一例を挙げると Scheme というプログラミング言語はこの原則に全
面的に依拠しています)を読んだりデバッグできるような偉大なプログラマーたち(great 
programmers) が数多く存在していることを確信しています。しかしわたしはそれが困難なこと
だと気がついてしまいました!


With these requirements in mind, let's evaluate our three candidates: Lua, V8, and 
AngelScript.

これらの要求項目を念頭においてわたし達の三つの候補、Lua, V8, AngelScript を評価して
みましょう:


Lua

Lua is a very popular game scripting language, used in everything from Aquaria to 
World of Warcraft. Because it is so popular, it has specialized libraries like Luabind 
which make it easy to embed in C++ programs. It does support operator overloading, so 
it should be easily usable for 3D vector math. However, it would be very difficult to 
port Lua code to C++ and back. First, Lua is a dynamically-typed prototype-based 
language, while C++ is a statically-typed class-based language. Second, Lua has its 
own idiosyncratic syntax -- here is an example:

Lua はとても popular なゲーム用スクリプティング言語で、Aquaria から World of Warcraft 
までのすべてで使われています。Lua はとても popular な言語なので、Luabind のような、C++ 
プログラムにLua を組み込む(embed)のを簡単にする特殊なライブラリもあります。Lua は演算
子多重定義をサポートしているので、3D のベクター演算にも容易に使用できるでしょう。しか
し、Lua で書かれたコードをC++ に移植したりその逆をすることは非常に難しいでしょう。それ
は第一に、Lua は dynamically-typed prototype-based language (動的に型付けされるプロト
タイプベースの言語) であるのに対して、C++ は  statically-typed class-based language
(静的に型付けされるクラスベースの言語) であるからです。第二に、Lua はLua に固有な
idiosyncratic syntax (独特な構文) を持っているからです。例を挙げましょう:

-- Print numbers counting from 1 to "to_what"
function count(to_what)
    for the_count = 1, to_what do
        print(the_count)
    end
end


V8 JavaScript

While Lua is a popular game scripting language, JavaScript is the most popular 
scripting language for everything else. We already use JavaScript for our WebKit UI 
layer, but is it good for game logic as well?

Lua がゲームのスクリプティング言語として poplar なのに対して JavaScript はそれ以外の
分野における最も popular なスクリプティング言語です。わたしたちはすでに WebKit の UI
レイヤー向けにJavaScriptを使っています。でも、ゲームロジックにも充分使えるんじゃない
でしょうか?

I found that it is quite difficult to expose C++ functions to the V8 JavaScript engine 
-- there is no established Luabind equivalent, so I had to create a much more 
low-level wrapper than I did for Lua. This is not so hard for simple functions and 
variables, but it would be very difficult to expose complicated classes and member 
functions. Also, while JavaScript syntax is superficially similar to C++, it does not 
support operator overloading, and is structurally much more similar to Lua (JavaScript 
is a dynamically-typed prototype-based language).

わたしは C++ の関数を V8 JavaScript エンジンに expose することがかなり難しいことである
ことに気がつきました。Luabind にあたるようなものは存在していなかったので、わたしは Lua 
に対して行ったものよりももっと低レベルなラッパーをたくさん作らなければなりませんでした。
単純な関数や変数に対するラッパーを作ることはそれほど難しいことではありませんが、複雑な
クラスやメンバー関数を expose するためのラッパーはとても難しいものなのです。また、
JavaScript の構文は C++ のそれにとてもよく似ているのに、演算子多重定義をサポートしてい
ませんし、また、JavaScript は構造的には (C++ よりも) Lua の方によりいっそう似通ったも
のです(JavaScript は dynamically-typed prototype-based な言語です)。


AngelScript

AngelScript is virtually unknown compared to JavaScript and Lua -- I only heard about 
it from our friends at Frictional Games. It has native support for C++ functions and 
types, so it is very easy to hook up to the game engine. The syntax and structure of 
the language is very similar to C++, except with garbage collection and a few 
simplifications. It also supports operator overloading, and even comes with example 
code for setting up a 3D vector type.

AngelScript は JavaScirpt や Lua と比べると事実上未知のもの (virtually unknown)なもの
です。わたしはこの言語について Frictional Games にいる友人から聞いたことがあるだけです。
AngelScirpt は C++の関数や型を native support をしているのでゲームエンジンへの組み込み
(hook up) はとても簡単です。AngelScirpt の言語としての構文や構造は C++ に非常に良く似
たものですが、ガーベジコレクションやいくつかの simplifications という例外もあります。
この言語は演算子多重定義もサポートしていて、3D ベクター型のセットアップのサンプルコー
ドすら付属しています。


Given the three things I was looking for in a scripting language, AngelScript seems 
ideal. Now the game engine code, gameplay scripting code and even GLSL shader code all 
use the same syntax! For example, the following code would run in the engine, in a 
script, or in a GLSL shader:

これら三つの中からわたしがスクリプティング言語に求めているものを探してみると、
AngelScirpt が理想的なもののようです。現時点でゲームエンジンのコード、gameplay スクリ
プティングコード、そして GLSL シェーダーのコードすらも含めてすべてが同じ構文を使ってい
るのです!たとえば、以下のコードはエンジンでもスクリプトでも GLSL ででも実行できるでしょ
う:


if(target_acquired){
    point_of_interest = target_position;
} else {
    point_of_interest = GetRandomNearbyPoint(head_position);
}
vec3 head_direction =
     normalize(point_of_interest - head_position);

If this code doesn't make sense to you, and you're interested in how it works, you can 
read my Linear Algebra posts (part 1 and part 2).

もしこのコードがあなたにとって意味をなさないものであって、それでもどのように動作するのかに
興味があるのなら、わたしの書いた Linear Algebra posts (part 1 and part 2) を読んでみてくだ
さい。


Uses for scripting in Overgrowth
Overgrowth でスクリプティング言語を使う

There are a lot of possible uses for scripting in Overgrowth -- right now I'm mostly 
interested in using it for developing the movement, AI and fighting systems more 
rapidly, but it can be used for many other applications as well. For example, I'm 
thinking of eventually using scripts to handle spawning detail objects like grass and 
small rocks, and to direct dynamic weather effects. Can you think of any other ways we 
could use scripting?

Overgrowth におけるスクリプティングの適用可能な用途は数多くあります。正に今、わたしは
movement や AI、戦闘システムの開発をより rapidly にするために使うことに最も興味を持っ
ていますが、そのほかにも多くの用途に使うことが可能です。たとえば、わたしは草や小さな岩
のような詳細なオブジェクトの spawing だとか、さらにはダイレクトで動的な天候効果
(weather effects)の取り扱いのためにもスクリプトを使うことさえ考えています。この他に、
わたしたちがスクリプティング行えるような手法を考えられますか?


c 2010 Wolfire Games 	

■_ 本日の巡回から

■_ 「ナンバーカード」

前にも書きましたが、「ナンバーカード」 東京マラソンやらがあったのでまた耳にしたのですがどうにも気になる。 ゼッケンとナンバーカード | OKWave によると、「ゼッケン」が日本固有で世界的な名称ではないので 改称したってことらしいんですが、



ランニング用語事典(な行) - RUNNET
ナンバーカード
【 number card 】

以前は「ゼッケン」という呼び方が一般的だった、レース出場時に、ウエアの胸と背中(胸だけ
の場合もある)部分に付ける、番号が書かれた布や紙だが、1994年に日本陸連が行った競技規則
修改正で、呼び方が「ナンバーカード」に統一された。そもそも「ゼッケン」という呼び方は、
日本固有のもので(語源はドイツ語がなまったなど諸説ある)、国際的には通用しない。日本の
競技者が海外の大会に参加する機会が多くなったこともあり、国際的に使用されている国際陸連
の用語に合わせた。なお、英語ではビブ(bib)と呼ぶこともある。

“number card”でぐぐっても、海外でのそれらしいページが引っかからないんですよねえ。 真相やいかに。

あの布製のぺらぺらのを“card” とは表現しないような気がするんだけどなあ (辞書見た限りではね)。

2010年02月27日

■_

・今月の皇帝陛下
久しぶりに出番がそれなりにあったような。

・ヴィンランド・サガ
こっちは主人公(だよな)がまったく出てこなかった。 週刊マガジンの「もうしま」で描かれていた、 作者がなにかの受賞式にヴァイキングの扮装で壇上に上がったってのは本当なんだろうか。

・フロントミッション
FRONT MISSION DOG LIFE & DOG STYLE 5 (ヤングガンガンコミックス)
ベタだがこういう話に弱いんだよ、オレ。

・なにかが
TVアニメ「あそびにいくヨ!」公式サイト
…えーと。 なんか違和感があると思ったら、目の表現が違うんだな。

・CD いろいろ
裏切りの夕焼け(初回限定盤)(DVD付) 優しい忘却 BEAM my BEAM Real Force::テレビアニメ「とある科学の超電磁砲」新エンディングテーマ TVアニメ「とある科学の超電磁砲」新OPテーマ::LEVEL5-judgelight-
「裏切りの夕焼け」はがんがんリピートさせて聴いてる。こういうの好み。 「優しい忘却」は暗い部屋で音量を絞って聴くとなんとも。 超電磁砲の二曲は、まあいいとは思うんだけど、 2クールもので途中で曲変えるってのはあまり好きではない。

・情熱プログラマー
情熱プログラマー ソフトウェア開発者の幸せな生き方
表紙に使われているのが、ヴィンセント・ヴァン・ゴッホの生前に唯一売れたという絵 だってのは深読みすべきなのかすべきでないのか。

・誰?
とある書店の検索システムの著者名検索で 「日向俊二」と入力して検索かけたら 「日向駿馳」というのがいくつかひっかかったんだけど、これはなんだろう。 別名義のペンネームか何かだろうか。 結構引っかかるなおいw 日向駿馳 - Google 検索

■_ 選択

知恵袋から。


FORTRANを勉強したいです。 - Yahoo!知恵袋

FORTRANの勉強をはじめたいのですが、オススメのコンパイラ(とエディタ)を紹介してほしいです。

次の条件を満たしていると嬉しいです。

・無料
・有名
・最新バージョン
・ダウンロードとインストールが簡単

ちなみにOSはVistaです。初心者ですがお願いします。(あと、FORTRANを学ぶにあたってオススメの
サイトなどがあればお願いします。ちなみにCとC++は少し使えます。)

ベストアンサーに選ばれた回答

nagato_blue_noahさん

下記のページに無料のFORTRANを導入する方法が載っています。
http://www1.atwiki.jp/c-phys/pages/12.html

ただし、FORTRAN自体が現在ではマイナー言語の部類に入りますので、あまり参考になる書籍はないとおもいますが、
こちらのページを参考になさってはどうでしょうか。
http://homepage.mac.com/galois21/fortran/pre.html

私自身は30年前に高校でFORTRANの授業を受けて以来、実務では一度も触ってません。


もちろんFORTRANはまだまだ現役ですよ。
気象庁が天気予報に使っている気象予測は
スーパーコンピューター上でFORTRANを使って書かれたプログラムによって行われています。

ようは、どんなコンピューター言語にせよ、得手不得手があるということです。

FORTRANの最大の特徴は繰り返し演算を記述するのに1行で済む、という点にありますね。
行列演算などもFORTRANだと簡単にプログラミング出来ます。
C++やJavaでは配列を使って繰り返し演算のプログラムを組めば同じことが出来ますが、計算速度が全然違ってきます。

世間一般の需要から言えば市販されているソフトウェアのほとんどはC++かJavaではないでしょうか。
社内で使うちょっとしたツールなどでしたらVisual Basicって感じですかね。

補足
    回答ありがとうございます。

    FORTRANはマイナー言語と聞いてすっかりやる気を無くしてしまいました;;

    FORTRANに時間を割くくらいならCやC++に力を入れた方がいいですかね?
    FORTRANでできることはCで全てできるのでしょうか?

    よかったら回答お願いします。

質問した人からのコメント

    * 丁寧な回答感謝します。いろいろ考えましたがFORTRANはやめてJavaに触れることにしました。ありがとうございました。

「マイナーだから止めます」って、一体何がきっかけでFORTRANをやろうとしたのか?

しかし気になる「ちなみに」の使いか方だな。

■_ 呼び名

Twitter / Kota Mizushima: な、なんと。それは残念だ。 RT @ymnk: Ap ...


Nabble - [scala] Fwd: Pro Scala

[scala] Fwd: Pro Scala

by Meredith Gregory :: Rate this Message:

Dear Scalarazzi,

Here's the short form of this email. i wanted to pass on some news about the book, and 
make a request. APress let me know this week (see the email below) that they've 
decided to cancel the project. They cited two principal reasons: delays on the draft 
and the sales potential of a "deeper" book on the subject. Basically, if you 
want to see a book like this with some "deeper" content, drop an email to 
APress (again, see the email below for a point of contact) and cc me. Even if APress 
doesn't respond, i have already been in touch with another publisher who has expressed 
interest, and having a show of support will be invaluable in changing publication 
venue.

(ry)

Scalarazzi == Scala使い?

■_ Where are you going ♪

C++0x 8 
433 デフォルトの名無しさん [sage] 2010/02/27(土) 02:41:38 ID: Be:
    どこに向かってんだこの言語 

434 デフォルトの名無しさん [sage] 2010/02/27(土) 02:44:20 ID: Be:
    宇宙 

435 デフォルトの名無しさん [sage] 2010/02/27(土) 03:15:18 ID: Be:
    究極 

436 デフォルトの名無しさん [sage] 2010/02/27(土) 04:39:46 ID: Be:
    正道から(1+i)/√2方向 

437 デフォルトの名無しさん [sage] 2010/02/27(土) 05:27:01 ID: Be:
    >>436
    納得した 

438 デフォルトの名無しさん [sage] 2010/02/27(土) 05:51:28 ID: Be:
    45度か 

わからんw >436 斜め方向にいってるつーことなんだろうか?

■_ 中の人登場

金曜日の午前十時に国分寺はなあ

ナースウィッチ小麦ちゃん マジカルて Z おぺ.19 [chaika]
318 名無しさん@お腹いっぱい。 [sage] 2010/02/22(月) 21:21:45 ID:Nra54tMD Be:
    国分寺駅の改札のすぐ隣と、北口を出た真正面に貼ってあったw
    触ってみたら、すんげぇ紙質がいい!うpさんの市民税使いすぎwww 

319 名無しさん@お腹いっぱい。 [sage] 2010/02/22(月) 22:39:19 ID:Jj89PryE Be:
    >>318

    写真に撮ってうpするんだ。 今すぐ、高解像度でな。 

320 名無しさん@お腹いっぱい。 [sage] 2010/02/22(月) 23:34:16 ID:IvNzvaFG Be:
    スキャナ持って行って分割スキャンでも可 

321 名無しさん@お腹いっぱい。 [sage] 2010/02/22(月) 23:36:07 ID:wXmkOLjP Be:
    テレパシーで今送れ 

322 名無しさん@お腹いっぱい。 [sage] 2010/02/23(火) 00:07:28 ID:mJehRWdt Be:
    こよりが丁寧に描かれていて、マジで欲しい。
    背景も綺麗。アニメと全然違う! 

323 名無しさん@お腹いっぱい。 [sage] 2010/02/23(火) 23:34:23 ID:dAarDKYA Be:
    タツカプでタツノコ一押しだったのにあぶれた作品同士だな 

324 中の人 [sage] 2010/02/25(木) 00:50:02 ID:bFRahvdT Be:
    こよりポスターは大きいお友達向けに作ったのに・・・
    小学校では女子児童に「こよりポスター」が人気。カワイイだってさwww
    そういやハッチに馴染みがあるのは、児童ではなく保護者なんだよねー。
    でも結果オーライかなw 

325 名無しさん@お腹いっぱい。 [sage] 2010/02/25(木) 08:56:06 ID:TbzSkQJD Be:
    1限か‥‥

    サイン入りに応募して当たったら取りに行くか。長野から。 

327 名無しさん@お腹いっぱい。 [sage] 2010/02/25(木) 18:40:51 ID:QTPEg5m+ Be:
    >>318
    情報さんくす!
    明日、カメラ買って撮影しに行くわ
    まだ残ってるよなあ… 

328 名無しさん@お腹いっぱい。 [sage] 2010/02/25(木) 20:45:50 ID:CJofCFzb Be:
    >>327
    がんがれー 

329 中の人 [sage] 2010/02/25(木) 23:52:12 ID:bFRahvdT Be:
    >>327
    国分寺駅のポスター掲示場所は3箇所。
    ・JR国分寺駅の改札横(駅に入る方)
    ・北口のネットフェンス(直接貼りとパネル貼り)
    ・国分寺市北口事務所1階(入り口ドアに1組、室内に3組)
    北口事務所は敷居が高いって言うけど、中に図書館の分館もあるし気軽に入っておいで!
    我々もちゃんと分かってるから大丈夫だよw 

330 名無しさん@お腹いっぱい。 [sage] 2010/02/26(金) 11:34:12 ID:H9LB4a9r Be:
    >>328
    >>329
    ありがと!カメラ買ってきたよ!
    今充電中なので、もうすぐ国分寺へ向かうよ!
    小雨やめー 

331 名無しさん@お腹いっぱい。 [sage] 2010/02/26(金) 12:19:11 ID:bxgJZlAC Be:
    >>330
    地方民の希望の星だな。
    せめてはっきりくっきりした画像が欲しい……。 

332 327 [sage] 2010/02/26(金) 16:26:55 ID:H9LB4a9r Be:
    今帰ってきました。雨はぎりぎりセーフ。今、外は本降りになってます。
    北口のポスターは、ビニールが全面に貼ってあったのでしわが写り込んじゃって、もう一枚は真ん中で破れてました(T-T)

    結局、329 が教えてくれた、北口事務所に行って撮影させてもらってきました。
    ちゃんと職員の方にokを頂いてからです。「我々」ってだけあって助かりました!ホントありがとうございましたm(_ _)m

    で、ポスター下の方見たら「ロケ地:西元町二丁目付近」ってあったので、西国分寺まで脚を伸ばして、現地も撮影してきました(^-^;
    「守りたい。国分寺の原風景」って割には、かなり大規模な工事やってましたが(^-^;

    …画像どこにあげるのが一番いいかな。
    331 の期待に添えればいいんだけど。 

333 名無しさん@お腹いっぱい。 [sage] 2010/02/26(金) 16:37:44 ID:nq+uNNGc Be:
    >>332
    乙
    ここのロダを使うといい
    http://2sen.dip.jp/cgi-bin/upgun/up10/upload.cgi

    俺も付近の住民だから今度見に行ってみよう

334 327 [sage] 2010/02/26(金) 17:27:14 ID:H9LB4a9r Be:
    >>333
    じゃ、とりあえずそこにあげてみたよ~
    up2832.jpg~up2834.jpg の3枚
    zipで固めようかと思ったけど、とりあえず。
    色調整とかは各自よろろ~ 

335 名無しさん@お腹いっぱい。 [sage] 2010/02/26(金) 17:35:40 ID:nq+uNNGc Be:
    >>334
    ありがとう
    さっそく頂きました^^
    背景結構細かく描いてあるんですね 

336 327 [sage] 2010/02/26(金) 18:01:00 ID:H9LB4a9r Be:
    歪みとか修整した版もとりあえずうpしてみたよ
    同じロダの up2835.jpg

    >>335
    かなり本気で描かれているので困るよな~
    おかげで、欲しくて仕方ないw 

337 中の人 [sage] 2010/02/26(金) 18:05:51 ID:7ZgRpDqg Be:
    >>327
    乙です。
    破られたポスターは、週明けにでも取り替えておきますね。
    ビニールが貼ってあるのは雨対策です。さすがに撮影には不向きでしたね。
    ホントはポスターをjpgで市のHPに掲載したかったんだけど、著作権の関係で
    だめになってしまったんです。申し訳ないです。

    >>332
    大規模な工事って・・・たぶん遺跡の発掘現場だと思いますよw
    ちなみに背景の森のような「国分寺崖線」が原風景です♪

    >>334
    渡辺先生には、B2に伸ばすので細かく書いてくれるようにお願いしました。
    背景も実際の写真から書き起こしてもらったものです。
    結構リアルにかけていると思いますよ。 

338 327 [sage] 2010/02/26(金) 18:13:06 ID:H9LB4a9r Be:
    >>337
    おお、中の人とはw
    今日はありがとうございました(^-^;
    いろいろ大変なハードルを越えた結果のポスターなんですねえ…ファン冥利につきるというものです。
    実現してくれてありがとうございましたm(_ _)m

    本当は3/5の配布に行きたかったんですが、仕事柄年度末で無理だったので…撮影だけでも出来て満足してます
    遠距離の人も「こっそり」これで満足してもらえれば、行った甲斐があったということでしょうw 

339 名無しさん@お腹いっぱい。 [sage] 2010/02/26(金) 18:15:15 ID:0XSnM7pL Be:
    こよりさんの胸のサイズダウンの原因はなんだろうかと言ってみるテスト 

340 中の人 [sage] 2010/02/26(金) 19:01:41 ID:7ZgRpDqg Be:
    >>337
    そうですね。これまで市は市内企業とのタイアップや積極的広報戦略
    をとっていませんでしたからね。全て初の試みです。

    >>339
    するどいなぁwww
    渡辺先生から最初に出てきた初稿のラフ画は、作業服の前がはだけていて、
    見事な爆乳(ブラウスは着ていましたが)が描かれていました。
    「作業して額にかいた汗を手の甲でぬぐっている」ポーズで、表情は「ふぅ」
    って感じだったんです。あまりにもセクシィすぎてwwwww
    案の定、女性職員や市議会議員からブーイングw

    そこで「着エロは無しの方向で!!」ってお願いしたら、小麦並みの微乳キャラに・・・OTL
    最後に「もう少し大きく・・・」で、今回の大きさになったんですよ♪
    やっぱり行政広報ですし、一番怖いのがPTAや女性団体。
    折角のポスターを非難対象にされたくないですしね。私自身巨乳派なので、気持ちは分かります(;^_^A

    このインターメットラジオの第96回の5'55”~を聞いて下さい。
    ポスター作成の目的や背景を解説してますよ~
    http://www.geneon-ent.co.jp/rondorobe/jiji/ 

341 327 [sage] 2010/02/26(金) 19:23:19 ID:H9LB4a9r Be:
    >>340
    ラジオ聞きました。すげー、ってのが素直な感想です。
    納税結果が、こういう反映されるならわたしは全然OKですなw

    …ラフ画がいつか日の目を見るといいなあ 

342 名無しさん@お腹いっぱい。 [sage] 2010/02/26(金) 19:30:18 ID:bxgJZlAC Be:
    >>334
    ありがとう、保存したよ。細部もよく見えるし、この大きさなら我慢もできるというもの。

343 中の人 [sage] 2010/02/26(金) 19:53:18 ID:7ZgRpDqg Be:
    >>341
    ありがとうございます。口が悪い人はアニオタ職員の無駄遣いって批判するけどねw
    このポスターは、今後のアニメ戦略の先鞭です。ただポスターを作っただけじゃなくて、
    マスコミ等を使った宣伝も仕掛けているのですよ~。

    契約もタツノコプロと直接しました。広告代理店を間に入れるとマージンを相当抜かれるので。
    タツノコさんは利益無しの金額でやってくれました。その分、職員自らがポスターのレイアウトや
    キャッチコピーを考えて作成しています。ポスター下部のロケ地や作成者表示も深い意味があるんですよ?

    来年度は・・・ベタですが、小麦ちゃん前面Verの作成をしたいですね。
    5日の配布で反響があれば、配布枚数を増やすか、週末の配布を実施するようにしますよ! 

344 327 [sage] 2010/02/26(金) 21:04:35 ID:H9LB4a9r Be:
    >>343
    なかなか大変なんですねえ…まさに縁の下の力持ち
    週末の配布!…でも、またこれはこれで大変そうですね
    がんばってくださいませませ~ 

345 名無しさん@お腹いっぱい。 [sage] 2010/02/26(金) 22:36:44 ID:Ae1ac9Ef Be:
    中の人最高!\(^^\)三(/^^)/ 

346 名無しさん@お腹いっぱい。 [sage] 2010/02/27(土) 00:19:01 ID:DGjl4Hij Be:
    地方民に優しい休日配布を是非とも。 

347 名無しさん@お腹いっぱい。 [sage] 2010/02/27(土) 08:46:05 ID:EbxK2pZw Be:
    ポスター、来年度は京介くんも出してやろうぜ… 

349 名無しさん@お腹いっぱい。 [sage] 2010/02/27(土) 11:22:43 ID:8V8NG5Qd Be:
    >>340
     中の人乙でつ
     「初稿のラフ画は、作業服の前がはだけていて、
     見事な爆乳(ブラウスは着ていましたが)が描かれていました。」
     このヴァージョンもみてみたかったなぁ

     「小麦ちゃん前面Verの作成をしたいですね」
     キリプロ3人娘も背景に出して欲しいっす

     マスコミ等を使った宣伝も仕掛けるとのカキコ
     批判に屈せず今後の展開にも大いに期待しております 

■_ 本日の巡回から

■_

家でやってても翻訳すすまねえなあ。 適当な喫茶店とかネットカフェでも開拓せんと (以前割と条件の良いお店があったんだけど、閉店してしまってねえ)。

2010年02月26日

■_

・ダムエー
今月もオリジン休載かい orz でもブレストの模様は面白かったな。 ワッケインがア・バオア・クー攻略戦の指揮を執っているわけとかわかったし。

信長の忍 2
四コマ漫画スタイルだけど、結構読ませる。 信長の忍び 2 (ジェッツコミックス)
信長の忍び 2 (ジェッツコミックス)

ヒキガエル
暖かくなったせいか、産卵のために這い出てきたヒキガエルの番を目撃。 ってどこで産卵するつもりなんだ?

■_ どうすっかなあ

オープンソースカンファレンス2010 Tokyo/Spring - XFセクション-展示ブース一覧


オープンソースカンファレンス2010 Tokyo/Spring - XFセクション-展示ブース一覧

Smalltalk-users.jp[言語]	プログラミング言語Smalltalkの各種処理系のデモ、開発事例の紹介などを行います

これとかひじょーーに興味があるのだけど


オープンソースカンファレンス2010 Tokyo/Spring -
日程:2010年2月26日(金)・27日(土) 10:00-17:00 (26日の展示は11:00から、27日の展示は16:00まで)

会場:明星大学 日野キャンパス 26号館(多摩モノレール 「中央大学・明星大学駅」から大学
まで直結。会場まで徒歩5分) 

明星大学 | 交通アクセス 日野校
多摩モノレール利用
「中央大学・明星大学」駅直結
※駅からは学内エスカレータ「Starway」が利用できます。
(1)JR立川駅→(徒歩3分)→立川南駅→(16分)→中央大学・明星大学駅
(2)小田急・京王多摩センター駅→(徒歩3分)→多摩センター駅→(5分)→中央大学・明星大学駅
京王線利用
「多摩動物公園」駅徒歩13分
新宿駅→(特急30分)→高幡不動駅→(3分)→多摩動物公園駅
※高幡不動駅で多摩モノレールに乗り換えることもできます。
※( )は、所要時間の目安です。 

ずいぶんと西のほうへ行くんだなあ。 天気も悪そうだし。

■_ 意外な?


アセンブリ言語の書き方が分かりません。 | OKWave

アセンブリ言語の書き方が分かりません。

R0が示す番地以降のR2が示すバイト数をR1が示す番地以降に転送
これをアセンブリ言語で書くにはどうしたらいいでしょうか?
教えてください。

R0 だの R1 だのって名前のレジスターがあるCPUはいくつもあるけど、 PDP-11 あたりでやったら面白いかなあとおもってたら。


確かアセンブリ言語はCPUに依存するので対象CPUが分からないと答えられないのではないかと思
うのですが。。。

--------------------------------------------------------
よく使われる80x86系CPUを対象とした場合として仮定します。

C言語で簡単なコピープログラムを記述し混合モードの結果を表示すれば、どんなアセンブリコ
ードとなっているのか分かるのではないかと思います。

内容については、調べていません。

--[Source Code]--
int main()
{
 char buf1[256] = {0};
 char buf2[256];
 int imax = 256;

 for(int i = 0 ; i < imax ; i++) {
  buf2[i] = buf1[i];
 }
}

--[混合モード表示結果]--
int main()
{
00A413A0 push    ebp 
00A413A1 mov     ebp,esp
00A413A3 sub     esp,2ECh
00A413A9 push    ebx 
00A413AA push    esi 
00A413AB push    edi 
00A413AC lea     edi,[ebp-2ECh]
00A413B2 mov     ecx,0BBh
00A413B7 mov     eax,0CCCCCCCCh
00A413BC rep stos  dword ptr es:[edi]
(略)
00A41434 xor     eax,eax
00A41436 push    edx 
00A41437 mov     ecx,ebp
00A41439 push    eax 
00A4143A lea     edx,[ (0A41468h)]

  

解答ありがとうございます。
CPUについて調べてみましたが、PDP-11というものでした。
教えていただけるとありがたいです。

本当に PDP-11 だったとは(笑)

■_ お前はオレか

推薦図書/必読書のためのスレッド 54 
526 デフォルトの名無しさん [sage] 2010/02/26(金) 19:18:08 ID: Be:
    K&R買ってきた。
    PHPしかやったことないのに。ハハッ 

527 デフォルトの名無しさん [sage] 2010/02/26(金) 19:55:50 ID: Be:
    >>526 ほい正誤表
    http://www.6809.net/tenk/html/scrap/kr2rev.htm 

530 デフォルトの名無しさん [sage] 2010/02/26(金) 20:14:44 ID: Be:
    他言語の知識があるならK&Rも悪くないと思わなくもない
    あの薄い冊子にCのエッセンスが詰まってる 

531 デフォルトの名無しさん [sage] 2010/02/26(金) 20:15:28 ID: Be:
    Cリファレンスマニュアルの方が有益な気がする 

532 デフォルトの名無しさん [sage] 2010/02/26(金) 20:17:54 ID: Be:
    ロベールにしとけ 

533 デフォルトの名無しさん [sage] 2010/02/26(金) 20:21:39 ID: Be:
    正直迷ったんだけども。ネームバリューで。
    まあ、しばらく読んでみてダメそうなら明解C言語あたりを買うよ。…Pythonの入門書もほしくなってきたし。
    PHPの知識じゃあ条件分岐文くらいしか役に立ちそうにないようなw
    >>527
    正誤表ありがとう。 

534 デフォルトの名無しさん [sage] 2010/02/26(金) 20:23:44 ID: Be:
    正誤表読む間に本2冊読めるぐらいの量だな。 

535 デフォルトの名無しさん [sage] 2010/02/26(金) 20:26:27 ID: Be:
    今正誤表見て愕然

    まあいいや、みんなありがとう 

536 デフォルトの名無しさん [sage] 2010/02/26(金) 20:38:46 ID: Be:
    そこで指摘されてる誤りは増刷でそれなりに修正されてるよ
    修正されずに放置されている誤りもあるけど

    勉強がてらここは直ってる直ってないリストをうpしたら>>535は神 

537 デフォルトの名無しさん [sage] 2010/02/26(金) 20:41:05 ID: Be:
    愕然とする必要なんかない
    ほとんど訂正されてる
    290刷以上のは自分で訂正する場所なんて数箇所程度 

538 デフォルトの名無しさん [sage] 2010/02/26(金) 20:42:18 ID: Be:
    全部じゃないのか 

539 デフォルトの名無しさん [sage] 2010/02/26(金) 20:44:44 ID: Be:
    K&Rを読むんだったら原書に当たれば?

541 デフォルトの名無しさん [sage] 2010/02/26(金) 20:58:52 ID: Be:
    >>529
    でも翻訳がいまいち。 

542 デフォルトの名無しさん [sage] 2010/02/26(金) 20:59:01 ID: Be:
    >>540
    5000円もいかないでしょ? 安いもんよ
    古典的名著を楽しむなら翻訳なんてフィルターは
    曇りガラスごしに景色を見るみたいに余計なだけ 

543 デフォルトの名無しさん [sage] 2010/02/26(金) 21:04:28 ID: Be:
    訳本が出てるのにわざわざ原書を読ませようとするドアホっていったい・・
    映画の話で盛り上がってるときに,
    字幕吹き替え無しの原盤で観ないとほんとのよさはわからない,
    とか言って強制送還されるタイプだろ。 

544 デフォルトの名無しさん [sage] 2010/02/26(金) 21:14:01 ID: Be:
    何年間も勉強してきたのに英語が読めないドアホっていったい・・ 

545 デフォルトの名無しさん [sage] 2010/02/26(金) 21:20:21 ID: Be:
    英語読めないorz 

546 545 [sage] 2010/02/26(金) 21:21:45 ID: Be:
    >>544
    ごめんなさい

547 デフォルトの名無しさん [sage] 2010/02/26(金) 21:22:56 ID: Be:
    翻訳の拙さが話題になるからこそ原書を読めって流れじゃないの?

548 541 [sage] 2010/02/26(金) 21:25:05 ID: Be:
    >>544
    ごめんなさい。 

549 デフォルトの名無しさん [sage] 2010/02/26(金) 21:25:48 ID: Be:
    その辺はトレードオフだなあ
    個人的には、どう頑張っても日本語ほどスラスラ英文は読めないので
    多少質に問題があっても訳本は重宝する 

550 545 [sage] 2010/02/26(金) 21:27:54 ID: Be:
    K&Rの訳はひどくなかったと思います 

551 デフォルトの名無しさん [sage] 2010/02/26(金) 21:29:54 ID: Be:
    >>527 は改訂新版になる前(表紙が緑色の頃)のがベースだな。
    白い表紙になってからは(K&R 1e の頃も白かったんだが)直した箇所がほとんど。 

553 デフォルトの名無しさん [sage] 2010/02/26(金) 21:30:36 ID: Be:
    旧版(1e)とか、表紙が緑色の頃は酷かったの。 

554 デフォルトの名無しさん [sage] 2010/02/26(金) 21:30:36 ID: Be:
    というか件の正誤表って一部を除いて難癖つけてるようにしか思えんのだが 

556 545 [sage] 2010/02/26(金) 21:37:22 ID: Be:
    俺のは、白い表紙だった。だから大丈夫だったのね

    >>550
    確かに読みやすいとは言えない 

557 デフォルトの名無しさん [sage] 2010/02/26(金) 21:44:02 ID: Be:
    コンピュータが普及してからの専門書の翻訳のひどさは異常。
    コンピュータで翻訳して意味も分からず体裁だけ整えて出版してるのが多数。
    売れた本は正誤表が出るだけマシだが、正誤表見るより原著買い直すのが一番時間を無駄にしない。 

558 デフォルトの名無しさん [sage] 2010/02/26(金) 21:49:10 ID: Be:
    洋書厨のふりをしたアンチ乙
    正誤表見るのは原著でもおんなじ 

559 デフォルトの名無しさん [sage] 2010/02/26(金) 21:49:37 ID: Be:
    訳者の間違いを指摘してやったら完全に無視されたぜ
    ホント翻訳は地獄だぜ 

560 デフォルトの名無しさん [sage] 2010/02/26(金) 21:51:09 ID: Be:
    >>543は単に日本語>英語と言ってるだけなのに
    反射的に>>544のレスをしてしまう時点で
    「原書を勧める俺すげー」だけの厨房なのがよくわかるな。 

562 デフォルトの名無しさん [sage] 2010/02/26(金) 21:54:54 ID: Be:
    誤訳だらけの訳書に価値はないよ。というかマイナス。 

563 デフォルトの名無しさん [sage] 2010/02/26(金) 21:55:08 ID: Be:
    日本語になってない訳書多すぎw 

564 デフォルトの名無しさん [sage] 2010/02/26(金) 22:03:32 ID: Be:
    だから原著を真っ先に買ってニヤニヤするんですよ
    そして読まないまま日本語版が出て俺何やってるんだろうと頭を抱える

    Design of Design, The: Essays from a Computer Scientist
    By Frederick P. Brooks
    http://www.informit.com/store/product.aspx?isbn=0201362988&rll=1

    Effective C# (Covers C# 4.0): 50 Specific Ways to Improve Your C#, Second Edition, 2nd Edition
    * By Bill Wagner
    http://www.informit.com/store/product.aspx?isbn=0321658701&rll=1 

565 デフォルトの名無しさん [sage] 2010/02/26(金) 22:10:38 ID: Be:
    >>564
    大丈夫。恥知らずにも邦訳もほいほい買っているのがここに一人‥‥‥orz 

566 デフォルトの名無しさん [sage] 2010/02/26(金) 22:11:59 ID: Be:
    >>560
    コンプレックスがあるからそういう風に解釈してしまうんだね。可哀想。 

567 デフォルトの名無しさん [sage] 2010/02/26(金) 22:23:01 ID: Be:
    お前がいちばんかわいそうだよ 

564, 565にとても親近感を覚える(苦笑)

■_indent →


「コンパイラ・スクリプトエンジン」相談室14 
382 デフォルトの名無しさん [sage] 2010/02/26(金) 15:25:43 ID: Be:
    しつもん
    Pythonみたいなインデント指向の言語を字句解析・構文解析するアプローチを教えてください 

383 デフォルトの名無しさん [sage] 2010/02/26(金) 15:36:09 ID: Be:
    >>382
    lexierでインデントを見て、begin、end的なダミーのスコープ限定子を出力すればいいんじゃね 

384 デフォルトの名無しさん [sage] 2010/02/26(金) 15:52:22 ID: Be:
    >>382
    どの言語だか忘れたが、
    一旦、インデント数をひとつのパラメータ付き構文要素として、構文木に埋め込み、
    これをもう一度構文解析して、構文木を再構成する実装を見たことがある。

    実際はステートとして、現在のインデント数を持っておき、
    >>383のように、ソースには現れない隠れ構文要素を構文木に構成しながら、
    解析するのが簡単だと思う。

385 デフォルトの名無しさん [sage] 2010/02/26(金) 21:41:22 ID: Be:
    CPythonの実装は>>383みたいな感じのようだね。INDENT, DEDENTっていうトークンが用意されてる。 

386 デフォルトの名無しさん [sage] 2010/02/26(金) 23:34:26 ID: Be:
    indentの逆はででーんとdedentなのか
    明日会社で自慢しよう 

ででんと。 以前にも聴いた覚えがあるな。

■_ 本日の巡回から

2010年02月25日

■_

ムダヅモ
通常版はコンビニ(サークルKだったかな)売りもするそうでw
ムダヅモ無き改革<デラックス版> [DVD]
主題歌CDつきのデラックス版をげと。

・生 Theo さま拝みたい
AsiaBSDCon 2010 - 会議日程 が、16000円か。高いとは思わんが、正直出せる余裕ががが。

■_ Tcl

ちょっとわけあってTclのソースをちょこっと読んだりしたんですが。

いやあよくできてますね。これ。 大きく分けて、Unix と Windows とでディレクトリを分けてTcl上の同じ機能を それぞれで実装してたりするんですが、Tclから見たときの抽象化のしかたがうまいというか なんというか。

/*
 * The following function tables are used to dispatch to either the
 * wide-character or multi-byte versions of the operating system calls,
 * depending on whether the Unicode calls are available.
 */

static TclWinProcs asciiProcs = {
    0,

    (BOOL (WINAPI *)(CONST TCHAR *, LPDCB)) BuildCommDCBA,
    (TCHAR *(WINAPI *)(TCHAR *)) CharLowerA,
    (BOOL (WINAPI *)(CONST TCHAR *, CONST TCHAR *, BOOL)) CopyFileA,
    (BOOL (WINAPI *)(CONST TCHAR *, LPSECURITY_ATTRIBUTES)) CreateDirectoryA,
    (HANDLE (WINAPI *)(CONST TCHAR *, DWORD, DWORD, SECURITY_ATTRIBUTES *,
	    DWORD, DWORD, HANDLE)) CreateFileA,
    (BOOL (WINAPI *)(CONST TCHAR *, TCHAR *, LPSECURITY_ATTRIBUTES,
	    LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, CONST TCHAR *,
	    LPSTARTUPINFOA, LPPROCESS_INFORMATION)) CreateProcessA,
    (BOOL (WINAPI *)(CONST TCHAR *)) DeleteFileA,
    (HANDLE (WINAPI *)(CONST TCHAR *, WIN32_FIND_DATAT *)) FindFirstFileA,
    (BOOL (WINAPI *)(HANDLE, WIN32_FIND_DATAT *)) FindNextFileA,
    (BOOL (WINAPI *)(WCHAR *, LPDWORD)) GetComputerNameA,
    (DWORD (WINAPI *)(DWORD, WCHAR *)) GetCurrentDirectoryA,
    (DWORD (WINAPI *)(CONST TCHAR *)) GetFileAttributesA,
    (DWORD (WINAPI *)(CONST TCHAR *, DWORD nBufferLength, WCHAR *,
	    TCHAR **)) GetFullPathNameA,
    (DWORD (WINAPI *)(HMODULE, WCHAR *, int)) GetModuleFileNameA,
    (DWORD (WINAPI *)(CONST TCHAR *, WCHAR *, DWORD)) GetShortPathNameA,
    (UINT (WINAPI *)(CONST TCHAR *, CONST TCHAR *, UINT uUnique,
	    WCHAR *)) GetTempFileNameA,
    (DWORD (WINAPI *)(DWORD, WCHAR *)) GetTempPathA,
    (BOOL (WINAPI *)(CONST TCHAR *, WCHAR *, DWORD, LPDWORD, LPDWORD, LPDWORD,
	    WCHAR *, DWORD)) GetVolumeInformationA,
    (HINSTANCE (WINAPI *)(CONST TCHAR *)) LoadLibraryA,
    (TCHAR (WINAPI *)(WCHAR *, CONST TCHAR *)) lstrcpyA,
    (BOOL (WINAPI *)(CONST TCHAR *, CONST TCHAR *)) MoveFileA,
    (BOOL (WINAPI *)(CONST TCHAR *)) RemoveDirectoryA,
    (DWORD (WINAPI *)(CONST TCHAR *, CONST TCHAR *, CONST TCHAR *, DWORD,
	    WCHAR *, TCHAR **)) SearchPathA,
    (BOOL (WINAPI *)(CONST TCHAR *)) SetCurrentDirectoryA,
    (BOOL (WINAPI *)(CONST TCHAR *, DWORD)) SetFileAttributesA,
(略)
};

static TclWinProcs unicodeProcs = {
    1,

    (BOOL (WINAPI *)(CONST TCHAR *, LPDCB)) BuildCommDCBW,
    (TCHAR *(WINAPI *)(TCHAR *)) CharLowerW,
    (BOOL (WINAPI *)(CONST TCHAR *, CONST TCHAR *, BOOL)) CopyFileW,
    (BOOL (WINAPI *)(CONST TCHAR *, LPSECURITY_ATTRIBUTES)) CreateDirectoryW,
    (HANDLE (WINAPI *)(CONST TCHAR *, DWORD, DWORD, SECURITY_ATTRIBUTES *,
	    DWORD, DWORD, HANDLE)) CreateFileW,
    (BOOL (WINAPI *)(CONST TCHAR *, TCHAR *, LPSECURITY_ATTRIBUTES,
	    LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, CONST TCHAR *,
	    LPSTARTUPINFOA, LPPROCESS_INFORMATION)) CreateProcessW,
    (BOOL (WINAPI *)(CONST TCHAR *)) DeleteFileW,
    (HANDLE (WINAPI *)(CONST TCHAR *, WIN32_FIND_DATAT *)) FindFirstFileW,
    (BOOL (WINAPI *)(HANDLE, WIN32_FIND_DATAT *)) FindNextFileW,
    (BOOL (WINAPI *)(WCHAR *, LPDWORD)) GetComputerNameW,
    (DWORD (WINAPI *)(DWORD, WCHAR *)) GetCurrentDirectoryW,
    (DWORD (WINAPI *)(CONST TCHAR *)) GetFileAttributesW,
    (DWORD (WINAPI *)(CONST TCHAR *, DWORD nBufferLength, WCHAR *,
	    TCHAR **)) GetFullPathNameW,
    (DWORD (WINAPI *)(HMODULE, WCHAR *, int)) GetModuleFileNameW,
    (DWORD (WINAPI *)(CONST TCHAR *, WCHAR *, DWORD)) GetShortPathNameW,
    (UINT (WINAPI *)(CONST TCHAR *, CONST TCHAR *, UINT uUnique,
	    WCHAR *)) GetTempFileNameW,
    (DWORD (WINAPI *)(DWORD, WCHAR *)) GetTempPathW,
    (BOOL (WINAPI *)(CONST TCHAR *, WCHAR *, DWORD, LPDWORD, LPDWORD, LPDWORD,
	    WCHAR *, DWORD)) GetVolumeInformationW,
    (HINSTANCE (WINAPI *)(CONST TCHAR *)) LoadLibraryW,
    (TCHAR (WINAPI *)(WCHAR *, CONST TCHAR *)) lstrcpyW,
    (BOOL (WINAPI *)(CONST TCHAR *, CONST TCHAR *)) MoveFileW,
    (BOOL (WINAPI *)(CONST TCHAR *)) RemoveDirectoryW,
    (DWORD (WINAPI *)(CONST TCHAR *, CONST TCHAR *, CONST TCHAR *, DWORD,
	    WCHAR *, TCHAR **)) SearchPathW,
    (BOOL (WINAPI *)(CONST TCHAR *)) SetCurrentDirectoryW,
    (BOOL (WINAPI *)(CONST TCHAR *, DWORD)) SetFileAttributesW,

(略)
};
BOOL APIENTRY
DllMain(
    HINSTANCE hInst,		/* Library instance handle. */
    DWORD reason,		/* Reason this function is being called. */
    LPVOID reserved)		/* Not used. */
{
#ifdef HAVE_NO_SEH
    EXCEPTION_REGISTRATION registration;
#endif

    switch (reason) {
    case DLL_PROCESS_ATTACH:
	DisableThreadLibraryCalls(hInst);
	TclWinInit(hInst);
	return TRUE;

    case DLL_PROCESS_DETACH:
	/*
	 * Protect the call to Tcl_Finalize. The OS could be unloading us from
	 * an exception handler and the state of the stack might be unstable.
	 */

#ifdef HAVE_NO_SEH
	__asm__ __volatile__ (

	    /*
	     * Construct an EXCEPTION_REGISTRATION to protect the call to
	     * Tcl_Finalize
	     */

	    "leal	%[registration], %%edx"		"\n\t"
	    "movl	%%fs:0,		%%eax"		"\n\t"
	    "movl	%%eax,		0x0(%%edx)"	"\n\t" /* link */
	    "leal	1f,		%%eax"		"\n\t"
	    "movl	%%eax,		0x4(%%edx)"	"\n\t" /* handler */
	    "movl	%%ebp,		0x8(%%edx)"	"\n\t" /* ebp */
	    "movl	%%esp,		0xc(%%edx)"	"\n\t" /* esp */
	    "movl	%[error],	0x10(%%edx)"	"\n\t" /* status */
(略)

	    :
	    /* No outputs */
	    :
	    [registration]	"m"	(registration),
	    [ok]		"i"	(TCL_OK),
	    [error]		"i"	(TCL_ERROR)
	    :
	    "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory"
	    );

#else /* HAVE_NO_SEH */
	__try {
	    Tcl_Finalize();
	} __except (EXCEPTION_EXECUTE_HANDLER) {
	    /* empty handler body. */
	}
#endif

	break;
    }

    return TRUE;
}

なにやってんだこれ(いや、わかるけど)。

■_ ほんとにお前ら忍者が好きだなっ


Anyone for Perl 6 metaprogramming? « transfixed but not dead!

My last post about the Metaprogramming: Ruby vs. Javascript blog post stirred a little 
thought in my head:

    How would it look in Perl 6?

Well here goes, the complete example written in Perl 6 which runs on Rakudo, an 
implementation of the Perl 6 spec on the Parrot VM:

use v6;

class Ninja {
    has Str $.name is rw;
}

my Ninja $drew .= new( name => 'Drew' );
my Ninja $adam .= new( name => 'Adam' );

###########################################################
# Reopen Ninja class ("is also" does the biz)
# and add 'battle_cry' method

class Ninja is also {
    method battle_cry {
        say $.name ~ ' says zing!!!';
    }
}

$drew.battle_cry;   # => Drew says zing!!!
$adam.battle_cry;   # => Adam says zing!!!

(略)

Ninja に反応しただけでしたw

■_ 本日の巡回から

2010年02月24日

■_

・モッさん回収
よんでますよ、アザゼルさん。第4巻 特別限定BOX 「牛箱>(オックスボックス)」

・国分寺
来週金曜日朝十時に国分寺駅(のそば)か。むーん。 生産緑地地区制度広報アニメポスターの配布およびプレゼント|国分寺市

・success = [e.hack() for e in employees]
Closing Pycon 2010 Keynote にあったコード片だけど、なんか気に入った(笑)

日向さん問題はとりあえずいいや。disるにもキリョク要るし。 プログラミングの常識日向 俊二さんへ - 予定は未定Blog版

・「さわり」
を入り口とかとっかかりのような意味で使われると違和感あるのは 少数派なんだろうなあ。 Rubyテクノロジーリーダーを訪ねて - 第1回 「まつもとゆきひろ氏」

■_ reddit やら stackoverflow で拾って

そのまま放置したネタというのがけっこうある。


Do you still buy programming books as an experienced developer? - Stack Overflow

I started programming around six years ago and went through a stint where I would buy 
lots of programming books — I also used to religiously subscribe to Safari books 
online, but now Ithink that reading IT literature online is too difficult.

My questions are:

    * To what extent do users of StackOverflow still buy computer programming books?
    * Do people also find it hard to read online?

Yes, after approx. 15 years of buying computer / programming books whenever the need 
arises, I still haven't stopped.

Reason for (still) buying books: In my case, some reasons are the following:

    * The IT world does not stand still and there are always new, interesting 
      technologies to learn and keep up-to-date with.

    * Often, I realise that I would like to deepen my existing knowledge in some areas. 
      Whenever I get to this point, I consider buying a book on the subject.

Advantages of books over gathering information from the internet: Books are often more 
convenient than gathering information from the Internet, because:

    * You can easily read them offline and take them with you wherever you go (I find 
      this very important).

    * Much relevant information is compiled into one place (unlike on the internet, 
      where you need to surf and look for it).

    * It can be difficult to locate high-quality resources on the internet, I suppose 
      because it's so much easier to publish rubbish on the internet (probably because it's 
      cheaper) than in print through a book publisher.

    * Books can be edited and annotated with a pencil.

Possible arguments against books:

    * I don't mind learning from online resources if a book turns out to be too 
      expensive for what it offers. Some books have a sub-optimal value-to-price ratio.

    * While books are physically there, which is more pleasing than a computer screen 
      from a haptics point-of-view, that doesn't necessarily make the information in the 
      book more valuable than an online resource... but I at least find it very easy to fall 
      into this thinking trap.

The most important thing, after all, is not which medium conveys the information, but 
of what quality the information is and what you can get out of it. One needs to really 
work with computer literature (whether it's print or online) to gain something from it, 
just reading through it is usually not enough.
I've been programming professionally since 1994. Book purchases from the last 12 months:

    * Mercurial: The Definitive Guide
    * Programming in Haskell
    * The Haskell Road to Logic, Maths and Programming: v. 4 (Texts in Computing)
    * Programming F#
    * Fortran Colouring Book
    * Computability and Logic
    * Principles of Programming Languages
    * Learning JQuery 1.3
    * JQuery UI 1.6: The User Interface Library for JQuery
    * Effective Java: Second Edition
    * Programming: Principles and Practice Using C++
    * NHibernate in Action
    * An Introduction to Functional Programming
    * Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design
    * Concurrent Programming on Windows: Architecture, Principles, and Patterns
    * JavaScript: The Good Parts
    * Patterns of Enterprise Application Architecture

I usually start stories with the words "When I was learning to program..." 
even if was something that happened last week.

あー、ビューティフルアーキテクチャ(の翻訳)買ったのに積んだままだ。

■_ 8bit

melancholic afternoon
  ・なんとっ!? ビットパターンはどうなってるんだろう? ah/al/bh/bl/ch/cl/dh/dl でもう8個だし。

下にちょろっと書いたように, 64bitモードではr8~r15のレジスタが追加されてそれを表現する
ためにrexプレフィックスが登場しました. で, 64bitレジスタはrax, rbx, rcx, edx, rdi, rsi, 
rbp, rsp, r8, ..., r15, 32bitはeax, ebx, ..., r8d, ..., 16bitはax, bx, ..., r8w, ...と
なってるので8bitでもal, bl, .., となって自然にrdi, rsi, rbp, rspの下位8bit dil, sil, 
bpl, splが割り当てられたのでしょう. だからrexなしのahたちとは同居できなかったりします. 
つまりmov al, ahやmov al, silはOKだけどmov ah, silは存在しません(ahを表すにはrexがあっ
てはならず, silを表すにはrexがある必要があるため).

この仕様, 「だからx86/x64は…」と言われそうだな.

あー、*h というのが見えななかったのでひょっとしてとは思ったのですが。 なんとなく 68k の使い方に似てますね。 8bit → 16bit → 32bit 的な(68kの場合、d0.b d0.w とデータレジスタの下位ビット を狭いビット幅のレジスタとしてアクセスできるけど、そのあまり(86 の AX でいうところの AL に対応する AH)はアクセスできなかったりする)。

■_ 本日の巡回から

■_ ムダヅモ

おっと。ムダヅモなき改革のDVDか(ふらげ)。

2010年02月23日

■_

でもねでもねまけない~♪

いや、板ばさみはつらいっす。はい。

■_ Ruby VS. Python

数日前に上がってた「Pythonista から Rubyはどんな言語に見えるか」 的なやつに対しての反応があったので。 といってもその一部に対してだけなんですが。


What Pythonistas Think of Ruby | Free PeepCode Blog
3 February 2010
What Pythonistas Think of Ruby

San Pueblan Milksnake

    The very things I find ugly in Ruby are what make amazing Ruby
    software like RSpec possible, and that Python could never have (given
    the current implementation). 

                                                    Gary Bernhardt


    I think Ruby's syntax is ugly until they do something glorious and
    beautiful with it like Rake, then I think "damn it!"

                                                    Unidentified Attendee

    Q: Does Ruby have a better inheritance system than Python?
    A: I find inheritance distasteful. That's like asking me whether I would rather 
       eat grasshoppers or tree bark. 
                                                                                                                          0
                                                      Gary Bernhardt

(略)
Parentheses Are Optional!

Gary pointed out that in most languages, appending parentheses to a
variable that references a function, calls the function.

my_method = Proc.new { ... }

# ERROR: You can't do this in Ruby
my_method()

In Ruby, parentheses are a vestigial appendage. You could write an
entire Ruby application without parentheses (and some do!). To Python
developers, this is shameful. *3

# In Ruby, you must use the call method
my_method.call()

I'm on the line here. I always use parentheses when defining methods,
but use them infrequently when calling methods.

One's aesthetic reaction to the following code snippets distinguishes
the Rubyist from the Pythonista:

attr_accessor(:title, :slug, :body)
belongs_to(:article)
before_save(:encrypt_password)

get("/articles") do
  haml(:article)
end

And yet our repulsion at too many parentheses contrasts with Lisp's
influence on Ruby (which will be mentioned later).

Ruby is NOT a Callable Oriented Language (It’s Object Oriented) « Katz Got Your Tongue?

Ruby is NOT a Callable Oriented Language (It's Object Oriented)

February 21st, 2010

I recently ran across a presentation entitled Python vs. Ruby: A Battle to the Death. 
I didn't consider it to be a particularly fair battle, and may well reply in more 
detail in a later post.

However, what struck me as most worthy of explanation was the presenter's concern 
about the fact that Procs are not callable via parens.

x = Proc.new { puts "HELLO" }
x() #=> undefined method `x' for #<Object:0x1001bd298><
x.call #=> "HELLO"
x[]    #=> "HELLO"

For those coming from a callable-oriented language, like Python, this seems horribly 
inconsistent. Why are methods called with (), while Procs are called with [].

Python のような callable-oriented language の立場からすればこれはとんでもなく一貫性を
欠いたもの (horribly inconsistent) に思えるでしょう。Procs が [] を使って呼び出されて
いるのに、なぜメソッドは () を使って呼び出されるのでしょうか。

But what's going on here is that Ruby doesn't have a notion of “callable”, like 
Python. Instead, it has a pervasive notion of Object. Here, x is an instance of the 
Proc class. Both call and [] are methods on the Proc class.

しかしここでいいたいことは、Ruby は Python のような“callable”な考え方 (notion) を持
つ言語ではないということです。そうではなくて、Ruby はオブジェクトの考えかたを 
pervasive (広くした) のです。ここで、x は Proc クラスのインスタンスです。call と [] の
両方とも Proc クラスに属するメソッドです。


Designing for the Common Case: Calling Methods
一般的なケースのための設計: メソッド呼び出し


Coming from a callable-oriented language, this might seem jarring. But Ruby is 
designed around Objects and the common cases of working with objects.

callable-oriented な言語からするとこれは jarring なものに思えるかもしれません。しかし 
Ruby はオブジェクトを基に据え、オブジェクトを使って作業することを common case として設
計されています。


Calling methods is far more common than wanting to get an instance of Method, so Ruby 
optimizes the case of calling methods, with a slightly less elegant form to access an 
instance:

メソッド呼び出しはメソッドのインスタンスを取得するよりもずっと一般的なものです。
ですから Ruby ではインスタンスに対するアクセスの形式を  slightly less elegant にしても
メソッド呼び出しのケースを最適化したのです:

class Greeter
  def say
    puts "Hello world!"
  end
end
 
Greeter.new.say #=> "Hello world!"
 
Greeter.method(:new) #=> #<Method: Class#new>
Greeter.new.method(:say) #=> #<Method: Greeter#say>
 
# This is so that you don't have to say:
 
Greeter.new().say()

Ruby considers the common case of calling methods, and optimizes that case while still 
making the less common case possible.

Ruby ではメソッド呼び出しの一般的なケースを考慮して、あまり一般的でないケースを可能な
ままにしておきながらも一般的なケースに最適化したのです。


Designing for the Common Case: How Blocks Are Really Used
一般的なケースのための設計: Blocks が実際どのように使われているのか

One of the reasons that the Proc.new case throws off Rubyists in debates is that 
Rubyists literally never call Proc objects using [].

ディベートにおいてRubyistたちを throws off した Proc.new のケースの理由の一つが、
Rubyist たちは literally には決して Proc オブジェクトを[] を使って呼び出したりはしなか
ったということです。


In Ruby, Procs are the object passed to methods when using block syntax. Here is how 
Procs are actually used:

Ruby では Procs はブロック構文を使ったときにメソッドに渡されるオブジェクトです。
Procs が実際どのように使われるかを示します:


def hello
  puts "Hello world!"
  yield
  puts "Goodbye cruel world!"
end
 
hello { puts "I am in the world!" }

When examining languages that support passing anonymous functions to functions (like 
JavaScript), it turns out that the vast majority of such cases involve a single 
anonymous function. As a result, Matz (inspired by Smalltalk) built in the idea of a 
block as a core construct in Ruby. In the vast majority of cases, blocks are created 
using lightweight syntax ({} or do/end) and called using yield.

(JavaScript のように) 関数に無名関数を渡すことをサポートしている言語を試したとき、それ
を行っているケースのほとんどで一つの無名関数 (single anonymous function) を渡している
ことがわかりました。結果として、(Smalltalk に inspire された) Matz は、Rubyにおける 
core construct として block のアイデアを組み込んだのです。そのような vast majority of 
cases でブロックは ({} もしくは do/end を使った) lightweigth な構文によって生成され、
yield を使って呼び出されます。

In some cases, blocks are passed from one method to the next, before they are finally 
called using yield:

yield を使って呼び出される前にあるメソッドから次のメソッドへブロックが渡されるケースも
あります:


def step1(&block)
  puts "Step 1"
  step2(&block)
end
 
def step2
  puts "Step 2"
  yield
end
 
step1 { puts "Do the action!" } #=> "Step 1\nStep 2\nDo the action!"

As you can see, Ruby builds in the idea of calling a block into the core language. I 
searched through Rails (a fairly large codebase) for instances of using [] to call a 
Proc and while we use blocks extremely commonly, we don't use [] to call them.

見てわかるように、Ruby はブロックの呼び出しというアイデアをそのコア言語に組み込んでい
ます。わたしは (a fairly large なコードベースである) Rails からProc を呼び出すのに [] 
を使っている例を探しましたが、ブロックを  extremely commonly に使っていたにも関わらず
呼び出しに [] を使っているものは見つかりませんでした。

I suspect that the reason this comes up is that people who are used to having to 
define standalone functions, pass them around, and then call them are looking for the 
analogous constructs in Ruby, but are missing the different paradigm used by Ruby.

I suspect that the reason this comes up is
that people who are used to having to define standalone functions,
pass them around,
and then call them
独立した (standalone) な関数を定義しそれを渡しておいて
あとで呼び出す
are looking for the analogous constructs in Ruby,
but are missing the different paradigm used by Ruby.


Consistent Method Execution 一貫したメソッド実行

Fundamentally, the issue here comes down to this:

def foo
  proc {}
end
 
foo()

In Ruby, methods are invoked with our without parentheses. All methods return values, 
which are always Objects. All Objects have methods. So foo() is a method call that 
returns a Proc object. It's extremely consistent, with very few axioms. The fact that 
the axioms aren't the same as those in a callable-oriented language doesn't make them 
“weird”.

Ruby では、メソッドはカッコありでもなしでも起動されます。全てのメソッドはそれが常にオ
ブジェクトであるような値を返します。すべてのオブジェクトはメソッドを持っています。です
から foo() は Proc オブジェクトを返すメソッド呼び出しなのです。それは極少数の axioms 
に基づいていてとても首尾一貫しているものです。

The fact that 
the axioms aren't the same as those in a
callable-oriented language doesn't make them “weird”.

#axioms 原理、原則、公理

■_


推薦図書/必読書のためのスレッド 54 [chaika]
403 デフォルトの名無しさん [] 2010/02/19(金) 17:35:32 ID: Be:
    D. S. MalikのC++ Programming: Program Design Including Data Structures
    読んだ方いますか?
    米Amaで売れているから気になるんだけど、17000円超なので衝動買いができません。
    どんな感じでしょうか? 

404 デフォルトの名無しさん [] 2010/02/19(金) 17:37:44 ID: Be:
    借金してでも買うべき。 

405 デフォルトの名無しさん [sage] 2010/02/19(金) 17:40:25 ID: Be:
    >>404
    人柱はほしいよね 

406 デフォルトの名無しさん [sage] 2010/02/19(金) 17:43:19 ID: Be:
    >403
    今買うのはよせ
    あと少し待つんだ 

407 デフォルトの名無しさん [sage] 2010/02/19(金) 19:01:05 ID: Be:
    >>403
    英尼で6k弱
    http://www.amazon.co.uk/dp/142390222X

    ICCUのレビュー
    http://accu.org/index.php?module=bookreviews&func=search&rid=105

    Course Technologyの本ってトムソンラーニングが訳してるけど知名度ほとんどないよね
    大学で指定でもされてない限り買わなそう 

408 デフォルトの名無しさん [sage] 2010/02/19(金) 19:01:59 ID: Be:
    ICCUってなんだ。ACCUで 

どんな本なんだろう>いちまんななせんえん

■_ 本日の巡回から

2010年02月22日

■_

・高速化されたという mawk のソース読んでいる余裕がにゃい。

■_ 誤差

やっぱりそうですよねえ。


melancholic afternoon
2月21日_
Float → Double の代入を行って「誤差が発生する」ケースってどんなのでしょうか?

    仮数部のビット数は Double のほうが多いし、基数も同じだから特に問題になるような 
   「変換」は起きないような気がするんですが。 

単にdouble→floatの書き間違いだったりして.
それはともかく, 誤差が発生することは無いのは正しいのだけれども, x86のFPU/SSEにおいては
「すべてのfloat xに対してbinary表現が(float)(double)x == x」とは限らなかったりする. 
SNaN(0x7f800001以上0x7fc00000未満のbinary表現で表されるfloatの値. 最上位bitが立ってい
てもいい)に対してcastするとQNaNになる(0x00400000のor値になる)のでその範囲では異なる. 
まあ普通は恒等写像と思っておいて問題ないんですが.
U-memo(2010-02-22)
    Float → Double の代入を行って「誤差が発生する」ケースってどんなのでしょうか?

IEEE754規格 (5.4.2節) では

Conversion to a format with the same radix but wider precision and range is always exact.

なので誤差は発生しませんね。Scala の実装は知りませんケド :-p

ああ、NaN やら Inf やらはとりあえず忘れていました(^^; やはり逆に書いてしまったんでしょうか。にしたってひどいミスだと思うんですが。 試しに質問のメールを投げてみようかしらん。

ところで日向さんの本の Amazon でのコメントにはなぜか熱烈にほめる人がでてきたり することがよくあるんですが、この本にもつくのかなあ(笑) Amazon.co.jp: go2futureさんのプロフィール: レビュー この人とか。 あ、コップ本にケチつけてる(笑)

Amazon.co.jp: go2futureさんのプロフィール: レビュー

翻訳もよく内容も充実していて良い本であることは確かです。しかし、Scalaにこれから取り組
む初心者の入門書としては必ずしも推薦できません。JavaやC#、Lispなどで相当の経験を積んで
いれば容易に理解できるでしょうが、そうでないなら、本書の先頭1/4を過ぎたあたりで挫折し
かねません。初心者はもっと易しい入門書から入って少し勉強と経験を積んでから、この本を読
むとよいでしょう。 

時期的には最近ってわけでもないのか。でもこのレビュー書かれた時点(2009年9月)で 「もっと易しい入門書」なんてなかったのでは?(笑)

別の本ですが、「これはひどい」

Amazon.co.jp: go2futureさんのプロフィール: レビュー
Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念 - プログラムはプロセッサ上でどのように実行されるのか

先に出ている類書で、簡潔で分かりやすい本があります。
たとえば、
「Cプログラムの中身がわかる本」
株式会社翔泳社、ISBN978-4-7981-1638-9
「やさしいアセンブラ」
株式会社カットシステム、ISBN978-4-87783-211-7
まずこちらから読むのがお勧め。 

どなたの著書なのかはあえて申し上げません :-p

■_

Ruby でコンパイラー 気がついたらstep24か。大分見逃してるような気がする。


Writing a (Ruby) compiler in Ruby bottom up - step 24

Thunks

A "thunk" in terms of a object oriented languages is generally a small piece 
of compiler generated code that gets inserted to "adjust" a function or 
method call.

In this specific case, we will generate a separate thunk for each vtable entry.

Instead of inserting a pointer to method_missing directly, we will insert the address 
of a small thunk. The thunk will not even create a full stack frame, but simply add 
the address of the Symbol corresponding to the vtable slot as the first argument on 
the stack, and then jump straight into method_missing, thereby simulating a 
"direct" call to method_missing with the symbol as the first argument.

It's actually very simple - we just need to pop the real return address off the stack, 
push the symbol onto the stack, and then push the real return address back on.

Ok, so we still cheat a bit. Eventually we need to make our method_missing into a real 
method, but for now it's a function. Here's the code I've added to create a 
"base" vtable that is used to initialize the vtable slots of Object:

最初から追いかけなおしたいなあ。

■_ 寿命

その番組は観てませんが。



ピット: つらつらぐさ
ピット

 昨夜放送の日本テレビ系「世界一受けたい授業」。物の寿命というのをやっていたのだけれど、
CD の話はよろしくないような気がする。中村智彦さんは「CD が出てからずいぶんとたったので
寿命である 30 年からするとそろそろ危ない」というのだが、なにか勘違いしてないかな? 販
売されている音楽 CD と、パソコンなどで記録できる CD-R や CD-RW とは記録方式がそもそも
違うのに。

 ひょっとして音楽 CD もせっせとパソコンで CD-R に焼いていると思っているのかな?

 仮に、音楽 CD や CD-ROM が 30 年あまりで劣化してしまうようなものだとしたら、それこそ 
CD なんて買ってられるかという話になってしまうと思うけれど、あれはピットを刻んでいるの
で CD そのものが歪曲するとかでなければ劣化するというものではないと思うのだけれど。

(略)

プレスで作られたCDでも寿命はありますよ。 特に初期のものには問題があるみたいです。 この辺とか → CDやDVDにも寿命がある!?上手に保管しよう! - [オーディオ・ビジュアル]All About まあ製造時期やら考えて30年という数字がどうなのかはわかりませんけども。

■_ JavaScript の設計上の間違い?

と主張してるんですが。 関数定義に function なんて長い名前を使うなよと。


Was it a big mistake of JavaScript language inventor to use function instead of a shorter word ? - Stack Overflow

It seems that it would be wise to use def, fn, or fun for function definitions similar 
to Ruby or other succinct languages.

Now that it's too late to change things due to potential compatibility issues, the 
whole world is forced to suffer using that wasteful long name 'function' everywhere in 
JavaScript code.

I don't think it is a real problem


It would be nice if it were smaller/shorter but this doesn't materially effect the 
difficulty of developing software in JavaScript. Anonymous functions are a nice 
feature however bad the syntax is.


how much time could typing 5 or 6 extra characters take???
 

I don't know if I would call it a "big mistake." But I do occasionally wish 
for something shorter, though. I'd want to use a special syntax, something like 
|a,b|{return a+b;} or even better, |a,b|{a+b} if it could implicitly determine the 
return for short expressions.

Sigh...

On the other hand, so we don't go away from this question feeling depressed, isn't it 
AWESOME how we have great shorthands for object and array literals in javascript? So 
awesome it brought us JSON! If you ask me, the data structure shorthands are much more 
important anyway, so cheer up. ^_^


function reply() {alert("No, it wasn't!");}

"Big mistake"? Apparently not - JavaScript's more popular than Ruby or other 
succinct languages. The two don't appear to be correlated.

There are lots of things to lament about JavaScript, but "function" isn't 
high on the list.

Since functions are first class objects "function" seems like a good choice.

■_ 参考リソース


『やさしいScala入門 平明な例と演習問題で学ぶ』の重箱の隅をつつく - Onion開発再開しつつある日記

付録F 参考リソースについて

Scalaの公式サイトやコップ本を挙げているのは良いが、Scalaにはあまり関係無いと思われる自
著を3冊も挙げているのは何故?

やっぱり疑問に感じますよねえ(笑) 確かその三冊のうちの二冊は、わたしがケチつけた、 誤差云々の説明のところで参照するような目印がついていたような。 書店でその本を探して該当する箇所らしきところを見てみたんですが、 正直、「なんで?」といいたくなるレベルです。

■_

Twitter / ssc RiSK: 索引にだけ call by value ってある。そ ...

索引にだけ call by value ってある。それが指し示す 6.5.2.2 Functioncalls には call by 
value という語は出てこない。関数呼出しの説明そのものが call by value ってことかな。

Twitter / ssc RiSK: JISX 3010:2003 も見てみたけど,cal ...

JISX 3010:2003 も見てみたけど,call by value に対応するものは索引にも見つからなかった。
謎。

2003 じゃないけどこのへん。

6.5.2.2 関数呼び出し

意味規則
実引数は、任意のオブジェクトの式でよい。関数呼び出しの準備の段階で、実引数を評価し、
各実引数の値を対応する仮引数に代入する。(78)
(78)
関数は、その仮引数の値を変更してもよいが、これらの変更が実引数の値に影響を与えることは
できない。一方、オブジェクトへのポインタを渡すことは可能であり、関数はそれによって
指されるオブジェクトを変更してもよい。配列型又は関数型を持つと宣言された仮引数は、
ポインタ型を持つように型調整される(6.9.1で規定する。)。
6.9.1 関数定義
意味規則
 各仮引数は、自動記憶期間をもつ。その識別子は左辺値とし、関数本体を構成する複合文の先
頭で宣言されたとみなす(このため、関数本体では更に内側のブロックの中以外では再宣言でき
ない。)。仮引数のための記憶域の配置は、未規定とする。

 関数の入り口で、可変修飾された仮引数の大きさを指定する式を評価し、各実引数の値を代入
の場合と同じ方法で、対応する仮引数の型に変換する(実引数としての配列式及び関数指示子は
呼び出しの前にポインタに変換済みである。)。

実引数を評価し、各実引数の値を対応する仮引数に代入ってのが call by value での 動作なので、用語としてでてこなくてもそれを使ってますよと。 んで、補足の 78 に、配列はポインターに変換される云々とあるので 配列も「参照渡し」はされません。と。

しかしなあ少しくらいは引用させろよ。っての。

■_ 本日の巡回から

2010年02月21日

■_

・なかなかきついことを書かれているような気がする
英文をざっと見ただけの印象なので、きちんと読んだら違うかもしれないけど(^^; The Code Dump » Avoid the perils of coder customers The Code Dump » Stop Coding in the Middle Ages The Code Dump » Less Code is More The Code Dump » Trying to Find Coder’s Heaven 他にもあるけど順を追って読んでみるかな。

・新聞では「貼る」というのも使えないとは
常用漢字に入っていないから。だそうですが。

■_ VS 2010

あー、そろそろ 2008 確保しとかんといかんか。 これ以上待ってもさらに値段が下がるかどうか疑問だし。 とはいえ 937 の情報は気になるな。 まあ、2010を買ったにせよPCをどうにかしないといかんのだけど。


Visual Studio 2010 Part 2 
933 デフォルトの名無しさん [sage] 2010/02/19(金) 23:01:42 ID: Be:
    まだ2005 (2.0) でがんばってるけど次買い換えるなら
    2008飛ばして2010でいいかな。。 

934 デフォルトの名無しさん [sage] 2010/02/19(金) 23:02:45 ID: Be:
    WiX チュートリアル
    http://www.softark.net/wix/

    WiX のヘルプの一部 & MSDNへのリンクめも
    http://cml.s10.xrea.com/ 

935 デフォルトの名無しさん [sage] 2010/02/19(金) 23:07:23 ID: Be:
    2010は高いんだよ standard がないんだよと聞いたの。。 

936 デフォルトの名無しさん [sage] 2010/02/19(金) 23:22:14 ID: Be:
    2010のIDEの糞さ加減と
    standardがないのを考えると
    2008買うのも手か 

937 デフォルトの名無しさん [sage] 2010/02/19(金) 23:22:43 ID: Be:
    その話、一応最後の望みレベルだけど…

    SKU発表はベータの関係で先に出たけど、全体的に発表まで待てという
    ようなコメントレスだったよ。

    特に気になるのは scott のこれかな

    Scott, what about pricing with Standard option removed?
    It was much more powerful than Express for only $300. I've seen some
    ideas on ArsTechnica -- they posted Professional SKU with $800 price
    tag. In this case we don't really have a middle ground between Express
    and Pro. Unless Express now has all the features that Std had.

    We have plans for a version in that price-point - but haven't announced
    details yet. We will announce more in the future though.

940 デフォルトの名無しさん [sage] 2010/02/20(土) 13:12:46 ID: Be:
    >>933
    おいらも2008飛ばして2005proでがんばってるけどC++0xの一部対応にはメリット感じてるから
    買いたいけどMFC使ってないからexpressで十分なのかも。

もっとも、一番使ってるのはいまでも 2003 だったりする(笑) というのも、シングルスレッド用のlibc の関数群を static リンクできるのはこいつが最後だから。 いちおー、gawk.exe やらは DLL 抜きで動くというのを縛りにしてるんで。 MinGW でコンパイルできるようにしてくれないかというお願いをずいぶん昔に受けて、 ちまちまとやってるんでそっちに行くという手もあるかなあ。

■_ \0\0

文字列の終端と、文字列群(うまい表現が浮かばない)の終端を表すのがいると。


The Old New Thing : The normal string manipulation functions stop on a null terminator, so be careful when manipulating double-null-terminated strings

The Old New Thing

The normal string manipulation functions stop on a null terminator, so be careful when 
manipulating double-null-terminated strings

One of the many gotchas of working with double-null-terminated strings is accidentally 
using functions on them which were designed to operate on single-null-terminated 
strings. Now, you do need to use those single-null-terminated strings, but you also 
need to know when they won't do what you want.

One of the responses to my psychic detection that somebody passed a 
single-null-terminated string to SHFileOperation is, "Oh, no, I 
double-null-terminated it. Look:

sprintf(szDeletePath, "%s\0", file_to_delete);

See, I put an extra \0 at the end."

(略)

複数の文字列を一度にやりとりするのに Windows の API では良く見かける(た)やり方だけど、 これって起源はどこなんだろうか(起源知りたい厨)。 環境変数の管理辺りにありそうな気がしないでもないけど。

■_ 話題に

びみょうらしいです。

プログラミング言語 Scala 3冊目 
104 デフォルトの名無しさん [sage] 2010/02/20(土) 12:18:29 ID: Be:
    びみょうな本がでたらしいね。
    みてないけど。 

105 デフォルトの名無しさん [] 2010/02/21(日) 02:45:20 ID: Be:
    >104

    Steps in Scala: An Introduction to Object-Functional Programming
    これか? 2010.9月発売だけど。


    Pro Scala: Monadic Design Patterns for the Web Gregory Meredith (ペーパーバック - 2010/4/25)
    それとも、こっち? 

106 デフォルトの名無しさん [sage] 2010/02/21(日) 11:39:43 ID: Be:
    これじゃないかな。

    やさしいScala入門
    http://www.cutt.co.jp/book/978-4-87783-238-4.html

107 デフォルトの名無しさん [sage] 2010/02/21(日) 11:48:30 ID: Be:
    なにそれ、そんな本出てたんだ
    Amazonにはないみたいだけど、なんかあやしい感じだな
    目次がJavaの入門書と区別つかないし
    どう見ても地雷本 

108 デフォルトの名無しさん [sage] 2010/02/21(日) 14:26:59  ID: Be:
    Scalaスレにもなると一発で見抜かれるんだなw 

109 デフォルトの名無しさん [sage] 2010/02/21(日) 15:07:36 ID: Be:
    想定している読者層がよく分からない本だな。

110 デフォルトの名無しさん [sage] 2010/02/21(日) 16:43:45  ID: Be:
    お気楽極楽のカットシステムじゃあなぁ

111 デフォルトの名無しさん [sage] 2010/02/21(日) 18:23:18  ID: Be:
    出版社名で避けるレベル。

「お気楽極楽」がわかる人が今どれくらいいるのかなあ(^^; → [linux-users:21819] お気楽極楽は地獄?(Re: Beginner) Using Linux フリーソフトウェアにおけるライセンスの意義 読まなくてもいいよ11 確か修正前のやつを買って保存してあるはずだけど、どこに埋もれているやら。

■_ ScanSnap

まだ悩んでいます(笑) 1300でいいかなーと思いながらも、こんなのを見つけてしまってまた振り出しに。


価格.com - 『S1500との比較』 PFU ScanSnap S1300 FI-S1300 のクチコミ掲示板
S1500との比較

質問をさせてください。
書棚がいっぱいになったので、書籍やコミックなどをデータ化しようと考えており、S1300と
S1500のどちらかを購入しようと考えています。

どちらの機種も扱ったことのある方いらっしゃいますか?速度の違いはわかったのですが、スペ
ックをみると、光源の違いもあるようで、性能の違いはどの程度あるのでしょうか?

ご存知の方、ご教授下さい。
よろしくお願いします。

2009/12/11 10:59 [10612734]

ナイスクチコミ!0点

DHMOさん 

どちらも扱ったことはないのだが、2ちゃんねるの、電子書籍化をテーマとしたスレッドでは、
S1300は全く相手にされていない。

速度が遅く、原稿搭載枚数が少ないから。
S1300は書籍を電子化することをコンセプトにしたモデルではない。
携行性を重視し、少量のビジネス書類等をパパッと電子化することをコンセプトにしたモデル。

今のところは、雑誌は考えてるけどコミックも含めて単行本やらの取り込みは 考えてないのですが、気になるっちゃー気になる。 でも、月当たりでどのくらいの枚数を取り込む必要があるのかってのを 封筒裏の計算してみるとやっぱり 1300でも大丈夫かなあ。

■_ ナイス質問

回答したいなー(笑)


40年前にできたC言語が今でも必須なのはなぜですか? - Yahoo!知恵袋
40年前にできたC言語が今でも必須なのはなぜですか?

たくさんの言語が生まれているのに、なぜ未だにC言語を使い続けているのかが疑問です。
ただ単に新しいのを勉強するのがめんどくさいからなのでしょうか。

私が初めて触った言語がActionScript3.0なだけに、余計にC言語が古臭いものにしか思えません。
できればC言語が誕生した頃から使い続けている方に答えていただきたいです。

よろしくお願いします。

頭の良い人が、理論的には美しくても、巨大な言語を考案しても、
頭が良くて記憶力抜群なプログラマーだけではないわけであって、
結局は、言語仕様が小さくて単純で覚え易いのが(汎用性は必須)
多くのプログラマーに受け入れられ長く生き延びるのでしょう。
最近ではJAVAが良い例ですね。

言語仕様は小さい方が最後は勝つようです。
最近は聞かないけれども、
昔PL/1というのが有ったけれど、どうなったんでしょうね???

プログラム規模が大きくなると、
これからはソース解析ツールが作り易い言語が重要だと個人的には思います。

プログラマー歴45年談

優れたエディタが有る昨今では、
昔は一文字変数iとかjとかは。タイプミスの可能性が大きいと思われ
長い変数名をあえて使用した時代もありましたが、COBOLがその例。
今ではかえって長い名前は時には嫌われます。目や頭脳の認識負担が大きいので。

40年前から使っていませんが、C言語はとにかくアセンブラに近く、ハードウェアに密接した
プログラムを書く時に重宝します。これは、ActionScriptに無い特徴ですね。言語的に最適化
が効きやすいため出来上がる機械語コードの動作が早いってのもポイントです。あとは、過去か
らの蓄積があるので技術者が必要ってこともありますね。

(略)

ところで、C++も誕生から30年近く経つんですが古臭く感じるんでしょうか?
私は若造ですが、思ってることを…

(略)

という事で私が思うに、
1.メモリ管理が細かく出来る。
2.ドライバ~OSアプリまで大抵の事ができる。
3.C言語を知っておけば、大抵の言語はつぶしが効きます。
C言語が理解できない(しない)人は、言語が変る毎に苦労すると思いますよ。(たぶん)

あなたが何年プログラムをやっておられるか、
「ActionScript」がどんな特徴かは知りませんが、
”古臭い”という前に、「C言語の特徴」を知って下さい。
使われ続けるのは理由があります。


話は違いますが、
私はJavaを主に扱ってますが、C言語を知らずにJavaを組む人って、
コードが汚い人(メソッドやクラス分け等)が多いと思います。気のせいかな…?
(あ、もちろん上手な人もいますけど、私の周りはって意味で…)

>ただ単に新しいのを勉強するのがめんどくさいからなのでしょうか。
違います。C/C++をきちんと理解しており,充分な開発経験がある人は,Javaや他のスクリプト
言語は数日程度の勉強ですぐに使えるようになります。(逆は,普通は無理です。)

C/C++が必須なのは,OSなどの基本ソフトやミドルウェアは,コンパイラ型の言語でないと実装
できないし,その中でC/C++は実質的な標準だからです。例えばJavaにしてもActionScriptにし
ても,その仮想マシンやスクリプトエンジンは,C/C++で実装されているはずです。誰かが,
C/C++で泥臭いところを実装してくれているからこそ,あなたがActionScriptを使えるわけです
ね。

なお,今ではCよりもC++を使うことが多いけど,C++は実質的にC言語を拡張したものなので,勉
強の過程としては,C言語から始めるのが普通です。

たかだかCをいじって15年ですからまだまだ、ですけれど。はじめてBASICでプログラムらしきも
のを組んでからは30年か。

結局C言語が古臭くて低級だから、そしてCPUの機能を搾り出す力があるからまだまだ使われてい
るしこれからも使われるんじゃないかしら。

(略)

でもって、かなりの表現力があるわけですから、それ以上手間をかけて他の言語を移植するより
は、Cで開発を始めてしまった方が手っ取り早い...ということになるのでしょう。

新しいOSについても事情はそんなに変わらないでしょうね。というか、OSの開発自体がほとんど
C/C++でしょうから、とりあえず最初に動かす言語としてもCの相性がいいのは当然。

では、そのような環境下で新しい言語を新しいCPU/OSに載せるにはどうするのか...新しい言語
をCで記述するわけです。

組み込みなどのプアな環境下では、よりリソースの必要な新しい言語を使うことが非現実的なこ
ともありますし(FLASHが使えない、というかLEDがチカチカするだけの表示装置でActionScript
もないでしょう)。

これなら当面Cの出番はなくなりそうにない、そう思いませんか?

C を知ってる/知らないがJavaのプログラムに現れるってのはどうなんかねえ。 否定はできないけど、逆(なまじCを知らないほうがJavaらしいもの)じゃないかなあと 思わんでもない。

■_


一つ前へ 2010年2月(中旬)
一つ後へ 2010年3月(上旬)

ホームへ


Copyright (C) 2010 KIMURA Koichi (木村浩一)
この文書の無断転載はご遠慮ください(リンクはご自由にどうぞ)。

メールの宛先はこちらkbk AT kt DOT rim DOT or DOT jp