パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

もうやらなくていい昔のコーディングテクニックあれこれ」記事へのコメント

  • って書くとマイナスモデなんだろうなあ。

    あんなもんをあえて我慢して使わなきゃならない局面は随分減ってると思うんですけど。

    --
    署名スパムがウザい?アカウント作って非表示に設定すればスッキリさ。
    • C/C++はナイフとロープ (スコア:2, すばらしい洞察)

      by Livingdead (18685) on 2009年05月04日 13時55分 (#1558993) ホームページ 日記

      普段使いはPythonとJavaとC#ですが、やはりいざって時にC/C++は頼りになる。
      なんというか、まぁナイフとロープみたいなもんじゃないでしょうか。
      日常生活ではもっと各種用途に便利な機能を備えた道具がたくさんあるけど、
      極限の状態でこの道具があったから生き残れた、みたいな。

      まぁ懐中電灯ですら金属製だと武器とみなされて軽犯罪法違反で
      警察官にしょっ引かれるらしいので、ナイフなんて所持してたら
      警察官に何されるかわかったもんじゃないですが。

      --
      屍体メモ [windy.cx]
      親コメント
      • Re:C/C++はナイフとロープ (スコア:1, おもしろおかしい)

        by Anonymous Coward on 2009年05月04日 14時15分 (#1559008)

        >なんというか、まぁナイフとロープみたいなもんじゃないでしょうか。
        なんというか、まぁナイフとタイトロープみたいなもんじゃないでしょうか。

        親コメント
        • by Anonymous Coward
          >>なんというか、まぁナイフとロープみたいなもんじゃないでしょうか。
          >なんというか、まぁナイフとタイトロープみたいなもんじゃないでしょうか。
          なんというか、まぁローソクとロープみたいなもんじゃないでしょうか。
    • Re:C/C++そのもの (スコア:2, 参考になる)

      by nagika (30998) on 2009年05月04日 22時31分 (#1559250)

      高木先生の到着が遅れているようですので張ってみます。

      > > 悪しき習慣です。CやC++がプログラミングに携わる人のすべての必携の言語
      > > として蔓延りかけてしまったことは、世界の情報産業の生産性をいったいど
      > > れだけ損失させたか計り知れません。
      >
      > すべての必携の言語にCがなり得たのは、それだけ優れた言語だったからでしょう。

      いいえ。一部の人が使うのには優れていますが万人が使うべきものではあり
      ません。C以外が普及しなかったのは、様々な背景があるのであって、Cが優
      れていたからではありません。
      [JavaHouse-Brewers:28599] [java-house.jp]

      元ストーリーに沿った話だとこんな所が。

      > 知りませんでした、それではC言語においても、わざわざポインタを駆使した
      > プログラムを書く必要はないということですね。

      そのとおりです。C言語で
              for (i = 0; i < n; i++) {
                      array[i] = ...
              }
      というコードを、いまだに、わざわざ
              for (p = &array[0]; p < &array[n]; p++) {
                      *p = ...
              }
      と書いている人がいるんでしょうかね。だとしたら…誰の責任なんだろう。
      [JavaHouse-Brewers:28504 [java-house.jp]

      # しかし、もう10年前の話になるのか。。

      親コメント
      • by shiroiwanisan (12855) on 2009年05月05日 7時54分 (#1559390) 日記
        DOSのMSCだと、Ver4,ひょっとしたらVer3のころから配列を使ったほうが速いコードになりますね。

         時々、プログラムの高速化を頼まれるのですが、(多分)苦労してポインタを使ったコードに直した奴を、
        また配列に戻すんですよ。配列 -> ポインター化は間違えも少なくて楽なんだけど、逆は面倒で、間違え
        やすいからやりたくないんだけど。
        親コメント
        • by Anonymous Coward

          > 配列を使ったほうが速い
          それはそれでオプティマイザが手抜きでしょう。論理的に等価なら最適化して結局同じコードになってほしいところです。

      • by Anonymous Coward

        後者すげー興味深いな。内容もさることながらその議論の相手も。
        しかし、高木先生の議論のやり方がほんとひどい。
        何一つ手を動かさず知識と机上の空論でdisりまくるそのやり方。

        • by Anonymous Coward

          >議論の相手

          名前でググると一番引っかかる人と同一人物だとしたら、立ち位置というか前提条件が違いすぎて話が噛み合わないのも納得いくわな。

          • by Anonymous Coward

            かわいそうな議論の相手の名前をYahoo!で検索したら一番最初に出てきたのが
            [第9試合 NJKF・日本キック連盟交流戦 バンタム級5回戦]

            高木先生逃げてー!

    • by paprika (5024) on 2009年05月04日 15時41分 (#1559050) 日記

      > あんなもん

      の愛用者です。
      Cは基礎教養なので、実務で使うか使わないかにかかわらず、避けて通れるものではありませんね。
      先日Qt4.5がLGPLで配布されて以来、Qtにはまりました。そしてC++の優位は揺るぎないものと、個人的に確信するに至りました。
      我慢するなんてとんでもない。C++とQtに慣れると、C#なんて、めんどくさくて使っていられません。

      # ときどき、C++が使えない案件にぶち当たると、C#やJavaを我慢して使う羽目になって、憂鬱になります。

      親コメント
      • by Stealth (5277) on 2009年05月05日 6時21分 (#1559375)

        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# の方が楽な部分だけ任せるやり方もアリ。

        親コメント
        • by paprika (5024) on 2009年05月05日 14時26分 (#1559508) 日記

          XMLについては、まだQtで試していないので、詳細はお答えできません。
          QtのサンプルのなかにはDOMもSAXもあるのですが、プログラムがやや長めで、わかりにくい気もします。
          個人的にはDOMを必要とすることがほとんど無くて、ストリーム型パーサが好きなので、
          expatで片付けることが多いです。

          .NET 3.0 は、深いところまでは使いこなしていませんが、.NET 2.0 の時代に、SAXパーサが無くて困ったことがあります。
          実務では使いませんでしたが、勉強ついでに、ストリーム型パーサをC#で自作して、RSSリーダを作ってみたりしました。
          .NET 3.0 ではXMLのサポートが強化されているのでしょうか?

          C#のメリットは、プロトタイプやモックアップを突貫工事で作るのには便利だと思います。問題はそれから先、作り込みの段階で、じっくり腰を据えて取り組もうとすると、C++の方が便利だなあと思ったりします。

          テンプレートは麻薬です。アルゴリズムの実装とか、大量データ処理をやらせると、これなしでは考えたくないです。

          親コメント
          • by Tsann (15931) on 2009年05月05日 22時16分 (#1559772)

            .NET 3.0ではなくC# 3.0なので。ラムダ式とか使い出すと手放せません。
            SAXパーサは確かにないですね。例に挙げられているRSSリーダなら、C# 3.0(.NET 3.5)ではRss20FeedFormatterクラス [microsoft.com]などのシリアライザを使って読み込むだけですよ。
            というのは極端な例ですが、そうでなくてもSystem.Xml.Linq名前空間 [microsoft.com]のXLINQも使うと堕落します。

            親コメント
          • by Stealth (5277) on 2009年05月10日 6時23分 (#1562452)

            とりあえず以下の XML 文書を出力するコードを書いてみるだけでも楽さはわかるのではないでしょうか?

            <Document>
              <ParentElement>
                <ChildElement attr="attrValue"/>
              </ParentElement>
            </Document>

            C# 3.0 (.NET Framework 3.0 ではなく C# 3.0/.NET Framework 3.5) の場合はこんな感じで。(名前空間は System.IO, System.Xml, System.Xml.Linq を使ってますが省略)

            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 より圧倒的に楽、という感じでコードが書けます。

            # 多分 C# 3.0 で一番堕落する点は getter/setter の自動生成だと思いますが。

            テンプレートは麻薬です。アルゴリズムの実装とか、大量データ処理をやらせると、これなしでは考えたくないです。

            Generic がない時代は論外としか言いようがなかったですが、Generic が乗って (2.0) 拡張メソッド + Expression による動的メタプログラミング (3.0) の方向になってくると C# でも十分な点は結構増えてくるように思います。

            でも、ここまではやりすぎだと思う例。

            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 で補完される部分
              ...
            }

            親コメント
            • by Anonymous Coward
              getter/setterの自動生成、実は、VC++の6.0の頃にも、すでにありましたよ。 処理系依存すぎるので使っている人を見たことがないですが。
      • by Anonymous Coward

        言語の好き嫌いとか、長所短所とかは不毛だと思うのですが、後発のC#の言語仕様がC++に劣るとはちょっと考えにくい。C++が未だに有用な言語であるのは解るけどね。

        C#よりC++の方が好きだという人を否定するものではありませんが、C++とC#を同程度に習熟していないのかなという気がします。

        • by Anonymous Coward

          >言語の好き嫌いとか、長所短所とかは不毛だと思うのですが、後発のC#の言語仕様がC++に劣るとはちょっと考えにくい。C++が未だに有用な言語であるのは解るけどね。

          上記に関して基本的には同意ですが、テンプレート周りの融通無碍っぷりあたりはC#と比較したときのC++の優位性になるかも、とは思いました。まあ必ずしもメリットだけでは無いとは思いますが。

          # しかし何でC#は1.xでジェネリック採用しなかったのかしら。まあ2.0で採用したので大した問題ではないですが。

      • by Anonymous Coward
        そのQt 4.5だけどさ、Windows 2000でプロジェクト作成しただけで落ちるところから
        始まって、ドキュメントがJava以下だったり通信系のクラスがまともに揃ってなかったりと
        鼻くそみたいな出来だよ。
        可哀相だが.NET FrameworkはおろかJavaにすら及ばない。
    • by Anonymous Coward on 2009年05月04日 17時03分 (#1559089)
      C/C++がなければオーディオ/MIDI系のアプリケーションや
      タイミングシビアなアプリケーションは書けないですよ。
      無理やりJavaやC#で書いて悲惨な目に会っている人もいます。
      誰か最初にCかC++で書けと助言してくれる人はいなかったのだろうか。
      親コメント
    • by Anonymous Coward
      > あんなもん

      を喜々として使ってますが、使う場所は減らしてますね。
      嫌いな言語があまり無いので、ここはこれ、あそこはこれ、
      と割り切れるからでしょう。

      我慢して使ってるヒトは、なぜか使う場所を
      減らしてくれないんですが。
    • って書くとマイナスモデなんだろうなあ。

      単にLL厨によくありがちな的外れな意見だなという感想です。LLのほとんどは単なるグルー言語ではありませんが、しかしシステムの主要な部分は未だにC/C++で書かれていて、それらの言語バインディングなくしてはできることが大きく限定されてしまうのもまた事実です。まあ適材適所という当たり前の結論に至るわけですが。

      • by Anonymous Coward

        >しかしシステムの主要な部分は未だにC/C++で書かれていて、それらの言語バインディングなくしてはできることが大きく限定されてしまう

        のはまさに「あんなもんをあえて我慢して使う局面」だと思うんだけどなあ。

        使わんで良い所でも使うのが偉いと勘違いした変なマッチョイズムに捕われたC/C++厨が多数存在しているのもまた事実です。その昔多数生息していて今は絶滅したアセンブラ厨のように。

    • by Anonymous Coward
      > あんなもん

      を使ってデバイスドライバを書いています。
      他にどんな方法があるのですか?
    • by Anonymous Coward

      Objective-C 2.0を使えということですね、わかります。

      • by Anonymous Coward
        いや、D かもしれないぞ。
    • by Anonymous Coward

      どこの世界の話なんだろう?
      C/C++ぐらいしか開発環境が無い分野を知らないのだろうか?
      上辺に居る人は下辺が居なくならないと気が付かないもんですから仕方が無いですね。

      本家のストーリーがプログラマの本質に議論が進んでいくのも何故なのか分からないのでしょうね。

      • by Anonymous Coward

        >本家のストーリーがプログラマの本質に議論が進んでいくのも何故なのか分からないのでしょうね。

        いや、わかりますよ。本家は君みたいな脊髄反射しかできない口だけクンばかりじゃないからです。

        そんなにプログラマの本質を語り合いたければつまらないコメントする暇も惜しんで有用な発言をして啓蒙に勤めればいいのに、なにやってんの?

    • by Anonymous Coward

      >あんなもんをあえて我慢して使わなきゃならない局面は随分減ってると思うんですけど。

      C/C++が必要なくなった局面って具体的にはどういうのがありますか?
      ちなみにPerl 5やTcl/Tkといったグルー言語の類は大昔からあるので個人的にはあまり大きな変化は感じませんね。
      強いて言えばサーバサイドJavaくらいか。

アレゲは一日にしてならず -- アレゲ見習い

処理中...