封装是什么?
这和带兵打仗是类似的,班长需要知道每个战士的姓名/性格/特长,否则就不知道该派谁去对付对面山坡上的狙击手;而连长呢,只需知道自己手下哪个班/排擅长什么就行了,然后安排他们各自去守一段战线;到了师长/军长那里,他更关注战场形势的转变及预期……没有这种层层简化、而是必须直接指挥到每个人的话,累死军长都没法指挥哪怕只是一场形势明朗的冲突——光一个个打完电话就能把他累成哑巴。
反过来也对:军长压根就不应该去干涉某个步兵班里、几个大头兵之间的战术配合;这不仅耽误他行使身为军长的职责,也会干扰士兵们长久以来养成的默契。他的职责是让合适的部队在合适的时机出现在合适的战场,而不是一天到晚对着几个小兵指手画脚、弄的他们无所适从。
约束各单位履行各自的职责、禁止它们越级胡乱指挥,这就是封装。
高级编程语言:越是高级的编程语言,替我们干的事情越多,我们要实现一个软件功能,代码量越少。
当我们用高级编程语言做程序的设计时候,可以把精力更多的考虑软件功能如何实现。
开发效率:
php做了一个星期,你用C语言三个月,你用汇编语言做了2年。
从基层干起。
把一些优秀程序员已经封装好的代码功能,我们去研究去学习,甚至自己微创新,尝试自己也重新封装一次。
这个过程在业内有一个说法:“造轮子。”
mycode:
mov ax,0x07c0
mov ds,ax
;初始化数据段寄存器
mov ax,0xb800
mov es,ax ;初始化显存段寄存器
mov ax,0x0;初始化堆栈段寄存器
mov ss,ax
mov sp,ax
;三个数放到哪里? 用什么指令完成这个功能。
三个数相加的结果放到哪里?
;第一个数我们放到cx,第二个数,我们放到dx,第三个数,我们放到bx,最后相加的结果,我们放到ax
;3+4+5
6+7+8
push cx
push dx
push bx
mov cx,3
mov dx,4
mov bx,5
call f_sum
pop bx
pop dx
pop cx
;又写了几百行汇编代码。
push cx
push dx
push bx
mov cx,6
mov dx,7
mov bx,8
call f_sum
pop bx
pop dx
pop cx
jmp near stop
f_sum:
mov ax,cx
add ax,dx
add ax,bx
ret
stop: jmp near stop
times 510-($-$$) db 0
dw
0xAA55