アカウント名:
パスワード:
Javaは JITもあるけどコンパイラ型言語か?というのと同じレベルでObjective-Cってコンパイラ型言語だろうか?一部の動的なポリモルフィズムって、コンパイラではなくランタイムじゃなかったっけ?Objective-CってC++とJavaの中間という認識なんだけど・・・
Javaのソースをバイトコードに変換するのがコンパイルじゃなかったら何なの?Javaは問われるまでもなくコンパイラ型言語でしょ…。それと同じレベルの疑問って言われたら、「お前が定義して答えを決めろ」と答えるしかない。
どっちのレスもよく分からない議論をしているように見える。
「コンパイラ型言語」なんて用語はないし、その定義はどう考えても曖昧。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 トランスレータ) を思い浮かべたんだけども‥‥。誰も求めてませんね、はい。
そんな難しく考えずに、実行時に”手動で”コンパイルする必要があるかどうかっていいんじゃね?
もしくは、型チェックがあるかどうか(コンパイル時に)とかバグがあった時に、ソースの該当箇所を教えてくれるとか
ちなみに、PHPだって今では内部ではJITで中間言語にコンパイルしてから実行してたと思うけど、コンパイラ型言語っては言わないかなw
> そんな難しく考えずに、実行時に”手動で”コンパイルする必要があるかどうかっていいんじゃね?
そうすると、javacでコンパイルするときのJAVAはコンパイル型言語で、eclipseで実行するときはそうじゃない事になりかねない。ネイティブコードを吐き出すコンパイラをプロンプトから叩いていた時代には意味があったかもしれないけど、今は区別することに意味があるとは思えないなあ。
あの手のIDEはコードが変更されるたびに裏でjavac するしている。従って両者に違いは多分恐らくきっとない。
件のIDEでは裏で独自のコンパイラが走っているのでjavacではないとかなんとか
コンパイラ型言語の定義がないのは、そんなものを定義しても床屋談義以外には誰も何の得もしないからです
何を選んでも同じでしょう。Common Lisp, MIT-Scheme, Oberon, Modula-3, Objective Fortran,, Vala, Ada 色々調べて、便利なのを使えばいい。調べれば調べるほど、大差無いのがわかる。そして、色々と、いらいらと判るだろう。
たかが原稿用紙1枚分くらいで長文なの?
おやじギャグのつもりなんだから、少しは察してやれよ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
Objective-Cってコンパイラ型言語か? (スコア:0)
Javaは JITもあるけどコンパイラ型言語か?
というのと同じレベルで
Objective-Cってコンパイラ型言語だろうか?
一部の動的なポリモルフィズムって、コンパイラではなくランタイムじゃなかったっけ?
Objective-CってC++とJavaの中間という認識なんだけど・・・
Re:Objective-Cってコンパイラ型言語か? (スコア:0)
Javaのソースをバイトコードに変換するのがコンパイルじゃなかったら何なの?
Javaは問われるまでもなくコンパイラ型言語でしょ…。
それと同じレベルの疑問って言われたら、「お前が定義して答えを決めろ」と答えるしかない。
Re:Objective-Cってコンパイラ型言語か? (スコア:2, 参考になる)
どっちのレスもよく分からない議論をしているように見える。
「コンパイラ型言語」なんて用語はないし、その定義はどう考えても曖昧。
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 トランスレータ) を思い浮かべたんだけども‥‥。
誰も求めてませんね、はい。
Re: (スコア:0)
そんな難しく考えずに、実行時に”手動で”コンパイルする必要があるかどうかっていいんじゃね?
もしくは、型チェックがあるかどうか(コンパイル時に)とか
バグがあった時に、ソースの該当箇所を教えてくれるとか
ちなみに、PHPだって今では内部ではJITで中間言語にコンパイルしてから実行してたと思うけど、コンパイラ型言語っては言わないかなw
Re: (スコア:0)
> そんな難しく考えずに、実行時に”手動で”コンパイルする必要があるかどうかっていいんじゃね?
そうすると、javacでコンパイルするときのJAVAはコンパイル型言語で、eclipseで実行するときはそうじゃない事になりかねない。
ネイティブコードを吐き出すコンパイラをプロンプトから叩いていた時代には意味があったかもしれないけど、今は区別することに意味があるとは思えないなあ。
Re: (スコア:0)
あの手のIDEはコードが変更されるたびに裏でjavac するしている。
従って両者に違いは多分恐らくきっとない。
Re: (スコア:0)
件のIDEでは裏で独自のコンパイラが走っているのでjavacではないとかなんとか
Re: (スコア:0)
コンパイラ型言語の定義がないのは、そんなものを定義しても床屋談義以外には誰も何の得もしないからです
Re: (スコア:0)
何を選んでも同じでしょう。Common Lisp, MIT-Scheme, Oberon, Modula-3, Objective Fortran,, Vala, Ada 色々調べて、便利なのを使えばいい。調べれば調べるほど、大差無いのがわかる。そして、色々と、いらいらと判るだろう。
Re:Objective-Cってコンパイラ型言語か? (スコア:2)
たかが原稿用紙1枚分くらいで長文なの?
Re: (スコア:0)
おやじギャグのつもりなんだから、少しは察してやれよ。