Linux中國

《代碼英雄》第三季(7):與機器對話

本文是《代碼英雄》系列播客《代碼英雄》第三季(7):與機器對話音頻腳本。

導讀:創造一台會思考的機器在 20 世紀 50 年代似乎是科幻小說。但 John McCarthy 決定把它變成現實。他從一種叫做 LISP 的語言開始。Colin Garvey 介紹了 McCarthy 是如何創造出第一種人工智慧語言的。Sam Williams 介紹了早期人們對思考機器的興趣是如何從學術界蔓延到商業界的,以及在某些項目沒有兌現承諾之後,漫長的人工智慧寒冬是如何最終到來的。Ulrich Drepper 解釋說,人工智慧的夢想超出了當時硬體所能提供的範圍。

但硬體每天都在變得更強大。Chris Nicholson 指出,今天的機器有足夠的處理能力來處理人工智慧的資源需求 —— 以至於我們正處於人工智慧研發的革命性復甦之中。最後,Rachel Thomas 確定了 LISP 之外的人工智慧語言 —— 證明了人工智慧現在正準備做的不同類型的任務。

00:00:05 - 播音員

卡斯帕羅夫非常慌亂。雖然已經拼盡全力,但是他意識到,他已經輸了。

00:00:12 - Saron Yitbarek

1997 年的春天,國際象棋冠軍 加里·卡斯帕羅夫 Garry Kasparov 輸給了計算機程序「深藍」。對於機器智能來說,這是歷史上的關鍵時刻。對於某些人來說,這是一次生存危機,是對人類智慧至上的挑戰。但是,對於世界上的技術專家來說,這是另一種意味上的里程碑,是 人工智慧 artificial intelligence AI)領域的一次飛躍。這表明,想要真正的智慧機器誕生,或許不是太過於瘋狂的夢想。

00:00:47 - 播音員

去賦予一台機器思考的能力仍然還是夢想,距離實現夢想還需要很多年的努力。此外,還需要做出不少驚人的突破。

00:00:56 - Saron Yitbarek

我們是如何抵達這一步的?是什麼導致了卡斯帕羅夫那場著名的失敗?我們從哪裡來,又該到哪裡去?我是 Saron Yitbarek,這裡是《代碼英雄》,一檔來自紅帽的原創播客節目。在本季,我們都在探索編程語言的奧秘,揭開他們的歷史和發展潛力。這一期讓我們關注人工智慧。你會使用什麼語言,來讓你的機器擁有自己的思想呢?我們的編程語言如何幫助我們抵達「深藍時刻」,甚至是更遠的地方?什麼樣的編程語言能最適配會思考的機器?這是我們半個多世紀以來一直在嘗試解決的問題。因此,我們的故事要追溯到 1940 年代,那時,人工智慧這個辭彙還沒有被創造出來。

00:01:59:

回顧二戰結束是如何結束的,我們有這樣一種感覺,那就是技術幫助同盟國贏得了戰爭。人們樂觀地認為,科技可以成就一切。整整一代人都相信計算機的力量。在這一代人中誕生了人工智慧的教父,一位出色的數學家 —— 約翰·麥卡錫 John McCarthy ,他從根本上改變了我們與機器交談的方式。我想知道他的思想的起源,以及範式的轉變是如何發生的。我的意思是,對於初學者來說,當麥卡錫和他的同事們在想像智能機器的未來時,他們到底想像了什麼?

00:02:43 - Colin Garvey

哇,這是一個好問題。

00:02:46 - Saron Yitbarek

我和 Colin Garvey 聊了聊。他是 倫斯勒理工學院 Rensselaer Polytechnic Institute 科學與技術研究系的歷史學家。以下是我們的一些聊天內容:

00:02:58 - Colin Garvey

麥卡錫對提出 AI 究竟是什麼這件事情非常謹慎。不過,舉個例子來說,他可能在他最著名但並未實現的程序中描述過(這只是一個思路),人工智慧是一個 接受建議者 advice taker 。接受建議者這個說法由麥卡錫於 1960 年的名為《 具有常識的程序 Programs with Common Sense 》的論文中提出的。在開始的時候,你覺得接受建議者可能是一個會學習的機器人,這是它被發明的本意,它算是一個可以接受建議的家用機器人。你說:「不,你這樣做是錯誤的,要那樣做。」它就會明白你的意思。

