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

クラシックでオブジェクト指向のコンパイラ型言語、おすすめはObjective-C?それともC++?」記事へのコメント

  • by Anonymous Coward on 2015年03月08日 20時08分 (#2774055)

    Cこそ至高。
    マクロで言語を拡張してオブジェクト指向を取り入れるんだ

    • by CowardDuck (25674) on 2015年03月09日 0時56分 (#2774151)

      > マクロで言語を拡張してオブジェクト指向を取り入れるんだ

      そりゃ、C++ だ!!!

      って突っ込んで欲しいのかな?

      親コメント
      • by Anonymous Coward

        X11のことでしょ

        • X11というか、X toolkit(Xt)のことですか?

          X Window System の最も基本なライブラリがXlib。Xのプロトコルに直結した描画機能だけを提供するレベルのライブラリで、ボタンなどの部品機能はないからXlibだけを使ってGUIを作るのは非常に手間がかかる。で、X11が最初期から標準で提供している「Xlib を使った GUIコンポーネントライブラリ」が Xt。
          昔はXのアプリを書くならXtはほぼ必須でしたけど、今時GTK+もQtもXlibベースで作られてるので、そういう今時なX11アプリを作るぶんにはXtの出番はありません。

          で、XtはC言語ベースでありながらもオブジェクト指向で作られてますが、データ(構造体)の取り扱いと関数体系がオブジェクト指向なだけです。言語仕様的にはC言語のままで特別なことは何もしてないので、Xtは「マクロで言語を拡張してオブジェクト指向を取り入れ」たものには該当しないでしょう。

          親コメント
          • by Anonymous Coward

            オブジェクト指向に基づいてコーディングする(されている)環境があるのならオブジェクト指向を取り入れたと呼んで良いのでは?
            それいったらC++だってオブジェクト指向ガン無視してコーディングできますし。

            コーディングする際の考え方・パラダイムがオブジェクト指向ならばそれはオブジェクト指向ですよ。
            オブジェクト指向言語では無い環境でオブジェクト指向してるんです。

      • by Anonymous Coward

        マクロでCを別の言語に作り変えて、それを使ってC言語を解説してる本があったような。

    • by minemo (41273) on 2015年03月08日 20時18分 (#2774061) 日記

      至高となればDelphiと言わねばならん。
      今は知らんけど…

      #本当は先代の…

      親コメント
      • by Anonymous Coward

        私もそう思ったけれど、

        > GUIのないヘッドレスアプリケーション

        ってわざわざ釘を刺されているんですよね。それに、x86 Linux上での開発を望んでいるようだし。
        (Delphiでもコンソールアプリは作れるけれど)

        それぞれの条件が妥当か否かは兎も角、消去法で C++ と Objective-C が残っような、
        この二つを残すために条件を並べたのじゃあるまいか。

    • by Anonymous Coward

      > Cこそ至高。

      同感です。

      > マクロで言語を拡張してオブジェクト指向を取り入れるんだ

      GUI部分のプログラミングがいらないなら、オブジェクト指向はいらないと思います。

      • by Anonymous Coward

        Linuxカーネルのソースでも読んでみるといいのでは?関数ポインタをガリガリ使ってオブジェクト指向を取り入れていますよ。

        • by wolf03 (39616) on 2015年03月08日 21時41分 (#2774091) 日記
          組み込み用で関数ポインタをテーブルにして、テーブルからどの関数呼ぶか決定ってのはやりました。
          親コメント
        • by CowardDuck (25674) on 2015年03月09日 0時48分 (#2774149)

          関数ポインタは関数ポインタであって、オブジェクト指向という言葉が
          流行る前から使われていた明瞭な機能だ。

          別にオブジェクト指向なんて言葉を導入する必要はない。

          親コメント
        • by Anonymous Coward

          関数ポインタを使うとオブジェクト指向なのですか?

          構造体メンバに関数持たせるとソースコードがクラスオブジェクトを
          使っているっぽい見た目になる、と言うのは解りますが。

          • by Anonymous Coward

            オブジェクト指向を低レベルで実現する方法の一つとして関数ポインタを使う方法があるという感じ。
            C++によるオブジェクト指向は関数ポインタによるオブジェクト指向で実現されるのが普通だしね。

            それがオブジェクト指向であるかどうかは、書いた奴がどういうパラダイムに基づいていたかの問題。
            オブジェクト指向を意識していたのならオブジェクト指向だろうし、そうでないならそうではない。どっちだろうね?

            • by Anonymous Coward

              意識してなくてもオブジェクト指向の概念を取り入れてたりはするでしょうね。
              構造体をソースファイルや内部で使うヘッダだけで宣言してカプセル化するとか。一度そういう概念を知ったらそれから外れることはあまりしない。

          • by Anonymous Coward

            構造体のメンバーに関数ポインタを使うと、
            継承やポリモーフィズムを使ったoopが出来るよ。
            c++では普通にclass宣言すればいいので
            関数ポインタをこの用途に使うのは見たことないな

          • by Anonymous Coward

            静的コンパイルする言語でオブジェクト指向の実現をする手段の一つが関数ポインタと考えるとしっくりくるのではないでしょうか。
            今でも実装系によっては使われている技法だと思いますが、かつてC++をCにトランスレートしてからコンパイルしていた時代は途中のCファイルを見るとvtblという形で関数ポインタの配列を持っていました。仮想関数なんかはこれの○○番目を使うという形で呼び出されるコードが出力される感じです。

          • by Anonymous Coward

            構造体に関数ポインタを持たせると仮想関数を実現することができる。
            逆に言うと、オブジェクト指向でも仮想関数が必要ないなら、
            必ずしも構造体に関数ポインタを持たせる必要は無い。

            それよりも構造体へのポインタを関数の第1引数として渡すようにしないと、
            どう頑張ってもオブジェクト指向にはならない。

            # その辺ちゃんと理解していないらしいコードを見た経験アリ。

    • by Anonymous Coward

      Linux上の開発を前提としているなら、Cの資産が多くあるので勉強するメリットはある。クロスプラットフォームという視点だと微妙かも。

      C++だと、QtがGUI以外の部分でも、移植性のあるコードが書けるので悪くない選択肢だと思う。(本家でも同じコメントがある)

      Objective-Cは、使ったことないから知らない。

    • by Anonymous Coward

      半分同意
      マクロとか使わんでもある程度以上は言語よりも書き方の問題だと思う

    • by Anonymous Coward

      OSを作るのならともかく、アプリケーションを作るのにC++よりもCが良いケースって、組み込みの一部ぐらいでは?

      • by Anonymous Coward

        あんた同僚が書いた酷いC++のコードに苦しめられたことがないだろ

        • by Anonymous Coward

          その同僚がCで書いていれば苦しまずに済んだか?
          その同僚にリソース管理や文字列処理をCで書かせて大丈夫なのか?クラスを使えない言語を人が読めるように書けるのか?

          • by Anonymous Coward

            > その同僚がCで書いていれば苦しまずに済んだか?

            苦しんだだろうが、おそらくよりマシだったろう

            > その同僚にリソース管理や文字列処理をCで書かせて大丈夫なのか?

            C++で書いたのに大丈夫ではなかった

            > クラスを使えない言語を人が読めるように書けるのか?

            クラスを使える言語でも人が読めるように書けなかったのだから、事情は変わらないともいえるが、
            「読めそうで読めない」から「読めなさそうで読めない」に改善が期待できるのと、少なくともフローはいくらか追いやすくなることは間違いないさそうだった

            • by Anonymous Coward

              そんな貴方に Delphi はいかがですか?

        • by Anonymous Coward

          同僚が書いた酷いCのコードにいつも苦しめられてますからまったく共感できない

          • by Anonymous Coward

            CにはCの醜さがありまして、C++にはそのCの醜さに加えてC++で導入された醜さが加わります。
            ここからC++の方がはるかに醜いコードを書きやすいことはおわかりいただけるかと思います。

            • by Anonymous Coward

              fcloseだのfreeだの逐一真面目に書く事を美しく感じるセンスは持ってないな。
              並のレベルに達してない技術者に渡す言語はCのがマシだからCを支持するなんて判定はどうかしてるよ。

    • by Anonymous Coward

      つ GObject

    • by Anonymous Coward

      Valaもいい。

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

処理中...