代码封装的思想,竟然在中国古代就已经存在了

#引子
封装,是面向对象编程的三大特征之一,与此同时,封装也是一种思想,可以帮助我们更好地组织和管理代码,但是,这种思想绝不是因为编程而产生的,早在很多很多年前,封装的思想就已经存在了,在我的故乡,就流传着这样一个故事…

#正文
他叫袁序成,是明代河南布政司归德府睢州人,自幼熟读诗书,却屡试不第,直到35岁才考中举人。他曾梦想自己像远房伯父袁可立一样镇抚一方,名垂青史,但现实的冷酷让他不得不重新考虑自己的未来,看着家中妻儿老小,他决定不再参与科举,接受朝廷任命的官职,成为归德府中典史手下的一名小吏。

虽然只是个不入流的小官,但已过而立之年的他却很满足,他兢兢业业,带领数十名捕快,发誓除尽城中鸡鸣狗盗之辈,还百姓以安宁。

他的日常工作之一,是撰写城里的缉拿告示,每隔一段时间,上级都会把可能流窜至州府境内的贼人名册发给他,有时是一两人,有时是四五人。接到名册后,他都会马上写好告示,并让人张贴到城墙上。
很多次,他都能很快抓住贼人,同僚们也都对他的差事赞许有加。直到崇祯二年(1629年)。

这年十月,皇太极亲率大军出征关内,他们绕过山海关,借道蒙古,越过宣大防线,一月之内竟已到达京师附近,全国的气氛立即紧张了起来。

更让人担忧的是,西北地区连年大旱,民变四起,陕西、山西、河南等多个行省的流寇大有连成一片之势,上头每次发来的贼人名册,也从四五人一下暴增至几十人。袁府吏不禁感叹:时代变了啊!

然而,现实没有留给他太多哀古伤今的时间,因为他还面临着一个更加严峻的问题:要他写的缉拿告示实在太多了!

过去,他每天花一个时辰就可完成的工作现在已经成了巨大负担,每次写完几十份告示后,他都感到无比疲惫,更让他郁闷的是,这些告示除了名字、悬赏金额、日期外,其他内容几乎一模一样,但他没有办法,只能一遍遍重复地写着相似的内容。就这样,他白天捉贼,晚上熬夜写告示,终于有一天,体力不支,病倒了。

病倒以后,典史让他在家休息养病,闲来无事,他最喜欢的就是读书。一日,他翻书时,突然发现有一本书里竟然有两张纸内容一模一样,显然是装订错了,但他却恍然大悟,跳起来直奔在印书馆当差的朋友家,请他帮忙用刻板印刷法印一批告示出来,朋友欣然答应。不出两天,一千份告示就印好了,这样,袁序成每次只需填写姓名、悬赏金额、日期,一份告示就完成了!


袁序成活了66岁,他死后多次转世,最终在20世纪70年代,托生成了这个星球上的第一批C语言程序员。俗话说代码是逻辑思维的直接体现,程序员袁序程逻辑极佳,编起代码来也是得心应手,但久而久之,他又发现了一个问题:有些代码段总是会反复用到,比如排序的代码段、求极值的代码段等,每次都要从头去写,既影响工作效率,又制约逻辑,让代码变得十分冗长不说,还严重影响他人阅读。

面对这一问题,他思考了良久,一种熟悉的感觉涌上心头,突然灵光一闪,有了主意——把反复用到的代码段单独写成一个模块,只留参数输入输出的通道,于是乎,世界上第一个子函数诞生了。看着自己工程里一个个功能各异的子函数,他感到很欣慰。

由代码变为子函数,这就是封装思想散发的光芒。而现在回过头来看,中国古代的刻板印刷术,不就是祖先们对汉字这一我国最古老“编程语言”的封装吗

故事到这里还没结束,因为除了子函数,类也是代码封装的重要工具,下一篇故事,我们来讲讲,在1930年代的英国,基于类的封装思想是怎么帮助我们的主人公渡过难关的。

#后记
前段时间,一直有身边的朋友和我探讨面向对象程序设计的一些概念问题。面向对象的三大基本特征:封装,继承,多态。这些个概念说难不难,但如果单从编程的角度去讲,未免有些枯燥,于是就想出了几个故事供大家开心一下,如果看完之后能若有所思,那就是对我最大的肯定了。

本文中的人物、故事情节纯属虚构偶,如有雷同纯属巧合,图片来自网络。

但是,归德古城却是实实在在的地方,她是我的故乡,拥有4000多年文明历史,是中国历史文化名城,是商业、商品和商文化的发源地。

这里很美,有视频为证。链接在此

由于正在修复,所以城里很多地方都在盖房子,像个大工地,但相信施工完成后,这座历史悠久的古城一定能变得更加美丽!