00:03:44 - Saron Yitbarek

那很有幫助。

00:03:45 - Colin Garvey

可能會有幫助。那時候接受建議者要實現的目標是,從辦公室導航到機場。換句話說,將從辦公室去機場這個建議,正式化成接受建議者機器人能夠接受的程序以達成目的,得出從辦公室前往機場的一系列程序。它把人類的語言正式化為一系列的合乎邏輯的陳述,即需要根據現在的情況進行合適的抉擇,以達到把當前情況轉變為理想情況的目標。他將這些想法偽代碼化,這實際上是 LISP 的起源。然後在接下來的幾年裡,LISP 作為他想法的實現,或者說實現他想法的語言出現了。

00:04:39 - Saron Yitbarek

麥卡錫的 LISP 語言改變了遊戲規則。它不僅能幫助機器理解命令,還能幫助機器理解一些常識性的邏輯。麥卡錫發現,他可以編寫條件表達式,即體現規則的代碼,而不是僅僅是直白的命令。實際上,LISP 有一堆重大的編程突破,條件表達式、垃圾回收、遞歸等等。LISP 在代碼和數據中都使用了列表。這是一個簡單但具有深遠的影響的更改。這是語言範式的轉變,所有這些為麥卡錫本人稱之為「人工智慧」的整個領域打開了大門。想像一下,在你和機器說話的時候,並不需要把每一個細節都給編寫好。你可以讓那台機器自己來進行推斷和推理。麥卡錫希望通過他的 LISP 語言,給機器一種智慧。好了,回到我和 Colin Garvey 的聊天。

00:05:41 - Colin Garvey

LISP 是人們編寫高級計算機語言的嘗試的過程中,誕生的精華。

00:05:47 - Saron Yitbarek

這很有意思。因為我的下一個問題是 LISP 和人工智慧之間的關係。接受建議者第一次描述了 AI 的功能,它聽起來也像是 LISP 的開始。能跟我聊聊更多 LISP 和人工智慧之間的關係嗎?

00:06:04 - Colin Garvey

當然。這些早期的人工智慧研究人員面臨著一件事,那就是他們還在使用打孔卡進行編程。也許這些早期的編程人員,知道如何進行機器碼級別的編程,這是非常困難且耗時的工作。因此,你需要一個更高級的編程語言,以便你可以用更加接近人類語言的方式編程。所以,像 LISP 這樣,用列表的形式給出指令的語言 —— 這也是其名稱的來源,基於列表的處理(LCTT 譯註,LISP 全稱:「LISt Processing「)。從某種意義上來說,這樣用列表給出的指令更加接近於人類語言,因為他們基本上都可以用通順的邏輯去理解。因此,如果你可以讀懂 形式邏輯 formal logic ,那麼基本上可以看明白 LISP 程序,或者任何基於邏輯的編程語言的程序,並對於代碼中發生的事情有著更好的了解。

00:07:10 - Saron Yitbarek

所以 LISP 真的幫了大忙……嗯,我的意思是它幫助我們將我們的想法給予人工智慧,讓我們能夠朝著實現人工智慧努力,有朝一日總能達成這個夢想。不過這也讓我想知道在那個時期,「智能」到底意味著什麼?所以,如果我們回到 50 年代,在那個時間點上,什麼是「智能」?人們是如何定義它的?因為 LISP 最初為 IBM 704 開發的,它每次做的其實只是一件事。看起來並不是很「智能」。當時的人們是如何看待「智能」的呢?

00:07:43 - Colin Garvey

有關「智能」的定義,這自然非常有爭議的。就我個人,從一個普通大眾的角度而言,他們的概念是非常狹窄的。但是在當時,廣泛認可的定義是:能夠執行被認為有智力的舉動的能力。但持這個觀點的這些人實際上是數學家、邏輯學家和計算機程序員。我的意思是,說句粗俗的話,下棋的能力被認為是智力的明確標誌。這一代早期的 AI 人更喜歡迴避這個問題,並說,「嗯,哲學家們還沒有就什麼是『智力』達成一致,但如果我們製造出一台能下棋的電腦,我想我們都同意這是『智能』。「

00:08:40 - Saron Yitbarek

