この投稿は ETロボコン Advent Calendar 2016 の 24日目 の記事です。
ETロボコンで使われているプラットホーム(リアルタイムOS)ではコンカレンシー(並行実行性)について、しばしば取り上げられます。しかし日本語では「平行」、「並行」、「平衡」と読みが同じで似た単語があり、しばしば混乱します。そしてプログラミングを教える先生たちは「並行」と「並列」という、これまた似たような単語を臨機応変に使い分けて、生徒が言い間違えると「違う!」と鬼の首を取ったが如く叱責します。だから理系の人って嫌い! 😳
口頭で聞いたときに混乱するのはもちろんのこと、単純なタイポ(漢字変換ミス)もしばしば見受けるため、エッセー風に取り留めもなくつらつらとブログにまとめてみました。モヤモヤ(間違い)があれば是非是非ご指摘くだだい。 〜 ブログで無知を晒すは恥だが役に立つ。 😀
2024年 9月 2日 追記
コンピューター関連の日本語訳では "Parallel" の対訳 を 『平行』、 "Concurrent" の対訳を『並行』としているケースが多いようです。ただし両者の混乱をさけるために『パラレル』、『コンカレント』とカタカナ語にしているケースも散見されます。
1. 日本語における『平行』と『並行』と『平衡』
1-1. 平行
- 同一平面上の二つの線がどこまでいっても交わらないこと。同一空間上の二つの面がどこまでいっても交わらないこと。
- 「並行」と同じ
ⅰ.の数学的な定義はわかりやすいですね。(私が理系だから???)
日常会話であっても「彼と彼女の意見はいつまでも平行線を辿った」といえば、いつまでも交わらない(合意しない)という含意が伝わってわかりやすいです。ところが「並行」と同じ意味で使われることもある、というのが悩ましいところです。
1-2. 並行(併行)
- 並んで進むこと
- 複数の事柄が同時に進むこと
ⅰ.の例文としては「鉄道と道路が《並行/平行》して走っている」と並行と平行は置き換え可能です。ただ2つの単語のニュアンスは微妙に異なるのかな?と私は感じます。理系脳の私が「平行」の数学的な定義を強く意識するからでしょうか?
ⅱ.の例文としては「領土交渉と経済協力を並行して進める」なんて時事ネタがあります。たまたま新聞の見出しにあったのを覚えていただけですが。この例文では空間的に並んでいるという意味はないため「平行」を使ってしまうと不自然に感じます。そして、時間的に並んでいる、という意味から「同時に」という意味が加わっています。しかし「新明解国語辞典」を調べて見たところ、「二つ以上の物事が同時に行われていること。平行。」とあります。「同時」という意味が書かれているのですが一方で「平行」を使っても構わないようです。難しいですね。
1-3. 平衡
- モノの釣り合いが取れていること。安定していること。
EV3wayのロボットが倒立して安定して立っている状態が「平衡」ですね。「平衡」と「平行/並行」を取りちがえることは少ないと思いますが、ロボットがコースラインに対して「平行」に走っているのか、前後のバランス制御がうまく働いて「平衡」して走っているのか、単語を取り違えると、意味が違ってしまいますね。
しかしながら、ライントレース走行を例にするとPID制御がうまく働いて「平衡」すると、コースラインに対して「平行」に進むため重箱の隅といえば重箱の隅なのですが使い分けましょう。技術者は… 醸しましょう。エンジニア感を… 😀
そこで、この三つの単語を組み合わせてETロボコンを説明すると
前後のバランスを『平衡』させて倒立したロボットが、『平行』した2本のコースラインを、2台『並行』して走る。
となります。だから理系の人の言うことは小賢しくて嫌い! 😳
2. 英語における "Parallel" と "Concurrent"
2-1. Parallel
- 線や面が交わらない (例) parallel lines : 平行線
- 類似の (例) parallel case : 類似例
- 並行の (例) parallel world : 並行世界
- 並列の (例) parallel circuit : 並列回路
英語のParallelの意味は日本語の平行や並行の意味よりも広いですね。
しかしながら一方でIT業界でParallelというとⅳ.の並列回路のニュアンスを意識していることが多いようです。理系脳というよりもエレクトロニクス脳。醸しましょう。エレクトロニクス感を… 😀
2-2. Concurrent
- 同時の、同時性
- 共同に作業する、協力の
- 一致の、同意見の
馴染みの薄い単語ですがIT業界では ⅰ.の意味でしばしば登場します。しかしながら ⅱ.や ⅲ.のニュアンスが省かれているわけでも必ずしもないのが、これまた悩ましいところです。
ここまでの内容をベン図で表現してみました。 出しましょう! SE感を… 醸しましょう! モデラー感を…
3. JIS X 0003 情報処理用語(装置技術)における「並列」と「並行」と「同時」
3-1. 並列 (parallel)
互いに類似した別々の機能単位によって扱われる個々の事象がすべて同じ時間間隔内に生起する処理に関する用語。
【例】内部バスを構成する複数の線によって機械の語を構成する複数のビットを並列に転送すること。
3-2. 並行 (concurrent)
共通の時間間隔内に生起し,共通の資源を交互に使用しなければならないこともある複数の処理に関する用語。
【例】単一の命令制御装置をもつ計算機上の多重プログラミングにおいては,数個のプログラムが並行に実行される。
3-3. 同時 (simultaneous)
一つの処理において,別々の機能単位によって扱われ,同じ時間間隔内に生起する二つ以上の事象に関する用語。
【例】一つ以上のプログラムの実行において,入出力チャネル,入出力制御装置及び関連した周辺装置によって行われる幾つかの入出力操作は,互いに同時であり,また,処理装置によって直接操作される他の操作とも同時であり得る。
以上。ブログを書いて「逃げ恥ロス」を紛らわせているデータベーススペシャリストでした。 😀