千慮一得齋OnLine_觀死書齋-Yahoo/Hexun/Blogger/sina/Xuite

觀死書齋暨Spread、和訊博客全文檢索

2019年12月18日 星期三

C++自修入門實境秀、C++ Primer 5版研讀秀 81 ~ 12.1. Dynamic Memory and Smart Pointers...





來幫中文版改作文囉:

我們目前寫過的程式,用的都是定義了明確生命長度(生命週期lifetimes)的物件(objects)。全域性的物件會在整個應用程式啟動時先行配置妥當,並在程式結束時結束。區域性生成的物件則會在程式執行點進入它們所在的區塊時生成,並在離開該區塊時結束。由應用程式靜態配置的(static)區域性物件,則會在初次使用到它們前配置妥當,而在整個應用程式結束時才會結束。

除了支援區域生成性的物件和應用程式靜態配置的物件,C++也能讓我們自行動態配置物件(機動配置物件)。動態配置的物件打從它們被創建時便具有獨立(lifetimes,生命週期),它們的生命長度會一直持續到明確釋放它們為止。

正確地釋放動態配置物件已知是非常常見的臭蟲來源。為了能更妥善地利用動態配置物件,C++的程式庫因此定義了兩種型別的智慧指標,來有效管控動態配置的物件。這兩種型別的智慧指標都能在適當的時機下釋放它們所指向的動態配置物件所佔用的記憶體。



改中文版作文:

我們到目前為止練習的程式,對於系統記憶體的使用,只用到靜態的(static)和堆疊式(stack)這兩種記憶體區域。靜態記憶體是用來配置靜態的(static)物件,至少包括:區域性的靜態(static)物件(§6.1.1)、類別的靜態(static)資料成員(data members,§7.6),以及在任何函式外定義的變數,這3種。堆疊式記憶體則是用來配置非靜態的(static)物件,如定義在函式內的非靜態(static)物件(也就區域性生成的物件,即所謂的自動物件automatic object)即是。在這兩種記憶體區域(即靜態和堆疊式記憶體)中配置的物件會由編譯器來自動創建並予摧毀。至於堆疊式記憶體配置存放的物件則僅僅在它們被定義的區塊還在執行的時候才有效、才存在;然而若是靜態配置的(static)區域性物件,這樣的物件就會在它們第一次被使用前配置好,而只會在整個應用程式(program)結束時才被摧毀。

除了上述兩種記憶體區域(靜態與堆疊記憶體)外,作業系統對每個應用程式(program)還都配有一個叫做集區(pool,在這裡應該有點蓄水池的意思)的記憶體可資使用。這個記憶體區域也叫作自由存放區(free store)或heap(堆積記憶體區)。應用程式則會把這個系統配置給它的堆積區域(heap)供給它所需要用到的動態配置(dynamically allocate)物件來使用。這種物件是程式在執行期間(run time)所動態進行配置的物件,因此程式本身就有責任去好好管控這些動態物件的生命長度,所以我們在撰寫這樣的程式它的程式碼的時候,就必須在不再需要這種物件的時候明確下達摧毀它們的指令,以釋放相關的記憶體。

警告:儘管有時非得用上動態記憶體(dynamic memory),但眾所周知,動態記憶體的難管控是出了名的。(可以說動態記憶體是桀敖不馴的,很難馴服的。)

12.1動態記憶體與智慧指標

在C++中,動態記憶體是透過一對運算子來管控的:new運算子能在動態記憶區中配置一個物件,也可藉由它來初始化該物件。在配置妥當後,會傳回一個指向該物件的指標;而delete運算子則帶有一個指向動態物件指標的參數,可以藉以摧毀該動態物件,並釋放它所關聯到的記憶體。

動態記憶體之所以桀敖不馴、難以管控,是因為釋放記憶體正確的時機,是很難掌控的。通常不是忘了釋放記憶體,而導致了記憶體資源的浪費——即所謂的記憶體洩漏(memory leak);就是不小心誤將仍有指標指向它們的記憶體給釋放了,在這種失誤下,就會有指標指向不再有效的記憶體位置。

