我喜歡優秀的技術演講。我不僅喜歡觀看這類演講,並樂於與人分享。最近我有充足的空閒時間,於是整理出了一個“每個程式設計師必看”的技術演講列表。在選材時,我並沒有把演講的主題侷限於具體的語言或庫,而是選擇了一些有巨集觀視野的內容,希望更能夠被更多人所接受。
如果你覺得我漏掉了哪些你喜歡的演講,請留言告訴我。 Happy watching!
一、The future of technology | 科技的未來
視訊:https://youtu.be/gTAghAJcO1o
關於科技的未來, Alan Kay 有著比其他人更深刻的思考。在 這個演講 中,Kay 解釋了施樂帕羅奧多研究中心是怎樣在很短的一段時間內發明出如此多的新技術的。這些現在看來大名鼎鼎的技術包括了:個人電腦、點陣圖顯示、圖形介面、桌面釋出、文書處理、鐳射列印,乙太網以及物件導向程式設計。
(Alan Kay)
在 Kay 看來,實現這一成就的關鍵在於一種專注於創新的企業文化。這種文化注重從最基礎的研究做起,而不是僅在已有的創新的基礎上升級和改良。這類創新通常需要大量的金錢投入,長時間的研究週期以及獨闢蹊徑的問題解決方式綜合作用才能取得成功。
關於未來科技趨勢,另外一些重要的演講:
1. 《The Mother of All Demos | 多媒體演示之祖》 作者:Douglas Engelbart,滑鼠之父的一個多媒體演示視訊。其中包括了對超連結、計算機製圖、視訊會議、滑鼠、文書處理等等內容的演示。而這一切都發生在 1968 年!這就是 Kay 在他演講中引述的所謂跨時代式的創新。
(Douglas Engelbart)
2. 《The Future of Programming | 程式設計的未來》 作者:Bret Victor。Bret 在他的演講中帶領我們回顧了過去並提醒大家:對於一個需要創造力的人來說,最危險的情形莫過於他擁有了「我知道我正在幹什麼」這種想法。因為一旦有了這種想法,你就會失去通過尋找不同途徑來解決一件事情的意願,進而失去了這種能力。換句話說,在創新的世界裡,你變瞎了。
3. 《The Computer Revolution Hasn’t Happened Yet | 計算機革命尚未發生》 作者:Alan Kay。「我創造了『物件導向』這個詞,而且我可以告訴你我根本沒把 C++ 放在心上。」
二、User interface | 使用者介面
聽完 Bret Victor 的 這個演講, 你會覺得你所會的所有的程式語言和工具都 out 了。在這個演講中, Bret 展示了一個全新的程式碼編寫方式。這種方式使你不必在腦中反覆推演那些枯燥的邏輯。通過一種互動式介面,你可以直觀的體驗和感受到你的程式碼,計算機將替你完成其餘沉悶的工作。這種方式不僅使學習程式設計變得更加簡單,而且它從根本上改變了我們解決問題的方式。
另一些 UI 好貨:
1. 《Stop Drawing Dead Fish | 別再畫死魚了》 作者:Bret Victor。用計算機為藝術帶去生機。
2. 《Media Thinking for the Unthinkable | “圖說”不可想》作者:Bret Victor。為科學與工程學設計新的媒介。
3. 《Doing With Images Makes Symbols | 用影象製造符號》。Alan Kay。人類是怎樣學習的以及怎樣建立起能夠支援這個學習方式的 UI。「你身體裡想學習的那部分不會說英語。」
三、Programming language design | 程式語言設計
Rich Hickey是 Clojure 語言的開發者,將帶領你從一個全新的角度去審視電腦科學的一些基本概念。複雜度 (Complexity) 便是其中之一。Rich 將在 這個演講 中指出能定義這一概念的最好的一些工具和最好的一門語言。
其他一些演講:
1. 《Are We There Yet? | 我們距離未來還有多遠?》。Rich Hickey。另一個有關基本原則的講座。Hickey 將帶領你重新審視狀態,時間,身份,值和型別等一系列基礎概念。
2. 《Growing a Language | 發展一門程式語言》。Guy Steele。這是我看過的有關程式語言最有智慧的演講之一。雖然只有十幾分鍾,卻回味無窮。
3. 《The Science of Insecurity | 有關不安全性的科學》。Meredith Patterson。為什麼說現在的系統和協議都是與生俱來的不安全?以及我們在未來怎樣修復這種不安全性。
四、Software engineering | 軟體工程
Greg Wilson 將帶領大家仔細審視我們在軟體工程中是怎樣制定決策的。在開發中,我們往往需要做出各種決定,例如是用 Java 還是 Ruby?用 Play 框架或是 Rails 框架?是測試驅動開發還是敏捷開發?需不需要程式碼審查?等等。大多數情況下,我們對以上這些問題的答案通常只來源於一個單一的知識層面。比如說我們自己的想法,網路熱點,外部趨勢亦或者是一些奇聞軼事。而 這個演講 提醒了我們應當改變這種實踐方式,進而轉向另一個以循證為基礎的軟體工程模式。
其他好的演講:
1. 《Real Software | 真 · 軟體工程》作者:Glenn Vanderburg。 大學課堂裡所教的軟體工程知識基本是沒用的。按照他們所教的方法開發軟體系統,不僅不能保證產品質量,而且也無法有效控制成本。甚至有些時候,按照這些方法根本開發不出任何系統。
2. 《Hammock Driven Development | 吊床驅動開發模式》作者:Rich Hickey。「絕大多數軟體的重大缺陷通常都源於開發時錯誤的構想。」為了解決這種問題,開發者應該離開自己的電腦,並在一段時間內專注於構思軟體,同時 記錄 好自己的想法。
3. 《The Language of the System | 系統的語言》。Rich Hickey。我們通常過於專注於開發出一個完美的程式語言,然後用它去構建一個系統。但是我們是否想過去開發一種能用於不同系統之間的通訊的語言呢?
五、Computers and learning | 計算機與學習
視訊:https://youtu.be/U6FvJ6jMGHU
Daphne Koller 和 Andrew Ng 正在嘗試著重新定義教育。他們創辦了一個名為 Coursera 的線上教育機構。這個機構致力於把那些真正的大學課程,通過網際網路免費普及到全世界。這個演講 中,他們講解了一系列他們應用在這個為數十萬學生服務的線上課堂上的技術。其中包括線上視訊,交流論壇,互動式UI,自動評分以及同學互評系統。通過 Coursera 的運作,我們還獲得了一個前所未有的,觀察人類學習方式的角度。
其他一些有關教育的重要演講:
1. 《Let’s use video to reinvent education | 讓我們用視訊改造教育》作者:Salman Khan。Koller 的演講是關於大學教育的演講。而 Khan 的演講則講述了怎樣通過 可汗學院 來為上大學前的學生們提供線上教育。
2. 《Teaching Creative Computer Science | 創造性電腦科學教育》。 作者:Simon Peyton Jones。每一個孩子都應該學習電腦科學,因為它能 開闊他們的思路。
3. 《Machine Learning | 機器學習,一個愛情故事》。 作者:Hilary Mason。當你們在談論教書育人時我在談論什麼。
六、A career in programming | 以程式設計為業
視訊:https://youtu.be/a1zDuOPkMSw
這個演講 繪製了一幅能讓你不僅在研究領域,而且在其他任何領域都能獲得成功的職業藍圖。所以,基於這個事實,人們還給這個演講起了一個別名:「你和你的事業」。「為什麼只有少數科學家才能在科學發展的程式中做出巨大的貢獻,而其他很多科學家卻在這個過程中逐漸被遺忘?」在講座中,Richard Hamming 分享了他對這個問題的見解。他認為,其中最重要的因素包括了勇氣,運氣,動力(「知識和生產力像複利一樣」),對重要問題的專注(「如果你不專注於重要問題,相當於你在做 無用功」),開放的思想,推銷自己成果的能力(「我建議你在閱讀一份期刊的時候想一想,為什麼我能讀到這些文章?」),等等。這個講座應該讓所有高中生都看一看。
更多程式設計領域成功學:
1. 《The Myth of the Genius Programmer | 天才碼農之謎》。 作者:Brian Fitzpatrick 和 Ben Collins-Sussaman。這不是一個有關天才程式設計師或 10倍速程式設計高手 的故事。這個演講的主題是關於怎樣建立一個為個人發展,團隊合作能提供有效支援的企業文化,進而避免精英主義氣氛的產生。
2. 《Programming Well With Others: Social Skills for Geeks | 與他人愉快的程式設計:技術宅的社交技巧指南》。Brian Fitzpatrick 和 Ben Collins-Sussaman。BB 組合再次聯手告訴大家:一個成功的軟體工程師的世界裡不應該僅僅只有語言,編譯器,偵錯程式和演算法。
3. 《JavaScript Masterclass | JavaScript 大師課》。 作者:Angelina Fabbro。 別讓標題騙了你:這是一個讓中級水平的程式設計師能就任何話題(不僅僅是 JavaScript)都談笑風生的簡明教程。
七、Computer gaming | 電腦遊戲
視訊:https://youtu.be/dE1DuBesGYM
當一個孩子從高中畢業的時候,他已經花了 10000 個小時在打遊戲上面。這基本與他上學的時間相當(如果他從未缺課)。這些時間也足以讓他們 在某一領域成為專家。那在這 10000 小時裡他們究竟學到了什麼?Jane McGonigal 將為你展示怎樣運用這些時間和學習的過程讓世界變得更美好。
更多好“遊戲”:
1. 《The game that can give you 10 extra years of life | 給了我10年新生的那個遊戲》。 作者:Jane McGonigal。一個振聾發聵的演講,有關遊戲是怎樣改善了 Jane 的生活。並介紹了在她經歷了劇烈的生活動盪後,遊戲是怎樣幫助她走出自殺陰霾的。
2. 《Human Computation | 人體計算機》。 作者:Luis von Ahn。我們可以運用人腦的能力和一些遊戲去解決那些對計算機來說都很難解決的問題。比如影象識別,翻譯和一些「常識性問題」。
3. 《Design Outside the Box | 創造性設計》。 作者:Jesse Schell。當遊戲入侵了我們生活的方方面面之後會發生什麼?
八、Fun Talks | 趣談
視訊:https://www.destroyallsoftware.com/talks/wat
現在是輕鬆一刻。Gary Bernhardt 的 5 分鐘 Wat 小視訊。 滿滿正能量。
其他的人生正能量罐:
1. 《Computers are a sadness, I am the cure | 計算機是憂傷的毒,我才是解藥》。 作者:James Mickens
2. 《Programming is terrible – lessons from a life wasted | 討厭的程式設計 – 一個廢柴的人生課》。 作者:Thomas Figg
3. 《The Web Will Die When OOP Dies | OOP如果死了,Web還活著幹什麼》。 作者:Zed Shaw