-
Notifications
You must be signed in to change notification settings - Fork 160
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GLOBAL_DEFINED_WORDS: 適格要件以外の意味論要素も追加 #1359
base: master
Are you sure you want to change the base?
Conversation
(コメントしたつもりがボタン押していなかったみたいで、少し遅れましたが改めて) "結果"・"例外"・"戻り値" などの語は、一般的すぎて関係ない文脈の語も着色すると混乱を招きそうなので、除外しています (以下、除外した語たちの commit。この PR のブランチには含まれていません)。 From c5aa91918cd1d34bade65c0bdea9fb109f83fbea Mon Sep 17 00:00:00 2001
From: Koichi Murase <[email protected]>
Date: Thu, 7 Nov 2024 20:08:41 +0900
Subject: [PATCH] =?UTF-8?q?[reject]=20GLOBAL=5FDEFINED=5FWORDS:=20?=
=?UTF-8?q?=E4=B8=80=E8=88=AC=E7=9A=84=E3=81=AA=E8=AA=9E=E3=81=A8=E7=B4=9B?=
=?UTF-8?q?=E3=82=89=E3=82=8F=E3=81=97=E3=81=84=E6=84=8F=E5=91=B3=E8=AB=96?=
=?UTF-8?q?=E8=A6=81=E7=B4=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
GLOBAL_DEFINED_WORDS.json | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/GLOBAL_DEFINED_WORDS.json b/GLOBAL_DEFINED_WORDS.json
index ac556e34e..fc9c1da86 100644
--- a/GLOBAL_DEFINED_WORDS.json
+++ b/GLOBAL_DEFINED_WORDS.json
@@ -85,14 +85,38 @@
"yomi": "じぜんじょうけん",
"desc": "関数等の意味論を構成する要素の1つ。Preconditions。関数呼び出し時に満たされていると関数が想定する条件。満たさなければ未定義の動作。契約属性の`[[expects]]`に相当"
},
+ "効果": {
+ "yomi": "こうか",
+ "desc": "関数等の意味論を構成する要素の1つ。Effects。関数内部で発生する効果"
+ },
+ "同期": {
+ "yomi": "どうき",
+ "desc": "関数等の意味論を構成する要素の1つ。Synchronization。関数に適用される同期操作"
+ },
"事後条件": {
"yomi": "じごじょうけん",
"desc": "関数等の意味論を構成する要素の1つ。Postconditions。関数を実行後に満たされている条件。契約属性の`[[ensures]]`に相当。"
},
+ "結果": {
+ "yomi": "けっか",
+ "desc": "関数等の意味論を構成する要素の1つ。Results。結果の型についての記述"
+ },
+ "戻り値": {
+ "yomi": "もどりち",
+ "desc": "関数等の意味論を構成する要素の1つ。Returns。戻り値についての記述"
+ },
+ "例外": {
+ "yomi": "れいがい",
+ "desc": "関数等の意味論を構成する要素の1つ。Throws。例外送出の有無・条件・内容・効果"
+ },
"計算量": {
"yomi": "けいさんりょう",
"desc": "関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量"
},
+ "備考": {
+ "yomi": "びこう",
+ "desc": "関数等の意味論を構成する要素の1つ。Remarks。追加の意味論的制約"
+ },
"エラー条件": {
"yomi": "えらーじょうけん",
"desc": "関数等の意味論を構成する要素の1つ。Error conditions。関数が各エラーコードを返す条件"
--
2.46.0 |
7161a2d
to
5a30c9a
Compare
同期については見出し以外の文脈でも使われるので、マルチスレッド用語としての説明もあったほうがよいかもです |
戻り値とか例外も、言語解説では見出し以外で使われるので、これも用語としての説明が必要そうです |
fc00171
to
2400ca7
Compare
2400ca7 同期・戻り値・例外についての説明を追加しました。同期と例外については規格にあったそれっぽい説明を要約しました。戻り値の説明については、さすがに規格に関連する説明を見つけることができなかったので、適当に作りました。 |
2400ca7
to
2cb9f57
Compare
GLOBAL_DEFINED_WORDS.json
Outdated
}, | ||
"同期": { | ||
"yomi": "どうき", | ||
"desc": "マルチスレッド実行時にリソースの所有権に基づいて実行順序を制御する仕組み" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
弱い意見として、「同期」の説明はしなくても良い気がしています。
- C++標準ライブラリ仕様記述の Synchronization は、マルチスレッドプログラミングの文脈でいう同単語の一般的な用法とニュアンスが異なる。(C++では"happens before"関係を保証する、という意味で使われる)
- (少なくとも自分の感覚では)「リソースの所有権」はスレッド間同期との直接的な関係を持たない。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
スレッド関係の見出しで使ってる「## 同期」にポップアップをつけようとすると、見出し以外にも見出しの説明が入ってしまうので一般的な説明が入ってる、という状況ですね。
site % git grep "## 同期"
reference/future/packaged_task/get_future.md:## 同期
reference/future/promise/get_future.md:## 同期
reference/memory/shared_ptr/use_count.md:## 同期
reference/syncstream/basic_syncbuf/emit.md:## 同期
reference/thread/jthread/join.md:## 同期
reference/thread/jthread/op_constructor.md:## 同期
reference/thread/jthread/op_constructor.md:## 同期
reference/thread/this_thread/sleep_for.md:## 同期
reference/thread/this_thread/sleep_until.md:## 同期
reference/thread/this_thread/yield.md:## 同期
reference/thread/thread/join.md:## 同期
reference/thread/thread/op_constructor.md:## 同期
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
乱数でも「## 乱数列の周期」とかありますが、見出しの説明はなくていいと言えばいい気もしますが、あって困るものでもなさそうな気もするという感じはします
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
弱い意見として、「同期」の説明はしなくても良い気がしています。
そんな気がします。
- C++標準ライブラリ仕様記述の Synchronization は、マルチスレッドプログラミングの文脈でいう同単語の一般的な用法とニュアンスが異なる。
なので、 ライブラリ仕様記述の Synchronization の説明は除外したのでした。代わりに、より一般の同期の説明をしてはどうかという提案だったので、C++ 全体で広く使われている同期 (synchronization) の説明を別 commit で試みたのでした ("意味論要素を追加" という名前の PR の下で異なる修正を混ぜてしまってわかりにくくてすみません)。
つまり、上の部分の説明は、ライブラリ仕様記述としての同期の説明を意図したものではなくて、C++ における同期の概略の説明を試みたものでした。特に、同期に関する初出の記述がある [intro.races]/3
を ("リソースの所有権" という曖昧な言葉を使って) 無理やり縮めたものです。
C++ の同期の全容について全くフォローしていないのでわかっていないのですが、 [intro.races]/3
的な考えが根底にあって、その上で、規格としての具体的な規定の手段・扱いやすいまとまりとして一連の synchronizes-with や happens-before などの関係が導入されている、みたいな話ではないんでしょうか。
C++では"happens before"関係を保証する、という意味で使われる)
- (少なくとも自分の感覚では)「リソースの所有権」はスレッド間同期との直接的な関係を持たない。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
うーん。synchronizes with の訳語として、既に太字 **同期する**
というのが使われているみたいですね (でも、単に "同期" だったら cpprefjp 内で雑多な意味で使われている印象)。
この A は B と**同期する**
というのは単なる一般の同期の話ではなくて、特に定義された関係 synchronizes with を表すので配慮が必要ですね。"同期する" も GLOBAL_DEFINED_WORDS に登録する? でも "同期する" はストリームが同期するなど別の文脈でも使われている?
Edit: happens before の訳は散らかっています:
この PR で "同期" を入れるか入れないかに関わらず、 synchronizes with および happens before の訳統一と訳語表と GLOBAL_DEFINED_WORDS への登録は独立に実施する必要がある気がします。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
単に "同期" だったら cpprefjp 内で雑多な意味で使われている印象
私の実感としても同意見です。「同期」は各所で都合よく使われている気がします。
見出し Synchronization の対訳語が必要ならば、"synchronization operations"に対応させた「同期操作」とする案はいかがでしょう。専門用語風なので他文脈との衝突リスクも低いと思います。
... [intro.races]/3 的な考えが根底にあって、その上で、規格としての具体的な規定の手段・扱いやすいまとまりとして一連の synchronizes-with や happens-before などの関係が導入されている...
個人的にはC++標準ライブラリ仕様で言及される Synchronization はあまりに形式的すぎるため、cpprefjpサイトの解説としては相応しくない(≒専門家向けすぎて理解されない)気がしています。ある程度噛み砕いた利用者向けの説明が必要になるため、Synchronization 見出し自体が不要なのではとも感じています(実際に自分で書いた箇所は平文での説明を行った...記憶)。
例えばmutexファミリのlock
/unlock
メンバ関数では Synchronization が仕様規定されますが、mutexの利用者からみると到底役立つ/正しく理解されるとは思えない定義になっています。mutex利用者はlock〜unlock区間の排他制御を期待しますが、仕様上は前のunlock操作→lock操作の同期関係(synchronize with)のみが規定されます。
The expression
m.lock()
is well-formed and has the following semantics:
Synchronization: Priorunlock()
operations on the same object synchronize with this operation.The expression
m.unlock()
is well-formed and has the following semantics:
Synchronization: This operation synchronizes with subsequent lock operations that obtain ownership on the same object.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
見出し Synchronization の対訳語が必要ならば、"synchronization operations"に対応させた「同期操作」とする案はいかがでしょう。専門用語風なので他文脈との衝突リスクも低いと思います。
今はこの方針で commit 8208424 を入れています。ただし、本来は synchronization operations 自体が独立した意味を持っていることも考えて「関数等の意味論を構成する要素の1つ。Synchronization。」 のような説明は入れていません。
2cb9f57
to
8208424
Compare
このPull Requestはなにが要因で止まってますか? @yohhoy さんのapprove待ち? |
8208424
to
987d540
Compare
失礼。これ以上の追加コメントはありませんので、マージしてしまってもよいと思います。 |
規格原文は "The actions performed by the function" だが、action を効果 と訳す場合、perform を行うと訳すと日本語として違和感がある。ここでは " 効果" に合わせて "発生する" と訳すことにする。
効果・同期・結果・戻り値・例外・備考などの一般的な語と同じになるものは、 誤って着色されると混乱の元なので除外している。
fea8157
to
8e59cd6
Compare
#1273 (comment) by @akinomyoga
#1273 (comment) by @faithandbrave
#1273 (comment) by @faithandbrave
#1273 (comment) by @akinomyoga
#1273 (comment) by @faithandbrave