為了讓動態記憶體的使用變得為更容易(也更加安全),新的程式庫提供了兩種智慧指標(smart pointer)型別來管理動態物件。智慧指標的表現其實就跟一般指標沒什麼兩樣,只不過有一個重大的特性:那就是,它會在適當的時機自行刪除它所指向的物件。新的程式庫定義了兩種智慧指標,它們的差別在於管理其底層指標的方式有所不同:shared_ptr這樣的智慧指標可容許多個底層指標指向相同的物件,而unique_ptr這種智慧指標,則會「獨佔(owns)」它所指向的物件,不與其他共用。程式庫還定義了一個與這兩種智慧指標相伴的類別,名為weak_ptr,它是一種弱參考型的(weak reference)指標 ,指向由一個shared_ptr管控的物件。這三種智慧指標全都定義在memory這個標頭檔中。

12.1.1 shared_ptr 類別

就像vector,智慧指標是一種模板(templates,§3.3,p96)。因此,創建一個智慧指標的時候,我們必須提供一個額外的資訊,這個資訊就是要創建的指標想要指向的型別。跟定義一個vector一樣,我們會在要定義的智慧指標型別名稱之後,加上角括號來提供這個型別:

shared_ptr<string> p1; // 可以指向一個 string的 shared_ptr

shared_ptr<list<int>> p2; // 可以指向由 int 組成的一個 list 的 shared_ptr



改中文版作文:

4:20:39經過預設初始化後的智慧指標,會是一個null指標(§2.3.2,頁54)。在§12.1.3(頁464)中,我們才會討論到初始化一個智慧指標的其他方式。

使用智慧指標的方式就如同使用一般的指標。因此,解參考(dereferencing)一個智慧指標就會回傳該智慧指標指向的那個物件。當我們在一個條件句中使用到一個智慧指標,其效果就等同於測試該指標是否為 null :

//如果p1不是null,檢查它是否為一個空string

if (p1 && p1->empty())

*p1 = "hi"; //若是空string,就將p1解參考,並指定新值”hi”給解參考的結果

表12.1列出了 shared_ptr和unique_ptr共通的運算。專屬於shared_ptr的那些則列於表 12.2。

make_shared 函式

配置並使用動態記憶體最安穩的方式就是呼叫名為make_shared的程式庫函式。這個函式會在動態記憶體區中配置並初始化一個物件,然後回傳一個shared_ptr指向該物件。和智慧指標一樣,make_shared也是定義於memory的標頭檔中。

當我們呼叫make_shared,我們必須指定要讓make_shard創建出來的物件它的型別。指定的方式,就如同使用模板類別的方式,須在make_shared的函式名稱後接著一對角括號,並在其中指定該型別:

// p3指向值為 42 的一個 int

shared_ptr<int> p3 = make_shared<int>(42);

// p4指向一個string,其值為9999999999

shared_ptr<string> p4 = make_shared<string>(10, '9' );

// p5指向一個int,其值被值初始化( §3,3.1)為0

shared_ptr<int> p5 = make_shared<int>();

就像循序容器的emplace成員一樣(§9.3.1),make_shared也會利用它的引數型別來建構一個特定型別的物件。比如說,對make_shared<string>的呼叫,就必須傳入一個能與string類別定義的建構器匹配的引數。而對make_shared<int>的呼叫則可以傳入能夠用來初始化一個int的任何值,來作為make_shared<int>的引數。如果我們沒有傳入任何引數給make_shared,那麼make_shared所創建出來的物件就會是一個角括弧內所指定的型別經過值初始化後的(§3.3.1)物件。

不過一般說來,我們都會使用auto ( §2.5.2)來定義一個物件,以存放make_shared回傳的結果,這樣會更容易一些:

// p6指向一個動態配置的、空的vector<string>

auto p6 = make_shared<vector<string>>();

拷貝和指定shared_ptr

當我們拷貝或指定一個shared_ptr這樣型別的智慧指標的時候,每個參與拷貝或指定的shared_ptr都會同時追蹤記錄到底有多少shared_ptr指向相同的動態物件:

auto p = make_shared<int> (42) ; // p 所指的物件有一個使用者(即有一個shared_ptr指向它)

auto q (p) ; // 用智慧指標p將q初始化,則p和q會同時指向相同的動態物件

//則 p和q所指的物件此時有兩個使用者(即兩個智慧指標指向它) 5:12:30

改中文版作文:

表 12.1 : shared_ptr 和 unique_ptr 共通的運算

shared_ptr<T> sp

unique_ptr<T> up 宣告了一個可指向T型別的物件,而其值為null的shared_ptr或unique_ptr智慧指標。

