ときどきの雑記帖 リターンズ

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

一つ前のページへ 2007年11月(中旬)
一つ後のページへ 2007年12月(上旬)

ホームへ

2007年11月30日

■_ 構文の未来

Non free as in air - 構文

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

でも待てよと。

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

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

MinCaml忘れてた。

どうなんでしょうかね。C#みたいに積極的に関数型言語の特徴といわれるような ものを取り込んでいっている言語もあるわけですし(まあそれいったらPerl6とか いろいろでてきますが)。というか、「構文」と言語のカテゴリとはあまり 関係ないんじゃないでしょうか(ないとは云わない。Prologがあるからw)。

「構文」の捕らえ方が違う?

■_ redditに訊け! (programming: Ask reddit: Any good Haskell/Erlang book?)

programming: Ask reddit: Any good Haskell/Erlang book? (HaskellやErlangに関する本でよいものないっすか?) つーことで挙げられたタイトルをチェックしてみやう。

■_

JRuby、鬼車を取り込む | エンタープライズ | マイコミジャーナル

JRubyの主要開発者であるCharles Nutter氏は27日(米国時間)、JRuby trunkにJoniがマージされ
たことを発表した。JoniはMarcin Mielczynski氏によってJavaに移植された「鬼車」の実装。鬼
車はK.Kosako氏によってC言語で開発されている正規表現ライブラリ。正規表現オブジェクトご
とに異なる文字エンコーディングを指定できるという特徴があり、The BSD Licenseのもとで公
開されている。

鬼車を移植したJoniがJRubyへマージされたことは、JRubyにとってパフォーマンスの面で重要な
意味をもっている。これまでJRubyで使っている正規表現の機能はその特性から性能のボトルネ
ックになっていたわけだが、これでそのボトルネックが解消されたことになる。

JRubyの次期メジャーリリースはパフォーマンスの面で極めて興味深いものになりそうだ。すで
にかなり優れたベンチマークを示しているうえに、さらに入出力の改善が取り組まれる予定にな
っている。

へー。Javaでどう書いたんだろう? いくつか自分なりのアイデアが浮かばないでもないけど性能的にどうなるかは自信がない(^^; ところでこれまでJRubyの正規表現てどうなってたんですか? IronPythonが.NETのそれに任せているみたいに、Javaの標準ライブラリに投げてるのかと 思ってたんですが。

機会があったらソースを読んでみるか。パフォーマンス云々は昨日のredditで あがってた話題の中にもありましたね。

ギスギスしてる

  パソコン系の質問に答えてくれるサイトを教えて下さい。 -OKWave

本を買え、レッスン受けろ、自力でマスターしろと言った方のいないサイトをお願いします。
  

OKWaveとその提携サイトって、回答者の履歴は検索できるのに 質問者がどんな質問してきたのかってのは検索できないんだよなあ。 ぐぐる先生の力を借りて調べてみると、この質問者は以前にも同様な態度で 悶着起こしてるなあ。とはいえ回答者のほうもまったく問題ないわけでもないか。

今日は reddit経由でたくさん引っかかったのですが、 まとめている時間がない○| ̄|_ ということで一つ二つだけ。


    Please do not port software to Windows!
programming: Please do not port software to Windows!
Please do not port software to Windows!

Windowsへソフトウェアを移植するのはやめてください!

At least, do not port my software to Windows.

少なくとも、わたしのソフトウェアを移植することはしないでいただきたい。

While the GNU General Public License expressly prohibits me from denying you the 
freedom to port software protected by it to Windows, I feel that you do great damage 
to the world if you do. Let me explain.

GNU General Public License は、あなたがソフトウェアをWindowsへ移植することを
わたしが拒否することを否定しています。しかし、わたしはあなたがそういったことを
することは世界に対して多大なダメージを与えることに他ならないとわたしは考えて
いるのです。


Windows is a proprietary environment. They don't give you the source code, and they do 
anything in their power to limit your freedom. They even try to limit what you can do 
with the software you rightfully bought from them. So, supporting them in any way is 
bad for the world, because it encourages others to try to limit others' freedoms (it 
worked great for Microsoft, so it must be a good idea, right?).

Windowsは proprietary な環境です。あなたにソースコードが与えられることはないし、
あなたの自由を制限するためにあらゆる努力を払っています。さらには
あなたが正当な手段で持って購入したWindowsに対してさえ、あなたがソフトウェアで
もって行うことのできることを制限しようとさえしているのです。
ですから、どんな手段にせよWindowsをサポートするということは、
世界にとってよくないこと(bad for the world)なのです。なぜならば、
そうすることである人(人たち)が別の人の自由を制限しようとする行為を助長することに
なるからです(それはMicrosoftにとって多大な貢献であり  …わかりゃん)。

I don't want any of my work to give anyone a reason to support companies like 
Microsoft who try to limit people's freedoms.

Microsoftのような人々の自由を制限しようと試みる企業をサポートするために
わたしの work を誰かに与えるようなことをわたしは欲しません。

That's why I develop my software on a completely free platform. So I know it works on 
a completely free platform. Many people using Windows don't care about their freedom. 
They do care about quality software and for that reason try to replace all the user 
space software from Microsoft with better free alternatives. This is the sole reason 
for the existance of cygwin.

わたしのソフトウェアは完全に自由なプラットフォームの上でもって
開発したのはそれが理由です。ですから、わたしのソフトウェアは完全に自由な
プラットフォームの上で動作することをわたしはわかっています。
Windowsを使う多くの人たちは、自分たちの自由について無頓着です。
彼らはソフトウェアの質と、Microsoftによるソフトウェアが
占めるすべてのユーザー空間をよりよい代替物でもって置き換ようとする理由とを
気にかけています。それが cygwinなるものが存在している理由です。

However, giving people a way to work around bugs in Windows makes them stay longer 
with Windows. That's why I consider porting software to Windows sabotage. It does not 
help people under Windows, in the contrary. It makes them stay longer with Windows. 
And while they stay, they will put pressure on others to also use Windows. It only 
helps Microsoft.

しかし、ひとびとがWindowsのバグを避けられるような手段を与えるということは、
彼らがWindowsにさらに長くとどまり続けてしまうことになってしまいます。
それこそが、わたしがWindowsへソフトウェアを移植することをサボっている理由なのです。
Windowsへソフトウェアを移植するということは、Windows世界の人々を助けるようでいて
実はその反対のことを行っていることになるのです。(移植によって)Windows世界の
ひとびとがそこにとどまり続けることを助けてしまうのです。そして彼らがとどまり続ける
ことによって、彼らは自分たち以外の人たちがWindowsを使うということに圧力を
かけるでしょう。それはMicrosoftを助けるだけです。


While this text singles out Microsoft, other companies are equally evil. For example, 
porting the diet libc to Solaris would help Sun, noone else. Don't do it.

このテキストではMicrosoftだけを槍玉に挙げてますが、他の企業にしても実際には
evil なのです。たとえば diet libc を Solaris に移植することはSunだけを助ける
ことになります。ですから(Solarisへの移植も)しないでください。

In the same line of argumentation, I will not modify any of my software so it works 
better with proprietary development platforms like Visual C++, even if I sacrifice 
great amounts of performance by not exploiting their features. And I ask you to do the 
same.

同様の理由で、わたしはVisual C++のような proprietary な開発環境で
よりよく動作するようにわたしのソフトウェアを修正することもしません。
そういった環境を利用しないことによって、大きなパフォーマンス劣化という犠牲を
払うことになったとしてもです。
そして、わたしはあなたにお願いします。あなたも同じように振舞ってはいただけませんかと。
  

diet libc の作者さん? コメント欄が爆発しているけど、2ちゃんのGPLスレみたいやり取りの応酬で なんとなく笑えないでもない :)

あー、Windows用 gawkで使おうと思ってた自作ライブラリに diet libc 由来のコードあったっけか。んー、彼の意思を尊重して自作して置き換えるか (どういう方針で作ってるものなのかはわかったし)。

ということで

redditネタはその後チェック入れたもの含めて明日(つか今日か)ということで。

「やさしいC++」書評(?)とか宿題がありますがなかなかまとめている時間がありません。 が、ちょっとだけ書いておきますか。

まあなんというか呆気にとられる本でした。 記述されていることはいいポイントをついているとは思うんですが、 じゃああの本を使ってC++をマスター(初歩的なレベルまでとしても)できるか、というと 2,3個疑問符が頭の上に浮かびますw

絵(マンガ)を積極的に使って親しみやすさはでているかもしれませんが、 副読本としては使えるとしてもこれだけというのはちょっとなあというところでしょうか。

Implementation Patterns おもしれー

2007年11月29日

