• 大道至简阅读笔记01


        编程的精义

        这是我阅读《大道至简》的第一篇读书笔记,一想起要写这篇读书笔记,心中还不免有些小小的激动。在没有看这本书之前,原以为这本书会讲述一些如何编程的思想技巧或者方法之类的,但是看到这本书的目录以后我就知道我错了,特别是在看了第一篇文章“编程的精义”以后,这种思想上触动更深了。隧怀着一种激动的心情与大家一起分享我的触动。

        《大道至简》这本书其实还有一个副标题,叫做“软件工程实践者的思想”,从这个副标题中我们就可以看出这本书应该是要讲述软件工程实践过程中的一些思想,而且是一位有着多年工作经验、在软件工程打拼几十年的大牛来讲述其真实的思想感受,这才是真正触动我的原因,也是我可以耐心的读下去的原因。

        《大道至简》的第一章第一篇叫做“编程的精义”,在这篇文章中用了一个历史故事来讲述编程的思想,读完之后感觉非常有道理,所以和大家一起分享一下。我想,大家都读过“愚公移山”的故事吧,我清楚的记得《愚公移山》在我们的高中语文课本上是一篇必备的文章,现在用这篇熟悉的文言文来解读编程的本质与思想,感觉别有一番风味。

        书中所讲:

        仅仅就编程序来说,实在是一件很简单的事,甚至可以说是一件劳力活。两千年前的寓言中,已经成就了一位工程名家:愚公。在这位名家的身上,浓缩了项目组织者、团队经理、编程人员、技术分析师等众多角色的优秀素质。他的出现,远远早于计算机发展的历史,甚至早于一些西方国家的文明史。汤问篇中所述的愚公移山这一事件,我们看到了原始需求的产生: “ 惩山北之塞,出入之迂 ”。  我们也看到了项目沟通的基本方式: “ 聚室而谋曰 ”。 然后,我们看到愚公确定了一个项目的目标:“ 毕力平险,指通豫南,达于汉阴”。 并通过研讨,择定了一个井然有序的、可以实现的技术方案:“ 扣石垦壤,箕畚运于渤海之尾” 。在这个项目中,动用了三名技术人员和一名工程管理人员:“ (愚公)率子孙荷担者三夫” 。并获得了一名力量较弱,但满富工作激情的外协:“ 邻人京城氏之孀妻,有遗男,始龀,跳往助之” 。基本上,这已经描述了“ 愚公移山” 整个工程的概况。接下来,我们应该注意到愚公作为编程人员的基本素质。在与“河曲智叟”的对答中,他叙述了整个工程的实现程序:“虽我之死,有子存焉” ,这里描述了可能存在的分支结构,即“ IF” 条件判断。“ 子又生孙, 孙又生子;......子子孙孙, 无穷匮也” ,这里描述了完成这个工程所必须的循环结构。 作为优秀的程序分析师,愚公论述了这个循环的可行性:由于“ 山不加增” ,所以条件“ 山平” 必将成立(“ 何苦而不平” ),所以这不会是一个死循环。在愚公的论述中,我们看到了编程的根本:顺序、分支和循环。庞大若“愚公移山”这样的工程,都是可以通过这样简单的编程来实现的。这,就是编程的精义了。

        以前从未想过文言文竟然可以和计算机有联系,以这样一个文言故事来解读编程的精义不可不谓之精辟深邃(用当下比较时髦的一句话解释就是“我也是醉了”)。真的很佩服作者这样的穿透力,一片看似普通的文言文竟然可以把编程的思想总结出来,这其中不仅透露着古代人的智慧,更体现着现代人不一样的思想与风貌。

        这篇文章之所以能够给我触动,可能是从思想上给我了启发,如果不读这篇文章,即使现在我学着计算机,或者以后学习更多的知识都不会有这样的感悟,因为我没有从思想中去真正的解读编程的本质与含义。其实,在大一一开始接触编程时候,对于编程有着一种莫名的抵触情绪,可能这种抵触情绪也是因为我总是觉得自己是被调剂到这个专业的,因此,这个专业的东西我一定不会喜欢,但是迫于无奈、迫于考试,我只好硬着头皮去学。这种被迫的学习是煎熬的,是困难的,很多的知识在你没学之前就已经被你下了一个“不好学”的定义,在学习的过程中也就没任何兴趣可言了。经过近三年的学习,虽然学到了一些很皮毛的知识,但是至少不会像以前那样煎熬了,因为在学习中逐渐找到了这其中的乐趣所在,当编出一个程序或者弄懂一个经典的算法时,心中非常有成就感。另外,现在能够踏实的学习,更重要的是自己学会了如何正确认识自己的心理状态。过去的那种心理是不对的,而且是有害的,我们不可能保证我们所在的每一件事都是自己想做的,但是有时候迫于无奈而必须去做,那为何不尝试着发现其中的乐趣和魅力呢,让自己更开心的去做这件不得不做的事。

        这篇文章对于我原有的思想有了进一步的推动,读完这篇文章以后,突然觉得编程是一件非常有趣、非常生动活泼的事情。以前编程的时候考虑的都是实现具体的功能,没有想过实现功能的代码具有这样的现实意义和现实故事。可能不论学习什么东西都需要一种专业的思想,比如学习数学时,需要一种逻辑推理能力,学习文学时,则需要一种情感上的共鸣,当学会用一种思想去学某一样东西时,高层次的学习便是将所有有关联的东西都能整合在一起,就如这篇文章和编程相结合,看似没有任何关系,其实他们反应了同样的本质和道理。在以后的学习中,编程的技巧需要不断积累,编程的思想需要我们自己不断地去感悟。

  • 相关阅读:
    如何快速搞定websocket
    websocket断网消息补发
    div嵌套多个点击事件,点击后如何阻止多次事件触发冒泡
    仿照 MediatR实现了一个中介者模式Publish功能,使用同MediatR
    git提交指南(超级详细)
    删除github中的文件夹
    抽取进程集成模式注册报错,OGG-08221,OCI Error ORA-44004 invalid qualified SQL Name
    Oracle-参数学习_no_or_expansion
    OGG19版本源端新增字段,目标端复制进程不报错,使用MAPALLCOLUMNS进行测试
    Oracle存储过程如何定位慢SQL?
  • 原文地址:https://www.cnblogs.com/hulidanxiang/p/5528852.html
Copyright © 2020-2023  润新知