-前言-
在软件研发实际工作中,程序员会分很多种,有的擅长编码实现,有的擅长底层原理,有的擅长逻辑实现等等,在各自的领域都表现不俗、担当核心,然而,面临更高层架构设计时,很多优秀的程序员却折戟沙场,未能完成华丽转身。
架构的真谛是什么呢?架构真的如此难把控吗?难道真的只有天资聪慧、天赋异能的程序员才能驾驭架构吗?
不要气馁,平常心,其实人人都是架构师,可能你做的任一一件事已无形中用到了架构。
本篇文章将带您慢慢走进架构,揭秘架构的真谛。正如,架构不是神秘物,吸取真谛即了然。
-架构的背景-
如果想要深入理解某一事物的本质,最好的方式就是去追寻这个事物出现的历史背景和推动因素。所以我们先来梳理一下软件开发的进化史,探索一下软件架构出现的历史背景。
1、机器语言最早的软件开发使用的是“机器语言”,其直接使用二进制码0和1来表示机器可以识别的指令和数据。
比如:为了完成“将寄存器BX的内容送到AX中”,机器语言如下:
面对上面的10的字符串,不用多说,程序员心里肯定会万马奔腾吧,更别说输入错误要去定位问题,求程序员的心里阴影面积?
归纳一下,机器语言的主要问题是三难:
太难写、太难读、太难改!
2、汇编语言为了解决机器语言编写、阅读、修改复杂的问题,汇编语言应运而生。汇编语言又叫“符号语言”,用助记符代替机器指令的操作码,用地址符号(Symbol)或标号(Label),代替指令或操作数的地址。
比如:为了完成“将寄存器BX的内容送到AX中”,汇编语言如下:
movax,bx相比机器语言来说,汇编语言就清晰得多了。汇编语言虽然解决了机器语言读写复杂的问题,但本质上还是面向机器的,因为写汇编语言需要我们精确了解计算机底层的知识。
面向机器的语言,带来的问题就是:
汇编语言需要针对不同CPU的汇编指令和结构,代码编写多份。
3、高级语言为了解决汇编语言的问题,前辈们又设计出了一个“高级语言”。为什么会叫“高级语言”呢?原因在于这些语言让程序员不需要