算法与数据结构对程序员的重要性

算法数据结构对程序员的重要性
曾经有个说法,程序=数据结构+算法。这在⾯向过程的编程语⾔流⾏的年代是很受推崇的。
失依儿童然⽽,随着时代的发展,各种编程语⾔的出现,各种编程模式的发明,⾯向对象、设计模式、框架、模型等各种概念早已淹没了当年那个简单的提法。
那么,在这个多样化的年代,如果想⽴志做编程开发,还有没有必要学好数据结构和算法呢?
我的回答是,⾮但有必要,更应该学好、学博、学精。
第⼀,数据结构与算法是程序的灵魂,是朴素的基础,学好它有有助于理解各种上层抽象。
在没有充分学习和理解数据结构与算法的基础上去学习⾯向对象、设计模式,是⽆法真正体会这些上层抽象的真正意义的,最终可能会导致学之泛泛,⽤之泛泛。
在⼯作中,见识了太多开⼝设计模式,闭⼝⾯向对象的⼈,在某个具体的问题上,问他为什么要⽤⾯向对象,为什么要⽤这样的设计模式,得到的回答相当空泛,有时候甚⾄是为了对象⽽对象,为了设计⽽设计。这样的⼈,做出来的设计,往往过度设计,似是⽽⾮,导致做出来的东西混乱不堪。
遇到的真正设计⾼⼿,还没有⼀个是对数据结构与算法是不精通的。让他讲为什么这样设计,为什么这样架构,他往往能深⼊浅出,将⾯向对象的思想、设计模式的考虑,与基础的数据结构和对应的算法结合起来,贴合问题的实际情况,给出良好的结论。
有⼈可能会抬杠:照你这么说,是基础就要学,那是不是还要把CPU的物理原理学透了才能写程序?
我的回答:你说的还真对,⼀个对CPU的运⾏原理不清楚的⼈,是不可能真正理解现在流⾏的SMP架构、MPP架构的,也不可能写出⾼质量的并发程序。这其中当然有个量的问题,但没有质的差异。
从编程的⾓度来看,数据结构与算法⼏乎是最朴素的基础知识了,这是关,是每⼀个⽴志当好程序员的必经之路,不管你是想学C还是想学JAVA,不管你是想学⾯向过程,还是⾯向对象,不管你是想当架构师,还是想当DBA(⼀个没有良好算法底⼦的DBA差不多算是半个残废)。
第⼆,在编程实践中,数据结构和算法随处可见,影响重⼤。
双极化天线有⼈说在⼯作中没⽤到数据结构和算法,这是⼀种误解。并⾮让你去实现⼀个链表才叫使⽤了链表。这可能与⼤学⾥教条的教学有关,⼀味地讲这些数据结构是怎么编程实现的,⼀味地讲这些算法是怎么证明的,却忽视了学习这些的主要⽬的是为了在编程实践中去应⽤它,⽽不是去重造轮⼦再发明⼀次(当然也有少数在算法领域继续深造作出新贡献的⼈,这⾥就排除不讲了)。
日凌期
见过不少对链表的基本属性都不了解的⼈,在程序⾥⼀味使⽤数组,内存能开多⼤就多⼤;也见过太多根本不知道HASH原理的⼈,对Hash表随意使⽤,造成KEY值严重重复、效率极为低下、失去了选⽤HASH的初衷。
即使不是算法密集型的程序⾥,哪怕是⾯向业务的编程⼯作中,能够适当地应⽤数据结构,选择恰当的算法,也是能极⼤地提⾼程序的开发效率、运⾏效率和运⾏稳定性的。更不要说⾯向业务和⼯作流的基础平台,本⾝就含有⼤量的数据结构与算法理论,想利⽤好这些平台,没有⼀个好的底⼦,那会事倍功半的。
第三,现在的软件⼯程充斥着⼤量的过度设计、资源浪费,实际上已经到了硬件承受不了的地步了。学好数据结构和算法,能够从根本上去避免这些问题。
从我这⾥的5年经验来看,J2EE就是最佳代表。⼀个WAS应⽤,能够承受的并发⽤户数,竟然只有区区的100!!花费百万元的投资,去买⼏⼗个CPU、上百G内存,花费⼗倍甚⾄⼏⼗倍的代价,却只能提升百分之⼏⼗的效率。这还是⼀个产品级的应⽤,是⼀个⼤型银⾏核⼼的数据服务之⼀。那就更不⽤提在⽔平更低的项⽬组中那些可笑的效率问题了。
这是J2EE、JAVA的错吗?我不觉得,我同样见到了设计良好的J2EE产品,效率⼀流,稳定性极佳。主要原因,还是开发者⾃⾝的⽔平,对算法⽆知到了极点,对数据结构忽视到了极点。
边界效应第四,当今流⾏的WEB新时代,各种云概念,海量数据,百万⽤户并发(从以前著名的C10K问题,到现在的C1000K甚⾄更⾼问题),最终都是数据结构与算法的⽐拼。这⼀切,较量才刚刚开始。
酒店管理系统论文
这⾥我就不展开了,虽然我这5年来做的主要⼯作就是这⽅⾯的(其中⼀点)。但它离初学者的层⾯还是太远了,每⼀点展开都是⼯程实践⼤部头论述。
最后,说说对于初学者来说,该怎么去学数据结构与算法。
成都计算机安全协会
1、常备参考书。即使不能通读,也要时时备查
2、已有的数据结构与算法,怎么实现是末节,能理解原理、明⽩适⽤场合才是重点。
3、不必过度追求怪异算法,适⽤的就是最好的,简单的才是最佳的。
4、多读开源作品,看看他们是怎么熟练应⽤那些基本的数据结构与算法的。
5、希望你能在融会贯通的基础上,举⼀反三,来教教我怎么继续深⼊学习。因为我⽬前也卡在更⾼深的算法泥潭中不能⾃拔

本文发布于:2024-09-22 21:14:49,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/223759.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   数据结构   编程   设计   效率
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议