架构离不开数据结构
扫描二维码
随时随地手机看文章
A说:
没有人跟帖吗?
那我先谈谈我的观点吧,学计算机的人都学过数据结构这门课,教材的开始就谈到了一个公式:软件= 数据结构+算法,大家似乎认为计算软件发展到现在这个公式已经跟不上时代了,其实则不然,这个公式依旧是一条定理,就算是面向对象编程的下一代编程思想出现,这个公式仍然是正确的,因为这个公式道出了计算机软件的本质,只要计算机还是冯诺依曼计算,那么这个公式就是正确的。
面向对象的思想大大的弱化了抽象这个概念,强调自然思想,用正常的思维去分析架构软件,但是计算机还是抽象的概念,建模依然是抽象的,将现实问题转化为计算机问题就是建模,其实也就是架构,我面试过很多人,基础知识都不清楚,上来就跟我谈架构,可是你有没有想过到底什么是架构?架构与数据结构和算法难道没有关系吗?
B说:
如果站在性能方面来说我还挺支持你的观点的,但站在架构层面他们还是有许多不同处的,毕竟他们的维度不同,一个是面向数据一个是面向结构。
C说:
是的,zzxsky1986 谈的属于两种不同边界内的东西,“计算机是冯诺依曼计算”是说明事物内部原理,而架构是指如何使用这个事物,是从事物外部来看的。
一个是事物内部,一个是事物外部,完全不同领域的。
再打一个例子,汽车内部原理和我们如何使用汽车完全是两码事;自行车内部原理和我们如何骑自行车是两码事,骑自行车的基础和自行车自身结构基础不是一回事。
请问有考驾驶执照时,有考你汽车内部原理的吗?我们知道汽车内部原理那是修理汽车和制造汽车专业的事情。
再回到计算机软件,计算机软件使用基础与软件是如何在计算机内部运行的内部机制是两码事。所以,楼主作为面试官,要求程序员知识广泛是好的,但是切不可随便跨越边界,让应聘者无法定位你们是找使用软件的,还是找修理软件或制造发明新软件语言的人。
不过话说回来,尽管架构是指应用架构,但是应用架构中数据结构知识有时还是需要的。
A说:
我认为一个架构师,一个可以谈架构的人,应该对原理有所了解,否则我认为谈架构是虚谈。依然用汽车的例子来讲,架构师相当与一个汽车设计师,对汽车的各个子系统都了如指掌这样才能造出好车,而不是一个只会开汽车的人就是汽车设计师了,要想了解软件的原理,数据结构是基础中的基础。
我仅仅想发表一下自己对中国软件行业的现状的一些感慨,中国有太多的程序员是应用软件程序员,中国已经不缺乏这样的人了,不缺会开车的人,缺的是能造车的人,我认为一个老司机对汽车的原理多少都会有些认识,但是离造车还相距甚远,一个程序员也一样,不能忽略基础,否则即使做了多年软件充其量也就是一个coder。谈架构的资本也是建立在对原理的理解和掌握上的。