• ベストアンサー

セマンティックスの概念とは?

題記の通りなんですが、私はこの辺りの分野には詳しくないため、セマンティックスと言う言葉の概念を、できれば身近な例で説明して頂ければと思います。 シンタックスと対比する言葉と言われても(実際、検索するとそう書いてあるのですが)、???です。 サルにも分かるセマンティックスでお願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.3

> と言うことは、ロジックで破綻してエラーになっているということですか? そうですね。セマンティクスレベルでのエラーは、プログラムでは通常バグと呼ばれます。 バグってのは、コンパイルは通って(シンタクスはOKで)一応実行ファイルはできるけど、 思ったとおりに動かない(つまりプログラムにプログラマの意図がちゃんと伝わってない)ことをさします。 コンパイルすら通らないのはバグとは言いません。 # 「プログラムは思った通りには動かない。書いた通りに動く」などとよく言われますが、 # プログラムには基本的に「相手の意図を汲み取って~」とかいう親切心がないのです。 > どう処理をしているか、などロジックチェックして、「ダメだ!」と付き返されてしまうようなものなのでしょうか? コンパイラは基本シンタクスレベルなので、あまりここまで面倒見てくれませんけど、 人間相手のレビューはセマンティクスレベルなので、ロジックに駄目だしされますね。 最後は、実際に走った結果があわないとか、「実行時例外」がおきるとかになるわけですが、 「ダメだ!」とつき返されるのは通常こっちに相当するかと。 例えば、「日本語で原稿を書いて英語に翻訳してもらい英語論文を教授に提出する」 (プログラム言語でソースを書いて機械語に翻訳してもらい実行するに相当)として、 理論の組立が駄目でつき返されるのは、通常教授からです。(プログラムで言えば実行時エラー) 翻訳者(コンパイル時)は内容については専門ではないでしょうし、 あくまで文法のチェックと翻訳変換がお仕事ですから、そこまで面倒見てくれないでしょう。 プログラムの場合、例えば昨今のC/C++コンパイラは、セマンティクスエラーと思われる場合に「警告」を出したりすることはあります。 これは「文法的には正しいけど、よく間違えやすいミス」に対しての注意喚起です。 switch文のcaseにbreakがないとか、「内容に意味がない」とか、まぁそのレベルです。 「山って普通走らないですよね?ここは山が走るって書いてありますけど…そういう比ゆ表現ですか?もしかしてミス?」 とはいえ、内容には責任を負いませんし関知しませんから警告を出しても翻訳自体はやってくれます。 内容までチェックできないってのもありますし、 (C/C++では特に)コンパイラが「チェックするべきではない」ってのもあります。 # 翻訳頼んだのに内容の質問をたくさん受けるなんてうっとうしい。 # 内容はこっちで見るものだから黙って訳してくれないかな。という思想。 もしも実行時エラー(教授からの赤点評価)を避けたい場合、チェックは「内容がわかる人(教授かもしれませんし、研究室の先輩かも。プログラムなら別のプログラマとか?)」にお願いするわけです。 このときは翻訳者には頼みませんよね。

007_taro
質問者

お礼

丁寧に回答して頂いて、本当に感謝しています。 >コンパイラは基本シンタクスレベルなので、あまりここまで面倒見てくれま>せんけど、 >人間相手のレビューはセマンティクスレベルなので、ロジックに駄目だしさ>れますね。 これですね!概要がつかめたようです。 北京原人からとうとう、クロマニョンまで昇格した気がします。 親切にありがとうございました。

その他の回答 (2)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

