- ベストアンサー
評価の概念についての質問
- 評価とは、変数やリテラルの表記や型、値を解釈することです。
- 式を評価するには、変数やリテラルの型や値を解釈するだけでなく、演算を行って結果を求めるプロセスも含まれます。
- 評価の概念について複数の仮説がありますが、変数やリテラルの解釈と演算結果の求め方が重要な要素です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1の補足の質問2 たとえば a*b+c という式があったら aを評価→bを評価→cを評価→*の演算→+の演算 という順番で実行が進むと思っていますか? それなら間違いです。 aを評価→bを評価→*の演算→cを評価→+の演算 という順番になります。 a+b*c だったら aを評価→bを評価→cを評価→*の演算→+の演算 となって、a、b、cの評価を終えてから*や+の演算を実行しますが。 そもそも、以前の質問にあった&&や||、あるいは?:の例を見れば、全ての部分式の評価が終わってから演算を実行するのではないことは分かるはずです。 以前のQ&Aの復習からやり直してください。 質問者さんが思うような「個々の要素を全て評価し終えてから演算を行う」プログラム言語を設計することは可能ですが、Javaの仕様とは異なります。
その他の回答 (3)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
たぶん、プログラム言語の仕様書や解説書を和訳したときの、その言い回しの問題だと思います。 英文ではevaluate an expression(式を評価する)と言います。 evaluationを英英辞典で引くと、judgement about how good, or successful something [= assessment] assessmentを意訳すると、人物や物事が有効かを判断するとなります。 つまり。 「評価」とは、「物事が有効かどうかを判断すること」という意味になります。 、、、それでもわかりにくいですが、、、 estimate、能力を『評価』するなどの意味 evaluation、鑑定、『評価』 たぶん、evaluationを評価すると訳し、それを読んだ人(質問者さん含めて?)がestimateの意味でとらえて、何だそれは?となったのではないかと思います。 参考: ジーニアス和英辞典第2版 ジーニアス英和辞典第4版 ロングマン現代英英辞典4訂増補版 ロングマン英和辞典 >質問1:評価とは、「リテラルや変数について、それが『何の表記』で『何の型』で『いくつの(どのような)値』であるかを解釈すること」でしょうか? それでいいと思います。 以下余談。 最近はプログラムをrunするって言わないのかな。。。 JavaScriptではイベントを発火する(fire an event)ってよく言われてます。 発行や呼び出しを意味する言葉ではなく"fire"を使うのは、実にアメリカらしいと言うか、、、 そもそも外来語を和訳しようというところに無理があると思いますが、 プログラムが走るとか、パソコンが立ち上がるとか、ある意味、変な訳し方になるのは良くあることだと思います。 なんか説明になってないですね。 全文余談ってことで、駄文失礼しました。
お礼
丁重で興味深い回答ありがとうございます! 和訳の問題もありますよね、、 あと余談かなり面白かったです 笑 ためになります!
- jjon-com
- ベストアンサー率61% (1599/2592)
> 「変数の評価」とはなんですか? ソースコード中のその単語(token)が変数だと解釈すること。 言い方を変えるなら,そのトークンがJavaの変数名の規約に従っていること,かつ,それが事前に宣言されていることを検査すること。 > リテラルの評価とどう違いますか? そのトークンがJavaのリテラル記述の規約に従っていること,と, そのトークンがJavaの変数名の規約に従っていること,とは違いますよね。 ---------------- > 「優先順位を考慮する」という行為も当然「評価」ということになりますよね? はい,その通りです。 ---------------- > 式の答えが出るまでのプロセスは以下のような認識でokですか? いいえ,違います。 私は ANo.2 で指摘のあった「以前の質問にあった(中略)?:の例を見れば」というQ&Aを知りません。質問者はけっこう以前から疑問をお持ちだったと言うことでしょうか。 であるなら,私はこう思うのだけれどどうか? ではなく,Javaはソースコードをどう解釈しているのかという解説を読んで理解した方が話が早いのではないですか。 キーワード「Java 式」でGoogle検索して3番目にヒットした次のページの http://www.y-adagio.com/public/standards/tr_javalang/15.doc.htm 「15.6 評価順序」などは,コード例を提示した興味深い解説だと思います。 もっとしっかり理解したければ,上記ページにも用語が登場する,パーサー(parser: 構文解析機能)というものを勉強することになると思います。
お礼
アドバイスありがとうございます! そして、お返事おくれてしまい大変申し訳ありません、、 たしかに、引用のURLかなり興味深いです。熟読して理解を深めます! パーサーについての勉強も始めてみます!
- jjon-com
- ベストアンサー率61% (1599/2592)
回答1. 質問文は,対象物を指し示さず「評価とは、」という言い方で一般化していますが,私は下記で,それは「リテラルを評価する」ことだと回答しました。 http://okwave.jp/qa/q6836558.html の私の過去の回答ANo.2 回答2. 仮説1のように,個々の要素(変数やリテラル)の解釈が決まればそれで評価は完了,ということであるなら,質問者がこれまで問題にしてきた演算子の優先順位の高低,同じ優先順位の演算子が並んだときの結合順などは,そもそも問題にならないわけで。 個々の要素が吸引力もなしにただバラバラに群れているのではなく,決められた演算子規則に従ってまとまり,まとまったものがさらに定められた順序に従ってまとめられる。そのような全体としてのかたまりを「式」として認めるわけです。 よって仮説2の説明の方が適切です。
補足
丁重なご回答誠にありがとうございます!いつも的確でわかりやす回答で感謝します!待ってました! 回答を見て、追加で疑問がわきました! 質問1:「変数の評価」とはなんですか?リテラルの評価とどう違いますか? 質問2:式の答えが出るまでのプロセスは以下のような認識でokですか? 個々の要素(変数やリテラル)を左から順に「全て評価」 ↓ 個々の要素の評価が「全て完了」したら、優先順位や結合規則に基づいて、演算 ↓ 答えが出る このようなプロセスでしょうか? 質問3:評価とは、個々の要素(変数やリテラル)を評価するだけでなく、演算し、答えを出すまでのプロセスとのことですが、ということは、「優先順位を考慮する」という行為も当然「評価」ということになりますよね?
お礼
お礼遅れてしまい大変申し訳ありません、、 そしてかなり望んでいた回答をくださりまことにありがとうございます! 評価と演算の関係がわかってよかったです! やっぱ詳しい人はいるものなんだな、、