http://www.kt.rim.or.jp/~kbk/zakkicho/index.html - 11/22/09 01:57:51 - 10/07/08 13:59:44
2009年10月23日
・戦う司書 いや面白い。ここまできちんと「一話完結になっていない」お話も近頃では珍しいような。 それだけに次を早くという気分に。 でも次(4話。ネット配信で観てるので)で~編みたいなのは決着つくのだっけか。
ステーショナリーハックス! 掲載されている文房具(通販のみみたいなのは除いても)を全部確認できるような お店どこかにないんだろうか ○| ̄|_
■_ C++ に対する意見の数々
C++ in Coders at Work C++ in Coders at Work (Coders at Work における C++) One of the topics I asked most of my Coders at Work interviewees about was C++. I am not an expert, or even a competent C++ programmer and recognize that my own opinions about C++ are not well-informed enough to be worth much.1 But C++ fascinates me?it's obviously a hugely successful language: most “serious” desktop apps are still written in C++ despite the recent inroads made by Objective C on OS X and perhaps some C# on Windows; the core of Google's search engine is written in C++; and C++ dominates the games industry. Yet C++ is also frequently reviled both by those who never use and by those who use it all the time. わたしが自分の Coders at Work でインタビューの相手に最も尋ねたのは C++ についてのこと です。わたしは (C++の) エキスパートではありませんし competent な C++ プログラマーです らありません。そしてわたし自身の C++ についての意見は、well-informed enough to be worth much.1 ではないと認識しています。しかし C++ はわたしを魅了しました。C++ は明ら かに多大なる成功を収めた言語 (hugely successful language)です: OS X では Objective Cに よって作られれるものが多くなってきているし、 Windows では C#が使われるようになってきて るとしても大部分の “serious” なデスクトップアプリは今でも C++ で書かれていますし、 Google のサーチエンジンの核となる部分は C++で書かれています。C++ はまた、ゲーム業界で は支配的な地位にあります。C++ は今もなお、C++を全然使ったことのない人と年中使っている 人の両方から頻繁に罵られて (reviled) います。 That was certainly reflected in the responses I got from my Coders interviewees when I asked them about it. Jamie Zawinski, as I've discussed recently, fought tooth and nail to keep C++ out of the Netscape code base (and eventually lost). Some of that was due to the immaturity of C++ compilers and libraries at the time, circa 1994, but it seems also to have to do with his estimation of the language as a language: そのことはわたしが自分の Coders interviewees にそれについてたずねたときの回答に明確に 反映されています。Jamie Zawinskiはわたしが最近ディスカッションしたように、Netscapeのコ ードベースからC++を排除すべく奮闘しました(and eventually lost).その一部は1994年当時の C++ コンパイラーとそのライブラリの immaturity のためでしたが、 but it seems also to have to do with his estimation of the language as a language: C++ is just an abomination. Everything is wrong with it in every way. So I really tried to avoid using that as much as I could and do everything in C at Netscape. C++ は単なる abomination (嫌悪感を起こすもの)です。あらゆることがらをあらゆるやり方 でもって間違っています。ですから、わたしは Netscape で可能な限り C++ の使用を排除し てCで行うことを試みたのです。 Part of Zawinski's issue with C++ is that it is simply too complex: Zawinskiの C++ についての issue はただ単に複雑すぎるということです: When you're programming C++ no one can ever agree on which ten percent of the language is safe to use. There's going to be one guy who decides, “I have to use templates.” And then you discover that there are no two compilers that implement templates the same way. あなたが C++でプログラミングしようとしたとき、C++ が安全に使える言語であるということ に賛同する人は 10% もいないでしょう。テンプレートを使わなければならない (“I have to use templates”) と決断した一人の男がいたとしても、後になってから、テンプレートを同じ やり方で実装しているコンパイラーが二つとないことを発見することになるのです。 Note that Zawinski had started his career as a Lisp programmer but also used C for many years while working on Netscape. And he later enjoyed working in Java. So it's not that C++ was either too high-level or too low-level for him or that he couldn't wrap his head around object orientation. Zawinski が Lisp プログラマーとしてそのキャリアを開始しただけでなく、Netscape で働いて いる間、長年にわたって Cを使っていたことに注意してください。そして彼はのちに Java で enjoyed working しています。ですから、彼にとって C++ がレベルの高すぎるものでも低すぎ るものでもなかったのですし、かといって、彼が自分のアタマをオブジェクト指向モードにでき なかったということでもありません。 Joshua Bloch, who also hacked low level C code for many years before becoming a big-time Java head, told me that he didn't get into object-oriented programming until quite late: “Java was the first object-oriented language I used with any seriousness, in part because I couldn't exactly bring myself to use C++.” He echoed Zawinski's point about how C++ forces programmers to subset the language: Joshua Bloch は big-time Java head になる以前は長年にわたりハードウェア寄りの C コード (low level C code) を hack していた人物なのですが、その彼がわたしとても遅いままである 限り、オブジェクト指向プログラミングには移行しないと言いました「Java はわたしがなんら かの seriousness を伴って使った初めてのオブジェクト指向言語でした。それは、部分的には C++ を使う気にならなかったからなのですが」彼は、 C++ が如何にプログラマーに言語のサブ セットを強要しているのかという Zawinski の指摘を繰り返しました: I think C++ was pushed well beyond its complexity threshold and yet there are a lot of people programming it. But what you do is you force people to subset it. So almost every shop that I know of that uses C++ says, “Yes, we're using C++ but we're not doing multiple-implementation inheritance and we're not using operator overloading.” There are just a bunch of features that you're not going to use because the complexity of the resulting code is too high. And I don't think it's good when you have to start doing that. You lose this programmer portability where everyone can read everyone else's code, which I think is such a good thing. わたしは C++ は複雑さの threshold (閾値 or 臨界点)を越えてしまったと思います。それで いてまだあまりにも多くの人がC++を使ってプログラミングしていますが、しかしそれはその 人たちにサブセットを強要しているということなのです。ですから、わたしが知っている C++ を使っている企業はどこもこういうのです 「確かにわたしたちは C++ を使っていますが、多 重継承も演算子多重定義も使っていません」のように。そこにあるのは、resulting code の 複雑さが高度すぎるためにあなたが使いもしないであろう機能の単なる寄せ集めに過ぎません。 誰もが自分以外の誰かの書いたコードを読解できるという、わたしがとても良いことであると 考えている programmer portability をあなたは失ってしまっているのです。 Ken Thompson, who still mostly uses C despite working at Google which is largely a C++ shop, has had as long an exposure to C++ as just about anyone, having worked with with Bjarne Stroustrup, C++'s inventor, at Bell Labs: Ken Thompson はC++ を広く使っている企業である Google で働いているにもかかわらず今でも C を使うことがほとんどであるような人物で、皆さんと同じように長く C++ と付き合ってきて おり、Bell Labs で C++ の inventor である Bjarne Stroustrup と一緒に働いたこともありま す。 I would try out the language as it was being developed and make comments on it. It was part of the work atmosphere there. And you'd write something and then the next day it wouldn't work because the language changed. It was very unstable for a very long period of time. At some point I said, no, no more. わたしは C++ が開発段階にあり意見を求めていたときに試そうとしたことがあります。それ は仕事の一部といった雰囲気でした。そして、あなたがなにかしら書いたことは翌日には動か なくなってしまっているのです。なぜなら、言語の方が変更されてしまったからです。C++ は非常に長い期間、とても不安定なものでした。その時点でわたしが言ったことは no, no more (もういいよ勘弁してくれ)でした。 In an interview I said exactly that, that I didn't use it just because it wouldn't stay still for two days in a row. When Stroustrup read the interview he came screaming into my room about how I was undermining him and what I said mattered and I said it was a bad language. I never said it was a bad language. On and on and on. Since then I kind of avoid that kind of stuff. あるインタビューで、本当にわたしが言ったことは、C++ は議論の真っ最中にあって二日と安 定したものではないので自分は使っていないというものでした。 Stroustrup はそのインタビューを読んだとき、わたしの部屋に飛び込んできてわたしが彼を underminign しているとか、わたしの言ったことは問題発言であり C++ は bad language で あると言ったとか非難しはじめたのです。わたしは C++ が bad language であったとは決し て発言していません。 On and on and on. 以来わたしはその種のことを避けるようにしています。 At that point in the interview I almost changed the topic. Luckily I took one more try at asking for his actual opinion of C++. His reply: その時点でわたしは話題を変えたのですが、幸運なことにわたしにはもう一度、彼のC++に対す る本当の意見を尋ねる機会がありました。彼の返事はこうです: It certainly has its good points. But by and large I think it's a bad language. It does a lot of things half well and it's just a garbage heap of ideas that are mutually exclusive. Everybody I know, whether it's personal or corporate, selects a subset and these subsets are different. So it's not a good language to transport an algorithm-to say, “I wrote it; here, take it.” It's way too big, way too complex. And it's obviously built by a committee. 確かに C++ には良い点があります。しかし一般的に言ってしまえば (But by and large)、 C++ は悪い言語 (bad language) だろうと思います。C++ はたくさんのことがらを half well に行っていて、mutually exclusive なアイデアの単なる garbage heap に過ぎません。個人 的な知り合いや会社がらみであるかを問わずわたしが知っている誰もがサブセットを選択して いて、しかもそのサブセットは別々のものなのです。ですから、 “I wrote it; here, take it.”(ちょっとプログラムを書いてみたよ。持っていて) といった感じでアルゴリズムを transport するのには良い言語ではありません。 C++ は仕様が大きすぎる上に複雑極まりありません。そしてなにより委員会製のものです。 Stroustrup campaigned for years and years and years, way beyond any sort of technical contributions he made to the language, to get it adopted and used. And he sort of ran all the standards committees with a whip and a chair. And he said “no” to no one. He put every feature in that language that ever existed. It wasn't cleanly designed-it was just the union of everything that came along. And I think it suffered drastically from that. Stroustrup は C++ に対して彼が行った技術的な貢献以外にも、採用されて使ってもらうために (to get it adopted and used) 何年も何年も運動をしてきました。彼は鞭と椅子を持って全ての 標準委員会を巡ったのですが、彼は誰に対しても “no” とは言わないのです。彼は存在する機 能のことごとくを C++ に取り込みましたがそれはきちんと設計されたものではなく、単なる持ち 込まれたものすべての集合体だったのです。そこから受けた痛手はかなりのものだったと思いま す (And I think it suffered drastically from that) Brendan Eich, the CTO of the Mozilla Corporation, whose Mozilla browser is written almost entirely in C++, talks about “toe loss due to C and C++'s foot guns” and when I asked him if there are any parts of programming that he doesn't enjoy as much as he used to, he replied: Mozilla ブラウザーをほぼ全て C++ で書いた人である Mozilla Corporation の CTO、Brendan Eich は “toe loss due to C and C++'s foot guns”(C や C++ の foot guns のために失われ たつま先?) について語りました。そしてわたしは彼に、使うのが楽しくなかった parts of programming がなにかあったかどうかを尋ねました。彼の返答はこうです: I don't know. C++. We're able to use most of its features?there are too many of them. It's probably got a better type system than Java. But we're still screwing around with '70s debuggers and linkers, and it's stupid. I don't know why we put up with it. わかりません。C++ は機能があまりにもたくさんありすぎますから、わたしたちが使える機能は その全部ではなく大部分といったところでしょう。C++ の型システムはおそらくJavaよりも良い ものでしょう。けれども、今でもわたしたちは70年代のデバッガーとリンカーでムダに時間を 費やしています。それはとても馬鹿げたことです。なぜそんなことを我慢しなければならない のでしょうか。 At least among my interviewees, even the most positive comments about C++ tended to fall in the category of “damning with faint praise”. I asked Brad Fitzpatrick, who used C++ in college and again now that he's at Google, whether he likes it: 少なくとも私がインタビューした人たちに関して言えば、C++ に対して最も好意的なコメントで さえ“damning with faint praise”(褒めているようで実はけなしている)といったところに行 きがちでした。大学で C++ を使い、そして今また Google でC++を使っているBrad Fitzpatrick に C++ が好きかどうか尋ねてみました: I don't mind it. The syntax is terrible and totally inconsistent and the error messages, at least from GCC, are ridiculous. You can get 40 pages of error spew because you forgot some semicolon. But-like anything else-you quickly memorize all the patterns. You don't even read the words; you just see the structure and think, “Oh, yeah, I probably forgot to close the namespace in a header file.” I think the new C++ spec, even though it adds so much complexity, has a lot of stuff that'll make it less painful to type-as far as number of keystrokes. The auto variables and the for loops. It's more like Python style. And the lambdas. It's enough that I could delude myself into thinking I'm writing in Python, even though it's C++. 気にしてません。構文は不細工 (terrible) だし一貫性は全然なくて、少なくとも GCC が吐き だすエラーメッセージときたらふざけた代物 (ridiculous) です。セミコロンを幾つか忘れた だけで 40ページにも及ぶエラーメッセージを受け取ることになるかもしれません。しかし、 他のことと同様に、あなたはすぐに全てのパターンを覚えてしまいます。単語を読んだりはしま せん。エラーメッセージそのもの構造を見るだけで考えるのです。 “Oh, yeah, I probably forgot to close the namespace in a header file.” (あー、ヘッダーファイルで名前空間を閉じるのを忘れちゃったくさいなあ) わたしはそれが複雑さをさらに増やすことになるとしても、タイプする苦痛を軽減するような 性質をたくさん持った新しい C++ の spec を考えています -as far as number of keystrokes. たとえばもっと Pyton 的スタイルな auto 変数や for ループ。 それと C++ を使っているのに Python で書いていると思わせてしまうような lambda。 Dan Ingalls, who helped invent modern object oriented programming as part of Alan Kay's team that developed Smalltalk, never found C++ compelling enough to use but isn't totally adverse to using it: Smalltalk を開発していた Alan Kay のチームにあってmodern なオブジェクト指向言語プログ ラミングの発明を助けていた Dan Ingalls は C++ に compelling enough なものをついに見出 せませんでしたが、C++ を使うことを全面的に否定はしませんでした。 I didn't get that much into it. It seemed like a step forward in various ways from C, but it seemed to be not yet what the promise was, which we were already experiencing. If I had been forced to do another bottom-up implementation, instead of using machine code I would've maybe started with C++. And I know a couple of people who are masters of C++ and I love to see how they do things because I think they don't rely on it for the stuff that it's not really that good at but totally use it as almost a metaprogramming language. わたしは C++ にあまりのめりこみませんでした。C++ は C から色々な方法で前進 (step forward) したもののように思えるのですが、それはまだわたしたちがすでに経験したところの what the promise was ではないようです。仮にわたしが別の bottom-up implementation をすることを強制 されたなら、機械語を使うのではなく C++ から始めることもあるかもしれません。わたしは C++ をマスターした人を二、三人ほど知っているのですが、彼らがどのように C++でプログラミングす るかを見るのが大好きです。なぜなら、彼らはメタプログラミング言語のように使われることをまっ たく考慮されていないような仕様にほとんど頼ることなくプログラミングしているとわたしは思っ ているからです。 Joe Armstrong, similarly, has never felt the need to learn C++: Joe Armstrong もまた、C++ を学ぶ必要を全く感じませんでした: No, C++, I can hardly read or write it. I don't like C++; it doesn't feel right. It's just complicated. I like small simple languages. It didn't feel small and simple. わたしは C++ をほとんど読みも書けもしません。わたしは C++ が好きではありませんし、 (C++が) 正しいものであるとも感じません。そう、単に複雑なんです。わたしは小さくて 単純な言語が好きなのです。C++ は小さくもなければ単純でもないように思います。 And finally Guy Steele, who probably knows more about more languages than anyone I interviewed (or possibly anyone, period), has also not been drawn to C++. But he did go out of his way to try to say something nice about Stroustrup's effort: そして最後は Guy Steele です。彼はおそらくわたしがインタビューした人たちの誰よりも言語 についてより知っている人で (or possibly anyone, period)、彼もまた C++ に引き寄せられは しませんでした。しかし彼は Stroustrup の努力 (業績?) に対してその必要がないのにわざわざ (go out of his way)、 something nice を述べようとしたのでした。 I have not been attracted to C++. I have written some C++ code. Anything I think I might want to write in C++ now could be done about as well and more easily in Java. Unless efficiency were the primary concern. わたしは C++ に魅力を感じることはありませんでした。C++ のコードを少しは書きましたが Java で書くのと同じくらい簡単にできるなら C++ で書きたくなるかもしれないとは思いまし た。効率が primary concern でなければ。ですが。 But I don't want to be seen as a detractor of Bjarne Stroustrup's effort. He set himself up a particular goal, which was to make an object-oriented language that would be fully backwards-compatible with C. That was a difficult task to set himself. And given that constraint, I think he came up with an admirable design and it has held up well. But given the kinds of goals that I have in programming, I think the decision to be backwards-compatible with C is a fatal flaw. It's just a set of difficulties that can't be overcome. しかしわたしは Bjarne Stroustrup の努力に対する detractor (中傷する人) になりたくは ありません。彼は自身に C に対する完全な後方互換性を持ったオブジェクト指向言語を作り 上げるという particular goal を設定しました。それは彼自身にとっても困難な任務であり、 そして課せられた制約の中で彼は admirable design を得て、それをよく形にしたとわたし は考えています。けれどもそうやって得られたもので自分がプログラミングをしてみると、 C に対して後方互換にするという決断は致命的な不備 (flaw) であったとわたしは思うのです。 それは克服することのできない difficulties の集合でしかないのです。 Obviously with only fifteen interviewees in my book I have only a sampling of possible opinions. There are great programmers who have done great work with C++ and presumably at least some of them would have had more enthusiastic things to say about it if I had spoken with them. But this is what I heard from the people I spoke with. 言うまでもないことですが、わたしが C++ に対する意見を取り上げることが可能であったのは わたしが自分の本でインタビューした相手の15人だけです。 C++ を使って great work を成し 遂げた偉大なプログラマーたちがいましたし、少なくともその中の一部の人はわたしが話を聞く 機会があったならば C++ についてより enthusiastic なことを話してくれたかもしれません。 しかしここで書いたことは、わたしが対話した人たちから聞いたことなのです。 1. I think I once managed to read all the way through Stroustrup's The C++ Programming Language and have looked at at least parts of The Design and Evolution of C++. But I have never done any serious programming in it. I have made a couple attempts to learn it just because I felt I should but in recent years I've mostly given up, thinking that perhaps Erik Naggum, scourge of Usenet, was right when he said: “life is too long to know C++ well.” わたしは一度 Stroustrup 氏の The C++ Programming Language を通読し、 さらに The Design and Evolution of C++ の一部を読んだことはありますが、 C++ を使ってなんらかの serious programming をしたことはありませんでした。 C++ について学んでおくべきと考えて何度かその機会を作ったのですが、 ここ最近はほとんどギブアップしている状態です thinking that perhaps Erik Naggum, scourge of Usenet, was right when he said: “life is too long to know C++ well.” (C++ をよく知るには人生は長すぎる) Last updated 2009-10-16T13:55:11Z.■_ ボトムズまた新作OVAとな
TV版とかの BOX の値段ほんとにこれ?
「ボトムズ」新作OVAがBlu-ray/DVDで'10年3月発売 -AV Watch 2010年 2月23日 DVD 装甲騎兵ボトムズ DVD-BOX I 7枚組 18,900円ああ、BOXが全部で三つあるってことか。でも三つとも同じ値段だとすると 二年位前に出たDVD-BOXよりもずいぶんと安くなるような。
■_ 15年後
まあ、どこかがすぐにでも訳しそうな気ががががが。
InformIT: Design Patterns 15 Years Later: An Interview with Erich Gamma, Richard Helm, and Ralph Johnson > Design Patterns 15 Years Later: An Interview with Erich Gamma, Richard Helm, and Ralph Johnson Erich Gamma, Richard Helm, and Ralph Johnson talk to Larry O'Brien about Design Patterns, 15 years later. Larry O'Brien: 85,000 apps for the iPhone have been developed and deployed in the past year-and-change. One can write a globally-accessible "Hello, World! The time is X" Web page in just one line of PHP, for instance. "Designing object-oriented software is hard," are the first words of Design Patterns. Are those words still accurate? Richard Helm: Software design is always hard. Although most modern development environments do lots to reduce complexity through reusable libraries and toolkits (Eclipse, Apple, Microsoft), designing a software solution to the business problem is still hard. (ry) When discussing which patterns to drop, we found that we still love them all. (Not really—I'm in favor of dropping Singleton. Its use is almost always a design smell.) So here are some of the changes: * Interpreter and Flyweight should be moved into a separate category that we referred to as "Other/Compound" since they really are different beasts than the other patterns. Factory Method would be generalized to Factory. * The categories are: Core, Creational, Peripheral and Other. The intent here is to emphasize the important patterns and to separate them from the less frequently used ones. * The new members are: Null Object, Type Object, Dependency Injection, and Extension Object/Interface (see "Extension Object" in Pattern Languages of Program Design 3, Addison- Wesley, 1997). * These were the categories: o Core: Composite, Strategy, State, Command, Iterator, Proxy, Template Method, Facade o Creational: Factory, Prototype, Builder, Dependency Injection o Peripheral: Abstract Factory, Visitor, Decorator, Mediator, Type Object, Null Object, Extension Object o Other: Flyweight, Interpreter As I said above these are just notes in a draft state. Doing a refactoring without test cases is always dangerous...
- dsc_1576.jpg (JPEG 画像, 800x533 px)
- Twitter / Takuto Wada: Bjarne Stroustrup 氏 (C++ の ...
- Twitter / IWAKIRI,Akiko / 岩切晃子: デベロッパーの皆様に質問です。よべるかどうかわからな ...
- awkで最後の列だけ除外する方法 -OKWave
- 「XML」の読み方 -OKWave
- 技術書が途中で飽きてしまうのをどうにかしたい。 -OKWave技術書「に」飽きる。だろ?
- 今起きている秋葉原の変化: 異常感想注意報
- 出場者募集参加登録-宴会さん
- 2009年日本OSS貢献者賞に初の女性やドキュメント貢献者,奨励賞に高校生や高校も - ニュース:ITpro
- ソフトウエア・クリエイティビティ - 新刊・近刊:selfup
- OSS勉強会「カーネル読書会」第100回,Linus Torvalds氏も来場 - ニュース:ITpro
- Windowsロゴが出た後、真っ黒の画面にマウスカーソルだけ。 : パソコントラブル出張修理・サポート日記
- Hexenkessel - 思いも寄らぬハプニングが起きたのは、15番(パー4)だった。ティーショットを右の林に打ち込んだボールは...
- Schneier on Security: "Evil Maid" Attacks on Encrypted Hard Drives Evil Maid?
- ついったーをマンガ化すれば『中央モノローグ線』: 漫棚通信ブログ版
- ポインタの教え方。 現役プログラマー(主にC++・アセンブラ等を使用するファーム... - Yahoo!知恵袋
- UNISONSHIFT:Blossom いとうのいぢ ミニクリア下敷きセット :おた☆スケ -おたくのスケジュール帳-とりあえずななついろだけでも
- シグマA・P・O システム、奥行き8.2cmの超小型サイズマウス「SLATNRF1シリーズ」:ニュースクリップ - CNET Japan
- うまく行かない - 言語ゲーム
shiro 2009/10/23 01:01 srfi- 1のが"foldl"とか"fold-left"ではなく"fold"と名づけられているのにはそういう理由があったのです。 あの仕様については色々議論があったのですが、素直な理由はたぶんお察しのとおり、Schemeで処理結果をaccumulateしてゆく通常のパターンに一致するから、というのが大きいと思います。- 中学生プログラマーのつぶやき 第100回カーネル読書会に参加してきました!
- Improving the Rubinius Bytecode Compiler | Engine Yard Blog
- Python Cookbook equivalent for Haskell? : haskell
- Talk on “Loop Fusion in Haskell” « The Haskell Unlines
- VMware社が大規模組織再編に突入(20091007-8) | virtualization.info