架构师训练营第二周总结

发布于: 36 分钟前

编程的本质

编程就是使用编程语言编写软件?

如果你还是认为编程就是使用java、python等语言进行代码编写,创建出程序,那你对编程的理解就太狭隘了。计算机软件编程是个十分新兴的行业的行业,程序员这个职业的出现也不过区区半个多世纪,世界上第一台通用计算机ENIAC也不过1946年诞生的。所有我们现在使用的高级编程语言基本创建与80年代之后。

但是,对编程这件事情的探索,早于ENIAC诞生150年。早在1700年代,莱布尼兹就开始了对编程世界的探索。他期望通过一种逻辑语言对各种可计算事物进行描述,然后用一种可看懂能计算的计算器进行解释这种语言。你没看错,这里的莱布尼兹就是我们在物理和数学课本上了解到的那个莱布尼兹,可以和牛顿媲美的科学家。莱布尼兹创造了包括微积分和二进制在内的很多理论成果。

莱布尼兹后100年,法国人Ada使用纸带写出了人类第一个软件程序。这个程序包含循环和子程序。Ada也被认为是第一个程序员(媛)。这时,世界上第一台通用计算机还没有出现。

冯诺依曼,这个程序员的祖师爷,在ENIAC上输入了第一个程序,标志着现代计算机的诞生,也意味着软件编程这一新兴的行业即将出现。我们现在做的编程工作,可都是祖师爷给饭吃,在这里要向冯诺依曼致敬。

接下来编程语言登上了历史舞台。从机器语言,汇编语言,到高级语言,结构化的语言,面向对象的语言,函数式语言相继粉墨登场。

所以,编程到底是什么呢?编程是用计算机来解决现实世界的问题。编程的过程就是使用计算机所能理解的“模型”(解空间)和现实世界(问题空间)之间,建立关系的过程。

从领域模型中分析抽取出概念模型,再提取出系统需求,进而使用编程语言实现需求,这就是变成的一个完整过程。

作为一个有追求的架构师(自命),这整个流程,以及流程节点内所使用的思想、方法、工具等我们要有一个清晰的掌握。

编程的未来

了解了编程的本质之后,对编程的未来也就有了一张蓝图。

现在的编程,是使用编程语言实现软件功能,交付用户使用,进而解决现实问题。

编程语言越能表示现实世界(问题空间),则其抽象层次越高,程序言越容易使用。且因为其表达性强,那么使用起来效率高。这种编程语言是为面向对象编程语言。

未来,全民编程的社会,编程语言这一实现编程的载体,其需要用户编写的代码量应该是越少越好。提供的基础功能全面,且可组合性强,通过组合可实现复杂功能需求。

对于编程语言本身,则应该是高度抽象,最好提供可人类语言理解的语句或语音、视频等输入方式,语言内部解析出语义,进而按照语义操作机器执行指令,做出输出。

编程的设计原则

面向对象编程要实现高内聚、低耦合,从而使系统

  1. 易扩展

  2. 更强壮

  3. 可移植

  4. 更简单

没有遵守任何原则指导的面向对象编程,不可能实现上述高内聚、低耦合的要求。

编程大师们,通过软件编程的实践经验、总结、提炼出了一些设计原则。

其中居于核心地位的设计原则有SOLID设计原则。设计原则是脱离于编程语言的。

设计原则是前人总结提炼出的,应尽量遵守,但也不是不可以违反,只要有不得不违反的理由。但是,请注意,你要去打破一个原则,只有当你充分理解了这个原则被提出的原因,其应对的场景,违反它的后果、坏处,你对这些有了全面的了解,并进行了细致的分析,发现违反它可以带给你更多益处,那你可以去打破原则。

软件工程师,还是应该遵守原则,使用贯彻原则的设计模式,来更好的设计、编写代码。只有这样,你做出来的才是可以被称为优秀的软件。

用户头像

草原上的奔跑

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第二周总结