Java入門・初心者質問スレ Part.4 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
ググればいいような?
あ、そうだ。自分で作ればいいじゃん。
テキストファイルにコマンドと使い方書いといてそれ読んで画面にコマンド出しといてマウスカーソルが上に来たら使い方が出るみたいなやつ。 >>411
お前へのレスは最後にすると言ったな
あれは嘘だ >>396
句点「。」と読点「、」だけど、逆だと思ってるひとは多い。 Javaプログラマはマルチスレッドにしなくてもいいのにマルチスレッドで作ったり、それぞれのスレッドで同じデータを参照、更新したがるから変なことになる。 質問です。
フィールド定数として下記のようなインスタンスを持つのはマルチスレッドプログラミング的に問題ありますか?
private static final Comparator<Date> COMPARE = new Comparator<Date>() {
@Override
public int compare(Date s, Date t) {
return s.compareTo(t);
}
}; >>417
その Date が java.util.Date ならそれ自体がスレッドセーフでないためにうまく動かない可能性がある。
Date のインスタンスを渡す側の問題だ。COMPARE.compare(s, t) のように渡すことになるだろうが、
この s, t が他のスレッドと共有されており尚且ついつ書き換えられるかわからない場合は比較している
最中に書き換えられる可能性がある。 >>417
値が変化しないなら気にしなくておk
複数スレッドで書き換えるならvolatile付けとけ >>420
volatile 付けても複数のスレッドで同期取らずに書き換えるなら同じ事では? 用途としては、
class DateUtil {
private static final Comparator<Date> COMPARE = new Comparator<Date>() {
@Override
public int compare(Date s, Date t) {
return s.compareTo(t);
}
};
public static List<Date> sortDate(List<Date> dateList) {
Collections.sort(dateList, COMPARE);
return dateList;
}
}
こういうイメージです。
(sortするだけでわざわざreturnする必要ないかもしれませんが)
フィールド変数は、危ないかもしれませんが、定数COMPAREは、それ自身に、
インスタンス変数を持ちません。なので、こういう場合はスレッドセーフなのか気になりました。 >>422
それ自身はスレッドセーフだが List も Date もスレッドセーフではないので
使う側で同期を取るか、または他のスレッドからアクセスされないように作る
必要がある。 判定してる最中または後にt,sが示す時間が変更された場合か
スレッドセーフでないことをバグであるかのように見ている人がいるとやっかいそうだ
もうちょい誤解しにくい日本語訳ないかな Ruby の作者の、Matz でも、マルチスレッドはやった事がない
普通、関数を書く時に、マルチスレッド対応で書く人は、いない。
誰も書いた事がないはず。
マルチスレッド対応で書くには、数十年の研究が必要
マルチスレッドどころか、コンテナでは、read 走査中に、
要素を追加しただけで、バグるように作られているものが、ほとんど
初心者がマルチスレッドをやるなど、30年は早い マルチスレッドなんて簡単だよ
共有するデータはDBなどに集中させる
Javaでは基本的に共有しないでローカルコピーを使う
どうしてもJavaで共有したいならイミュータブルにするかスレッドセーフなライブラリを使う エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募ができる 数十年も研究しなくても普通のプログラマなら数秒から数分で理解できると思うがなあ・・・ 普通のプログラマなら、プログラミングに関わるほとんどの概念は数分でマスターできるけど、ここ初心者スレだから、あまり簡単を強調しない方がいいかも 大企業様のオレオレフレームワークも数分でマスターできるのか >>430
そうか?そりゃ余程へんな解説を聞いたかサンプルプログラムがサンプルと言えないほど複雑でクソだとかそういう特殊な場合ではないか? たとえば関数型プログラミングを
初見で数分で理解できたわーって
スラスラ書けるプログラマなんかほぼいない マルチスレッドの話だろ?そんなの概念は直感でわかるだろ。
環境や言語やそのライブラリに応じて実現方法が違うだけで。 直感で分かる言うひとと〜
すぐには理解できない言うひとの〜
想定してるもんがちがう〜
ちがう〜 >>423
では、渡すパラメータがローカルメソッドから渡されて、かつフィールド等にセットされない変数なら
スレッドセーフが保証されるわけですか? >>436
スレッドセーフは保証されるよ
ローカル変数はスタックメモリに置かれてスタックメモリは
スレッドごとに独立してるから共有されないし
Comparatorは状態を持たないからね 基本は他のスレッドから書き込みアクセスされる可能性があるかないかだ。
あるのならセーフではない。なければセーフ。それだけの話。 ServletやAndroid書いてればマルチスレッド嫌でも使うだろ >>437
意味がわかりません。
そもそもなんでDateやListがスレッドセーフではない話が出てきたんですか? >>443
でもそれぞれフィールドに保持してないですよ。書き換わる要素はないです。 >>444
だからそれそのものはスレッドセーフだけど呼び出す側で他スレッドと共有されていたらダメってこと。
>>423に書いてあるじゃん。 Elixir = Ruby + Rails + Erlang VM
Elixir は関数型言語で、状態を持たない
Elixir で並列に動く、小プロセスはデータを共有しない。
10万の小プロセスを、0.6秒で起動できて、すべてのCPUコアを使いつくす
これで、スレッドと状態を持つ地獄から、おさらば!
プログラミングElixir、2016
著者は「プログラミングRuby」のDave Thomas Q: Javaプログラマはなぜメガネかけてるの?
A: 彼らくっきり見えないんだよ。(can't see sharp(C#))
https://pbs.twimg.com/media/DIy2ilnW4AEcHJB.jpg まあ確かに俺はC#はできない。
かといってこれから覚えようという気も起きない。
というかそもそもJavaプログラマではない。少なくともJavaを使う仕事が俺には回ってこない。 >>450
なんでこのスレでなにかを発言しようと思ったの? C#はJavaのパクリなんだからその気になればすぐ使える
というとC++のパクりだろって言われるだろうがな >>455
問題なのは言語じゃなくてFrameworkだろ
まあJavaは最近c#に比べて周回遅れだが >>457
フレームワークなら同じ言語内でもある話だろう
phpの乱立に比べれば問題ないんじゃないか >>458
phpよりマシってのは同意
「すぐ使える」ってのがチュートリアルをこなせる程度って意味なら同意 spring bootがあるからJavaから抜けられない Javaはdotnetに比べるとめんどくさすぎるよ
未だに環境変数手動設定なクソSDK
キモい文法のビルドスクリプト
不親切でわかりにくいOSSエコシステム
何がどこに入ってるかわからんパッケージシステム
異様な量のxml設定ファイル
コンテナ・フレームワーク・基本ライブラリの粗製濫造
古くさい冗長な文法
周回遅れで導入される言語機能
アプリケーションの実装に集中する前にもうクタクタ 質問です。
https://ideone.com/9lWtPU
上のコードで、addメソッドはString型を返すはずですが、
printlnメソッドの()内に""が無くてもよいのは何故でしょうか? メソッドにはダブルクオートはつけない
変数にもつけない
つけるのは直書きしたときだけ >>461
アホ乙
アホには使いこなせないのがJava 無駄な工数払うほうがアホだろ
ボランティアじゃねえぞ
この感覚が正しいからspring bootみたいなお手軽ブートストラッパが大流行したんだよ 工数に入れてる時点おまえはただの糞馬鹿
お前の言ってることなんて工数の内にも入らん
よって馬鹿には使いこなせない 工数にもならない程度の作業をラッピングされただけでありがたがるような馬鹿だと
どの道問題起きたときに苦労するからJavaでの作業は向いてない
ラッピングされてるってことは単に馬鹿用に端折ってブラックボックス化させてるだけだしな
bootのデフォルトで使われてるコンテナすら理解してないレベルだろお前等は
馬鹿が内製向けのツールを作る分には楽になるだけって話だな
よって馬鹿には使いこなせない >>469
こういうバカがDRY無視したコピペコードを大量生産するんだよなぁ
基本中の基本すらわかってない本物のバカオブザバカ Javaも使いこなせない馬鹿が反論できなくなって発狂
いつもパティーンやな
お前みたいな馬鹿がグラマってるから巷に馬鹿が溢れかえるんだよ馬鹿
おまえはVBでも弄ってろアホ >>473
パツキングラマーはバカに決まってんだろ
おまえの行く末はおまえが決めればいいけど相手を見下すだけの方針は息苦しくなるよ
本当の天才と相対したら死んでしまう >>461
新しいものが出る度に乗り換えて、
客の環境も入れ替えさせるの?
趣味なら好きなの使えばいいんじゃないかな >>478
一番新しいものが一番安全
僕らがStrutsから学んだことだぬ >>486
つまり新しいことと安全なことは関係ないと >>487
それって極端な事言って議論を破壊する詭弁じゃん ベータ版と比較して安全とか馬鹿だと思います
リリース版と比較すべきでしょう
ベータ版の意味知らないのかなって思いますよ ID:47K+oTLFみたいな屁理屈さんが初心者を排除してるよ 現役のプログラマの人がいたら意見を聞かせて欲しい
新人が入ってくるとしてどういうことを身につけておいて欲しい?もちろん会社によって求められる技術が違うのは分かっているんだけど
今職業訓練中。こんな風に書くとお前の才能無いの人のせいにするなとか言われそうだけど、講師がひどすぎる。クラス全員置いてけぼりでみんな困ってる
だからもう自分で入門書読んだりしてなんとか文法勉強してるんだけど、そこから先も一人で進めるかは不安。どういう勉強をしていくのが今求められる人材になれる? >>497
知ったかぶりをせず人に聞ける程度のコミュ力
極論プログラム書けなくても現場で書ける人と繋がれたらいつの間にか書けるようになってるんだから小手先のスキルは後で良い JUnitを覚えろ
アルゴリズム一つ作るごとにテストケースを作って動作が正しいことを検証しろ
テスト駆動開発は理解も深まるし業務でJava使うような堅い職場はJUnit使えると必ず役立つ >>498
「先輩、オブジェクト指向って何ですか?」 >会社によって求められる技術が違うのは分かっている
お前のただの妄想
>講師がひどすぎる
酷すぎる理由が一切書かれてない。読み手はお前の被害妄想としか受け取れない
>入門書読んだりしてなんとか文法勉強してる
書いてる内容を3日で理解できないなら諦めてコンビニバイトでもしろ
そんな低次元の知識は仕事で必要な知識量の1/100にも満たないからな
>人に聞ける程度のコミュ力
1日に何回も聞く奴はウザがられる
>JUnitを覚えろ
時間の無駄 生徒についてはここでは触れないが、
酷い講師がいることは事実。
ある言語の教室に、その言語を全く知らない講師が来たのは震撼した
応募してきたクズも採用した教室も絶対に許さない >>501
>お前のただの妄想
>書いてる内容を3日で理解できないなら諦めてコンビニバイトでもしろ
>1日に何回も聞く奴はウザがられる
>時間の無駄
>酷すぎる理由が一切書かれてない。読み手はお前の被害妄想としか受け取れない
と否定する割にお前の主張に根拠がないんだが >>488
UbuntuのリリースはDebianのベータを元にしてるな
つまり新しいかどうかでなく、品質を確保できているかどうかだ
そして新機能追加したばかりだと必ずバグはある
多くの人が使い枯れて安全となる
もちろんフィードバックがされないような状態はダメだ
ころころ変わるようなソフトは危険ということだ 職業訓練であれ、全員未経験者の趣味で触ったこともない人ばかりって講座もすごいな
そんな高度な授業なのか
講師もどうしていいのか分からないんじゃ? >>497
職業訓練に通ってるような奴に期待してる職場なんてないから、そのまま流れに身を任せていれば大丈夫
「今求められる人材」とかいうのは、お前とは違うステージの人間が意識すること スッキリわかるJAVA入門でオプジェクト志向の章に入ったものです。
メソッドの作成で急にpublicだけが抜けていたり、voidだけが抜けていたり、staticがつねに抜けていたりでその説明がありません。
ご教授お願いします。 >>508
この本が1番初学者にとっていいって聞いたんですけどここにたどり着くまでにpublicとstaticの意味について全く触れられないままオブジェクト指向に入りました。
そこでいきなりpublicが抜けていたりstaticが抜けていたりでよくわからない状況なんですけど他の本の方がいいんですかね? ■ このスレッドは過去ログ倉庫に格納されています