C#とC++
敢えて適材適所に挑戦し、どちらが優れているかを議論します
ファイッ
C#とC++を無理矢理戦わせたい人専用スレ
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/11/27(水) 20:03:08.03ID:yc0HWZ1w2デフォルトの名無しさん
2019/11/27(水) 22:06:26.88ID:pn0fGp7Q 君、アフィリエイトブログ転載用スレを立てすぎだよ
3デフォルトの名無しさん
2019/11/27(水) 22:10:51.21ID:yc0HWZ1w >>2
WPFスレから出てって欲しかっただけなんだが
WPFスレから出てって欲しかっただけなんだが
2019/11/27(水) 22:45:39.59ID:iIIfyZvm
C# のもとは Delphi。
はい、論破。
はい、論破。
2019/11/27(水) 23:25:47.03ID:r9xTTxSI
C#は、VB.NETと対になって説明されることが多い。
ということは、表面的な違いだけで C# は本質的には VB ということ
なのではなかろうか。
ということは、表面的な違いだけで C# は本質的には VB ということ
なのではなかろうか。
6デフォルトの名無しさん
2019/11/27(水) 23:58:09.53ID:1i4qLeiK 逆だろ。VB.NETが従来のVisual Basicとは違って本質的にはC#ということ。
2019/11/28(木) 00:24:31.99ID:DQy/K16U
本質的にはどっちも.NETだろ
2019/11/28(木) 00:54:52.57ID:TWMCNQEW
2019/11/28(木) 00:56:24.63ID:TWMCNQEW
C# == VB.NET
と
VB.NET == C#
は、数学的には同値です。
と
VB.NET == C#
は、数学的には同値です。
2019/11/28(木) 12:51:34.22ID:Lk4Ws1Uf
適材適所というか、c++の便利機能がc#で削ぎ落とされていてしんどい。
constな引数やメソッド
ある程度型安全なダックタイピングのジェネリック
目指してる方向性が違うようだから仕方ないと割り切ってるけど。
constな引数やメソッド
ある程度型安全なダックタイピングのジェネリック
目指してる方向性が違うようだから仕方ないと割り切ってるけど。
2019/11/28(木) 22:36:53.14ID:j8QwNrt/
C++は本格言語。
C#はスクリプト言語。
比べるほうがおかしい。
C#はスクリプト言語。
比べるほうがおかしい。
2019/11/28(木) 22:42:43.69ID:HBU31YUq
2019/11/28(木) 22:50:41.55ID:rW4uqpGK
>>11
な…なんだって…
な…なんだって…
2019/11/28(木) 23:06:26.23ID:HBU31YUq
それぞれの登場時期には、既に C++言語が、gccによってどんなCPUに対しても
native binaryを出力できるようになっていたのに、どうしてJavaやC#がどうして
native binaryを出さずに、仮想コードを出す仕様にしたかについては誰でも
時々疑問に思うと思うんですが、自分なりに出した答えは:
1. gccは有ったが、それをバックエンドに使おうとすると、gcc のソースの一部
をJavaやC#のコンパイラの中に組み込むか、中間コードを C 言語の形式で出力して
gccをバックエンドとして動かす必要があった。これはライセンス、gcc環境のサイズの
大きさ、言語処理系会社としてのプライドなどの観点から問題があった。
2. 実は、そもそも gcc が対応していないアーキテクチャも世の中にはあって、
その環境でも Java や C# を動かしたい場合には、駄目であった。
また、新しいCPUが出てきたときには、gccの方を修正しなくてはならなく
なるが、gccのソースを解読するのは難しいので難しい。
3. C言語が対応しているCPUであっても、そもそも、プログラミングのフレームワーク的な
構造が、Windowsとは全く異なっているプラットフォームが時々ありえる。
例えば時代が違うかもしれないが、Objective-Cの環境でWindows風のプログラミングを
するのは難しい。そもそも、GUIプログラムは特殊言語で書くようになっているプラット
フォームや、Waitや効率的なメッセージループを書けないプラットフォームが存在しており、
そのような環境に同じソースコードで書いたプログラムを移植するには、インタプリタ的にも
動作しうる仮想コードで無いと困ることがある。
native binaryを出力できるようになっていたのに、どうしてJavaやC#がどうして
native binaryを出さずに、仮想コードを出す仕様にしたかについては誰でも
時々疑問に思うと思うんですが、自分なりに出した答えは:
1. gccは有ったが、それをバックエンドに使おうとすると、gcc のソースの一部
をJavaやC#のコンパイラの中に組み込むか、中間コードを C 言語の形式で出力して
gccをバックエンドとして動かす必要があった。これはライセンス、gcc環境のサイズの
大きさ、言語処理系会社としてのプライドなどの観点から問題があった。
2. 実は、そもそも gcc が対応していないアーキテクチャも世の中にはあって、
その環境でも Java や C# を動かしたい場合には、駄目であった。
また、新しいCPUが出てきたときには、gccの方を修正しなくてはならなく
なるが、gccのソースを解読するのは難しいので難しい。
3. C言語が対応しているCPUであっても、そもそも、プログラミングのフレームワーク的な
構造が、Windowsとは全く異なっているプラットフォームが時々ありえる。
例えば時代が違うかもしれないが、Objective-Cの環境でWindows風のプログラミングを
するのは難しい。そもそも、GUIプログラムは特殊言語で書くようになっているプラット
フォームや、Waitや効率的なメッセージループを書けないプラットフォームが存在しており、
そのような環境に同じソースコードで書いたプログラムを移植するには、インタプリタ的にも
動作しうる仮想コードで無いと困ることがある。
2019/11/28(木) 23:18:49.00ID:HBU31YUq
>>14
4. 例えば、サーバーなどでは、インタプリタ言語しか許可されて無い事がある。
この場合、そのインタプリタ言語で仮想マシンを作ってしまえば、JavaやC#
の仮想コードを動かすことが出来る。gccのようにバイナリに直す仕様に
していたならば、そもそもこのような環境には対応できなかったことになる。
4. 例えば、サーバーなどでは、インタプリタ言語しか許可されて無い事がある。
この場合、そのインタプリタ言語で仮想マシンを作ってしまえば、JavaやC#
の仮想コードを動かすことが出来る。gccのようにバイナリに直す仕様に
していたならば、そもそもこのような環境には対応できなかったことになる。
2019/11/28(木) 23:32:24.38ID:HBU31YUq
>>15
5. 当時のWin3.1系だと、アプリのバグはOS全体を停止させてしまうことが有った。
このような環境だと native のコードにしてしまうよりも、Javaのように
仮想コードをインタプリタで解釈実行できる機会を与えた方が安全であった。
Win3.1系に限らず、native コードに致命的バグが有った場合に、OSにまで
被害を及ぼさずに安定して停止させるのは、OS開発者に精密な設計を要求する。
それに比べて、仮想コードを解釈実行するなら、致命的バグが有ったら安全に
エラーを出力することは、とても容易に出来る。
サーバーマシンなどの信頼性を要求する環境では、OSにバグがあった場合でも
絶対にOSをダウンさせたくない。そのような目的では仮想コードを解釈実行する
方式は有効である。
5. 当時のWin3.1系だと、アプリのバグはOS全体を停止させてしまうことが有った。
このような環境だと native のコードにしてしまうよりも、Javaのように
仮想コードをインタプリタで解釈実行できる機会を与えた方が安全であった。
Win3.1系に限らず、native コードに致命的バグが有った場合に、OSにまで
被害を及ぼさずに安定して停止させるのは、OS開発者に精密な設計を要求する。
それに比べて、仮想コードを解釈実行するなら、致命的バグが有ったら安全に
エラーを出力することは、とても容易に出来る。
サーバーマシンなどの信頼性を要求する環境では、OSにバグがあった場合でも
絶対にOSをダウンさせたくない。そのような目的では仮想コードを解釈実行する
方式は有効である。
2019/11/29(金) 00:03:04.59ID:LpyfBhuP
>>14
「3」に関して。
Javaの登場時期と外れているが、例えば、iOSアプリは原則、Swiftで書かなければ
ならない。Swift は、native binaryに変換はされるが、OSのAPIの関数呼び出し規則の
仕様が非公開。だから、Swift以外の言語を独自にnative binaryに直した場合、
OSのAPIを呼び出す方法には、Appleの公式なドキュメントが無いので、
独自にリバースエンジニアリングをして対応する必要がある。
native binaryにいきなり直さずに、フロントエンドの処理系がJavaをパースして、
Swift言語に直すのも一つの方法である。
しかし、仮想コードに直す方式なら、このような場合でも対応できる。
仮想マシンをSwiftで書いておけば良いのだから。
「3」に関して。
Javaの登場時期と外れているが、例えば、iOSアプリは原則、Swiftで書かなければ
ならない。Swift は、native binaryに変換はされるが、OSのAPIの関数呼び出し規則の
仕様が非公開。だから、Swift以外の言語を独自にnative binaryに直した場合、
OSのAPIを呼び出す方法には、Appleの公式なドキュメントが無いので、
独自にリバースエンジニアリングをして対応する必要がある。
native binaryにいきなり直さずに、フロントエンドの処理系がJavaをパースして、
Swift言語に直すのも一つの方法である。
しかし、仮想コードに直す方式なら、このような場合でも対応できる。
仮想マシンをSwiftで書いておけば良いのだから。
2019/11/29(金) 00:10:50.59ID:LpyfBhuP
>>17
補足すると、iOSのアプリをC/C++言語で書く方法は、Apple公式では
公開されていないらしい。手短に書けば、C言語からOSのAPIを呼び出す
方法が公式ドキュメントでは分からない。そもそも、OSのAPIがCの関数ではなく、
Swiftの関数として定義されてしまっているのだから。
Windowsを使っていると、C言語やアセンブラからOSのAPIであるところの
Win32 APIを呼び出す方法が厳密にドキュメント化されているのが当たり前になっているが、
少なくとも iOSではそうはなっていないようだ。
当たり前すぎて気づかないが、DOSやWindowsは、native binary重視の環境だったの
かもしれない。実際、Unix系OSは、そもそも binary 互換性は重視しておらず、
同じOSであってもバージョンが変われば再コンパイルして対応するような、
ソースレベル互換の文化である。Windowsはバイナリ互換の文化である。
補足すると、iOSのアプリをC/C++言語で書く方法は、Apple公式では
公開されていないらしい。手短に書けば、C言語からOSのAPIを呼び出す
方法が公式ドキュメントでは分からない。そもそも、OSのAPIがCの関数ではなく、
Swiftの関数として定義されてしまっているのだから。
Windowsを使っていると、C言語やアセンブラからOSのAPIであるところの
Win32 APIを呼び出す方法が厳密にドキュメント化されているのが当たり前になっているが、
少なくとも iOSではそうはなっていないようだ。
当たり前すぎて気づかないが、DOSやWindowsは、native binary重視の環境だったの
かもしれない。実際、Unix系OSは、そもそも binary 互換性は重視しておらず、
同じOSであってもバージョンが変われば再コンパイルして対応するような、
ソースレベル互換の文化である。Windowsはバイナリ互換の文化である。
2019/11/29(金) 08:20:28.82ID:grds9Ww1
2019/12/07(土) 05:37:08.95ID:GAACkWN6
C++はいずれRustに置き換えられるのでは。
2021/05/07(金) 14:25:19.49ID:3nGJ1ama
c++はソースコードにパスワード埋め込んでも解析出来ない?
c#は完全に逆コンパイルできるからソースコードにリテラルでパスワード埋め込んでも隠せないけど
汎用性がーとかは別として
c#は完全に逆コンパイルできるからソースコードにリテラルでパスワード埋め込んでも隠せないけど
汎用性がーとかは別として
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★11 [蚤の市★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- __イスラエル紙、ベネズエラ政権交代をトランプに促したのはイスラエル、影響力の大きさを示唆 [827565401]
- __ブルガリア、Z世代の抗議が増税予算と汚職政治への怒りへ、政権が崩壊、若者を無視する政治への警告 [827565401]
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 俺の口癖が「へー」「そう」「どうも」なんだが
- キャッシュレスに対応してない店、手数料が問題ならその分値上げすればいいじゃない、現金の管理や手数料、両替もただじゃない [943688309]
- 【正論】検察「山上よ、どんな事情があろうと暴力が許されない」 [442080748]
