ときどきの雑記帖 めぐりあい電脳空間編

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

一つ前へ 2010年9月(上旬)
一つ後へ 2010年月(下旬)

ホームへ

2010年09月20日

■_

三省堂にクラブ三省堂というのがあるんですが (三省堂書店 | クラブ三省堂 : クラブ三省堂のサービス内容)、 先日、とある(有料の)サービスの案内が来ました。 なんでも、興味深い新刊の内容を4ページ程度にまとめたレポートを送ってくれるとか。 それはそれで面白いとは思うのですが、 北米で出版された技術書の内容を4ページ程度にまとめてくれたらいいなあと思ったり(笑) 都内の大型書店でも洋書売り場(のCS 関連)の面積は減る一方のようで、 なかなか中身を確かめてから買うといったことができません (といいつつも、Amazonさんで買うと1000円単位で値段が違うからついついそっち行くんですよねえ)。 電子書籍がすべてを解決する…のかなあ。

■_ C コンパイラ

ふと疑問に思ったんですが、 C って関数の中に関数を定義できないけれど { } によるブロックは自由に置くことができて、 そこで変数を宣言できますよね? C99より前ではブロックの直後でしか変数の宣言は許されなかったわけですが、 これって解析の手間もあってそうしたのだと思うのですが (関数の中で好きな位置で宣言できるようにすると、 その関数でどれだけローカル変数用に領域を確保するかの判断が関数全体を読むまでできない)、 このブロックが自由におけることでやっぱり関数全体を読む必要があるんじゃないかと。

とここまで書いて、なんか眠気で支離滅裂になりそうなので次の岩に続く。

■_ 今日の丸投げ

昨日の OKWave のと同じ人物の投稿っぽいですね。 時間切れでこのまま消えそうな気がする。


schemeで全dataを+するのを知りたいです - Yahoo!知恵袋

schemeで全dataを+するのを知りたいです