不管怎樣,這是一個起點。就像嬰兒的第一步。

00:08:45 - Colin Garvey

麥卡錫有一個夢想,讓機器可以具有常識,並像人一樣聰明。本質上來說,你可以和它們交談。他開始創造一種程序語言來實現這個夢想。這就是 LISP。它模仿了人類思想的某些方面,尤其是邏輯思維能力,並使得利用計算機放大或擴展這些思想特徵成為可能。所以從數學家的角度來看,他已經在實現智能機械的道路上走得很遠了。

00:09:32 - Saron Yitbarek

Colin Garvey 是倫斯勒理工學院科學技術研究系的歷史學家。

隨著 LISP 的推進,發展人工智慧的新機會開始出現,LISP 是這一新領域的標準語言。麥卡錫離開麻省理工學院去斯坦福大學工作後,麻省理工學院的其他工程師繼續從事 LISP 工作。他們把麥卡錫的語言改進成一種叫做 Maclisp 的方言版本,甚至開發了 LISP 操作系統。看起來麥卡錫對人工智慧未來的夢想正在成為現實。1968 年,麥卡錫甚至和蘇格蘭國際象棋大師 大衛·利維 David Levy 打賭。麥卡錫打賭,10 年後,電腦將能夠在國際象棋比賽中贏過利維。但是,如果事情進展得那麼順利,那就不是《代碼英雄》的故事了。那時候麥卡錫還不知道,人工智慧的冬天就要來了。

00:10:45 - Saron Yitbarek

當麻省理工學院的那個基於 LISP 的操作系統,從學院衍生到公司後,情況開始發生變化。其中的一家公司 Symbolix 推出了 LISP 機器,甚至從 MIT 的 AI 實驗室 AI Lab 僱用了 14 名員工,而且更不切實際的研究不再是重點。

00:11:25 - Sam Williams

這些公司原本都來自 AI 實驗室。

00:11:31 - Saron Yitbarek

這是記者 Sam Williams,他寫了一本名為《Arguing AI》的書。

00:11:36 - Sam Williams

Symbolix 可能是最突出的一個。它得到了最多的關注、最多的風險投資。約翰·麥卡錫和他的門徒們推動了所有的創新。我想,這只是一個案例。在 70 年代末期,人們普遍認為:「好吧,我們已經在學術界做了我們能夠做到的事情,讓我們在商界脫穎而出,讓私營企業為我們投資。」

00:12:01 - Saron Yitbarek

這在當時的環境下可以理解。那時AI 似乎即將起飛,有利可圖。

00:12:07 - Sam Williams

那時候的算力便宜到中型企業也可以購買。因此,我認為許多公司看到了一個機會:「那裡有一個富有潛力的市場,我們可以進入這個市場,我們可以把關於人工智慧的產出賣給那些想要具有全球競爭力的企業。」他們讓投資者為這個想法大肆投資。在 80 年代初期,大量的資金湧入該領域。

00:12:29 - Saron Yitbarek

我們可以討論一下為什麼這個熱潮後來乾涸了。但是,我現在可以肯定的一點是,事情已經被大肆炒作了。

00:12:39 - Sam Williams

大量資金流入。人們認為市場非常成熟。

00:12:44 - Saron Yitbarek

從一定來說,大量熱錢湧入人工智慧領域造成的繁榮,就像世紀之交時網路泡沫的前奏。

00:12:52 - Sam Williams

這在技術發展史上並不少見,人們過度投資,但最終公司未能兌現他們的希望。所以,資金供應陷入困境。公司必須通過老式的方式賺錢 —— 去拉客戶,去生產東西。

00:13:08 - Saron Yitbarek

所以那時,麥卡錫的夢想轟然崩潰,回歸了現實。Williams 描述了隨後的人工智慧冬天。

00:13:16 - Sam Williams

你會看到像 Symbolix 這樣的公司市值上升到 1 億美元,然後短短几年後就申請破產保護。在那時候有很多這樣的人:「在 10 年內,我們將做到這一點,在 5 年內,你會看到這個。5 年後,你就會看到這個。」這些傢伙是投機者,或者是想要從五角大樓或任何其他地方獲取更多資金的學者。因為這種危險的炒作,過度炒作,讓人工智慧走上歧途。

