转载自:https://mp.weixin.qq.com/s/fJxPyekHA6eTrQPRP8Y-IQ
编译:伯乐在线/loadofwar
我喜欢优秀的技术演讲。我不仅喜欢观看这类演讲,并乐于与人分享。最近我有充足的空闲时间,于是整理出了一个“每个程序员必看”的技术演讲列表。在选材时,我并没有把演讲的主题局限于具体的语言或库,而是选择了一些有宏观视野的内容,希望更能够被更多人所接受。
如果你觉得我漏掉了哪些你喜欢的演讲,请留言告诉我。 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