アカウント名:
パスワード:
> C#は文法こそCやC++に似ているとはいえ、.NET Framework上で動いていますから別物でしょう。
wikipediaのC#の記載http://ja.wikipedia.org/wiki/C_Sharp [wikipedia.org]の「言語仕様」にも書かれていますが...
C#はCLIの仕様を反映した言語ですが、言語仕様として.netを前提としているわけではありません。また、CやC++も言語実装・ランタイム実装によっては「.net上で動いている」ものもあるでしょう。
「言語仕様」と「言語実装・動作環境」を混同してませんか?
すいません、VC#(VS)前提で考えていました。そうですよね、VC++でも最近ではCLIの関数を使った作り方もできますからね。でも、C#は現在.NET Frameworkがあった上で成り立っているので、C++やCとは別物だと考えてます。やっぱり、間違えてますかね?
元コメントから分類の基準としているものが、、・文法(記法?)・動作環境・主たる設計パラダイム?など本来なら直行する概念をごちゃ混ぜに考えているようだったので、そのあたりを指摘しているつもりでした。
そのあたりが整理されてないと、例えば VB6とVB.netは別に考えるべきか? C#、J#、VB.netは同じグループなのか? 最近MSが発表したAxumも同じグループ? VM上で動くJavaと.net上で動くJ#は同じ?違う? 通常のJavaと(DalvikVMで動作する)Android上のJavaは分けて考えるべき?などいろんなものが分類不能になりそうだったので、 本来の「言語の分類」という軸では(本来動作環境とは切り離された)言語仕様と 実行環境はわけて考えるべきだと思っています。# もちろん、目的に応じて分類軸は変えるべきですが、# そのときは選択肢自体を「言語仕様名」や「言語実装名」など# 分類軸に合わせたものにするべきでしょう。
それらをわかった上で両方を加味して分類しているのだ、ということのようなので「勘違い」との評は取り下げます。
ちなみに、あなたの分類ではC#が他の動作環境に移植された瞬間に別のグループに引越しするのでしょうか?# monoなどなら「.netのvariant」なので同じ分類といえそうですが。
>本来の「言語の分類」という軸では(本来動作環境とは切り離された)言語仕様と>実行環境はわけて考えるべき全く、そのとおりでした。
この機会に、今までの考え方を見直してみようと思います。・文法(記法?)・動作環境・主たる設計パラダイム?などは、しっかり区別しているつもりですが、語力の問題で齟齬が発生したのかもしれません。
結果からいうと言語の分類としては、C#もC++もCもObjective-Cも全く別物になるんですよね。同じだったら、新たの言語を作る必要はありませんし、名前も同じでいいはずですから。ただ、C++とCとC#の文法が似ていたり(Objective-Cはわかりませんが)、言語名が似ていたので混同されていた。ということなのでしょう。
コメントしていくうちに、意見が変わってしまっている(というより、最初の意見があいまいだった)かもしれません。
>C#はCLIの仕様を反映した言語ですが、言語仕様として.netを前提としているわけではありません。
確か存在したはず
Mainsoft for Java EEは、.NET-Javaのクロスコンパイラ・エンジン。「Visual C#」「Visual Basic」を利用する開発者は、Microsoftの「ASP.NET 2.0 AJAX Extensions」や「AJAX Control Toolkit」を利用してASP.NET AJAXアプリケーションを作成し、Java EEプラットフォームに実装できる。
米Mainsoft、「Visial Studio 2008」をサポートした.NET-Java互換環境 [osdn.jp]
>C#はCLIの仕様を反映した言語ですが、言語仕様として.netを前提としているわけではありません。そんなのは営業トークの一つではないかな。「.NETはWindows上での実装を前提としているわけではありません。 他の環境でも実現可能なマルチプラットフォームな云々」なんかとおなじで。
もちろん表向きは、どんな言語も言語仕様的にはある特定環境の上での実装を前提とはしないものだけれど、だからと言ってC#を動かすのに.NETとCLI相当の実行環境が必要であるという事実は何も変わりません。
その結果としてC#が事実上.NET専用言語になるのは避けられないでしょう。
> また、CやC++も言語実装・ランタイム実装によっては「.net上で動いている」ものもあるでしょう。C++/CLIとか。C++/CLI独自の機能を使わなくても、/clrオプションを付けてコンパイルするだけでマネージコードになります。
>また、CやC++も言語実装・ランタイム実装によっては「.net上で動いている」ものもあるでしょう。>「言語仕様」と「言語実装・動作環境」を混同してませんか?ごく稀な利用方法を取り上げて、揚げ足取りするのは如何な物でしょうか?
商業レベルを前提にする場合、C/C++では数多くの「言語実装・動作環境」がありますが、C#では単一の「言語実装・動作環境」と言えます。
そのような現状では、下記のコメントに対して、混同してませんかコメントは単なる揚げ足取りでしょう。> C#は文法こそCやC++に似ているとはいえ、.NET Framework上で動いていますから別物でしょう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
C#は完全に別物でしょう? (スコア:1)
Re:C#は完全に別物でしょう? (スコア:2, 参考になる)
> C#は文法こそCやC++に似ているとはいえ、.NET Framework上で動いていますから別物でしょう。
wikipediaのC#の記載http://ja.wikipedia.org/wiki/C_Sharp [wikipedia.org]の「言語仕様」にも
書かれていますが...
C#はCLIの仕様を反映した言語ですが、言語仕様として.netを前提としているわけではありません。
また、CやC++も言語実装・ランタイム実装によっては「.net上で動いている」ものもあるでしょう。
「言語仕様」と「言語実装・動作環境」を混同してませんか?
Re:C#は完全に別物でしょう? (スコア:1)
すいません、VC#(VS)前提で考えていました。
そうですよね、VC++でも最近ではCLIの関数を使った作り方もできますからね。
でも、C#は現在.NET Frameworkがあった上で成り立っているので、C++やCとは別物だと考えてます。
やっぱり、間違えてますかね?
Re:C#は完全に別物でしょう? (スコア:1)
元コメントから分類の基準としているものが、、
・文法(記法?)
・動作環境
・主たる設計パラダイム?
など本来なら直行する概念をごちゃ混ぜに考えているようだったので、
そのあたりを指摘しているつもりでした。
そのあたりが整理されてないと、例えば
VB6とVB.netは別に考えるべきか?
C#、J#、VB.netは同じグループなのか?
最近MSが発表したAxumも同じグループ?
VM上で動くJavaと.net上で動くJ#は同じ?違う?
通常のJavaと(DalvikVMで動作する)Android上のJavaは分けて考えるべき?
などいろんなものが分類不能になりそうだったので、
本来の「言語の分類」という軸では(本来動作環境とは切り離された)言語仕様と
実行環境はわけて考えるべき
だと思っています。
# もちろん、目的に応じて分類軸は変えるべきですが、
# そのときは選択肢自体を「言語仕様名」や「言語実装名」など
# 分類軸に合わせたものにするべきでしょう。
それらをわかった上で両方を加味して分類しているのだ、
ということのようなので「勘違い」との評は取り下げます。
ちなみに、あなたの分類ではC#が他の動作環境に移植された瞬間に
別のグループに引越しするのでしょうか?
# monoなどなら「.netのvariant」なので同じ分類といえそうですが。
Re:C#は完全に別物でしょう? (スコア:1)
>本来の「言語の分類」という軸では(本来動作環境とは切り離された)言語仕様と
>実行環境はわけて考えるべき
全く、そのとおりでした。
この機会に、今までの考え方を見直してみようと思います。
・文法(記法?)
・動作環境
・主たる設計パラダイム?
などは、しっかり区別しているつもりですが、語力の問題で齟齬が発生したのかもしれません。
結果からいうと言語の分類としては、C#もC++もCもObjective-Cも全く別物になるんですよね。同じだったら、新たの言語を作る必要はありませんし、名前も同じでいいはずですから。ただ、C++とCとC#の文法が似ていたり(Objective-Cはわかりませんが)、言語名が似ていたので混同されていた。ということなのでしょう。
コメントしていくうちに、意見が変わってしまっている(というより、最初の意見があいまいだった)かもしれません。
Re:C#は完全に別物でしょう? (スコア:1)
>C#はCLIの仕様を反映した言語ですが、言語仕様として.netを前提としているわけではありません。
確か存在したはず
米Mainsoft、「Visial Studio 2008」をサポートした.NET-Java互換環境 [osdn.jp]
Re: (スコア:0)
>C#はCLIの仕様を反映した言語ですが、言語仕様として.netを前提としているわけではありません。
そんなのは営業トークの一つではないかな。
「.NETはWindows上での実装を前提としているわけではありません。
他の環境でも実現可能なマルチプラットフォームな云々」
なんかとおなじで。
もちろん表向きは、どんな言語も言語仕様的にはある特定環境の上での実装を前提とは
しないものだけれど、だからと言ってC#を動かすのに.NETとCLI相当の実行環境が必要で
あるという事実は何も変わりません。
その結果としてC#が事実上.NET専用言語になるのは避けられないでしょう。
Re: (スコア:0)
> また、CやC++も言語実装・ランタイム実装によっては「.net上で動いている」ものもあるでしょう。
C++/CLIとか。C++/CLI独自の機能を使わなくても、/clrオプションを付けてコンパイルするだけでマネージコードになります。
Re: (スコア:0)
>また、CやC++も言語実装・ランタイム実装によっては「.net上で動いている」ものもあるでしょう。
>「言語仕様」と「言語実装・動作環境」を混同してませんか?
ごく稀な利用方法を取り上げて、揚げ足取りするのは如何な物でしょうか?
商業レベルを前提にする場合、C/C++では数多くの「言語実装・動作環境」がありますが、C#では単一の「言語実装・動作環境」と言えます。
そのような現状では、下記のコメントに対して、混同してませんかコメントは単なる揚げ足取りでしょう。
> C#は文法こそCやC++に似ているとはいえ、.NET Framework上で動いていますから別物でしょう。