00:13:48 - Saron Yitbarek

人們對於人工智慧的興趣崩塌了。基礎設施不到位,或許計算速度也不夠高,這使一切努力都變成了徒然。但無論如何,這之中的指導思想是正確的,它只是生在了錯誤的時代。到了 80 年代末,人工智慧研究日漸減少。

00:14:06 - Sam Williams

我認為人們脫離人工智慧這個領域的原因是,它失去了最初吸引他們進入其中時的冒險性。它曾處於技術領域的最前沿。在西海岸,很多人的精力被吸引到製造個人電腦上。從 40 年後的今天看來,試著讓電腦進入美國每個家庭,比幫助財富 1000 強的企業做出更好的決策,是一個更引人注目的概念。

00:14:39 - Saron Yitbarek

Sam Williams 是《Arguing AI》的作者。我們在這裡描述的是一個計算機編程的世界,它被一分為二:一方面是約翰·麥卡錫這樣的人,他們試圖使用 LISP 等新型語言來探究智能的本質;另一方面,也不可避免地存在著另一群人,他們更專註於解決實際問題,試圖讓那些願意為其服務付款的企業輕鬆一些。現實情況是,世界上的那些約翰·麥卡錫們,那些抽象的夢想家們,並沒有太多機會在人工智慧的可能性上進行深入探索。他們所擁有的設備甚至還比不上我們今天使用的手機。他們的願景對於手頭的硬體現實來說,真的太大了。

00:15:36 - Ulrich Drepper

當初,我們在轟轟作響的龐大計算機上工作,和數不清的人、數不清的工作組搶奪它有限的性能。

00:15:46 - Saron Yitbarek

這是紅帽的傑出工程師 Ulrich Drepper。他解釋了早期的人工智慧夢想之所以失敗,只是因為沒有成功所需的基本工具。

00:15:55 - Ulrich Drepper

我們有 PDP 10,PDP 11 之類的計算機(LCTT 譯註:Digital Equipment Corporation 公司的大型計算機產品),但每一台都可能有另外 20 個人在同時使用。即使沒有這些人將計算力分流走,它們也是真正的低能力機器,其性能不足以在支持 LISP 系統的必要功能的同時,運行一套機能齊全的用戶界面。

00:16:19 - Saron Yitbarek

隨著時間的推移,新開發的硬體對 LISP 也不再友好。

00:16:26 - Ulrich Drepper

我們不僅走了台式機的道路,也走了伺服器的道路。在我們今天已經習慣的處理器類型中,我們的實現的一切都是基於 8 位的處理器,而我們可能有了 16 位處理器、32 位處理器之類的。想要在這樣的機器上高效實現 LISP 系統,就必須繞不少圈才能成功。

00:16:56 - Saron Yitbarek

因此,計算世界的外部現實對這個脆弱的人工智慧領域產生了意想不到的抑制作用。

00:17:06 - Ulrich Drepper

和大廠商生產的 CPU 相比,定製硬體的成本極為高昂,其發展也極為緩慢。

00:17:21 - Saron Yitbarek

通過創建自定義的硬體解決方案,繼續使用 LISP 朝著 AI 夢想前進並非不可能。但是,事實是,令人興奮的新硬體將很多人的注意力推向了其他工作領域。

00:17:35 - Ulrich Drepper

你只需要等待處理器的下一個版本,那個普通的處理器獲得的改進,比你自己開發硬體求解,比如說實現一個 LISP 系統,所能達到的效果和收穫要大得多。最終,硬體變得越來越複雜,自行定製硬體成為了一件近乎於不可能的事。

00:18:03 - Saron Yitbarek

那麼,約翰·麥卡錫的遠景夢想是慢慢死去,還是只在那漫長的人工智慧冬天裡沉睡,等待時機?在 21 世紀的第一個十年里,約翰·麥卡錫的語言 LISP 的使用者不斷地流失。但是,在同一時間,發生了一件驚人的事。儘管 LISP 本身逐漸消逝,與這門語言相連的夢想卻被重新點燃了。人工智慧的夢想重新活了起來。

00:18:34 - Chris Nicholson

我想說的是,這次不一樣。

00:18:36 - Saron Yitbarek

