读书笔记

《大道至简》:

  • “程序 = 算法 + 结构”。#用java可以开发网站,用php也可以开发网站,归根结底是用到的结构(如MVC模式)和算法(如地图上求两点间最短路dijkstra)相同

  • “语言的不同只在于适用范围,没有好坏之分”。#C++和Java都是好语言,都有很多人在用,C++适合开发操作系统,Java适合开发网站。


《构建之法》:

  • 软件企业=软件+赢得用户的方法(即营销手段)。

  • 软件工程不仅是开发软件,还有运营软件(给软件更新,更改软件内容)和维护软件(给软件改bug和增强软件的安全性)。

  • 软件功能分类:杀手功能、外围功能、必要需求、辅助需求

    • 例子(英汉词典app):
      杀手功能:文字识别技术,可以在屏幕上取词解释,拥有独家权威词典,等等
      外围功能:在各个平台上都能运行
      必要需求:单词短语释义的准确性(如果达不到这一点,用户就不会来使用)
      辅助需求:可以做各种皮肤(这也许能让一些用户更喜欢这个软件,但不是决定因素)
    • 例子(王者荣耀):
      杀手功能:五V五比赛0延迟,,优秀的人机AI,支持上万人同时在线,等等
      外围功能:支持Android,苹果
      必要需求:优秀的反外挂系统和支付系统(如果达不到这一点,用户就不会来使用)
      辅助需求:奖励系统,各种皮肤特效。

《人月神话》:

  • 人是程序员,月是时间,,如果10人干1个月如果等同1人干10个月那就成神话,即10人干1个月的软件工程进度是恒小于1个人干10个月的。
    • 解释:假设每个人一天的工作量恒定,那么10个人干1个月的工作量是等于1个人干10个月的。但是这十个人之间需要交流,进度会下降不少。
    • 原因:其实一切的根源就是我们软件造的越来越大,大到像王者荣耀那样(几百万行源代码,还只是源代码),我们人类一个人的信息流根本无法掌控。这种根源就是软件危机。

《梦断代码》:

  • 一件真实发生的事,一群很有经验的代码牛人先进软件开发模式的指导下,没有资金压力(卡普尔,莲花公司创始人提供钱),在更多大牛的带领下,原计划用一到两年的时间开发出一个备受期待的个人信息管理软件Chandler后来花了七年时间才完成这一创举,但是已经落后时代太久。

  • 我的理解,时间脱了这么久的原因就是,这群大牛讨论了很多细节,而没有付诸实践,他们太专注于细节了,想要保证一次性开发出完美的软件,追求代码在一开始就做到完美。而不是在规定的时间完成规定的事儿


《Doom启示录》:

  • “由于摩尔定律的规律,某个时间点上要极其聪明的图形程序员才可以做出来的东西,在若干年之后只要能力还可以的程序员就能复制出来。” ----约翰·卡马克
Quake逼着他彻底另起炉灶,几乎没有任何Doom里的技术可以沿用到Quake中来。Doom通过一些网络编程的小技巧来支持四个玩家对战,但Quake要支持十六个玩家通过因特网进入到同一个世界;Doom并不是真三维的视图,它是局促简陋的所谓“二点五维”,而Quake要展现一个真三维的世界,就像现实世界里一样,玩家的视线将可以转向任意角度,所有物品--包括玩家本身--都不再是二维动画,而是三维的多边形。这个虚拟世界将更加令人信服。但让人气馁的是,卡马克的引擎无法绘制出一个完整的世界,或者用更专业的说法,一个完整的可视集合。Quake的世界里布满了缝隙和漏洞,当卡马克穿行于一条过道中时,他只会失望地发现,过道的尽头不是期望中的墙壁,而是一片蓝色的虚空。它无处不在:地面上、墙上、天花板上,到处是蓝色的虚空。他的虚拟世界千疮百孔。卡马克的思维完全陷入其中,他假想着各种几何体如何依照他的指令移动、旋转,他要把它们分解开,调整,再组装,再分解……,哪怕他在凌晨四点蹒跚着走进家门时,这些几何体仍在他脑海里飘来飘去、飘来飘去、没有尽头。同龄人会梦到一对男女在屋里的关系,而卡马克只会梦到一对多边形在三维空间中的关系。一天清晨,他坐在屋里,看着编码后的指令沿手臂传送,指导着它如何抬起、伸出、收回,他觉得奇怪,现实生活里手臂不是这样工作的呀,这肯定是个怪异的梦--他忽然惊醒,一身冷汗。他被困在了Quake的世界里,无处可逃,哪怕是在睡梦中。
“你带了阿司匹林没?”卡马克向朋友问道,他们正走进拉斯维加斯的一间赌场。
“你头疼?”
“还没,”卡马克说:“但马上就要疼了。”
这是1998年2月8日,卡马克就要对他的脑力进行一次挑战:在二十一点游戏中记牌。这是他的最新爱好。“作为一个略懂概率统计学,并从不相信运气、命运、因缘、上帝(或其他神)的人,惟一能使我感兴趣的赌博游戏就是二十一点。”卡马克在一份计划文件里写道:“玩二十一点可以算做是一种对自控力的考验,知道如何玩以及该如何记牌很简单,困难的地方在于,你必须从头到尾都表现得像个机器人一样,而不是屈从于所谓的‘直觉’。”在出发之前,卡马克进行了一些针对性训练,就像他学习其他事物一样,他先是买了一些书来看,然后在计算机上写出程序--当然,这次不是什么三维引擎,而是一个二十一点游戏的模拟程序。
研究工作很奏效,卡马克赢了两万美元,他随后把这笔钱捐给了自由软件基金会(Free Software Foundation):一个以“黒客伦理”为准则,在这个物欲世界里坚持着自己操守的组织。“我没想靠二十一点为生,”卡马克从赌城回来之后写道:“所以我不怎么担心被从赌场里劝退。”没过多久,在他第二次前往拉斯维加斯时,他体验到了这种经历:几个身着黑装的彪形大汉围到他身边,告诉他:“如果你不玩二十一点,而改玩其他游戏的话,我们将不胜感激。”
同桌的人们简直难以置信。“他们怎么能这样?”一个女人问道。
“他们认为我在记牌。”卡马克告诉她。
“他们认为你能记住所有这些牌?”
“嗯,差不多是这个意思。”
“哇噢,你是做什么的?”
“我是个计算机程序员。”说完他就被护送着走出赌场。
posted @ 2022-06-13 17:20  zhuangzhongxu  阅读(64)  评论(0编辑  收藏  举报