zoukankan      html  css  js  c++  java
  • 《程序开发心理学读书笔记之四》

                                                                                            《程序开发心理学读书笔记之四》

      本书绝对称得上是经典著作了,之前已经发表过自己对最感兴趣的两篇的见解以及从中收获的益处了,但是其余两篇也是比较好的,下面就让我来带大家去其中遨游吧!

      以下是我认为书中作者写的比较好的见解:

      第一篇是《作为人类行为的程序开发》,以下是我认为作者总结的较好的观点:

    (1)程序员自己编写的代码是为了弥补计算机本身的不足,本人认为这是作者的一个较为独到的见解。

    (2)我们发现,大量代码的作用,只是为了克服那些我们将可能遇到的硬件配置的不尽完美之处,这是作者的看待程序开发的新思维。

    (3)程序员面临的另外一个限制就是编程语言对特定实现的限制,这就是编程的语法规则。
    (4)第三个局限是程序员本身的局限,即自身能力和对算法掌握情况。
    (5)一个程序的整体结构,决定于最初开发改程序的软件组的大小及人员组成。
     (6)程序的适应性:Fisher定理:一个系统对某一特定环境的适应性越强,它适应新环境的能力也就越弱。如果强调的是程序的效率,那么我们往往去追求“紧密式”的代码,而如果在未来要对这些代码进行修改,那将会非常棘手。如果使用的是更高层的语言,那么为了使程序更加高效,我们往往需要深入到机器语言层。这种做法至少抵消了原本用更高层语言的好处——在不同机器之间的可移植性。
     (7)如何研究程序设计:在发现一个程序错误后,你是否会先静下来,然后阐释着探寻一下导致错误的思考过程?在下次发现某个错误时,请尝试着这样做一次,然后根据你的体会写一个简要报告或者概述。
     (8)在大学里完成的软件开发项目,通常都是不可维护、难以使用和难以测试的,此处写的比较实际啊,这跟目前大多数的我们情况是一样的。
         程序被写成什么样子,取决于众多的因素;一旦我们真的阅读了程序,就会发现无论是否必要,其中这些代码之所以如此编写,有的是由于计算机的局限,有的是由于程序语言的局限,有的是由于程序员的局限,有的是因为历史的偶然,而有的则可能是因为规范。但是,不管究竟是什么原因是最终的软件加入了某段特定的代码,这种原因必然有其基于心理学的一面。这使我们相信,把程序开发作为一项以人为主的活动来加以研究,将会取得丰硕的成果。
    (9)并且还存在以下五大极限:

    a.机器的局限:比如,如果制造主存储器的成本足够低,中间存储器就根本没有必要存在。但这只是个理想的假设,实际上,我们不得不是用磁盘等存储介质—这将带来大量的程序开发工作。另外,每种设备都有其特定的时钟特性、定址模式以及存储容量。我们发现大量代码的作用,只是为了克服那些我们将可能遇到的硬件配置的不尽完美之处。

    b. 语言的局限:例如,FORTRAN语言中存在大量的冗余代码,有的是因为DO循环无法逆向计数,有的是因为不允许用表达是作为跌代的增量或上下限,有的是因为数组下标必须从1开始。在其他的许多语言中,同样充斥着对旁枝末节的无聊限制。除非这些限制被去除了,否则我们可能根本不会意识到有这些限制。(温伯格说,这是一个心理学的问题,将会在后面的章节讲到,我也很期待看到后面相关内容,这里先留个悬念)

    c. 程序员的限制:一是程序员可能不了解程序语言的所有功能,二是程序员可能不知道某些特定的算法,或者不能同时兼顾一个大问题的各个部分,从而有效的避免重复劳动。

    (10)  历史遗留问题:一些代码并没有根据程序语言的最近改进而作修改,这就使得任何一段代码都可能存在历史遗留问题。而且如果某段程序运行很好,那么任何人都不大可能对它进行考察。

    (11)  规范:在几乎所有的程序中,总可以找到一些代码,现在的确已经成为人们所需要的功能。即使能够成功地从程序中剥离出这些核心部分,我们也不应被假象所误导,以至于认为可以在一开始就以该内核为规范。在知之甚少的情况下,程序员很难确定其最终的意图;如果在制定规范时,缺乏对计算机功能的起码了解,据此去写出搞校的代码也是很困难的。规范随着程序和程序员的发展而获得改进,写程序的过程是在特定的计算机硬件上使用特定的程序语言,由特定的程序员在特定的工作环境中,以一系列特定的历史事件为背景进行的,这些事件不仅决定了程序的形式,而且包括代码的功能。

     第四篇是程序开发工具
    在此篇最重要的观点就是:作为主管要能够敏捷机智的学会找各种能让程序员们在沟通时需要的额外的交流工具,以便于程序开发团队人们的交流正常有效的进行。还有一点就是:对于解决一个非常困难的问题时,不要有畏惧心理,尽管机器世界我们不可预知,它的复杂程度也难以想象,但是不要气馁,我们应该积极的投入实践,即使最后也找寻不到出路,但是不要担心,毕竟过程是最重要的,过程的延续就是你经验的积累,故不要在意最后的结果,而应该把重点转移到经验的积累上来!
     
    阅读进度:本篇博客是在读完著作或写的。
     

     

  • 相关阅读:
    winform 中xml简单的创建和读取
    睡眠和唤醒 进程管理
    [山东省选2011]mindist
    关于zkw流的一些感触
    [noip2011模拟赛]区间问题
    [某ACM比赛]bruteforce
    01、Android进阶Handler原理解析
    02、Java模式UML时序图
    04、Java模式 单例模式
    14、Flutter混合开发
  • 原文地址:https://www.cnblogs.com/Twinklelittlestar/p/4385462.html
Copyright © 2011-2022 走看看