這是 Chris Nicholson,開源 AI 軟體公司 Skymind 的創始人兼 CEO。Chris 認為,在經歷了大起大落之後,人工智慧或許終於要進入一個可持續發展的長夏了。

00:18:52 - Chris Nicholson

我們正處在人工智慧的夏天,許多人都對 AI 可能的應用而激動不已。但是,這種興奮是基於研究的真正進展,而這些進展是基於其他領域的進展。我們的硬體比當初好了太多太多,人們能用 GPU 替代 CPU,也能在大規模集群中使用這些 GPU 來訓練巨大的機器學習模型,從而產生真正準確的預測。為了做到這一點,他們也使用了前所未有的巨大數據集,這樣的數據量在 80 年代、90 年代或者之前都是聞所未聞、見所未見的。

00:19:30 - Saron Yitbarek

對於 AI 語言,巨大的數據集的興起是關鍵,因為它們代表了我們理解智能的方式的關鍵變化。AI 研究的重點轉移到了 深度學習 deep learning 方面,而深度學習似乎成為了 AI 研究的全部。

00:19:47 - Chris Nicholson

LISP 是為了操縱符號而設計的。在 LISP 誕生的時代,AI 意味著符號推理。當時,人們認為人類的思維和智力本身就是符號的操作。現代的人工智慧,也就是讓我們如此著迷的人工智慧,遠不止於此。現在的 AI,就機器學習而言,是一種可以從非結構化數據中學習的大型數據處理機器。因此,你可以讓機器學習演算法一點一滴地拾起文本和圖像,在這個過程中,隨著時間的推移,這些演算法將變得越來越智能。LISP 不是那樣設計的。它被設計為僅在人工干預的基礎上發展。然而,對於現在的機器學習演算法而言,其中的學習部分意味著它們會根據所接觸的數據進行自我調整。

00:20:40 - Saron Yitbarek

這就是讓機器以它們自己的方式實現智能化。但是,你知道,不僅僅是我們的機器在學習以強大的新方式思考;開源工具也讓人們提高了自己的水平。克里斯認為,開源的開發方式對防止另一個人工智慧冬天的到來有很大的幫助。

00:21:03 - Chris Nicholson

人工智慧冬天發生的一個原因是,當創意在放緩時,網路就會崩潰,資金就會枯竭。有了現在這些免費的開源工具,我們看到的不是創意的放緩,而是一種加速。創意得以被及時地測試,得以被迅速地分享。所以,這不僅僅是工具,而是預先訓練好的機器學習模型,一個研究小組可以與另一個研究小組分享,或者與廣大公眾分享。而創意本身也被發表在 ARXIV 這樣的平台上。ARXIV 是由 康奈爾大學 Cornell University 主辦的。所有這些因素匯合在一起,加快了創意流動的速度。對我來說,這是對人工智慧冬天的一種保險。這些因素的交匯使得人工智慧成為一個超級令人興奮的領域,它們意味著人工智慧的發展速度比炒作更快。

00:22:03 - Saron Yitbarek

Chris Nicholson是 Skymind 的創始人兼 CEO。

所以,開源能將人工智慧領域從舊的專有模式所催生的寒冬中解凍出來。AI 的新時代伴隨著 GPU 的巨大改進而到來。與之一併到來的還有演算法上的突破,它幫助我們訓練 AI 學習數據中的模式。然後,數據本身,海量的數據集正在為今天的 AI 提供動力。這一點,比任何事情都重要,這就是為什麼新語言得以繼續 LISP 未能完成的征途。我們向 Fast AI 的聯合創始人 Rachel Thomas 詢問,哪些語言適合下一代 AI。

00:22:50 - Rachel Thomas

我們目前正在探索將 Swift 用於 TensorFlow 的可能性。Swift 是 Chris Lattner 開發的一種語言,我知道也有人在使用 Julia,他們正促進著 Julia 的開發與發展。但是,就目前而言,Python 在深度學習領域有著無可比擬的巨大優勢。

00:23:03 - Saron Yitbarek

這是因為 Python 非常適合處理大型數據集。

00:23:08 - Rachel Thomas

