日期:2014-05-20  浏览次数:20781 次

数据结构在软件开发中真得很重要吗?
昨天聊天的时候,QQ群里一个朋友提了一个问题,说正在学习Sun的开源论坛JLive,
感觉里面有很多数据结构方面的知识,突然觉得数据结构真的很重要,由此群里成员展开
了讨论,从而引出了本话题。
  本人06年参加工作,主要从事应用软件方面得开发,熟悉NET和Java,公司的主要开发
工具是Delphi和NET。就目前我所经历得项目而言,数据结构用得真得很少,公司软件里面
体现得算法,也没有几个是自己原汁原味写得,一些好得通用的算法,都是直接从网上找得
别人写好得。尤其是用NET写得BS软件,更是很少接触到数据结构,一些常用数据结构方面的
东西,微软的API已经封装得很好了,根本不用自己去写,开发时直接用就是了。
  由此引出几个疑问,
  1.项目周期开发时间越来越短,真得有时间让你在一个问题上把数据结构和算法体现得
  淋漓尽致吗?举一个小例子,开发人员在很短得时间内写了一个效率很低得算法,
  客户反映速度慢,直接加条内存就是了,提高服务器性能,速度问题就可以很完美得
  解决了。你把一个算法写得很完美,浪费了时间,但结果绝对没有提高一下服务器性
  能来的省事与直接。
  2.现在的语言,像NET和Java,已经对一些常用的数据存储进行了封装,我们只要熟悉怎
  么用就可以了。真得有必要再自己研究一套出来吗?
  3.如果有同样得时间,我们是来研究数据结构与算法,把这些东西都弄懂好,还是关注一
  下本行业得软件发展动态,升级一下软件得功能来得好?这之间怎么取舍。
  4.现在一些公司得面试,大部分都考数据结构,目的是什么?就是单单考查一个人得基础
  知识掌握程度吗?
  5.随着硬件性能得提高,数据结构真得很重要吗?现在主流机器配置都到2G内存了,算法
  就是再烂,速度能慢到哪里去?
   
  以上是我个人的一点愚见,行业不同,对数据结构和算法的应用程度也不一样,我桌子上
现在就放着一本《Java数据结构》,正在犹豫着自己是不是要再看一下。 
  现在学校的一些老师和市面上得一些专家。一直在宣扬数据结构有多重要,好像不会数据
结构就不能写程序一样,对这点,我一直不苟同。所以发了这篇帖子,希望能清楚数据结构在
软件开发中的真实地位及应用场景。

------解决方案--------------------
数据结构是一种设计。学习数据结构,首先是搞懂为什么 Java 会提供给你 List、Stack、Queue 这些类,你该如何使用它们;其次是理解这些结构是如何设计出来的,如何在更加复杂的结构中灵活运用它们;最后,当这些结构无法满足你的要求时,你如何自己设计一个新的数据结构。
------解决方案--------------------
数据结构和算法是基础的东西,会指导你以后的实践过程,只不过现在国内的项目外包居多,编码过程里的技术含量很低,
可以说大部分只需要拷贝粘贴,所以会让你产生现在的感觉,呵呵。
另外现在的网络太发达了,很多东西搜索就能找到,但如果只是拷过来用的话也只是知其然而不知其所以然而已,
这就看个人怎么去想这个问题了,只是应付工作的话确实没太大的必要,呵呵。


------解决方案--------------------
数据结构是基础,好比造房子,有了好的基础,房子才能更高

硬件性能有时候并不能解决问题,比如一个O(n)的问题你用O(2^n)来解决
你硬件性能还能提高到指数级别?
------解决方案--------------------
语言是程序开发的工具,数据结构和算法是基础的东西,会指导你以后的实践过程,比如说数据结构学好了,会做出一些执行效率高,健壮的程序来,对于以后长远的发展是很有用处的,国内的大多程序员现在做的只不过是写代码,就是别人设计出来了流程图,程序员只需要将其翻译过来,没什么技术含量,而设计算法的人员就要用到数据结构等的一些基础的知识了,其实设计人员赚钱的多半的,而程序员只不过赚的是少部分的钱,如果楼主以后想往上一个阶层发展的话,这个是很重要的
可以说大部分只需要拷贝粘贴,所以会让你产生现在的感觉,呵呵。
另外现在的网络太发达了,很多东西搜索就能找到,但如果只是拷过来用的话也只是知其然而不知其所以然而已,
这就看个人怎么去想这个问题了,只是应付工作的话确实没太大的必要,呵呵。

------解决方案--------------------
实际项目开发还是比较少用上,读书的时候学的比较深入,但实际工作时没多少用上,所以忘记了不少, 我觉得有一点理论基础就可以了, 需要用时再学回来,你有基础了就可以快速掌握, 应该说学习能力更重要,只要需要我就能很快学精.
------解决方案--------------------
开发基于网络的实际管理类型的项目个人觉得用的不是很多,主要是开发流程的把握

但是数据结构对自身编程的能力提高能有很大作用,建议有了一定项目经验后,仔细学

习学习数据结构~
------解决方案--------------------
我的看法是很重要的,但是不一定在做项目中就可以直接的使用到这些东西,它们可能是在潜移默化的改变你程序的思路.这些底层的东西,被微软这些大公司掌控,封装的很隐蔽,我们可以直接拿来用,但这并不是一件好事.
站在不同的高度,看到不同的风景,也许等到发展到一定程度,感到力不从心的时候才会回过头来重新学习这些底层的知识