目前分類:未分類文章 (1180)
- Oct 16 Mon 2017 23:24
客家話不算「台語」嗎?
- Oct 16 Mon 2017 14:59
賴揆讚黨推行客家文化有功 客語頻道皆在綠營任內創辦
- Oct 16 Mon 2017 06:32
房仲營業心得第四則《要說服 · 不要辯論》
- Oct 15 Sun 2017 22:05
成大響應新南向 新設「東南亞文化學分學程」
- Oct 15 Sun 2017 14:00
余祥銓談打工經驗!憲哥沖破盲腸:你不讀書都在開趴?
- Oct 15 Sun 2017 05:33
夏威夷語言課程與住宿(UH Manoa NICE progr
- Oct 14 Sat 2017 21:11
Google頒發Pixel Buds 這才是翻譯神器啊~(等等我是耳機耶)
- Oct 14 Sat 2017 12:44
1011127.山的無聲說話,教導我們更多,從爬山中體驗無常﹝高銘和 ...
- Oct 14 Sat 2017 04:19
【有片】立法院成立導覽志工團 7種說話攏ㄟ通!
- Oct 13 Fri 2017 15:53
看蔡總統國慶談話 吳敦義:兩岸論述「還是文青說話」
- Oct 13 Fri 2017 07:24
藏區教漢語 「藏文化不會滅」
- Oct 12 Thu 2017 22:59
綠挺閩南語正名「台語」 藍委籲文化部勿數典忘祖
- Oct 12 Thu 2017 14:34
推特測試倍增280字元 中日韓文不開放
社群平台推特(Twitter)斟酌將英文推特 翻譯字元限制,從現行的140字元提高到280字元,一舉擴增成本來的兩倍,但不包含中、日、韓文版本 翻譯社美國CNBC新聞台報道,推特在官方部落格上發表,正針對部分用戶測試這項放寬字元限制功能,為的就是讓用戶能加倍各抒己見 翻譯社「很多用戶對140字元限制具有『感情依靠』,我們也是」。但強調即便以後放寬字元限制,推特照樣會保持精簡洗鍊的氣勢派頭。不外,這項政策不包括中文、日文或韓文的版本。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯因為上列說話 翻譯字符特征,自己已可精簡表達資訊。統計指出,只有0.4% 翻譯日文推特利用者每次推文都把字元用好用滿,同樣的情形在英文利用者中則佔了9%。(林孝儒/綜合外電報道)
- Oct 06 Fri 2017 00:41
大陸買的win10專業版可以切換繁體嗎?
- Oct 05 Thu 2017 16:36
[心得] 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,檔案處置懲罰,和常用的基礎演算法等等,其他 都必需仰賴第三方或特定廠商 翻譯程式庫 翻譯支援,而這些器械則沒有所謂 翻譯標準,又經常受限於特定的平台環境,在取捨上比較不易。 2、型別系統的概念 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++ 翻譯「零本錢」原則:「利用者不該為他沒有效到 翻譯功能,支付執行期的 效力價格」。因為不是每一件事情都得靠泛化型別系統 翻譯多態性來解決 ,而且解決的法子也不該該只有一種(該說話所限制住 翻譯那一種)。 三、哲學的概念 簡單的說,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 說話最大的離別,並 不在語法或功能的區別上,而是在於對待問題 翻譯根基思慮體式格局,也就是 所謂「思惟方法」上的差異。 3、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 05 Thu 2017 08:10
★XPERIA XZ 7.0 Nougat體驗心得(圖)★
- Oct 04 Wed 2017 23:46
Android 7.0後某些中文APP變英文調回中文的方法之一(NOKIA 6合用)
- Oct 04 Wed 2017 15:23
mate 9的app語系界面問題
- Oct 04 Wed 2017 06:50
WIX 網站想做出中英切換功能