p 在條件句中使用p,如果p有指向一個物件,其值為true。



*p 將p解參考來取得p所指向的物件。



p->mem 與(*p).mem等效。



p.get() 回傳智慧指標P中的一般指標 。使用時請小心,此操作下回傳的指標所指的物件可能會在智慧指標p刪除該物件的時候消失。

swap(p,q) p.swap(q) 將智慧指標p與q中的指標對調。即對調p與q此二變數所載(所存放)的指標

可以將一個shared_ptr想成它有一個關聯的計數器,這個計數器通常會被稱作參考計數(reference count)。每當一個shared_ptr被拷貝的時候,這個計數就會遞增。舉例來說,與一個shared_ptr關聯的計數器會在以下情況中遞增其值:

1.當我們用它來初始化另一個shared_ptr的時候、2.用它來作為指定式的右運算元時,3.我們以傳值的方式將它傳入函式(§6.2.1)或從函式回傳(§6.3.2)其值的時候。而這個計數器會在以下的情況下遞減其值:1.指定一個新值給shared_ptr時,2.shared_ptr本身被摧毀時,比如當程式的執行點超出了一個區域性的shared_ptr的範疇(§6.1.1)的時候,這個區域性的shared_ptr的生命週期自然就結束。

只要一個shared_ptr這樣關聯的計數器其值降為零,這個shared_ptr就會自動釋放它所管控的動態物件(在動態記憶體區中所配置的物件):

auto r = make_shared<int>(42); // r 所指的 int 有一個使用者,其參考計數(reference count)此時為1

r = q; //指定給r,讓它指向一個不同的位址

//遞增q所指物件使用的數量

//遞減r曾指過的那個物件使用的數量,

//r曾指的那個物件現在沒有使用者了,那個物件會自動被釋放

這裡我們配置了一個int,並將對那個int的一個指標儲存到r中。接著,我們指定一個新的值給r。而r是指向我們之前配置的那個int物件唯一的 shared_ptr。那個int物件會在指定 q給r的過程中自動被釋放。

注意:是要採用一個計數器還是其他的資料結構來追蹤記錄智慧指標指向同一物件的個數,這是由實作自己來決定的。不論如何,其關鍵在於,類別必須要記下尚有多少shared_ptr指向同一物件,並在適當的時候自動釋放那個物件。

shared_ptr會自動摧毀它們的物件…

當指向一個物件的最後一個shared_ptr被摧毀時,shared_ptr類別就會自動摧毀那個 shared_ptr所指的物件。它會假手另一個特殊的成員函式來進行這樣的操作,這種的特殊的成員函式叫作解構器(destructor)。每個類別有建構器,也都會有一個解構器。建構器會控制該類別型別物件如何被初始化,而解構器則會控制該類別型別的物件在被摧毀的當時將會發生什麼事。



改中文版作文:

表12.2 : shared_ptr專屬的運算

make_shared<T>(args) 回傳一個shared_ptr指向一個動態配置的T型別物件,且使用 args來初始化那個物件。

shared_ptr<T> p(q) shared_ptr智慧指標 p是shared_ptr q的一個拷貝,在這樣的操作下會遞增q中的參考計數。q中的一般指標必須能夠轉換為對T型別的指標(即T*) ( §4.11.2,頁162)。



p = q shared_ptr p與q 存放的指標是可以互相轉換的。在這樣的指定式下會遞減p的參考計數並遞增q的;如果p的計數降到了0,就會刪除p指向的物件,而釋放其記憶體。



p.unique() 如果p.use_count()是1,就回傳true,否則為false。



p.use_count() 回傳與p共享物件的指標數量;可能會是冗長的運算,主要是用在除錯上。

類別的解構器會釋放已配置給其型別物件的資源。比如說,string建構器(以及其他的string 成員)會進行記憶體的配置來存放構成string的字元。string的解構器則會釋放那些已配置給該string字元用的記憶體資源。同樣地,有些vector的運算或操作也會配置記憶體來存放vector要用到的元素。而vector的解構器則會摧毀那些元素,並釋放那些元素所佔用的記憶體。

shared_ptr的解構器會遞減shared_ptr的參考計數。如果這個計數降為零,shared_ptr解構器就會摧毀那個shared_ptr所指的物件,並釋放該物件佔用的記憶體。

…並自動釋放關聯的記憶體

