Java入門・初心者質問スレ Part.8
レス数が900を超えています。1000を超えると表示できなくなるよ。
Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.7
http://mevius.5ch.net/test/read.cgi/tech/1515549964/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured >>815
コンビネータを記述できるからλ式に存在意義があるのであって、コンビネータを記述できないλ式なんて「λ式」と名乗る資格がない文法的屑仕様にしか見えないのですけれども >>817
コンビネータ記述できなかったの?
それはそれとしてJavaのラムダ式はコンビネータとは関係なく
匿名クラスを書かなくてすむから便利だと思うよ
Streamとかで使ったら便利だよ 導入した意図も知ろうとしないで
屑仕様と言う人にJavaを語る資格があるとは思えない
普段Java使ってるの? >>818-819
無名クラスとラムダ式の差異なんて知れており、やれといわれたらチャッチャッと「無名クラス->ラムダ式」「ラムダ式->無名クラス」の両方やれますね…
普段は C++ 使いですが、C++方面での認識は「ラムダ式は糖衣構文」
私の認識は「Java や C++ の「自称」ラムダ式は、所詮自称でしかなくコンビネータを記述できない」
「コンビネータを記述できないものをラムダ式と呼ぶことはできない」 いまどきHaskellerでも言わないような理論振りかざす原理主義者なんかNGしとけよ >>821
やれるやれないじゃなくて
ラムダ式を使ったら簡単に書けるでしょう
だから便利でしょうという論理ですよ
Javaの公式ドキュメントでラムダ式と呼ばれてるので
ラムダ式と呼ぶべきかと
ところでJavaのラムダ式でコンビネータ記述できなかったの?
ググったらyコンビネータとかzコンビネータとかパーサコンビネータとかあったけど
それは自分の定義ではコンビネータと呼ぶことはできないとか? >>822
コンビネータが必要になったことがないから
大事なんだと言われてもよくわからんのよね
コンビネータの概念を知らなくてもJavaのラムダ式は便利だと思うんよ >>823
>ググったらyコンビネータとかzコンビネータとかパーサコンビネータとかあったけど
それは javascprit じゃない?js なら書けると思いますよ、ちょっと url を教えてください。
>Javaの公式ドキュメントでラムダ式と呼ばれてるのでラムダ式と呼ぶべきかと
そういう権威・権力のスカートにしがみつく理由で採用するのですか?頭が悪いと思われますよ
プログラマってそういうものからはもっとも遠くに立っている人種ではなかったかと
>>824
>コンビネータが必要になったことがないから大事なんだと言われてもよくわからんのよね
それは当然です、コンビネータは「記述できる範囲を定める」ものであり実用プログラムで使用することはありません
「コンビネータを記述できること」をもって lambda 式と呼ぶべき、という意見です、コンビネータが記述できないのなら別の名前にするべきでしょう。
私は@便利に書けるからといって糖衣構文をなんでもかんでも言語仕様に含めることには反対であり、ましてや、Aなんでもかんでもぶちこんだ糖衣構文にテキトーな名前をつけることにも反対しているのです
Java は発表当初から言葉遣いがおかしいところがあり、たとえば「参照(reference)」などは他言語とは完全に意味が違いますね >>825
https://www.google.com/search?q=java+%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8D%E3%83%BC%E3%82%BF
Javaのラムダ式と君のラムダ式があって
Javaのラムダ式は僕のラムダ式じゃないんだと
君は言うけれども君は自分が頭が良いと思われてると
思ってるのかな
俺はJavaのラムダ式は簡単な処理を簡単にかけるから大賛成
Streamを使いやすいしリッチなコレクションに処理を丸投げする
関数型のようなプログラミングがやりやすくなって大感謝
君の価値観とは正反対だけどJavaのラムダ式は便利だよ
コンビネータが実用プログラムで使用されることがないなら
ラムダ式をコンビネータを記述できるかどうかで語ることに意味あるのかな
Javaのラムダ式は実用上有用だから導入されたものだよ
referenceの話は具体的にどの言語の概念と完全に違うと言ってるのかしら
文脈が変われば概念が変わるのは当然と思うよ
スペリングが同じだからといって概念が同じとは限らない
言語が変わるならなおさら >>826
まず「パーサコンビネータ」の「コンビネータ」は不動点コンビネータとはなんの関係もありません
大雑把にググッた結果だけみせて、その中身を精査していないのは、新しい概念に対するキャパシティー、あるいは概念把握力に問題があるのではないですか?
Java では yコンビネータは無理でも、zコンビネータという不動点コンビネータは記述できるようですね…これは追体験しているところです、情報を提供いただきありがとうございます。
>君の価値観とは正反対だけどJavaのラムダ式は便利だよ
私の価値観は「Javaラムダ式は不便である」ではなく「Javaラムダ式はラムダ式と呼べるのか?」でしたが、Java ラムダ式にて不動点コンビネータの一部が記述できるようですから、この認識はあらためることになりました
>ラムダ式をコンビネータを記述できるかどうかで語ることに意味あるのかな
>Javaのラムダ式は実用上有用だから導入されたものだよ
有用、というよりも単なる糖衣構文にしかみえないですね、まあ、このあたりは人それぞれ
>referenceの話は具体的にどの言語の概念と完全に違うと言ってるのかしら
>文脈が変われば概念が変わるのは当然と思うよ
>スペリングが同じだからといって概念が同じとは限らない
>言語が変わるならなおさら
いろいろな言語をやってみよう、というときには、あなたのこの助言は有用だと思います
しかし、それと同程度に次の意見も有効ではないですか?
「異なる言語であっても、同じ概念に対しては同じ言葉を使い、違う概念に対しては違う言葉を使うべき」
C++ の reference と Java の reference は、それぞれの概念が近接することもあり、非常に紛らわしいです
これは Java が出たときにすぐに問題になっていた記憶があります。 なんでみんな荒らしコテハンにいちいち構ってんの
三が日の暇つぶしか >>828
私のどこが荒らしと感じたのですか?具体的に記述できるのですか? >>827
パーサコンビネータと君のコンビネータについては
どっちでも良いと思って
誤解されたくなければ君は詳細に説明してるだろうし
俺が違ったものだしても君は文句言える立場じゃないよ
yコンビネータのことなんだと君が最初から言ってたなら別だけどね
yコンビネータと最初に言ったのは俺だよ
俺のエスパー能力に君は感謝こそすれ文句言うのは大間違いだよ
いま俺が君から聞きたいのは謝罪の言葉だよ
きちんと説明せずに文句まで言ってしまってどうもすみませんでしたという
言葉を聞きたいよ
C++ の reference と Java の referenceは近接してるんだと言ってるわけですね
完全に違うと言ってたと思うんだけどそれもC++ の referenceのこと?
Javaが出たときにはJavaは普及してないだろうから新しい概念も周知されてないでしょう
それはしょうがないと思うけどC++のreferenceとJavaのreferenceはどう違うの?
言語間にまたがって用語を統一しようとしたら言語の外に辞書を作らないといけないね
プログラミング言語の用語一覧を作って概念が少しでも異なる場合は新しい用語を
追加することというルールを作らないといけないね
俺は嫌だなあそういうの官僚的でめんどくさいだけ賛同できないわ >>829
「Javaのラムダ式でコンビネータ書けますか?書けなかったら不要ですよね?」
↓
「コンビネータ関係なくラムダ式便利だよ」
ここまでは(入門・初心者向けかはともかく)質問スレの範疇
「コンビネータが書けなきゃラムダ式と呼んではいけない!それに従うのは権威主義で〜」
ここら辺から質問関係なくなってる
単語の選出基準の話ならJavaの開発チームにでも聞かないとここで解決できるはずもない
同一スペリングで意味が異なる単語の話まで抽象化するともっともっとJava関係ない
そしておそらく本人もそんなことわかってるのに言い続けてるあたりが荒らし >>830
一連のやりとりは Java のスレで、Java とは異なる世界からやってきた「ラムダ式」「不動点コンビネータ」をぶつけてみて(化学)反応を楽しむ、という私の悪癖が出てしまいました、あまり気にしないでください
ごめんなさい
そして z コンビネータの存在を知らしていただいたことに感謝します >>831
>おそらく本人もそんなことわかってるのに言い続けてるあたりが荒らし
…お見通しですね
そのとおり、そういう意味なら私は荒らし、です… >>832
良いってことよ
それよりもC++のreferenceとJavaのreferenceはどう違うの? Javaのドキュメントには
・reference type
・reference value
が書かれてる
reference typeは
・class type
・interface type
・type variable
・array type
のこと
オブジェクトはクラスインスタンス、または、配列のこと
reference value(たんにreference)はオブジェクトへのポインタのこと
ゆえにJavaのreferenceは、クラスインスタンスへのポインタ、または、配列へのポインタのこと >>835
お許しが出たようなので続けます。
ざっと http://ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml 8.3.2
や C++11 draft N3242 8.3.2
あたりを眺めていますが、reference が満たさなければならない用件は記述されていて(N3242 8.3.2.5)も、reference が何者なのかをずばり記述している部分はみあたらないですね。
Java の reference は「クラスインスタンスのポインタ」「配列へのポインタ」ですか、つまりポインタの一種なんですね、これは理解できます
一方 C++ reference はポインタに限定されることなくすべての型に対応して存在できます、int に対して「int の reference」、クラスC に対して「クラスC のreference」というふうに
ここで私の定義を示します。
ある型T のポインタを型「T *」とするとき、型「T *」 の変数 T *p が現に存在して
式の上の表現の文字列「 *p 」を文字列として v に機械的に置き換えたときに v が新たな変数として機能する余地があるのなら、文字列 v は型「T &」のreference として宣言できる。
という感じですか… >>836
よくわかんなかったからググったけど
C++のreferenceはreference variableの省略形で
変数のエイリアスみたいだよ
https://paiza.io/projects/2PkDkRGyIOxNPRxdvBctkg
こういう使い方するんでしょ ttps://pastebin.com/6EefhNbW
クリックしたさいに3行目のメッセージが出ません。
count()のmsgIndex++とmouseClickedのmsgIndex++が原因と思われるのですが、
解決方法が思いつきません。
構造自体を変更したほうがいいのでしょうか? >>838
public void mouseClicked(MouseEvent e) {
// msgIndex + 1 => msgIndex
if (msg.size() == msgDispSize && msgIndex < messages.size()) {
msg.poll();
// 下に移動
// msgIndex++;
messages.get(msgIndex).setVisible(true);
msg.add(messages.get(msgIndex));
// メッセージに追加したあとにインクリメント
msgIndex++;
}
} >>839
ありがとうございます。
インクリメント変更での解決納得いたしました。 ubuntu18.04をインストールしてJava 1.8にしてintellijインストールしたんだけど
intellijを含めたSwingの日本語入力のIMEの変換候補Windowが、編集中の行の近くじゃなくて
画面左下の方に表示されるんだけど、他の人もそうなりますか?
Ubuntuの設定がたりないとかあるのでしょうか? たぶんSwing(が使ってるAWT)が位置情報渡せてないから設定とか弄ってもムダかと。
FreeBSDのJava移植の時に位置情報渡すと変換候補ウィンドウがあっちっこっち飛ぶ(?)ので
諦めて位置情報渡さないようにした(結果デフォルト位置であるウィンドウ左下に
変換候補ウィンドウが表示されるようになった)とかって話を読んだ記憶がある。
Linux版もその辺の処理をきちんと書ける人いなかったんじゃねーかと。 下記で、本日の日付を表示できますが、
本日の一週間後を表示させるには、どこを+7したら宜しいでしょうか
よろしくお願い致します。
<SCRIPT type="text/javascript">
<!--
function _HpbDays()
{
this[0] = "日"; this[1] = "月"; this[2] = "火"; this[3] = "水";
this[4] = "木"; this[5] = "金"; this[6] = "土";
}
var now = new Date();
var yr = now.getYear();
var mn = now.getMonth() + 1;
var dt = now.getDate();
var dy = now.getDay();
var fyr = (yr < 1900) ? 1900 + yr : yr;
var dys = new _HpbDays();
var dyj = dys[dy];
document.write(fyr + "年" + mn + "月" + dt + "日");
//-->
</SCRIPT> >>843
var d = new Date();
d.setDate(d.getDate() + 7);
alert(`${d.getFullYear()}年${d.getMonth() + 1}月${d.getDate()}日`); 843です、度々すみません、上記をどこに挿入したらよろしいのでしょうか汗 >>846
ここはJavaスレであってJavaScriptスレじゃないぞ
もう関係ないけど反応を見た限り致命的なレベルで何も分かってないみたいだからちゃんと0からステップを踏んでくれ ここは、Java のスレです!
君のは、JavaScript です!
web 制作管理板の、JavaScript のスレへ書き込んで! >>842
詳しく、ありがとうございます。
Windowsで編集業が画面下の時不都合が起きるから
Linuxに移行を考えてたけど、より駄目なのか。
まあ、Java Swingでデスクトップアプリなんて作るもんじゃないのかな。 >>843-846
スレチだ。ここはJavaScriptのスレではなくJavaのスレだ。 あ、リロード忘れてた。すでに同じこと書かれてるではないかorz タイムリーにギネス最高齢の男性用がなくなっとるな… java初心者なんですが、javaのスピードってゲームに耐えられる程あるんですか
マインクラフトとか本当にjavaだけなら凄いなと >>858
どうだろう。VMやハードウェアしだいではあるが、Androidのスマホアプリは結構速いよね。 JavaやJavascriptは結構早いですよ。
問題はリソースをアホほど使うことですね。 Javaは元々ハードウェアを売るための言語ですから、リソースを大量に使うのは善なんですよ。
それだけ高いマシンを売れるんですから。 >>858
MinecraftはLWJGLっていうライブラリを使っててLWJGLは中でOpenGL/AL/CLとかを叩いてるからJavaだけっていうと微妙な気がしなくもない
ちなみにJavaは起動が遅いのであって実行速度は別に遅くない ぶっちゃけ泥のゲームてほとんどUnity製なのでは… ブ、ブートストラップは早いんだからね!遅いのは依存ライブラリが大きすぎるせいなんだから! >>858
速いよ。スマホゲーならサーバーサイドはJavaだったりする Eclipseの設定でエラー情報を試しに全部オンにしたところ、文字列に対してNON-NLSというコメントをつけるよう言われました
あまり意味がわかってないのですが、これは文字列を記述する度につけた方がいいものですか? >>866
そのスマホもAndroidなら普通はJavaだ。 Java初心者というかプログラミング初心者の大学生です。
java awtを使ってランダムなルーレットを作りたいのですが可能ですか?
イメージはルーレットがぐるぐる回っているアニメーションを実装したいです。 >>867
文字列を外部から読み込む設定にしたのでしょ
NON-NLSはその警告を出さないようにするためのコメント
文字列を外部から読み込むのなら修正するべきだし
その文字列を例外的に認めるのならコメントを入れて警告出さないようにするのもあり
文字列を外部から読み込まないのなら設定を外すべき >>871
ありがとうございます
普通にString hoge = "hoge";のように書いてるのですが、何か設定ミスったんですかね
外部読み込みというのがどういう設定かはまだわかりませんが、一度調べてみます >>873
ググってもよくわからなかったので質問させていただいたのですが、不快にさせてしまったならすみませんでした >>867
>あまり意味がわかってないのですが、
>>872
>まだわかりませんが
>>874
>ググってもよくわからなかったので
結局のところ全然わからないんだろ? >>869
可能か不可能かで言えば考えるまでも無く可能
なんだけどその質問をしたということは何処かで躓いたと見えるから何処で躓いてるのかを書いて欲しい >>875
そうなります
「String外部化」とか「多言語対応」とか、単語だけ入ってきて結局どういうものか、警告を無視していいのかなどが全然判断つかなかったので質問させていただいたのですが、甘えでした
上記の質問は取り下げます
すみませんでした >>874
自分でググって分かる範囲は知識量とかで決まるからそういう事もある
結論から言うと分からないレベルなら「無視」に設定すれば問題ない
外部化ってのは…871の回答が全てかなぁ…
今後色々とコードを書いているうちに外部化の嬉しさは分かるはず >>876
まさしくそうです。
イメージでは図形(円)を何等分かにしたもの(それぞれに項目を入力するようにしたい)を回転させてボタンをクリックすると徐々に停止するという感じにしたいのですが、
図形を回転させる方法が分からなくて準備した画像を回転させるという方式を妥協案としてだすところまではいきました。 次の現場のfwがSpringらしいんだがSpringって何が特徴なの Jsoup使ってwebスクレイピングしたいんだけど、やり方がよくわからないです。。
ダウンロードは済みだけど動かし方がさっぱりわからずで…
ちなjavaは、びじゅあるすたじおこーどでコードを打ち込んで、パワーシエルで動かしてます。 Ruby で、Nokogiri, Selenium WebDriver, ERB などで、スクレイピングする方が簡単
>>880
掌田津耶乃の本
Spring Framework 4 プログラミング入門、2014
Spring Boot プログラミング入門、2016 >>883ありがとう。
スクレイピング技術はPythonが充実してそうだけど、
学校ではjavaとPHPとhtmlとJavaScript しか習ってないんだ。。。
とりあえず今はjavaでやってみて、時間に余裕出来たらPython極めたい スクレイピングならPythonよりもRubyが鉄板じゃないかな なんでこれはダメなんですか
String gomi="sinekasu";
public Sampleb() {
this(gomi);//明示的にコンストラクターを起動している間、インスタンス・フィールド gomi は参照できません
}
こっちは問題なし
public Sampleb() {
System.out.println(gomi);
} >>886
そうなの?
図書館で蔵書調べたり、ネットで検索するとPythonばかり出てくるし、最近はAIの話題でもPythonて耳にするから、授業そっちのけでPython学ぼうか悩んでる >>889
トレンドとしてPythonが人気なのはそうだけど、言語ごとに得意分野はある。
現実的にはスクレイピングだけを考えたらRuby一択だけど他の用途も想定するならPythonは悪い選択肢じゃないよ。 >>890
this()でフィールド使えない理由がよくわからないんです
そういうもんだと暗記しようかなとも思ってますが >>887
this()やsuper()は先頭にしか置けないってのから分かるように,インスタンスが生成されるタイミングは一番最後に呼び出されたコンストラクタの先頭に当たるから,this()を呼び出す前にフィールドにはアクセスできない 説明を見たうえで暗記でいいって判断したんだろうが猿黙ってろゴミ 質問です。
ログ出力の構成を考えてるのですが、
Javaで別ディレクトリにある同名ファイルは同時に開けますか?
手元にPCなくて試せません… それどころか同じディレクトリにある同じファイルも開けるよ。
あまりやる必要はないかも知れないが。 何かのテンプレートファイルを使うときは同じファイルを同時に読み込むことはあるな
業務アプリで何かをエクセルに出力するときなんかにやることはある ほえー全く同じファイルも開けるんですね
ありがとうございます助かりました Javaアプレットも読めるんだけど、弊社の自作VMだって主張するやつについてどう思う? どのブラウザもJAVAは選択制でデフォルトではオフ。
日本の官庁がJAVAで書かれたオンラインシステムを持っていて大慌て。
GoogleのAndroidもサンマイクロシステムにライセンス料だせと脅されたから、たぶんAndroidもJAVA離れするだろうし。
似たようなC#ってあるのだからそれで十分なんだよね。 Webシステムの現場なんですけど
Javaをコンパイルしたらクラスが生成されるということを知らないおっさん(35)が異動してきました
何から教えればいいのでしょうか マウンティング化みっともない行為であることを教えてやれ >>912
Javaをコンパイルしたらクラスが生成されるんだよと知らないおっさん(35)にやさしく教えてあげましょう >>912
コピー機の使い方と便所掃除のやり方かな レス数が900を超えています。1000を超えると表示できなくなるよ。