一條微博引發的思考——再談“Software Stack”之“軟體棧”譯法!

高翌翔發表於2012-03-01

昨晚(2012-02-29)李鬆峰老師發了這條微博:@圖靈嶽新欣 問:software stack,前譯“軟體棧”,後譯“軟體堆疊”,哪個對?嚴格講,都不對;應該譯成“一套軟體”或“一系列相關軟體的組合”。當然,程式設計師讀者能理解所謂的“軟體棧”。但事實上,正是這樣一些“偽術語”,無形中構築起專業壁壘。技術翻譯的一個使命就是減少和拆除這些壁壘。

話說各路英雄豪傑紛紛跟帖,眾說紛紜,好不熱鬧。可最後卻沒個定論,豈能如此糊里糊塗、虎頭蛇尾?正如正如武總所言:

有些人建議說一些難辦的詞彙可以不翻譯。但是,不翻譯只能是權宜之計,終究還是應該探討出一個為多數人所接受的譯法。不譯的術語越少越好。否則,長久積累下來,不譯的詞彙越積越多,則我們只能像“某些外企白領”那麼說話了:這個project的schedule有些問題,尤其是buffer不多……

俺贊同武總的看法。有些人愛用語言混搭實屬個人喜好,您隨便。而技術術語不能如此,若哪個出版社真敢如此譯書,那離關門大吉之日就不遠了。

而對於一些大家不太熟悉的新譯法,俺強烈推薦中英對照+註釋的組合形式,如:

……軟體棧(Software Stack)[1]……


譯註:[1] 軟體棧(Software Stack),是指為了實現某種完整功能解決方案(例如某款產品或服務)所需的一套軟體子系統或元件。

沒錯,這就是俺的觀點,“Software Stack”譯為“軟體棧”很恰當,詳細解釋如下:

英文解釋溯源

由於僅從字面上無法準確把握“Software Stack”的含義,因此翻譯之前必須先搞清其定義。可是在維基百科上竟然沒查到Software Stack的定義,僅僅在Stack(abstract data type)下找到了Software stacks節,而這只是用軟體方法來實現棧結構,明顯與李老師討論的語境不符。

不過無巧不成書,在維基百科上查到了Solution Stack,即:

Solution stack
In computing, a solution stack is a set of software subsystems or components needed to deliver a fully functional solution, e.g. a product or service.
解決方案棧
在計算領域中,解決方案棧是指為了實現某種完整功能解決方案(例如某款產品或服務)所需的一套軟體子系統或元件。

顯然,其解釋與討論的語境非常吻合。

後來終於在其他網站查到了Software Stack的解釋:

software stack
A set of programs that work together to produce a result; for example, an operating system and its applications. It may refer to any group of applications that work in sequence toward a common result or to any set of utilities or routines that work as a group. See stack.

可見,這個解釋與Solution stack的如出一轍。至此,英文解釋還沒完,點選stack進去:

stack
(1) In a network, a hierarchy of software layers in both clients and servers that are required in order to communicate with each other. See protocol stack.

(2) A hierarchy of software. A stack is the common set of programs used in a computer. The stack can refer to infrastructure only (see technology stack) or to the applications the company gives its employees (see application stack). It may also refer to an industry set or developer set of programs. For example, the phrase "they don't offer a complete stack" could imply that a software company has an incomplete set of applications for a particular industry or niche.
...

哈,協議棧、技術棧、應用程式棧,原來還有這麼多棧。不難看出,棧在這些場合下指定是一組相互協作的軟體或軟體層的層級結構,當用於不同場合,還會在前面追加修飾定語;千萬別死抱著資料結構中的LIFO的棧結構不放!

中文解釋溯源

至此英文定義基本搞清楚了,是否就大功告成了呢?答:否。

翻譯是兩種語言的轉換,決不能機械地對映(Mapping)。英文定義只能幫助我們理解原義,卻不能保證譯文正確,因此接下來就要看看“棧”的含義能否符合譯文的需要:

,棚也。——《說文》。按,柵者,豎編之,棚者,橫編之。

原來“棧”是種有頂棚的結構體或建築物,其實最初就是牲口棚,用來為牲畜遮擋雨雪。不過,如果用於存放貨物就叫貨棧;如果用於旅客休憩就稱之為客棧;如果把棚子裝在平板馬車上,就成了棧車(注:棧車以竹木為棚;士乘棧車,庶人乘役車。可見,棧車屬於小轎車,而役車屬於廂式貨車,可人貨共載。)。

總之,“棧”是具有某種功能的結構體,與上面提到的stack英文含義基本吻合,加之明確的定義(參見本文開頭部分)補充解釋就會非常清楚了。

軟體堆疊是啥

準確地說,軟體堆疊是指用軟體方法實現的棧結構(Software stacks)。至於“堆疊”與“棧”之誤用由來已久,改天再做詳述。

顯然,“軟體棧”與“軟體堆疊”是完全不同的兩個概念,翻譯“Software Stack”時需根據上下文加以區分,雖是一字之差,卻謬之千里!

格言分享

A badly written book is only a blunder. A bad translation of a good book is a crime.-- Gilbert Highet.
寫本爛書不過是件糗事。而把好書譯成爛書卻是種犯罪!——吉爾伯特·海特。


歡迎大家各抒己見、不吝賜教,把一切“犯罪”消滅在萌芽之中!

祝圖靈社群越辦越好 :D


增補

由於kraft覺得《說文》的年代有些久遠,因此增加商務印書館的《現代漢語詞典》(2002年增補本)中“棧”字的解釋:


(1) 養牲畜的竹、木柵欄:馬~ | 羊~。
(2) 棧道。
(3) 棧房:貨~ | 客~。

看來“棧”字的古今含義並未發生變化。

此外,鄧童鞋回覆說“這個棧差不多可以理解為倉庫一類的。”,因此重新查了stack的英文解釋(《美國傳統英英詞典》),發現其中之一就是:

stack
The area of a library in which most of the books are shelved.

即圖書館的藏書區域,這與棧房的概念不謀而合,即書棧,若把書換成具有協作關係的一套軟體子系統或元件,便順理成章地得到了“軟體棧”。

這麼解釋簡單、直接,而根本不用與LIFO的資料結構糾纏不清(kraft多慮了 :B),如果要看引用關係,直接配圖說明就好了,有圖有真相嘛 :D

分享心得

經過這兩天蒐集資料、整理文章,並與諸位老師、童鞋分析、討論,偶有感悟,分享如下:

(1) Software Stack 側重於功能上的完整性,而非結構上的層次性。這是從多個英文釋義中選擇恰當的釋義的關鍵!
(2) 多義詞是多型性(Polymorphism)在自然語言中的最佳例項,確切的語義是根據具體語境動態繫結的。
(3) 無論最終如何翻譯,此類深入討論都是大有裨益的,既能碰撞出智慧的火花,又能結識許多同道中人,何樂而不為呢? :D
(4) 別鑽牛角尖,不要自我設限!
(5) 期待您的分享~~~

相關文章