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

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

  • Javaは JITもあるけどコンパイラ型言語か?
    というのと同じレベルで
    Objective-Cってコンパイラ型言語だろうか?
    一部の動的なポリモルフィズムって、コンパイラではなくランタイムじゃなかったっけ?
    Objective-CってC++とJavaの中間という認識なんだけど・・・

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

      Javaのソースをバイトコードに変換するのがコンパイルじゃなかったら何なの?
      Javaは問われるまでもなくコンパイラ型言語でしょ…。
      それと同じレベルの疑問って言われたら、「お前が定義して答えを決めろ」と答えるしかない。

      親コメント
      • by Anonymous Coward on 2015年03月08日 21時21分 (#2774085)

        どっちのレスもよく分からない議論をしているように見える。

        「コンパイラ型言語」なんて用語はないし、その定義はどう考えても曖昧。
        Java がソースをバイトコードに変換するからコンパイラ型言語だと言うなら、
        Python だってバイトコードにコンパイルするんだから Python もコンパイラ型言語と言えるけど、
        私たちの常識は、トピック主はPythonを除外しているだろうと思うはず。

        そもそも、プログラミング言語というのは、コンパイラ型・インタープリタ型という区別から独立している。
        ある言語がコンパイラ型かインタープリタ型かは、その言語の処理系によって変わるから。

        さらに、トピック主が、
        ネイティブコードへのAOTコンパイルを行うものを「コンパイラ型言語」と言っているのか、
        実行時eval() が容易にはできないような処理系を「コンパイラ型言語」と言っているのか、
        それらとはまた別の感覚で定義しているのか、
        境界線は曖昧。

        > Objective-Cってコンパイラ型言語だろうか?
        っていう意見は分からなくもない。
        ObjCというのはC言語にSmalltalk-80ランタイムをくっつけて、
        Smalltalkのメッセージ送信およびクラス定義を行う特別構文を用意しただけのような言語。
        じゃあSmalltalkってコンパイラ型言語かというと、
        普通のSmalltalk-80処理系はバイトコードにコンパイルするけど、
        恐らく普通は含まれない。

        とはいえ、トピック主はObjCを「コンパイラ型言語」の候補としてあげてるんだから、
        そういう定義なんだと思って話を進めよう。
        # ぶっちゃけ、ObjCは常識的にはコンパイラ型言語に含まれると思う。
        その上で、Java は含まれるのか、
        C言語にトランスレートしてからネイティブコードにコンパイルする処理系 Chicken は
        Schemeの処理系だけどもSchemeも含まれるのか(今回のケースでは、
        Schemeはクラシックなオブジェクト指向言語と言えないから無視できるけど)、
        となると、曖昧と言わざるをえない。

        結論:
        コンパイラ型言語の定義は曖昧だから、
        『じゃなかったら何なの?』とか言ってないで、ちゃんと議論して共通了解していきましょ。

        ちなみに、「クラシックでオブジェクト指向のコンパイラ型言語」と聞いて、
        自分は Eiffel と Smalltalk/X (Smalltalk -> C トランスレータ) を思い浮かべたんだけども‥‥。
        誰も求めてませんね、はい。

        親コメント
        • by Anonymous Coward

          そんな難しく考えずに、実行時に”手動で”コンパイルする必要があるかどうかっていいんじゃね?

          もしくは、型チェックがあるかどうか(コンパイル時に)とか
          バグがあった時に、ソースの該当箇所を教えてくれるとか

          ちなみに、PHPだって今では内部ではJITで中間言語にコンパイルしてから実行してたと思うけど、コンパイラ型言語っては言わないかなw

          • by Anonymous Coward

            > そんな難しく考えずに、実行時に”手動で”コンパイルする必要があるかどうかっていいんじゃね?

            そうすると、javacでコンパイルするときのJAVAはコンパイル型言語で、eclipseで実行するときはそうじゃない事になりかねない。
            ネイティブコードを吐き出すコンパイラをプロンプトから叩いていた時代には意味があったかもしれないけど、今は区別することに意味があるとは思えないなあ。

            • by Anonymous Coward

              あの手のIDEはコードが変更されるたびに裏でjavac するしている。
              従って両者に違いは多分恐らくきっとない。

              • by Anonymous Coward

                件のIDEでは裏で独自のコンパイラが走っているのでjavacではないとかなんとか

        • by Anonymous Coward

          コンパイラ型言語の定義がないのは、そんなものを定義しても床屋談義以外には誰も何の得もしないからです

        • by Anonymous Coward

          何を選んでも同じでしょう。Common Lisp, MIT-Scheme, Oberon, Modula-3, Objective Fortran,, Vala, Ada 色々調べて、便利なのを使えばいい。調べれば調べるほど、大差無いのがわかる。そして、色々と、いらいらと判るだろう。

アレゲは一日にしてならず -- アレゲ研究家

処理中...