Hsüan's Blog

2020-09-04

在程式裡 Asynchronous, Synchronous, Synchronize - 非同步、同步,的中文翻譯之謎

2021-04-15 Edited

這是一篇從字意出發,讓你徹底搞懂這些詞為啥這樣翻譯的文章。

前言

首先,以下一張經典的前端程式執行任務時序圖,相信大家都不陌生。類似的圖,常被用來解釋 Asynchronous(非同步通訊), Synchronous(同步通訊) 兩者模式不同之處。

async-sync

這張圖機制上是解釋得很清楚了,但因為中文版翻譯問題常常還是會弄混。

某些人理解了倆模式的不同之處,但在是啥中文名詞對應啥模式時,還是常常搞混。(例如我)

最後只能死記硬背。

Synchronize(同步)

在解釋 Asynchronous(非同步通訊), Synchronous(同步通訊) 這兩個專有名詞前,先來講一下日常生活會用到的 Synchronize(同步) 這個動詞。

在英文中,一般生活對話(非專業對話)中還蠻常用的,例如:

How do I sync my iPhone photos to my computer?

這句話翻譯是:

如何將我 iPhone 上的照片,同步到我的電腦上?

其中 sync 是 Synchronize 的縮寫同義字。在這被翻譯成了同步

而中文的這個同步,指的是同步狀態把狀態同步化。意即:

我如何能讓我電腦能跟我蘋果手機一樣有那些照片,兩者間是資料同步(同樣步伐、一致)的狀態?

好,了解中文意思了,再來確定一下英文解釋。

Google 一下 Synchronize 的英文解釋,你會查到

to cause something to happen in a planned way at exact times.

再把 Synchronize 字根拆解一下

  • syn~: 共同
  • ~chron~: 時間
  • ~ize: 使...化成...

使兩者,同時間化?有點抽象不能理解...

此時要借助神之字典 Urban Dictionary

此字典乃網友自行解釋,通常在正規字典裡很難理解的,到這邊看看網友寫的,會比較容易搞懂。

在上面查了 sync,排名第一的解釋是這樣:

to be in a same state of mind or thinking.

好,這邊總算寫出了 sync 這字,有使...成為同一個狀態的含義。

覺得還是不夠清楚,那再借助 wiki(網友編的百科)看看

資料同步,英文即 data sync,在 google 輸入 data sync wiki,查詢到 Wiki: Data synchronization

Data synchronization is the process of establishing consistency among data from a source to a target data storage and vice versa and the continuous harmonization of the data over time.

簡單解釋就是在說

資料同步就是同一時間下,保持兩邊資料是一致的

這下終於理解了...

Asynchronous(非同步通訊), Synchronous(同步通訊)

這倆,在一般對話中就難看到了。

在程式裡,

  • Asynchronous
  • Synchronous

此兩者指的是通訊專業的

  • Asynchronous Communication(非同步通訊)
  • Synchronous Communication(同步通訊、就是 real-time communication 即時通訊)

兩機制。這倆講的是,多人通訊時的通訊模式。

專有名詞嘛,用全名時,其實不容易搞混。

但是中文翻譯常常是簡化他,只說同步 / 非同步,問題就出在這。

正常一般人中文聊天使用同步這二字,

可能是在表示

  • 在這同一時間,我們都做,一起做(我們同步進行),是說做事開始時間一致,當下大家同一時間開始進行,你不等我我也不等你。(但這是非同步通訊的實現)

也有可能是指

  • 我們狀態一致(我們資訊是同步的),是講資料狀態一致。

中文同步,指的是一致

而英文的 Synchronous,則是在重點強調 ... at the same time同時

也就是說,專有名詞同步通訊的同步,是有著特殊意義的詞。

而日常生活同步的同步,則要看是否被當成同步通訊的簡寫,否則容易跟慣用意思搞混。

舉個例來說:

老闆:接下來我們同步進行吧!

這意思是我們同時間開始做,但各做各的(非同步通訊)。

接下來再回到這張圖

async-sync

在程式裡 Synchronous 指的是執行指令發出後,同時間內會等著此指令執行完畢,結果返回。

而 Asynchronous 則是在說交給某程式去執行,但沒要等結果回傳。

這篇解釋得很清楚:https://docs.plm.automation.siemens.com/content/pl4x/18.1/T4EA/en_US/Teamcenter_Gateway-Technical_Connectivity_Guide/synchronous_vs_asynchronous.html

待續...

© 2019 ~ 2025 Hsüan, Powered by Gatsby, Theme Material UI