开始觉得自己对代码整洁、重构有些认识就打算写几篇文章,分享一下。其实开始并没有什么大的框架,就是东想一点,西凑一点。后来写着写着开始整理的一些思路。
前几天也写过一个代码之道,现在想想其实并没有写出什么内容。
其实现在想想,我的代码之道——代码美不美。其实等于没说,我看中的其实是代码是不是面向对象的。
代码——其实就是对现实实物的编码过程。
编程的发展过程
- 机器代码
- 汇编代码(用人类可以理解的语言去给机器代码赋予意义)
- 高级程序(C语言等,屏蔽寄存器等技术细节,用逻辑去描述问题)
- 面向对象语言(程序不再是数据结构+算法,通过对象更加形象的描述这个世界)
- future 人工智能语言/类人类语言。(跟计算机说什么,计算机就会告诉我们答案了)
好吧,我们先来畅想一下未来的编程世界。在我现在思维局限性畅想的未来,你告诉你计算一件事情,计算机会自动的推理、计算、搜索。比如:你想知道你眼前的楼到底有多高。计算机需要做的应该是以下操作
- would.findBuild('')
- build.getTall("")
也许中间还有更多的细节方法,我想表达的是也许人工智能的基础就是面对相对编程。就是怎么给世界每个物品建模,用更有表述意义的方式去描述他的方法。(可能是我的思维太局限性了,所以才会这么说。)就算面向对象编程跟人工智能没有一点关系,那么更好的符合世界去建模也是让我们更容易读懂代码的一个方式。
(我建议阿里巴巴公司现在提供创造一些描述世界的接口,这样世界之间的服务可以更好地交流。想想一些所有的人都是一个Person的接口去描述,我们人的基本特征都包含在这个接口里面,也许这样可以更好地SOA,说了这么多还是思维的局限性吧,但是我觉得这世界大同的方式真的很好。)
仔细体会了一些自己的经验,什么是好的代码,我喜欢的代码。其实就是代码描述的跟实际一样不一样。其实说起来简单,但是做到真的很难很难。想想这个过程有点像
- 看山是看
- 看山不是看
- 看山还是山的过程
- 用人的逻辑去思考程序的问题。这个过程是在我们还没有学习计算机的时候,那个时候我以为计算机是通过思考的。
- 用计算机的逻辑去思考问题。原来计算机里面都是各种方法。并不会思考,计算机不会搜索,需要通过for一个一个比较的。(暂时不讨论算法,二叉树等等的)
- 怎么用计算机的语言去完成人类思考的过程。把简单的问题简单化。
说了很多,但是感觉还是跟什么都没说一样。