你好,我是陈浩网名左耳朵耗子。
在整个为期一年的专栏内容中啊,我会一步步向你推荐一些有价值的内容供你参考。
这些内容有中文,有英文,也有视频。
他们都是我认为对我非常有价值的信息,我也希望他们能够对你有同样的帮助和启发。
今天呢我为你推荐五篇文章,第一篇是stack of flow,上面推荐的一个经典书单。
第二篇呢是美国某大学教授给计算机专业学生的一些建议,其中啊有很多的学习资源。
第三篇呢是令定的高效代码复查,实践是个很不错的方法,值得你去读一读。
第四篇呢是一份关于程序语言的bug数,相关的有趣的报告,可以让你对各种语言有所了解。
最后呢是一本关于CI加性能优化的电子书。参考资料:https://51gx.top/detail/263
这几篇文章呢我都在文章里给出的链接,方便你进行查看。
在stack上面啊,有用户问了一个问题,大致是想让大家推荐一些每个程序员都应该阅读的最有影响力的图书。
虽然这个问题已经被关闭了啊,但这是一个非非常热的话题。
排在第一位的用户啊给了一大串图书的列表,看上去主要是吓人。
不过呢都是一些相当经典,相当有影响力的书。
在这里呢我就重新罗列一些,我觉得你必须要看的。
第一本呢是代码大全,虽然说这本书有点过时了,而且后头可以垫显示器,但是这绝对是一本经典的书。
第二本呢是程序员修炼指导,这本书也是相当经典,我觉得就是你的指路明灯。
第三本呢是计算机的构造和解释,这是经典中的经典,也是必须要读的那第四本呢是算法导论,这是美国本科生的教材啊,这本书呢应该也是中国计算机学生的教材。
第五本是设计模式,这本书啊是面向对象设计的经典书籍。
第六本是重构,这本书呢是代码换位到和先应代码的最佳实践。
第七本啊是人猿神话,这本书可能有点过时了,但还是比较经典的一本书。
第八本呢是代码整洁制造,主要是讲细节之处的效率完美和简单,还有CI加两本经典的,不能再经典的书。
Effective c plus plus和more effective c plus plus啊,也许你觉得c加加简单,但这两本书带来的对代码稳定性的探索方式啊对你很有帮助。
因为这种思维方式同样可以用在其他地方,以至于后来的各种模仿者,比如effective java也是一本经典书。
那除了刚刚所介绍的书籍之外呢,unix编程技术、unix高级环境编程也是相当经典的书籍。
还有好多啊,我就不在这里一一列举了,你可以看看其他的答案。
我发现自己虽然读过好多书,但同样还有好些书都没有读过。
所以这个问答对我自己也很有帮助。
那介绍完了这个经典书单啊,接下来我再给你介绍一下我推荐的第二篇文章,名字叫做whatever computer sizence major说,意思是每个搞计算机专业的学生应有的知识。
这篇文章的作者是martil, mite是美国犹他大学计算机学院的副教授。
二零零七年呢在佐治亚理工学院取得博士学位。
因为计算机专业课程很多,所且还会随着时代的变化,科目的课程组成也在不断的变化。
所以,如果不经过思考,直接套用现有的计算机专业课程列表,就有可能忽略一些将来可能变得重要的知识点。
所以这里martitile力求从四个方面来总结得出这篇文章的内容。
那第一个方面是要获得一份好工作,学生需要知道什么。
第二呢是为了一辈子都有工作干,那学生需要知道什么?第三是学生就要知道什么,才能进入原精生院。
那第四个方面呢是学生需要知道什么才能对社会有益。
那这篇文章不仅仅对刚毕业的学生有用,对有工作经验的人同样有用。
那这里呢我把这篇文章的内容要点总结一下。
首先对于我们每个人来说,作品集会比简历更有参考意义。
所以在自己的简历中啊,应该放上一些自己的项目经历,或者是开源软件的贡献,又或者是你完成的软件的网址啊等等。
那最好呢有一个自己的个人网址,上面有一些你做的事啊,自己的技能经历和一些你的文章和思考啊,这样会比简历更好。
其次呢,计算机专业工作者也要学会和人交流的技巧,包括如何写演示文稿,还有在面对质疑时如何与其他人辩论的能力。
最后呢他从各个方面去展开计算机专业人士所需要的硬技能,比如工程类、数学、uniits、哲学和实践系统管理,各个技计语言、离散数学、数据结构与算法、计算机体积结构、操作系统、网络安全、密码学、软件测试、用户体验、可视化并行计算,还有软件工程、形式化方法、图形学计算,那人工智能、机器学习以及数据库等等。
那如果详细阅读这篇文章呢,你就可以了解计算机专业知识的全貌。
那这篇文章的第三个部分啊,简直就是一个知识资源。
向导库给出了各个技能方向和观键的知识点,你可以跟随着这篇文章的相关链接学到更多的东西。
我推荐的第三篇文章叫做lindings tips for highly effective code review,意思是lindn的高效代码复查技巧。
对于code review呢,我曾经写过一篇文章,叫从code review谈如何做技术讲述的。
为什么code review是一件很重要的事情。
今天推荐的这篇文章是linking的相关实践。
那这篇文章介绍了lincolink的内部实践的coreview的形式。
具体来说呢,lincolink的代码复查有这样几个特点。
第一个特点是从二零一一年开始就强制要求在团队成员之间做代码复查。
科review带来的反馈意见,让团队成员能够迅速提升自己的技能水平。
这又解决了林肯电影各个团队近年来因为迅速扩张而带来的技能不足的问题。
第二个特点呢是建立公司范围的call review的工具,这样就可以做跨团队的call. Review既有利于消除bug,提升质量,也有利于不同团队之间经验互通。
第三个特点呢是把call review的经验作为员工晋升的参考因素之一。
Call review的一个难点是review可能不了解某块代码修改的背景和目的。
所以lincoldin要求啊,在代码提交到版本管理系统之前呢,要对它做清晰的说明,以便复查者了解其目的,促进review的进行。
这也是lindin代码复查的第四个特点。
我认为啊这个方法实在是太赞了。
因为我看到很多时候review都会说我不了解对方代码的背景,或者说代码量比较大,而无法做call review.但是呢他们却没有找到相应的办法去解决这个问题。
Lindin对提交代码写说明文档这个思路其实是一个非常不错的方法。
因为代码提交人写文档的过程,其实也是重新梳理的过程。
我的个人经验啊是写的文档的时候,通常会发现自己把事干复杂了,应该把代码再简化一下,于是呢就会自己回头去改代码。
可以说啊写文档就是在写代码,有些review工具能允许给出的反馈,只是代码怎样修改可以变得更好。
但长此以往呢,就会让人觉得review提出的意见都表示原先的代码不够好。
所以lindin的代码复查的第五个特点就是为了提高员工的积极性。
Lindin的代码复查工具允许提出这种代码很棒之类的评价,以便让好代码的作者得到鼓励。
我认为啊这个方法也很赞,正面鼓励的价值不可小看。
第六特点是为call review的结果,写出有目的性的注释,比如消除重复代码,增加了测试覆盖率等等。
那长此以往呢,也让团队的价值观更加明确。
它的第七个特点是在call review中呢,不但要rereview提交者代代码,还要review提交者做过的测试。
那除了一些单元测试,还有一些可能是手动的测试提交者,最好列出所有测试过的case啊,那这样可以让review做出更多的测试建议,从而提高质量。
最后一个特点呢是对code view有明确的期望。
不过分关注细枝末节,也不要炫技,而是对要review的代码有一个明确的目标。
介绍完了,link给你内部实践的coreview形式。
接着我再来给你推荐第四篇文章a last scale study of programming languages and co quality in behab.意思是编程语言和代码质量的研究报告。
在文中呢我放了几张这篇文章中的统计图、分类图等等的图片啊,有助于你理解。
这是一个很有趣的研究,有四个人啊,从github上分析了七百二十八个项目,六千三百万行代码近三万个,提交人一千五百万次提交和十七种编程语言。
然们想找到编程语言对软件质量的影响,然后呢他们还对编程语言做了一个分类,想找到不同类型的编程语言的bug问题。
那接着呢,他们还对众多的开源软件和bug类型分别做了一个聚类。
那其中分析的方法我就不多说了,我们来讲一下相关的结果。
首先呢,他们得出来的第一个结果是从查看bug. Face comments次数情况来看呢,CECI加objective CPHP和和python中有很多很多的comments都是和bug face相关的。
而closure house、 ce、 ruby和scallar在bug face common次数上明显要少很多。
在文中的编程语言的bug情况图中呢,如果是正数,就说明高于平均水平。
如果是负数呢,则是低于平均水平。
那分析出的第二个结论呢,是函数式编程语言的bug明显比其他大多数的语言要好很多。
由隐式类型转换的语言产生的bug数啊明显比强类型的语言要好很多。
在函数式语言内部呢,静态类型的语言要比动态类型语言的程序啊出bug的可能性要小很多。
那研究者呢除了想找到编程语言对软件质量的影响和不同类型的编程语言的bug问题,他们还想搞清楚bug数是否会和软件的领域相关。
比如业务型、中间件儿框架live或者数据库。
最后研究表明啊,他们之间并没有什么相关性。
我用一张图片表示了各个语言在不同领域的bug率。
那最后呢研究人员想搞清楚bug的类型是否会和语言有关系,最终的结果的确如此。
那bug的类型和语言是强相关的。
在各有源不同的bug类型的情况图中,如果你看到的是正数,说明高于平均水平。
那如果你看到的是负数,则是低于平均水平。
也许啊这份报告可以在你评估编程语言的时候啊,有一定的借鉴作用。
好,我推荐的最后一篇文章呢是optimising software in c plus plus中文叫做c加加软件。
性能优化时者是anineer fog.而这本书是所有c加加程序员都应该要读的一本书。
它从语言层面、编译器层面、内存访问层面、多线程层面、CPU层面讲述了如何对软件性能调优。
时代是一本经典的电子书,anger fog还写了其他几本和性能调优相关的书。
你可以在文章里我给的网址中去下载,我今天推荐的内容啊都比较干都,需要慢慢吸收体会啊,当然最好是能到实践中去用一用,相信这样你才会有更多的感悟和收获。
另外呢,如果你还对哪些方面的内容感兴趣,欢迎留言给我。
我后面收集推荐内容的时候啊,会有意识的去关注整理。