为什么喜欢编程?
Jamie Zawinski
- 觉得人工智能很迷人,于是学习Lisp
- 喜欢捣鼓用户界面、学习Lisp机器工作机制、折腾操作系统
- 喜欢团队争论技术问题的氛围
- 发布的Netscape产品影响了人们的生活
- 喜欢编程解决数学计算、几何和图形之类的谜题
Brad Fitzpatrick
- 两岁起就开始玩或看父亲玩Apple II,5岁时父亲就教他编程
- 出于和朋友们闹着玩的目的,开发了LiveJournal
- 看到别人在使用自己写的软件,感觉很酷
Douglas Crockford
- 机缘巧合学习了Fortran课程,发现自己很擅长编程
Brendan Eich
- 在圣克拉拉大学读物理本科,常常去斯坦福大学研究DEC分时系统
- 喜欢写程序,喜欢上数学和计算机方面的课,喜欢研究和讨论自动机理论和形式语言
- 被编程中理论与实践的结合所吸引,特别是在编译器构造过程的前端
编过哪些程序?
Jamie Zawinski
- 领导开发了Lucid Emacs
- Unix平台下的Netscape浏览器
- 邮件阅读器
- 屏幕保护程序
Brad Fitzpatrick
- 机器人程序,往聊天室灌水、提交线上表单
- 投票程序
- LiveJournal社区
- 对手机棋类游戏写了个求解程序
Douglas Crockford
- 反汇编Fortran系统运行时
- 发明JSON
Brendan Eich
- 开发《吃豆人》、《大金刚》等游戏
- 写形式语言生成器、宏指令处理器
- 在Silicon Graphics写了网络管理和数据包嗅探层
怎样编程?
Jamie Zawinski
- 具有把东西大卸八块的好奇心,渴望弄明白底层是怎么回事
- 不断地挖掘源代码和参考手册
- 具备快速掌握别人的代码并弄清楚其用法的技能
- 注释要描述用处、原因、范围等有价值的东西
Brad Fitzpatrick
- 了解系统底层正在发生的事情,不轻信别人的库、代码和接口
- 设计软件时,从接口开始,比如常用方法、常用RPC或常用查询
- 要试着做点更难的东西,超出能力范围的东西
- 要多读代码,从别人的代码中往往能学到新东西
- 当我在bin目录里写些很傻的shell脚本、Perl脚本,或者别的东西做自动化,它一定会有回报的
- 像科学家那样思考,一次改变一样东西;学会增量地开发,这样每一步都能进行验证
- 有耐心,试着去了解问题的本质
Douglas Crockford
- 倡导良好的代码阅读方法,开发者多花点时间阅读彼此的代码
- 编写可读性强的代码,在代码规范性、问题分解方法等方面注意可读性
- 精通读写能力,对程序员的建议:多读、多写
使用什么编程语言?
Jamie Zawinski
Lisp
研究人工智能需要用到。
C
使用C语言来克服机器性能不高的问题。
Java
不存在你拼命要避开的概念、对模块化的要求高
Perl
电脑默认安装、方便
Brad Fitzpatrick
Perl
Perl从不限制我写代码的风格
- C
Java, C++, Python, Javascript, C#
需要时会使用这些语言
Douglas Crockford
- JavaScript
Brendan Eich
如何定位自己?
Jamie Zawinski
- 处于手艺人和艺术家之间,具体看是什么项目
Brad Fitzpatrick
- 科学家或者工程师吧。你必须懂得科学的方法,一次改变一样东西,如何诊断问题。工程师是指设计方面的
- 我不觉得自己是在和谁竞争,我也不太关心别人是否比我更好,因为我觉得已经有无数人比我好了。我发现我们总是处于中间位置,而我也很乐意保持在这个位置上。
Douglas Crockford
- 作家
Brendan Eich
书籍推荐
Jamie Zawinski
- 《计算机程序的构造和解释》
Brad Fitzpatrick
- 《高阶Perl》
- 《计算机程序设计艺术》
Douglas Crockford
- 《计算机程序设计艺术》
Brendan Eich
- 《计算机程序设计艺术》