[爆卦]ai文字外框還原是什麼?優點缺點精華區懶人包

雖然這篇ai文字外框還原鄉民發文沒有被收入到精華區:在ai文字外框還原這個話題中,我們另外找到其它相關的精選爆讚文章

在 ai文字外框還原產品中有2篇Facebook貼文,粉絲數超過44萬的網紅李開復 Kai-Fu Lee,也在其Facebook貼文中提到, 創新工場AI工程院王詠剛院長的第三篇AI教育遊戲。家長快收藏! 文章來源:微信公眾號半輕人(ban-qing-ren),推薦關注。 ………………………………………………………… AI時代,陪孩子玩什麼遊戲? 之前寫過兩篇《AI時代,陪孩子玩什麼遊戲?》,很久沒更新,倒不是因為這段時間不陪非非玩...

  • ai文字外框還原 在 李開復 Kai-Fu Lee Facebook 的最佳解答

    2020-01-07 11:12:31
    有 303 人按讚

    創新工場AI工程院王詠剛院長的第三篇AI教育遊戲。家長快收藏!

    文章來源:微信公眾號半輕人(ban-qing-ren),推薦關注。
    …………………………………………………………

    AI時代,陪孩子玩什麼遊戲?

    之前寫過兩篇《AI時代,陪孩子玩什麼遊戲?》,很久沒更新,倒不是因為這段時間不陪非非玩遊戲了,主要是其他事情太忙,很少有時間坐下來把思路和文字整理好。

    頭兩篇文章基本是從遊戲出發,首先要好玩,然後才是讓孩子從中悟到一些可以積累下來的東西。兩篇文章的連結:

    《AI時代,陪孩子玩什麼遊戲?(一)》
    https://mp.weixin.qq.com/s/xWjmiWKRa4OOpJ1EFZrJdA

    《AI時代,陪孩子玩什麼遊戲?(二)》
    https://mp.weixin.qq.com/s/mt_meqxB4DjOWj2msSIO5Q

    ▍費曼的“末世”假設

    第三篇打算從一個假設開始講起。費曼(Richard Feynman)在他的《物理學講義》中說,“假如由於某種大災難,所有的科學知識都丟失了,只有一句話可以傳給下一代,那麼怎樣才能用最少的辭彙來傳達最多的資訊呢?”費曼這個假設很科幻,可以和阿西莫夫關於《銀河百科全書》的假想類比。費曼自己給出的答案是,“所有的物體都是由原子構成的”。

    切換到兒童教育領域,其實也有一個類似的假設值得思考:如果因為某種極端情況——比如我必須隱姓埋名去研發秘密武器對抗外星人——我即將和孩子長期分別,只能給孩子留下一句話。怎樣才能用一句話,把家長想傳遞給孩子,讓孩子受益的經驗或知識講清楚呢?不知大家心裏想到的是哪句話?我自己呢,最想跟我們家非非說的一句話是:

    萬事萬物都在變化,沒有什麼千秋萬代,也罕有什麼絕對真理;人,最好學會自己判斷。

    坦白講,這句話小孩子很難聽懂。

    這世界上,有三件事最適合懶人:絕對的價值觀,武斷的思維,從眾的態度。

    我們年輕時,不也喜歡用非黑即白的方法去看待整個世界嗎?看個電影,我當年非要問大人,這電影裏哪個是好人,哪個是壞人;中學時朦朧看見愛情,總覺得幸福的愛情就如天堂一樣全無瑕疵;稍有些歷史觀念時,一會兒覺得英雄與惡魔才是歷史的主角,一會兒又覺得勞動人民創造歷史的說法無比正確;初入職場做碼農時,還習慣性地用黑白二元論評價某種編程語言是絕對好的,某種操作系統是絕對壞的……

    孩子容易被“懶人三件事”裹挾著走,我們就有義務時不時提醒孩子,這世界並不是那麼簡單。陪孩子玩遊戲,跟孩子聊天,或者回答孩子提問時,就是我們潛移默化讓孩子體驗一些類似思維方式的機會。就算以後孩子仍缺少辨識力和判斷力,他們至少會知道這世上並不是所有人都用同一種方式思考問題。

    ▍時有古今、地有南北

    我當年在北大聽過些文史課程。有位文科老師經常用誇張的字體在黑板上寫下“時有古今、地有南北”八個大字。他是想提醒我們,文字、音韻、訓詁乃至詩詞歌賦、天下文章,都會隨著時間、地域變化而改變。倘若連這個基本道理都不懂,非要把此時此地的東西,生搬到彼時彼地,肯定會栽跟頭。

    非非喜歡各種帶有文化、歷史意味的東西。這就給了我很多機會,來提醒他幾千年裏隨處上演的時移世易,滄海桑田。比如,有時候看見相聲或電視劇讓大宋東京汴梁的人說河南話,讓秦皇漢武說陝西話,我就會告訴非非,這東西當笑話聽聽可以,千萬不要認真。認真來說,無論是秦皇漢武,還是李白杜甫,他們的講話如果有錄音流傳,今天九成九的人是聽不懂的。

    非非不信。我就拿他早已背熟的詩詞舉例子。比如張志和的《漁歌子》:

    西塞山前白鷺飛,
    桃花流水鱖魚肥。
    青箬笠,綠蓑衣,
    斜風細雨不須歸。

    按照《漁歌子》的詞牌,“飛”、“肥”、“衣”、“歸”這幾個字押韻。可用今天的普通話讀起來,衣服的“衣”字顯然和其他幾個字不押韻。我跟非非講,人們說話的語音,每隔百十年,就會有非常顯著的變化。張志和這首詞作於唐代,離現在一千多年,每個字的讀音幾乎都與今天的普通話有巨大差異。古時押韻的一組字,到今天就不一定押韻了。

    非非很好奇地問,那我們該怎麼知道古代人是怎麼說話的呢?

    這個問題問得好。就算是語言學家或古漢語專家,也未必能用兩三句話講清楚。但如果只是想給小孩子講明白其中的基本道理,倒也不需要搬出《漢語語音史》之類的大部頭。往前倒數一百年,清末民初人們說話的錄音甚至錄影還能找到一些。比如B站可以找到《清朝人的普通話是什麼味兒》(https://www.bilibili.com/video/av7050107,視頻裏其實都是民國時的錄音錄影片段)。把這種視頻、音頻放給小朋友聽,效果立竿見影。小朋友很直觀就可以明白,短短一百年,口語語音就會有非常明顯的不同,更別說上千年的變遷了。

    再上溯到唐宋乃至秦漢,那時錄音錄影技術還沒發明,當然沒法直接知道古人說話的語音。但我們仍有辦法“猜測”當時每個字的讀音。這裏沒必要講聲韻學的知識。為了跟非非講解語言學家是怎麼猜測古代讀音的,我舉了數獨(Sudoku)遊戲的例子。難度低的數獨遊戲,留白的格子很少,比較容易根據規則和周邊數字猜出答案。難度大的數獨遊戲,留白的格子很多,猜起來要複雜一些。

    猜測漢語古音也類似。我們有一套從漢語發展中總結出來的規則,也有很多有用的提示資訊,比如古詩詞裏互為押韻的韻腳,古代韻書對漢字讀音的分門別類。提示資訊越多,我們的猜測就越有可能接近真相。提示資訊越少,我們的猜測就越像是一廂情願的假想——但每種假想仍需符合規則,至少要能自圓其說。

    猜唐宋音相對容易些,因為提示資訊很多。要猜先秦兩漢音就難不少,因為資料太少。上面提到“衣”和“飛”押韻,這情況不僅在唐朝如此,在先秦的《詩經》中也是如此。《詩經·柏舟》中有這樣的句子:

    日居月諸,胡迭而微?
    心之憂矣,如匪浣衣。
    靜言思之,不能奮飛。

    王力《詩經韻讀》對《柏舟》三個韻腳的注音分別是:微(miuəi)、衣(iəi)、飛(piuəi),微部。這樣的注音未必就能反映先秦語音的真實情況,但已經是語言學家對古代漢語的一種能自圓其說的“擬音”了。網上有不少有趣的錄音,是現代人根據語言學家的擬音體系來模仿古人說話、吟詩的記錄。作為娛樂目的,這些錄音可以放給小朋友聽聽,讓小朋友直觀地感受下語音隨時間而產生的巨大變化。但千萬不要告訴小朋友那就是真正的古音,因為無論是擬音體系還是播音者對擬音的理解,都未必完全準確。

    說到押韻,人們天生就對押韻的句子有感覺,小孩子也不例外。非非小時候就會偶爾說出些押韻的句子,比如“我要吃飯/吃個雞蛋”,然後下意識重複並咯咯大笑。到一年級開始學拼音時,我就有意跟他講些押韻、對仗的小知識。我們倆經常口頭做些末字必須押韻的“打油詩聯句”遊戲,或者完全不講究平仄和工整的“對對聯”遊戲。這些小知識和小遊戲對培養孩子的漢語語感和基本語言素質肯定是有幫助的,也正好能和他們旺盛的創作欲關聯起來。

    比如小孩子都喜歡傳播、創作打油詩,也喜歡用童謠編派人、捉弄人。我們小時候就經常唱“某某某的頭,像皮球,一踢踢到百貨樓。”沒想到非非他們學校裏,也唱類似的童謠,而且具體唱詞和我們小時候還有不少區別。和同年齡孩子一樣,非非特喜歡這些難登大雅之堂的市井謠諺。他還經常和同學比著用自己的話修改這些惡作劇式的順口溜和打油詩。我覺得,只要不是惡意中傷或言辭猥褻,小朋友們玩這些語言遊戲,並沒有什麼不妥,這本來就是童年時光的重要部分。

    有一天,非非回家唱道,“床前明月光,李白睡得香,夢見機關槍,嚇得尿褲襠。”我就問非非,這打油詩是誰想出來的。非非也說不清楚,只知道是在他們班小朋友之間傳唱的。我上網搜搜,果然又查出這童謠的許多類似版本:

    ┃ 床前明月光,李白睡得香,夢見屎殼郎,嚇得尿褲襠。
    ┃ 床前明月光,李白睡正香。忽然瓢潑雨,急呼兒他娘。起來幹什麼?出門收衣裳。
    ┃ 床前明月光,李白想喝湯,喝了一碗湯,尿了一褲襠。
    ┃ 床前明月光,李白睡得香。三更半夜鬼敲門,嚇死路邊過路人。
    ┃ ……

    “床前明月光,李白睡得香”這樣的童謠,在不同時代和不同地域,流傳、衍生出許多不同的版本,反映的不也是語言文字“時有古今、地有南北”的變化規律嗎?

    ▍凡爾納愛好者

    非非愛讀儒勒·凡爾納的科幻小說——當然,目前更多是用“聽書”的方式。最近一年多的時間裏,非非在某電臺APP的有聲小說欄目裏,先後聽完了《海底兩萬裏》《八十天環遊地球》《神秘島》《格蘭特船長的兒女》《從地球到月球》等五六部小說。這些小說裏,他最喜歡的是那幾位有博物學家特質的人物,比如《海底兩萬裏》裏精通分類理論的孔塞伊(Conseil)。

    因為喜歡孔塞伊,非非也特別願意主動去閱讀、記憶動植物分類知識。家裏幾本兒童動物百科、海洋百科都快被他翻爛了。這種特別喜歡深鑽某個領域的現象,在小朋友身上其實還挺常見的,只不過不同小朋友喜歡鑽研的方向不同罷了。非非深鑽動植物分類知識的結果就是,他現在能隨口說出很多我們根本不知道名字的古生物或當代動植物名字,還大致知道這些生物在分類體系的位置。

    我有時擔心,非非會不會被這些繁冗的分類學知識束縛了頭腦。其實,分類學體系本身也不是一成不變的。動植物分類會隨著人們對生物形態認識的深入而不斷更新。特別是進入了基因科學時代後,人們對傳統動植物分類理論又有了非常多全新的認識。另外,針對不同的科研目的,完全可以選擇不同維度對動植物分門別類。可是,我們該如何讓小朋友初步瞭解這些發展的和動態的思維方式呢?

    我和非非玩一種叫“卡片分類”的小遊戲。這遊戲並不強調分類的系統性和專業性,而是強調有沒有新穎好玩,又符合一定邏輯的分類角度。

    比方說,因為非非喜歡動物,我就讓他隨口說出一些動物名字。有一次,他說出了七種動物的名字:大象、座頭鯨、水蚺、烏賊、蟑螂、章魚、鸚鵡螺。這裏面有些動物名字還挺有趣的,比如“水蚺”,我就不太熟悉。非非積極地給我講解“水蚺”的正確讀音是什麼,究竟是一種什麼動物。再比如“蟑螂”確實是非非當時喜歡的動物,他經常莫名其妙地說自己就是一只小蟑螂——小孩子的心思真是搞不懂。不過沒關係,反正都是非非喜歡的動物就行。我把這些動物名字分別寫在彩色便簽紙上,然後讓非非做一個簡單的工作:把這七種動物分成兩類或多類,並告訴我為什麼這樣分。

    不出所料,非非的第一種分類方法就是他熟知的傳統動物分類法。他飛快地把座頭鯨、大象和水蚺分成一類,因為這三個動物是脊椎動物,而其他四個動物,烏賊、章魚、鸚鵡螺和蟑螂,都是無脊椎動物。非常正確。非非甚至還可以進一步告訴我每個動物的細分類別。

    我當然不滿足於這樣簡單的答案。我問非非,這些動物一定要從分類學的大類上才能區分成兩類或多類嗎?有沒有其他的角度可以把它們分開?非非的思維一時還陷在動物分類學的束縛裏,他左思右想,取巧似地想到了一種方法:蟑螂是昆蟲,單獨作為一類;其他的動物都不是昆蟲,合為另一類。

    這真是抄近道的解題法。非非當然還可以把這七種動物分成哺乳動物和非哺乳動物,軟體動物和非軟體動物,等等。但這些方法,不還是圍繞著動物分類學的類目來展開的嗎?

    “你能想像出來的,又奇特、又合理的分類角度有哪些?” 我問非非,“舉個例子,我和你都是哺乳綱靈長目人科人屬智人種,但還是有很多特徵可以將我們倆區分開來,比如我們倆身高不同。”

    聽到這裏,非非開始有了新的思路。稍動腦筋,他就給出了一個出乎我意料的分類方法:這七個動物的名字裏,有三個名字的漢字包含蟲字旁,而另外四個不包含蟲字旁。

    這真是一種有趣的、開腦洞的分類法。我喜歡這樣的思考方式。用這樣的方法,非非一下子找到了好多他以前沒想過的分類角度,比如按照動物的生活空間,把七種動物分成海洋動物和非海洋動物,按照動物的身長和體重,把它們分成大型動物、中型動物、小型動物,按照動物最早出現的時間,把動物分入不同的地質年代,等等。

    分完了動物,我又鼓勵非非說出幾本圖書的名字,然後對圖書做分類。他列出了六本書:《海底兩萬裏》《西遊記》《史記》《論語》《資治通鑒》《毛主席語錄》——我也不知道他當時為什麼列出這六本,只是如實記錄我們的遊戲過程。

    對於這六本書,非非首先想到的是將六本書分成三類,語錄體裁的書有兩本,歷史書有兩本,小說有兩本。這個分類方法中規中矩,沒太多新意。

    我鼓勵非非探索新的分類方法時,非非又做了一次出乎我意料的選擇。他十分肯定地說,《西遊記》和《海底兩萬裏》這兩本小說,是虛構的故事,而其他四本書,講的都是真實世界裏的事情。七八歲的小朋友能有這樣的認知,還挺讓我驚訝的。當然,我不是特別肯定,非非是不是從學校裏知道了“虛構類圖書”的說法。但我還是主動跟非非講,在很多實體或網上書店裏,流行圖書就是按照“虛構類”和“非虛構類”來劃分的。自己的分類法居然與很多書店的通行做法類似,這讓非非很得意。

    接下來,非非又提出了一個新的分類界限:《論語》《史記》《資治通鑒》是元朝以前撰寫的,而其他三本書是元朝以後撰寫的。我不太知道非非是怎麼想到元朝這個分界點的。如果要找一個時間點,正好把六本書分成三本一類,那至少得知道《資治通鑒》是宋朝作品,《西遊記》是明朝作品。我不是很確定,非非是不是碰巧說對了分界的朝代。

    非非提出的下一個分類方法是按作者的國籍來分,中國作者一類,外國作者一類。這個思路相對普通些。

    非非給出的一種開腦洞的分類方法仍然是從書名漢字出發的,就是按照書名漢字的個數,將六本書分成四類。這分類法雖然沒啥用,但足以讓小朋友感受到發現新視角的成就感。

    趁著玩遊戲,我也給非非多少講了講圖書分類的歷史沿革,比如劉向劉歆父子的《七略》,後來的四部分類法,中國圖書館分類法,美國國會圖書館分類法等等。不同地方、不同歷史階段,人們對圖書分類——其實是對人類積累的全部知識進行分類——的認識也大為不同。這也是一種“時移世易”。

    以後,等非非再大一些,這種分類小遊戲還可以延展到更高級的階段。為一個真實存在的知識體系建立完整、高效的分類體系並不容易,其間存在著很多必須處理的歧義問題、多義項問題、多重歸屬問題等等。更高級的知識體系梳理和建構方法,自然也存在著先天的多樣性,必須根據實際應用的需要來權衡、選擇。

    ▍用選擇與權衡來應對變化

    小朋友看問題容易絕對化。有時候家長跟孩子交流,也習慣性地帶入童年思維,用絕對化的方式講問題。比如我們經常說“上學一定要聽老師的話”,但真遇到了老師教學中不准確的地方,該怎麼跟孩子解釋呢?再比如,我們經常簡單地告訴孩子“氣溫在零度以下時就會下雪”,但若真在生活中遇到零度以上下雪,或零度以下降雨的事情,又該怎麼跟孩子說明呢?生活中為了方便,說些抄近路、省去限制條件的話,當然無可厚非。但孩子成長過程中,還是應該想辦法讓他們認識到,這個世界大多事情是有條件的。一個條件的細微變化,就有可能引起事物本身的劇烈變化。絕對的、無條件的事情是極少存在的。

    另一方面,小朋友也較少理解什麼是事物或條件間的相互影響、相互制約。比如非非三歲多時,有一次在臨睡前提出,他既想睡到自然醒,又想第二天起來看日出。可如果不叫他,他是無論如何也沒法在日出前起床的。我們建議他二選一,或者看了日出再接著睡,或者放棄看日出,他就覺得我們是在欺負他,大哭大鬧起來,甚至吼著要“讓太陽晚出來一會兒”。看日出和自然醒不能兩全,這種事物相互影響,需要權衡利弊做抉擇的事情在生活中有很多,小朋友們需要的是習慣它們而不是厭惡它們。

    有時候,我會有意識地設計一些小問題,主動讓非非做一點選擇或權衡。比如,假設非非要在學校的跳蚤市場上銷售自己用彩色瓦楞紙折的小玩偶,玩偶的定價越高,預期的銷量就越少,玩偶的定價越低,預期的銷量就越多。那麼,非非該為自己的玩偶定什麼樣的價錢,才能取得最大的銷售收入呢?這問題和我們在第一篇中講過的極值問題,擁有類似的數學核心。比如,我們可以人為設定,玩偶的銷量和價格之間的關係是:

    銷量 = 10 - 價格

    於是有:

    銷售額 = 價格 x (10 - 價格)

    這就還原成了周長為10的矩形,其面積在什麼情況下最大的極值問題。當然,其他類似的數學模型也可以建立銷售額和價格的關係。但具體採用什麼數學模型或什麼函數不重要,非非只要在數值計算的層面上,能用1到10這樣的簡單整數代入計算,然後觀察結果的變化規律就行了。數值計算很容易發現,在1到10的價格區間裏,既不是價格越低銷售額就越高,也不是價格越高銷售額就越高。非非必須從觀察數據出發,選擇出一個合適的價格,以獲得最大的銷售額。

    還有一個更直觀也更有趣的場景是攝影。現在的孩子很小就能拿手機拍照。而拍照本身,就是一個不斷選擇參數、做各種權衡與折中,以得到最佳效果的過程。有空的時候多陪孩子玩玩攝影,既可以讓孩子體驗不同條件對拍攝結果的影響,也可以讓孩子自己動手嘗試創作過程裏的選擇和權衡。

    比如在iPhone手機的缺省相機程式裏,就算不去精確控制拍攝參數,我們也必須針對拍攝對象,選擇是拍“照片”“人像”還是其他模式。這選擇很簡單,其中也有很多好玩的事情可以讓孩子體驗。比方說,小朋友嘗試幾次之後就很容易知道,用“人像”模式拍照,iPhone或其他主流手機都會對目標周圍的背景進行虛化,以突出人物主體。這其實是用演算法模擬了專業相機在大光圈時的淺景深效果。

    但是,影響照片景深大小的,只有光圈(或用人像模式模擬大光圈)這唯一的因素嗎?當然不是。我們可以指導小朋友用普通的“照片”模式做一個小實驗:把手機移動到距離要拍攝的主體特別近的地方,用手指觸碰取景螢幕上的目標主體以保證對焦正確,然後拍下來的照片,就會呈現類似大光圈時的淺景深效果。

    從這樣的小實驗裏,小朋友完全可以總結出,影響照片景深的不止有一個因素。相機鏡頭距離前景目標的距離,也可以用來控制照片的景深。

    拍照過程中,有很多可以設置的參數,他們交叉影響著諸如景深、曝光度、噪點數量、清晰程度等各種結果。這些參數,完全可以放開手讓小朋友自己去體驗、摸索。這種遊戲的目的並不是教小朋友學習專業攝影,而是讓小朋友從玩照相中體驗到條件與結果之間動態、複雜的因果關係。

    在iPhone缺省相機程式裏,點擊取景畫面,然後用手指移動黃色方框旁邊的小太陽圖示,可以直接改變照片的曝光程度,有意得到過曝或欠曝的圖片,或者在手機的自動測光給出的結果過亮或過暗時手動修正。如果用手指按住“照片”“人像”這一行的模式設置按鈕,往上輕輕一劃,還可以拉出更多可以控制閃光燈、夜景模式、實況模式、畫幅、濾鏡的按鈕來。

    我經常鼓勵非非在手機相機程式裏隨便嘗試,讓他自己體驗對照片結果的不同控制手段,然後再鼓勵他用手機相機做各種自由發揮式的“創作”。這種創作更像是遊戲,不追求結果是否好看,只是讓小朋友盡情體驗變化的樂趣。

    對大一點的小朋友,如果有機會向他們介紹專業相機曝光所依賴的“光圈”“快門”“ISO”這三個神奇的參數,那會是一個更有意思的體驗選擇與權衡的遊戲。簡單說,影響相機曝光的“光圈”“快門”“ISO”三個參數構成了一個互相牽制、互相依賴的“神奇三角”:

    為了曝光準確,光圈調大一些,快門速度就要調快一點,或者把ISO調小一些;假如快門速度調慢些,光圈就要相應小一些,或者把ISO調小些……為了完成正確曝光,三個參數的取值可以有許多種組合方式。究竟選取哪個組合方式,這取決於我們想把照片拍成什麼樣:是景深小一點,還是景深大一點?是想把運動瞬間凝固起來,還是讓運動物體拖出一個模糊的影子?是讓照片更細膩,還是讓照片的顆粒感更強?

    佳能有個網頁版的小遊戲,不需要專業相機,就可以體驗光圈、快門、ISO三者間的關係,直觀地感受三個參數對成像的影響。推薦喜歡攝影的家長和小朋友一起玩一玩。小遊戲的網址是:http://canonoutsideofauto.ca/play/

    ▍什麼是“聰明”

    非非上一年級時,有一天跟我們說:“我發現我們班上女生都比較聰明。”

    我問他:“為什麼呀?”

    非非說:“因為女生上課時回答問題比較快,考試時好多題目都能答對。”

    非非是個資質普通的小朋友,和很多小朋友一樣貪玩,沒耐心,還特別排斥自己不喜歡的事。我們很少跟他討論同齡小朋友間誰更聰明的話題。非非既然這麼問,也許他做過一些認真的思考。

    我引導他說:“確實,回答問題快、考試答題好的人是挺聰明的。可聰明其實有很多種,不同的小朋友會在不同事情上表現得很聰明。有的小朋友畫畫很好,有的小朋友愛打籃球,有的小朋友擅長交朋友……這些都是聰明的小朋友。”

    非非說:“我特別喜歡歷史,可以給老師、同學講很多歷史小故事。我也喜歡科學小實驗,每次科學課上我都積極發言。我是不是也很聰明呀?”

    “當然啦!”我誇獎他說。

    我當然希望非非越來越聰明。但孩子是否真有天賦,在哪個方面有天賦,這是不能強求的。不加分辨地一味灌輸知識技能、揠苗助長肯定不行。我之所以經常花時間跟他玩遊戲,陪他一起聊科學和歷史方面的小故事,主要是想依著孩子自己的興趣愛好,讓孩子在遊戲和交流中積累自己的思維方法,用正確的視角去觀察變化的世界。

    人的一生有太多事情需要經歷,有太多變化需要適應。家長與其把時間都花在教孩子某種具體技能上,還不如多讓孩子開開眼界,看看這個世界的豐富多彩,體驗這個世界的千變萬化。惟其如此,孩子未來在獨立面對這個世界時,才會更從容、更積極、更自信也更聰明。

  • ai文字外框還原 在 紀老師程式教學網 Facebook 的最佳貼文

    2015-06-09 08:44:01
    有 112 人按讚

    [好站分享] GitHub 上的瘋狂 C++ 相關資源清單:Awesome-C++

    逛國外網站這麼久,很少碰到有資源齊全到讓我倒抽一口涼氣的...這個作者對 C++ 很有愛啊~~

    Awesome-C++,是掛在 GitHub 上的一個 C++ 資源清單。收集了 C++ 相關的函式庫、軟體、書籍、文章...還推薦作者覺得也不錯的其它清單。連結如下:

    https://github.com/fffaraz/awesome-cpp

    一旦點進去,你會被裡面滿滿的超鏈結,把你的腎上腺素濃度打到最高... XD。如果您平常工作與 C++ 相關,您絕對不能錯過這份清單。我簡單列出一下這份清單有什麼:

    (以下文長,是寫給英文苦手的讀者看的。英文沒啥問題的朋友,建議直接看原文即可)

    一、函式庫與框架

    * 標準函式庫(Standard Libraries):
    C++ 原生函式庫、POSIX、ISO、GNU 各家出品的標準函式庫都有。

    * 程式框架(Frameworks)
    「框架」比「函式庫」規格大一點。一般來說,「函式庫」幫你把常用的程式寫好,你只要叫用就好了,是一種幫助你加速完工、但並沒帶來任何新功能的一堆程式碼。「框架」則是替原始 C++ 帶來一些令人驚艷的新功能。不過這種分法,並非絕對的。

    * 人工智慧(Artificial Intelligence, AI)相關框架與函式庫
    想要催得動這一坨東西,得有點 AI 背景。否則你可能不知道函式庫提供給你「深先搜尋(Depth-first Search)」與「廣先搜尋(Width-first Search)」這些函數怎麼讓那堆冷冰冰的硬體多一點智慧。

    * 非同步呼叫所使用的事件佇列(Asynchronous Event Loop)
    一般來說,一個程式呼叫另一個程式,「叫人的」得等「被叫的」把事情做完,才能繼續進行下一步。就像一個經理眼睛盯著新手做事、沒辦法回到辦公桌做自己的事一樣,這種模式叫「同步呼叫(Synchronous Call)」。比較好的作法,是你交代完新手該做什麼,就離開回去做自己的事,等新手做完了,再來報告說「我做完了」,這種模式叫「非同步呼叫(Asynchronous Call)」。不過要能做到「非同步」,「叫人者」與「被叫者」之間,得有「事件(Event)」這個機制,讓兩者互相溝通該做的事,以及是否完工。此處提供的,都是讓 C++ 能達成「非同步」機制的函式庫或框架。

    * 音效(Audio)相關框架或函式庫
    這裡放的,都是讓你的 C++ 能做到讀取音效檔(如:mp3),並用程式碼對該檔進行剪輯、混音...等動作的函式庫或框架。

    * 生物(Biology)相關框架或函式庫
    這邊的函式庫,可以讓您用 C++ 比對兩條 DNA 序列相似度有多高,或者從一大堆不同樣本的 DNA 中,找出哪條 DNA 與哪條可能有親緣關係...等。

    * 命令列(Command Line Interface, CLI)相關框架或函式庫
    用這邊的函式庫,可以讓您在命令列跑出一些令人驚艷的效果。如 NCurses 就是一套能在命令列之下,用文字盡量模擬出下拉式選單、按鈕...圖形界面的感覺。

    * 壓縮(Compression)相關函式庫
    讓您不必瞭解檔案壓縮原理,會叫用相關函數就能做到檔案壓縮。

    * 平行處理(Concurrency)相關函式庫
    讓 C++ 也能輕易做到同時處理多件事情的函式庫。

    * 資料結構相關函式庫(Containers)
    提供資料結構內的 B-Tree 與 Hashmaps 等架構,讓 C++ 輕鬆取用。

    * 加密(Cryptography)相關函式庫
    提供加密解密相關函數。

    * 資料庫(Database)相關函式庫
    讓 C++ 可以用幾道命令,輕鬆接取 MySQL、MongoDB...等知名資料庫內的資料。

    * 除錯、測試、效能(Debug)相關函式庫
    雖然原文只用了「Debug」這樣的簡單字眼,但這一區的函式庫包含「單元測試(Unit Test)」、「效能測試(Benchmark)」、「記憶體用量追蹤(Memory Tracking)」等功能的函數。讓您的程式在還沒跑之前,就接受嚴格檢驗,降低發生錯誤的機會。

    * 遊戲引擎(Game Engine)
    提供一些函數,讓您輕鬆讀入 3D 建模軟體(如:Maya, 3D Studio...)做出來的模型與動畫。並在程式內特定事件(如:碰撞)發生時播放。也提供打光(Shading)、物理函數(如:彈跳、碰撞)...等方便的程式供您取用。這些東西讓您在寫遊戲時,能以更快的效率產出結果。

    * 圖形界面(Graphical User Interface, GUI)
    讓您用 C++ 建立漂亮的視窗、對話框、核取框、下拉式功能表...等圖形界面。

    * 圖形(Graphics)相關函式庫
    這部分多與遊戲引擎搭配,提供 2D 圖形處理或 3D 光跡追蹤(Rendering)等「外觀美化」的函數。讓您的遊戲角色或場景,看起來更栩栩如生。

    * 影像處理(Image Processing)相關函式庫
    包含讀入/繪出各式圖檔(PNG、JPG、GIF...)、光學字元辨識、電腦視覺、讀入/播放各式影片(MP4...)等函數。

    * 國際化(Internationalization)相關函式庫
    讓您用 C++ 寫出來的程式,可以輕易支援各國語言(當然,各國語言要事先請翻譯社先翻好,這邊只是提供語系切換的機制)。

    * 行程間通訊(Inter-Process Communication, IPC)相關函式庫
    兩個跑起來的獨立程式(如:兩個執行檔)想在執行過程中交換資料,稱為「行程間通訊」,簡稱 IPC。IPC 雖然不至於難如登天,不過要做到,手續還是很瑣碎的。這邊的函式庫提供好用函數,讓兩個行程交換資料時,變得比較容易。

    * JSON 支援相關函式庫
    JSON 原文是 JavaScript Object Notation。是一種用「純文字」來表示「資料」的方法。如一筆「李大華、35 歲、手機 0937555666」的資料,用 JSON 表示是這樣的:
    [
    Name: "李大華",
    Age: 35,
    Mobile: "0937555666"
    ]
    之後可以讓這樣的資料,流通於瀏覽器與伺服器之間。而 JSON 函式庫,可以快速幫您分析 JSON 表示的資料,將它還原成您要的格式。

    * 日誌(Logging)支援函式庫
    日誌在「系統稽核」中,是很重要的功能。系統得把「什麼人、等級多高、做了什麼事、何時做的、對哪部分做的、從哪個 IP 過來...」忠實記錄下來。萬一系統出事了,我們就能追查可能是誰搞的。類似「監視器」的功能。這部分的函式庫,可以讓 C++ 輕易做到「日誌」功能,您不用傷腦筋日誌功能該怎麼寫,它已經幫您寫好了。您只要會用就行。

    * 機器學習(Machine Learning)相關函式庫
    提供如「類神經網路」、「電腦視覺」等進階函式庫,讓您的 C++ 程式有少量人類視覺與思考能力(真的很少量,請不用有太高期待)。

    * 數學(Math)相關函式庫
    一些線性代數、矩陣運算...等相關數學函數。

    * 多媒體(Multimedia)相關函式庫
    如:影音串流...等相關函數。

    * 網路(Networking)相關函數
    提供各種低階網路協定相關函數。如:TCP/IP、HTTP、點對點傳輸、非同步通訊、以及一些與 Facebook 橋接的相關函數。

    * 物理模擬(Physics)相關函數
    這部分也可以大量用於遊戲程式設計。主要提供一些函數,用來模擬自然界各種物理現象。如水流、風吹、碰撞、彈跳...等。

    * 機器人控制(Robotics)相關函數
    一堆方便你控制或模擬機器人行為的函數。

    * 科學運算(Scientific Computing)
    一些在科學上比較用得著的數學運算。如工程數學、傅立葉分析...等。

    * 腳本語言控制(Scripting)
    包含一些能讓 C++ 與各種腳本語言(JavaScript、PHP、Perl...)橋接的函數。

    * 序列化控制(Serialization)
    首先解釋一下何謂序列化。序列化可以把程式執行到一半的樣子,如數保存於硬碟中,甚至於可以關機。之後可以把序列化的資料「反序列化」,將它「解凍」還原至記憶體繼續跑,就像當初跑到一半被「冷凍」當下再往下執行一樣。這邊提供許多 C++ 序列化的函式庫。

    * 影片處理(Video)
    可以讀入/播放各種影片檔的函式庫。

    * 虛擬機(Virtual Machines)
    這邊提供一些用 C++ 寫出來的「輕量級」虛擬機。所謂虛擬機,是用軟體模擬出硬碟、處理器、記憶體、螢幕,工程師可以在虛擬機內安裝另一個作業系統,就好像安裝作業系統至真實機器一樣。

    * 網頁應用軟體框架(Web Application Framework)
    集合了一些用 C++ 寫出來的 WWW 伺服器、或開發網頁時用得上的函式庫等。

    * XML
    如果你希望教會你的 C++ 程式「讀懂」一個 XML 檔在講什麼,這邊提供了一堆 XML 解析器(XML Parser),方便您分析從遠方伺服器傳來的 XML 檔到底想表達什麼樣的資料。

    * 其它(Miscellaneous)
    一些無法分類的東西,通通塞在這裡。大部分是一些小型的函式庫或 C++ 與其它語言的橋接軟體。

    二、C++ 相關軟體

    * 編譯器(Compiler)
    各類把 C++ 原始碼編成 0 與 1 機械碼的軟體。

    * 線上編譯器(Online Compiler)
    懶得安裝編譯器的話,現在有一堆線上的編譯器。你上傳原始碼,它會編成機械碼後,丟還個執行檔給你下載。

    * 除錯器(Debugger)
    一些有名的 C++ 除錯器。當你的程式無法執行時,可以靠它找出到底錯在哪裡。

    * 整合式開發環境(Integrated Development Environment, IDE)
    IDE 就是把文字編輯器(Editor)、編譯器(Compiler)、除錯器(Debugger)...等軟體整合成一體的軟體。您可以不離開該環境,就能寫碼、編譯、除錯、執行...。

    * 軟體建構系統(Build Systems)
    簡單說,就是把一些瑣碎動作事先安排好、可以在程式碼修改後,下達一條指令(如:「建構!」),就可全自動一條鞭地從編譯、測試、備份、安裝...一口氣完成的系統。

    * 原始碼靜態分析軟體(Static Code Analysis)
    丟入原始碼,可以幫你找出哪段程式可能發生錯誤,或者可能造成效能低下。也能找出完全沒被叫用到的原始碼,提醒您刪除。甚至於可以把您的程式碼重排成符合特定格式,統一多人寫碼風格時很有用。

    三、其它資源

    * API Design 文件
    * 有用文章(Articles)
    * 推薦書籍(Books)
    * 寫碼風格(Coding Style)
    * 演講(Talks)
    * 影片教學(Videos)
    * 有用網站(Web Sites)
    * 有用部落格(Weblogs)
    * 其它 Awesome C++ 姊妹作(Other Awesome Projects)

    四、其它也很棒的清單(Other Awesome Lists)

    能看到這行字的,給您拍拍手!辛苦了!希望今天分享的內容您會喜歡!也請您不吝按讚鼓勵,或分享給您 Facebook 的親朋好友!