《编程人生》读书笔记

为什么喜欢编程?

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

  • 《计算机程序设计艺术》
原文地址:https://www.cnblogs.com/wuhualong/p/reading_note_coders_at_work.html