微妙に違いますねぇ。 エラーの例が余計に混乱させましたか? エラーチェックが厳密とか、融通が利くとか言うのは「結果的にそうなる」というだけの話で、本質ではないです。 繰り返しになりますが、 ■シンタクスというのは、基本的に「文法」です。「書式/形式」です。 字句解析(syntax analysis)ってのは「書式のチェック」に相当します。 内容がよく理解できない論文でも、日本語で書かれていれば ある程度の誤字脱字チェックくらいはできますよね。 記名がないとか、書式のチェックなどもできますよね。 プログラミング言語の文法は日本語より厳密なので、 人間様ではないツールでも文法チェックくらいはできるのです。 # ツールは文法(プログラム言語の"てにをは")だけわかればいい。 で、大抵のプログラミング言語は文法にちょっとでも違反するとエラーなので (テストで言えば、誤字脱字が一つでもあると、はなから採点されないようなもの)、 結果として厳密なエラーが出てくることになります。 ■セマンティクスというのは、基本的に「文意」です。「内容」です。 意味解析(semantic analysis)には「書かれている意味を理解する」必要がありますし、 「セマンティクスに注目する」と言えば「意味的にどうか?」を考えることになり、 「シンタクスに注目する」といえば「書式はどうか?」を考えることになります。 知らない分野の難しい論文を渡されて内容の妥当性をチェックしろといわれても、 素人には手が出ない。翻訳家さんやネイティブだったとしても、 専門知識なしに完全なチェックをすることは不可能でしょう。 同様に、プログラミング言語においても、ツールには完全なチェックができません。 # コンパイラなどのツールは「コンピュータとの通訳」であって、 # プログラマのように判断できる人間ではないのです。 セマンティクスエラーというのは、テストで言えば誤字脱字はないけど、 内容が的外れだったり、論旨が破綻してる論文で赤点をもらうようなものです。 一方、例えば片言の英語で外国人とコミュニケーションをとるのは、 シンタクスエラー(単語の羅列で文法はメタメタ)でもセマンティクスは通る(伝えたい内容が理解される)例ですね。 # プログラミング言語の場合は基本的にシンタクスエラーがあると通じない上に、 # セマンティクスもよく理解してない相手なのでこういうことはまずないですが。

007_taro
質問者

お礼

再度のご丁寧な回答、本当にありがとうございます。 一回目の回答と二回目の回答を読みながら、しばらく考えていました。 >■シンタクスというのは、基本的に「文法」です。「書式/形式」です。 >字句解析(syntax analysis)ってのは「書式のチェック」に相当します。 シンタックスはクリアしたように思えます。つまり、ある解析ツールで、 "love" "I" "goo!"とあって、"I goo! love"と入力すれば、これはシンタックスエラーで、「"goo!"が来るべき順番で来ていないのでダメ」となってしまうのですよね。 ># コンパイラなどのツールは「コンピュータとの通訳」であって、 ># プログラマのように判断できる人間ではないのです。 コンパイラは、使用した言語の文法に則っていないと、エラーがずらずらと出て、プログラムが出来上がらないですよね(シンタックスエラーレベル)。 >セマンティクスエラーというのは、テストで言えば誤字脱字はないけど、 >内容が的外れだったり、論旨が破綻してる論文で赤点をもらうようなもの>です。 と言うことは、ロジックで破綻してエラーになっているということですか?どう処理をしているか、などロジックチェックして、「ダメだ!」と付き返されてしまうようなものなのでしょうか? もしかして、私のこの考えが”セマンティックエラー”・・・? しつこいようですが、「諦めません、分かるまでは!」 済みません。。。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

# わかり易さ優先/厳密さは無視して書いてます。 日本語を例に、ざっくりと考えて見ましょう。 ・シンタクスというのは「字句」レベルの「文法」です。   「てにをは」とか名詞とか動詞とか、そんなのと思ってください。 ・セマンティクスというのは「意味」レベルの「文意」です。   こっちは、何が書いてあるか、どんな文脈か、とかと考えてください。 イメージをつかむために、それぞれのエラーを考えてみます。 シンタクスエラーというのは、文法の間違いなので、例えばこんなのです。 「犬はを走った」 文の内容とは関係なく、「は」と「を」が続いてるのは日本語としておかしいですね。 # これがコンパイラなら、構文エラーとかsyntax errorとかいうところです。 一方セマンティクスエラーというのは、例えばこんなのでしょうか。 「山が走った」 これは、文法的には正しい日本語です。名詞、助詞、動詞(過去形)。 でも、内容(意味)がおかしい。 # プログラムならバグかも知れません。 ただし、意味的な解釈というのは、文脈に依存する面もあり(これも特徴のひとつ)、 もしかするとこれが正しい文章の場面もありえるかもしれません。 「山とは僕の友達のあだ名だ。巨漢の山田、山のような山田…由来は今となってはわからない。 中学校以来、山は僕の中で山以外の何者でもない…」 例えばこんなお話の中で「山が走った」とあったらどうでしょう。 あるいは、何かの比ゆ表現かも知れません。 今度は別の側面から、エラーチェックの観点で捉えてみると、 シンタクスのチェックというのはいわゆる「誤字脱字」等の話です。 セマンティクスのチェックというと、「しかし」の前後が逆接になっているかとか、 文章のねじれていないかとか、論旨が正しいかとか、そういう確認になります。 なんとなくイメージがつかめてきましたか? 以下は、ちょっとおまけです。 プログラムとかの字句解析(字句論)/意味解析(意味論)の場合も基本は一緒です。 プログラム言語というのは、意味が一意になるように作られた人工の言語なので、 日本語の場合よりもはるかに厳密なチェックが入ります。 特にシンタクスエラーはコンパイラなどのツールがチェックするので、 コンパイルエラーになるようなのは、たいていシンタクスエラーになります。 セマンティクスのエラーは、文脈次第で正しい可能性などもありますし、 ツールには判断できず、プログラマなどがチェックする必要があるのは普通です。 (警告などがでたり、文法レベルの制限があったりはしますが、 それでも発生してしまうセマンティクスのエラーは 一般的に論理バグなどと言われるバグの一種です) と、こんな感じでいかがでしょうか。