因為「shared_ptr類別會自動釋放不再需要的動態物件」,所以對動態記憶體的妥善使用就變得容易多了。舉例來說,我們可能會有一個函式回傳一個shared_ptr指向一個動態配置的物件,而這個動態物件(dynamic object)型別為Foo,且可由T型別的引數來將之初始化:

// factory會傳一個shared_ptr指向一個動態配置的物件

shared_ptr<Foo> factory (T arg)

{

//適當地處理arg

// shared_ptr會負責刪除這個記憶體

return make_shared<Foo>(arg);

}

因為factory會回傳一個shared_ptr,我們可以確定factory所配置的物件會在適當時機被釋放。舉例來說,下列的函式會將factory所回傳的shared_ptr儲存在一個區域變數中:

void use_factory(T arg)

{

shared_ptr<Foo> p = factory(arg); //使用p

} // p離開了其範疇,p所指向的記憶體會自動釋放



改中文版作文:

因為p對use_factory來說是區域性的,它會在use_factory結束時被摧毀(§ 6.1.1 )。當p被摧毀,它的參考計數會遞減,並受檢查。在此,p是指向factory所回傳的記憶體的唯一物件。因為p即將消失,p所指的物件也會被摧毀,而那個物件所佔用的記憶體會被釋放。

如果有其他的shared_ptr指向它,那個記憶體就不會被釋放:

shared_ptr<Foo> use_factory(T arg)

{

shared_ptr<Foo> p = factory(arg);

//使用p

return p; //我們回傳p的時候參考計數會遞增

}// p離開範疇了,p所指的記憶體卻並沒有被釋放

在這個版本中,use_factory中的return述句會回傳p的一個拷貝給其呼叫者(§6.3.2)。拷貝一個shared_ptr會遞增對那個物件的參考計數。而如今,p雖然被摧毀,但是p所指的記憶體卻仍有另外一個使用者指向它。shared_ptr類別會保證只要還有任何的shared_ptr依附在那個記憶體上,那個記憶體就不會被釋放。

也就是因為直到最後一個shared_ptr消失之前,shared_ptr所指向的記憶體都不會被自動釋放。因此我們在撰寫程式碼時,一定要顧慮到:當不再需要某個動態物件後,一定要把所有指向該物件的shared_ptr清除乾淨。若是忘了徹底清除用不到的shared_ptr,雖然應用程式仍能正常執行,沒有異狀,但卻會平白浪費掉可用的記憶體資源。在用完shared_ptr之後,會忘了清除乾淨,最有可能是發生在將 shared_ptr作一種容器的元素型別來使用,當對該容器元素進行了重新排序後,若不再需要容器中所有的元素,就應該把不再用到的元素確實進行容器的erase運算,以徹底清除那些用不到的shared_ptr元素。

注意:如果你將shared_ptr放到一個容器中,且你接著只需要使用到其中的某些元素,而非全部的元素,那麼就請你務必要記得清除掉你不再需要用到的元素。

2019年12月17日 星期二

王羲之《蘭亭集序》一起讀懂實境秀 8 /「固知一死生為虛誕」「後之視今,亦由今之視昔」說解-20191217_200741





0:22 18:44 32:11 34:52 2.固知一死生為虛誕,我會翻譯成

固:5:44 7:30 12:25於是(其實查字典,故沒有於是的意思) 《漢語大字典》8:40「於」猶「以」,介詞。

10:27於是=在此(之後)

5:55 9:20以是=所以=6:59是以=因此=於是9:00

1:00固=故 字形結構換部首 就有於是(所以)的意思

2:52《古文字通假字典》 3:22 故=固 字形結構換部首 5:10古=固=故《漢語大詞典》5:30 「固」通「故」

26:45 29:50

用「故」來讀,就沒有強調、加強語氣的效果了

13:04知:知道 ②單字想複詞

13:17死生:死亡和活著