(mysum 20) => error
(mysum '()) => 0
(mysum '(1 2 3)) => 6
(mysum '((1 2) ((3)) (4 (5)))) => 15

こんな感じにlistの中の数を+する方法が知りたいです


(mytrans 1) => error
(mytrans '()) => 0
(mytrans '(1 2 3)) => (one two three)
(mytrans '((1 2) ((3)) (4 (5 6)))) => ((one two) ((three)) (four (five six)))

listの数を英語に

(myfind 10) => error
(myfind 'a) => error
(myfind '((x 10) (y 20) (x 30)) 'x) => 10
(myfind '((x 10) (y 20) (z 30)) 'i) => #f

。。。これは僕もどんな内容か分かりません 

「知りたいです」ってもうちょっと言い様がないもんかねえ。

■_ 2 or 3?

しばらくは(ずっと?)結論でないんだろうなあという気も。


Python version 2 or 3? : Python

I am a beginner in pyton, not in general programming. Should i opt for python 2 or 3? 
What will be the big differences for a newbie ? Please guide. thanks


Python 3 isn't retrocompatible with 2.

It's great, but many important python libs haven't yet been ported from 2 to 3 and 
transitioning might take a lot of time.

As a beginner, I'd advise going with the latest 2.x python to avoid any pitfalls. All 
the libs you might need will just work fine.

Moving to 3 will be very easy and you may even import some Py3 goodness in Py2 when 
you feel ready using "from future import...".

TL;DR: Go with 2.7 if you're starting.


As someone who "started" a few years ago, and then promptly forgot about it, 
then picked up 3.x six months ago, I prefer 3. For me, it feels better. For me, it 
makes sense. And, being someone who has no real intention of doing anything useful 
with it, lack of libs doesn't bother me.

But that's just me.

If library support is a concern, 2 is definitely the way to go, sadly, but if that 
doesn't bother you, try both just to see how they feel.

But a newbie wanting to have fun with python might want to use it for webdev... and 
most frameworks/tools rely on 2.x

He may also want to use some major libs (from ui to image manip, who knows) and most 
of them still rely on 2.x and will for many, many more months (if not years).

Finally he would certainly like to follow existing tutorials, dig into existing 
snippets/apps and most of these will be 2.x too.

Considering how easy it is to move to 3 once you know 2.x and knowing that you can 
even import future features into 2.x, it seems like the right choice to me. Avoids 
loads of potential frustration.

Your mileage may vary.

Python 3 should be nicer; that's the point of a new version. If you're doing much real 
work with it, you're better off with 2.x, but if you're just futzing around and 
learning some Python, then 3 is cool.


3.x is the new shiny thing. 2.x is what everyone is currently using (in production &
development).

3.x is a fantastic upgrade, but 9 out of 10 libraries have yet to roll out 3.x support, 
making the release essentially useless for another year or two. Everyone's still 
getting up to speed, even the package managers (pip, easy_install).

Save yourself some serious trouble and use 2.6+ for the next few years. The transition 
will be simple in a year or two.

とはいえ 2.x は 2.7 で終わりと聞くし。

■_ Do people in non-English-speaking countries code in English?

量が結構あるので読むのあと(笑)


Do people in non-English-speaking countries code in English? - Programmers - Stack Exchange


I've heard it said (by coworkers) that everyone "codes in English" 
regardless of where they're from. I find that difficult to believe, however I wouldn't 
be surprised if, for most programming languages, the supported character set is 
relatively narrow.

Have you ever worked in a country where English is not the primary language?

If so, what did their code look like?

Edit: Code samples would be great, by the way...

■_ 本日の巡回から

2010年09月19日

■_

今日はなにもしなかった。

■_ 最近こんなスレッドが立っているのを発見


Cプログラマはもういらない 
1 仕様書無しさん [] 2010/09/15(水) 11:08:49 ID: Be:
    余ってんだよ 

3 仕様書無しさん [sage] 2010/09/15(水) 12:30:13 ID: Be:
    Cプログラマーはいらないけど、C言語学習することには
    意義があるんじゃまいか? 

7 仕様書無しさん [] 2010/09/15(水) 20:12:28 ID: Be:
    Cプログラマの数を減らして、2038年問題で一儲けする気の>>1 

8 仕様書無しさん [sage] 2010/09/15(水) 20:23:19 ID: Be:
    仕事がないからねぇ。
    Javaは仕事はあるけど人も多いからなぁ。どこも人余り。 

9 仕様書無しさん [] 2010/09/15(水) 20:30:03 ID: Be:
    Cプログラマは多分どの言語も理解できる。
    CプログラマはCしかしらないということない。

10 仕様書無しさん [] 2010/09/15(水) 20:46:07 ID: Be:
    Cプログラムって覚えるの難しいかな? 

11 仕様書無しさん [sage] 2010/09/15(水) 20:57:46 ID: Be:
    仕事こなせるまでのレベルになるのは難しいだろうねぇ。
    Cプログラムだけ知ってれば仕事になってたのは昔の話。 

17 仕様書無しさん [] 2010/09/17(金) 00:12:42 ID: Be:
    ゲームはいまだにC。
    Java上がりはやばすぎる。 

18 仕様書無しさん [sage] 2010/09/17(金) 10:23:19 ID: Be:
    まぁWindowsとかでGUIのあるアプリならC++かC#だな。 

19 仕様書無しさん [sage] 2010/09/17(金) 19:33:08 ID: Be:
    Windows ()笑 

20 仕様書無しさん [] 2010/09/17(金) 22:13:04 ID: Be:
    ポインタが理解できない奴はセンスがない 

21 仕様書無しさん [sage] 2010/09/18(土) 01:49:55 ID: Be:
    >>14
    case ...
    ...
    esac

    とかな。

    >>17
    デバドラとか、組込みもCだな。C++ですらない。

    >>20
    同感。
    C++とかJavaって、要するにポインタが理解出来ない文系コピペ厨
    にプログラマごっこさせてあげるための玩具に過ぎない。 

22 仕様書無しさん [sage] 2010/09/18(土) 02:00:59 ID: Be:
    >21
    ちょっとまて、Javaはともかく、ポインタ理解して無いC++PGは全く使い物にならんだろ。 

23 仕様書無しさん [sage] 2010/09/18(土) 03:27:48 ID: Be:
    ポインタの何が分らないのかわからない。 

24 仕様書無しさん [] 2010/09/18(土) 07:44:24 ID: Be:
    >>23
    2つ以上の手続きがあると、脳がパンクする人間がいるってこと。

    変数Aに1を代入する。
    変数Aから1を取り出す。

    という1文は理解の範囲だが、

    変数Aにある値をアドレス値としてみなす。そのアドレス値として示されている番地にある値を指定した型のデータとして取り出す。
    変数Aにある値をアドレス値としてみなす。そのアドレス値として示されている番地にあるものはプログラムコードなので、そこから実行する。

    という文になると頭が理解を超える。
    英語でいえば、関係代名詞が出てきたら、よくわからなくなっちゃったって感じかな? 

29 仕様書無しさん [sage] 2010/09/18(土) 17:02:40 ID: Be:
    型はプラグとソケットみたいな、明確な代用イメージを想像しやすいのに対して、
    ポインタと配列の違いとかは、明確な代用イメージを想像しづらいのが原因かも。
    ポインタをきちんと扱ても、↓程度の絵しか描けない奴が多いと思うし。

    ※めんどいのでズレは放置

      ├────┤
    ┌─┼アドレス│←ポインタ
    │ ├────┤
    │ :    :
    │ ├────┤
    └→│データ |←配列
      │    |
      │    | 

30 仕様書無しさん [sage] 2010/09/18(土) 18:55:42 ID: Be:
    プラグとソケットとか始めて聞いた。キャストとかどう教えるんだろ?
    代用イメージ使うと、ろくなことにならないからやめた方がいい。 

31 仕様書無しさん [] 2010/09/18(土) 19:08:23 ID: Be:
    意味がわからない。
    のと。
    目的がわからない。
    のがあわさると、ダメなやつは絶対に覚えられない。
    数学でいえば、微分積分なんて社会で使うのか?と思ってしまうのと同じ。
    実際は、使えれば武器になるが、どんなときに使えるのかイメージがわかない.

    だから、
    すぐに「わからない」で片づけてしまう 

32 仕様書無しさん [] 2010/09/18(土) 19:17:04 ID: Be:
    >>31
    > ダメなやつは絶対に覚えられない。
    そういう奴は無視しておいて問題ない。
    学校の授業なら、実態はどうあれ一定数の生徒が一定の理解をしたっていう
    体裁を取らないといけないだろうけどね。 

33 仕様書無しさん [sage] 2010/09/18(土) 19:31:15 ID: Be:
    >29
    >キャストとかどう教えるんだろ?

    プラグの形状を作り変える。
    ただしそんな事したら各種保障が受けられなくなるし、
    完全に用を成すわけじゃないから極力避けるべき。
    まぁ、ソケットとプラグの例は、適当に思いついた事を述べたに過ぎんので
    例えが下手とかは甘んじて聞き入れる。


    あと下手な代用イメージの提示は返って有害というのは分かるが、
    現実世界の何かに例えるってのは常套手段だし、
    そもそもきちんとした例が無いから、下手な例えが蔓延るのではと。 

34 仕様書無しさん [sage] 2010/09/18(土) 19:48:19 ID: Be:
    ストア、ロード、ジャンプ、インデックス参照の単純なマシンの概念があれば解りそうなもんだがなぁ… 

35 仕様書無しさん [sage] 2010/09/18(土) 19:49:41 ID: Be:
    >34
    その辺の概念を抽象化する必要が無いなら、そもそもCとか要らんでそ。 

36 仕様書無しさん [sage] 2010/09/18(土) 19:54:33 ID: Be:
    >>35
    かつて高級マクロアセンブラとか揶揄されたり。 

37 仕様書無しさん [sage] 2010/09/18(土) 21:02:14 ID: Be:
    >>29
    ポインタ配列とかハンドル型の説明はどうするんだろう 

38 仕様書無しさん [sage] 2010/09/18(土) 21:18:47 ID: Be:
    アドレス型は、それをアドレスとして扱うというだけで
    使われるまでは単なるデータなのに。
    アドレス配列とか、どこか特種空間に格納されているとでも思っているのかしら。 

42 仕様書無しさん [sage] 2010/09/18(土) 23:00:04 ID: Be:
    型 = ソケットとプラグの形状
    ポインタ変数 = 延長コード

    ・延長コードは、電源と、電気を使う機器を間接的に繋ぐもの。
    ・延長コードは、電源や機材から引き出す事も可能。
    ・延長コードを介することで、データを他の部屋に渡すのが容易になる。
     (電源も機器も持ちまわる必要が無い)
    ・延長コードから電力を得る事は可能だが、先が繋がっていなければ当然電気は来ない。
     延長コードはあくまで何処にささってるかの情報しか持っていない。
     電源を供給するのはあくまでその先にあるもの。
    ・延長コードは、初期状態では得体の知れない電源に刺さってて、
     下手につなぐと機器が壊れるから、安全の為にまず抜く(0を代入)のが望ましい。 

44 仕様書無しさん [sage] 2010/09/18(土) 23:12:35 ID: Be:
    >>42
    うおおやめてくれええ
    かえってわからなくなるううう 

45 仕様書無しさん [sage] 2010/09/18(土) 23:18:40 ID: Be:
    ていうかポインターを理解しているか理解していないかの話はスレ違いだろ
    ばかばかしい 

47 仕様書無しさん [sage] 2010/09/18(土) 23:57:46 ID: Be:
    だからなんで余計わかりにくくするたとえを持ってくるのか
    それが本気でわかりやすいと思ってるんだろうか 

50 仕様書無しさん [sage] 2010/09/19(日) 00:37:04 ID: Be:
    ポインタなんて、たとえ話にする必要はない。
    メモリの管理方法と、その表現方法なんだから。
    これが、理解できないやつは、Cは触るな。 

51 仕様書無しさん [sage] 2010/09/19(日) 00:38:36 ID: Be:
    >47
    そう思うなら、例えなくても良いから図解してみてくれ。 

52 仕様書無しさん [sage] 2010/09/19(日) 00:39:21 ID: Be:
    ポインタを理解できたことがよほど嬉しかったんだろうな 

53 仕様書無しさん [sage] 2010/09/19(日) 00:40:04 ID: Be:
    >>51
    スレ違い。失せろ。 

54 仕様書無しさん [sage] 2010/09/19(日) 00:44:55 ID: Be:
    >>51
    ほら、お前のために立ててやったぞ。
    こっちで思う存分やれ

    「ポインタを理解できないプログラマはもういらない」
    http://hibari.2ch.net/test/read.cgi/prog/1284824618/

55 仕様書無しさん [sage] 2010/09/19(日) 00:50:44 ID: Be:
    >52
    いや、どちらかと言うと良さげな例えを思い付いたから、投下した。

    >53
    失せます。

    >54
    御免。 

56 仕様書無しさん [sage] 2010/09/19(日) 01:46:13 ID: Be:
    ++はもう無くなっていいと思うけどCは残るんじゃないの? 

57 仕様書無しさん [sage] 2010/09/19(日) 03:50:09 ID: Be:
    >51
    例えがどうのこうの言ってるところでなんで引き合いに出すモノが図なのよ
    その辺りからセンスねえわ 

58 仕様書無しさん [sage] 2010/09/19(日) 04:41:51 ID: Be:
    >>56
    今更Cはないわー。
    まともなコンパイラがある場合は、もう大体C++だよ。 

59 仕様書無しさん [sage] 2010/09/19(日) 05:24:03 ID: Be:
    >57
    下手な例えをわざわざ出したのは、これなら図にしやすく
    イメージしやすいと思ったからです。(>29からの流れを読んで下さい)
    だから、そんなに言うなら他の「図示できる」例えを出してよ、と述べたのです。

    まぁ実際、下手だと思い直したので>51は撤回してきます。
    以上失礼しますた。 

65 仕様書無しさん [sage] 2010/09/19(日) 09:25:18 ID: Be:
    >>56
    ++は言語仕様が多機能化し過ぎたな。おかげで使われ方が複雑になった。簡素なコードを目指した筈なのにどうしてこうなった… 

69 仕様書無しさん [sage] 2010/09/19(日) 15:31:14 ID: Be:
    C++がもっとカッコよければ… 

70 仕様書無しさん [sage] 2010/09/19(日) 16:41:07 ID: Be:
    C++は格好いいと思うよ
    ただCの軽快さを奪ってる 

なんかスレの方向がずれていってるような。

■_

Y にいちばんうけました。


The Haskell Alphabet « blog :: Brent -> [String]

The Haskell Alphabet

Here’s a little something I’ve been working on in bits of spare time here and there 
for the past five months or so:

The Haskell Alphabet

I seem to recall it was inspired by a conversation in #haskell around the beginning of 
April, but I can’t find it in the logs. In any case, enjoy, and feel free to post 
comments, suggestions for additional links, or alternate stanzas as comments here! 

■_ Is Good Code Enough for a Project to Be Successful?

InfoQ だから待っていれば訳されるかなあ


InfoQ: Is Good Code Enough for a Project to Be Successful?

Is Good Code Enough for a Project to Be Successful?

Posted by Abel Avram on Sep 16, 2010

Simon Brown, a developer, architect and author, considers that it takes a lot more 
than just good code to create a successful project. In his presentation, Good Code Isn’
t Enough, Brown goes through all the elements necessary for a project’s success, from 
upfront design to operation documentation.

Brown considers that good code is a good place to start, but to succeed one needs to 
know what is to be built, what is released and that it works.

To know what to build, one needs a set of requirements. After the requirements are 
collected, a “big picture” is to be drawn, the software architecture which 
represents the current understanding of the product to be built. Then the big problem 
needs to be decomposed into smaller solutions showing the components, the interactions 
between them, and the services used. Then, estimates can be made on how much it will 
take to implement the solution. All of that, from determining the requirements to 
making estimates should take only 1-2 days, according to Brown. This is not a one man’
s job, this should be done collaboratively with all those directly involved in order 
to cross-pollinate ideas.


略

Does the architecture work? Everything is useless if the resulting solution does not 
work as desired. Brown considers that for a solution to work it has to satisfy the 
following requisites:

    * it satisfies the architectural drivers: the functional and non-functional requirements,
      the environmental constrains and the principles adopted

    * it provides a solid foundation for the code, one that one can built upon

    * it provides a platform for solving the initial business problem the solution tries
      to address

(略)

■_


Can we stop overvaluing PEP-8? : Python

Can we stop overvaluing PEP-8? (self.Python)
(我々は PEP-8 の過大評価を止められるだろうか?)


If we're going to be giving out negative marks for projects not following PEP-8, we 
might as well give Reddit negative marks for not following XHTML 1.0 Transitional 
standards. Oh snap...

This is nothing new, but it's kind of ridiculous to still see comments like "this 
would be better if it followed PEP-8" or "I don't get why people don't 
follow the standard" (made up comments, but close enough to what I've seen).

The first sentence of PEP-8 states, with added emphasis...

    This document gives coding conventions for the Python code comprising the standard 
    library in the main Python distribution.

That means exactly what it says. It is not intended to be some language-wide standard 
that everyone must follow in every project that uses Python under the sun. There is no 
canonical C++ coding standard that all C++ ever written has to follow. C# isn't bound 
by law to be written the same by everyone around the world. Perl...well, nevermind.

Personally, I think PEP-8 is quite a fine standard, one I choose to use in my personal 
work, and one I'm bound by for the work I do within Python itself (additionally, see 
PEP-7). If someone wants to make the next great web framework use ALL CAPS, go right 
ahead, it'll probably still be cool.

The second section of PEP-8 states, again with added emphasis...

    Consistency with this style guide is important. Consistency within a project is 
    more important. Consistency within one module or function is most important.

Remember those projects "not following PEP-8"? Well, PEP-8 still loves them. 
The stdlib's own unittest package is fine by PEP-8, although many would have you 
believe otherwise. The API is very widely used and changing it to more strictly follow 
PEP-8 would be damaging, but its consistency over the lifetime of the package 
(previously just a module) gives it a thumbs up.

Right after that, PEP-8 states...

    But most importantly: know when to be inconsistent -- sometimes the style guide 
    just doesn't apply.

I've read comments stating that pywin32 and wmi would be better if they followed PEP-8. 
For a second, lets forget a previous statement that it's a standard for the internals 
of Python and not a global standard. If we open it up to be a global standard, those 
packages are wrappers of Win32 functionality, and as such, should be as close as 
possible to direct mirrors of the Win32 APIs they cover. Changing WaitForSingleObject 
to wait_for_single_object gains absolutely nothing. In fact, it becomes less useful, 
because tracking down the documentation for the underlying call becomes more difficult, 
among other things.

So, can we please give up the "PEP-8 or die!" mentality? If you want to 
follow the standard, great, high-five to you. If you want to name your classes with 
lower case and use camel case method names, great, high-five to you as well.


■_ slice → lol

ついった経由で知ったのですが、 "slice context" was too overloaded and imprecise; なので slice という用語を lol に変えることにしたとか何とか。


Commit b962f00fdcc6e10ad220e50f5ff38545b578cce1 to perl6's specs - GitHub

refine tree contexts; slice context -> lol context The old term "slice 
context" was too overloaded and imprecise; we will now talk about slicing only 
when discussing multi-argument subscript operations. Various confused levels of 
treeness may now be distinguished with the .tree method, and the list-of-lists type 
that used to be "Slicel" is now "LoL". The old "slice" 
contextualizer is now "lol", and is more or less equivalent to 
.tree(*.list).LoL, that is do 1 level of tree mapping to list. Note these are now 
lists of List, not of Seq. That's the only substantive change (along with the .tree 
method). Almost everything else is just refining the terminology.


Commit b962f00fdcc6e10ad220e50f5ff38545b578cce1 to perl6's specs - GitHub
-The C<slice> contextualizer
+The C<lol> contextualizer

-    slice foo()
+    lol foo()


-Forces the subsequent expression to be evaluated in slice context.
-(Slices are considered to be potentially multidimensional in Perl 6.)
-A list of C<Parcel>s will be transformed into a list of C<Seq>s.
-(C<Seq> objects do not autoflatten themselves in a list unless
-explicitly dereferenced.)

+Forces the subsequent expression to be evaluated in list-of-lists
+context.  This is typically used to form a multidimensional slice.
+A parcel potentially containing subparcels will be transformed into
+a list of lists, specifically of type C<LoL>.

-    (<a b>; 1,2).cross.slice.map { .reduce(&[~]) }
+    (<a b>; 1,2).cross.lol.map { .reduce(&[~]) }

-    (<a b>; 1,2; 3,4).cross.slice.map { .reduce({$^a ~ $^b + $^c}) }
+    (<a b>; 1,2; 3,4).cross.lol.map { .reduce({$^a ~ $^b + $^c}) }

-    (<a b>; 1,2).zip.slice.map { .reduce(&[~]) }
+    (<a b>; 1,2).zip.lol.map { .reduce(&[~]) }

-    (<a b>; 1,2; 3,4).zip.slice.map { .reduce({$^a ~ $^b + $^c}) }
+    (<a b>; 1,2; 3,4).zip.lol.map { .reduce({$^a ~ $^b + $^c}) }

-    for slice(zip(@names; @codes)) -> [$name, $zip] {
+    for lol(zip(@names; @codes)) -> [$name, $zip] {
 

■_

2010年09月18日

■_

・センゴク外伝 桶狭間戦記
豪雨が止んだそのとき、目の前にいたのは…! また一週間待つのか~っ

・プログラミングコンテスト本
確保~~~っ

■_ 書評でなく感想

ようやくにも。

まずは目次。


書籍情報―プログラマーの心得
■ 主な内容 ■
 CONTENTS

 まえがき

 第1章 プログラマーとは
 プログラマーの仕事
 なぜプログラマーは必要か

 第2章 プログラマーになるには
 プログラマーの資質
 文系でもプログラマーになれるか
 何を勉強しておけばよいか
 資格は必要か

 第3章 プログラマーになったら
 プログラマーは重労働
 仕事の形態
 仕事の内容
 仕事のパターン
 効率的な仕事の方法
 問題はいかに解決すべきか

 第4章 ステップアップするには
 思考力
 プログラミング能力
 コミュニケーション能力
 資格取得

 第5章 プログラマーの将来は
 新しい分野
 仕事の仕方は変わるか
 プログラマーに未来はあるか

 [付録]用語集
 索引

読んでいて違和感が消えませんでした。 ↑のページの頭に


≪元プログラマーの筆者が語る、『プログラマーの、過去・現在・未来』≫
 これからプログラマーになる人が抱く疑問:
「自分はプログラマーに向いている?」「文系でも大丈夫?」「何を勉強しておけばいい?」
「プログラマーになったらどのように働くことになる?」
 現役プログラマーが感じる疑問:
「プログラマーとしての実力を向上させるにはどうすればいい?」「将来のため、どんな技術を身につけておくべきか?」
 そして、すべてのプログラマーの疑問:「プログラマーに未来はあるか?」

・・・その答は、ここにあります。
*
 「プログラマー」は、現代のコンピュータ社会を支える、重要な仕事となっていますが、本書
は、これからプログラマーになろうとしている人や、現在プログラマーとして働いている人のた
めに、必要な“知識”や“心得”をまとめたものです。

  

必要な知識や心得がまとまっているとはちょっと思えませんでした。 目次の字面を見ているとそれらしい雰囲気はあるんですが、 読んでみるとたとえばこういう部分があります。

p168

「プログラミング言語」は、特定の用途のために開発されてきました。
すなわち、個々の「プログラミング言語」には、固有の特徴があります。
そこで、「ソフトウェア」の開発言語には、適したものが選択されます。

用途別に「プログラミング言語」を分類すると、次のようになります。

・事務処理言語
・科学技術計算言語
・汎用言語
・オブジェクト指向言語
・人工知能言語

「事務処理言語」は、会社業務などの事務処理のための言語です。代表的な
「事務処理言語」としては、「COBOL」があります。

「COBOL」は、つい最近まで「ソフトウェア」の中心でした。また、「COBOL」は
「データベース」(database)の構築にも用いられます。今でも、「COBOL」によって
開発された膨大な「ソフトウェア」が残っています。

「科学技術計算」は、科学や工学などで必要な、高精度で高速な計算を行うための言語です。
代表的な「科学技術計算言語」としては、「FORTRAN」があります。

「汎用言語」は」、どのような目的でも一般的に使える言語です。代表的な「汎用言語」
としては、「C言語」や「Java」があります。最近の「ソフトウェア開発」の傾向としては、
「汎用言語」を」使うケースが多いようです。

「オブジェクト指向言語」は、「オブジェクト指向」という「ソフトウェア」の方法論に
基づいた言語です。「汎用言語」としては「C++」や「Java」があります。
なお、「オブジェクト指向」とは「オブジェクト」(もの)を中心にして
世界を記述する考え方です。

「人工知能言語」は、「人工知能」のための言語です。「人工知能言語」としては。
「LISP」や「PROLOG」があります。
なお、「人工知能」(Artificial Intelgence: AI) とは、コンピュータに
人間の知的行為を行わせる分野で、「自然言語処理」「推論」「知識表現」
などを研究します。

ここで紹介したのは、主要な「プログラミング言語」のみです。
これらをすべてマスターできればベストですが、まずは「汎用言語」をマスターしましょう。

その次には、将来の仕事で役に立ちそうな言語を勉強してください。
また、今後も、新しい言語が登場すると思われます。そのような情報には
注意してください。
  

…これは1980年代の本だったんでしょうか? 「人工知能言語」とかいうくくりも(2010年の時点ではもはや) 意味不明ですし、 科学技術計算よりは、Web 関連の方がよっぽど馴染みがあるだろうし、 COBOL でデータベース構築って…

んで、 ここで無視された「関数言語」もしっかり別のところでフォローされているんですが、

p194
新しい分野

ここでは、今後が有望とされている新しい分野のいくつかを紹介します。
ここでは、比較的分かりやすいものだけを取り上げています。もちろん、将来、
ここに挙げていない、新しい分野が重要になる可能性もあります。

これらの分野を先取りで勉強していると、将来プログラマーとして仕事をする上で
役に立つと考えられます。すべての分野に精通するのは難しいでしょうが、
1つぐらいは理解しておきたいものです。

・ソフトウェア工学
・モバイル/コンピューティング
・マルチメディア
・オントロジー
・関数プログラミング
・エージェント
・組み込みシステム


「関数プログラミング」(Functional Programming)は、数学における「関数」の
概念に基づく「プログラミング・パラダイム」です。
「関数プログラミング」の歴史は、研究レベルでは「LISP」に代表されるように
かなり古いですが、実用レベルで注目されたのは、つい最近のことです。

関数プログラミング言語 「F#」(エフ・シャープ)を、マイクロソフト社が
「Visual Studio」の言語として採用したことで、さらに注目度が上がったようです。
しかし、「関数プログラミング」の理論は、従来の「プログラミング・パラダイム」の
理論に比べて、はるかに複雑です。

「関数プログラミング」では、厳密な理論的基礎をもつので、
「ソフトウェア」の世界にも大きな影響を与えるでしょう。また、
「オブジェクト指向」などの既存の技術との融合なども考えられています。

しかし、誰もが「F#」をマスターできるとは思えません。
「関数プログラミング」は、それだけ難しいのです。
さらに、表面的に勉強するだけでは役に立ちません。
逆に言うと、「関数プログラミング」「F#」などに精通することができれば、
「プログラマー」として重宝されるでしょう。

  

…えーと?

巻末の見返しに、著者略歴があるんですけど

1960年 東京都生まれ、
東京理科大学理工学部経営工学科を卒業後、富士通(株)でプログラマーとして
COBOL、FORTRAN などのプログラミング言語の開発に従事。

その後、帝京技術科学大学、帝京平成大学で講師、筑波大学で客員教授を務める。
工学博士。

現在、シー・リパブリック(株) アドバイザー

富士通をいつ離れられたのかとかわかりませんし、 「元プログラマー」と紹介ページにはありましたが それならそれでこれからの人に対して心得やらを語れるのでしょうか という疑問が消えませんでした。 プログラマ現役続行の柴田さんあたりがそう言われるのなら納得するのですけど。

これを書くために再度読み返してなんか疲れました ○| ̄|_

■_ 今日の丸投げ


Shemeで掛け算の関数 | OKWave

関数muliを定義しなさい。ただしzero,inc,dec,add,mulはすでに定義されて、
muliはmulの中から(mulli x y (zero))と呼ばれる。
なんとなくわかるかもしれませんが、
(define (dec n) (cdr n))
(define (zero) (quote()))
(define (add x y) (if (null? y) x (add (inc x) (dec y))))
となっています。

この問題で
(define muli (lambda (x y n) ((if (null? y) n (muli x (dec y) (add n x))))))
と考えたのですがうまくいきません。
ご教授よろしくお願いします。

inc はどうなってんだろ? cons でもするのか?

■_


関数型プログラミング言語Haskell Part12 
802 デフォルトの名無しさん [sage] 2010/09/18(土) 03:34:56 ID: Be:
    全部10以上かしらべるのに
    all ((<=)10) [10,20,30] よりは
    all (flip (>=) 10) [10,20,30] が直感的だけど
    all (`>=` 10) [10,20,30] こうできれば良いのに 

803 デフォルトの名無しさん [sage] 2010/09/18(土) 03:48:18 ID: Be:
    all (>= 10) [10,20,30] 

804 デフォルトの名無しさん [sage] 2010/09/18(土) 03:49:16 ID: Be:
    >>802
    落ち着け。 

805 デフォルトの名無しさん [sage] 2010/09/18(土) 13:25:31 ID: Be:
    all (10 <=) [10, 20, 30] の方がより直感的に感じるが 

806 デフォルトの名無しさん [sage] 2010/09/18(土) 13:39:04 ID: Be:
    >>805
    対称的になってて見栄えがいいとは思う

    さらに
    (10 <=) `all` [10,20,30]
    とかやると逆に`all`の存在で対称が崩れてるような感じになって見栄えが悪く感じる
    直感って本当にわがままだな、わがままな俺にそっくりだ 

Haskell のカッコの使いどころ難しい。 使いどころというか、自分の思っている使い方(目的)と違うというか?

■_ キャスト?


Enum.GetValues で列挙値を列挙:窓際プログラマーの独り言 -C#の話題を中心に

Enum.GetValues で列挙値を列挙  

enum MyEnum { A,B,C,D,E }

という enum に対して、

0:A 1:B 2:C 3:D 4:E

と表示したいときに、どんなコードを書きますか?
以下、とあるところで見つけたコード。

private void button1_Click(object sender, EventArgs e) {
    for (int i = 0 ; ; i++) {
        string j = ((MyEnum)i).ToString();
        if (i.ToString().Equals(j)) {
            break ;
        } else {
            Console.Write(i);
            Console.Write( ":" );
            Console.WriteLine(j);
        }
    }
}

ネットにはこんなコードが溢れていますが、
目にしてしまうと、書き変えなくては気が済まない悪い癖がでてしまいました。
※ あえて、URLを載せるのは控えさせていただきます。

僕なら、こんな風に書きます。

private void button2_Click(object sender, EventArgs e) {
    foreach (var val in Enum.GetValues(typeof(MyEnum))) {
        Console.WriteLine("{0}:{1}" ,(int)val,val);
    }
}

string j = ((MyEnum)i).ToString(); とか (int)val で望みの型での値が取れるのがなんか不思議。

この記事へのコメント

Console.WriteLine("{0:d}:{0:g}", val);
でOK.

Posted by BLUEPIXY at 2010年09月18日 01:44

おお、素晴らしい。
Posted by Gushwell at 2010年09月18日 09:40

g ってなんだろう? printf の書式指定のとは違うだろうし。

■_ 本日の巡回から

2010年09月17日

■_

・回転寿司
回転寿司が入っていたけどその店がつぶれて空き室になったところに別の回転寿司が最近 入ったのだけど、ここ数日営業している形跡が見えなくて世の中の厳しさを感じる今日のこのごろ。 貼り紙とかもないんだよなあ。

■_ で

こういう感じのデータがあったわけですよ (とあるソフトの出力ですが、大抵は CSV で吐かせてます)。

店名オーダー一月二月三月四月五月六月
Aaaaa95852.6615402.2298144.5392703.2529846.1958444.21
Bbbbb95104.9840158.0822662.3523873.9018923.9553100.59
Ccccc96450.8167187.5087341.3175625.6177001.9586825.56
Ddddd27545.178630.3764193.7325408.9434973.1445941.16

ところが、これは「クロス集計」するにははななだ都合が悪い形式だったりします。 クロス集計するには

店名オーダー小計
A一月aaaa62442.02
B一月bbbb88974.00
C一月cccc36917.11
D一月dddd59448.24
A二月aaaa62442.02
B二月bbbb88974.00
C二月cccc36917.11
D二月dddd59448.24
A三月aaaa62442.02
B三月bbbb88974.00
C三月cccc36917.11
D三月dddd59448.24

こういった形式でないと Excel やらのクロス集計機能が食ってくれません。

ということで最初は VBAを使って自前でクロス集計をしたりとかいろいろやってみたのですが、 一番お手軽なのは Access に読み込んで次の SQL で「元データをばらす」やり方かなあと。 これをExcelに食わせるもよし、Access自体でクロス集計するも良し。


SELECT '1月' AS 月,売上.[オーダー内容], 売上.[1月] AS 月小計 FROM 売上
UNION ALL
SELECT  '2月' AS 月, 売上.[オーダー内容], 売上.[2月] AS 月小計 FROM 売上
UNION ALL
SELECT  '3月' AS 月,売上.[オーダー内容], 売上.[3月] AS 月小計 FROM 売上
UNION ALL
SELECT  '4月' AS 月,売上.[オーダー内容], 売上.[4月] AS 月小計 FROM 売上
UNION ALL
SELECT  '5月' AS 月,売上.[オーダー内容], 売上.[5月] AS 月小計 FROM 売上
UNION ALL
SELECT  '6月' AS 月,売上.[オーダー内容], 売上.[6月] AS 月小計 FROM 売上
UNION ALL
SELECT  '7月' AS 月,売上.[オーダー内容], 売上.[7月] AS 月小計 FROM 売上
UNION ALL
SELECT  '8月' AS 月,売上.[オーダー内容], 売上.[8月] AS 月小計 FROM 売上
UNION ALL
SELECT  '9月' AS 月,売上.[オーダー内容], 売上.[9月] AS 月小計 FROM 売上
UNION ALL
SELECT  '10月' AS 月,売上.[オーダー内容], 売上.[10月] AS 月小計 FROM 売上
UNION ALL
SELECT  '11月' AS 月,売上.[オーダー内容], 売上.[11月] AS 月小計 FROM 売上
UNION ALL SELECT  '12月' AS 月,売上.[オーダー内容], 売上.[12月] AS 月小計 FROM 売上;

つーか R でやらせてくれ ○| ̄|_

■_ 単位

元の議論の経緯も知らないんだけど、これどっちに決めて何かしらの問題出るし 誰もが納得できる形にはできないんじゃなかろうか。



Re: getting wide character related matching info out of regex?

On 09/15/2010 08:25 AM, Aharon Robbins wrote:

    Hi all.


    A discussion came up recently that in order for gawk's match() function
    to set RSTART and RLENGTH in terms of characters and not bytes


May I first of all ask for a pointer about this discussion? I understand that this is 
to make sure that substr() complies with POSIX:

"Return the at most n-character substring of s that begins at position m, 
numbering from 1. If n is missing, the length of the substring will be limited by the 
length of the string s."

Honestly, it seems a gratuitous change to me, going against the existing practice of 
pretty much every awk implementation around. Are you sure you want to go through this 
burden??

Paolo

安直には関数(や手続き)を二本立てにしちゃうことだけど。

■_ 本日の巡回から

■_ 飽きた

本日の投げっぱなし(^^;


The Twilight of Java ≪ Cutting Edge Computing

Trends in Computer Software and Strategy

The Twilight of Java
Java の黄昏

Posted by Peter Varhol in Software development, Software platforms.


As a participant in the development scene for a number of years, including as a
software developer, product manager, evangelist, and technology journalist, it's sad
to see this emerging legal fight between Google and Java's new owner Oracle.  And it's
a disappointment that Google won't be participating in the upcoming Java One.


I've heard so many conflicting stories here that I have no opinion on who is in the
right.  There are a lot of factors to consider.  Java's previous owner, Sun
Microsystems, placed much (but to my knowledge, not all) of the Java platform into the
Open Source community, using the GNU General Public License, or GPL.  That license
requires that any application that “staticly links” to Java also be covered by the
GPL, and become open source.  The GPL also enables users to create derivative works
(read: alternative versions of Java) as long as those works are also made available
using the GPL.

そこには考慮すべき数多くの  factor があります。
Java の preivous owner である Sun Microsystems は
GNU General Public License (GPL) を用いました。
Java に“静的リンク”されたすべてのアプリケーションが
やはり GPL によって cover され、オープンソースになることを
このライセンスは要求します。
GPL はまた、GPL の使用を可能としている限りにおいて
ユーザーが derivative works を作成することを可能にします。


That was always one of the dangers inherent in releasing Java as open source, that
others would offer alternative implementations and the language and platform would
splinter.  This would fatally damage the portability of the language (not that it was
fully portable to begin with, or that portability is even an important consideration),
and Balkanize application development and commercial products.

このことは常に、他者が alternative な実装を行ったりだとか言語やプラットフォームを分裂
させてしまうといった、オープンソースとしての Java のリリースにおける本質的な危険のひと
つでした。

言語とプラットフォームが分裂してしまうでしょう。
そしてそれは言語の portablitity に対する fatally damege となり、
()
そしてそれは
アプリケーションの開発 (application development) と
商用製品 (commercial products) 
を Balkanize (分立・分裂状態にする) してしまうでしょう。



In practice, Java is a dynamic linking language, so the static linking proviso is a
neglible restriction to someone who wants to use Java yet retain the intellectual
property of their application.  However, if Google were extending Java in proprietary
ways, or changing a part of the language or platform not under the GPL, that may be
actionable.

現実には Java は動的リンクを行う言語ですから、Java は使いたいけれども自分たちのアプリ
ケーションの intellectual property は残しておきたい人にとって静的リンクのしばりは問題
にならないような制限です。けれども、仮に Google が proprietary な方法で Javaを拡張した
り、あるいは GPL に従わずに言語もしくはプラットフォームの一部を変更したならばそれは訴
訟という結果にいたるかもしれません。


Alternatively, Oracle may be trying to reassert a proprietary stake in Java, and using
Google to send a very clear message to the community.  Or it may simply be attempting
to stick it to Google, a company that has an annoying way of becoming a competitor by
redefining the market.

あるいは、Oracle は Java における proprietary stake の reassert を試みるかもしれませんし、
Google を使ってコミュニティに very clear なメッセージを送ったのかもしれません。
さもなければただ単に stick it to Google を attempting するために

市場を再定義することによって競争相手 (competitor) になる
annoying way を持つ企業である Google


I can't find a good and unbiased explanation of the issues involved, so I can't offer
my two cents on their validity.  To most in the Open Source community, Google has a
much better reputation than Oracle, but that may or may not have any bearing on this
conflict.

この issues を involve する good で unbiased な explanation を見つけられなかったので
their validity についての私見を述べることはできません。オープンソースコミュニティの大
部分にとっては、Google は Oracle に比べればよほど良い印象を持たれている (has a much 
better reputation) でしょう。しかしそれは、 this conflict に対して any bearing を持っ
ているかもしれないし持っていないかもしれません。


But I do know that this almost certainly portends the decline of Java as an
alternative to the Microsoft .NET platform and languages.  That's a shame, because
.NET and the C# language are based on similar principles as Java; while Microsoft had
no doubt been giving some thought to moving to a managed platform in the latter part
of the 1990s, the emergence of Java was undoubtedly the catalyst to actually do it.
Microsoft needs this kind of competition to push it to innovate.

なぜなら、.NET と C# 言語は、Java と同様の principles (原理・原則) に基づくものだから
です。1990 年代の後半に Microsoft が managed platform への移行を目論んでいた時期におけ
るJava の出現 (emergence) は、間違いなく (Microsoft が) 実際に行動するための catalyst 
(切っ掛け)でした。Microsoft は (managed platform への移行という) innovate を推進するた
めにこういった競争相手を必要としていたのです。


Java is likely in decline because this kind of infighting will take it down.  Despite
healthy competition in the Java community in the past (IBM comes to mind), there was
never the sense that the community was taking sides against each other.

この種の infighting は take it down するものなので Java は衰退するように思われます。
過去における Java コミュニティでの healthy competition にもかかわらず、
コミュニティが taking sides against each other
することは never the sense でした。


Sun was a poor excuse for a software company; it provided Java as a means to sell its
server and storage hardware.  The act of moving it to open source was an
acknowledgement of the fact that it couldn't successfully sell software.  Oracle, on
the other hand, is a very successful software company, and can almost certainly make
money selling Java.  But it has no reason to provide Java as a largely free service to
the software world at large.  I suspect that Oracle would rather have a less used and
highly profitably Java than a broad-based but unprofitable one.

Sun はソフトウェア企業の悪い見本でした。Java を、自分たちのサーバーやストレージといっ
たハードウェアを売り込むための手段として提供したのです。オープンソース化の動きは、彼ら
がソフトウェアをうまく売ることができなかったという事実を認めるものでした。一方 Oracle
は非常に成功しているソフトウェア企業であり、Java を売ることで利益をあげることがほぼ確実
にできるでしょう。


There's a lot of Java code out there, so the decline with be slow.  Regrettably, it
now seems inevitable.

Java で書かれたコードは大量に存在するので、その衰退は緩やかなものになるでしょう。
残念なことですが、今や衰退は inevitable (避けがたい運命) なように思われます。

Update:  One of my commenters says that Java is not JPL.  As near as I can find
(including http://en.wikipedia.org/wiki/Java_(programming_language), most of it is GPL.
 If anyone has a definitive reference, please post it in the comments.  Thanks.

2010年09月16日

■_

・十字軍物語
十字軍物語 1
買った。早速読み始める。 あー、なるほど。カノッサの屈辱とこうつながってたのか。 ってチェーザレでも最近出てきたな>カノッサの屈辱

■_

ここまでくると清清しい。か?(笑)


C言語の課題丸投げ | OKWave

5×5の魔方陣を作成するという課題なのですが、手順があります。

(1)配列を用意する

(2)配列を初期化(0クリア)する。

(3)配列添字にスタート位置をセットする。

(4)法則に従い、配列に魔方陣データをセットする

(5)配列を画面に表示する
 (二重ループ)

以上です。わかる方がいたらお手数ですが、ソースコードだけでいいので、教えてください。

お願いします。

投稿日時 - 2010-09-15 23:05:42
連想キーワード:

    * 魔方陣
    * ソースコード
    * 丸投げ
    * C言語
    * ループ

なんだ連想キーワードの「丸投げ」ってw

■_ vs

Python と F# のどちらを選べばよいでしょうかというお悩み。


Python vs F#: which language I should learn - Stack Overflow

Hey, I know this is an subjective question, but please don't vote to close it before I get the acceptable answer.

I'm a .NET programmer (somewhat experienced), and really want to learn a functional 
language. My preferred choices are F# and Python, and I'm really doubting about which 
one to choose. Please clear my doubts. I'm totally new with them both, so please tell 
me their benefits over each other, or why I should choose F#/Python.

Maybe I'm misleading, but Wikipedia says that:

    F# (pronounced F Sharp) is a multi-paradigm programming language, targeting the 
    .NET Framework, that encompasses functional programming as well as imperative 
    object-oriented programming disciplines.

and:

    Python supports multiple programming paradigms, primarily but not limited to 
    object oriented, imperative and, to a lesser extent, functional programming styles.

Thanks in advance.
I doubt you'll learn much of value from Python. It's a dynamically typed OO language 
with pleasantly lightweight syntax. Other than giving you even less protection (and 
speed) than you'd get from C#, you'll be writing the same programs, just in a slightly 
different dialect.

F# is a different beast altogether. It has a rich, statically checked, polymorphic, 
algebraic type system. It is mostly functional, which means it strongly encourages you 
to program declaratively and avoid side effects (such as assignment) wherever possible. 
This has several benefits:

    * the compiler will catch many more errors than you'll be used to;
    * your programs will be much shorter;
    * your programs will work first time (once the compiler has wrung out all
      the bugs it can find) about nine times out of ten, in my experience;
    * the compiler can typically generate much, much better code.

I usually reckon it takes an imperative programmer about a month to rotate their 
thinking into the functional style. The downside is that after you make the adjustment, 
the programming mainstream just feels rather primitive and awkward.

Go for it, it's eye-opening.
Here are some facts about the languages (I know more about F# so am likely to have 
bias) which may inform your decision.

    * F# ships inside Visual Studio and is a .NET language, so if you know that 
     platform/tools, it is an advantage for getting off the ground. Iron Python is a
     .NET Python implementation that also has some VS support as an add-in.

    * Both languages have REPLs. F# is compiled (even in the REPL it gets compiled on 
      the fly), so has good performance both as a compiled app and in the REPL. (Not sure 
      about Python.)

    * F# is 'more functional' by a variety of criteria, so if you really want 
      "functional", I would choose F# over Python for that reason alone.

    * F# is statically-typed. Python is dynamic.

    * Both languages are often used in science/math domains; I think Python is older 
      and has more (and more mature) numerics libraries.

    * You can use F# and Iron Python together in concert (I've seen a few blogs that 
      show basic demos of this) if you want to do both.

Haskell.

Sorry to throw another wrench into the discussion, but trust me, Haskell will help you 
learn F# a lot faster.

I learned F# first and then learned Haskell -- and found that it would have been a lot 
easier if I'd learned Haskell first.

F# is great, but it offers too many shortcuts, so you don't really learn as much. 
Python is great too, but again, it's a lot more imperative than F# is even, so you 
won't learn anything at all.
F#, definitely, if you want to stay in the .NET world.

Personally, I'd suggest Common Lisp as well as F#. Haskell is somewhat similar to F#; 
Lisp is not, not really.

F# is a strongly-typed, type-inferenced language with the default of immutable data 
(Much like Haskell). F# has the decided advantage of being pushed by Microsoft. F# is 
very much in the no-side-effect world.

Common Lisp has a somewhat looser type system (But not weakly typed), and its data is 
not immutable. It also does not guide you towards not having side effects.

Like the other chap, I don't think Python will offer you much in the 'mind-bending' 
arena (unless you really start digging around the internals), whereas F# will start to 
expand your mind from declaration one.

Python is not a functional language really. Although it has certain functional aspects 
(which make it much easier to work in, imho).

I would like to add some points for Python, in light of the unfavourable opinions given up.

   1. As rightly mentioned, it is useful to know different languages and styles to 
      gain more experience. If you are looking for a functional programming, F# is the
      one.

   2. However, the concept of variety extend to the libraries involved. F# doesn't 
      give you a lot of variety to the other .Net languages apart from a few immutable
      data structures. Python is a different language with a different standard library
      and data structures. I personally regard the selection of default data structures
      in Python as one of the finest in any language. Lists, dictionaries, heaps, deques,
      sets, bisection algorithm, etc. All that is available in a very usable and useful
      way which may serve to introduce you to new techniques that you can then use
      elsewhere. To demonstrate the effort being put in the language, the sorting
      algorithm used in Python is an efficient algorithm invented for Python (timsort)
      and is now also used in Java.

   3. If you want to expand your horizon and get outside of the .Net shell, Python 
      will be more useful.

   4. Python is dynamic and thus gives you less compile time protection than F#. The 
      question is when is this protection more useful. The simple answer is that if
      you have a clearly defined domain and your design is well specified then you
      can go for static language like C#. If you are more on the experimenting side
      then a more forgiving language is needed. F# is way better than C# in this regard
      due to its type inference, but there are still cases where the flexibility of
      Python duck typing is more useful.

   5. One case where the languages are different is in their object oriented design. 
      F# would look more like C#. Python has a different and more flexible design with 
      metaclasses among other additions.

   6. Did I say that the Python standard library is marvelous?

   7. All these are points that are currently valid. In the future, F# will likely 
      grow more libraries and given the growth in the .Net space will be even more 
      impressive. Python will become much more quicker due to efforts in different 
      directions including Cython, PyPy and unladen swallow.

My view: if you want to learn F# because it is functional then go for it. If you want 
to learn it because it is shorter, it typically isn't shorter than Python. If you want 
to learn it because it is compiled and thus the compiler will catch your errors and 
make your program work first time, then I am afraid you will be very much misinformed.

例によって適当に抜粋してます。

■_ 本日の巡回から

■_ SQL

クロス集計にかけるために、見やすくまとめられているデータをばらすなど。

SELECT '1月',売上.[商品名称], 売上.[1月]
FROM 売上
union all
SELECT  '2月', 売上.[商品名称], 売上.[2月]
FROM 売上
union all
SELECT  '3月',売上.[商品名称], 売上.[3月]
FROM 売上
union all
SELECT  '4月',売上.[商品名称], 売上.[4月]
FROM 売上
union all
SELECT  '5月',売上.[商品名称], 売上.[5月]
FROM 売上
union all
SELECT  '6月',売上.[商品名称], 売上.[6月]
FROM 売上
union all
SELECT  '7月',売上.[商品名称], 売上.[7月]
FROM 売上
union all
SELECT  '8月',売上.[商品名称], 売上.[8月]
FROM 売上
union all
SELECT  '9月',売上.[商品名称], 売上.[9月]
FROM 売上
union all
SELECT  '10月',売上.[商品名称], 売上.[10月]
FROM 売上
union all
SELECT  '11月',売上.[商品名称], 売上.[11月]
FROM 売上
union all
SELECT  '12月',売上.[商品名称], 売上.[12月]
FROM 売上

自分でやっておいてなんだがひでえw なんかうまいやり方あるのかなあ。

■_ 6つの

あとで訳…せるかなあ

6 traits of successful developers | Turnleaf Design
6 traits of successful developers

While perhaps easier to get into than it should be, software development is a 
difficult and demanding field to be successful in over a long period of time. A lot is 
asked of developers as we are often given nebulous business requirements and asked to 
make a functioning system. In my experience here are six traits all successful 
developers seem to poses.

1.Pupil (生徒、門人)



2.Mentor (メンター)


3.Flexible 柔軟性



4. Tester (テスター)


5. Farmer


6. Reporter



So there are six traits every successful developer should have. If you have 
suggestions for traits I should add or disagree with the ones I listed leave a comment.

2010年09月15日

■_

・ムダヅモ無き改革
なんとあの人がっ!

プログラミングコンテスト本、重版出来待ちにになりそうな気がしないでもない。 まあ初版一刷にはこだわらないし、急がないからいいのだけど。

みねこあさん最近忙しいのかなあ。

■_ 惜しい


UnicodeとUTF-8の違いは? その2 
284 デフォルトの名無しさん [sage] 2010/09/09(木) 22:02:09 ID: Be:
    そういやJavaってまだBOM付きUTF-8が処理できないんだっけ?
    java.exeの方は互換性が問題になるからともかく、コンパイラjavac.exeがNGなのは
    一体何の嫌がらせなのか。 

285 デフォルトの名無しさん [sage] 2010/09/09(木) 23:19:54 ID: Be:
    世の中のほとんどのプログラミング言語はガイジン(欧米人)が作ってるからですよ。
    日本だけを特別扱いするワケにはいかないんです。
    彼らにとって、日本は取るに足りない、地球の裏側の、世界地図の端っこの小さな小さな国
    でしかないんです。
    だからBOMなんてどうでもいいんです。
    嫌がらせとか、そんなんじゃないですよ。な~~んにも気にしてないだけですよ。
    問題意識が全くないんですよ。 

286 デフォルトの名無しさん [sage] 2010/09/10(金) 02:26:05 ID: Be:
    ソースコードBOM付きで保管する香具師って馬鹿なの?死ぬの? 

287 デフォルトの名無しさん [sage] 2010/09/10(金) 02:30:25 ID: Be:
    BOMと日本語になんの関係が。
    まぁ、メモ帳は死ね、と思うが。

288 デフォルトの名無しさん [sage] 2010/09/10(金) 02:49:43 ID: Be:
    >>285
    お前何も分かってねーな
    日本なんて中国の一部と思われてる
    まず国として認識されてない 

289 デフォルトの名無しさん [sage] 2010/09/10(金) 07:47:35 ID: Be:
    素直に英語つかえばいいやん 

290 デフォルトの名無しさん [sage] 2010/09/10(金) 08:32:55 ID: Be:
    >>286
    エンコーディングが明確になっていいじゃない。何か不都合でも?
    BOMのせいで親が死んだとか。 

291 デフォルトの名無しさん [sage] 2010/09/10(金) 10:14:48 ID: Be:
    同僚が過労死した 

302 デフォルトの名無しさん [sage] 2010/09/11(土) 00:07:17 ID: Be:
    BOMはクソ。

    ファイルを分割・結合するときに、いちいちテキストかバイナリかを識別
    せにゃならんの? 標準入出力とかパイプとか、何処から読まれて何処に
    書き込まれるか、そもそもテキストかバイナリかもわからんのに、BOMを
    付けたり外したりするのに責任を持つのは誰? 署名したいんだけど、対象は
    バイナリ列? それともBOM抜きテキストデータ?

    ……たかだかプリフィックス1つでこんだけ面倒くさくなるんだから、BOMなんて滅んでしまえー。 

303 デフォルトの名無しさん [sage] 2010/09/11(土) 00:59:22 ID: Be:
    >>302
    それはBOMに限った話じゃなくて、標準入出力でテキストファイルを処理することが問題というか、
    制限を覚悟しなければならないことじゃないの?
    例えばISO-2022で書かれた2つのファイルを結合するとして、最初のファイルがASCII以外で終わっていて
    次のファイルがASCII前提で始まってたらデータ壊れるでしょ。 

305 デフォルトの名無しさん [sage] 2010/09/11(土) 07:17:21 ID: Be:
    >>303

    たしかにテキストファイルの分割結合に関しては、BOMよりはISO-2022の方が
    やっかいだわな。

307 デフォルトの名無しさん [sage] 2010/09/11(土) 11:06:14 ID: Be:
    >>305
    バイトストリームとして扱える事が売りのひとつのUTF8にわざわざ始端だけつけて
    「付けても付けなくても良い」とか言う糞どうでも良い仕様のために常に余計なチェックを実装させられる
    好き嫌いの問題じゃすまねーよ
    得意げにストリームとして扱えない事が明白なエンコード持ち出して馬鹿じゃねーのお前

    世の中のBOMに対する実装だって、ほぼ全てが「BOMを適切に除外するための処理」でしかない
    除外されるためだけに存在するBOMって何なのマジで 

310 デフォルトの名無しさん [sage] 2010/09/11(土) 11:08:46 ID: Be:
    標準入出力でテキストファイルを処理することが問題って、どこの星の人間だよ 

311 デフォルトの名無しさん [sage] 2010/09/11(土) 11:17:19 ID: Be:
    現状としては(本来の目的は別として)
    BOMはShift_JISやEUCなど他のエンコードなどを見分ける目的で利用されている。
    Shift_JISやEUCがあってこそ、BOMの存在価値があるってことだ。
    システム全体がUTF8化されていて、通信やフロッピーやCDやUSBメモリーなど
    外部から入ってくるテキストもすべてUTF8なら、BOMはいらない。
    むかしならそれでいいだろう。
    だが今は21世紀だぜ?インターネットの時代だぜ?世界の国からこんにちわだぜ?
    「UTF8以外お断り。」ってワケにはいかない。
    いろんな文字を扱わざる終えない。
    だからUTF8識別文字としてのBOMは価値がある。 

312 デフォルトの名無しさん [sage] 2010/09/11(土) 11:26:44 ID: Be:
    UTF-8にBOMって要るんだっけ? 

313 デフォルトの名無しさん [sage] 2010/09/11(土) 11:34:28 ID: Be:
    BOMだけ見て終わりなんて、あらゆる状況で危険すぎて不可能
    よってBOMは邪魔なだけ 

315 デフォルトの名無しさん [sage] 2010/09/11(土) 11:40:09 ID: Be:
    結局エンコーディングなんざメタ情報が無ければ大体でしか分からん.
    偽りの安心感を得るためBOM付けるくらいならメタ情報を含むフレームを作れ.
    UTF-8の特性を根本から揺るがすBOMの推奨者は本当に馬鹿としか言えない. 

318 デフォルトの名無しさん [sage] 2010/09/11(土) 13:30:23 ID: Be:
    >>307
    ストリームとして扱えないのではなく、UTF-8はISO-2022同様、分割・結合が簡単にできません。
    ってだけですよ。BOMに限らずステートフルなテキストをリダイレクトで結合するなってこと。

    >除外されるためだけに存在するBOMって何なのマジで
    テキストファイル単体でエンコーディングがUTF-8であることが(事実上100%)わかるんですよ。
    実用上もの凄いメリットです。

    本来>>315の言うとおりメタ情報で管理するべきなのだろうけど、現代のOSもファイル交換
    プロトコルもテキストファイルにメタ情報付ける仕組みが無いですし。 

319 デフォルトの名無しさん [sage] 2010/09/11(土) 13:38:00 ID: Be:
    >>318
    > テキストファイル単体でエンコーディングがUTF-8であることが(事実上100%)わかるんですよ。
    latin-1との誤判断は防げないと思うが 

320 デフォルトの名無しさん [] 2010/09/11(土) 13:47:36 ID: Be:
    BOMって

    Byte
    Order
    Mark

    のはずだよね。
    つまり最初からUTF-8のデータとして処理されることだけを想定してる。(当たり前だけど)

    エンコーディングを見分けるとか何とか、それって事実上そういう使い方もできる、
    ってだけの話で、それが本来の目的であるかのような議論っておかしいのでは? 

321 デフォルトの名無しさん [sage] 2010/09/11(土) 13:59:17 ID: Be:
    >>311
    本当に識別文字として使っていいの?
    現状使われているどの文字コードでも、BOMと同じ並びのバイト列が最初に現れる可能性はないと言える? 

322 デフォルトの名無しさん [sage] 2010/09/11(土) 14:03:23 ID: Be:
    >>320-321
    そういう文句はUTF-8の規格作った人に言わないと。 

323 デフォルトの名無しさん [sage] 2010/09/11(土) 14:03:40 ID: Be:
    >>320
    UTF-8のBOMはUTF-8のシグネチャーでしょ。16.8章には↓と書いてある。
    | this sequence can serve as signature
    | for UTF-8 encoded text where the character set is unmarked. As with a BOM in UTF-16,
    | this sequence of bytes will be extremely rare at the beginning of text files in other character
    | encodings. For example, in systems that employ Microsoft Windows ANSI Code Page 1252

    >>319,321
    Latin-1との誤判断については「極めてまれ」ってことにしたいみたいだね。 

324 デフォルトの名無しさん [sage] 2010/09/11(土) 14:05:55 ID: Be:
    >>320
    > つまり最初からUTF-8のデータとして処理されることだけを想定してる。(当たり前だけど)

    UTF-16。なんでそこまで分かっててそこ間違える。
    本来の使い方はエンディアンの識別だったけど、規格でUTF-8にも入れていいことになってる。

    けど識別に使うって言っても、BOMあり/なし混在してる以上はどっちにせよ
    BOMなしでも識別できないといけないんだし、BOMをつけるメリットは生かせない。
    ていうか、混在してる状況でつけるメリットが全然見えてこない。 

325 デフォルトの名無しさん [sage] 2010/09/11(土) 14:15:21 ID: Be:
    >>324
    「これはUTF-8だ間違えてくれるな」ってな思いで付けちゃいけないか?
    BOM有りUTF-8で保存した文書はブラウザでもテキストエディタでも文字化け
    することなく開いてくれるから付けることにしてる。 

326 デフォルトの名無しさん [sage] 2010/09/11(土) 15:10:47 ID: Be:
    signatureが付いてる時点でそれは「plain」textじゃないんだよ。
    数バイトでも本体とは別のメタデータなんだから、BOM付きtextというのはある種の構造化データだ。
    だから、plain text前提のツールではとっても困る。
    plain textのフリをして混じり込んでくるから余計に困る。 

327 デフォルトの名無しさん [sage] 2010/09/11(土) 15:15:50 ID: Be:
    >>306
    乳だけじゃ唐突だから単語っぽくしてみたんじゃないか?
    <!-- 入口 -->というのもあったな 

328 デフォルトの名無しさん [sage] 2010/09/11(土) 16:24:58 ID: Be:
    BOMってのはボム、つまり爆弾。掲示板が炎上するネタっていう意味だったんだよ。

    >>306
    何で「美」「乳」のうち「乳」を取るんだよおまいは。「美」でいいだろ。 

爆弾は bomb だよ… > 328 まあそれもわざとかもしれんけど。

■_ I Want A New Programming Language

まつもとさんがついったでリンク張ってたのでちょっと読んだ。

Kirk's Rants: I Want A New Programming Language
I Want A New Programming Language

Preface: This has nothing to do with the Oracle/Google Java lawsuit. Read this first.

Dear Lazyweb and Programming Language Inventors:

I want a new programming language. Although I seldom code these days for OpenGamma, 
I've wanted a new programming language for quite some time. I don't want an extreme 
language (in syntax or constraints); I don't want a purely experimental language; I 
don't want a faddish language. What I want is what Stephen Colebourne coins a 
"journeyman language."

What Is A Journeyman Language
(略)
These are all characteristics that New Programming Language should have.

(以下説明部分は略)

C-Style Syntax (C 形式の構文)
Garbage Collection (ガーベジコレクション)
Unambiguous Syntax (曖昧さのない構文)
Objects and Functions (オブジェクトと関数)
Closures (クロージャ)
Useful Concurrency System (有用な並行システム)
Object Immutability Services (オブジェクトの immutablity のサービス)
Properties (プロパティ)
Real Generics (本物のジェネリクス)
VM Operation (VM)
Stack Allocation/Memory Packing (スタックへの割り当てとメモリパッキング)
Fast Compilation and Runtime Linking (高速なコンパイルとリンク)
Convenient Native Code Integration
Modules (モジュール)
Partial Classes (パーシャルクラス)
Traits/Shared Code Blocks
Random Stuff
       * Duck Typing
       * switch on anything. Strings, integers, enums, whatever.
       * Fixed precision decimals as a first-class type.
       * Static typing, with var lvalue determination.
       * Matching between module/type/class/whatever name and file name, to aid in automatic refactorings.
       * A good standard library, like the Python one, that gives me both an least common
         denominator and greatest specific feature ability to access the OS' services.


Negative/Indifferent Features

These are all features that I don't care about, or actively want not in the language.
#あってもなくてもかまわないような機能

Reuse of existing libraries
Operator Overloading/Invention
Monads
Obsessive Terseness
Pointers
Abuse of your compiler
Faddish Language Features
Checked Exceptions
Throw Your Mom

■_ R

wrong, rogue and log : Andrew GelmanのRへの不満 経由で、

The future of R - Statistical Modeling, Causal Inference, and Social Science
The future of R
By Andrew Gelman on September 9, 2010 12:17 AM | 20 Comments

Some thoughts from Christian, including this bit:

   We need to consider separately

   1. R's brilliant library

   2. R's not-so-brilliant language and/or interpreter.

   Rのライブラリはすばらしいけれども、言語そのもの(の仕様)やインタープリター自体は
   そうでもない。

I don't know that R's library is so brilliant as all that--if necessary, I don't think 
it would be hard to reprogram the important packages in a new language.

I would say, though, that the problems with R are not just in the technical details of 
the language. I think the culture of R has some problems too. As I've written before, 
R functions used to be lean and mean, and now they're full of exception-handling and 
calls to other packages. R functions are spaghetti-like messes of connections in which 
I keep expecting to run into syntax like "GOTO 120."

単に技術的に動向というだけでなく、「Rの文化」そのものも問題を抱えている
R の持つ関数群というのは最低限度のもので、いまや例外処理やほかのパッケージの呼び出しの
塊になってしまっている。
#でいいのかしらん


I learned about these problems a couple years ago when writing bayesglm(), which is a 
simple adaptation of glm(). But glm(), and its workhorse, glm.fit(), are a mess: 
They're about 10 lines of functioning code, plus about 20 lines of necessary front-end, 
plus a couple hundred lines of naming, exception-handling, repetitions of chunks of 
code, pseudo-structured-programming-through-naming-of-variables, and general 
buck-passing. I still don't know if my modifications are quite right--I did what was 
needed to the meat of the function but no way can I keep track of all the if-else 
possibilities.

以前自分が書いた glm.flt() という関数では、関数本来の機能を果たすのに10行のコード、
必要なフロントエンドのコードが20行、それに加えて、例外処理やら何やらで数百行。

If R is redone, I hope its functions return to the lean-and-mean aesthetic of the 
original S (but with better graphics defaults).

■_

2010年09月14日

■_

むかーし、語尾から引ける辞書ってのがあったような気がするんですが 今でもあるんでしょうか。 ~化でちょっと調べたくなったので。

今日もあれとかあれとかやってる時間がなかった ○| ̄|_

今日のお買い物
アサマシ。 あそびにいくヨ! contact:1 〔初回版:原作イラスト・放電映像先生描き下ろしハーフBOX同梱仕様〕 [Blu-ray]
話がなあ。

■_

仲間発見(笑)


スレを勃てるまでもないC/C++の質問はここで 16 
747 デフォルトの名無しさん [sage] 2010/09/11(土) 23:54:07 ID: Be:
    非常に簡単なクラスの問題なんですが
    どうしてもエラーが解消されないのでご教授御願いします
    エラー部は一番下のcoutの部分の様なのですが・・・
    VS2010でコーディングしています
    #include<iostream>
    using namespace std;

    class myclass{

    int a;
    public:
    void set_a(int num);
    int get_a();
    };

    void myclass::set_a(int num){
    a=num;
    }
    int myclass::get_a(){
    return a;
    }

    int main(){
    myclass ob1,ob2;

    ob1.set_a(10);
    ob2.set_a(99);
    cout<< ob1.set_a() <<"\n";
    cout<< ob1.set_a() <<"\n";

    return 0;
    } 

748 デフォルトの名無しさん [sage] 2010/09/11(土) 23:56:07 ID: Be:
    set_a()とget_a()の入れ間違え。 

749 デフォルトの名無しさん [sage] 2010/09/11(土) 23:56:53 ID: Be:
    get 

750 デフォルトの名無しさん [sage] 2010/09/11(土) 23:57:06 ID: Be:
    笑わせるなー! 

751 デフォルトの名無しさん [sage] 2010/09/11(土) 23:57:48 ID: Be:
    バグは本人が気付かないからバグなんだよ!!! 

752 デフォルトの名無しさん [sage] 2010/09/12(日) 00:02:30 ID: Be:
    wwww 

753 デフォルトの名無しさん [sage] 2010/09/12(日) 00:41:03 ID: Be:
    雪駄と下駄の間違いか

754 デフォルトの名無しさん [sage] 2010/09/12(日) 00:54:11 ID: Be:
    >>753
    尊敬した 

755 デフォルトの名無しさん [sage] 2010/09/12(日) 01:02:05 ID: Be:
    >>753
    誰うまw 

756 デフォルトの名無しさん [] 2010/09/12(日) 01:21:44 ID: Be:
    >>753
    惚れた 

757 デフォルトの名無しさん [sage] 2010/09/12(日) 01:57:00 ID: Be:
    >>753
    天才を見つけた 

758 デフォルトの名無しさん [sage] 2010/09/12(日) 01:59:15 ID: Be:
    自演乙 

759 デフォルトの名無しさん [sage] 2010/09/12(日) 02:18:25 ID: Be:
    >>758
    いつもの2chで安心したw 

760 デフォルトの名無しさん [sage] 2010/09/12(日) 02:21:19 ID: Be:
    これは恥ずかしい自演 

761 デフォルトの名無しさん [sage] 2010/09/12(日) 03:02:16 ID: Be:
    でも自演じゃないんだぜっていう自演 

762 デフォルトの名無しさん [sage] 2010/09/12(日) 03:07:58 ID: Be:
    ということにしたいのですね(ヘミ略 

763 デフォルトの名無しさん [] 2010/09/12(日) 05:48:56 ID: Be:
    http://hibari.2ch.net/test/read.cgi/prog/1280211777/454-456
    これも(ry 

764 753 [sage] 2010/09/12(日) 10:08:47 ID: Be:
    前からネタにしているのにこんなに反響を呼んで、正直驚愕している。

    のはいいけどさぁ、ほどほどにしようや。 

しかし、下駄はともかく雪駄を知ってる人ってあまりいないと思ってたのだけどそうでもなかった?

■_ N Things I Hope to Never See Again in IT (but Expect To) - Part I

ギョーカイで二度と遭遇したくない諸々。


the_codist()

The Codist - Programmerthink

N Things I Hope to Never See Again in IT (but Expect To) - Part I

Posted: 09/13/2010

In the years I worked in IT organizations (or as a consultant) I found a number of 
things that made my eyes roll, my brow furrow, my dander and blood pressure go up, and 
generally pissed me off in some way. Rarely was I alone as generally these things were 
obvious to everyone but where the problem lay.

Stupid CIO/CTO's
お莫迦な CIO や CTO 連中

Three CIO/CTO's were expecially memorable and all for different reasons.

本文略


Braindead Design Decisions
(ぴー)な設計上の決定

本文略


Big Talk No Delivery

本文略



More in Part II.
Part II につづく。


© 2010 by Andrew Wulf [0.017 seconds]

■_ そいや

メンテ不能コードの書き方はどの辺りまでやったんだっけか。

■_ (pythonの)オブジェクトとは

十年前のものかあ。

Python?Objects
Python Objects

December 12, 2000 | Fredrik Lundh

Introduction #

Reset your brain.

Objects #

All Python objects have this:
Python でのすべてのオブジェクトは以下のものを持っています:

   * a unique identity (an integer, returned by id(x))
   * a type (returned by type(x))
   * some content

You cannot change the identity.
identity は変えられません。

You cannot change the type.
型を変更できません。

Some objects allow you to change their content (without changing the identity or the
type, that is).
一部のオブジェクトは(その identity や型を変更することなしに)
自身の内容の変更するのを許します。

Some objects don't allow you to change their content (more below).
一部のオブジェクトは自身の内容を変更するのを許しません。

The type is represented by a type object, which knows more about objects of this type
(how many bytes of memory they usually occupy, what methods they have, etc).

型はその型のオブジェクトについてより詳しく知っている
(通常どのくらいのバイト数のメモリーを占有するのか、持っているメソッドは何かなどなど)
型オブジェクトによって表現されています。

(Update: In CPython 2.2 and later, you can change the type under some rather limited
circumstances.)

More about objects #

Objects may also have this:

   * zero or more methods (provided by the type object)
     (型オブジェクトによって提供される)ゼロ個以上のメソッド
   * zero or more names
     ゼロ個以上の名前

Some objects have methods that allow you to change the contents of the object (modify
it in place, that is).
オブジェクトの内容の変更 (つまり in place での modify)
を許すメソッドを持っているオブジェクトがあります

Some objects only have methods that allow you to access the contents, not change it.
自身の内容へのアクセスを許すけれども変更は許さないメソッドだけを持っているオブジェクトがあります。

Some objects don't have any methods at all.
一切のメソッドを持たないオブジェクトがあります。

Even if they have methods, you can never change the type, nor the identity.
メソッドを持っていたとしても、型や identity を変更することは決してできません。

Things like attribute assignment and item references are just syntactic sugar (more
below).

attribute に対する代入や item の参照のようなことは単なる syntacitc sugar にすぎません(後述)。

Names #

The names are a bit different ― they're not really properties of the object, and the
object itself doesn't know what it's called.

名前は少々事情が異なります。
名前は実際にはオブジェクトのプロパティではありません。
またオブジェクト自身は自分が何と呼ばれるかを知りません。

An object can have any number of names, or no name at all.
オブジェクトは好きなだけの数の名前を持てるし、名前を持たないこともできます。

Names live in namespaces (such as a module namespace, an instance namespace, a
function's local namespace).

名前は名前空間にあります。

Namespaces are collections of (name, object reference) pairs (implemented using
dictionaries).
名前空間はペアの集まりです。

When you call a function or a method, its namespace is initialized with the arguments
you call it with (the names are taken from the function's argument list, the objects
are those you pass in).

関数やメソッドを呼び出したとき、その名前空間は呼び出しの時の引数を使って初期化されます
(この名前は関数の引数リストからとったもので、オブジェクトは)。


Assignment #
代入

Assignment statements modify namespaces, not objects.
代入文は名前空間を modify するものであってオブジェクトを modify するものではありません。

In other words,
言い換えると、

   name = 10

means that you're adding the name “name” to your local namespace, and making it
refer to an integer object containing the value 10.
という代入文では、
まず“name”という名前をローカルの名前空間に追加し、
そしてそれが10という値を保持する integer オブジェクトを参照するようにしています。


If the name is already present, the assignment replaces the original name:

もしその名前がすでに登場しているものであったら、代入文は元の名前を置き換えます。

   name = 10
   name = 20

means that you're first adding the name “name” to the local namespace, and making
it refer to an integer object containing the value 10. You're then replacing the name,
making it point to an integer object containing the value 20. The original “10”
object isn't affected by this operation, and it doesn't care.

上記の例は最初に “name”という名前をローカルの名前空間に追加し、そしてそれが10という
値を保持する integer オブジェクトを参照するようにします。そのあとで名前を置きかえて 20 
という値を保持する integer オブジェクトを参照するようにしています。元々の “10”オブジ
ェクトはこの操作によって影響を受けませんし、
it doesn't care です。

In contrast, if you do:

   name = []
   name.append(1)

you're first adding the name “name” to the local namespace, making it refer to an
empty list object. This modifies the namespace. You're then calling a method on that
object, telling it to append an integer object to itself. This modifies the content of
the list object, but it doesn't touch the namespace, and it doesn't touch the
integer object.

あなたはまず、“name”という名前をローカルな名前空間に追加し、それがからのリストオブジ
ェクトを参照するようにします。これは名前空間を変更します。そうしてからそのオブジェクト
のメソッドを呼び出して自身に integer を append するように指示します。これはリストオブ
ジェクトの内容を変更しますが、名前空間には触りませんし、integer オブジェクトにも触りま
せん。

Things like name.attr and name[index] are just syntactic sugar for method calls. The
first corresponds to __setattr__/__getattr__, the second to __setitem__/__getitem__
(depending on which side of the assignment they appear).

name.attr や name[index] のようなものはメソッド呼び出しに対する単なる構文糖(syntactic 
sugar) にすぎません。最初のものが __setattr__/__getattr__ に対応し、二番目のものが 
__setitem__/__getitem__ に対応します(get/set は代入のどちらの辺にあるかによります)。

That's all.

Copyright c 2000 by Fredrik Lundh


■_ 本日の巡回から

2010年09月13日

■_

・センゴク外伝桶狭間戦記
来週が待ち遠しい。

・プログラマーの心得
なんか書こうと思ったけどちと面倒。

■_

■_ どこかで見たような話

the_codist()
http://thecodist.com/article/superman_wanted

Superman Wanted

People are looking for the most amazing programmers out there. Can anyone really be good at all this?

"... a Java/J2EE developer with hands on planning, analysis, design, development, 
testing and support of eCommerce applications with in depth working knowledge of Core 
Java, JSP and J2EE technologies who must have HTML, CSS, JSON, Javascript, SQL 
scripting, and Unix scripting, XML, XSD, Web Service Technologies: AXI, CXF, WS 
Standards. As well as experience with Oracle 9i\10g or higher, Web Logic 10 or higher 
and experience working with or developing Spring/Struts based projects. Must have 
experience with Open Source development, re-factoring existing systems, automated 
build utilities and continuous integration environments, software development 
lifecycle best-practices, methods, and conventions, such as Test Driven Development, 
Source Code Management, Continuous Integration, Domain Driven Design, and Dependency 
Management."

Most superheroes need not apply; you are simply not good enough.
  

どんだけ高い要求なのかと。

■_ Perl 6

正規表現の修飾子(Regex Modifier) とか。 ところどころ変わってるような。

Perl 6 Lookup Tablet / Perl 6
http://www.perlfoundation.org/perl6/index.cgi?perl_6_lookup_tablet#regex_modifier

Regex Modifier

Stay behind the regex op and change the behaviour of the regex, search scope, etc.
Short   Long    Meaning
:g      :global         searches for any finding
:x(n)           searches n times (n is an int)
:nth(n)         :st :nd :rd     demands the nth finding, has many aliases for correct spelling (:2nd)
:c(n)   :continue       searches from nth position (counting from 0)
:p(n)   :pos    searches only on nth position (counting from 0)
:ov     :overlap        searches on all positionens just one time (activates backtracking)
:ex     :exhaustive     searches on all positions as long as it findes something (activates backtracking)
       :ratchet        deactivates backtracking
       :panic  overwriting of possible set :ratchet for all subrules (activates backtracking)
       :keepall        subrules have to memorize everything
:rw             the regex has the right to change the string
:s      :sigspace       whitespace just separate parts of the Regex, don't stand for spaces to look for
:ss     :samespace      as in :s for substitutions, 1st part replaced with 1st part in second half a.s.o. (ss/teh hsa/the has/;)
:i      :ignorecase     no distinctions between uppercase and lowercase
:ii     :samecase       substitute with chars of same case as the matching
:a      :ignoreaccent   no distinctions between same chars with or without accent (funny symbols above)
:aa     :sameaccent     substitute with chars that has same accent as the matching
       :bytes  searches on byte level
       :chars  searches on character level (default)
       :codes  matches between codepoints
       :graphs         match language-independent graphemes
:P5     :Perl5  use the old Regex

Regex Metacharacter

   . _______ any character
   ^_______ begin of the sring
   ^^ _____ begin of a line
   $ _______ end of the string
   $$ ______ end of a line
   (...)_____ Group patterns and capture the result
   [...] _____Group patterns without capturing
   {...} ____ Execute a closure (Perl 6 code) within a rule
   <...> ____ match a subrule (assertion
   | _______ match alternate patterns (OR)
   **______ muliply this (meta)char/subrule times the following digit
   &_______ match multiple patterns (AND)
   \ _______ Escape a metacharacter to get a literal character, or escape a literal
             character to get a metacharacter
   #_______ mark a comment (to the end of the line)
   := ______ Bind the result of a match to a hypothetical variable


Control Chars

These Escape Sequences will be evalueated to invisible control chars, if the ":b" aka 
":backslash" quoting Adverbs are set (included in "", qq and <<>>). They are 
also usable in regexes and thatswhy also included in the next list.

   \a . . . . . . . . BELL
   \b . . . . . . . . BACKSPACE
   \e . . . . . . . . ESCAPE
   \f . . . . . . . . FORM FEED
   \n . . . . . . . . LINE FEED
   \r . . . . . . . . CARRIAGE RETURN
   \t . . . . . . . . TAB


Escape Sequences

   \0[ ... ] . . character given in octal (brackets optional)
   \b . . . . . . word boundary
   \B . . . . . . Match when not on a word boundary
   \c[ ... ] . . named character or control character
   \C[ ... ] . . any character except the bracketed named or control character
   \d. . . . . . digit
   \D. . . . . . nondigit
   \e. . . . . . escape character
   \E. . . . . . anything but an escape character
   \f . . . . . . form feed
   \F. . . . . . anything but a form feed
   \n. . . . . . (logical) newline
   \N. . . . . . anything but a (logical) newline
   \h. . . . . . horizontal whitespace
   \H. . . . . . anything but horizontal whitespace
   \L[ ... ] . . Everything within the brackets is lowercase
   \Q[ ... ]. . all metacharacters within the brackets match as literal characters
   \r . . . . . . return
   \R. . . . . . anything but a return
   \s. . . . . . any whitespace character
   \S. . . . . . anything but whitespace
   \t . . . . . . a tab
   \T. . . . . . anything but a tab
   \U[ ... ] . . Everything within the brackets is uppercase
   \v. . . . . . vertical whitespace
   \V. . . . . . anything but vertical whitespace
   \w. . . . . . word character (Unicode alphanumeric plus "_")
   \W . . . . . anything but a word character
   \x[ ... ] . . character given in hexadecimal (brackets optional)
   \X[ ... ] . . anything but the character given in hexadecimal (brackets optional)


Subrules

There are some predefined subrules for most common regex needs.

   <ws> . . . . . . Whitespace


  

■_ 十六進数リテラル

思ったよりもバリエーションあるのね。

Hexadecimal - Wikipedia, the free encyclopedia

In situations where there is no context, a hexadecimal number might be ambiguous and 
confused with numbers expressed in other bases. There are several conventions for 
expressing values unambiguously. A numerical subscript (itself written in decimal) can 
give the base explicitly: 15910 is decimal 159; 15916 is hexadecimal 159, which is 
equal to 34510. Other authors prefer a text subscript, such as 159decimal and 159hex, 
or 159d and 159h.

In linear text systems, such as those used in most computer programming environments, 
a variety of methods have arisen:

    * In URLs, character codes are written as hexadecimal pairs prefixed with %: 
      http://www.example.com/name%20with%20spaces where %20 is the space (blank)
      character (code value 20 in hex, 32 in decimal).

    * In XML and XHTML, characters can be expressed as hexadecimal numeric character 
      references using the notation &#xcode;, where code is the 1- to 6-digit hex 
      number assigned to the character in the Unicode standard. Thus &#x2019; 
      represents the curled right single quote (Unicode value 2019 in hex, 8217 in decimal).
 
    * Color references in HTML and CSS can be expressed with six hexdigits (two each 
      for the red, green, and blue components, in that order) prefixed with #: white, for 
      example, is represented #FFFFFF .[1] CSS allows 3-hexdigit abbreviations with one 
      hexdigit per component: #FA3 abbreviates #FFAA33 (a golden orange).

    * *nix (Unix and related) shells, and likewise the C programming language, which 
      was designed for Unix (and the syntactic descendants of C[2]) use the prefix 0x
      for numeric constants represented in hex: 0x5A3. Character and string constants
      may express character codes in hexadecimal with the prefix \x followed by two hex
      digits: '\x1B' represents the Esc control character; "\x1B[0m\x1B[25;1H" is
      a string containing 11 characters (plus a trailing NUL to mark the end of the string)
      with two embedded Esc characters.[3] To output an integer as hexadecimal with the
      printf function family, the format conversion code %X or %x is used.

    * In the Unicode standard, a character value is represented with U+ followed by 
      the hex value: U+20AC is the Euro sign (€).

    * In MIME (e-mail extensions) quoted-printable encoding, characters that cannot be 
      represented as literal ASCII characters are represented by their codes as two 
      hexadecimal digits (in ASCII) prefixed by an equal to sign =, as in Espa=F1a to
      send "España" (Spain). (Hexadecimal F1, equal to decimal 241, is the code
      number for the lower case n with tilde in the ISO/IEC 8859-1 character set.)

    * In Intel-derived assembly languages, hexadecimal is indicated with a suffixed H 
      or h: FFh or 05A3H. Some implementations require a leading zero when the first 
      hexadecimal digit character is not a decimal digit: 0FFh

    * Other assembly languages (6502, AT&T, Motorola), Pascal, Delphi, some 
      versions of BASIC (Commodore) and Forth use $ as a prefix: $5A3.

    * Some assembly languages (Microchip) use the notation H'ABCD' (for ABCD16).

    * Ada and VHDL enclose hexadecimal numerals in based "numeric quotes": 
      16#5A3#. VHDL also supports x"5A3".

    * Verilog represents hexadecimal constants in the form 8'hFF, where 8 is the
      number of bits in the value and FF is the hexadecimal constant.

    * Modula-2 and some other languages use # as a prefix: #05A3

    * The Smalltalk programming language uses the prefix 16r: 16r5A3

    * Postscript indicates hex with prefix 16#: 16#5A3. Binary data (such as image 
      pixels) can be expressed as unprefixed consecutive hexadecimal pairs: 
      AA213FD51B3801043FBC...

    * In early systems when a Macintosh crashed, one or two lines of hexadecimal code 
      would be displayed under the Sad Mac to tell the user what went wrong.

    * Common Lisp use the prefixes #x and #16r.

    * QuickBASIC, FreeBASIC and Visual Basic prefix hexadecimal numbers with &H: &H5A3

    * BBC BASIC and Locomotive BASIC use & for hex.[4]

    * TI-89 and 92 series uses a 0h prefix: 0h5A3

    * Notations such as X'5A3' are sometimes seen, such as in PL/I. This is the most 
      common format for hexadecimal on IBM mainframes (zSeries) and midrange computers 
      (iSeries) running traditional OS's (zOS, zVSE, zVM, TPF, OS/400), and is used in 
      Assembler, PL/1, Cobol, JCL, scripts, commands and other places. This format was 
      common on other (and now obsolete) IBM systems as well.
 
    * Donald Knuth introduced the use of a particular typeface to represent a particular
      radix in his book The TeXbook.[5] Hexadecimal representations are written there in
      a typewriter typeface: 5A3

    * Any IPv6 address can be written as eight groups of four hexadecimal digits, where
      each group is separated by a colon (:). This, for example, is a valid IPv6 address:
      2001:0db8:85a3:0000:0000:8a2e:0370:7334

Bruce A. Martin's hexadecimal notation proposal

There is no universal convention to use lowercase or uppercase for the letter digits, 
and each is prevalent or preferred in particular environments by community standards 
or convention.

The choice of the letters A through F to represent the digits above nine was not 
universal in the early history of computers. During the 1950s, some installations 
favored using the digits 0 through 5 with a macron character ("¯") to 
indicate the values 10–15. Users of Bendix G-15 computers used the letters U through Z. 
Bruce A. Martin of Brookhaven National Laboratory considered the choice of A–F 
"ridiculous" and in a 1968 letter to the editor of the CACM proposed an 
entirely new set of symbols based on the bit locations, which did not gain much 
acceptance.[6]

10 以上の数字を表現するのに A から F までの文字を選択することはコンピューターの歴史の
初期においては universal ではありませんでした。1950年代を通じて、some installations は 
10から15を表現するのに0 から 5 のそれぞれにマクロン (macron character "¯") 
をつけるのを好んでいました。Bendix G-15 computers のユーザーは U から Z までの文字を使
っていました。Brookhaven National Laboratory の Bruce A. Martin は


(ry

■_

ちょーしでねえ(今まで出ていたのかというとそれも疑問ですが)

2010年09月12日

■_


発端はこれ 言語設計者たちが考えることに取り上げられてるプログラミング言語から見る日本終わった論 - RC3の無職しょ日記 で、Masterminds of Programming (邦題: 言語設計者たちが考えること) に収められている言語に Ruby がないのを残念に思っているらしいのだけど、 参照しているのが原著っぽいいのにエントリは邦訳の方なんですよね。 邦訳の方であれば O'Reilly Village/オラの村 - Jolt Award受賞『Masterminds of Programming』の日本語版は近日発刊 にあるように 実は原書の企画時に、まつもとさんへも参加依頼があったそうなのですが、まつもとさんが多忙で返事を書きそびれているうちに本が出てしまったそうです。日本語版ではこの幻の章を読むことができます。どうぞお楽しみに。 ということで収録されていたりするんですが。 ところでこの「幻の章」英訳して公開したりはできないんでしょうか? わたしたちが Larry や Guido の文章を読みたいように、 英語圏の人たちにもまつもとさんの文章を読みたい人はいると思うのですよね。 まあ英訳の手間やら大変でしょうけど。

・勉強会について
眠いので日を改めて(えー

■_ boxing

で。

まずは日本語版から。

ボックス化 - Wikipedia

ボックス化(boxing)とは、プログラミング言語において値型をオブジェクト型(参照型)に変
換すること。逆に、ボックス化されたオブジェクトを値型に戻すことをボックス化解除(unboxing)
と呼ぶ。

Javaや.NET Frameworkなどの近代的な環境においては、値型(Javaでは原始型がこれに相当する)
と参照型という根本的に異なる二種類の型が存在する。参照型のインスタンスはヒープ上の独立
した領域に確保される。値型は文脈によって確保される場所は異なるものの、いずれにせよメモ
リ上に連続的に確保される(例えば、ローカル変数として宣言された場合はスタック上に確保さ
れ、参照型のメンバとして宣言された場合は参照型の一部として確保される)。

このように値型と参照型とは根本的に性質の異なるものであるが、さまざまな理由により、値型
を参照型に型変換する必要がある場合がある。例えば.NETにおいては、概念上、値型も含めすべ
ての型はSystem.Object型(これは参照型である)の派生型であるため、この型への暗黙的なア
ップキャストが行える必要がある。またJavaにおいてはコレクションに値型を直接入れることが
できないため、一度参照型に変換してから入れる必要がある。


こういう形で「ボックス化」と書かれるとオブジェクトそのものが「箱になる(する)」 というイメージがあるんですが、そうではなくて「箱に詰めている」のですよね? (box を動詞としてみたときもそうなると思うのですが)

Object type (object-oriented programming) - Wikipedia, the free encyclopedia

Some object-oriented programming languages make a distinction between reference and 
value types, often referred to as objects and non-objects on platforms where complex 
value types don't exist, for reasons such as runtime efficiency and syntax or semantic 
issues. For example, Java has primitive wrapper classes corresponding to each 
primitive type: Integer and int, Character and char, Float and float, etc. Languages 
like C++ have little or no notion of reference type; thus, the use of object type is 
of little interest.

Boxing

Boxing is to place a value within an object so that the value can be used as a 
reference object. For example, lists may have certain methods which arrays might not, 
but the list might also require that all of its members be dynamic objects. In this 
case, the added functionality of the list might be unavailable to a simple array of 
numbers.

For a more concrete example, in Java, a LinkedList can change its size, but an array 
must have a fixed size. One might desire to have a LinkedList of ints, but the 
LinkedList class only lists references to dynamic objects — it cannot list primitive 
types, which are value types.


んー。

Conversions and Promotions
Java Language Specification Third Edition

CHAPTER 5 

5.1.7 Boxing Conversion

Boxing conversion converts values of primitive type to corresponding values of 
reference type. Specifically, the following 8 conversion are called the boxing 
conversions:

    * From type boolean to type Boolean
    * From type byte to type Byte
    * From type char to type Character
    * From type short to type Short
    * From type int to type Integer
    * From type long to type Long
    * From type float to type Float
    * From type double to type Double 

「Boxing conversion」 ですか。

■_

■_



Hudsonでコードの行数を記録する - みずぴー日記
Plot Pluginはプロパティファイルに書き出した値をプロットしてくれるプラグインなので、プ
ログラムの行数を書きだすシェルクスクリプトを用意します。

ボクはこんな感じにしました。wcだとファイル名がついてきてうざいので、awkでカウントしてます。

#!/bin/sh
ALL=$(awk '{ i += 1 } END{printf "%d\n",i}' core/*.ml)
CODE=$(ls -1 core/*.ml | grep -v Test.ml | xargs awk '{ i += 1 } END{printf "%d\n",i}')

echo "YVALUE=$ALL" >> $WORKSPACE/all_loc.properties
echo "YVALUE=$CODE" >> $WORKSPACE/code_loc.properties

わざわざ自分で数えないでも、awk には NR って便利な組み込み変数があるです… それと、桁数の調整やらが不要で改行をくっつけるだけなら print で十分なので awk 'END {print NR}' なあたりでいけるのではないかと。 ダミーのルールを作らないでも行の読み込みやらはやるはず。

■_ 本日の巡回から

2010年09月11日

■_

Category Theory • Chris Waggoner • Hire Me Because I'm Smart • Mathematics & Business http://blog.hiremebecauseimsmart.com/post/615614573/functor

あとで
行ってきました。 Boost.勉強会 #2 : ATND


13:00~13:20 : Boostライブラリ一周の旅 1.41.0~1.44.0までの差分 (faith_and_brave)
13:30~14:10 : Boost.Graph (egtra)
14:20~15:00 : Boost.GIL (Leo)
15:10~15:50 : SEXYHOOK (rti)
16:00~16:35 : Boost.Flyweight (SubaruG)
16:45~17:25 : MessagePack for C++ (frsyuki)
17:35~17:45 : バベル(wraith13)
17:45~18:00 : Boost.Interface(melpon)

sexyhook - Project Hosting on Google Code が一番印象に残ったかな。手放しでほめられるかというと以下略なんだけど。

IIJ では自社の社員も興味を示すような題材の勉強会を期待されているそうです。

■_

sigil 好きなんだけどなあ。わし。


【Perl,PHP】LLバトルロワイヤル11【Ruby,Python】
268 デフォルトの名無しさん [sage] 2010/07/29(木) 14:24:47  ID: Be:
    JavaやC++やってる奴ならRubyかPythonだよな
    やっぱオブジェクト指向言語だし
    みたいな風潮が一時期あったけど
    文法や風土的に言うとPHPやPerlでオブジェクト指向の書き方した方が似た感じになる
    特にRubyは完全に書き方を変える必要があるからそんな移行が進まなかった

908 デフォルトの名無しさん [sage] 2010/09/11(土) 00:15:42 ID: Be:
    だいぶ昔のレスではあるが

    >>268
    PHPはわかるけど、Perlで書いた方がメインストリームに近いってどういうこと?
    Perlのオブジェクト指向ってかなり異質だと思うんだけど。
    文法的にはカッコとブレース主体だから近いけどな。

    Rubyが普及してこなかったのは文法が複雑(特にホワイトスペースの扱い)なのと、Windowsに
    冷たかったからだと思ってる。Pythonはなんだろうね。インデントベースがハッカーの琴線に
    触れないとか聞いたことある。

    まあ、入門が簡単ってのが一番大事なのかな。PerlとPHPはいきなりレンサバで使えちゃうからね。 

909 デフォルトの名無しさん [sage] 2010/09/11(土) 00:21:20 ID: Be:
    文法は遠いだろ
    括弧は省略できるし、プロトタイプ宣言の形も違う、C系ではあまり使わない記号類を使うとか
    awkとかには近いと思うけど 

910 デフォルトの名無しさん [sage] 2010/09/11(土) 00:33:39 ID: Be:
    >>909
    Ruby、Pythonよりは近いって意味で書いた。ああ、でもシジルと定義時の引数リストを
    考えると同じぐらいか...。
    じゃあ文法も遠いから、Perlのオブジェクト指向は全く異質じゃないか。

    まさかPHPが一番Javaに似てるから一番シェアあるのか?うわぁ。
    PHPはinterfaceが許せん。extendsみたいな長たらしいキーワードもうざいしな。
    Javaに媚びるような仕様がキモいから俺は避けてきたけど、Javaから流れてくる人には
    こういうのがいいのだろうか。 

911 デフォルトの名無しさん [sage] 2010/09/11(土) 00:38:37 ID: Be:
    >Windowsに冷たかったから

    これが普及しない理由の99%だと思う 

912 デフォルトの名無しさん [sage] 2010/09/11(土) 01:22:27 ID: Be:
    JavaScriptが一番Javaに近いからシェアがあるだと… 

913 デフォルトの名無しさん [sage] 2010/09/11(土) 01:39:18 ID: Be:
    名前に惑わされてるな 

914 デフォルトの名無しさん [sage] 2010/09/11(土) 01:45:09 ID: Be:
    でもシジル無いし関数定義以外の構文は良く似てるよ 

915 デフォルトの名無しさん [sage] 2010/09/11(土) 03:58:38 ID: Be:
    PHPは例外処理にfinallyさえあれば何も文句はない
    Pythonはインデントが嫌い、つーか素直に括弧使った方が見やすいだろって思う 

916 デフォルトの名無しさん [sage] 2010/09/11(土) 04:01:29 ID: Be:
    えっ 

917 デフォルトの名無しさん [sage] 2010/09/11(土) 06:18:40 ID: Be:
    括弧があるからってインデント使わずに書く奴がいるのか… 

918 デフォルトの名無しさん [sage] 2010/09/11(土) 06:45:55 ID: Be:
    いる
    っていうか
    かなり多い 

919 デフォルトの名無しさん [sage] 2010/09/11(土) 06:53:26 ID: Be:
    見やすくはないだろ 

920 デフォルトの名無しさん [sage] 2010/09/11(土) 07:35:13 ID: Be:
    短い関数は1行で書くっしょ
    上下に目を動かすのと左右じゃ疲れ方に差が出る! 

921 デフォルトの名無しさん [sage] 2010/09/11(土) 08:15:37 ID: Be:
    >>917
    lisperに失礼。 

922 デフォルトの名無しさん [sage] 2010/09/11(土) 08:35:42 ID: Be:
    こういうのなあ
    http://mw.air-nifty.com/mine_log/2007/11/js_10fc.html 

923 デフォルトの名無しさん [sage] 2010/09/11(土) 08:39:17 ID: Be:
    lispはプログラム=データだし後でいくらでも清書できるからなあ 

924 デフォルトの名無しさん [sage] 2010/09/11(土) 09:44:45  ID: Be:
    それ言うとPytho以外はほとんどツールでインデントつけられる。
    Pythonだけがとりあえずインデント無しで書いといてというのができない。 

「Windowsに冷たい」はなあ。20世紀ならともかく今でもそういう印象なんだろうか。

■_

RubyとCの x = y + y = x について - 西尾泰和のはてなダイアリー Just another Ruby porter, 2010-9-a Twitter / ko1: a = b + b = a というのを教えてもらった ...

この挙動、言語仕様できちっと決まってるのかな。 それと Ruby 以外で同じ動作する言語はあるんだろうか。

■_


めもがき:2010年9月10日分

ternary opというと条件演算子 <cond> ? <true> : <false> ですやね。
条件演算子はpccでは言語依存の扱いで、pass1に定義されてます。

(略)

    int x, y;
    main (void)
    {
            x = (y) ? 1 : 2;
    }

なコードは以下のようなツリーになります。

    0x7f7ffd701970) =, int, 0x0, attributes; basetyp,
        0x7f7ffd702290) NAME, 0, 0x7f7ffd702000, int, 0x0, attributes; basetyp,
        0x7f7ffd702120) ?, int, 0x0, attributes; basetyp,
            0x7f7ffd702170) NAME, 0, 0x7f7ffd7020a0, int, 0x0, attributes; basetyp,
            0x7f7ffd7019c0) :, int, 0x0, attributes; basetyp,
                0x7f7ffd701450) ICON, 1, 0x0, int, 0x0, attributes; basetyp,
                0x7f7ffd701920) ICON, 2, 0x0, int, 0x0, attributes; basetyp,

なるほど。NAME が二回出てくるのは予想していませんでしたが、 おおむね予想通りでした。ternary op はひとつ (conditional operator) しかないので 特別にそれようのノードを仕立てたりはしないだろうなあと。

■_ つーかさ

なんで「教えてください」にしないんだろうか。 これで十分丁寧な物言いだと思うのだけど。 却って、「ご教授(教示)願います」(お願いしますとかでなく) ってな方がカチンとくるな。

ふらっとC#,C♯,C#(初心者用) Part62 
470 デフォルトの名無しさん [sage] 2010/09/09(木) 08:36:43 ID: Be:
    ttp://www.atmarkit.co.jp/fdotnet/dotnettips/710resumedown/resumedown.html
    この記事を参考に分割ダウンロードをさせることに成功しました。
    しかし、
    進捗状態(どれだけダウンロードしたか)や
    ダウンロード速度(KB/s)の出力がうまくいかず困っています。

    webclientでしたらそのような情報を出すことに成功したのですが
    HttpWebRequest/HttpWebResponseクラスではわかりません。

    ご教授よろしくお願いします。 

471 デフォルトの名無しさん [sage] 2010/09/09(木) 09:26:40 ID: Be:
    ×ご教授

    ○ご教示

    ご教授だと過剰なので相手を馬鹿にしているように取られる
    冗談の場合を除いて、実生活で使っちゃだめ 

472 デフォルトの名無しさん [sage] 2010/09/09(木) 09:52:42 ID: Be:
    ご教授って言うと毎回どこからともなく沸いてきて、本題の回答をせずに消えていく。あれは何なんだろう不思議だ 

475 デフォルトの名無しさん [sage] 2010/09/09(木) 14:45:50 ID: Be:
    「ご教示」の説明をしようとすると、>>472みたいなのが毎回どこからともなく沸いてきて雑談めいたレスを残していく。何なんだろう不思議だ 

476 デフォルトの名無しさん [sage] 2010/09/09(木) 14:53:47 ID: Be:
    >毎回どこからともなく沸いてきて

    それだけ気にしてる人が多いってことだろ。
    毎回同じやつが指摘してるとでも思ってんのかね。 

477 476 [sage] 2010/09/09(木) 14:54:48 ID: Be:
    おっと、私は>>472に言ったのであって、>>475には言ってないのでよろしく。 

485 デフォルトの名無しさん [sage] 2010/09/09(木) 19:26:20 ID: Be:
    >>471
    指摘ありがとうございます。
    これから先この言葉を使って恥をかくことはなさそうです。

    >>473
    回答ありがとうございます。
    DLするファイルサイズとDLしたファイルサイズを取得することができました。
    %完了 というのも頑張って実装したいと思います。 

486 デフォルトの名無しさん [] 2010/09/09(木) 22:23:44 ID: Be:
    .Net 2.0のC#でWindows Formを使ったプログラムを書いているのですが、
    わからないことが発生してしまいました。

    数値だけではなく、帯域を表現できる入力コントロールとして、
    TrackBarではなく、HScrollBarを使おうと思ったのですが、
    最小値(Minimum)と最大値(Maximum)は設定できたのですが、
    スクロールバーのバー部分の幅の設定の仕方がわからないでいます。

     どなたか、ご存知の方、または、お勧めの代替え案などがありましたら
    教えていただけませんでしょうか。

    以上、よろしくお願いいたします。 

「代替え」なあ。まあいいんだけど。 「だいたい」って読むと「大体」と勘違いされたりしてちょっと悲しい。

■_ プロファイル重要


C++, Development Tools, Java, Open Source, Web... the world of software development from Dr Dobb's

Overlooked Essentials For Optimizing Code

Sep 10, 2010

I've been programming for 35 years now, and I've done a lot of work optimizing 
programs for speed (an example), and watching others optimize. Two essential 
techniques are consistently ignored.

これまでわたしは35年にわたりプログラミングをしてきていて、(たとえば) 速度のための
プログラムの最適化を数多くこなしてきましたし、他人の最適化も見てきましたが、
二つの essential な技術が consistently に無視されていました。

Nope, it isn't avoiding premature optimization. It isn't replacing bubble sort with 
quicksort (i.e. algorithmic improvements). It's not what language used, nor is it how 
good the compiler is. It isn't writing i<<2 instead of i*4.

それは早すぎる最適化の排除ではありません。
バブルソートをクイックソートで置き換えるようなアルゴリズムの改良でもありません。
使っているプログラミング言語の問題でも、どのくらい優れたコンパイラーを使っているか
でもありません。i*4 とする代わりに i<<2 とすることでもありません。


It is:
ではなにかというと:

   1. Using a profiler
   2. Looking at the assembly code being executed

The people who do those are successful in writing fast code, the ones who do not are 
not. Let me explain.

これらを行っている人たちは高速なコードを書くのに成功し、行っていない人たちは
そうではありません。それでは説明しましょう。


Using A Profiler
以下略

■_ 本日の巡回から


一つ前へ 2010年9月(上旬)
一つ後へ 2010年月(下旬)

ホームへ


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

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