X



C# vs Java どっちが好き? その4©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
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
0364デフォルトの名無しさん
垢版 |
2018/04/10(火) 03:10:51.82ID:tPeGzwzY
C#:「多くのOSで動くが、動くと言うだけで、ほとんど互換性がない」
Java:「同一コードが(再コンパイルもなしに)そのまま動く確率が99.9%」
(C++:「互換ライブラリさえあれば、ソースは共通化可能」)
0368デフォルトの名無しさん
垢版 |
2018/04/10(火) 03:40:28.58ID:SZEihiTO
まあMS自身が自社製品にC#殆ど使ってない時点でお察しくださいとしか
0369デフォルトの名無しさん
垢版 |
2018/04/10(火) 05:01:05.43ID:lX4QJIUN
マルチプラットフォームのデスクトップアプリなら
kotlin+javafxが今のとこベストだと思ってる
なんだかんだでどこでも動くし

だが最近のmsは嫌いじゃないしoracle大嫌いだから
xamarinには期待してる
javafxどうなっちゃうんだろ・・・
0371デフォルトの名無しさん
垢版 |
2018/04/10(火) 08:34:25.83ID:YXxfbkbo
>>368
Process Explorerで.netプロセスを色付き表示する設定にしてみろ
お前が思ってる以上に.net使われてるから
0372デフォルトの名無しさん
垢版 |
2018/04/10(火) 09:07:32.94ID:tPeGzwzY
>>371
Win7で、調べてみたら、Microsoft Expression Web 4 だけが .Net アプリで、
他は全て違っていた。

そして、Expression Web 4 だけが起動が超遅くて、起動後の動作も遅い。
C++、Win32/MFC で作られたソフトでこんな遅いソフトは、まず存在していない。
0374デフォルトの名無しさん
垢版 |
2018/04/10(火) 09:31:06.18ID:mZLbPqZa
今時linuxで動く必要ってある?
サーバー以外で使ってる人なんている?
0375デフォルトの名無しさん
垢版 |
2018/04/10(火) 10:12:47.59ID:tPeGzwzY
Wineが実用段階になってきたので、Winから一気に Linux や ChromeOS なんかに
デスクトップOSが移る可能性がある。その際、Linuxで動くことは重要になる。
0377デフォルトの名無しさん
垢版 |
2018/04/10(火) 13:10:11.66ID:6CkCb20Q
wineて20年前の技術じゃん。
そんなの使ってるのお前だけ。
みんなゲストOSとしてインストールしてるよ
0379デフォルトの名無しさん
垢版 |
2018/04/10(火) 14:19:35.11ID:2lsRrdCr
むしろ、個人のPCでJavaで作られてる有名GUIアプリって何があったっけ
IntelliJ系とかBurpとかは思いつくが

最近はwindbgの外側がC#製になって驚いた
0381デフォルトの名無しさん
垢版 |
2018/04/10(火) 15:40:33.23ID:tPeGzwzY
WindowsとLinuxのどっちをゲストOSとしてインストールしてるのか知らんが、
Windowsの支配から離れる、というのが21世紀の人類の目標だ。
人類の多くがその目標に向かっているので多勢に無勢で、Windowsはやがて
終わるだろう。それが目前に迫っている可能性がある。

それに、古いと言うが、Wineの改良は活発に行われている。最近特にVersionUp
が激しいらしい。
0387デフォルトの名無しさん
垢版 |
2018/04/10(火) 19:10:25.96ID:nvaLZrjf
>>386
前から思ってたんだけど貴方、面白いよね
0390デフォルトの名無しさん
垢版 |
2018/04/10(火) 21:27:55.80ID:BJhrOITA
LinuxがWindowsを倒せるほど良いOSなら
何でGoogleはLinuxカーネルを使わない新OSの開発なんてやってるんだ?ww
0391デフォルトの名無しさん
垢版 |
2018/04/10(火) 21:43:15.04ID:hokyRN3e
GPLが嫌なんじゃ?
0392デフォルトの名無しさん
垢版 |
2018/04/10(火) 22:19:30.72ID:aYxA2ggB
>>390
googleの新OSは携帯デバイス向けの軽量なものなんじゃ
linuxは汎用のOSである分専用に設計したOSより無駄が多いんじゃよ
googleが新OSを開発してるからといってlinuxが悪いわけじゃない
googleは自社のインフラにlinuxの独自のディストリを使ってたりするしね
何事にも向き不向きがあるんじゃよ
0394デフォルトの名無しさん
垢版 |
2018/04/11(水) 01:38:07.52ID:VkA16vdY
初耳だよ。googleは何専用のOSの設計なんだ?
0395デフォルトの名無しさん
垢版 |
2018/04/11(水) 08:43:17.83ID:a/H3/quZ
>>375
Wineがどうこう言ってる時点で「LinuxにはGUIアプリの資産がろくにない」って白状してるようなものだろ
「何事にも向き不向きがある」んだからLinuxとWindowsも使い分ければいいだけの事
0399デフォルトの名無しさん
垢版 |
2018/04/11(水) 20:36:48.87ID:hGFjMUTH
BSDライセンスも嫌なんじゃ?
0401デフォルトの名無しさん
垢版 |
2018/04/12(木) 08:34:54.02ID:9JjN+/h3
>>397
結論から言うと、WineとMonoは、11年の時間差があるのに加えて、
WineにおけるMSのコーレルへの投資と、MonoにおけるMSのXamarine買収
が対応し、開発の鈍化、停滞へと導かれる。

Wine は、開始から25年たった現在、ようやく実用段階に達したが、
まだポツポツとした不具合がなかなか取れない。

一方、Mono は、開始から 14年しか経ってない。だから、後11年経っても、
ようやく現在のWine程度にしかならないと予想される。

Wineプロジェクトは、初期、互換性がなかなか高まらなかったが、
コーレル(など)の支援によって一時的に状況は好転した。しかし、MS の
コーレルへの大規模投資により、支援は中止。

同じことが、MSによる Xamarine買収にも当てはまる。つまり、今後、
Monoの開発は、鈍化する。


[Wine]
開始: 1993年 (ネットニュース上で創始)
MSによるCorelへの投資: 2000/10, 2002/10
0.9(最初のβ版): 2005/10/25

[Mono]
1.0: 2004/06/03
2.6: 2009/12/15
Xamarin: 2011/05
MSによるXamarine買収: 2016/02/24
0402デフォルトの名無しさん
垢版 |
2018/04/12(木) 08:51:42.88ID:KEFsrVI9
windows1.0  1985
linux 1.0    1994
Android 1.0  2008

開発開始時期に一体何の意味があることやら・・・
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況