代码封装的思想,竟然在中国古代就已经存在了相关推荐

  1. 古代社会计算机发展,吴国平:为何中国古代数学更能适应计算机的发展

    原标题:吴国平:为何中国古代数学更能适应计算机的发展 中国作为世界文明古国之一,各方面发展源远流长,成就辉煌.数学作为中国古代科学中一门重要学科,自然也为中华五千文明发展作出重要好贡献. 在文明发展过 ...

  2. 中国古代道家思想与网页重构的思考

    2019独角兽企业重金招聘Python工程师标准>>> 一.关于中国古代道家思想 道家是以老子.庄子为代表的中国春秋战国时期诸子百家中最重要的思想学派之一.道家思想以其独特的宇宙.社 ...

  3. 公司生活备忘录——兼乱弹中国古代思想

    记得小时候的时候,中国古代思想是最不受人待见的,现在很多跟我一样的左愤有时候经常说,"现在这人怎么这么样?!一点也不重视自己的传统文化".我开玩笑一般地说:那是因为,他们还没有离开 ...

  4. 中国古代道家思想与网页重构的思考(转载)

    原文:http://www.zhangxinxu.com/wordpress/?p=664 一.关于中国古代道家思想 道家是以老子.庄子为代表的中国春秋战国时期诸子百家中最重要的思想学派之一.道家思想 ...

  5. C# 封装的功能强大的中国农历日历操作类的代码

    将代码过程经常用的代码片段备份一下,下边资料是关于C# 封装的功能强大的中国农历日历操作类的代码,希望能对大伙有些用途. private static int leapDays(int y){if ( ...

  6. 《中国古代数学思想》读书笔记(15)

    <中国古代数学思想>读书笔记(15) 作者:中科大胡不归 第四章:数学思想的理论奠基--刘徽的数学思想.本篇记录此章第3节的第3部分和第4节的第1.2.3部分. 4.3 极限(无限)思想- ...

  7. 学而优则仕:中国古代政治原生态(转自 百度 读书吧)

    人事有代谢,往来成古今. 古人不见今时月,今月曾经照古人. 其实,古月今月,还是一样的月,古人今人,还是一样的人.无论怎么代谢,一代又一代,政治还在延续. 很多时候,今人会觉得自己比古人高明.大家评点 ...

  8. 中国古代十大名曲背后的掌故(转载)

    中华古韵,向有十大名曲一说.这十大古代名曲分别为<高山流水>.<广陵散>.<平沙落雁>.<梅花三弄>.<十面埋伏>.<夕阳箫鼓> ...

  9. Python 手工计算x的算术平方根,一个中国古代的数学成就

    目录 原理 代码 测试 sqrt(n)与n**0.5 科学计算法测试 精度测试 1000位到1万位的耗时测试 其他方法 牛顿迭代法 二分法 原理 据说这个平方根计算法出自<九章算术>,成书 ...

  10. 数学之美:神奇的杨辉三角形,比帕斯卡早了近600年,致敬中国古代数学家(63)

    小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生. 和猫妹学Python,一起趣味学编程. 今日主题 什么是杨辉三角形? 杨辉三角形有什么规律? 中国古代数学家杨辉. 西方科学家帕 ...

最新文章

  1. 什么是Bootstrap Aggregating
  2. 更改本地dns的host文件解析池的FQDN,以便office communicator非域远程登录
  3. java socket聊天工具_java+socket 简易聊天工具
  4. mint-UI引用后样式不对
  5. 3984: 玩具(toy)
  6. .net 事务处理的三种方法
  7. 如何在计算机桌面上增添word,怎么在桌面添加Word文档
  8. Java的GUI的学习五(窗体事件)
  9. 跳槽的5个误区,冷静一下
  10. Mybatis-Plus注解自定义sql分页查询
  11. 华为笔试题库及性格测试
  12. 每天30分钟学python-每天 3 分钟,小闫带你学 Python(二十三)
  13. 你知道腾讯程序员一年写多少代码嘛?
  14. 当数据中心碰上云计算
  15. AndroidStudio安装JB系官方中文插件
  16. 全球服务器性能排行榜,跑分全球第4,王思聪「随手」装了台服务器,网友:壕无人性...
  17. Visual Studio的下载与安装
  18. BRVAH源码分析(1)
  19. 单招自我介绍计算机范文,自主单招自我介绍范文
  20. cocos2dx接入支付宝sdk

热门文章

  1. spanning-tree portfast default
  2. 地震勘探原理(五)之地震勘探的野外工作
  3. java8 Stream详解
  4. 虚拟机与本机可以互ping,但是Xshell连不上虚拟机 的解决方法
  5. LIO-SLAM分析
  6. 史蒂芬·埃洛普本纪:代号 Trojan.Win32.Elop
  7. ESP32学习笔记(18)——光强度GY-30(BH1750)使用
  8. 利用高德地图周边搜索api获取不同类型的餐厅推荐
  9. 计算机基础课件ppt教案,计算机应用基础教案项目二ppt课件.ppt
  10. 微信应用架构!!-----微信应用的测试管理篇