13:22虛誕:虛妄荒誕(18:20 19:00只是不知道是直接當名詞:「虛妄荒誕的事情」19:30 22:10還是當形容詞「虛妄荒誕的添字還原

23:38 至於「一」可以當作動詞「看作一樣」嗎? ⑦先抓動詞

24:07「為」的意思也很難抓 ②單字想複詞 天下為公 失敗為成功之母

【訊息時間2019.12.17 星期二00:01

26:04 29:50「由此可知(將)死亡和活著看作一樣是虛妄荒誕的事情」

30:45說反語

31:56 35:10「固知(將)死生一為虛誕」

這樣倒裝回來再添個字可以嗎?

【訊息時間01:5937:12 3.「後之視今,亦由今之視昔」

38:28那麼後、今、昔是代表「後世的人」、「現在的人」、「為來的人」嗎?

還是「的人」是被省略要還原的字?

43:15 48:20不要「只知其一,不知其二」!

43:37 47:40另外,他們是不是少了什麼?後世的人看現在的人....的什麼,也好似現在的人看昔日的人.....的什麼。

46:15大限47:00鍾嶸《詩品》 46:48梵谷、陶淵明死後還沒生前有價值

44:51那個「....的什麼」是指「文章」還是「傷逝」?

【訊息時間02:03】 就前後文我覺得是文章



4:30要善體師心

13:50老師有提供教材要先讀過、準備充足後再來發問才是,這是學生的本分。我是怎麼做學生、問問題的。

16:00嚴師出高徒

李炳南老居士、淨空老和尚之師弟故事。真想學、真要教的是有打有罵、不客氣的!

26:50課本導讀錯的地方:『末斥「死生為一,彭殤同壽」為妄說。』

此乃虛斥,而實贊成也。

31:40「實寫、虛寫」也弄顛倒了

32:20「極視聽之娛」

名詞+名詞:

1.前轉詞性(動詞)

2.中間省略了連接詞

3.前轉詞性(形容詞)


2019年12月9日 星期一

王羲之《蘭亭集序》一起讀懂實境秀 7/ 及其所之既惓,《論語·季氏》前3章:既來之,則安之-「既」字說解





既惓 10:00 33:11 3:38:38 3:42:27及其所之既惓,情隨事遷……

3:40:00

情隨事遷

情遷(是)隨事遷(而遷) ⑤添字還原 3:41:35

情感的改變是隨著事態的變化而變化的



2019/12/9 補充 34:15

有同學菩薩問: 0:30 4:17 下載說解教材講義 37:30

蘭亭集序:及其所之「既」惓,表示已經。「既來之,則安之。」出自論語,孔子本意:「人不歸服,就用仁義禮樂招徠;已經來了就要使他安定下來。」如今譯成「既然/已經來了,就安穩的過。」,兩者還能都解釋成已經嗎? 既然與已經解釋能相通嗎? 原文網址:https://kknews.cc/culture/6kop6eq.html

12:20

16:22 「年輕」還是「年青」?七星大法 18:30 25:30無足輕重、舉足輕重 26:00半吊子 冬烘先生、差不多先生 27:00胡適之先生也是差不多先生吧

31:10「爛學校」的典故,我與李敖先生唯一一次的獨處經驗

1.問題表述不清楚 33:00 34:40

2.未如笛卡爾將問題先予分析成小的片段:13:10 35:20

  笛卡爾說過,他之所以成為一個偉大的思想家,是由於他的有條理的思考方法。他在年青時就開始練習這種方法。他發現這樣非常有用。此法包含下面四個簡單的步驟:

 1你沒清楚地知道是真的事,不要相信它。28:44

 2把每一個問題分成許多較小部分。32:30

 3從最簡單最容易了解的事物開始,然後再繼續較難的。

 4當你列出問題的元素時,要看看這表列是否完全,是否沒有遺漏。(《如何想得清楚和正確》,頁4)21:00 36:40本書審校極不精!22:35

10:00 39:16既,如前,老師已解釋過了,也附上了《漢語多功能字庫》參考網址。40:10這不就回答了這一提問的第3「部分」了嗎?既, 七星大法 43:30原文為物質、生理的吃飽,轉為精神、或時間上的已然、已經。既然就是已然。既,就是「已」。

第1部分問題,本課文的「既惓」即「既倦」。44:20查字典、詞典,可以發現「既」後接「動詞」,亦表「已」義。如「既往不究」,「往」,動詞,過去也、過去了。「既定」,定,動詞,決定、敲定,如「既定行程、既定政策」。……

同學菩薩的問題可能是,「既定政策」翻成「已經定下的政策」是OK的,但是若翻成「既然定下了政策」,不就不一樣的意思了嗎?因為「既然定下了政策」的「既然」是連接詞,後面要下一子句啊,話才完整。不是嗎?49:00

問題就在,這裡的「既倦」「既往」「既定」……這些後接「動詞」的詞組會是如白話「既然」一樣,是「連接詞」性嗎? ⑦先抓動詞 就是要找對詞性50:20 1:13:00 3:38:38

後面接動詞的這種「既」,多是副詞性;用來修飾後面動詞是「完成式」的。

而白話的「既然」,或文言作連接詞性的「既」,有一個特徵(徵兆)就是「既」後一定會有「主詞」,不是直接接動詞的。然如同學菩薩問的,又如《國語辭典》所示之句例:

《論語.季氏》:「既來之,則安之。」

不就是「既」後接了「動詞」「來」了嗎? 54:50 ⑧找對主詞 但請問,「既來之,則安之」,這二句話,有沒有省略啊?省略了主詞或受詞啊?就如九陽神功 教您們的「生日快樂」,誰快樂啊?「來」是誰來啊?「安」又是誰安、誰被「安」啊?可見作連接詞的必定會有主詞或隱藏版的主詞(或受詞)。58:20回到前面「既定」「既往」與課文「及其所之既倦」的「既倦」(既惓)還能再加主詞嗎?也是主詞省略嗎?是主詞的隱藏版嗎?您就知道二者之間的異同了!

又,文言的既然與白話的有差別。文言的「既然」,既,是「已經」;然,是「如此」,有實義的字,既然,在文言表達的是「已經如此、已經這樣」了的意思。但是白話,是用文言的「既然」,而虛化了「然」字,1:1:35白話的「既然」的「然」是虛字、無義。因為要湊複詞(複音節的詞彙,以便口語上辯義、區別同音字),而古文、文言又常有「既然」連用的情形,就拿這個「既然」來用,在「既」後面接了一個「然」字,而不接其他的字(因為古文、文言如此),所以文言說「既然」,白話則要說「既然如此」,白話的「既然」就是文言的「既」,因為白話的「然」沒有意義;而白話的「如此」,就是文言的「然」。這樣,白話口語上就不能單單說個「既」了,因為「既」的同音字太多,如果口頭上只用一個「既」,不容易分辨到底您要表達的是哪個「ㄐㄧˋ(jì)」:1:7:25 1:8:00

紀、紀、記、忌、季、祭、寂、劑、繼、冀、技、寄、既、驥、暨、稷、劑、薊、覬、嚌、薺、芰、悸、伎、妓、鯽、偈、髻、鱭、魥、薊、薺、跽、計、濟、霽、洎、霽、濟、際、績、跡、積、継、繼、驥、跡、曁、罽、鬾、暩、穄、誋、痵、璾、蘻、惎、茍、際、蘎、茤、徛、梞、穊、諅、襀、漈、蹟、臮、鱭、齌、鯚、穧、瀱、嚌、坖、蔇、蘮、魝、裚、稩、鯽、檕、鰿、績、計、葪、覬、癠、剤、記、鵋、漃、禝、懻、済、鷑、旣、鰶、鱀、繋、垍、紒、檵、兾、旡、彑、……

您看您到底要「講」哪個「ㄐㄧˋ(jì)」啊?

第2部分,《論語》原文:1:16:00 1:42:28中研院《漢籍電子文獻資料庫》 1:17:48

季氏將伐顓臾。冉有季路見於孔子曰。季氏將有事於顓臾。孔子曰。求。無乃爾是過與。夫顓臾。昔者先王以為東蒙主。且在邦域之中矣。是社稷之臣也。何以伐為。冉有曰。夫子欲之。吾二臣者。皆不欲也。孔子曰求。周任有言曰。陳力就列。不能者止。危而不持。顛而不扶。則將焉用彼相矣。且爾言過矣。虎兕出於柙。龜玉毀於櫝中。是誰之過與。冉有曰。今夫顓臾。固而近於費。今不取。後世必為子孫憂。孔子曰。求。君子疾夫舍曰欲之。而必為之辭。丘也聞有國有家者。不患寡而患不均。不患貧而患不安。蓋均無貧。和無寡。安無傾。夫如是。故遠人不服。則脩文德以來之。既來之。則安之。今由與求也。相夫子。遠人不服。而不能來也。邦分崩離析。而不能守也。而謀動干戈於邦內。吾恐季孫之憂。不在顓臾。而在蕭牆之內也。(開明書店《斷句十三經經文》文本)

1:49:40「以前」的「前」→七星大法:是時間乎?乃空間哉? 1:52:30「以為」、「引以為流觴曲水」的「以為」 單字想複詞 2:1:20 2:2:30我還比冉有(冉求)強 2:7:50〈蘭亭集序〉的字頻,「所、以」二字在本文出現乃第2高頻,各有7次!

1:18:45《中國哲學書電子化計劃》《古逸叢書》本《論語》:3:22:42 3:24:54 3:26:00

季氏將伐顓㬰,冉有、季路見於孔子曰:1:21:00「季氏將有事於顓㬰。」(孔安國曰:顓㬰,宓義之後,風姓之國,本魯之附庸。1:22:55當時臣屬鲁,季氏貪其地,欲滅而有之。冉有與季路為季氏臣,来告孔子也。)孔子曰:「1:24:17求,1:28:50 1:30:03 1:33:12 1:43:02無乃爾是過與?(孔安國曰:1:46:20冉求為季氏宰,相其室,為之聚斂,故孔子獨疑求教也。)1:48:10 1:52:30夫顓㬰昔者先王以為東䝉主(孔安國曰:使主𥙊䝉山也。)1:54:30且在邦域之中矣。(孔安國曰:鲁七百里之邦,顓㬰為附庸,在其域中也。)是社稷之臣也,1:55:58何以為伐也。」(孔安國曰:巳属鲁,為社稷之臣,何用滅之為也。)冉有曰:「夫子欲之,吾二臣者皆不欲也。」(孔安國曰:歸咎於季氏也。)2:2:30孔子曰:「求,周任有言曰:2:5:00『陳力就列,不能者止。』(馬融曰:周任,古之良吏也。2:6:55言當陳才事,度巳所任,2:8:40以就其位。不能,則當止也。)2:11:13危而不持,顛而不扶,則將焉用彼相矣。(苞氏曰:言輔相人者,當持危扶顛,若不能,何用相為也。)2:15:27且爾言過矣。2:15:50 2:28:42虎兕出於柙,龜玉毀櫝中,2:17:09是誰之過與?」(馬融曰:柙,檻也。2:22:20櫝,樻也。2:28:20孫守真按:樻,字形結構換部首,即「櫃」字。非典守者之過邪也。)冉有曰:2:30:46「今夫顓㬰固而近於費,(馬融曰:「固」謂城郭完堅,兵甲利也。2:33:52費,季氏之邑也。)今不取,後丗必為子孫憂。」孔子曰:「求,君子疾夫(孔安國曰:疾如汝之言也。)2:36:11舎曰欲之,而必更為之辞。(2:38:00孔安國曰:舎其貪利之說,2:44:55更作佗辭,是所疾也。)2:45:20𠀉也聞,有國有家者,不患寡而患不均,(孔安國曰:國者,諸侯;家者,卿大夫也。不患圡地人民之寡少,患政治之不均平。)不患貧而患不安,(孔安國曰:憂不能安民耳。民安則國冨也。)2:47:30 2:48:52盖均無貪,和無寡,安無傾。(3:14:22苞氏曰:政教均平則不患貪矣。上下和同不患寡矣。3:15:00小大安寍不傾危也矣。)2:50:44夫如是,故逺人不服,則修文徳以來之。3:38:38既来之,則安之。2:54:44今由與求也,相夫子,逺人不服,而不能来也;邦分崩離折而不能守也。(孔安國曰:民有異心曰分,欲去曰崩,不可㑹聚曰離折也。)2:56:28而謀動干戈於邦內,(孔安國曰:干,楯也。戈,㦸也。)吾恐季孫之憂不在於顓㬰,而在蕭牆之內也。」(鄭𤣥曰:蕭之言肅也。蕭牆,謂屏也。君臣相見之禮,至屏而加肅敬焉。是以謂之蕭牆。後季氏之家臣陽虎,果囚季桓子也。)3:17:27

孔子曰:「天下有道,則禮樂征伐自天子出。3:0:41天下無道,則禮樂征伐自諸侯出。自諸侯出,盖十丗希不失矣。(孔安國曰:希,少也。周幽王為犬戎所殺,平王東遷周始微弱。諸侯自作禮樂,專征伐始於隱公。至照公十丗,3:18:25失政死於乾侯也。)自大夫出,五丗希不失矣。(孔安國曰:季文子初得政,至桓子五世,為家臣陽虎所囚也。)陪臣執國命,三丗希不失矣。(馬融曰:3:19:20陪,重也,謂家臣也。陽氏為季氏家臣,3:4:40至虎三丗而出奔齊也。)天下有道,則政不在大夫。(孔安國曰:制之由君也。)天下有道,則庶人不議。」(孔安國曰:3:5:31無所非議也。)3:5:48 3:20:50

孔子曰:「祿之去公室五丗矣,(3:7:58鄭𤣥曰:言此之時魯定公之初也。魯自東門襄仲殺文公之子赤而立宣公,於是政在大夫,爵祿不從君出。至定公為五丗也。)政逮大夫四丗矣,(鄭𤣥曰:文子、武子、悼子、平子也。)故夫三桓之子孫微矣。(孔安國曰:3:11:28三桓者,謂仲孫、叔孫、季孫也。三卿皆出桓公也,故曰三桓也。仲孫氏改其氏稱孟氏,至哀公皆衰也。)https://ctext.org/library.pl?if=gb&file=88927&page=118



3:7:58清朝影刻本、摹刻本、影摹寫刻本,由避諱字「𤣥、𠀉、寍」3:15:00等可覘識



無乃爾是過與,爾是過, ⑦先抓動詞 「過」1:37:00 1:39:38。「是」是助詞,句式如: 1:33:12 1:38:10

助詞:用於句中,使賓語提前。如:「惟命是從」、「惟利是圖」、「惟你是問」。(《國語辭典》)

這樣的句式。所以「命是從」是「從命」、「利是圖」是「圖利」、「你是問」是「問你」,那「爾是過」呢?是「過你」,即「過錯在你」或「犯錯的是你」。1:40:58「過」是動詞,犯下過錯之義。《漢語大詞典‧過》:

17. 怪罪,責難。1:41:10

▶ 《晏子春秋•問上二六》:「百官節適,關市省征,陂澤不禁,冤報者過,留獄者請焉。」

▶ 《楚辭•九章•惜往日》:「信讒諛之溷濁兮,盛氣志而過之。」

▶ 《史記•張釋之馮唐列傳》:「用王生計,卒見謝,景帝不過也。」

所以「無乃爾是過與」就是「不是要怪你嗎?」1:43:55

無 乃 爾 是 過 與

不 是 你 怪(罪) 嗎

不 是 怪 ④倒序重組 你 嗎

2:36:11 2:38:00

舎曰欲之,而必更為之辞:

舎=舍,即本文之「趣舍萬殊」的「舍」。③字形結構換部首

①斷句 舍、曰欲之 2:41:20

⑥相對位置有相關字義 「曰」對下文的「辞=辭」。

曰欲之,就是說出是自己想要「它」(顓臾)

「舍」即捨棄,謂不採取這種說辭、做法,所以「舍曰欲之」就是「不說自己是想要它的」。



3:27:20 3:28:10 3:29:30

故逺人不服,則修文徳以來之。既来之,則安之。

逺=遠;来=來。

⑦先抓動詞 「來、安」二字為動詞, ⑧找對主詞 3:31:10「來」,其主詞為前文的 上下文(前後文)「遠人」。「安」的主詞則是「修文德」的「人」。二者主詞不同。安之的「之」才是代「遠人」,為代名詞。所以同學菩薩您所附網頁中所云「已經來了,就要使他安定下來。」這個翻譯是可以的。而同學菩薩您的「就安穩的過。」變成「安」的主詞成了「遠人」,就沒有 ⑧找對主詞 了嘛!是不合原文的。而該網頁是用「仁、義、禮、樂的德政」來釋譯「文德」,即是用「仁、義、禮、樂」來註釋原文所謂的「文」,也是可以的。3:36:15所謂的「偃武修文」的「修文」也不過如此。「德」釋為「德政」,而不是個人的「品德」,當然也可以;3:37:04但若也兼指個人的品德修養來感召遠方之人(遠人)來服,也是可以的,不是嗎?就是所謂的「精神感召」或如今天的追明星、哈名人也,德行好了,自然有人去景仰、去追隨。



1:14:20

九陽神功 第5招為什麼叫 ⑤添字還原 用「添」字就是要提醒您是不是被「加油添醋」了。還是「原汁原味」呢?

所以不是「還原」,而是「添加物」就要小心,甚至可能變質成了「篡改」原文,扼殺作者,而自鳴己意了。