算法为王--正本溯源系列之一

来源:互联网 发布:烟袋斜街10号 网络剧 编辑:程序博客网 时间:2024/04/30 16:16

 以前曾旁观过一些软件工程师们争论, 当然也包括很多大学里的学生和朋友, 常见的一种是为谁的技术高, 谁懂的技术深刻较劲, C++的朋友很看不起用VB, 精通操作系统的人看不起精通Excel的人, 精通编译原理的人看不起培训Dot Net, UNIX的看不起Windows编程的人, 程序员相轻, 比文人更甚, 这样歧视的话语和语调流行很广. 可能有老师或者所谓资深专家对一个初学者这样说,你要想成为高手, 必须要扎实的学好操作系统,编译原理, 数据结构等等一大堆的科目.

我在想, 公司里有一个文员, 每天和Excel报表打交道, 非常的熟悉,并且很聪明, VB Script写了很多自动化的功能,使自己的工作效率成倍的增长, 这样的人也许不懂计算机的原理, 不懂什么操作系统,c++语言等,你能说她很低级吗? 你能不为她而投去敬佩的目光吗? 她和精通操作系统的你区别有多大? 天上与地下, 你说,那好,我们现在就谈论这个问题.
 
计算机原理, 操作系统, 编译原理, 编程语言这些东西, 说到底其实都是知识, “知其然”是知识, “知其所以然”也是知识. 这些书本上的知识是前人智慧的结晶, 里面充斥着天才的思想和绝妙的算法, 是很长时间内科学家们不断的创新和试错, 才能得到今天的地步, 典型的一个例子是操作系统,一个控制硬件系统的软件,里面每一个章节都是算法或者逻辑的汇总, 每一页枯燥的文字背后的目的就是介绍一个算法, 这些算法慢慢成为思想, 成为体系结构, 然后成为规则, 成为你必须记忆的知识. 你学习的时候感觉很难掌握, 是啊,你一节课学习的东西其实是前人几个月甚至几年想到的解决办法, 你如果要切实的理解,就必须顺着计算机科技发展的历史, 每一阶段出现的困难和怎么去解决它这个思路的角度去理解.
 
这些课程你学的很好,都知道是怎么回事了,它只是表明你知道了前辈们的劳动成果, 也学会了很多成熟的思维和算法, 给自己写程序很多的启发, 其他并没有多大的意义, 它和公司里的文员精通Excel的意义一样, 你的优越感只是你自己幻想的.
 
知识和能力不一样, 懂的知识多,不一定能力强, 就如你计算机基础课学的很好,你也可能写出很烂的程序. 在软件领域, 能力就是你的逻辑思维能力, 软件的本质就是逻辑, 你构建的程序, 反映了你的思维水平. 从某种意义上说,逻辑思维能力强的就意味着聪明, 微软和谷歌等公司只招收最聪明的员工, 也是很有道理的.
 
公司里的文员很聪明, Excel玩的烂熟, 做事有条理和规则, 她如果从事软件开发工作,我相信她会成为优秀的程序员! 更重要的是, 她能让她的工作效率成倍提高, 这就是她的价值, 在老板眼里, 她和程序员的价值是一样的.
 
程序员的价值在于构建一个工具或者应用, 是否深得客户满意, 是否稳定可靠, 是否帮助客户产生商业价值, 没有客户的认可,你所构建的就是垃圾, 你所自豪的高深知识也没有用处, 因为任何一个智力正常的人都可以通过书本获得.
 
当然了, 如果你觉得你肚里的知识书本上没有,别人也没想到, 完全是你自主创新的,那我们就会真的敬佩你了,老大, ! 不要浪费时间了,赶快去发表论文,申请专利吧!
 
业内很多人把算法理解得比较狭窄, 其实算法并不单单指教材上的排序,二叉树等等, 我们可以把算法的涵义再扩大一点, 算法就是解决一个问题的最佳实现方法. 这样一来, 我们平时大多的代码就与算法联系上了, 无论是多么简单的问题, 比如保存数据到数据库, 比如界面的规划等等,每人写的代码都有区别, 你面前的代码就是你的算法,你的逻辑思维的体现. 这种逻辑思维就决定着产品的优秀与否.
 
所以我们觉得如果文员小姑娘把自己的做法最优化了, 她就是一个算法高手, 触摸到了软件的核心, 尽管她根本不懂Excel下面的操作系统是什么, 也不懂为什么Excel会跑在这个机器里. 相反我也遇到过一些程序员, 绕了好多的圈子,写了好多的代码去实现一个本来清晰简单的任务, 尽管你懂了很多, 我们依然不认为你是一个合格的软件工程师.
 
 
(后面两段是加上去的, 怕我的意思被误解. 本来是想把计算机基础学科里的算法给列举和评论一下, 工作量比较大,还是算了吧)
 
原创粉丝点击