■_ 好きなアルゴリズム

特にないなあw では身もふたもないのでちょっと考えてみる。

ハッシュというのがどこかで挙がってたような気がするけど、自分としてはハッシュは アルゴリズムというよりはデータ構造の一種という気がするので(ハッシュ関数はまあ 純粋にアルゴリズムの部類でしょうけどね)、そうだなあこれかな? → AVL木 - Wikipedia あー、でもこれもデータ構造っぽいなあ。

赤黒木(red-black tree)でもB木でもなくこれ。 なんでだろうね(笑) ちなみに今日の昼飯はハッシュドビーフ :)

はてなブックマーク - 404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10

# 2007年11月27日 atsunov atsunov programming, algorithm 周りの連中見てると、職業プログ
ラマでも下手すりゃ一つも知らん、って人がいそうで怖い。「要らないから興味ない」って人も、
アルゴリズム本に軽く目を通しておくくらいはしておいて損はないと思う

今日の勉強になったアルゴリズム。いろいろリンクを辿ったら行き着いた。 AA tree - Wikipedia, the free encyclopedia

An Arne Andersson tree (AA tree) in computer science is a red-black tree with one 
additional rule. Unlike red-black trees, RED nodes on an AA tree can only be added as 
a right subchild. In other words, no RED node can be a left subchild. This results in 
the simulation of a 2-3 tree instead of a 2-3-4 tree, which greatly simplifies the 
maintenance operations. The maintenance algorithms for a red-black tree need to 
consider seven different shapes to properly balance the tree:

Image:Red Black Shape Cases.svg

An AA tree on the other hand only needs to consider two shapes due to the strict 
requirement that only right links can be red:

へー。 ためしに何かの言語で書いてみるか。

■_ ぢつは

天泣記: 2007-11-28 #1

    なんか、Mastering Regular Expressoins, 3rd Edition が欲しくなってきた。

    1st Edition の日本語版と、2nd Edition の英語版・日本語版の計3冊も持っているというのに。

1st Ed 日本語版/英語版、2nd Ed 日本語版/英語版、3rd Ed(の英語版)とコンプしてます :)

ナニそんなに熱心に買ってるんだオレは…

■_

肥え続けるTomcatと胃を痛めるトラブルハッカー (1/3) - @IT

うーむこういう目には余りあいたくないw

■_ JRuby vs. Ruby 1.9

programming: JRuby on the beta Java6 open source port for os x runs faster than Ruby 1.9 AND any apple endorsed JVM (Headius: Java 6 Port for OS X (Tiger and Leopard))

o what have we learned today?

    * Sun's JDK 6 provides frigging awesome performance
    * Apple users are crippled without a JDK 6 port. Apple, I hope you're paying 
      attention.
    * Landon Fuller is my hero of the week. I know Landon will just point at the 
      excellent work to port JDK 6 to FreeBSD and OpenBSD...but give yourself some
      credit, you did what none of the other Leopard whiners did.
    * JRuby rocks
  

JRubyこえーw

■_

第4回 一時金から探る「取るべき資格」(公的/非ベンダー系):ITpro

ソリューションプロバイダ各社が公的/非ベンダー系資格の取得時に支給する一時金の平均額
(一時金を回答した企業の平均値)は今回、軒並み上昇した(表1)。首位の「技術士(情報工
学部門)」は前年から3万2200円も上積みして27万円を突破。2位の中小企業診断士とは、4万円
以上もの大差をつけた。

なにその技術師とやらは。 まあ資格とかとっても給料上がらないからその目的で受ける気はさらさらないのだけどねw

from reddit

いろいろ

2007年11月28日

from 2ch某スレ

つい最近ナイトウィザードで 
奥井雅美節は今だに健在 と認識した自分だったが 

三重野瞳節は今でも最高だな と痛感 

いやまったくw

ご愁傷さま二ノ宮くん オープニング・テーマ「ユビキリ」
ご愁傷さま二ノ宮くん オープニング・テーマ「ユビキリ」

ただいま絶賛ヘビーローテ中。

翻訳作業進行中?

【入門】Common Lisp その3【質問よろず】

810 デフォルトの名無しさん [sage] Date:2007/11/20(火) 14:58:45  ID: Be:
    PracticalCommonLisp の第22章だけ訳してみたんだけど、
    投下してみるべき? それともチラシの裏に留めるべき? 

811 デフォルトの名無しさん [sage] Date:2007/11/20(火) 17:09:52  ID: Be:
    とりあえず投下してみるよろし。 

812 810 [sage] Date:2007/11/20(火) 18:43:39  ID: Be:
    ttp://www.uploda.org/uporg1121370.zip.html
    機械翻訳並みでもよければ… 


815 デフォルトの名無しさん [sage] Date:2007/11/22(木) 11:50:47  ID: Be:
    >>812
    もっかいうpたのむ 

816 デフォルトの名無しさん [sage] Date:2007/11/22(木) 13:12:38  ID: Be:
    俺からもうpたのむ

    通報するから 

817 810 [sage] Date:2007/11/22(木) 18:44:50  ID: Be:
    >>815
    物持ちのいいうpろだ探し中

    >>816
    原著がネットで公開されててもまずいかなやっぱり 

818 デフォルトの名無しさん [sage] Date:2007/11/22(木) 19:04:18  ID: Be:
    基本的には、原著作者が、翻訳して公開することを明示的に許可してないと × 

819 デフォルトの名無しさん [sage] Date:2007/11/22(木) 21:16:36  ID: Be:
    >>816
    どうでもいいだろ,地下文章なんだから
    堂々とWebに公開したらそりゃまずいだろうけど
    pass付きzipで短期間だけ公開なら問題ないだろ 

820 デフォルトの名無しさん [sage] Date:2007/11/22(木) 21:54:34  ID: Be:
    lions' 本も現在なら
    ファーストコピーのスキャン画像が流通するのかしらん 

