zoukankan      html  css  js  c++  java
  • 第八周读书笔记 ——编程之美

    本周在陈灿同学的介绍下,我也开始看编程之美这本书了。看的不多,仍然停留在第一章。虽然这本书全书只有四章,但是它并不是一本“洛阳纸贵”的薄书。恰恰相反,在我不多的阅读页数里,蕴含的知识和感悟可不算少。

    书的序言从一个很有意思的例子开始,这也是我这篇读后感想重点谈的内容。这个例子说的是一场微软的面试,被面试的女生拿到了这样一个题目:“请写出一个程序,使得CPU的占有率维持成一条50%的直线”。面对这样一个“奇葩”题目,女生当然完全无从下手,哪怕面试官(邹欣老师)把笔记本借给她,让她上网查资料,她也没有办法在45分钟之内做出这道也许她从来没有见过的题目。待到面试结束,女生非常沮丧,而面试官也同样感到遗憾,因为就因为这一个问题,他也错失了继续了解这位面试者其他方面的机会。

    毫无疑问地说,站在中国学生的角度上看,这样一道怪题,可以说是谁碰上谁倒霉。不仅仅是因为课堂里不讲这种类型的题目,更是因为自己从来没有从这样的角度去重新审视“编程”。如果没有头绪,那么很可能这一次面试就这么完结了。但是,如果我们暂时先抛开面试的功利性质,仅仅来衡量这道题目本身来看,其实它是一道非常有趣的编程问题。其有趣之处,在于其不仅仅是考察做题者的编码能力,更是在考察作者是否有对编程更深层次的理解。编程,绝不仅限于课本上的题目,或是某一个具体的算法,而是与整个计算机密切相关的。对计算机系统理解的层次不同,很大程度上决定了你的编程思想的上限。

    说实话,在我看到这个题目的时候,我也会一脸懵逼的看着主考官,然后完全没有任何思路,甚至连那位女生所写的源码(见图)也许都写不出来。

     

    的的确确,这道题目本质上跟我们平常练习的题目都差不多,只不过把问题变成了与计算机系统密切相关的任务让我来解决。但是我却完全没有思路,这说明我对这个问题的背景几乎完全不了解。光从这一点上来看,我好像白学了操作系统和微机原理,因为我完全没有从计算机系统去思考问题的思维。我想,如果我面试真的遇到了这种类型的题目,那么我对编程的理解和计算机系统的理解之间的不匹配,瞬间就会暴露无遗。

    为什么我无法建立起这样的思维呢?我想,这正是我需要从这本书中找到的一个很重要的答案。我一直觉得自己对计算机理解的不够深刻,哪怕我学过操作系统,学过编译原理,我对计算机科学,仍然有一种力不从心的感觉。这也许是因为我对于每一门课程的理解,都是孤立无援、相互割裂的,这让我缺乏一个真正的高层思路,一个从整体去逼近每一门课程的概观思路。随着邹欣老师一步步带我领略答案,我才发现,其实具体的每一步的知识,尤其是计算机底层的知识(如指令执行时间的计算),我大概都在课堂上听到或者看到过,可是我没有的却是从问题的表面逐步深入所需要的知识和思维。这样子的思路,恰恰体现了我过度的“黑盒”思维——把计算机看成一个输入输出的黑盒子了,却没有想过要去想办法把这个黑盒子拆开好好看看。

    回过头来说,邹欣老师所说的编程之美,不仅仅在于某一个算法,不仅仅在于某到题目的答案,而在于一种思想,就好像球类运动里所说的球商,在于一种探索的过程。的的确确,如果我可以对这个“黑盒子”的工作原理了解的更为透彻,那么更加优美简洁、性能更加高效的代码,也就自然而然地诞生了。

    为此,我需要再继续的努力,多学习多看书,少吃零食多睡觉,每天积累一点点,日后能成栋梁材。

  • 相关阅读:
    【leetcode】1215.Stepping Numbers
    【leetcode】1214.Two Sum BSTs
    【leetcode】1213.Intersection of Three Sorted Arrays
    【leetcode】1210. Minimum Moves to Reach Target with Rotations
    【leetcode】1209. Remove All Adjacent Duplicates in String II
    【leetcode】1208. Get Equal Substrings Within Budget
    【leetcode】1207. Unique Number of Occurrences
    【leetcode】689. Maximum Sum of 3 Non-Overlapping Subarrays
    【leetcode】LCP 3. Programmable Robot
    【leetcode】LCP 1. Guess Numbers
  • 原文地址:https://www.cnblogs.com/ZucksLiu/p/8955553.html
Copyright © 2011-2022 走看看