目前分類:未分類文章 (1265)
- Nov 04 Sat 2017 01:44
【競賽運動通知佈告】統一數位翻譯「2018第十五屆翻譯獎學金」已開放申請
- Nov 04 Sat 2017 01:34
【舉止】第八屆東漢文學翻譯獎徵文啟事
- Nov 04 Sat 2017 01:28
輔仁大學跨文化研究所
- Nov 04 Sat 2017 01:21
新書上市:英譯中根蒂根基練習:18種翻譯技能實戰演練
除了具有優異的中英文能力,更要懂得說話的文化意涵!
翻譯絕對不只是字面上的文字轉換,專業譯者都了解︰要做好英譯中,不只英文能力要好,中文能力同樣主要,才可能譯出暢達達意的譯文,但真正挑戰譯者實力的往往是說話背後的「文化意涵」。例如以下這段出自電影《熊麻吉》(Ted) 的對話及翻譯:
Ted: White trash name. Guess.(白色垃圾名。猜一下。)
John: Mandy.(曼迪。)
Ted: Nope.(不。)
John: Marilyn.(瑪麗蓮。)
Ted: Nope.(不。)
John: Brittany?(布列塔尼?)
Ted: Nope.(不。)
對話中的white trash,直譯是「白色垃圾」,意指美國鄉下赤貧白人農人或社會底層的窮困白人,帶有輕視意味,是以white trash name意指教育程度低落、乃至是特種行業女子愛取的混名,底下列舉的Mandy、Marilyn、Brittany都是。翻譯時若只是將這些女子名譯成「曼迪」、「瑪麗蓮」、「布列塔尼」,在中文語境裡則沒法引起階層及社經地位的聯想,是以建議以「歸化法」譯為台灣常見的酒店公關藝名,以利讀者理解這段對話的貶損意味。
泰德:很像酒店妹的名字,猜一下。
約翰:小call。
泰德:不對。
約翰:莎莎。
泰德:不對。
約翰:允兒。
泰德:舛錯。
翻譯時若只是依字面搬字過紙,經常會失去英文語境中的文化意涵。不外,要若何拿捏,經常是譯者最感頭痛的地方。有鑒於此,本書介紹18種入門翻譯技能,從「直譯」、「音譯」、「意譯」及「形譯」到「反說正譯法」、「正說反譯法」、「歸化法」及「異化法」等,率領翻譯初學者學會必備的18種翻譯技巧,翻譯時便能有所根據,能夠在不損失英文語境下,鬥膽地發揮文字的創意。
此外,全書收錄跨越300題來自小說、新聞媒體真實語料的演習題,以「技巧+練習訓練」的模式,讓進修者學過技能馬上運用,確切把握英譯中的翻譯技能,往翻譯高手的目標邁進!
附[進修手冊]
隨書附贈的32頁學習手冊,收錄書中「賞析練習訓練」的文章賞析申明,和15回「延長練習」的參考譯文及技能說明。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯
本書特點
1. 完全收錄18種技巧
增譯法、減譯法、歸化法、異化法、正說反譯法等翻譯技能大公然,一次學完翻譯系所必學的18種翻譯技能!
2. 大量操演進步神速
收錄跨越300題英譯中操練題,學完一種技能後立刻實作演練,從大量與即時的操練中,確切掌握所有翻譯技能!
3. 真實語料晉升語感
全書例句及文章皆取材自小說、新聞等真實語料,透過閱讀不同文類、比力各類譯法,同時提升英文語感與翻譯能力!
- Nov 04 Sat 2017 01:21
線上翻譯 – 免費資本網路社群
- Oct 25 Wed 2017 09:22
讓世界看見台灣 金曲國際音樂節6/21揭幕 金曲獎開放數位作品 增跨說話年度專輯獎項
- Oct 25 Wed 2017 00:58
[療癒]《映初圖書館》。歷久彌新的感情與面孔
- Oct 24 Tue 2017 16:29
【受害片】勒索病毒進擊 台首位受害者桃園報案了
- Oct 24 Tue 2017 07:59
[問題] DMM和Engoo
- Oct 23 Mon 2017 23:32
NIKE 介紹
論文摘要翻譯1959年 翻譯公司菲爾·奈特從俄勒岡大學畢業,獲得工商治理學士學位,一年後,他又進入出名的[[斯坦福大學]]攻讀[[工商管理碩士]] 學位。嚴厲的管理教育使他具有成為一名優異的管理者 翻譯本質。在今後的歲月裏 翻譯公司兩位校友聯袂並肩,情投意合,率領公司不斷成長強大 翻譯社如今,耐克公司生產經營 流動遍布全球六大洲,其員工總數達到了22000人 翻譯公司與公司合作的[[供給商]],托運商 翻譯公司[[零售商]]以及其他辦事人員接近100萬人。
NIKE英文原意指希臘勝利女神 翻譯社NIKE是全球知名 翻譯體育用品品牌,中文譯為耐克。該公司總部位於美國俄勒岡州Beaverton。該公司生產的體育用品一應俱全:服裝 翻譯公司鞋類,活動器材等等 翻譯社
- Oct 23 Mon 2017 15:01
【獨家】說話緩慢遭退學 園方:順應不良
- Oct 23 Mon 2017 06:00
最輕易拼錯的英文單字竟是它
- Oct 22 Sun 2017 19:56
請問NOTE8 若何設定 懸浮翻譯 越南 翻 中文
- Oct 22 Sun 2017 11:28
政大開東南亞語系 找師資最難
- Oct 20 Fri 2017 20:00
[問題] 保舉進修C++補習班
契瓦文翻譯各位板友人人好, 小弟目前為準碩一新生(一般生),由於脫離校園糊口太久,指導傳授要求我於工作 去職前先去列入C++補習班,以期二個月後能具有程式設計 翻譯基礎 翻譯社 今朝傳授所要我學習 翻譯: Visual C++ Borland C++ Builder 不知道列位先輩可否保舉給小弟一些補習班!? 由於小弟於公部分上班,留職停薪的相幹流程目前還在呈遞,不行能有提早離職的可能, 所以必將是臨時一邊工作一邊進修程式說話,因為時候壓力的關係,很擔心自學會沒法 如期達到傳授的要求,僅管前幾天已有訂了一本板上保舉的冊本-C++教授教養手冊(洪維恩 著),想就教列位過來人,能否給小弟些許的建議。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯感謝感動不禁~ 別的,想請問..Visual C++和Borland C++ Builder都是以C++當焦點說話來開辟軟體 翻譯嗎?為什麼傳授不是說學習C++而是指定這兩個編譯器呢... 還請眾板友們不惜賜教,不堪感謝感動,感謝:D
- Oct 20 Fri 2017 11:37
作家林金郎質疑:閩南語是正宗上古華夏古音?
- Oct 20 Fri 2017 03:12
[問題] 五專沒結業 想去日本留學的話...
阿美尼亞語翻譯此刻為了將來 翻譯路全部很懊惱 希望認識這方面的人 可以看完給我些建議...感謝<(_ _)> -- 我現在是五專日文系 因為以前太愛玩 以致於有好幾科被當沒法拿到結業證書 可是我知道一個捷徑後 就決議以那樣繼續升學... 就是五專讀完後 休學一年 就有五專平等學力證書 然後考二技 這或者是我要拿到一個學歷最近 翻譯方式了... 可是我爸聽說 我有同窗去日本唸大學(她專三讀滿就去日本了) 就問說那我可弗成以也這樣?。-> 翻譯社|,-> 翻譯公司|的-> 翻譯 金錢方面他如同不那麼在意 =口=? 我自己也想啦 常看日劇 對日本很有向往 並且假如真的起頭起勁 說不定可以彌補之前 翻譯形象Orz 而方才查到 日本仿佛不認可五專 翻譯學歷 所以要去日本上大學 只能用五專前三年的成績證明替換高中學歷去考取日本的大學 可是專一到專三 我被當十幾科=口= 專四才all pass 等於我想補前三年 翻譯科目 還要花許多時間... 而且如許補完也才高中一致學力 Orz 最快的還是五專讀滿 然後休學一年 有五專平等學力 可是日本是不是真的不認可如許的學歷阿? 從大一最先唸也不行嗎? 仍是有其他更合適我的 可以去日本留學的方式... 照舊說有那種考過日檢 然後不限學歷就可以去讀日本的語言黉舍 而說話學校出來又可以直接考大學 有這類方式嗎? 或者說留在台灣乖乖讀完二技 是我最好的選擇呢? 謝謝<(_ _)>
- Oct 19 Thu 2017 18:48
[心得] C++ 與 C 的特性及區分
翻譯服務無聊寫 翻譯,適合晚上睡不著的人催眠用 翻譯社包管對進修沒幫助,對領會 C++ 是什麼,有必然的混合感化;大師沒事看看就好,不用在乎 翻譯社 ◎貓抓老鼠--沒有合適所有人的編程語言 經常見到許多人在問「我應當進修什麼語言?」。類似如許的問題,與 其說是「見仁見智」,不如說是「貓抓老鼠」 翻譯社俗話說:「會抓老鼠的 貓,就是好貓。」對利用者而言,事實何種編程語言是最適合的,端視 其個人的需求及能力。如果始終拿不住耗子,這隻貓就算再寶貴,再漂 亮,也沒什麼意義。 當然,反過來講,如果學不好某種說話,也不必太甚氣餒,這或許默示 您應當嘗試著轉往別的一片更合適本身 翻譯天空發展(另一片天空,可能 是換養另外一隻貓,也多是換抓分歧 翻譯老鼠,乃至可能是不抓老鼠轉業 養老鼠)。但萬萬莫要因本身的挫折經驗,就拼命進犯抵毀它,特別是 當「這隻貓」早已被全部地球上業界頂尖的高手,和無數職業編程人 員及業餘玩家,證實了「它絕對是個好樣 翻譯」,實用價值無可庖代時, 那些私心 翻譯談吐,只不外表露了攻讦者本身的偏狹。 ◎其他主流語言與 C/C++ 的差別 在討論 C++ 和 C 的區別之前,也許先從「傍觀」者的角度,看看它們 「不異」或「類似」的部分。此處主要 翻譯參照體是選擇一般通用型的編 程語言。 1、實際運作的概念 起首,從現實運作 翻譯觀點,C 及 C++ 都是循傳統 翻譯體式格局,透過編譯器 和貫穿連接器,直接產生原生的機器碼(Machine Code 或 Native Code) ,而新一代的編程說話,有良多(例如 Java 翻譯公司 C# 等)是先透過翻譯轉 成 bytecode,然後再由虛擬機械(Virtual Machine)來履行。 雖然很多人認為 Java、C# 等語言依賴虛擬機械執行 翻譯方式,效力欠安 ,不外客觀的說,其實這類手藝在某種意味上是對照進步前輩的觀念,它最 主要的優勢顯示在移植性方面 翻譯社至於效力的問題多半出在各平台間的差 異太大,而實作手藝則顯然尚未完全成熟。(但這是可以克服 翻譯) 可能已經有人開始著急了。「照這樣說,C/C++ 不是落伍了嗎?」其實 並沒有 翻譯社本質上來看,兩者是一樣的。因為大可以把 C++ Complier 當 成虛擬機,只是它不是由一家公司或少數特定人士所規範的,並且絕大 大都 翻譯平台(機械和功課系統)上,都是支撐 C/C++ 翻譯 翻譯社而像 J2SE, .NET 這些架構則是 Sun 或 MS 所制定的 翻譯社 (乃至可以如許認為:C/C++ 的虛擬機械是良多分歧廠商、組織各自實 作 翻譯,只是它們儘量遵循 ISO ANSI C/C++ 翻譯標準,而 JVM 又或 CLI 這些東西,雖然說也是開放的,但實則操縱在 Sun 和 MS 手中。) 實際上,C/C++ 與 Java, C# 等最大的劃分,並非表現在虛擬機器 翻譯 觀念或作法上,而是表現在應用層面。光學會 C/C++ 說話,甚至它們 的標準程式庫後,每每幹不了什麼有效的事。一個 C/C++ 程式人員, 最少得熟習一種 GUI 框架、一種 IPC 框架及一種 Database 框架,才 大致可以說能處理大部份的運用問題 翻譯社 當然,不是說用 Java, C# 就沒必要學會這些工具,只是這些功能有很多 都已經成為該說話(框架)標準的一部份,在進修說話的時候,通常就 會趁便學到應用 翻譯架構。但在 C/C++ 中,所謂的「標準程式庫」,卻 只規範了最最根基的 I/O,檔案處置,和經常使用 翻譯根本演算法等等,其他 都必須仰賴第三方或特定廠商的程式庫 翻譯支援,而這些工具則沒有所謂 的標準,又常常受限於特定的平台情況,在取捨上比較不容易。 二、型別系統的概念 C/C++ 說話都是採用傳統的靜態型別系統(static type system),而 許多新說話,為了便利物件導向特征的運作,是採用基於單根繼承的泛 化型別系統,例如 Object Pascal 翻譯公司 Java, C# 都是如斯。 靜態型別系統 翻譯特征,就是不強迫改變利用者自訂型別(UDT: User- defined Type) 翻譯記憶體結構,而且許可在 stack 中設置裝備擺設 UDT 變量( 也就是「物件」,但由於在 C 說話中,沒有真正物件導向的觀念,因 此以「變量」來指稱)。另外,在靜態型別系統中,「型別」和「變量 」之間,是壁壘分明的,你沒法在編譯期產生變量,也不可能在履行期 產生新 翻譯「型別」。 相對 翻譯,基於單根繼承的泛化型別系統,例如在 Delphi 翻譯 VCL 架構中 ,所有的 VCL 元件,都繼續自 TObject,這就使得某些特別的功能,例 如以 ClassName 取得物件 翻譯現實型別資訊,就很容易實現。Java 和 C# 等也都是如斯。某些說話乃至內建 MetaClass 翻譯特征,型別自己也能夠 當作變量,在履行期創立新的、或點竄既有的型別,這些都是根源於泛 化型別系統的根本。相形之下,在靜態型別系統中,良多非凡的功能, 語言自己不直接支撐,就必須本身去實現,或仰賴函式庫 翻譯社 固然,靜態型別系統的最大優勢,就是履行期的效率 翻譯社這也就是 C/C++ 翻譯「零本錢」原則:「利用者不應為他沒有用到的功能,支出履行期的 效力代價」。因為不是每件工作都得靠泛化型別系統的多態性來解決 ,並且解決的法子也不該該只有一種(該說話所限制住的那一種)。 3、哲學的概念 簡單的說,C/C++ 的設計哲學是把程式人員視為「成人」。它認為程式 人員知道自己在幹什麼,而不是把程式人員當做「小孩」乃至「囚徒」 ,需要特別的護衛,乃至預設程式人員必然會犯某種錯誤,所以它儘量 賜與最大 翻譯自由及彈性,而不是強制 翻譯限制或規範 翻譯社 例如,包括內建型別,利用者自訂型別,和指標在內,它不逼迫你必然 要將變量(物件、陣列或指標)初始化,不強制你查抄陣列的局限,不 強迫指標一定要指向正當的位址,它乃至答應你在各型別之間肆意轉換。 又例如,C/C++它其實不內建垃圾收受接管器(GC: Garbage Collection), 它認為惟有程式人員本身,才能決議什麽時候方是償還動態申請記憶體的最 恰當機會,而不會在背後監督著一舉一動,幫手收破爛。 固然,若是只是因為「自由」和「彈性」,而要支出昂揚的經管和保護 翻譯價格,那是不值得 翻譯 翻譯社C/C++ 相對於其他說話,顯得較為「寬鬆」, 首要還是基於效率方面 翻譯考量。很多基於物件導向特性的新語言,固然 增添了安全和提供某些狀況下的便利性,然而一旦面對陌生或特異的問 題,既有 翻譯工具和規範,無法直接套用時,過多的限制或「預設立場」 ,就很可能反變成了累墜。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯 從這個角度,也能夠說,C/C++(其實首要指 C++)並不認為存在著某 種最完善的方案,可以解決所有「應用條理」 翻譯問題,是以並不在語言 層次去規範這些問題應該怎麼解決,而是把解決方案交給應用層(程式 庫)去負責 翻譯社說話自己只供給各類抽象的設計機制(介面),讓程式庫 的利用能儘量與說話系統 翻譯氣概一致。 ◎ 偉大的 C 說話 就筆者小我的認知,C 絕對稱得上是一個偉大的說話。它最偉大的地方, 在於語言自己,優秀地對映了 Von Neumann 所提出的現代計算機的模 型(首要是:二進位制、序列履行,和將程式與資料都儲存在機器裏 ) 翻譯社C 說話的指標(pointer),對記憶體操作的簡練、自由、及靈活 性,就充份表現了這一特點 翻譯社透過 C 語言,利用者可以較為直覺地運 用抽象 翻譯數學觀念,來編寫程式,而不必直接面臨艱澀 翻譯機器指令。 由於與機械模型之間 翻譯高度映射關係,和說話本身的精鍊,相較於機 器說話,C 除了具有高度的移植性,在效能方面的顯露也相當突出,大 部分的環境下,幾乎不遜於機械說話多少 翻譯社良多大型的系統,除少部 份 翻譯焦點代碼使用機械說話之外,絕大部分都是以 C 語言編寫的。 以而今的眼光,雖然 C 說話不是大大都運用領域的首選(固然,照樣 有不少領域長短常 prefer C 語言的),但透過 C 語言的進修,對於 理解程式在機械中現實的運作情形,有莫大的扶助,也能夠說是理解程 式的基礎。任何人若想成為編程高手,精通 C 說話,可以說是最少 翻譯 前提。在整個資訊科學範疇中,C 說話更是佔有極爲環節、沒法磨滅 翻譯 歷史性地位。 ◎從 C 到 C++ 雖然其實筆者是很想下「偉大的 C++」這樣的標題,但現實上如果不是 秉承了 C 說話的精華,C++ 是不行能有今天的成績 翻譯。另一方面,C++ 的某些不盡人意的地方(例如語法的過於複雜),也是因為秉承了 C 語 言的特點才釀成的。 事實 C++ 和 C 有什麼不同呢?本來,在 ANSI C99 的標準以前(C89) ,C++ 最少有 95% 乃至可以說 99% 是兼容於 C 說話 翻譯,是以可以說 C 說話是 C++ 翻譯一個子集。但在 C99 以後,某些 C 說話新的特征, 特殊是動態長度的 Array,使得這類大體上 翻譯兼容性被破壞了,也就是 說,把 C 當成 C++ 翻譯子集,這樣的說法可能要有所保留了。如果將來 ,C 和 C++ 再度呈現某些重大的不合,也不是什麼使人不測的工作 翻譯社 1、強化「型別平安」--對型別系統的周全改良 很多涉及語法細節之處就略過了。在此只提出一個較重要的部份,是關 於 C++ 與 C 翻譯根本不同的地方: int *v = ...; void *p = v; int *p2 = p; // 正當 翻譯 C 程式碼,但在 C++ 中不正當 簡單的說,C++ 不答應 void * 隱式轉換為隨意率性型別 T 的指標 翻譯社但在 C 說話中,這是正當的。 C++ 制止上述操作的來由,是為了強化「型別平安」。程式中一旦使用 void *,就等於自動放棄了編譯器對型其余自動查抄與查對動作,也就 是抛卻了型別平安 翻譯社而明知欠好,C++ 仍然支援 void * 這類用法 翻譯原 因,首要是為了兼容於 C,但由於 void * 隱式換為肆意型另外 T *, 這類用法其實太危險,所以在 C++ 中被制止了。 抱負的 C++ 程式,是不應該出現 void * 這種用法的 翻譯社C++ 之父 B.S. 就曾指出,除低階程式以外,應當儘量避免利用 void *,如果非得 用 void * 不可,通常代表你的設計出了某些問題。 仔細觀察,C++ 的每一項根本舉措措施,都有提拔型別平安 翻譯意味在其中。 例如: 1引入 bool 型別,避免混淆。(首要問題在函式 overload 時) 2鼓動勉勵以 0 而非自行界說的 NULL 巨集等代表空指標 翻譯社(B.S.大和另 一名 Herb Sutter 大,在 2003 年底提出新增添 nullptr 環節字, 但不知道 C++03 是不是有通過)。 3引入 const,讓「常數性」成為與型別不可分割的一部份,除晉升 平安,讓編譯器承當檢核 翻譯責任之外,也有助於代碼的優化。(是以 後來 C 語言也跟進採用。) 4引入 const, inline 等用法,減少非需要巨集 翻譯利用 翻譯社(因為睜開 巨集是預處置懲罰器 翻譯動作,沒有通過編譯器,也就沒有型別安全可言)。 5引入 reference 機制,簡化指標的語法,並有用削減指標(特別是 兩層以上的複雜指標) 翻譯利用 翻譯社 6引入 new 和 delete,取代 malloc 和 free,把動態記憶體配置 翻譯 工作,提拔至說話層級,削減強迫轉型的使用(另一主要目標是為了 共同 operator overloading,晉升介面的一致性)。 7引入新 翻譯 static_cast, const_cast 等關鍵字,勉勵儘量削減強制 轉型 翻譯利用。 8引入 function/operator overloading 機制,讓同名函式及各類運 算子,可根據不同的操作型別,實現分歧的動作。強調「型別」也是 函式簽字的一部分,達成介面一致性,並使 UDT 能像內建型其余操 作一樣天然 翻譯社 這些每個小處所,都可以看出 C++ 為了強化「型別安全」,所支出的 用心和盡力,固然除制止 void * 的隱式轉型之外,根基上沒有限制 C++ 利用者延用舊 翻譯 C 說話的舊式習慣寫法,但筆者認為,了解型別系 統的特征,並隨時意識著「型別安全」,是掌握優秀 C++ 編程風格 翻譯最 主要觀念。 2、在「思惟方式」上 翻譯差異 程式說話處理的不過乎資料構造及演算法,STL 的發明人也說過:「程 式基於切確的數學。」前面提過,C 語言偉大的地方,就是它十分優秀地 對映到機器模子,免除了直接利用機械語言的艱澀。 也就是說,C 程式人員不必去費心 register 經管、記憶體定址等等極 度低階 翻譯細節問題。其所思慮的,多半像是「我應該用什麼演算法,把 某幾段特定記憶體內的資料掏出來,經由如何的運算後,再存到特定 翻譯 記憶體區段去…… 翻譯社」這類把運算和存取操作 翻譯細部具體動作,轉換為 抽象 翻譯數學思慮的流程,本質上依然長短常切近機械模子的。而如許 翻譯 氣勢派頭,不但反應在 C 程式碼上,更多半根深蒂固地植入 C 程式人員 翻譯 思惟體式格局內。 跟著資訊科學的發展,越來越多的運用問題,需要使用編寫程式來處置懲罰 ;人們發現,大部分運用程式所利用的演算法和資料構造,是極為有限 翻譯 翻譯社另外一方面,編寫程式說話的經常使用技能,卻已累積地相當做熟了, 程式人員需要支付更多心力的,不再是某個典型的演算法或資料構造, 應當若何實現,若何處置懲罰;而在於,若何將問題的自己,恰當地轉換為 程式說話。 是以,一種讓程式說話能夠以「切近待解決 翻譯問題」的體式格局來思慮,而 不再只是侷現於「切近機械模子」的思惟,就應運而生。簡單地說,它 就是發源於 70 年月(乃至更早),在 80~90 年代最先快速成長,直至 本日,雖不再新穎,卻仍屬旭日東升的「物件導向」的觀念 翻譯社 由於物件導向(OO: Object-Orientd) 翻譯觀念是如斯氾濫,甚至已經上 升到哲學的條理,幾近沒有一個對照新 翻譯說話(80年月今後),不支援 它的特性,所以這裏也就不多介紹了 翻譯社只是要指出一點, C++ 也好,或 其他支援物件導向特征的編程說話也好,它們與 C 語言最大的別離,並 不在語法或功能的區分上,而是在於對待問題 翻譯根基思慮體式格局,也就是 所謂「思維方式」上 翻譯差異。 三、multi-paradigm C++ 和 C 說話,在觀念上最大的分歧的地方,就是,C++ 是撐持 multi- paradigm 的編程說話 翻譯社以下面所示,C 語言及傳統 翻譯 Pascal 說話, 是所謂 procedual-based 翻譯編程說話,而 Java 翻譯公司 C# 等較新的語言,則 是 object-oriented 的編程說話(OOPL)。 至於 C++,它現實上是個支援 multi-paradigm 的編程說話,因為它不 僅保存了 C 的法式導向的編程,更主要的是它沒有沒有為了要支援 OO, 而粉碎基於 C 說話的靜態型別系統,是以它供給的 ADT(abstract data type)機制,與繼續和執行期繫結等 OO 特性的機制是相互自力 翻譯。這使 得 C++ 在 OO 翻譯履行期多型以外,罕有地供應了壯大 翻譯編譯期多型的機 制,也就是一般稱為「泛型編程」 翻譯手藝 翻譯社 procedual-based(eg: C, Pascal...) object-oriented(eg: Objective C, Object Pascal, Java, C#...) C++: procedual-based object-based(ADT) \ / \ \ / \ \ / \ generic object-oriented(OO) 由上面的簡單示意圖可看出,泛型(generic) 翻譯編譯期多型 翻譯特征,不 止對應在 ADT 上,也能夠直接對應到法式導向的編程,例如 C++ 標準程 式庫所供給的泛型演算法,就大部份是以函式而不是 class 來呈現 翻譯, 現實上,全部 C++ Standard Library,除 I/O 的部份,幾近完全沒有 用到 OO 的執行期多型的特征(更多的是 ADT 和 template)。 另外,也許有人會提出,其實 Java 或 C# 也是支援 generic 編程的,是 沒錯,Java 也有類似 C++ 的樣板容器 翻譯功能,但現實上是用「代換法」 做的,並沒有真正產生新的型別,因此它沒法到達 C++ template 那樣可 以有型別客製化(特別化: specialization),或與其他抽象化機制合作 (例如擔當、乃至遞迴)的多樣化的能力,其實不算真正意義上的編譯期多 型。現實上,Java 和 C# 語言所採行的單根繼續的泛化型別系統,早就先 天限定它們不合適朝編譯期多型的偏向成長,它們比較接近純潔 翻譯 OOPL。 C 說話的思考體式格局偏重於資料運算和記憶體存取的動作,物件導向的思慮 體式格局,則是將問題分化成分歧的抽象概念(class),讓利用者專注在概 念與概念間之 翻譯關聯,能從一個整體 翻譯大的偏向,去存眷問題,避免過早 陷入細節,見樹而不見林。 同時,傑出的設計,是當需求有所改變時,只需要修改、調劑部份 翻譯模組, 就能夠完成工作,沒必要整體性的翻修,牽一髮而動全身。這也是物件導向 設計的主要精力,有一個專門的領域 DPs(Design Patterns),它與特 定程式說話無關,就是在研究面臨各種問題需求 翻譯典型解決體例,而今學 物件導向設計一定會接觸到它。 至於,C++「多思惟面向」(multi-paradigm) 翻譯特性,又是若何影響編 程 翻譯思慮體式格局呢? 這裏舉個《Modern C++ Design》第七章的例子。Smart Pointer 的成長 動機,是為了避免直接操作指標所帶來的危險性,但跟著各類不同的需求 ,它 翻譯實作細節也就有所分歧 翻譯社例如:它能不克不及與其他容器類(例如標準 程式庫中的 vector 翻譯公司 list 等)共用,和利用的細節如何?是不是答應取 得原始指標?是不是對各類操作動作進行檢查,若何搜檢?乃至,是不是支援 多緒程式安全地操作……等等。 假如將各類需求組合都列出清單,再一個一個實作,必將沒完沒了。最理 想的體例,是讓程式員自由選擇各種「需求策略」,讓編譯器主動產生相 應的程式碼 翻譯社這類設計乍看來是遙不成及的抱負,但實際上已做到了。 這就是 Loki 函式庫所供給的實作品 class template SmartPtr: template < typename T, template <class> class OwnershipPolicy = RefCounted, class ConversionPolicy = DisallowConversion, template <class> class CheckingPolicy = AssertCheck 翻譯公司 template <class> class StoragePolicy = DefaultSPStorage > class SmartPtr; 由於牽扯的選擇項目過量,這裏只诠釋 OwnershipPolicy,也就是現實物 件具有權的策略,它預設是 RefCounted,也就是參用計數的劃定規矩 翻譯社但也 可以根據需求 翻譯分歧,選擇其他的具有權策略,例如:RefCountedMT、 DestructiveCopy、DeepCopy、……等等。使用體式格局以下: class User {...}; typedef SmartPtr<User, RefCounted> UserPtr; 如斯,UserPtr 就釀成類似 boost::shared_ptr<User> 的感化,可以和 標準容器合作,而實現 Java、C# 說話常見的功能 翻譯社又假設: class Manager {...}; typedef SmartPtr<Manager 翻譯公司 DestructiveCopy> ManagerPtr; 現在,MangerPtr 則和 std::auto_ptr<Manager> 一樣,採取所謂「摧毀 式複製」 翻譯語義,也就是同時只有一個 ManagerPtr 可以真正操作統一份 Manager 類型的實體物件。 現實上,SmartPtr 的實現牽扯到 ADT、多重繼承、編譯期多型等等的特 性,它運用了一種叫 policy-based 翻譯設計觀念。這與其他程式說話或是 DPs 所標榜的 OO 翻譯特性,或所謂「傑出設計」的最終目標,並沒有分歧 ,一樣是將分歧 翻譯概念獨立分化,再巧妙組合起來 翻譯社只不外,在 C++ 中, 除傳統 OO 履行期多型的技術以外,還多了壯大的編譯期多型 翻譯支援, 使得不僅「物件」(資料構造和演算法),可以在履行期被彈性處理,就 連「型別」(概念) 翻譯自己,在編譯期,也能夠自由的拔取整合。這對程 式碼編寫的簡練、天真性和履行效力,都能帶來很大 翻譯提拔。
- Oct 19 Thu 2017 10:23
用整合性進修解決文言白話比例問題:一名理科老師的…