我認為過去 20 年中發生的最重要的改變是,數據量的增長和人們對於數據的越發重視。我認為,數十年前有關 AI 的許多早期工作更多地圍繞一種符號系統,即某種抽象符號系統。我要說的是,目前 AI 領域中的許多工作都圍繞著數據展開,例如識別圖像里的某樣東西,或者辨認一條影評是褒還是貶。這些都是基於數據的問題。所以,我認為,Python 成為贏家 —— 至少是早期的贏家 —— 的原因之一,是因為 NumPy、SciPy 和 pandas 的生態系統,以及 Python 中所有數據處理用的庫都足夠完善。

00:24:02 - Saron Yitbarek

在約翰·麥卡錫的團隊還在麻省理工學院工作時,人工智慧事業確實只有世界級的精英學者才能參與。但是自那時以來,語言和計算環境已經發生了巨大的發展,時至今日,每個人都能參與到 AI 的領域中來。我們在本季的第 1 期中聽說過,Python 是許多初學者的第一語言。它使新手程序員能夠加入 AI 的世界。

00:24:29 - Rachel Thomas

我只想告訴大家,實際上你只需要一年的編碼經驗。你不需要諸如「鬼才」這樣的名號,也不必具有真正的聲望或權威。但是,我們需要來自各個背景的人。實際上,不同背景的人才能夠為這個領域提供許多新鮮的創意,你的創意也是我們所需要的。

00:24:52 - Saron Yitbarek

Rachel Thomas 是 Fast AI 的聯合創始人,也是舊金山大學數據研究所的教授。我喜歡她為我們提供的信息。

AI 的故事是發現截然不同的人們之間的共同語言的故事。這是我們真正的任務,為充滿 AI 的世界開發語言解決方案,開發能使所有人共同努力以實現下一個突破的解決方案。

00:25:22 - 播音員 1

各位,你們看到了今天在這裡創造的歷史。AlphaGo 以偉大的風格贏得了比賽。

00:25:32 - 播音員 2

是的,它甚至向我們展示了它的代碼。

00:25:34 - 發言者 7

甚至向我們展示了它的代碼。我想要祝賀這個計劃。

00:25:40 - Saron Yitbarek

2015 年,就在 加里·卡斯帕羅夫 Garry Kasparov 在國際象棋比賽中輸給深藍的幾十年後,圍棋世界冠軍李世乭被谷歌的 AlphaGo 擊敗。深藍顯示出的智力威力大半依託於蠻力,而 AlphaGo 的勝利之所以讓人感到驚訝,是因為它依靠神經網路和強化學習贏得了那場比賽。換句話說,AlphaGo 已經成功地朝著真正的智慧邁出了下一步。如果沒有開源對人工智慧的推動,這一切都不可能發生。新的語言正朝著麥卡錫的夢想而逐漸發展。我們的語言正越來越適合於最大限度地提高機器的智能。好消息是,在開源世界中,我們可以共同實現這份夢想,共同應對它所帶來的挑戰。

00:26:39 - Saron Yitbarek

代碼英雄》是紅帽的原創播客節目。如果你希望更深入的了解 LISP 或者人工智慧,你可以訪問節目的網站 redhat.com/commandlineheroes。在這裡,你也能看到每一集的額外內容。下一期將是本季的最終集。在下一期中,我們將對一門重量級語言進行探究,並揭露與之有關的許多驚人事實;這門語言對本季中迄今為止討論過的幾乎所有語言都產生過影響。這是我們對 C 的深入研究。我是 Saron Yitbarek,下期之前,編程不止。

什麼是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特別興趣小組 Special Interest Group ,LCTT SIG 是針對特定領域、特定內容的翻譯小組,翻譯組成員將遵循 LCTT 流程和規範,參與翻譯,並獲得相應的獎勵。LCRH SIG 是 LCTT 聯合紅帽(Red Hat)發起的 SIG,當前專註任務是《代碼英雄》系列播客的腳本漢化,已有數十位貢獻者加入。敬請每周三、周五期待經過我們精心翻譯、校對和發布的譯文。

歡迎加入 LCRH SIG 一同參與貢獻,並領取紅帽(Red Hat)和我們聯合頒發的專屬貢獻者證書。

via: https://www.redhat.com/en/command-line-heroes/season-3/talking-to-machines

作者:Red Hat 選題:bestony 譯者:bestony 校對:acyanbird, Northurland, wxy

本文由 LCRH 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國