抄書開源之巔:章亦春的程序人生

      網友投稿 2438 2025-03-31

      春哥的編程之旅起于抄書,就算如今已是罕見的編程高手,春哥依然逢人大力推薦他的抄書學編程之法。春哥先后在中國雅虎、淘寶、Cloudflare 就職,但開源世界是他如一的眷念。如今,春哥已全身心投入 OpenResty 的嶄新藍圖,期待 OpenResty 未來能在工業界、互聯網行業引領“機器編程”革命。很榮幸這次圖靈訪談可以對話春哥,讓我們來一起了解一下春哥的快意程序人生。

      春哥,本名章亦春,開源項目 OpenResty 創建者和推動者。

      春哥的時間線(畢業之后)

      2007 年?也就是我大學一畢業,加入中國雅虎搜索技術部。當時的中國雅虎已經是阿里旗下的一家公司了。那次工作機會源于我在畢業前夕受邀在 PerlChina 北京大會上作的開源分享,而那次大會正好是在中國雅虎總部舉行的,當時有幸認識了中國雅虎的搜索團隊(又稱 4E 團隊)。

      2009 年?被調到淘寶數據產品與平臺部,集中力量和同事們一起基于 OpenResty 開發淘寶量子統計這款產品,主要面向淘寶賣家。

      從抄書到開源之巔:章亦春的程序人生

      2011 年?我離開阿里,和夫人(當時還是我的女朋友)一同前往一個陌生的南方小城福州,過了一年所謂的“田園生活”,在家里全心從事 OpenResty 等開源項目的工作。

      2012 年?我受 Cloudflare 公司邀請,舉家來到美國灣區,全職從事 OpenResty 開源開發,以及基于 OpenResty 的全球 CDN 網絡的軟件系統的研發和完善。

      2016 年?晚些時候我離開了 Cloudflare,并于 2017 年初在美國創辦了 OpenResty Inc. 公司。

      母親、賽揚與抄書

      我的編程起點

      我最早和編程結緣,說起來還是托我媽的福。上初中那會兒,記得是 1999 年的時候,她正在準備計算機二級自考,于是家里買了一臺賽揚 330MHz CPU 的機器,裝的 Windows 98。她也弄了一本譚浩強的《C 語言程序設計》教材,經常放在家里。自然,我經常去玩機器,系統里唯一一個打開來不知道該干嘛的應用程序,就是那個奇怪的 Turbo C 編程環境。雙擊打開后,藍色的屏幕上光標一閃一閃的,我完全不知道該干嘛。這激發了我強烈的好奇心,一心想著也能把它玩轉,就像使用 MS Word、AutoCAD 這些不用人教就能熟悉的應用程序那樣。

      初中畢業之后,我就“偷”走了那本《C 語言程序設計》,仔細研讀起來。我媽當時是強烈反對我學習編程的,她認為我這是“不務正業”。當時,身邊除了我媽沒有人懂編程,我便只能靠自學。由于完全沒有編程的概念,即使從第一頁開始一個字一個字地手抄,也還是一頭霧水,不知所云,感覺很郁悶。2000 年,我剛剛高一開學,當時我所在的高中——鎮江一中,發給我們的一本《計算機基礎》教材,里面有講解 Visual Basic(VB)的章節。我覺得貌似比 C 語言容易很多,于是又開始手抄這本教材里的 VB 章節。我每抄完一段,就反復研讀。這樣折騰了幾周,終于明朗起來,有了編程的基本概念。于是,又回過頭來繼續手抄那本 C 語言教材,抄到一半左右的時候,我終于感覺到可以不用繼續手抄了。然后,我就陷入琢磨如何用 C 實現各種鏈表和其他復雜數據結構的細節中去了。高一寒假的時候,我又開始手抄?Thinking in C++。寒假結束時,我對 C++ 語言算是比較熟悉了,也就不再滿足于 Turbo C,開始玩更高級的 IDE,像 Borland C++ 和 Visual C++ 。

      回過頭看,抄書是我自學編程的法寶。話說抄書這種學習方法是我意外間發現的。初三時,我酷愛化學,總是纏著當時的初中化學老師提各種奇怪的問題,老師拗不過,借給我一本他當年大學時用的課本《分析化學》。我如獲至寶,愛不釋手,但借的書總要還,但又不能立馬消化,于是我便抄書,抄了整個暑假,結果意外地發現了抄書的奧妙——那就是延緩閱讀速度,不至遺漏每一個重要的細節:眼到,手到,心到。

      其實不僅書抄得,代碼也抄得。記得我剛進入淘寶時,想學習 Nginx 源碼。于是白天上班就對著 Kindle 抄 C 源,同時就已暗記于心;晚上回家在房子里來回踱步,在腦海中反復回放白天抄過的源碼,直至融會貫通,深得其奧妙。這段日子持續了一兩個月后,便大徹大悟了。

      教機器解題

      編程和高考之間的平衡木

      入門以后,我就對編程越來越有興趣。只要不上課,我就會跑到新華書店去看一些編程類的書。整個高中三年,那里都是我最愛待的地方。同時,以高考為目的的學校教育也愈發讓我反感,我覺得完全是在浪費時間。雖然我上的是當地的重點高中,學校也倡導所謂的“研究性學習”和“素質教育“,但高考的壓力從高一就開始了。一方面是編程的巨大樂趣,另一方面是高考為指向的應試教育,這讓我非常痛苦,甚至都動過輟學的念頭。

      我于是和爺爺討論解決的辦法,因為我倆既是祖孫也是朋友。他當時幫我出了個主意,就是想辦法把編程和高中學習結合起來。具體怎么結合,只能我自己去想了,我爺爺也完全不懂計算機。認真想了很久,我決定親自教機器去解答各科的高考題。而要教機器解題,我自己首先得學會如何解題。這給了我繼續應試教育的理由。

      當然,教機器解高考題對于一個沒有人指點的高中生而言,顯然是一個很大的挑戰。那些高考題即使對于人類也是很有難度的。我不得不拼命自學了很多艱深的計算機專業的課程,像編譯理論、自動機理論、專家系統、人工智能,還閱讀了一些論文,比如定性推理之類的研究成果。

      機器解題與人類解題的一大區別是,機器不能運用人類直觀來輔助解題。比如幾何題里作輔助線,或者其他基于視覺的解題方法,這些對于機器都是不適宜的。機器需要精確的推理方式,需要把一切都形式化。我不得不研究了很多反常規的解題方法,因為其中一些方法運用了高等數學的知識,在真正的高考中也是不宜使用的。記得高三時,我還自己定義了一種簡單的數學系統,可以漂亮地證明任意立體幾何的定性證明問題,而不依賴于任何人類直觀或輔助線。可惜的是,以當年的數學素養,我只能證明數學系統的內部相容性,卻無法證明完備性。不過,當時搜集到的高考題都可以用那個自動證明系統證明。(上了大學,我才有時間完成證明系統的代碼實現)。

      高中三年對我來說是極為豐富的三年,也是非常辛苦的三年。當然,高考成績并沒有那么理想,我想,是因為追求的深度和廣度無法很好的兼顧吧。幸運的是,高考分數還是超過了本一線,應該也是當時班上的倒數了吧。我在江蘇大學的四年也是非常充實和享受的,自認為真正實踐了高中母校“研究性學習”的口號,走出了一條適合自己的路。

      我非常感謝爺爺當年的鼓勵和啟發,讓我堅持完成了學校的教育,也從人工智能和機器解題的角度發掘了學校教育動人的一面,優美的一面。這是我最初無論如何也無法預見的。

      大學,步入開源世界

      大學時代,最成功的事情有兩件。

      一件是繼續高中時的學習方式,教機器自動求解和證明大學課程的各種題目和問題,比如非線性電路的自動分析、離散系統的仿真引擎、實現 x86 CPU 指令集的指令譯碼器的硬件設計、計算機程序的自動形式化證明,等等。另外,在計算機上編碼并測試那些高中時設計好但一直沒空實現的高考題求解系統。

      另一件事情是,接觸并融入到開源世界。直到現在,我還記得第一次給一個開源網站寫電子郵件時的激動心情。雖然只是報告了一處筆誤,沒想到網站的維護者很快回復了并感謝我的報告,一下子整個人都欣喜若狂了。大三時,我開始關注 Perl 6 這個開源項目,每天都要仔細翻看他們在 freenode 服務器上的 IRC 頻道上的聊天記錄。我發現這些“老外”說話的方式和從前在英語課本上看到的有很大不同。有非常多的習慣表達方式,也有一些互聯網上專用的俚語。就這么通過聊天記錄,我掌握了開源世界的口語,也熟悉了頻道里經常說話的大牛的脾氣和說話方式。認真“潛水”了一年之后,我開始在那個頻道里說話,漸漸融入了社區。

      隨后,我也積極地做了不少有趣的開源代碼項目,貢獻給了 Perl 6 社區。大四時做了一個Perl 6 語法分析過程的可視化調試工具,居然得到了Perl 的發明人 Larry Wall 的贊揚,這是莫大的鼓勵!Larry 在 IRC 頻道里是這么評論我的工具的:“agentzh: please allow me to say I'm amazed!”聊天頻道里有各種各樣的人,有的是美國某大學的博士研究生,有的是西方某藝術學校畢業改行做程序員的,有的是像 Larry Wall 這樣的重量級宗師,擁有各種性格、背景、文化的人在一起相互碰撞,相互交融。這種體驗讓我沉醉其中,無法自拔。開源社區和 IRC 把我和整個世界緊緊地聯系在一起。

      大學的歲月比高中自由了很多,輕松了許多,身心得到了前所未有的解放,下面這些瞬間讓我印象深刻。

      白天在江蘇大學藏書豐富的圖書館里淘書,面對著各個學科的英文版教材,心中充滿敬畏與喜悅之情;

      晚上在網上和開源社區跟分布在世界各地的黑客一起做各種有趣的開源項目;

      夜里回到男生宿舍熄燈后,又跑到對門宿舍和志同道合的同學海闊天空,熱烈地討論我的一些有趣的新想法——當然,一般是和科學或技術相關的了,經常被查房的大爺打斷。即使后來我不再住學校宿舍,也會經常去那間宿舍坐坐;

      累的時候在江蘇大學那優美寬廣的校園里一圈一圈地漫步,心中思考著一個又一個有趣的科學或技術問題,有種“天高任鳥飛,海闊憑魚躍”的豪邁感。

      配圖由春哥提供

      英語

      聯結全世界優秀的程序員

      英語是國際化的前提之一。前面提到,第一次通過電子郵件和國際開源世界發生聯結時,我才真心體會到熟練使用英語的巨大力量。如果編程語言讓我們和機器聯結,英語則讓我們和全世界優秀的程序員聯結在一起。

      高中時,我還主要看中文版的技術書和科學書,步入大學,我就只看英文版圖書了。必須承認的是,最先進的技術通常源自中國以外,以英語書寫。所以中譯本會大大滯后原英文版,很多比較生僻的領域,甚至都找不到中譯本;另外可能是譯者專業水平和語言功力的原因,中譯本的錯誤也比較多。舉一個例子,裘宗燕老師曾經翻譯過《程序設計實踐》一書,高一時買來反復精讀了好幾遍。上了大學以后,我在圖書館里竟意外地看到了英文原版,不得不感慨原版還是要清晰和流暢許多。

      出于國際化的考慮,從大學時代開始我做的開源項目也都用英文寫文檔,只有極少數情況下我會加上中文譯文,因為翻譯對我來說確實是很無趣的工作。英語是和世界溝通的橋梁,OpenResty 后來的國際化也得益于此。

      工作,最難得的是:跟對人

      參加工作之后的這些年,經常收到一些關于工作與實習的咨詢。我個人的觀點是:只要有機會跟著牛人干,不論具體做什么,都是會有很多收獲的。工作內容不重要,跟對人最重要。如果能有機會和自己景仰的人一起工作,不給錢我都愿意。當然,這個確實要看機緣,是非常難得的事情。

      畢業后,剛加入中國雅虎的時候,我做的工作經常被一位比較資深的后端工程師批評,最狠的一次算是“垃圾批量制造”這樣的話。但我從他那里零零碎碎地學到了很多高性能互聯網應用系統的實現方法和設計思路。再后來加入淘寶以后,我拜了一位當時看來很“神”的工程師為師。他也經常把我罵得狗血淋頭,在他的指導下我們一起創建了第二代 OpenResty 平臺,我也學到了很多基于 C 的系統編程技術。

      不過話說回來,開源世界確實沒有什么門檻,只要自己努力、有意愿,就完全有機會和不同的世界級牛人一起協作,不必拘泥于同一家公司共事的形式。從另一個角度看,公司的工作環境一般會比較復雜,也遠沒有開源社區那么簡單和純粹(當然,開源社區也有政治斗爭,敬而遠之便是了)。

      所以,我建議還在學校的同學多擁抱開源,最好是參與國際性的開源項目,加入對應的國際性開源社區。以我自己的親身經歷來看,開源世界的工作是最好的簡歷。大學畢業之后,我基本上沒有主動找過工作。阿里的工作機會也好,美國 Cloudflare 的工作機會也好,都是工作找過來的。我在阿里待了 4 年,在 Cloudflare 工作了 4 年半。

      身邊的牛人

      欣賞、學習與超越

      經常有人問我,崇拜技術界哪些大牛?我不喜歡“崇拜”這個詞,因為我并不想去崇拜任何人,崇拜本身就是非理性的。欣賞的牛人倒是非常多,我把他們當作老師想盡量從他們那兒多學習一些精華,然后超越他們。隨便舉幾位老師作為例子吧。

      高三時,我非常欣賞 Perl 的祖師爺?Larry Wall?老師。和其他過程式語言相比,Perl 在風格和性質上都展現了獨特的一面,因為 Larry 把語言學和哲學的思想也融入了 Perl 當中。我喜歡 Perl 展現出的文化和哲學,直到今天,它依然是我在編程世界的“母語”。

      2012 年初,我著迷于?Brendan Gregg?老師在動態追蹤領域的開創性工作,就精讀了很多他的技術博客文章,也買了他的書來閱讀。到美國以后,終于有機會在 Cloudflare 的全球網絡中實踐了他的很多方法和思想,快速定位了不計其數的線上“詭異問題”,有時甚至還有意外的發現。基于 Brendan 的工作,我也做了進一步地探索和創新,在一些方面還實現了超越,比如把火焰圖技術延展到了內存泄漏檢測和 off-CPU 時間分析等全新的維度。Brendan 在他的一次技術分享中,還專門用一張幻燈片介紹了我在這個領域的工作。

      說明:Brendan Gregg,Netflix?資深性能架構師,著名性能調優專家,著有?Systems Performance: Enterprise and the Cloud(中文版《性能之巔:洞悉系統、企業與云計算》,電子工業出版社)

      代碼之外,閱讀、游泳與漫步

      除了寫代碼,我喜歡讀書,包括計算機科學、技術、數學,還有佛教研究方面的。在灣區這幾年,我很喜歡在山林湖泊中漫步,思考一些艱深卻有趣的技術問題。對我來說,這是一種很大的享受。此外,幾乎每天都會去游泳,晚上會修習佛教早期的經典禪法,以清凈內心獲得奇妙的寧靜和喜悅。在我看來,最本初的佛學其實是一門哲學,這與后世在中國傳播的大乘佛教有著極大的差別,后者真的是一門宗教,是神學了(當然,慧能之后的禪宗倒是有很多相似之處)。

      灣區的生活,非常接近我理想中的“田園生活”。我對“田園生活”的愿景起源于初中語文課本里的一篇散文,題目是《釣勝于魚》。文中講一位美國大學的老教授經常乘著一條小船,在湖光山色中一邊釣 魚一邊研究學術問題。釣上來的魚又經常被他放回湖中。從少年時代起,這樣的生活就根植于我心中,成為我理想的生活和工作狀態。

      配圖由春哥提供

      OpenResty

      機器編程革命“魂器”

      OpenResty 是一個開源的 Web 平臺,用于開發高性能和高動態的 Web 網關或者 Web 應用。OpenResty 最早是為了支持全網搜索引擎周邊的相關搜索的 API 接口,后來我們基于 Nginx 和 LuaJIT 重寫了 OpenResty,用于支持淘寶量子統計這款產品的所有數據 API,再后來,我加入美國的 CDN 公司 Cloudflare,使用 OpenResty 驅動 Cloudflare 全球 CDN 網絡的動態 http 和 https 代理系統。

      從出生的第一天起,OpenResty 就是開源的。這些年來,OpenResty 社區嘗試把它用于各種不同的業務場景,有些場景甚至是我們完全無法想象的。比如有的公司使用它構建分布式網絡存儲系統的前端和后端(比如網盤應用);有的用它來構建完整的 Web 應用,像電商平臺的商品詳情頁的生成和大型體育賽事的 Web 管理系統;也有的公司基于它構建大型的互聯網廣告平臺,或者更復雜的 Web API 管理系統;還有的公司拿它來驅動小流量調度的硬件盒子,或者驅動家居陪伴型機器人;當然,更多的還是用于實現那些流量非常龐大的 Web API。[似乎和流量相關的工作都有機會用到 OpenResty,我們也有用戶使用完全基于 OpenResty 的權威?DNS 服務器。]

      OpenResty 的優勢在于小巧靈活、高性動態。基于 Nginx 事件模型和 Lua 的協程,我們實現了基于 I/O多路復用的高效 I/O 調度器,引入了“輕量級線程”和“協程 socket“(又稱cosocket)等強大的抽象。Lua 的動態性使得代碼在請求和連接級別的按需加載和熱替換、熱卸載變得非常容易和安全。這種能力在動態 CDN 場景下顯得尤為關鍵,因為那里經常需要處理幾十萬乃至上百萬不同站點的配置,而且這些配置可能一直都處于動態變化中,需要很高的生效速度,即使是全球網絡的規模也是一樣。

      我們正在開發中的 OpenResty 新版本將包含很多重要的新功能,比如新建的后端連接遇到連接池滿了的狀況會自動排隊和等待 ,協程 socket 在 Lua 級別主動進行listen() 和 accept() 的功能,在 Lua 中以非阻塞管道方式與新建的其他系統命令的子進程的標準輸入輸出設備進行高效通信。另外,在性能方面,Lua 處理程序的固有開銷會顯著下降,最簡單的 hello world 接口在整體性能上會有百分之幾十的提升。

      我對于 OpenResty 一直有著宏偉的愿景:希望 OpenResty 未來能在工業界、互聯網行業引領“機器編程”革命。人類只需要向機器輸入行業知識和意圖,機器就能自己編寫高效可靠的實現代碼,自行測試,進而生成人類可讀的文檔,最后毫無差錯地布署在大規模的計算機系統上。就像現在的制造業里,機器人流水線大批取代工人一樣,未來的程序員也可以從業務編碼中解放出來,去做更有趣、更富創造性的工作。

      配圖來自?OpenResty 中文社區

      用戶給予動力

      不斷推進 OpenResty

      OpenResty 的發展比較迅速,動力來自 OpenResty 的廣大用戶。這其中既包括我之前的雇主,也包括開源社區的廣大個人用戶和企業用戶。我曾經收到用戶的電子郵件,專門為我在 OpenResty 項目上的工作表示感謝;也經常收到中國和海外用戶的捐款,也許大部分的捐款并不多,但每次都讓我心里暖暖的。每年的 OpenResty 大會上,我都有機會見到OpenResty 的用戶,還有社區貢獻者和開發者。大家的分享激勵我去不斷地開發新玩法和新功能。OpenResty 社區就像一個溫暖的大家庭,世界范圍的大家庭。廣泛連接產生的幸福感和大學時每天泡在 #perl 6 IRC 聊天頻道的感受很類似,只不過我成了曾經 IRC 頻道里的“教主”角色!

      最近兩年,我們在香港專門成立了一家非盈利機構——OpenResty 軟件基金會,負責接收捐款處理、OpenResty 大會支持,以及社區貢獻者和開發者的獎勵工作。OpenResty 軟件基金會和 OpenResty Inc 商業公司是平行的關系,彼此獨立運作。

      商業級別技術支持和解決方案

      成立 OpenResty Inc

      我對 OpenResty 一直都抱有很高的期望。如果一直為其他公司工作,出賣時間的話,我就不能完全專注于 OpenResty 藍圖的實現。雖然之前的幾位老板都很支持我在 OpenResty 上的工作,但畢竟拿人工資,還是要優先保證雇主的業務需求,這是基本的職業操守。

      另外,隨著 OpenResty 滲透到越來越多的公司和行業,社區卻無力提供商業級別的技術支持和理想的解決方案。這也是開源項目運作上普遍存在的局限。

      在淘寶工作的時候,我曾成功地實踐了一種構造復雜業務軟件系統的方式,即教機器寫程序的方式,極大提高了復雜業務系統的構造速度,同時改善了系統在可理解性和運行效率方面的質量。所以,一直以來我都想著能有機會在工業界推廣這種“機器編程”的革命。顯然,教機器寫程序的靈感源自我高中時教機器解高考題的有趣經歷。這些經歷又以我們不曾意料到的方式啟發、推進成長。

      于是 2016 年的一個晚上,我突然有了要把 OpenResty 商業化的想法,借助商業的力量召集 OpenResty 開源社區的志同道合者組建一個屬于我們自己的團隊。當然,OpenResty 的開源性是絕對不會變的。公司主要基于 OpenResty 構造上層的商業產品和商業解決方案,面向需求較高、挑戰較大的企業用戶。雖然商業版的 OpenResty 可能會有一些開源版所不具有的高級功能,但隨著技術的不斷創新,也會有越來越多的商業版特性被陸續移植到開源版中來,供全世界自由享用。

      OpenResty Inc 的定位是一家面向企業的軟件服務公司,希望探索未來 Web 系統構建和優化的新方式。我們主要銷售企業級的服務器端軟件和服務,為企業客戶提供基于 OpenResty 和 Linux 的技術解決方案,借助“機器編程”的全新思路和方法,OpenResty Inc 極大地提高了復雜應用軟件的開發速度和質量。互聯網行業的工作經歷讓我清楚地認識到傳統的軟件工程方式已經越來越不能滿足日益增長的復雜業務軟件系統的需求。讓機器來自動處理業務軟件的復雜性,才是出路!

      “機器編程”是一個龐大的世界,我們目前的入手點選得比較小:使用“機器編程”的方式構造和銷售高度靈活的分布式流量管理軟件——OpenResty Edge。我們目前的商業客戶有較大規模的 CDN 廠商,也有自建 CDN 的大型網站,還有把我們的軟件用于網站流量入口,即跑在 CDN 網絡的后面,把流量分發到后端各個不同的業務線系統。我們在產品中提供了類似文檔說明書的“小語言”方便客戶直接用業務語言,而不是編程語言,來表達各種復雜的業務需求和業務邏輯,然后我們的產品會自動生成各種不同類型的高度優化的代碼,運行在較大的集群網絡之上。

      我們公司今年也計劃推出分布式的動態追蹤平臺,叫做 OpenResty Trace,可以對大規模的分布式互聯網系統進行各種有趣的性能分析和 Bug 追蹤,而無需應用系統的任何配合,也不用下線或重啟任何在線服務。相當于給在線軟件系統拍活體 X 光片,或者核磁共振片,可以隨時隨地看到從操作系統內核到應用軟件的腳本語言代碼的方方面面,把整個軟件棧作為一個隨時間動態變化的整體來看待。自然地,這里也會大量用到“機器編程”和“機器推理”的方法和技術。

      創業難題之多少

      創業過程中的困難不少。首先是角色上的巨大轉變,我從一個雇員變成了雇主,從一個打工者變成了一個老板。這在思維方式和做事方式上,都需要進行非常大的調整。我還需要學習很多不曾接觸過的東西,比如融資、公司股權結構、公司財務、稅務、法務、知識產權、銷售與商務,等等。

      其次,OpenResty Inc 從成立起就是一家“跨國公司”,跨越了中美兩個國家,所以會涉及資金的跨境流動、知識產權的地域性設置與分配、不同國家的稅法要求等很多方面的問題。

      再次,雖然我們在美國灣區和珠海各有一間辦公室,但大部分員工還是遠程工作的。如何讓團隊緊密協作和高效運作,就成了一個較大的挑戰。反過來講,這對于我們也是一大優勢,可以吸收世界上任意地點的人才加入團隊,而不用擔心新員工的搬遷和移民問題。另外,遠程工作的巨大自由度也可以吸引到那些喜歡有獨立工作空間的黑客。

      最后這個小主題是個特別版塊,我們邀請春哥對初學編程的朋友們,講幾句掏心窩子的話。

      勇敢地走自己的路

      對初學編程的朋友們,我只想鼓勵大家勇敢地走自己的路!我相信每個人都有最適合自己的成長道路,而主流的教育和培訓總想著趨同化,流程化,我最反感這種學習和教育。就該不拘一格,自己認準的路就值得堅持。主流的技術和思想總在快速變化中,像趕時髦那般一味地追逐是沒有意義的。希望大家能不忘初心,始終保護好最初對編程的好奇和興趣。

      如果時光倒流,我能回到最初學編程的歲月,我希望自己能及早地給我所有的機器都安裝上定時強制休息軟件。另外,能早點做到經常去游泳,這樣今天的我就不會有程序員的那些個職業病(比如脖子疼)。另外,我希望高中時的我能少花些時間在琢磨某些大軟件廠商的私有技術上面,比如微軟當年的 OLE、COM、COM+ 這些技術(估計今天很多年輕一代的程序員都很少聽說這些名詞了),能早點擁抱開源世界和開源技術。最后,希望當年的我能更加深入理論計算機科學及周邊數學分支的學習和研究。進入工業界之后,我才發現這些基礎理論研究才是追求“極致編程”和解決最難的工業問題的根基,而這些是最容易被普通工程師所輕視和忽略的。

      機器人 計算

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:前面輸入0 不顯示出來(前面輸入0不顯示)
      下一篇:WORD 寫幾個關鍵字 然后跳出幾段完整的句子,讓我選擇。課程評價使用的。大量的重復語句(word怎么轉pdf)
      相關文章
      亚洲色中文字幕无码AV| 在线观看亚洲成人| 亚洲国产成人私人影院| 在线观看亚洲av每日更新| 亚洲精品国产电影| 国产乱辈通伦影片在线播放亚洲 | 亚洲精品成人久久久| 内射无码专区久久亚洲| 自拍偷自拍亚洲精品偷一| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲精品伦理熟女国产一区二区| 亚洲日韩国产二区无码| 亚洲人成色77777在线观看| 亚洲性色精品一区二区在线| 亚洲欧美国产国产一区二区三区| 亚洲乱理伦片在线观看中字| 亚洲国产欧美日韩精品一区二区三区 | 久久久久亚洲精品男人的天堂| 国产精品亚洲高清一区二区| 精品亚洲一区二区三区在线播放 | 四虎亚洲精品高清在线观看| 成人亚洲国产va天堂| 亚洲一久久久久久久久| jzzijzzij在线观看亚洲熟妇| 在线91精品亚洲网站精品成人| 亚洲国模精品一区 | 亚洲制服丝袜精品久久| 中文字幕在线观看亚洲视频| 亚洲第一男人天堂| 亚洲youwu永久无码精品| 夜色阁亚洲一区二区三区| 4338×亚洲全国最大色成网站| 亚洲一区二区三区AV无码| 亚洲第一精品在线视频| 亚洲成无码人在线观看| 久久亚洲精品国产精品婷婷| 成人精品国产亚洲欧洲| 91麻豆国产自产在线观看亚洲 | 亚洲国产精品久久久久秋霞小 | 国产亚洲成归v人片在线观看| 亚洲成AV人片天堂网无码|