什么是「编程是什么天赋」?你见到的最有「编程是什么天赋」的人是什么样的?

他是怎么做到这一切的?这是凭着一己之力,追上 Google、Tesla 的步伐,挑战科技大公司的传奇故事。
一款经过改装后的无人自驾驶汽车
还有几天就到感恩节了,现年 26 岁的黑客 George Hotz 邀请我到他家做做客,去参观一下他最近一直忙着捣鼓的项目,他说就在一个月之前,一辆无人自驾驶汽车在他家车库出现了。
这番话在任何人的耳朵里听起来都是那么的荒唐。但是当我真的出现在他家车库的时候,一辆白色的 2016 款讴歌 ILX 出现在我的面前,车顶上配备了激光雷达系统 ((lidar),在后视镜还有一个摄像头。副驾驶的置物仓现在被一个缠有无数线圈的木板所占据。在你顺手要去换档的那个位置,一根摇杆直挺挺地矗在那儿。21.5 英寸的屏幕放在了汽车面板的正中心。
Hotz 还对我补充道:「Tesla 的屏幕也不过 17 英寸大。」
他在开发这个项目的时候一直处于保密状态,极力克制着自己想要跟别人炫耀的冲动。我们绕着这辆车转了几圈,随后,Hotz 将汽车上的电脑打开,系统是 Linux 的某个版本,一串数字填满整个屏幕。当他开始摆弄方向盘,并且打开车灯的时候,某些数字开始变化,意味着他正在进入到讴歌内部的控制系统。
在观赏、操作了大概 20 分钟之后,Hotz 明显感觉到了我的疑惑,他认为目前只有一种方式来证明他的「小宝贝儿」的能耐。他说道:「去他的,让我们上路吧!」说完,他打开了引擎。
Hotz 在他 17 岁的时候,网上昵称是「geohot」,那个时候他是世界上第一个破解 iPhone 的人,后来,他还是世界上第一个破解了索尼游戏主机 PS3 的人,要知道 PlayStation 的数字防御机制那可是相当的复杂高端。在过去的几年时间,Hotz 一直在独自前行,他接下来要做的事情比前面两个更加让人震惊:他要开发一辆无人自驾驶汽车。
「拿着这个」,他把一个无线键盘放在了我的膝盖上,然后将车子倒出了车库。「不要碰任何的按钮,不听话的话我们的小命肯定联同这辆车子一起报废掉。」Hotz 开始给我讲解起来他的无人自驾驶汽车,正如 Tesla 的无人导航功能一样,它是专门为高速公路行驶准备的,而非城市街道行驶。一边说着,他一边把车子开上洲际公路 280。
尽管现在仍然是 Hotz 掌控驾驶,但是讴歌的 lidar(就是刚才我们所说的车顶上激光雷达系统)已经把车子周围的一切物体全部显现在了这个像素级别的屏幕上,其中包括了高速公路墙以及其他车子。蓝色的线条显示着目前车子行走的路径,绿色的线条显示着无人自驾驶软件推荐的路径。两条路径非常完美的吻合在了一起,这意味着系统正在发挥作用。又开了几英里,Hotz 彻底放开了方向盘,在那个摇杆一样的设备上按下了一个开关,这样整个车子进入到了「无人自驾驶状态」。对了,他在完成一系列动作的同时有必要向读者朋友们介绍一下当时的运动状态,当时的车子时速 65 英里,车子的行走轨迹还拐了一个 S 曲线,我心里默默念了一句阿门,而在旁边的 Hotz 兴奋的大叫:「你办到了!我的车子!你办到了!」
这辆车子似乎真的有了自己的灵魂,在第一个弯道出现的时候它真的自己拐了弯。在第二个弯道来临的时候,讴歌突然靠近了一辆 SUV 的右侧,我立刻内心想到了即将没了老爸的可怜儿子们,但是这辆车很快地调整了自己的行走轨迹。太令人震惊了。我问 Hotz 当他第一次让车子自己开的时候是什么感觉。
他回答道:「嘿哥们儿,第一次无人自驾驶就是在今天早上。」
无人自驾驶技术领域窜出来的一批黑马
就在十年前,无人自驾驶技术开始出现突破性进展。美国国防部的研究机构 Darpa 曾经赞助过一次竞赛项目 Grand Challenge,这个项目就是比拼到底无人自驾驶汽车能够行驶多远的距离。在最早的 2004 年比赛上,汽车需要横穿一片沙漠,排名最好的车子也仅仅是完成了 150 英里中的 7 英里而已。而在接下来的几年时间,车子的无人自驾驶技术越来越成熟,表现越来越优秀,无论是沙漠地带还是城市道路全部都能够穿行而过。
这些早期尝试自驾驶的车子上面搭载了一大堆高精尖、且价格不菲的科技产品。在 Grand Challenge 的部分参赛者甚至在车子上面还搭载着一些类似于小型数据中心一样的东西。车体外部挂满了零零碎碎的传感器,这些传感器平日里只有在实验室里才能见到。这些早期的参赛者已经都被 Google 招聘了过去,使用的就是当时参赛的无人自驾驶技术,与过去唯一不同的是:如今的计算机性能大幅提升,传感器、无人自驾驶软件等各方面的价格都大幅下降。
人工智能软件以及消费级别的摄像头,这些东西足以让一个真正具有聪明才智的「数字工匠」利用市面上任何一辆车,将其改装成为便宜的,具有自驾驶功能的全新汽车。Hotz 能把这辆车打造出来的意义是深远的,它意味着如今不管是 Google、还是 Uber、又或者是那些体型笨重的老牌汽车厂商,他们的那一套成本高昂的无人自驾驶汽车开发方法已经落伍了,面临被淘汰的命运。
Hotz 还明确地指出了他即将颠覆的对象:以色列公司 Mobileye。这家公司给 Tesla Motors、BMW、Ford Motor、General Motors 以及其他厂商提供辅助驾驶技术。Hotz 在谈到 Mobileye 的时候这么说道:「这一切也太荒谬了。这家公司已经落后于时代,可还是有那么多公司买它的账,完全不可理喻!」
Mobileye 的发言人 Yonah Lloyd 否认本公司的技术落伍:「我们的代码都是建立在当下最新的人工智能技术之上,它所使用的终端到终端的深层网络算法能够提供准确的感应和控制功能。」就在上个季度,Mobileye 报告自己的收入是 710 亿美金,跟一年前同期相比上涨了 104%。它之所以有如此惊人的业绩增长,依赖于业内成名已久的无人自驾驶软件以及自家生产的芯片,这两者能让汽车实现在高速公路上自驾驶行驶。
其实这样的技术已经存在了很长一段时间了,只是最近的汽车生产厂商才开始吹捧它。在这里面 Tesla 公司起的作用最大,自从它声称自己的车子具有了「自动导航」功能之后,粉丝们看到全电力驱动的 Model S 跑车能够在高速路上自己开着,甚至还能自行变道,他们集体头顶青天狂喜乱舞,与此同时,Mobileye 公司的技术也就「水涨船高」,随着 Tesla 的名声壮大而一起走红。
在一封邮件式的声明中,Tesla 的发言人 Ricardo Reyes 这么写道:「Mobileye 是一个极为难得的合作者,它通过内部和外部一系列的产品来让 Tesla 的自动导航功能成为可能。这其中就包括了雷达、超声波、GPS 定位 / 导航、摄像头、与 Tesla 服务器的实时连接通讯等等。」
Hotz 准备用市面上随处可以买到的元器件来打败 Mobileye 科技公司。他开发了一组套件,其中包括了 6 个摄像头,就跟现在智能手机上面 13 美金的摄像头没什么区别。这 6 个摄像头将分布在汽车周围:其中两个放在车内靠近后视镜的位置,一个放在后面,两个放在车的两侧,覆盖了视野盲区,还有一个鱼眼镜头放在车顶。然后,他开始让负责控制的软件去学习识别这些摄像头里的图像。这个过程业界有个专有名词「神经网络」,一种自我学习的人工智能机制,它能够从司机以及他们所做出的决策中抽取数据进行学习。
Hotz 想干的事情就是出售这样的一组套件,里面有摄像头、有软件、价格大概是 1000 美金,销售对象要么是汽车制造商,如果有可能的话也可以直接出售给消费者,让消费者自己就能够把车子改装成为无人自驾驶汽车。Hotz 表示:「目前我身边已经有 10 个朋友愿意购买这样一套装备了。」
这一切的时机还没有定下来。Hotz 表示他将在几个月后发布一份 Youtube 视频,在视频中他的讴歌将在州际公路 405 上面打败 Tesla。这样做有两方面的意义:其一,这证明他的科技是可行的;其二,他希望能够获得 Elon Musk 的垂青。
Hotz 住在一个名叫 Crypto Catsle 的地方,这是一个拥有西班牙屋顶风格的白色建筑物。除了它的前门贴着「这里钟爱比特币」的贴纸稍显特殊一些之外,它跟 Potrero Hill 其他建筑物并没有什么不同。在这里经常有极客过来入住一段时间然后就搬走了,大概有 5 到 10 名。最底一层大部分都是属于 Hotz 一个人的,他的房间是一个 15 乘以 5 英尺的小隔间,里面塞满了盒子、汽车部件、毛巾、还有上一个房客留下来了女人的衣物。再往里面走,会有一个客厅,里面有沙发、有电视。Hotz 说道:「我讨厌一个人独居。就在昨天晚上我还和我的室友一起玩儿了《侠盗猎车 5》,这游戏简直太棒了。」
就在离他的这个小隔间不到几米的地方,就是他的车库。两台电脑显示屏摆在桌面,桌子旁边是一个热水器。在木头桌子上面散乱着钻头、6 个螺丝刀、胶带、一罐红牛、和一叠子没有拆封的邮件。车库大部分的空间都被那辆白色的讴歌占据。Hotz 在它的引擎罩上画了一个黑色的巨大逗号,后面的保险杠上写着「comma.ai」,用黑粗字体醒目的标注出来,这也是他新公司的名字。「一个逗号总比一个句号好。」他这么解释。
你绝想不到有多牛叉的天才少年 George Hotz
Hotz 出生在新泽西州的 Glen Rock。14 岁的时候他在著名的「英特尔国际科学及工程学比赛」上面进入决赛,凭借的是他设发明的可以扫描房间,并且丈量出房间大小的机器人。几年之后他又设计了另外一个名叫 Neuropilot 的机器人,它可以被人的意念控制。根据你在思考时的集中程度,它能够感知到你大脑不同的脑电波频率,借此实现前进或者左转弯等动作。次年,也就是 2007 年,他再次获得这次大赛的奖励:一张通往斯德哥尔摩,参加诺贝尔颁奖典礼的门票。那一次他带来的参赛作品是全息显示屏幕。
他在 2007 年的时候还在上高中,就在当年他成功破解了 iPhone,借此上了电视新闻,成为了国际上的名人。三年之后,他再次破解了 PS3 并对外发布了相应的软件。索尼公开表示将进行法律上的起诉,但是后来双方私下握手言和,Hotz 承诺自己以后再也不碰索尼的任何产品了。那年他 22 岁,这一系列的成就足以让他在《纽约客》这本杂志上赢得一篇报道了。他在那篇报道上这么介绍自己:「我的行事准则是道德,而非法律,有些时候,法律只是某些混蛋拟定出来的。」
但是 Hotz 可不是大家通常意义上所说的那种「黑客」,比如出于追求金钱所得侵入到商业系统中。他更像是一个解谜爱好者,只是想证明再复杂高级的技术都要听命于他的指挥。
从 2007 年开始,Hotz 变成了一名「编程游民」,他先是去 Rochester 的技术学校培训了一段时间,然后又去 Google 实习了一段时间,在 SpaceX 里面工作了四个月,在 Facebook 工作了八个月。这些工作都不是很让他满意,有些时候还会很沮丧。在 Google,他发现那些极具天赋才华的程序员们往往分配的都是极为傻瓜笨重的差事,比如修复一些网页浏览器里的 Bug 啊之类的。在 Facebook,那些极具天赋的程序员成天被公司引导着,天天在那儿琢磨怎么让用户的鼠标再多点到广告上一次。Hotz 表示:「Facebook 正在把 AI 引导到这个方向,这让我害怕。他们正在利用机器学习技术诱导每一个人花更多的时间在 Facebook 上。」
与此同时,Hotz 开发了一款名叫 towelroot 的应用,它能够让 Android 用户获得对自己的智能手机完全的操控权。这款软件免费下载,如今已经被用了 5000 万次。他娱乐自己的方式就是不断地去参加竞赛,在最知名的软件和硬件上面寻找漏洞,并且给予解决办法。在某次竞赛中,他侵入到了 Chromebook 笔记本,赢得了 15 万的奖金。另外还曾在一天时间内发现了火狐浏览器的一个 bug,又赢得了 5 万美金。在韩国举办的四人一个小组的技术比赛上,Hotz 一个人代表四人小组参赛,获得冠军,拿走 3 万美金。
重新上路!进军人工智能领域!
到了 2012 年的秋天,他终于对这些竞赛感到厌烦了,觉得是时候搞点儿新花样了。他的目光很快锁定在了下一个领域:人工智能。他进入 Carnegie Mellon 大学深造,希望获得一个博士学位。在不上课的时候,他把当今最具有影响力的人工智能论文通读了个遍,并且还能有时间再自己找些乐子。但是周围的环境同样让他失望不已。在大学里,周围的同学满脑子想着的就是如何毕业了能跑到 Google 公司上班,借此有一份光鲜体面的薪水。Hotz 吃惊于现在的大学怎么成这个样子了,并且得出结论:目前真正极具想法和才华的年轻人都在高中。他对大学的同学们简直太失望了。
尽管对周遭的人事感到失望,但是他对「人工智能」领域的兴趣却越发浓厚,他越来有渴望重返硅谷。他已经将目前最前沿的 AI 技术吃透,并确信这个技术并不是很难掌握。Hotz 后来在人工智能初创公司 Vicarious 找到了工作。,由此第一次进入到了人工智能的「实战阶段」。
后来他于 7 月从 Vicarious 离职,觉得要把自己的某些想法付诸实践。某个朋友将他引荐到了 Musk 那里。Hotz 与 Musk 在加利福尼亚,Tesla 的工厂里终于见上了面,围绕着人工智能技术的种种优势和风险展开讨论,时间很长。在聊完天之后,这两个男人很快达成了一笔交易:Hotz 来帮助 Tesla 开发无人自驾驶技术。如果 Hotz 的技术能够在测试中打败 Mobileye 的技术,那么 Musk 将给他签下一笔非常待遇丰厚的合同。但是 Hotz 后来还是拒绝了这次合作,因为他觉得 Musk 在条款上总是变来变去。
后来,Musk 在给 Hotz 的电子邮件中这么写道:「我觉得你应该来 Tesla 工作。」
Hotz 回应道:「很感谢你的邀约,但是我之前就说了,我可不是来找份打工的差事的。等我真正碾碎 Mobileye 的时候我会让你知道。」
Musk 简单的回了两个字:「好的。」
动手干吧!
Hotz 在十月末的时候开始全身心地投入到了无人自驾驶技术的研究中。他在网上申请成为本田汽车服务中心,申请批准后,他能够为他的讴歌下载成套的手册和图表。很快,他就给自己的汽车上面安装上了各种电子元器件,其中包括了 Intel 的 NUC 迷你电脑,一组 GPS、一个交互开关等等。Hotz 将这一切都跟汽车的主电脑连接,用胶带把相互串联的电线在车顶上进行了固定。
有两项突破性进展使得 Hotz 的系统能够成真。首先是计算机性能的大幅提升。Hotz 所使用的图像芯片只是支持一般视频游戏主机的那种,它们用来读取汽车摄像头捕捉到的画面。Intel 性能强劲的芯片负责处理人工智能计算问题。
别的团队花数百万美金砸在硬件和传感器上,Hotz 得益于曾经在各种黑客比赛上崭露头角的技术,只花了 5 万美金就搞定了这一切,其中 3 万美金还是车子本身的钱……
第二个进步是深度学习的突破。这是一种在过去几年时间里大幅飞跃的人工智能技术。在深度学习领域,研究人员把任务分配给了计算机,然后就坐下来看机器自己教自己如何完成任务,掌握技能。
举个简单的例子,在过去,如果你想让电脑在照片中识别出一把椅子,那么你必须对这把椅子进行极其精确的描述,你必须告诉计算机你寻找的这个东西有四条腿,有一个平面。但是在最近几年时间里,计算机的性能变得非常强大,内存也变的便宜充足。这就为这项科技突破瓶颈打下了基础。研究人员只需要往电脑里输入海量信息,系统自己去识别这些数据就好了。Hotz 表示:「现在你给电脑看 100 万张有椅子的照片,然后再看 100 万张没椅子的照片。最终,计算机有能力从图片中很轻松的找出椅子出来,在某些图案复杂的照片上,它表现的比人类还要出色!」
就在我们初次驾驶 I-280 的前一个月,Hotz 大部分时间都花在了给这辆跑车改装上面,比如添加传感器,给硬件编程,串联各种电子元器件。一旦这些系统都就位正常运行了,他自己把车开出去了 2 个半小时,目的是让汽车去观察他是怎么开车的。回到车库,他把驾驶中出现的数据全部下载下来,然后设置算法,分析他在驾驶过程中处理不同路况情境时所给出的反应。汽车开始了解 Hotz 一般喜欢在车道的正中间行驶,并且愿意跟前面的车保持相对安全的距离。一旦这些分析都完成了,软件就可以为汽车设计出来最为安全的行驶路线。
直到我和他坐上车子的那一刻,这辆车子就像是刚刚进入青春期的孩子。
两个星期后,我们进行了第二次试驾。这一次的表现有又了新的改善。它可以在车道内进行自驾驶非常长的路线,屏幕上面显示的汽车实际行驶路线和电脑推荐的路线完美的结合在了一起。某些时候,讴歌自己就减速,跟前面的车子保持距离,有些时候,它根据旁边行驶的汽车收集信息,知道自己现在的路线应该出现一些弯度。这些行为 Hotz 可没有提前编程到汽车上。汽车开始自己做出决策了!
在 12 月初,Hotz 带着我进行了第三次试驾。这个时候,他彻底让自己的油门和刹车全部编程自动运行的了。令人吃惊的是,这辆车子依然行驶良好,完美的识别路上各种路况!
Hotz 所带来的科技突破并不仅仅是某种对现存无人自驾驶技术的低成本颠覆,他表示他现在已经开发出了一整套的理论方法,他拒绝透露细节内容,但是这套理论方法是围绕着让人工智能软件更好地从摄像头里解读图像而来的。
将机器自我学习的大脑真正激活!
「我们现在已经找到了一种更好的无人自驾驶解决办法,它完美地跟深度学习结合起来。」其他的无人自驾驶汽车编程代码是几十万行,但是 Hotz 的软件编程代码只有 2000 行。
之所以有这么大的差别,是因为一般的无人自驾驶汽车的编程都是根据不同的路况而预设定程序。一些代码保证了车子能够在高速路上跟其他车子保持相对安全的车距,但是还有一些代码得保证鹿如果冲上了马路汽车得及时刹车。Hotz 并没有在车里内置这样的规则,机器是真的在学习司机是如何应付复杂的路况,然后学着模仿,并且将这些行为通过算法进行改善提升。如果讴歌这个车子旁边有个骑自行车的人,那么它会自然而然给这次骑车人多留一点空间,因为 Hotz 就是这么做的。
Hotz 的编程是依照这样的想法实现的,而不是传统意义上的「如果,就」的规则。
在接下来的几个星期,Hotz 开始把讴歌开出去成为 Uber 的一辆「出租车」,这样它就能够识别更多的路况。他希望自己在接下来 5 个月的时间里得到一辆世界级的无人自驾驶汽车,一辆能够在 Musk 面前炫耀的汽车。他已经听说了 Tesla 在横穿金门大桥的时候遭遇不利,因为上面的车道划分的不是很明显。所以他打算自己拍摄一部视频,证明自己的讴歌将比 Tesla 更优秀。届时,Youtube 上的视频点击将高达百万次,Musk 肯定会注意到。
现在还不能说 Hotz 的软件和自我学习技术最终能够成什么样子。他这场自己筹资,单枪匹马搞的研究项目有可能最终让他非常谦逊地去敲 Google 家的门,说「给我一份工作吧。」
他说道:「当然现在有质疑,这不要紧,这只是伟大征程中的一部分而已,等着看吧。」
人工智能意味着人类将拥有更加自由的未来,它是第二次「工业革命」,上一次解放的是人们的肌肉,这一次解放的是人们的大脑。
他翘着二郎腿,在这间脏兮兮的车库的沙发上坐着,跟我谈起来了人工智能技术对人类的推动作用。
「并不是人人都具有道德了奴隶制就解除了。奴隶制之所以解除,那是因为我们有了工业革命,这让人们的肌肉闲下来了。我们现在处于另外一场工业革命的边缘地带。我希望能够让人工智能取代绝大多数人的工作。很多人会很乐于看到这个局面,因为其实很多人都不是很喜欢自己的工作。这一次『工业革命』不是解放人们的肌肉,而是解放人们的大脑。最后拥有工作的人只是人工智能程序员而已。」
Hotz 对未来的畅想让人们想到了《黑客帝国》这部电影,在那部电影中,机器接管了世界,所有人都连在供给食物和其他生存必需品的机器上面,所有人都迷失在了数字世界中。
Hotz 说道:「其实这一切早已经发生了。现在人们整日都坐在电脑跟前,无论是办公室还是家中。我们正在加速驶向未来,请不要在路上多虑,请尽情享受终点带来的自由。我们将拥有一个更好的世界!」
交通是人工智能改造世界的第一阶段,正是这一点才让 Hotz 有想法去介入这个领域。他希望自己的技术能够拓展到零售业,届时整个系统能够自己提供结帐服务。他说他之所以这么热衷于让人工智能接管世界上的工作,源于他对技术宗教一般的信仰。「技术并非是好的也并非是坏的。正如核技术一样,总有好的一面和坏的一面。当然有可能有一天人工智能把我们全都干掉,但是还有更大的可能是它给我们带来更好的世界。赌注下在科技上面是一次正确的,人类可以接受的赌博。」
「我不在乎钱,我要的是一种权力,不是凌驾于人类头上的权力,而是某种掌握自然,掌握技术核心的权力。我要知道它们运行的原理。」他笑着说道。
扫一扫,关注优尔城微信公众平台有意思的问题。&br&&br&用 HDL 可以描述 CPU,而 CPU 和软件编程语音是图灵等价的,因此 HDL 是图灵完备的。&br&只是 HDL 是在信号层面的描述和操作,这些描述和操作也是图灵完备的:能描述另一台图灵机 —— 即 CPU。&br&&br&编写 HDL 类似于编写软件中的编译器。
有意思的问题。用 HDL 可以描述 CPU,而 CPU 和软件编程语音是图灵等价的,因此 HDL 是图灵完备的。只是 HDL 是在信号层面的描述和操作,这些描述和操作也是图灵完备的:能描述另一台图灵机 —— 即 CPU。编写 HDL 类似于编写软件中的编译器。
不合适。&br&&br&要问1023写成十六进制有多少个1.
不合适。要问1023写成十六进制有多少个1.
junior:&br&&br&if ( shit ) {&br&} else if ( crap ) {&br&} else if ( damn ) &br&} else if ( fuck ) &br&} else {&br&}&br&&br&senior:&br&assert ( shit should never happen here if hardware works properly, based on my perfect logic reasoning
)&br&&br&master:&br&// following code should never be written because I fuck that ridiculous requirement off.
junior:if ( shit ) {} else if ( crap ) {} else if ( damn ) } else if ( fuck ) } else {}senior:assert ( shit should never happen here if hardware works properly, based on my perfect logic reasoning )master:// following code should never be…
一些区别:&br&&br&C: 编写C代码,写出来的是C代码。&br&C++:编写C++代码,写出来的是还是C代码。&br&&br&C:运行时内存错误。&br&C++:看起来像是运行时内存错误。&br&&br&C:编译器警告你。&br&C++:编译器警告它自己。&br&&br&C:1天学会,1年掌握。&br&C++:1年学会,-1年掌握。&br&&br&C:Goto有害。&br&C++:C++可以无害。&br&&br&C:入门语言。&br&C++:出门语言。&br&&br&C:面向过程。&br&C++:面向C++。&br&&br&C:一切皆指针。&br&C++:一切皆编译器。&br&&br&C:烂代码能轻易编过,也能轻易调过。&br&C++:烂代码不能轻易编过,也不能轻易调过。&br&&br&C:说精通的可能精通。&br&C++:说精通的肯定不精通。
一些区别:C: 编写C代码,写出来的是C代码。C++:编写C++代码,写出来的是还是C代码。C:运行时内存错误。C++:看起来像是运行时内存错误。C:编译器警告你。C++:编译器警告它自己。C:1天学会,1年掌握。C++:1年学会,-1年掌握。C:Goto有害。C++:C++…
看起来很平常,但是 insightful:&br&&br&&blockquote&优雅的代码的另一个特征是,它的逻辑大体上看起来是树状的结构(tree)。这是因为程序所做的几乎一切事情,都是信息的流动和分支。你也可以把代码看成是一个电路,电流经过导线,合并或者分流。&br&&/blockquote&&br&&blockquote&程序的很大部分功能,是进行信息处理。从一堆纷繁复杂,模棱两可的信息中,排除掉绝大部分“干扰信息”,找到自己需要的那一个。正确地对所有的“可能性”进行推理,就是写出无懈可击代码的核心思想。&br&&/blockquote&&br&作者基本上认为通过良好的编程语言和编码习惯,更容易得到形式化上正确的代码,即更正确的代码。&br&&br&&br&推论一:&br&语言无法阻止程序员写出傻逼代码。&br&&br&推论二:&br&优秀的语言能减少傻逼程序员的伤害。&br&&br&推论三:&br&论赋值语句是有害的。&br&&br&推论四:&br&可推理是无懈可击代码的基础。&br&&br&推论五:&br&你们以为我只会PL吗?我在教你们编程。&br&&br&(初稿)
看起来很平常,但是 insightful:优雅的代码的另一个特征是,它的逻辑大体上看起来是树状的结构(tree)。这是因为程序所做的几乎一切事情,都是信息的流动和分支。你也可以把代码看成是一个电路,电流经过导线,合并或者分流。程序的很大部分功能,是进行…
常量是代码中的小天使,是白细胞。&br&&br&广义来讲,围绕不变的东西做出的设计和编码的可靠性远大于那些没搞清楚哪些变化,哪些不变,随意进行的设计和编码。&br&&br&语言的设计是对良好编程范式和习惯的总结。要设计好的语言,作者必须有大量的实际编程的经验,常量正是这些经验中的一种:守其恒常,观其变化,为天下式。
常量是代码中的小天使,是白细胞。广义来讲,围绕不变的东西做出的设计和编码的可靠性远大于那些没搞清楚哪些变化,哪些不变,随意进行的设计和编码。语言的设计是对良好编程范式和习惯的总结。要设计好的语言,作者必须有大量的实际编程的经验,常量正是这…
表面上看是:懒累穷抄&br&实际上,jquery 等是实际项目和需求+优秀程序员+高质量社区的结果。&br&要有鱼首先要有水。&br&某些“大牛”分不清楚,“做出好东西需要掌握的技术我都会” vs &我会用掌握的技术做出好东西& 之间的巨大差别。
表面上看是:懒累穷抄实际上,jquery 等是实际项目和需求+优秀程序员+高质量社区的结果。要有鱼首先要有水。某些“大牛”分不清楚,“做出好东西需要掌握的技术我都会” vs "我会用掌握的技术做出好东西" 之间的巨大差别。
什么是意义?
什么是意义?
自动化和智能化一切。&br&&br&(当然包括赚钱)
自动化和智能化一切。(当然包括赚钱)
&a href=&///?target=http%3A///subject/1177968/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&建筑的永恒之道 (豆瓣)&i class=&icon-external&&&/i&&/a&
只是属于你的问题还没有出现。
只是属于你的问题还没有出现。
事实上,你只需要一根绳子:&br&&br&&img data-rawheight=&450& data-rawwidth=&600& src=&/c7d4cebceeb_b.jpg& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/c7d4cebceeb_r.jpg&&&br&而且,我猜他肯定用 emacs 而不是 vi.&br&&br&&blockquote&甚至感觉
把整个系统装在usb上,这样到哪里插在电脑上,从usb启动就直接可以进入开发状态,岂不是更方便,是否可行,有没有什么缺点?&br&&/blockquote&可以。缺点是你无法同时使用电脑上面的OS。&br&&br&&blockquote&甚至感觉,整个开发环境装在amazon ec2 上,走到哪里,直接在远程操作云端服务器开发代码,是否可行,有没有什么缺点?&br&&/blockquote&可行,但你需要足够可靠带宽的网络。大概需要肉身翻墙。&br&&br&&blockquote&刚刚开始准备linux+vim
学习,还希望大牛多多指点 ?&br&&/blockquote&见上图。
事实上,你只需要一根绳子:而且,我猜他肯定用 emacs 而不是 vi.甚至感觉 把整个系统装在usb上,这样到哪里插在电脑上,从usb启动就直接可以进入开发状态,岂不是更方便,是否可行,有没有什么缺点?可以。缺点是你无法同时使用电脑上面的OS。甚至感觉,整…
相比手抄汇编,手抄cpp 就是 “体裁不限,诗歌也行”。嗯哼。&br&&br&(别问我汇编是什么体裁)
相比手抄汇编,手抄cpp 就是 “体裁不限,诗歌也行”。嗯哼。(别问我汇编是什么体裁)
既然你提到“良好的&b&职业&/b&习惯”,称得上&b&职业习惯&/b&的,Dijkstra 的书才算得上:&br&&br&&a class=& wrap external& href=&///?target=http%3A///Discipline-Programming-Edsger-W-Dijkstra/dp/X& target=&_blank& rel=&nofollow noreferrer&&A Discipline of Programming&i class=&icon-external&&&/i&&/a&&br&&br&他理论物理背景,编程和算法宗师,以非常严谨又谦卑的态度对待如今这一&b&大众职业&/b&。任何从事该职业的人都该有这种态度 —— 如果你真的想知道什么是“良好的职业习惯”,那就是:&br&&br&&b&数学(逻辑)上(人脑)证明了自己的程序 bug-free.&/b&&br&&br&另一本经典: &a class=& wrap external& href=&///?target=http%3A///The-Science-Programming-Monographs-Computer/dp//ref%3Dpd_sim_b_3%3Fie%3DUTF8%26refRID%3D09W5X17YK5VTXTWJYKVV& target=&_blank& rel=&nofollow noreferrer&&The Science of Programming&i class=&icon-external&&&/i&&/a&&br&&br&让你感受下什么才叫编程。&br&&br&&br&什么?你知道?不,你那不叫编程,你那叫打字,顶多带点排版。
既然你提到“良好的职业习惯”,称得上职业习惯的,Dijkstra 的书才算得上:他理论物理背景,编程和算法宗师,以非常严谨又谦卑的态度对待如今这一大众职业。任何从事该职业的人都该有这种态度 —— 如果你真的想知道什么是“良…
既然话题有猿,忍不住补上一刀:&br&&br&&img data-rawheight=&258& data-rawwidth=&427& src=&/c2a92a0fcaee2b0ca75816d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&427& data-original=&/c2a92a0fcaee2b0ca75816d_r.jpg&&
既然话题有猿,忍不住补上一刀:
不用IDE的好处:&br&&br&1. 轻量&br&2. (最重要的):限制自己不要乱搞!&br&&br&&b&你必须以自己大脑能容易装载下去的方式去写代码&/b&,当你习惯依赖(的确)强大的工具(比如如果能随时 complete 函数名,你便懒得一个取短小名符其实的名字;或者强大搜索功能,让你懒得将文件按功能依赖划分清楚),你可能会失去对代码的有效控制。&br&&br&约束并非坏事,方便也未必好事。你如果不知道自己在写什么,什么工具都没用。
不用IDE的好处:1. 轻量2. (最重要的):限制自己不要乱搞!你必须以自己大脑能容易装载下去的方式去写代码,当你习惯依赖(的确)强大的工具(比如如果能随时 complete 函数名,你便懒得一个取短小名符其实的名字;或者强大搜索功能,让你懒得将文件按功…
不是每个人(应该是,几乎没有人)都需要编写发布的编译器,但作为一个整天被编译器女神吐槽各种 warning 和 error 的跪添屌丝,你不知道编译器是怎么回事,就像你永远摸不到女神的G点 —— 多么遗憾的一生。&br&&br&技术上当然有极大的好处,搞通一遍之后估计牛逼的和 &a data-hash=&ecc0ec035f& href=&///people/ecc0ec035f& class=&member_mention& data-editable=&true& data-title=&@vczh& data-tip=&p$b$ecc0ec035f&&@vczh&/a& 一样,但如果你不是专门做编译器的话,考虑到学习的成本问题,下面是一个强大的理由:&br&&br&看清自己的智商。&br&&br&不信?编译器入门级教材龙书,后面的习题帮你认清现实。&br&&br&&br&&i&&b&=====
(more) seriously =====&/b&&/i&&br&&br&&i&Masterminds of Programming&/i& 这本书是对 27 位程序语言创造者(也就是编写编译器的顶级程序员)的采访,真知灼见都溢出了:&br&&br&&b&[Bjarne/C++]&/b&&br&&i&- How do you debug? Do you have any suggestion for C++ developers?&/i&&br&- By introspection. I study the program for so long and poke at it more or less systematically for so long that I have sufficient understanding to provide an educated guess where the bug is.&br&&br&- 阁下怎么调试?&br&- 我太牛了,盯着屏幕看,bug 什么的就会自动显形。&br&&br&&br&&b&[Guido/Python]&/b&&br&- How do you test and debug your code?&br&- ... I’ve gotten a pretty good intuition for doing QA, but unfortunately it’s hard to explain.&br&&br&- 阁下怎么调试的?&br&- 跟你说不清楚,因为靠的是我牛逼的直觉。&br&&br&&br&&b&[Tom/Basic]&/b&&br&- How should debugging be taught?&br&- One of our former students become an Apple fellow doing some very significant work for&br&them and then retired. Before that he worked at Dartmouth in the computer center. He&br&wrote a PL/1 compiler, and it’s a big thing, and he checked it, and looked at it, and so on,&br&but he never tested it, he never ran it until it was all done. You know, 20,000 or 30,000&br&lines of code, and the only test he did was to read it. Then he ran it and it worked the first&br&time!&br&&br&- 阁下怎么调试的?&br&- 我有一个学生。在开发两三万行的编译器代码中,零测试,零运行,最后完成时一次运行成功。&br&&br&&br&总之,到了一定的境界,你的大脑就成了人肉 compiler,这种感觉,估计类似洞察一切的上帝。&br&&br&&br&&br&&b&btw, 这本书的中文翻译是屎。&/b&
不是每个人(应该是,几乎没有人)都需要编写发布的编译器,但作为一个整天被编译器女神吐槽各种 warning 和 error 的跪添屌丝,你不知道编译器是怎么回事,就像你永远摸不到女神的G点 —— 多么遗憾的一生。技术上当然有极大的好处,搞通一遍之后估计牛逼…
看看 Linus Torvalds 自己的回答:&br&&br&&a class=&video-box& href=&///?target=http%3A///v_show/id_XODA5NTI3NDcy.html& target=&_blank&&
&img class=&thumbnail& src=&/A807F8D62BED927C50-1A28-260B-E6E145&&&span class=&content&&
&span class=&title&&Q&A session with Linus Torvalds - Why is Linux not competitiv...&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/v_show/id_XODA5NTI3NDcy.html&/span&
&/a&&br&&br&&b&基本意思是说, Linux 没有机会给桌面电脑预装。但很看好 Google Chromebook。&/b&&br&&br&&br&
This is my personal failure to Linux that I started Linux as a desktop operating system. And it's the *&b&ONLY&/b&* area where Linux hasn't completely taken over. That just annoys the hell a lot of me. It's like, you said you has had some success in the mobile operating system —— Google's last number was 900K new activations everyday —— that's not sounds success, right.&br&&br&So the desktop is really hard, and I know it's hard, and it's still annoying that the desktop is basically the last hold up. The reason that desktop is so hard to crack is most consumers do not want to install an operating system on their machine. And that's not desktop century. You don't want to install on your cellphone either, right? The reason Linux is successful on cellphone is not because you have 900K people downloading disk image, and installing on their cellphone everyday. No, it's because the ... cellphone pre-installed. And that has never happened in the desktop market and it's really hard to get it to happen. And I mean you get it to, there had been company itself, like Dell, even in Finland, for I know they do it in US, but I think they do it in Finland too. That as particular big business you want to run Linux. They will pre-install Linux on your desktop, but it's something where you have to specify and want it, and they do it for very limited portion of there, of the machines they sell. So it's not something that very common. And if you don't get the pre-installs, you never going to get the desktop downloads. And would ever that happen, right now, the biggest toy is projects like Google chromebook, and I have a first generation chromebook, and the thing is slow and horrible, and when I get back home, I think I should have a second generation chromebook in the mail, just because for some other reason, Google sends me the .... So, I will see I know the hard work so much better, I'm no longer worried about the slow part. But this is something where I don't think you hit on it, I know you don't hit on the first generation, I don't think it hit it on the second, on the third generation maybe, on the forth, fifth, that's when we start talking. If you look at Android, it wouldn't Android 1.0 that took off. So I'm hopeful that on the desktop, it will happen, but the only way it happens is if we have pre-installs, and it's not there today.
看看 Linus Torvalds 自己的回答:基本意思是说, Linux 没有机会给桌面电脑预装。但很看好 Google Chromebook。
This is my personal failure to Linux that I started Linux as a desktop operating system. And it's the *ONLY* area where Linux hasn't…
简单点说,比如你发现一个进程总是占用 100% CPU,通过层层检查,发现是显卡驱动中的一个 针对特别硬件的新 bug。&br&&br&然后你决定修改驱动,同时顺便优化了一下 kernel 相关代码,一夜之后,当黎明的曙光照在显示屏上时,你决定将修改部分提交到社区。&br&&br&三天后, Linus 群发邮件,说这将是下一个 kernel 版本的一个重要特性,并感谢你的贡献。&br&&br&当然,你并没有及时看到邮件,因为你正一边搂着女友,一边跟她讲多年前看过的《暗店街》。
简单点说,比如你发现一个进程总是占用 100% CPU,通过层层检查,发现是显卡驱动中的一个 针对特别硬件的新 bug。然后你决定修改驱动,同时顺便优化了一下 kernel 相关代码,一夜之后,当黎明的曙光照在显示屏上时,你决定将修改部分提交到社区。三天后, L…
不懂代码是硬伤。&br&&br&99% 的可能你会被程序员在背地里叫傻逼。&br&1% 的可能由于你极大的个人魅力 + 靠谱的薪水 + 靠谱的管理 +
(总之,别想了,不可能)&br&&br&在这个行业里面有位不懂代码的老前辈,大概长的这样:&br&&img data-rawheight=&232& data-rawwidth=&217& src=&/10b681574eeccda7b9bad_b.jpg& class=&content_image& width=&217&&&br&了解&a class=& wrap external& href=&///?target=http%3A///& target=&_blank& rel=&nofollow noreferrer&&他和下属的故事&i class=&icon-external&&&/i&&/a&有助于你将99%降低到98.99%.
不懂代码是硬伤。99% 的可能你会被程序员在背地里叫傻逼。1% 的可能由于你极大的个人魅力 + 靠谱的薪水 + 靠谱的管理 + ... (总之,别想了,不可能)在这个行业里面有位不懂代码的老前辈,大概长的这样:了解有助于你将99%降低到98.99%.
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 编程天赋 的文章

 

随机推荐