007_taro
質問者

お礼

ありがとうございます。私もサルになれた気がします。。。 文章チェックにおいて、 シンタックスは、厳密なエラーを機械的にはじき出す けれども、 セマンティックは、機械的ではなくて、もっと融通の利かせた、ある意味で人間の書く文章に近い、キメの細かい文章チェックができるということで合っているのでしょうか?前に流行った言葉で言えば、より高度な”ファジー”さ、というのか(※”ファジー”の厳密な定義ではなく、一般に流通した流行り言葉の”あいまい”の意味で使っています)。 もし、上記イメージでビミョウに違っていたら、遠慮なく指摘をお願いします。

関連するQ&A

  • 心理学に「アダルトチルドレン(AC)」という概念がないのはなぜでしょう

    心理学に「アダルトチルドレン(AC)」という概念がないのはなぜでしょう? 自分も勉強中なのですが、確かにどの心理学枠内の分野にもACという言葉すらでてきません。 一般的な概念としてはよく知られていますし、ここまで浸透しているのでしたら、出てこない説明があってもよいし、逆に概念として認めてもよいとも思います。何かの理由があるのでしょうか?

  • ケースワークにおける『自己決定』の概念

    タイトルの通り、ケースワークにおける『自己決定』の概念とは、言葉にするとどう説明すれば良いでしょうか?

  • サルでも分かる~シリーズってどこで手に入るんでしょうか?

    タイトルの通りなんですが、「サルでも分かる~シリーズ 」ってどこで手に入るんでしょうか。実際に「サルでも分かる○○」(例えば簿記)っていうタイトルで販売されていたんでしょうか。アマゾンで検索しても出て来ませんでした。Googleで検索すると幾つかはヒットするんですが、そのものの書籍は出て来ません。私は○○に当てはまる言葉が簿記、経理等を探しています。どなたか御存知の方教えて下さい。サルでも分かるシリーズそのものが無ければそれに準ずる本でも構いませんので教えて下さい。宜しくお願い致します。

  • 概念を、とりあえず定義したい

    こんばんはー。 概念の定義みたいなのをいつも考えてるので、 いくつか他の人の意見も聞きたいです。 1.幸福=無 2.リラックス=集中状態 3.感覚は、抽象的 今気になって考えてるのがこの3つなんですが、 どう思われますでしょうか? 何でこう言えるか、細かい説明省いていますが、概要しか書いてないのですが、 ただ、これはこう決める、ということは、事実を表現する、という面以外に、それぞれの言葉を、こうやってイコールで結ぶことで定義しませんか? ということも言いたい、というか、そのあたりを決めないと、いろいろ難しいような・・・、と普段思っています。 もちろんこの決めつけが絶対の訳はないのですが。 方法論的に、暫定的にでもこのように決めないと、目に見えない自己や心の仕組みについて、意識で分析することは不可能だと感じます。 難しく言うと、用語同士の相関関係を決めることを持って、相対的な定義をする、というような方針です。 それは、一個の単語の意味を極限まで追求する哲学的なやり方とは、また違うのですが。 何だからまとまらない主張なんですが、何でも感想いいのでお待ちしています。 よろしくお願いします。

  • 知らない言葉を辞書で調べてもわからない場合は…

    テレビなどを見ている時、知らない言葉が出た場合はすぐ電子辞書で調べる習慣を付けています。 大体の言語の概念は理解できるのですが、稀に辞書で調べても良く理解できない言葉などがあります。 自分が調べた言葉を、いざ使おうと言う時、どういう場面で使っていいのかがわかりません。 辞書で調べた場合、説明の最後にその言語の使用例を3通り程書いてあればものすごい理解しやすいのになと思います。 つまりその言語の概念だけ説明されても、パッと来ないので使用例が表示される辞書があれば便利だと思っています。 そのような辞書・あるいはサイトはありますでしょうか? 後、皆様なりの理解しやすい解読方法などありましたらアドバイスして頂けると幸いです。 よろしくお願い致します。

  • ファイルメーカー7で、検索フィールドと検索結果表示フィールドを別に

    ファイルメーカー7を使用しています 1つのフィールドに複数の検索条件を記入して 例(猿、サル、さる、saru、おさる) 類似の言葉を検索してもヒットするようにしたいのですが 検索の結果は (サル) の1つだけ表示したいのです 検索条件のフィールドと 検索結果フィールドを別に作成したら なんとなく出来そうだとは思うのですが、その先がよくわかりません どのような解決方法がありますでしょうか?

  • 「タスク」と「ToDo」に概念的違いってあるのでしょうか?

    お世話になります。 表題の通りなのですが、「タスク」と「ToDo」という言葉の使い分けというか、意味の違いがしっくりと理解できない状態にいる為、IT関連のプロジェクト等を経験された人(もちろん経験されていない方でも)に、ぜひに教えて頂けたらと思い投稿しました。 実は、後々プロジェクト管理ツールを作ってみたいなと考えているのですが、その仕様を思案している上で疑問に思ったものです。 よく総じてプロジェクト管理ツールなどと呼ばれる、タスク管理や、ToDo管理ツールなどを見かけますが、実際に手に取ってみても、まるで同じ意味合いで単純な1工程を示す言葉として利用しているツールもありますし、逆に、「タスク」と「ToDo」をツール内で使い分けしているっぽいプロジェクト管理もあるように見受けられます。 どちらが正しいのか、もし概念的な違いがあるならば、その明確な線が理解できません。 (なんとなく、タスクは複数人による共同作業上の課題を示し、ToDoは個人的な課題を示しているように思えなくもないのですが・・・) ちょっと分かりにくい質問だとは思いますが、実際のプロジェクトなどで両者の言葉を明確に使い分けていらっしゃったり、意味合いの定義などがあるようでしたら、主観でも構いませんので教えていただければ幸いです。

  • 対数ってどんなところで使われているの?

    という素朴な質問を高校生から受けました。 私自身は普段統計で対数を使うことが多いので、例を使って「大きい数のデータも小さい数のデータも同時に扱わなければならないようなときに、対数の概念というのはとても役立つんですよ」というような説明をしました。その中で、桁数のとても大きな数や小数点の後に0がたくさん続くような場合にはかえって分かりやすいということも話しました。その説明はわかってもらえました。 でも、対数って統計や計算の簡便化以外にもたくさん使われていることを教えてあげたいのですが、適切な分野や例を挙げることができませんでした。個別の細かな計算の話ではなく、「こんな分野で役立っている」というのを高校生にも分かるように簡単に教えたいのですが、何かよい例はありませんか?

  • Namazuとapacheについて(基本的な概念)

    ホームページに検索機能をつけるため、「NamazuをCGIとして利用する」というやつ(←情けない表現ですが(>_<))を頑張ってみようと、手探りで進めています。 公式ページの用語に馴染みがないため、「手順」説明サイトをチェックしながら、ローカルで走らせるところまではできました。 次に、実際にホームページで検索システムを走らせたいのですが… 最初、apacheをインストールせずにいきなりホームページのcgi-binフォルダにいくつかのファイル(恐らく指示通り)をコピーして失敗しました。 「やはりapacheを導入しなければならなかったのかな?」と、apacheをインストールし、先ほどの、手順説明サイト(http://www.fkimura.com/namazu-win32-1.htmlなど)の指示通りにapacheの設定を進めようとしたのですが… apacheというのは、「自分のPCをサーバとして使う」ためのものではないのでしょうか? もしそうならば、検索プログラムは私のPCの中につくられてしまい…、ということは、私のPCの電源は落としてはいけない、ということなのでしょうか。 私は、自分のPCの電源は普通に落とし、あくまでホームページ上のCGIとして(カウンタのようなものとして)検索システムを導入したいのですが、それでもapacheはインストールしなければならないのでしょうか。 どうぞ、ご指導をお願い致します。

  • NS-1 キャブがガソリンで濡れている

    題のとおり、キャブ辺りにガソリンと思われるものが滴れています。 赤い色の液体なのでガソリンだと思います。 この場合、どこを変えればいいのでしょうか? 説明足らなかったら補足しますので、どなたか教えてください。

専門家に質問してみよう