void OutputXmlDocument(Stream outputStream) { XDocument doc = new XDocument( new XElement("Document", new XElement("ParentElement", new XElement("ChildElement", new XAttribute("attr", "attrValue"))))); XmlWriter writer = XmlWriter.Create(outputStream, new XmlWriterSettings { Indent = true } ); doc.Save(writer); }
読み込むのも XmlReader から doc.Load(reader); 程度なのもいいですね。
子要素を読むときは foreach (XElement e in element.Elements()) (特に名前をしていしたい場合は e.Elements(elementName) で。属性なら Attributes() メソッドで) で簡単にループもできますし、DOM っぽいけど DOM より圧倒的に楽、という感じでコードが書けます。
foreach (var v in from t in context.GetTable<Entity>() where t.Type == 1 || t.Type == 2 select new { Id = t.Id, Type = t.Type, Name = t.Name }) { // select 部分で作った匿名型がしっかり IntelliSense で補完される部分 ... }
C/C++そのもの (スコア:1)
って書くとマイナスモデなんだろうなあ。
あんなもんをあえて我慢して使わなきゃならない局面は随分減ってると思うんですけど。
署名スパムがウザい?アカウント作って非表示に設定すればスッキリさ。
C/C++はナイフとロープ (スコア:2, すばらしい洞察)
普段使いはPythonとJavaとC#ですが、やはりいざって時にC/C++は頼りになる。
なんというか、まぁナイフとロープみたいなもんじゃないでしょうか。
日常生活ではもっと各種用途に便利な機能を備えた道具がたくさんあるけど、
極限の状態でこの道具があったから生き残れた、みたいな。
まぁ懐中電灯ですら金属製だと武器とみなされて軽犯罪法違反で
警察官にしょっ引かれるらしいので、ナイフなんて所持してたら
警察官に何されるかわかったもんじゃないですが。
屍体メモ [windy.cx]
Re:C/C++はナイフとロープ (スコア:1, おもしろおかしい)
>なんというか、まぁナイフとロープみたいなもんじゃないでしょうか。
なんというか、まぁナイフとタイトロープみたいなもんじゃないでしょうか。
Re: (スコア:0)
>なんというか、まぁナイフとタイトロープみたいなもんじゃないでしょうか。
なんというか、まぁローソクとロープみたいなもんじゃないでしょうか。
Re: (スコア:0)
>>なんというか、まぁナイフとタイトロープみたいなもんじゃないでしょうか。
>なんというか、まぁローソクとロープみたいなもんじゃないでしょうか。
なんというか、まぁドアノブとロープみたいなもんじゃないでしょうか。
Re:C/C++はナイフとロープ (スコア:2, 参考になる)
なんというか、止め時ってのは大事だよね。
署名スパムがウザい?アカウント作って非表示に設定すればスッキリさ。
隣の家の夫婦に言ってやって (スコア:1)
殖え過ぎ
屍体メモ [windy.cx]
Re:C/C++そのもの (スコア:2, 参考になる)
高木先生の到着が遅れているようですので張ってみます。
元ストーリーに沿った話だとこんな所が。
# しかし、もう10年前の話になるのか。。
Re:C/C++そのもの (スコア:1)
時々、プログラムの高速化を頼まれるのですが、(多分)苦労してポインタを使ったコードに直した奴を、
また配列に戻すんですよ。配列 -> ポインター化は間違えも少なくて楽なんだけど、逆は面倒で、間違え
やすいからやりたくないんだけど。
Re: (スコア:0)
> 配列を使ったほうが速い
それはそれでオプティマイザが手抜きでしょう。論理的に等価なら最適化して結局同じコードになってほしいところです。
Re: (スコア:0)
後者すげー興味深いな。内容もさることながらその議論の相手も。
しかし、高木先生の議論のやり方がほんとひどい。
何一つ手を動かさず知識と机上の空論でdisりまくるそのやり方。
Re: (スコア:0)
>議論の相手
名前でググると一番引っかかる人と同一人物だとしたら、立ち位置というか前提条件が違いすぎて話が噛み合わないのも納得いくわな。
Re: (スコア:0)
かわいそうな議論の相手の名前をYahoo!で検索したら一番最初に出てきたのが
[第9試合 NJKF・日本キック連盟交流戦 バンタム級5回戦]
高木先生逃げてー!
Re:C/C++そのもの (スコア:1)
> あんなもん
の愛用者です。
Cは基礎教養なので、実務で使うか使わないかにかかわらず、避けて通れるものではありませんね。
先日Qt4.5がLGPLで配布されて以来、Qtにはまりました。そしてC++の優位は揺るぎないものと、個人的に確信するに至りました。
我慢するなんてとんでもない。C++とQtに慣れると、C#なんて、めんどくさくて使っていられません。
# ときどき、C++が使えない案件にぶち当たると、C#やJavaを我慢して使う羽目になって、憂鬱になります。
Re:C/C++そのもの (スコア:1)
C# 2.0 以前であれば納得なのですが (特に C# 1.1 とか使ってらんない)、C# 3.0 を使うと C# 3.0 で回せる範囲なら C# 3.0 の方が圧倒的に楽だと思います。
C++ + Qt 4.5 って C# 3.0/.NET Fx 3.5 以上に XML を簡単に扱ったりできますか?
結局適材適所にしか過ぎないと思います。
# テンプレート周りは C++ の天下なのは間違いない。
# ということで、コア部分は C++/CLI でがりごり書いて、C# の方が楽な部分だけ任せるやり方もアリ。
Re:C/C++そのもの (スコア:1)
XMLについては、まだQtで試していないので、詳細はお答えできません。
QtのサンプルのなかにはDOMもSAXもあるのですが、プログラムがやや長めで、わかりにくい気もします。
個人的にはDOMを必要とすることがほとんど無くて、ストリーム型パーサが好きなので、
expatで片付けることが多いです。
.NET 3.0 は、深いところまでは使いこなしていませんが、.NET 2.0 の時代に、SAXパーサが無くて困ったことがあります。
実務では使いませんでしたが、勉強ついでに、ストリーム型パーサをC#で自作して、RSSリーダを作ってみたりしました。
.NET 3.0 ではXMLのサポートが強化されているのでしょうか?
C#のメリットは、プロトタイプやモックアップを突貫工事で作るのには便利だと思います。問題はそれから先、作り込みの段階で、じっくり腰を据えて取り組もうとすると、C++の方が便利だなあと思ったりします。
テンプレートは麻薬です。アルゴリズムの実装とか、大量データ処理をやらせると、これなしでは考えたくないです。
Re:C/C++そのもの (スコア:1)
.NET 3.0ではなくC# 3.0なので。ラムダ式とか使い出すと手放せません。
SAXパーサは確かにないですね。例に挙げられているRSSリーダなら、C# 3.0(.NET 3.5)ではRss20FeedFormatterクラス [microsoft.com]などのシリアライザを使って読み込むだけですよ。
というのは極端な例ですが、そうでなくてもSystem.Xml.Linq名前空間 [microsoft.com]のXLINQも使うと堕落します。
Re:C/C++そのもの (スコア:1)
とりあえず以下の XML 文書を出力するコードを書いてみるだけでも楽さはわかるのではないでしょうか?
C# 3.0 (.NET Framework 3.0 ではなく C# 3.0/.NET Framework 3.5) の場合はこんな感じで。(名前空間は System.IO, System.Xml, System.Xml.Linq を使ってますが省略)
読み込むのも XmlReader から doc.Load(reader); 程度なのもいいですね。
子要素を読むときは foreach (XElement e in element.Elements()) (特に名前をしていしたい場合は e.Elements(elementName) で。属性なら Attributes() メソッドで) で簡単にループもできますし、DOM っぽいけど DOM より圧倒的に楽、という感じでコードが書けます。
# 多分 C# 3.0 で一番堕落する点は getter/setter の自動生成だと思いますが。
Generic がない時代は論外としか言いようがなかったですが、Generic が乗って (2.0) 拡張メソッド + Expression による動的メタプログラミング (3.0) の方向になってくると C# でも十分な点は結構増えてくるように思います。
でも、ここまではやりすぎだと思う例。
Re: (スコア:0)
Re: (スコア:0)
言語の好き嫌いとか、長所短所とかは不毛だと思うのですが、後発のC#の言語仕様がC++に劣るとはちょっと考えにくい。C++が未だに有用な言語であるのは解るけどね。
C#よりC++の方が好きだという人を否定するものではありませんが、C++とC#を同程度に習熟していないのかなという気がします。
Re: (スコア:0)
>言語の好き嫌いとか、長所短所とかは不毛だと思うのですが、後発のC#の言語仕様がC++に劣るとはちょっと考えにくい。C++が未だに有用な言語であるのは解るけどね。
上記に関して基本的には同意ですが、テンプレート周りの融通無碍っぷりあたりはC#と比較したときのC++の優位性になるかも、とは思いました。まあ必ずしもメリットだけでは無いとは思いますが。
# しかし何でC#は1.xでジェネリック採用しなかったのかしら。まあ2.0で採用したので大した問題ではないですが。
Re: (スコア:0)
始まって、ドキュメントがJava以下だったり通信系のクラスがまともに揃ってなかったりと
鼻くそみたいな出来だよ。
可哀相だが.NET FrameworkはおろかJavaにすら及ばない。
Re:C/C++そのもの (スコア:1, 興味深い)
タイミングシビアなアプリケーションは書けないですよ。
無理やりJavaやC#で書いて悲惨な目に会っている人もいます。
誰か最初にCかC++で書けと助言してくれる人はいなかったのだろうか。
Re: (スコア:0)
を喜々として使ってますが、使う場所は減らしてますね。
嫌いな言語があまり無いので、ここはこれ、あそこはこれ、
と割り切れるからでしょう。
我慢して使ってるヒトは、なぜか使う場所を
減らしてくれないんですが。
別にマイナスモデする必要はないと思いますが (スコア:0)
単にLL厨によくありがちな的外れな意見だなという感想です。LLのほとんどは単なるグルー言語ではありませんが、しかしシステムの主要な部分は未だにC/C++で書かれていて、それらの言語バインディングなくしてはできることが大きく限定されてしまうのもまた事実です。まあ適材適所という当たり前の結論に至るわけですが。
Re: (スコア:0)
>しかしシステムの主要な部分は未だにC/C++で書かれていて、それらの言語バインディングなくしてはできることが大きく限定されてしまう
のはまさに「あんなもんをあえて我慢して使う局面」だと思うんだけどなあ。
使わんで良い所でも使うのが偉いと勘違いした変なマッチョイズムに捕われたC/C++厨が多数存在しているのもまた事実です。その昔多数生息していて今は絶滅したアセンブラ厨のように。
Re: (スコア:0)
Re: (スコア:0)
を使ってデバイスドライバを書いています。
他にどんな方法があるのですか?
Re: (スコア:0)
Objective-C 2.0を使えということですね、わかります。
Re: (スコア:0)
Re: (スコア:0)
どこの世界の話なんだろう?
C/C++ぐらいしか開発環境が無い分野を知らないのだろうか?
上辺に居る人は下辺が居なくならないと気が付かないもんですから仕方が無いですね。
本家のストーリーがプログラマの本質に議論が進んでいくのも何故なのか分からないのでしょうね。
Re: (スコア:0)
>本家のストーリーがプログラマの本質に議論が進んでいくのも何故なのか分からないのでしょうね。
いや、わかりますよ。本家は君みたいな脊髄反射しかできない口だけクンばかりじゃないからです。
そんなにプログラマの本質を語り合いたければつまらないコメントする暇も惜しんで有用な発言をして啓蒙に勤めればいいのに、なにやってんの?
Re: (スコア:0)
>あんなもんをあえて我慢して使わなきゃならない局面は随分減ってると思うんですけど。
C/C++が必要なくなった局面って具体的にはどういうのがありますか?
ちなみにPerl 5やTcl/Tkといったグルー言語の類は大昔からあるので個人的にはあまり大きな変化は感じませんね。
強いて言えばサーバサイドJavaくらいか。