《程序开发心理学笔记》(持续更新)

第一章 阅读程序

1-0

        很少有程序员阅读他人写的程序【现在可能不是这样了,但是阅读程序所占用的时间确实比较少】,能够读懂程序为何如此编写(有的是因为硬件,有的是语言特性,有的是历史遗留,有的是软件规范,有的是业务要求)就是我们的目标。

        可以从github上下载一些开源的项目来读,关于如何阅读程序,有一本《程序员超强大脑》可以看看。很遗憾的是我好像从来没有读过超过100行以上的别人写的代码。

 1-1

        虽然是进行软件开发,但是软件是运行在硬件基础上的。硬件的改变也会影响到软件的写法。例如内存有限的情况下就不能支持较大的数据结构,因此,程序员应该了解一些必要的硬件知识。

补充思考:

1.硬件行业是如何改变软件行业的,请举几个例子?

2.十年后可预见的硬件情况会导致软件行业产生什么变化呢?

3.程序员最应该了解的硬件知识包括哪些?

1-2

P42(第42页)说道:

        PL/I语言中的SUM内建函数是一个数学函数,它会把输入都转为浮点数,但是如果输入的数组是“包含小数位的定点十进制数”,就会产生计算误差,这迫使人们重新将SUM定义为算术类型。

什么是算术函数,什么是数学函数?

 1-3

操作系统对主程序MAIN的处理和其他的子程序不尽相同,这句话应该怎么理解? 

1-4

P42:DO循环的逆向计数是什么?

1-5

        每一门编程语言都给我们很多的限制,比如下标必须从0开始,如果没有去除掉这些限制,我们甚至意识不到这些限制的存在。其实反过来说也一样,我们不是学习一种语言,我们只是适应那种语言以及它带来的限制。  

1-6

        程序员的局限性:不知道语言的所有特性;不知道某些算法的存在;不能同时兼顾一个大问题的各个部分。

1-7

        我们通常会做出一些修改和改进,但是随后又忘掉自己做了什么,从而我们不能从改进中学到什么可以迁移的东西了,因此如果不记录、不背诵、不整理,那就意味着我们什么也没学到。

1-8

        古早的程序员需要手动设计每一个细节,但是自从模式和框架兴起之后,程序员既不需要考虑代码架构,也不需要单独造轮子了,这大大的提升了工作效率同时也降低了程序员(广义的)的进入门槛。随之而来的现象就是:我们不会编程,我们只会CV。可是为了能提升专业技能,我们应该至少通读一个框架的底层源码,并自己手动设计一个框架(不管这个框架式如何地简陋)。

        我以python为主,并且主要想搞统计,那么sklearn或者pytorch就是可选的了。

第二章 优秀程序的要素

2-1

        我们需要改进我们所写的程序,而不仅仅是满足“能跑就不要动”,正是有着这样不断改进的心愿,我们才能取得进步。但是当我们着手写一个程序的时候,能让它先跑起来而不那么追求完美也是很好的思路。当我们需要面向他人和企业写代码的时候,就需要为他人参与我们的工作、改进我们的工作留下空间,代码应该清晰、明确,尽量利用较为稳定的结构和工具,而不是采取一些效率高但是易变的工具(一个特定的工具如rabbitMq的存活期又有多久呢?)

        利用较为基础的东西自己造轮子所创造出的作品更容易维护、也会活得更久

        效率越高的东西改进的空间就越小、存活的时间就越短。

        从商业的角度或许我们会选择一些短命的方法,但是从个人职业发展或者说为了追求程序员的精神来看,我们要选择那些笨的、耗时的、少有人走的路径,做一个程序粘合员、程序糊裱匠迟早会职业倦怠的。

        空手道大师,不管他已经取得了多大的成就,依然需要每天重复一些基础的动作,这个行为让我们心态稳定,犹如定海神针。新的东西总是建立在那些旧的、基础的东西之上的,我们不了解这些东西的话就会迷失在眼花缭乱的新工具/新观点/新方法之上,这在社会科学领域内也是一样的。不仅是在社科领域,即使是在技术领域,知识也没有日新月异——不要担心几十年前的经典书籍太老了!

2-2

        赞赏每一段程序,描述它的特性,无需评价。

        

      

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值