821 803 [sage] Date:2007/11/22(木) 21:58:25  ID: Be:
    (´・ω・`) 


823 デフォルトの名無しさん [sageそんなことはない] Date:2007/11/22(木) 22:10:19  ID: Be:
    これが革命の狼煙になるとは思いもしない819であった。


827 デフォルトの名無しさん [sage] Date:2007/11/26(月) 00:38:07  ID: Be:
    on lispの翻訳も最初はこんなのりだったなw 

    830を1兆回読むべきだろうな 

834 810 [sage] Date:2007/11/27(火) 19:27:26  ID: Be:
    原著者の Peter さんに勢いで
    「日本のフォーラムに翻訳を投下したいんだけど許可くれ」
    ってメールしてみたんだけど、数日経った今日返信キタ

    日本語化の動きは既にあるんで
    グループを手伝うかどうかは君に任せるよ、とのこと 

835 デフォルトの名無しさん [sage] Date:2007/11/27(火) 21:29:18  ID: Be:
    829です。
    >>830
    手で入力しなおして気付きました。

    >>832
    > 829の勘違いというかビデオを理解していないで終了。

    はい、理解してませんね
    もうちょっと勉強します。

    >>833
    > 830を1兆回読むべきだろうな

    さすがに1兆回はw
    でも3回ほど読み直しました。

    Emacs側の設定 face? mouse? 見直してみます。
    みなさんコメントありあがとうございました。
    お騒がせしました。

836 デフォルトの名無しさん [] Date:2007/11/27(火) 22:15:54  ID: Be:
    >>834
    その翻訳グループの詳細plz 


■_ もーえろよもえろーよ

TextBox のVisibleプロパティを False に設定するとプログラムから書き込みも参照も出来なくなる。 - Insider.NET

参: [Prog] 確認しないのが一般化されてるんですか?

まあなんというか…ねえ?(と誰とはなしに同意を求めてみる)

■_ 新言語紹介 Erlangの巻

[Think IT] 第4回:並列処理が可能な関数型言語「Erlang」 (1/3)

RSS配信してくれてないから更新されているのを忘れていた○| ̄|_ (って自分の身にも痛かったりして:)

プログラム(関数やサブルーチン)が互いに呼び合うものを「co-routine」と呼び、これに
ついてはかつて「Modula」などの言語処理系が実装していた。プログラム間での通信はOSレ
ベルのプロセスやスレッドで実装されるのが一般的なのだが、Erlangではこれを言語処理系
の中で処理している。つまり、OSレベルのプロセス間通信よりも、はるかに「軽い」という
メリットが生じるのである。

あーあったねえ。コルーチン。わしが知ったのはModula-2でだけど (ModulaとModula-2でどこがどう違うのかはよく知らない)。 Adaのrandvouz (う、スペリングに自信なし。フランス語の「ランデブー」です)と 同じことをもっと簡単に効率よくできるとか何とか宣伝文句を聞いた覚えがある。

■_ 適正

人様のコメント欄を基点に話をというのもちとなにな気がしますが、まあそれはさておき。

プログラミングへの適性とか勉強方法とか - まちゅダイアリー (2007-11-27)

初めまして。
java、プログラマー検索してて辿り着いた者です。どうしてもjavaをマスターしたくて色々と
暗中模索中でして…

やはり向き不向きがあるのでしょうか。
一生懸命勉強しても頭に入っていかないのって、もう諦めるしかないのでしょうか…( ´Д⊂ヽ
突然すみません… 

まあプログラミングそのものに向き不向きはあるかもしれない(多分ある)だろうけど この質問の彼(でいいのかな?)は、わたしがHaskellやらOcamlやらPrologやらで プログラムを組もうとするときに脳から汁が出そうなくらい考えないと よくわからないというのとおなじことなのか(言語を変えればそれなりにできる)、あるいは プログラムを組む、ロジックを組み立てるということ自体ができてないのかが ちょっと気になるところではある。

]

本日の

Code Craft - *Backtrace* (2007-11-27)Matzにっき(2007-10-29)

で触れられているCode Craft

内容紹介
多くのプログラマーは、正しいコード、つまり、動作するコードを書く方法は知っています。し
かし、エクセレントなコード、つまり、うまく書かれていて、理解することが容易なコードを巧
妙に作り上げる方法を知っているとは限りません。本書は、自分の仕事にこだわりを持つプログ
ラマーを対象に、まだ誰もあなたに教えてくれていないことが書かれています。それは、この現
実の世界でプログラムをどのように正しく書くかということです。本書では、教科書が省いた部
分を拾い上げます。もちろん、それは良いコードが持つ技術的かつ専門的な性質や複雑さに関す
ることです。しかし、それだけにとどまらず、正しいコードを正しいやり方で書く方法に関する
ことも含まれます。また、良いプログラマーと悪いプログラマーとを分ける「姿勢」についても
言及します。具体的には、「ソースコードの見栄え」「防御的コーディング手法」「プログラム
を効果的にデバッグする方法」「上手な共同作業のスキル」「ソースコードの管理」といったト
ピックを詳しく取り上げています。さらに、プログラマーの「姿勢」や取り組みといった「プロ
グラマーの実態」(さまざまなコードモンキー)、仕様書の作成、コードレビューの実施、期間見
積もりの黒魔術などの「ソフトウェア開発プロセス」、そして、「ソフトウェア開発の方法論」
「さまざまなプログラミングの規律」などの、より高度な開発プロセスについても触れています。
何より「自分の頭で考える」ことが重要ですが、各章末にはQ&Aセクションがあり、教科書とし
て使用することも可能になっています。
  

を、秋葉原の書泉ブックタワーで発見。 いちめんのなのはなCode Craft

OCaml本も発見。

そのほかの本日の収穫。 出版予定表からすると、Erlang本もありそうだけどみつけられず。 みんPy Webアプリ編が最後の一冊だったし売り切れたのか?
Code Craft ~エクセレントなコードを書くための実践的技法~
Code Craft ~エクセレントなコードを書くための実践的技法~
プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~
プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~
みんなのPython Webアプリ編 [みんなのシリーズ]
みんなのPython Webアプリ編 [みんなのシリーズ]
GUNSLINGER GIRL 9 (9) (電撃コミックス)
GUNSLINGER GIRL 9 (9) (電撃コミックス)
ドラマCD GUNSLINGER GIRL 壁の向こう、世界の果て
ドラマCD GUNSLINGER GIRL 壁の向こう、世界の果て
月刊 comic alive (コミックアライブ) 2008年 01月号 [雑誌]
月刊 comic alive (コミックアライブ) 2008年 01月号 [雑誌]
まんがライフ MOMO (モモ) 2008年 01月号 [雑誌]
まんがライフ MOMO (モモ) 2008年 01月号 [雑誌]
正直竹書房の4コマ誌で読む分だけ集めて一冊に仕立てたいw

今月分で、受け取り最低額に達しましたので数ヶ月ぶりにアフィリエイトを 受け取ることになりました。 ぽちっとなしてくれた方々ありがとう。

from reddit

2007年11月27日

■_ へー

artonさんとこ経由 DARK SERVER - (2007.11.26)

Python 2.4

Python 2.4.3 (#2, Nov  7 2006, 13:07:47)
[GCC 3.4.4 [FreeBSD] 20050518] on freebsd6
Type "help", "copyright", "credits" or "license" for more information.
>>> exit
'Use Ctrl-D (i.e. EOF) to exit.'
>>> type(exit)
<type 'str'>
>>> exit()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: 'str' object is not callable
>>> import sys;sys.exit()
[nyaos@www1082 ~]$

ふむ、やっぱり記憶どおり、Python インタプリタは「わかっちゃいねぇ」。 exit とタイプされ
て、単に変数 exit に入っている文字列を出しているだけなのだ。意地が悪いのではなく、わかっ
ちゃいなかったのである。

でも、よく見ると、メッセージが微妙に違う。今度は Python 2.5 でやってみよう。
+Python 2.5

>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> type(exit)
<class 'site.Quitter'>
>>> help(exit)
Help on Quitter in module site object:

class Quitter(__builtin__.object)
 |  Methods defined here:
 |
 |  __call__(self, code=None)
 |
 |  __init__(self, name)
 |
 |  __repr__(self)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables (if defined)
 |
 |  __weakref__
 |      list of weak references to the object (if defined)

exit が、Quitter というインテリなオブジェクトになってやがる。

こいつ分かってて、わざわざエラーにしてやがる

確かに意地が汚い。極悪だ。

(陰で?)こういう変更があったとは。 全然気にしたことがなかった(笑)

■_ Perl

まとめて。

use Perl | Perl 5.10.0 RC 2 released

Perl 5.10.0 Release Candidate 2 is out, ready to be downloaded from your nearest CPAN 
mirror. You are welcome to compile it, try it, and test your favorite modules with it. 
The perldelta page documents what's new in this major version.

RC2ですよ。と。

で、それに歩調を合わすかのようにActivePerlも。

ActiveState - The ActiveState Blog: Kickstart your week with ActivePerl 5.10.0 Build 1000 Beta

We are happy to announce ActivePerl 5.10.0 Build 1000 Beta, a beta release of the 
complete, ready-to-install Perl distribution for Windows, Mac OS X, Linux, Solaris, 
and AIX.  This build is based on the first release candidate of the Perl 5.10 source 
code.  Since Perl 5.10 is not yet complete, this build is designated as a Beta and 
will be followed by a final build once Perl 5.10 is officially released.

Please use this beta build to try out new features in Perl 5.10 and to test source 
level compatibility of your existing Perl code under this new release (note that Perl 
5.10 is not binary compatible to earlier releases).

大台に乗りましたな。

use Perl | Perl 6 on 
Parrot Roadmap

On Friday I wrote up a brief ROADMAP for Perl 6 on Parrot development, and rather 
than repeat it all as a journal post I'll just link to it. It really does describe 
where we've been, and where we're going in the next couple of months as far as Perl 6 
development.

If you're wondering where this fits -- right now I'm aware of three Perl 6 
implementations underway:

    * Pugs - Haskell-based implementation (http://www.pugscode.org/)
    * perl6 - Parrot-based implementation (http://www.parrotcode.org/)
    * KindaPerl6 - Perl 5/6-based implementation (http://www.pugscode.org/)

So, the implementation I've been focusing on is the one for Parrot, and that's where 
my journal entries will tend to focus.

More soon...

正直Perl6はもうわけわからんす。

■_ 激烈な死を食らえ○○な××ども

「入門bash 第3版」を読む(7)の(2) - 危ないRiSKのブ・ロ・グ 経由 跡地 - かつて日本[の会と呼ばれた会

今年のエイプリルフールにこういう楽しいことをやっていたとはッ(笑)

次世代 [ の開発に向けて - かつて日本[の会と呼ばれた会
$ eat flaming death
eat: not found

さりげなく Jargon File(New Hacker's Dictionary)からこういうネタを拾ってくる辺りが好き :) 参考: eat flaming death CPU Wars - Wikipedia, the free encyclopedia
日本語版書籍にも載ってまーす→ ハッカーズ大辞典 (Ascii books)

■_

あのGRAPE開発者・伊藤智義が目指す三次元TV実現/Tech総研

 その後、連載は好評をいただいて単行本になりました。大学院1年生のとき、単行本が売れたことで、
私の年収は印税収入などで1400万円もありました。そのまま続けていれば、かなり収入を得られたか
もしれません。でも、それで食っていこうと思ったことはありませんでした。むしろ大学院の1年目で、
もう漫画のシナリオライターには一旦終止符を打っていました。一番大きな理由は、やはり科学者にな
りたいのだ、という思い。だから、大学院の研究に専念したかったんです。

 中学や高校の頃、世の中を変えているのは誰なのか、とよく考えていました。歴史の本には政治家の
名前が出ています。でも、実際に変えているのは、科学者なんです。産業革命しかり、原子力やロケッ
トしかり。指示をした政治家が表に出ているけれど、実際に作り、人類を変えるような発見をしたのは
誰なのか。これが、私の科学者への動機でした。経済的な成功がほしいわけではなかったんです。して
みたかったのは、歴史を変えるようなこと。誰かを驚かせ、誰かに褒められること。名誉を得て、それ
こそ教科書に太字で名前が書かれる。そういうことこそ、いやそういうことだけが、自分の中ではカッ
コイイことでした。その美学を貫きたかったんです。

 実際のところは、大学院を出て、初めて大学の助手になったときの年収は310万円。世間は厳しいと思
いましたね(笑)。

うーむすごい落差だ。

■_

財産争いに激怒した女性、財産をびた一文も残さないと雑誌で宣言 - GIGAZINE

へー、「恥を知れ」って“Shame on you all”っていうのか。と妙なところに関心(笑)

■_

enbug diary: What Every Programmer Should Know About Memory

Ulrich Drepperの例の論文ですが、一通り読み終わりましたよ。

わたしゃあの分量に負けて手を出す気になれずにいたんですが、さすがおくじさん というかあれぐらいはちゃっちゃと読めないとダメなんでしょうねえ○| ̄|_

P.S. それよりもっと驚いたのは自称オープンソースプログラマな人がUlrich Drepperの名前も知
らないことであった!相当な有名人だと思うんだがな、少なくとも開発者の間では。

忘れたくても忘れられない名前ですよ。 わたしにとっては(笑)

from reddit

2007年11月26日

■_ PEG

参加希望してても機能の体調じゃあ無理だったわな。と思いつつ 参加した方々の書き込みをチェック。

■_ Scala

cdiggins.com » Is Scala the Ultimate Object-Oriented Language?

I recently started developing the syntax for a model-based language I am working on 
and I found myself basically writing down the specification for the Scala language!

This prompted me to go back and visit the Scala site (http://www.scala-lang.org) which 
I hadn't done in a while and see how things are going. I am very happy to report that 
the language specification has been stable for quite some time, and that the documentation 
is steadily improving. Furthermore Scala is now being used in several programming language 
courses (http://www.scala-lang.org/community/say.html#courses). However, what I am 
particularly pleased about is the library support of Actor based concurrency. Actor 
concurrency is the model used by the increasingly popular language Erlang.

So it turns out everything that I wanted and expected in a high-level language is already 
in Scala: object oriented programming support, lots of libraries, easy-to-use support for 
concurrency, easily extended, support for mixins, type-inference, familiar syntax, no 
superflous features, and deep support for functional programming. I have to say that above 
all what makes me happiest about Scala is not the inclusion of features but that the 
features supported is a consistent and coherent set that makes sense for software design.

ベタ褒め?

■_ Pythonで吃驚

odzさんとこ経由で 2007-11-25 - プログラミング日記

Pythonクイズ。以下を満たすnの値は何でしょうか?

>>> n = ???
>>> n == n + 1
True

一瞬考え込んだ後、NaN ぢゃなかろうか?と思ったのだけどPythonにNaN

span>はないのね。 提案はされているらしい

いかん、そもそもNaN

span>は 題意を満たさんw

追記:
解答編も出たようで。

■_

実務的GPLの解釈についてまとめたいと思うのです - kinneko@転職先募集中の日記

とりあえず、アマチュアがソフトウエアをリリースする場合、GPLにしておけば特許も免責され
ると思っている方がいるという発言があったことと、GPL3 であやふやな形でDRMや特許への対抗
措置が盛り込まれたので解釈が難しいなどが、いまさらまとめなおすことの意味があるんじゃな
いかと思った次第です。

それはまあなんという楽観的な勘違いというか>特許の免責

■_

Open Tech Press | 「Python 3.0」は2008年3月にベータ版登場の見込み――3.0への移行支援を担う「Python 2.6」も同時開発中

Goodger氏によれば、PythonはWeb開発などの用途で普及しており、メモリ管理や変数宣言のような
作業を開発者の代わりに行うなどの長所を持っている。「プログラマーにとって、Pythonはほかの
言語よりもずっとなじみやすい」(同氏)

別にケチをつけようという気はないのですが、 「変数宣言のような作業を開発者の代わりに行う」というのは? int hoge のような宣言がないよ、ということとは違うことを言っているのでしょうか?

from reddit

2007年11月25日

from 2ch某スレ

      / ̄ ̄ ̄ ̄ ̄ ̄\ 
    /             \ 
   /                  ヽ 
    l:::::::::.                  |  
    |::::::::::   (●)     (●)   |  
   |:::::::::::::::::  \___/     |  
    ヽ:::::::::::::::::::.  \/     ノ  

なすべきことをやる気はあるが、それをやる能力がない。 
なすべきことをやる能力はあるが、それをやる気がない。 
やる気も能力もあるが、何をなすべきかわからない。 

うーむ。深い。深いよ大ちゃん。

2007年11月24日

モナド? 怖くないよ

Brian Beckman: Don't fear the Monads
http://channel9.msdn.com/Showpost.aspx?postid=358968

Brian Beckman: Don't fear the Monads
Get Microsoft Silverlight
By clicking "Get Microsoft Silverlight" you accept the
Silverlight license agreement
Silverlight updates automatically, learn more
Posted by Charles // Thu, Nov 22, 2007 1:42 PM

Functional programming is increasing in popularity these days given the inherent 
problems with shared mutable state that is rife in the imperative world. As we march 
on to a world of multi and many-core chipsets, software engineering must evolve to 
better equip software engineers with the tools to exploit the vast power of multiple 
core processors as it won't come for free as it did in the recent past which was 
predictably based on Moore's law.

Of course, learning new ways to think about programming semantics and code patterns 
are not always straight forward. For example, most imperative programmers (which 
include most of us who build software for a living...) are somewhat perplexed by the 
notion of functions as first class data structures that can be combined to create 
powerful and composable systems. Languages like Haskell are pure functional 
languages and require programmers to think in a different way, often in a precise 
mathematical fashion where composing and chaining functions is "the Way".

Dr. Brian Beckman, a Channel 9 celebrity, astrophysicist and senior software 
engineer thought it would be a very good idea to address the complexity of monads in 
an easy to understand way: a technical conversation at the whiteboard with yours 
truly for Channel 9.

This video interview is the result of Brian's idea that he can in fact remove the 
fear of monads from anybody who pays attention to his explanation. Of course, you 
can't just cover monads in a vacuum (category theory is not really addressed here) 
so the context is functional programming (Brian covers functions and composable 
functional structures (function chains) and of course monoids and then monads).

Tune in. There's a lot to learn here and only Brian can make monads easy to 
understand for the rest of us!

Happy Thanksgiving to all the US Niners out there.

Enjoy.

あんまリスニングに自信ねーんだよなあ。

時間切れか

PEGの集会がやばい件 - 日記を書く[・ _ゝ・]はやみずさん Onion開発日記(2007-11-21) http://www.coins.tsukuba.ac.jp/~i021216/diary/?date=20071121

悩んでいるうちに当日になってしまった○| ̄|_

くだすれFORTRAN(超初心者用)その2

965 デフォルトの名無しさん [sage] Date:2007/11/19(月) 14:10:39  ID: Be:
    保守代わりに下らない質問
    77にはDO WHILE文は無いよね?
    77ではIF(~) GO TO ~ってやるしかないよね? 


967 デフォルトの名無しさん [sage] Date:2007/11/20(火) 23:02:03  ID: Be:
    >>965
    DO WHILEはないが、GOTOの種類ならたくさんあるぞw

    >>966
    mはintegerだから
    基本整数型が32bitの場合、2147483648以上の数は扱えない。 


974 デフォルトの名無しさん [sage] Date:2007/11/23(金) 21:09:52  ID: Be:
    学生時代、情報科の先生にプログラミング言語は何教わった?と聞かれて
    Fortran77ですと答えたら、それ古いぞ今はCだと言われた。
    それからだいぶ経つのに、77を教わっている学生さんが居るとは、
    教えてる奴はよっぽど77好きなんだろうな。

975 デフォルトの名無しさん [sage] Date:2007/11/23(金) 21:19:46  ID: Be:
    計算科学あたりでは今でも F77 教えてたりする。
    今はもう C すら古いというのに。 


977 デフォルトの名無しさん [sage] Date:2007/11/23(金) 23:21:36  ID: Be:
    >>974-975
    真理は時間や空間には依存しないもの。
    流行り廃りがあるような内容は、学問ととして伝授するに値しない。
    FOTRANは、普遍的不変なる価値を持つのだ。

    50年前のコードが動いて、実際使われているんだから、
    こんな再利用可能な習得価値のある言語は無い。

978 デフォルトの名無しさん [sage] Date:2007/11/23(金) 23:32:26  ID: Be:
    バグを抑制するための仕様が貧弱だから
    保守が大変なんだよ。 

979 デフォルトの名無しさん [sage] Date:2007/11/23(金) 23:57:45  ID: Be:
    C言語のことかーーーっ!!! 

980 デフォルトの名無しさん [sage] Date:2007/11/23(金) 23:58:50  ID: Be:
    ちょっと前はとりあえずF77でやっときゃおk、だったが今はさすがにF90だろ
    いつまでも研究室レベルのコードでいいなら別に構わんけど 

981 デフォルトの名無しさん [sage] Date:2007/11/24(土) 00:31:30  ID: Be:
    F90からいきなり入った連中は、変数命名の伝統を守らなかったりするので、再教育が面倒。
    規格を硬くして厳格に守るべき部分もあるが、自由度を大きくしたまま慣習法によって厳格に守る部分
    があってもいい。いざというときだけ破格で逃げる。とにかくバランスを間違えてはいけない。

    英米系の慣習法と独仏系の制定法の伝統にもよるのかもしれないが・・・・
    情報学科よりの連中は、PASCALがなぜ廃れたかの教訓を得ていない。

    それはそうと本来情報教育の講座が、しっかりした教材を用意すべきだと思うのだが、
    連中はFORTRANとかを無闇に馬鹿にして、すぐに忘れ去られる新規言語に飛びつくからワロスワロス

    まぁ、FORTRAN全盛時代の代表的なテキストたる浦昭二のFORTRAN本も暗黙の型を
    守っていないのでどうしようもないのだがw

982 デフォルトの名無しさん [sage] Date:2007/11/24(土) 00:44:51  ID: Be:
    FORTRAN77 を使ってあまりの酷さに逃げたわ。
    何、あの引数の数。構造体が無いから酷い。
    それを避けようとしたら COMMON 変数まみれ。
    最悪だ。 

983 デフォルトの名無しさん [sage] Date:2007/11/24(土) 01:22:57  ID: Be:
    >>982
    FORTRANではバッチ処理で物理メモリーを限界まで使うことが多いが、
    そうなると自由にメモリーを再利用できるCOMMONは非常に便利。
    メモリーが貴重な時代には非常に合理的な仕組みだった。
    今風に言うとガベージコレクションを自分でやれる。

    その時代時代の最高のハードウェアの制約を前提として限界まで使うにはFORTRANはいい言語。
    無限のメモリーやCPU速度を暗黙の前提にしている仮想マシン上の観念言語とは違う。

    FORTRAN77程度で逃げるのは根性無し。FORTRAN66で根性つけて出直せw

984 デフォルトの名無しさん [sage] Date:2007/11/24(土) 10:01:32  ID: Be:
    プログラマにはそんな無駄な根性なんて要らない。 

985 デフォルトの名無しさん [sage] Date:2007/11/24(土) 10:19:09  ID: Be:
    必要なのはデスマを生き抜く体力のみ。 


965と967のやりとりに受けた。 計算形GOTOとかありましたなあw わしが大学でやったFORTRANも77だった。

情報学科よりの連中は、PASCALがなぜ廃れたかの教訓を得ていない。 ふむ。なんだろう? 自分の考えとしては、単純に時代についていけなくなったからと考えているのだけど。 素のPascalでは分割コンパイルすらできないし、 システムよりのプログラミングはCが制覇しちゃってるし FortranやCOBOLもそれぞれの得意な領域があったと。

Luaクルーッ

プログラミング言語 Lua  その3

597 デフォルトの名無しさん [sage] Date:2007/11/20(火) 00:10:47  ID: Be:
    Lua本(゚∀゚)コター!!
    ttp://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html 

598 デフォルトの名無しさん [sage] Date:2007/11/20(火) 00:47:15  ID: Be:
    コタワァ*:.。..。.:*・゚(n‘∀‘)η゚・*:.。..。.:* ミ ☆ 

599 デフォルトの名無しさん [sage] Date:2007/11/20(火) 01:21:05  ID: Be:
    しかも今年中の予定か。
    実現したら自分へのクリスマスプレゼントにする……っ! 

600 デフォルトの名無しさん [sage] Date:2007/11/20(火) 01:26:39  ID: Be:
    なにかの死亡フラグに見えた 

601 デフォルトの名無しさん [] Date:2007/11/20(火) 15:30:26  ID: Be:
    日本語解説書期待age

でるのか…

あえてそこには触れずに

着払いでいいですが、発送前に予告してからにしてください。 イキナリだとびっくりしますのでw

jijixiさんとこのコメント欄。

jijixi's diary - #4381 (正しい文(クイズ)) , Programming Erlang (ペーパーバック)
ゲット , ところで全然関係無いけど…… , shinh さんの回答 ..

% cooldaemon (2007-11-24 19:12)

>Programming Erlang

秀逸な "入門本" ですから(w;
% jijixi (2007-11-24 19:34)

> "入門本"
そうなんでしょうね。
まあ、洋書なんてあんまり買ったことないので良い記念です(謎
っていうか、技術系の洋書買ったのって今回が初めてのような気が。(良いのか
それで?)
% takkanm (2007-11-24 20:30)

なんかErlangの入門書日本語のやつもでるみたいですね。
http://www.amazon.co.jp/gp/product/4756150705/
% jijixi (2007-11-24 20:51)

よく見たら発売日もうすぐじゃないですか。
でも買うかどうかは中身見てからかなー。

発売来週じゃん。と思いErlangスレを覗いてみれば

【関数】Erlang【エリクソン】

236 デフォルトの名無しさん [sage] Date:2007/11/08(木) 08:22:39  ID: Be:
    Programming Erlangはつまらなかった
    つまらない言語は使い物になる
    ということなのかもしれない

237 デフォルトの名無しさん [sage] Date:2007/11/09(金) 05:19:29  ID: Be:
    柏原 正三『プログラミング言語Erlang入門』
    ttp://www.amazon.co.jp/dp/4756150705/
    『Programming Erlang』に手が出せなかった人には朗報か

    この著者ってC/C++/Javaの本でよく見かけるから
    保守的なイメージあったんだけど
    こういう人がErlangの本出すっていうのは少し意外

238 デフォルトの名無しさん [sage] Date:2007/11/09(金) 08:10:07  ID: Be:
    Erlangって保守的な気がするけど。

うげ二週間前に情報でてるじゃん。見落としてた。 237も言及しているけど、わりとコンピュータ関係の本で見かける名前の方なので Amazonさんで調べてみると結構書いてらっしゃいますねえ。 何冊か買ったことのある本もあるなあ。

from reddit

本日の購入

Excel Hacks 第2版― プロが教える究極のテクニック140選
Excel Hacks 第2版― プロが教える究極のテクニック140選
ある意味メシの種(笑) 良いのか悪いのか…
はじめてのPython―「生産性」「汎用性」に優れ、習得が容易なプログラミング言語 (I/O BOOKS)
はじめてのPython―「生産性」「汎用性」に優れ、習得が容易なプログラミング言語 (I/O BOOKS)
そーか、オライリーのは「初めてのPython」と漢字表記なんだな。
日経ソフトウエア 2008年 01月号 [雑誌]
日経ソフトウエア 2008年 01月号 [雑誌]
Yuguiさんの連載が最終回。 めずらしく(?)ハードがらみの特集があります。 また、小野和俊さんの新連載あり。 小野和俊のブログ:諸君 私はプログラミングが好きだ のコピペが登場しております。

Implementaion Patterns

角谷さんが紹介エントリを書いて、reddit日本語版にもリストアップされてますが

予約したのが届いてはいるんですよねえ

薄いし先に読んじゃおうかなあ。

2007年11月23日

レンタルマギカはいいよね。主題歌はw

ということはどうでもよくて。 どう書く?org 4375 jijixi: JoCaml は OCaml に並行プロ...(分散関数呼び出し) - 投稿の詳細

JoCaml は OCaml に並行プログラミングの概念の一つである join calculus のサポートを組み
込んだ言語です。

並行プログラミングと分散プログラミングがサポートされています。 
  

なるほどお。その方面の言語でしたか。

「JoCamlってのはナニモノ?」って声が聞こえてきてセツなかったので、JoCaml で投稿して
みた。→#4375

まーなんつーのか、ググっても日本語のページはわしの日記くらいしか出てこないあたり、
実は誰もいじってないのかしらと心配なんだが、どうなんだろね。programming reddit
なんかを見てると、海外ではじわじわ人気が出てきてるようにも思えるんだけど。
  

あう。ぐぐりもせずに書いておりました。 でも、Caml/OCamlでjijixiさんがイロイロ書かれているのは読んだ覚えがありますが、 JoCamlにも言及されてましたっけ? とここで初めてぐぐってみる。 はー、今年の5月末と6月頭のエントリですか。鳥頭2.0だw

ふむ。ほとんど内容がないけどWikipedia (英語版)にもちゃんとありますね → JoCaml - Wikipedia, the free encyclopedia Join-calculus - Wikipedia, the free encyclopedia

言葉の独り歩き

「大艦巨砲主義」って本来の意味で捉えられることはほとんどないよね。 その手のことは他にいくらでもあるから (言葉の変化ということで)まあ、いいんだけど。 大艦巨砲主義 - Wikipedia

あと、戦艦大和って日本帝国海軍の時代遅れを示すものとして使われることが ままあるけど、これもちょっと事実誤認が多いと思う。 確かに就役したのは太平洋戦争開戦の後だし、ロクな戦果も挙げてないけれども、 アメリカにしても大和より後に作っている戦艦はあるし、 大英帝国に至っては第二次世界大戦終結後に完成した戦艦まで持っている→ ヴァンガード (戦艦) - Wikipedia ちなみにさらにその後に完成・就役した戦艦もあったりする→ ジャン・バール (戦艦・2代) - Wikipedia

結果として、壮大な無駄遣いになってしまったということは否定できないかもしれないけど 大和の建造開始(昭和12年)の時点で、第二次世界大戦のような様相を予想できた人は 極少数であり、わたしたちは後の世からいわば「神の視点」でもって 「ああすれば、こうすれば」ということをぴーちくぱーちくいうことはできるけれども、 すべきではないと思う。なぜそういう選択がなされたのかという考察は別ね。

BS受信用のアンテナって建てるの面倒なのかな

「BS11 全国無料ハイビジョン放送いよいよ開局」 アニメも充実!放送作品を一挙紹介!!

GUILE

artonさんの指摘をうけ(いや、自分にそうしろという話ではなかったのですが)、 Cでのコーディング規約/標準 を探してみた。 が、C++がやたらと引っかかる結果となってしまったw まあそれでもC用のものもあったのでいろいろ見ていたのだけど、 GNU の標準で見つけた記述。

GNU コーディング規約
http://www.sra.co.jp/wingnut/standards-j_toc.html

言語は何を使うべきか

コンパイル言語で高速に実行される言語を使いたいのなら,一番良いのはC 言語を使うことで
す. 他の言語を使うのは標準外の機能を使うようなものです. ユーザにとってはトラブルの元
です. もし, GCC が C 以外の言語をサポートしていたとしても, プログラムを構築するには, 
その言語用に GCC をインストールしなければならないとしたら, 面倒だと感じるでしょう. 
例えば, 読者が C++ でプログラムを書いたとすると, 他の人はそれをコンパイルするために
は GNU C++ コンパイラをインストールしなくてはなりません.

C++ やその他のコンパイル言語に比べて C には一つ有利な点があります. C を知っている人
の方が多いので, C で書かれたプログラムを読んだり修正したりするのが簡単にできる人の方
が多いということになります.

このため,他の候補となる言語よりも C を使った方が一般にはずっと良いのです.

ただし,例外が二つあります.

    * ある言語専用のツールは, その言語で書いても問題ない. そのツールを構
      築する人だけがその言語をインストールすればいいのだから.

    * 興味を持つ人がごく限られるアプリケーションプログラムなら, どの言語
      で書かれているかという問題はその他の人にはあまり関係ないだろうから,
     読者の意のままに使って良い. 

拡張性を持つように設計されているプログラムはたくさんある. そういうプログラムは C 言
語よりも高級な言語のインタプリタを内蔵している.そのプログラム自体もその言語で書かれ
ていることも多い. Emacs エディタがこの技法の先駆けとなった.

GNU ソフトウェアの標準の拡張用インタプリタは GUILE である.GUILE はScheme 言語の実
装である(Scheme は Lisp の非常にきれいで簡潔な方言である). 
http://www.gnu.org/software/guile/. われわれは他の「スクリプト言語」例えば Perl や 
Python で書かれたプログラムを拒絶することはないが, GUILE を使
  うことは GNU システム全体の一貫性のためには非常に重要である.
  

え、まだそういう立場のものだったの?>Guile

日本語訳が古いだけかもしれないと思って、原文も見てみることにしたところ、 last updateがつい最近だったりした。とはいうものの、

Source Language - GNU Coding Standards

The standard extensibility interpreter for GNU software is GUILE 
(http://www.gnu.org/software/guile/), which implements the language Scheme (an 
especially clean and simple dialect of Lisp). We don't reject programs written in 
other “scripting languages” such as Perl and Python, but using GUILE is very 
important for the overall consistency of the GNU system.
  

変わってNEEEE(笑)

C FAQに ポインタ経由の関数呼び出しについて言及している項目があった。

comp.lang.c FAQ list ・ Question 4.12

Q: I've seen different syntax used for calling functions via pointers. What's the story?

A: Originally, a pointer to a function had to be ``turned into'' a ``real'' function, 
with the * operator, before calling:

	int r, (*fp)(), func();
	fp = func;
	r = (*fp)();

The interpretation of the last line is clear: fp is a pointer to function, so *fp is 
the function; append an argument list in parentheses (and extra parentheses around 
*fp to get the precedence right), and you've got a function call.

It can also be argued that functions are always called via pointers, and that 
``real'' function names always decay implicitly into pointers (in expressions, as 
they do in initializations; see question 1.34). This reasoning means that

	r = fp();

is legal and works correctly, whether fp is the name of a function or a pointer to 
one. (The usage has always been unambiguous; there is nothing you ever could have 
done with a function pointer followed by an argument list except call the function 
pointed to.)

The ANSI C Standard essentially adopts the latter interpretation, meaning that the 
explicit * is not required, though it is still allowed.

See also question 1.34.

References: K&R1 Sec. 5.12 p. 116
K&R2 Sec. 5.11 p. 120
ISO Sec. 6.3.2.2
Rationale Sec. 3.3.2.2
H&S Sec. 5.8 p. 147, Sec. 7.4.3 p. 190
  

H&Sの邦訳なんて、今は手にはいらねえだろうなあ (学生の自分に読んだことはある。金がなくて買えなかったんで“後輩”が 買ったのを借りて読んだんだけどw)

あと、(*fp)(); をfp(); と表記するのの起源ですが、

3.3.2.2  Function calls

Pointers to functions may be used either as (*pf)() or as pf().  The latter 
construct, not sanctioned in the Base Document, appears in some present versions of 
  C, is unambiguous, invalidates no old code, and can be an important shorthand.  The 
shorthand is useful for packages that present only one external name, which 
designates a structure full of pointers to objects and functions: member functions 
can be called as graphics.open(file) instead of (*graphics.open)(file). 

  

というのが見つかりましたので、やはり何かの処理系でそのようになっていたのを 取り込んだということのようです。多分 pcc ではないと思いますが。

Cで多態

L'eclat des jours(2007-11-23)

ああ、確かにCOMに関連するところはもろにそれですね。 #ifdefでC++とCとで別々に書かれているところを比較して読んでみると、 どういうからくりになっているのかよくわかりますよね。 ただ、これはVisual C++前提なのでコンパイラによっては 同じ書き方が通じるとは限らないと(考え方自体は問題ない)。 かすかな記憶をたどると、C++でいうところの vtableをオブジェクトを表す構造体の 先頭においてどうこうというのが特許になっていたような。 その後異議申し立てとかあったかどうかまでは覚えてません。 と、これは脱線。

Haskell/Lua/Scala/Erlang⇒次にくる言語

sumii先生さんの紹介エントリ (「【新・言語進化論】次にくる!新登場言語」 - sumiiの日記) を見て初めて知る。むーこんな記事があったとは。

またまた脱線なんですが、Luaの

Luaの思想は言語のコアとしては選び抜かれた数少ない概念のみを提供し、そこから複雑な概
念を「組み立てる」ことにある。<1-- Luaはオブジェクト指向言語ではないが、テーブルとファー
ストクラス関数、そして少々のsyntactic sugarによってオブジェクト指向の仕組みを非常に
巧みに組み立てることができる。-->
  

こういう考え方は好きです。もし仮に自分がなにかの言語を作る機会があったなら 多分こういうポリシーの元で作ると思います。が、実際にそうできるかどうかは別の問題w

DQ4

近くのディスカウントショップで売っているのを見かけたが、 自分がシリーズで一番すきなのは3だったりするのでスルーしてみた。

2007年11月22日

  気に入らないところだらけ

  敗亡の際にさえ立たされているこの国に

  自分のなにがあるのだろう


  皇国の守護者(漫画版) 第5巻 新城直衛の独白

■_ gawkとかxgawkとかそのへん二題

さいとうさんのとこ

massy256massy256 2007/11/20 23:27
いいかげん、Shift-JIS な、MS-Windows で gawk を使うのがいけないのでしょうか。とはいえ、
OS として、MS-Windows しか使えない場合困るのですね。Gnu awk から分岐した、SJIS 専用版
があればよいのですかね。

RoccoRocco 2007/11/22 00:40 gawk は MS-Windows をサポートしていますので、gawk 側で直し
ていかないといけないです。SJIS 用に fork してしまうと以前の jgawk のように特化したも
のができるのかもしれませんが、それは gawk として望ましいこととは言えません。

Perl も jperl だった時代がありますが、それを encode.pm にしてしまうことでロケールに特
化することなく進化したと言えると思います。gawk の場合、そうしたライブラリを構築するこ
とができないため、結果的に gawk 本体に手を入れる必要があり、しかも、glibc の一部を使
っているため glibc に手を入れる必要があるわけです。

日本語圏以外では、結果が良いのか悪いのかすら分からないので、とりあえず、SJIS を表示で
きる環境の作り方を教えてあげるのも、Bug fix の過程で必要なのではないかと考えています。 

あー、2.11とか 2.15、3.0.6あたりがベースの jgawk / gawk+mb でしたら ShiftJISのみに対応ってのはありですが、現状ではそれはまずありえません。 なぜなら、文字列処理をいったんUnicode(実際にはCでいうところの wchar_t)に してから行うことで多言語処理に対応していて、かつてのjgawkのように ShiftJIS(やEUC-JP)のバイトパターンをプログラムにハードコーディングして 対応しているのではないからです。まあ、プログラム中で呼び出している マルチバイト文字→ワイド文字列の変換に使っているライブラリ関数が 縁の下でがんばっているという話ではあるのですが。

今回の問題は、gawkで行っているそのようなマルチバイト文字列→ ワイド文字列の変換が行われるのが必要に応じてのものであって、 PerlやPythonのようにユーザーの目に触れる形では存在していないことにあります。 Unicode文字列(≒ワイド文字列)を使って文字列操作をするならするで それで統一的に取り扱うようにすればいいのにそうなっていないのです。 そして、そのほころびがShiftJISではでやすいということです。

awkについて語るスレ $2
http://pc11.2ch.net/test/read.cgi/tech/1172242542/l50

73 デフォルトの名無しさん [] Date:2007/11/22(木) 06:36:33  ID: Be:
    xgawkで多倍長整数を使いたいんですが、
    printf( "%ld\n", num );
    では桁数は増えても精度は上がってないようです。
    型宣言するにはどうするのでしょうか 

74 デフォルトの名無しさん [sage] Date:2007/11/22(木) 07:17:23  ID: Be:
    <<73
    多倍長整数を実装するのに個別の精度を上げてどうする。 

75 デフォルトの名無しさん [sage] Date:2007/11/22(木) 07:34:48  ID: Be:
    xgawkは多倍長整数あるんですよね?
    で、rubyのように無宣言で使えるかと思ったらそうではないらしいので、
    どうするのかと。

    http://home.vrweb.de/~juergen.kahrs/gawk/XML/xmlgawk.html
    いまこのへん見てるんですが 

76 デフォルトの名無しさん [sage] Date:2007/11/22(木) 08:47:49  ID: Be:
    MPFR,多倍長整数ではなく実数かな。
    ググって見つけました。
    http://www.kt.rim.or.jp/~kbk/zakkicho/zakkicho7.html#D060126

    http://golf.shinh.org/p.rb?Factorial
    実はこれやってるんですが。
    あとはdllのパスが分かれば・・・ 

を? なぜにわしんとこのURLが? ここに上げたxgawkのバイナリだったらXML解析ライブラリと mpfrはスタティックにリンクしているから、 DLLだのなんだのはいらんはずだが (オプションでロードだけ指定すれば良い)。

■_ web私書箱

Adobe AIRを利用した無料のストレージサービス「Web私書箱」

「AIRがベータ版のうちは、Web私書箱は無料で提供する」とした。

ここが気になって仕方がないんですが(笑) 有料化する腹積もりなら最初からそうアナウンスしといてくれと。

■_ Parrot

0.5.0がリリースされたので、ビルド。 作成手順を忘れてしまっていたので先月の自分の日記で確認したw

 E:\work\src\parrot-0.5.0 のディレクトリ

2007/11/22  13:33               12,288 miniparrot.exe
2007/11/22  13:40               29,184 parrot.exe
2007/11/22  13:41               36,864 pbc_merge.exe

 E:\work\src\parrot-0.5.0 のディレクトリ

2007/11/22  13:33            4,034,560 libparrot.dll
               4 個のファイル           4,112,896 バイト

以前 redditで引っかかった覚えのある記事の翻訳 →InfoQ: Parrot VMは時代遅れか? これって抄訳?…でもないのか。 もっと長い文章だったような気がしたんだけど。 from コメント欄

Parrot is too late, as well as Perl 6

Sep 23, 2007 12:25 PM by Guo Pei

Parrot is absolutely too late for what it targets. The same thing with Perl, two
things happened in those 6 years:

Parrotは目的としていたところに到達するにはもうどうしようもなく手遅れな
状態になってしまった。同じことはPerlも同じで、この6年の間で二つのことが
起きている。

1) The world of language has progressed really fast without Parrot, and its original
design most likely obsoleted in some areas;

プログラミング言語の世界はParrotを置いてきぼりにしてものすごい早さで
進歩してしまい、Parrotのオリジナルデザインは一部の領域においては時代遅れの
ものになってしまった。

2) Maybe the design of Parrot also changed to keep up with the trend, however that
means its design is no longer consistent.

Parrotのデザインもまた時代の流れ(trend)にあわせて変更されていっている
かもしれない。しかし、それは実際にはParrotのデザインというものが最早
consistentなものではないということをに他ならない。

For Perl 6, the big question is how many people still care. Not many, other than
hardcore Perl guys. It lost its speed for long, and 6 years ago there were still
many want to revive it, but even those ones have faded away in 6 years.

Perl 6 won't be a bad choice for those who have been with Perl forever, because it
is probably easier to take on.

うわ、手厳しい。

■_ こーぞーたい

MSN相談箱 スタックについて

MSN相談箱 スタックについて
http://questionbox.msn.co.jp/qa3536042.html


スタックを実現するプログラムを作っているのですが、実行するとセグメテーション違反が表示
されます。でもどこが間違っているのかわかりません!どうしたらいいのでしょう?


#include<stdio.h>
#include<stdlib.h>

struct stack{
    int max;
    int used;
    int *array;
};

struct stack *
stack_create(int n)
{
    struct stack *s;
    int i;

    s->array=(int *)malloc(sizeof(int)*n);
    s->used=0;
    s->max=n;
    return 0;
}

void
stack_free(struct stack *s)
{
    free(s);
}

int
stack_push(struct stack *s,int datum)
{
    if(s->used>=s->max){
        return 0;
    }
    s->array[s->used]=datum;
    s->used++;
    return 1;
}

int
stack_pop(struct stack *s,int *datump)
{
    if(s->used<=0){
        return 0;
    }

    *datump=s->array[s->used-1];
    s->used--;
    return 1;
}

int
stack_is_empty(const struct stack *s)
{
    return s->used==0;
}

int main()
{
    struct stack s;
    int i,p;
    int n;

    scanf("%d",&n);
    stack_create(n);

    for(i=0;i<=5;i++){
        stack_push(&s,i);
        printf("push%2d\n",i);
    }

    for(i=1;i<=3;i++){
        stack_pop(&s,&p);
        printf("pop%2d\n",p);
    }
}

回答 No.5
(1)stack_create
 構造体『struct stack』の領域を確保していない。
 ポインタ『s』には構造体『struct stack』の領域のポインタをセットしていない。
 戻り値に 0 を返しているので確保した領域は忘れる。→完璧なメモリリーク
(2)stack_free
 構造体『struct stack』の『array』を解放してから『s』を解放しないとまずい。
 free の操作は2段階になる。確保もmallocを2段階する仕様なので当然です。

まあ原因は既にコメントがついているとおりなんですが、こういう構造体であれば

struct stack{
    int max;
    int used;
    int array[0]; //う、[0]が許されるのは拡張かも知れず
};

のような構造体にしておいて、

struct stack *
stack_create(int n)
{
    struct stack *s;
    int i;

    s = (int *)malloc(sizeof (struct stack) + sizeof (int) * n);
    s->used=0;
    s->max=n;

    return s;
}

みたいにしとくとfreeが一回で済むのでラクですよ。と。 でもどっかで「推奨されない技法」とか批判されてたような気がする。

■_ あ、発見されたw

すみませんねー。本来ならトラックバックを飛ばすべきなんでしょうが そういうハイカラなものはないもので。げふんげふん。 『三田典玄の「体育館の裏話」 - 関数の話(7)』につっこむ(3) - 危ないRiSKのブ・ロ・グ


    関数をポインタ経由で呼び出すときに、a = f(x,y); で良いと明確に規定されたのは、わたしの
    覚えているところでは最初のANSI規格のときです。ですから、それ以前のCにおいてはa = (*f)(x,y);
    と書く理由はあったのです。
おー,知りませんでした。興味深い情報に感謝します。 C言語の変貌についてまとめた本とかWebとかないのかなぁ。仕様が変更された理由とか, 時期とか。断片的なものは散見するけど,私のような新参にはまとめるの難しいなぁ。

大嘘は書いてないと思うのですが、 一次資料とか信頼度の高い(と思われる)二次資料での裏づけを取りなおしてないのでちと不安があったり。 以前どなたかが嘆いてらっしゃいましたが、 C89のISOやANSIでの旧規格すらアクセスできないという状況のようですので、 足で探すよりないのでしょうか。 この手のルーツを探るネタというのは大好きなので、 スポンサーと時間があればやりたいところですけどねえ(笑)

89年という年代を考えると、 Cマガジンの創刊号あたりでこの辺の特集をやってたりしないだろうか? (→ C MAGAZINE バックナンバー一覧) 1990年4月号 で、

特集 ANSI Cの現状
野田誠 猪瀬武久

Part1 ANSI C概論 野田誠
Part2 ANSI Cと日本語処理の課題 猪瀬武久 

というのはあるな。

あと標的wを変えて

[´・[ェ]・] <もももっもっ

    C言語でも関数へのポインタを用いて多態を実現できます。
    http://d.hatena.ne.jp/RiSK/20071121/1195613818

これって、コールバック関数の事……だよね?ね?[´・[ェ]・]

ですが、 『三田典玄の「体育館の裏話」 - 関数の話(7)』につっこむ(2) - 危ないRiSKのブ・ロ・グ にある通り、C++でいうところの vtable 相当を含めて構造体を宣言することで多態ができます。 つか、C++って最初はCのプログラムに変換するトランスレータだったのですが、 そこでそういうことやってたのですよ♪ Cで多態を実現してみるとかC++の昔話なんかはえぴすてーめーさんが詳しいので、 彼のblogとかを丹念に探してみると面白いネタが見つかると思うよ♪ (ここでも言及が 低学歴無能俸給生活者の日記><)

C++の昔話は勉強会で行われた話を膨らませる形で、来年春辺りに出版予定らしいです。

■_ PHP4

今も新規開発され続けるPHP 4アプリケーション - ockeghem(徳丸浩)の日記

しかし、現実はそうではなく、

    PHP 4を利用した新規のWebアプリケーション開発

の方が多いのだ。きちんと統計をとったわけではないが、診断の対象となるPHPアプリケーショ
ンは、今でもPHP 4の場合がほとんどで、その多くは新規開発なのだ。

これは、どういうことだろう。Webアプリケーションの脆弱性診断(決して少ない出費ではない)
を依頼するくらいだから、サイトオーナーはセキュリティにはある程度の意識を持っているは
ずだ。それにも関わらず、後1ヶ月ちょっとでメンテナンスが終了するPHP 4で新規開発される
Webアプリケーションは少なくないのだ。
  

うーむ。

from reddit

misc

2007年11月21日

■_ インターネット記念日

今日は「インターネット記念日」なんだそうです。 よつばと日めくりの今日のやつにそうありますた。

昨日あたりから
宇宙に咲く
宇宙に咲く
さらば破壊王・・・橋本真也 前奏付爆勝宣言
さらば破壊王・・・橋本真也  前奏付爆勝宣言

この辺をヘビーローテで聴きまくり。十月放映開始の深夜アニメの主題歌は…って ちょっと前に書いたけど、何回か聴いているうちに結構気に入ってきました>宇宙に咲く とどめは今週の放映された回のOPで使われた英語版なんですがw (英語版もちゃんと収録されています。日本語版と英語版とでタイトルが違います。 日本語版→宇宙に咲く、英語版→FAITH。歌詞自体もたぶん単なる訳じゃないです)

爆勝宣言はここ数日無性に聴きたくなってぽちっとなと(笑) 最初はダウンロード販売のを買おうと思ってたんですが、DRMつきで(まあそれはおいておこう)、 CD-R に焼くことはできない、(対応機種の)DAPに転送できるのは三回まで。 という舐めた制限をしてくださりやがっているのしかなかったので、 カッとなってCDを購入した。後悔はしていない。

■_

IPアドレス枯渇問題、「ろくな対策はないが、IPv6はまだまし」 - @IT

で、実際のところどうなんでしょうか>枯渇問題

■_ コーディングスタイルとか

修正前のコードをコメントで残すってのは、一代二代くらいならいいのですが 増えてくるにしたがって加速度的に読みづらくなりますよね。 納品するのに云々というのはわかりませんが(コードを納品するようなところで 仕事したことないから)、ある程度以上の規模のコードであれば、バージョン管理システムが あるとないとでは全然違いますよね。 わたしが、自分のいた部署に導入させるのに奔走(笑)したときも、 決め手はリリース済みのプロダクトで大バグがでたときの調査の効率が段違いというものでした。 まあ決まった後にも苦労あったんだけどさ○| ̄|_

if (null == ほげほげ)でないと理屈に合わないとか言う 主張ははじめてみたな。幸か不幸か、ifの条件式で == と = を取り違えてバグった という経験はないような気がする。たぶん(だからどうというわけではないけど)。

あと、「初心者にもわかりやすいような記述を」ってのは、往々にして 「(初心者レベルの自分に合わせて)わかりやすく書いてくれよ」という本音がある場合が 多いので、要注意かと。つか、cond = v1!=v2くらいで 悩まないでくれ。

これ→ 某日記(中期) も内容としては関連しているのだろうか。

バグを減らすための一番の方法は、コードを書かないことだ。

うい。

こんな商売からはさっさと足を洗った方がいいのかもしれない。

え゛?

■_ ヲチのヲチ

『三田典玄の「体育館の裏話」 - 関数の話(7)』につっこむ - 危ないRiSKのブ・ロ・グ

多分,今までで一番破壊力がある。

わくわく。


    この「f」のポインタ変数にある関数を呼び出すには、
C言語の指摘なのか日本語の指摘なのか分からなくなってきました。『この変数「f」が指す関数を 呼び出すには,』です。
    以下の書式を使う。

    a = (*f)(x,y);

    で、なんでこんなまどろっこしい方法で関数をわざわざポインタ変数で表現して使うのかというと、
a = f(x,y); で呼び出せます。間接演算子* を適用する意味は全くありません。あなたが無意味なことを してまどろっこしくしているだけです。 関数へのポインタに間接演算子を適用して関数にしても,その関数が再び関数へのポインタに 成り下がり*1,その関数へのポインタに対して関数呼出し演算子() が適用されます。

あー、ここ、ちょっとだけ三田氏に対して弁護の余地ありです。 関数をポインタ経由で呼び出すときに、a = f(x,y); で良いと明確に規定されたのは、わたしの覚えているところでは最初のANSI規格のときです。 ですから、それ以前のCにおいてはa = (*f)(x,y);と書く 理由はあったのです。つっても三田氏の原文を全部は見ていない(あんな重いページ 二度と見たくねえ)ので前後の文脈でこの弁護が意味ないものかもしれませんが(^^;

■_

関係ないけど、そろそろPEGのほうも妄想から一度コードに落としたくなってきた。次の日曜(25日)
に、都内某所にてPEGの意見交換会があるので、興味のある人は声をかけてください。(俺以外)
豪華メンバーが参加予定。

うー興味はあるが…

from reddit

諸々


一つ前のページへ 2007年11月(中旬)
一つ後のページへ 2007年12月(上旬)

ホームへ


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

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