X



C# vs Java どっちが好き? その4©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0265デフォルトの名無しさん
垢版 |
2018/04/05(木) 17:58:35.65ID:9j3B62jp
で、将来性はどっちなの?
0267デフォルトの名無しさん
垢版 |
2018/04/05(木) 20:36:11.51ID:BdV4iELu
C#よりJavaが好きな人はこの世に一人もいない。
Javaのほうが好きな人は人の形をした人ではないなにか別のものだと考えていい。
0270デフォルトの名無しさん
垢版 |
2018/04/06(金) 21:12:39.30ID:/br3WlRA
オープン系左翼がJavaに走ったが全然オープンじゃなかった。
大勢の日本の左翼が北朝鮮に亡命したときのように。歴史は繰り返されるんだな。
0272デフォルトの名無しさん
垢版 |
2018/04/06(金) 21:28:51.55ID:qVFw/dQ3
Javaって人気はずっと一位ですよね?
0276デフォルトの名無しさん
垢版 |
2018/04/07(土) 05:32:24.63ID:Cc4pa2fK
三ヶ月在れば一つのプログラム言語を習得しアプリケーションを作ることが出来るw
https://mevius.5ch.net/test/read.cgi/win/1504394535/9

おいらは習作はしない、他愛ないことはやらないのだ
https://mevius.5ch.net/test/read.cgi/win/1503735829/881-883

C#なんてのはVZの開発環境にないwww
https://mevius.5ch.net/test/read.cgi/win/1520923324/913

ワロタ、ワロタ
https://echo.5ch.net/test/read.cgi/win/1467974448/129-132
0277デフォルトの名無しさん
垢版 |
2018/04/07(土) 20:56:59.63ID:FhSXPotZ
JavaってJDKが複数あるけどC#はVS以外もあるの?
0279デフォルトの名無しさん
垢版 |
2018/04/07(土) 21:26:16.06ID:/J1pPEPz
>>277
SharpDevelopってのがある

https://ja.wikipedia.org/wiki/SharpDevelop
>SharpDevelop(シャープデベロップ)は、オープンソースで開発されている.NET Frameworkのための統合開発環境(IDE)である。
>SharpDevelop自体も.NET Frameworkの可能性を示すため、C#言語を用いて開発されており、.NET Framework上で動作する。
0282デフォルトの名無しさん
垢版 |
2018/04/08(日) 04:46:58.73ID:g9QpbpX8
IDEがVS一つしかないのって事でしょ
0286デフォルトの名無しさん
垢版 |
2018/04/08(日) 13:01:32.19ID:2ibyQkqv
NetBeans更新止まったしJavaはEclipseとIntelliJだけになっちゃった
もうC#の方がIDE多い?
0288デフォルトの名無しさん
垢版 |
2018/04/08(日) 15:11:20.85ID:LPiOPeik
blend使おうぜ
カックイーアニメーションを
工場勤務のおっさんに見せつけるんだ
0289デフォルトの名無しさん
垢版 |
2018/04/08(日) 15:51:52.02ID:PXm2Ejxg
とはいえ仕事として需要があってお金になるのはJavaの方なんで
0290デフォルトの名無しさん
垢版 |
2018/04/08(日) 16:33:43.86ID:mE+8rAwy
C# は、Platform 毎に処理を場合分けしないといけないって聞いたけど、
その辺はどうなの?
0291デフォルトの名無しさん
垢版 |
2018/04/08(日) 16:45:45.94ID:rCfy0xLV
プラットフォーム依存のネイティブコールは場合分けが必要だがそれはJavaも同じ
0292デフォルトの名無しさん
垢版 |
2018/04/08(日) 16:47:26.52ID:mE+8rAwy
>>291
JavaのSwingで、GUIアプリを作ったときは完全共通にできたよ。
コマンドラインコンパイラの javac しか使わなかったのに、簡単に作る事が
できた。Swingの仕様はとても美しい。
0294デフォルトの名無しさん
垢版 |
2018/04/08(日) 16:55:15.67ID:mE+8rAwy
Javaでもテストは必要だと思う。でも、C#の場合、そもそも根本的に
環境依存すると聞いた。Javaは本当にそのまま動く可能性は高い。
0298 ◆QZaw55cn4c
垢版 |
2018/04/08(日) 17:49:06.12ID:FgO8HAKn
>>294
>C#の場合、そもそも根本的に環境依存すると
どういう理由でそういうことになるのか?
0299デフォルトの名無しさん
垢版 |
2018/04/08(日) 18:01:24.19ID:mE+8rAwy
C# の場合、例えば、メモリ上のビットマップに文字を書く場合、Win と Mac で、
以下のように全然違うコードを書かないといけないらしい:

[Win]

Font   font = new Font(fontname, fontsize);
Bitmap  bmp = new Bitmap( (int)width, (int)height,
      System.Drawing.Imaging.PixelFormat.Format32bppArgb );
Graphics g = Graphics.FromImage(bmp);
g.DrawString( text, font, Brushes.White,
    (bmp.Width-size.Width) / 2, (bmp.Height-size.Height) / 2 );
g.Dispose();

[Mac(OSX)]

NSFont font = NSFont.FromFontName(k.ID, k.size);
var   attr = NSDictionary.FromObjectsAndKeys(
         new NSObject[] { font, NSColor.White },
         new NSObject[] { NSStringAttributeKey.Font,
                  NSStringAttributeKey.ForegroundColor } );
NSImage bmp = new NSImage(picsize);
bmp.LockFocus();
text.DrawInRect(
    new CGRect(
      (picsize.Width - size.Width) / 2,
      (picsize.Height - size.Height) / 2,
      size.Width, size.Height ),  attr);
bmp.UnlockFocus();
0300デフォルトの名無しさん
垢版 |
2018/04/08(日) 18:48:57.74ID:rCfy0xLV
>>299
Javaで`DirectXとOpenGLとXlibで直接イメージをゴリゴリ操作するには場合分けが必要だけどC#でマルチプラットフォームのライブラリ使えばすごく簡単
なんてこと言ったら馬鹿だと思う人もいるだろうけどあなたの言ってることはそういうことだ
0301デフォルトの名無しさん
垢版 |
2018/04/08(日) 19:02:06.56ID:WVbFh08D
パス区切り文字に\を書いた事の無い者だけがマルチプラットフォームに石を投げなさい
0302デフォルトの名無しさん
垢版 |
2018/04/08(日) 19:07:46.39ID:mE+8rAwy
>>300
Java:公式のライブラリが元々マルチプラットフォームに対応している。
C#:・・・・・・・・・・・・・・・・・・・・・・・に対応していない。

この差は大きいのでは。
0304デフォルトの名無しさん
垢版 |
2018/04/08(日) 19:53:55.06ID:g9QpbpX8
確実に分かった事が一つある
ここの人たちはハイレベルだな
俺にはチンプンカンプンだもんね
0305デフォルトの名無しさん
垢版 |
2018/04/08(日) 21:34:05.79ID:R2AG9wiQ
>>302
C#自体の設計自体はOS依存じゃなく
設計時から切り離されてるよ
0307デフォルトの名無しさん
垢版 |
2018/04/08(日) 22:03:20.88ID:lHtMncRP
ファウラー本人にも葛藤があったようだけど今リファクタリングすべきコードで溢れてるのはJavaScriptだから仕方ない
0308デフォルトの名無しさん
垢版 |
2018/04/08(日) 22:22:07.73ID:6bK6CrsC
>>301
https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2008/77859s1t%28v=vs.90%29

パスやファイル名を表す文字列を引数にとるルーチンでは、UNIX 互換のパス デリミタを使用します。
UNIX ではパス デリミタとしてスラッシュ (/) しか使用できませんが、
Win32 オペレーティング システムは円記号 (\) とスラッシュ (/) の両方を使用できます。
0310デフォルトの名無しさん
垢版 |
2018/04/08(日) 22:24:24.40ID:xGLPvfyA
>>305
それを言うなら、CもC++も設計自体は、OS依存じゃなく設計時
から切り離されてる。数十年前から。
0312デフォルトの名無しさん
垢版 |
2018/04/08(日) 23:55:13.06ID:R2AG9wiQ
>>310
それ意味違うわ
0313デフォルトの名無しさん
垢版 |
2018/04/09(月) 00:12:14.18ID:cLZZUAsH
>>312
再コンパイルすればC++だって、ほとんど全ての環境にも互換性があるのは同じ。
互換ライブラリさえあれば、マルチプラットフォームなのはC++だって当たり前。
0315デフォルトの名無しさん
垢版 |
2018/04/09(月) 06:16:48.20ID:ADjt/9Tk
>>314
バイナリが動くのCPUが同じ系列の間だけね
0316デフォルトの名無しさん
垢版 |
2018/04/09(月) 11:30:58.31ID:dDqA630c
>>302
x 対応している
o 対応を謳っているが品質が低く、テストしてデバッグして修正しないと動かない
0320デフォルトの名無しさん
垢版 |
2018/04/09(月) 13:08:19.82ID:oK9yQ0Ek
Java は GUI を使った場合でも結構簡単に、他のプラットフォームでも動く。
実際、ブラウザ上のアプレットでも実行できるようになっているわけで、
現実に動く確率はとても高い。

C#は、上で挙がっている例のように、そもそも動くように設計すらされてない。
0321デフォルトの名無しさん
垢版 |
2018/04/09(月) 13:13:34.19ID:oK9yQ0Ek
>>319
実際、MSのFUDだと思う。現実にJavaは、1つのソースでどのプラットフォーム
でもちゃんと動くし。C#は、そもそも最初から動かない事がはっきりしてる。
0322デフォルトの名無しさん
垢版 |
2018/04/09(月) 13:23:20.78ID:oK9yQ0Ek
>>311
Electron も wasm も、ベースが JS だから、マルチスレッドの対応がとても弱い。
例えば、何か重たい処理を実行中に「中止ボタン」付きのダイアログを出して、
中止できるようにすると言うようなことが、やりにくい。スレッドの中断自体は
terminate メソッドで可能だが、「クリーンアップ処理」ができない。

Win32だと、他スレッドへ「例外」を送ることができるので、catch すれば、
クリーンアップ処理できるはず。
0323デフォルトの名無しさん
垢版 |
2018/04/09(月) 13:28:44.39ID:oK9yQ0Ek
Javaも、Win32と同様に他スレッドに例外を throw できるらしいので、
今言ったようなことをすることができるはず。つまり、重い処理を
ワーカー・スレッドで実行しているときに、メインスレッドの「中断」ボタン
を押すと、処理を中断して、なおかつ、クリーンアップ処理もできるはず。
しかも、中断ボタンが押されたかをワーカースレッドでは、ポーリング
する必要はないので効率はとても良い(Win32/MFCでもその点は同じだが)。

Electron/wasm/JS などではそれができない。
0326デフォルトの名無しさん
垢版 |
2018/04/09(月) 14:23:34.70ID:oK9yQ0Ek
>>325
それで、WokerThread は、イベントが発生したことを知ることまではできると思う。
しかし、そのイベント・ハンドらの中から、例外を throw しても、WorkerThread
の本体では、catch する事はできないはず。だから、クリーンアップ処理を行う
のは難しい。
0328デフォルトの名無しさん
垢版 |
2018/04/09(月) 15:16:54.10ID:ml5ntbUH
>>326
メッセージングでやりゃいいんだよ。
なんかtrycatchが目的化してない?
goで導入しなかった理由読んだ?
そういう考え方もあんだよ。
0329デフォルトの名無しさん
垢版 |
2018/04/09(月) 15:32:10.22ID:oK9yQ0Ek
>>328
WorkerThread が、例えば、4重のforループの中で、データを処理していたとして、
MainThreadで「中止」ボタンが押されたので、WorkerThreadを中断したい場合、
どうやってWorkerThread が作成した中途半端なデータをクリーンアップするの。

あと、少し論点がずれるけど(最初考えてなかったので)、
char *pBuf = new char [・・・]; (1)
・・・
delete pBuf; // (2)
pBuf = NULL; // (3)
みたいなものは、必ずセットで行わなくてはならないことが多い。
しかし、(2),(3)の間に「中止」のイベントが入ってきた場合、困った問題が起きそう。
0330デフォルトの名無しさん
垢版 |
2018/04/09(月) 15:36:02.71ID:oK9yQ0Ek
昔だったら、for文の先頭あたりに、1バイトのint3命令を書き込むという
コード書き換えテクニックを使う手もあったけど、LLVMとwasmでは
そんなこともできそうにないし。
0332デフォルトの名無しさん
垢版 |
2018/04/09(月) 16:09:47.94ID:oK9yQ0Ek
(2)と(3)の間で (中止)例外を throw されても困るので、(中止)例外
が throw されてもいい場所に、ある関数check_stop()を書くようにしておいて、
check_stop() は、瞬間的に中止要求があるかどうかを示す flag をポーリングして、
もし「1」になっていたら、例外を throw するようにすればいいかな。

[WokerThread]
try {
 for (・・・) {
   check_stop();
  ・・・
 }
}
catch(ストップ例外) {
 /*クリーンアップ処理*/
}

volatile BOOL  g_bStop = FALSE;
void check_stop()
{
 if ( g_bStop ) {
  throw ストップ例外;
 }
}

見たいな感じ。
0334デフォルトの名無しさん
垢版 |
2018/04/09(月) 19:43:39.03ID:dDqA630c
>>319
キミはいつJavaを始めたんだね? Javaのバグの歴史ぐらい勉強してほしい。
歴史を捏造するようになったら、もうそれはネトウヨだ。
0335デフォルトの名無しさん
垢版 |
2018/04/09(月) 20:47:18.13ID:YgZ7vT9e
>>334
今のJavaの話じゃないの?
0336デフォルトの名無しさん
垢版 |
2018/04/09(月) 21:10:54.39ID:dDqA630c
>>335
フフフ、今まで碌にテストしないでリリースしていたJava開発者がこれからは急に心を入れ替えてテストするというのかい?
0337デフォルトの名無しさん
垢版 |
2018/04/09(月) 21:14:06.06ID:GcHmgXrk
>>334
朝鮮ネトウヨの歴史捏造は酷いからな
歴史をコリエイトと言われているくらい嘘と願望だからな
0338デフォルトの名無しさん
垢版 |
2018/04/09(月) 21:19:48.40ID:xfuEg0jA
>>337
貴方は優秀なエンジニアだ思うんだけど話がそれがち〜
0339デフォルトの名無しさん
垢版 |
2018/04/09(月) 21:43:56.15ID:NyS/oHv5
>>320
JavaならAWTを使ってどこでも動くGUIアプリ作れるよ

AWTは糞だよ、これからはSwingだよ

Swingも糞だよ、これからはJavaFXだよ

JavaFXを標準から外すよ、AWTやSwingも将来の保証はないよ

この迷走ぶりに対する感想は?
0340デフォルトの名無しさん
垢版 |
2018/04/09(月) 22:03:34.99ID:YgZ7vT9e
>>336
今のJavaの話なの?
0341デフォルトの名無しさん
垢版 |
2018/04/09(月) 22:04:29.58ID:YgZ7vT9e
>>339
Swing最強伝説
0342デフォルトの名無しさん
垢版 |
2018/04/09(月) 22:27:57.57ID:8KwflKKi
ご自慢のGUIを移植できずにcoreから切り離しちゃうよりはマシじゃね?
0344デフォルトの名無しさん
垢版 |
2018/04/09(月) 23:14:03.65ID:K8XlSY1+
GUIはわりと独立してるから仕事の影響それほどない
気に入るまで作り直してくれ
0345デフォルトの名無しさん
垢版 |
2018/04/09(月) 23:25:28.62ID:lxMrkC5q
メソッドのout 出力はわかった
refがわからん・・・
必死にググってるんだけど
ピンとこないわ エロゲで例えてくれ
0346デフォルトの名無しさん
垢版 |
2018/04/09(月) 23:26:13.99ID:dNOi8uH1
SwingとかC#と比べたらうんこ過ぎてあんなばっちいもの2度と触りたくないと思ったけど。
0350デフォルトの名無しさん
垢版 |
2018/04/10(火) 01:06:57.11ID:kcsk9GK3
このスレはJava信者がちょっとイタすぎるな。無知すぎる。
0351デフォルトの名無しさん
垢版 |
2018/04/10(火) 01:11:07.05ID:tPeGzwzY
若造は、最初に見たものをそのまま信じるから困る。
MSのセールストークや「噂」をそのまま信じてる。
0352デフォルトの名無しさん
垢版 |
2018/04/10(火) 01:13:36.48ID:kcsk9GK3
Java案件=デスマーチと言われるぐらいだからな。多くの若者が鬱になって逃げ出した。
なぜプロジェクトの途中にPGの募集があるのかよく考えよう。
0355デフォルトの名無しさん
垢版 |
2018/04/10(火) 01:28:32.30ID:2lsRrdCr
他スレッドの停止はキャンセルトークンなりのパターン使えばいいじゃん
javaアプレットが許されるなら.netはSilverLightやwasmへの変換ができると自慢すればよいのかw?
0356デフォルトの名無しさん
垢版 |
2018/04/10(火) 01:28:56.51ID:tPeGzwzY
欝の人は、自分と関係した事柄をなんでも悪く取る傾向がある。だから、昔から
ある言語(Java)は悪口書かれやすい。新しく出た言語(C#)は実経験を伴わない
から良いことばかり書かれやすい。
0360デフォルトの名無しさん
垢版 |
2018/04/10(火) 02:52:00.74ID:tPeGzwzY
ちゅうか、Javaは出たときから急激に人気が出たのに対し、C#は実は余り人気が
ないのかも。なんかごった煮で、センスが悪いからかな。
0361デフォルトの名無しさん
垢版 |
2018/04/10(火) 02:58:29.63ID:tPeGzwzY
Javaは古くからあって、C#は大分新しいと思ってたけど、そうでもなかったんだな。
この感覚の差はどこから来てるんだろう。
0362デフォルトの名無しさん
垢版 |
2018/04/10(火) 03:05:47.25ID:tPeGzwzY
https://teratail.com/questions/44042

>アプリ開発未経験者が Xamarin を使うのは適していないと考えます。
>Xamarin は基本的に、 Android API, iOS の API を C# から呼び出せるようにしたものなので、両者について知らないとアプリ開発はできません。
>画面までも同一コードで開発できるとされる Xamarin.Forms についても、同一コードで開発できる範囲はとても狭いので、それを超える要件に対応するには、Android や iOS の知識が必要になります。

Java
Android SDK
iOS SDK
Mac
Xcode
C#
.NET Framework
Mono (.NET Framework のオープンソース実装)
Visual Studio
Xamarin.Android
Xamarin.iOS
Xamarin.Forms

これだけの知識をゼロから並行して身に付けていくのは、否定はしませんが効率は悪いと思います。
まずは Java での Androidアプリ開発や、Swift での iOSアプリ開発を経験されて、慣れてから Xamarin の使用を検討することをお薦めします。

また Xamarin でアプリ開発する際のトラブルシューティングの方法について書きました。

Xamarin を使用したアプリ開発での、問題解決の方法 - Qiita
トラブルシュートにも手間がかかるわけですが、このデメリットがメリットを上回ると判断されるなら、Xamarin は使わない方がよいでしょう。
0363デフォルトの名無しさん
垢版 |
2018/04/10(火) 03:06:25.08ID:tPeGzwzY
まとめると Windows と Visual Studio で Android と iOS アプリの開発を始める場合、以下の知識が必要になります。

Java
Android SDK
iOS SDK
Mac
Xcode
C#
.NET Framework
Mono (.NET Framework のオープンソース実装)
Visual Studio
Xamarin.Android
Xamarin.iOS
Xamarin.Forms
■ このスレッドは過去ログ倉庫に格納されています