讨论:做OOP难道就不需要学习数据结构吗?
我是个在校的大学生,专业是计算机科学技术.
在我们数据结构课上,不知道是这门课真的很枯燥还是老师讲的不够好,到课率不高而且考试基本能过的没几个人,不过我倒是很努力的在学(因为老师说这是程序设计的灵魂),我们有几个同学是这样说的:现在只流行JAVA,C#了,你学那个也没多大用,基本的函数库都高度封装了,指针也取消了,你花在那上面的功夫还不如多学一些OO思想。为以后找工作做准备。面视都是问你继承,接口,多态之类的问题。
我想问问各位前辈,是否真的如此,我自己认为数据结构应该是一门计算机科学,就算我以后打算做JAVA或C#,难道数据结构对OOP一点帮助都没有吗?
现在我一些搞C#的同学数据结构很烂,但他们确实做出了一些动态网页,播放器,数据库编程什么的,我是不是真的在学一门过时的课程?
恳请各位前辈给迷惘的我一个指引,谢谢.
问题点数:30、回复次数:21Top
1 楼liangqingzhi(老之)回复于 2006-03-03 20:58:22 得分 1
数据结构很重要Top
2 楼tabris17(四不象)回复于 2006-03-03 21:03:10 得分 1
你的同学再蒙你
他们瞎扯蛋Top
3 楼feelfine(bluerain)回复于 2006-03-03 21:56:56 得分 1
华为面试!就要考数据结构!
请问楼主二叉树,图,排序,查找学的怎么样?
其实排序很经典的!!快速排序,插入排序,选择排序非常重要!!还有最短路径!最小生成树!!
深度优先,广度优先
数据结构主要领会算法思想,
也有JAVA描述数据结构,不信你到www.china-pub.com去看一看.
看不懂清华严版教材,可以参考配西电版的数据结构!!Top
4 楼Jiana(Robin.English)回复于 2006-03-03 22:35:58 得分 1
你的那些同学就是低级程序员的命Top
5 楼BeginnerCpp(禅)回复于 2006-03-03 22:52:50 得分 1
做系统性质开发的时候,
为了效率和可靠考虑,连STL都用的少,
这个时候数据结构的知识就是必须的了.Top
6 楼jiajie828(班迪特)回复于 2006-03-04 08:50:23 得分 1
很重要,好好学. 虽然我没学过.Top
7 楼wayne23(人生如梦,一樽还酹江月)回复于 2006-03-04 10:59:32 得分 10
你同学那是瞎说,只会用几个控件只能说是一个普通的技术工人,一个优秀的程序员不论用什么语言,数据结构和算法都是灵魂.Top
8 楼scjpsz1860(友情UP友情接分)(快乐升星!预祝明天更好!:)回复于 2006-03-04 11:13:46 得分 1
DSA的重要性怎么形容都不过分。Top
9 楼tabris17(四不象)回复于 2006-03-04 11:34:25 得分 1
回复人:BeginnerCpp(禅) ( ) 信誉:71 2006-3-3 22:52:50 得分:0
?
做系统性质开发的时候,
为了效率和可靠考虑,连STL都用的少,
这个时候数据结构的知识就是必须的了.
========================================
我估计STL的效率要比你写的代码的效率要高Top
10 楼JackieQ(小强)回复于 2006-03-04 22:17:27 得分 1
KAO
数据结构的绝对是NO旺重要,基础才是最重要的,其它的
以后可以慢慢来
Top
11 楼pankun(剑神一笑 Console下面干革命)回复于 2006-03-04 22:22:43 得分 1
回复人:tabris17(四不象) ( 三级(初级)) 信誉:100 2006-03-04 11:34:00 得分:0
?
回复人:BeginnerCpp(禅) ( ) 信誉:71 2006-3-3 22:52:50 得分:0
?
做系统性质开发的时候,
为了效率和可靠考虑,连STL都用的少,
这个时候数据结构的知识就是必须的了.
========================================
我估计STL的效率要比你写的代码的效率要高
---------------------------------------
有些地方不一定,你看过STL源代码没
另外楼主,你的那几个同学原意做低级程序员,就随他们去吧.
你自己应该有你自己的判断能力.Top
12 楼BeginnerCpp(禅)回复于 2006-03-04 23:39:35 得分 4
回复人:tabris17(四不象) ( 三级(初级)) 信誉:100 2006-03-04 11:34:00 得分:0
?
回复人:BeginnerCpp(禅) ( ) 信誉:71 2006-3-3 22:52:50 得分:0
?
做系统性质开发的时候,
为了效率和可靠考虑,连STL都用的少,
这个时候数据结构的知识就是必须的了.
========================================
我估计STL的效率要比你写的代码的效率要高
---------------------------------------
有些地方不一定,你看过STL源代码没
另外楼主,你的那几个同学原意做低级程序员,就随他们去吧.
你自己应该有你自己的判断能力.
============
1.STL的泛型设计,会引入额外的负担.从代码尺寸到运行时间(不重要的原因)
2.STL让代码的运行机制,不那么明显,给维护代码,解bug带来了负担.程序员对于代码的控制能力,被STL屏蔽掉了一部分(比较看重的).
当然,
前面的2点,是一种特例.
大多数情况下(对性能影响不大的地方,自己实现算法比较复杂的),STL还是在更加适合的.
并且随着代码书写时间的演进(比较大的项目,从旧的项目"长"起来的.从注释看,最早有96年的代码)
STL用的越来越多了(大概是程序员也成长起来了,对c++的了解深入了),也喜欢用流操作来处理文件或者字符串了.
这种情况,可能是早期的c++程序员是从C程序员转的,所以对不熟悉的东西(STL)比较慎重吧.
Top
13 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-03-05 07:13:49 得分 1
做系统性质开发的时候,
为了效率和可靠考虑,连STL都用的少,
这个时候数据结构的知识就是必须的了.
========================================
我估计STL的效率要比你写的代码的效率要高
====================================================
估计你也是看了别人那么说,你就那么说.
我以前也是那么认为的.直到我遇到了一个问题.
list<long> lst; 200000万次lst.pushback(0),用了7M内存,
而 new long(200000)来用了700K内存.
7M和700K的区别,也许你觉得无所谓.
但是70M和700M的区别呢?如果你做成文件映射方式,那速度可就低了很多很多了.
"STL的效率要比你写的代码的效率要高" 这句话是对高手来说的,
这儿的高手就是既懂算法设计又懂STL实现的人.
他知道什么地方可以用STL,什么地方绝对不能用STL.
而不是 "STL的效率要比你写的代码的效率要高"
Top
14 楼wd_6532(用frontpage写asp,jsp,php,ace)回复于 2006-03-05 07:15:21 得分 0
你可以跟你同学说,现在计算机软件这么发达,
数学也不用学了,点点鼠标,爱因斯坦就被你推翻了.Top
15 楼BeginnerCpp(禅)回复于 2006-03-05 09:49:15 得分 0
做系统性质开发的时候,
为了效率和可靠考虑,连STL都用的少,
这个时候数据结构的知识就是必须的了.
========================================
我估计STL的效率要比你写的代码的效率要高
====================================================
估计你也是看了别人那么说,你就那么说.
我以前也是那么认为的.直到我遇到了一个问题.
list<long> lst; 200000万次lst.pushback(0),用了7M内存,
而 new long(200000)来用了700K内存.
7M和700K的区别,也许你觉得无所谓.
但是70M和700M的区别呢?如果你做成文件映射方式,那速度可就低了很多很多了.
"STL的效率要比你写的代码的效率要高" 这句话是对高手来说的,
这儿的高手就是既懂算法设计又懂STL实现的人.
他知道什么地方可以用STL,什么地方绝对不能用STL.
而不是 "STL的效率要比你写的代码的效率要高"
==============
STL胜在写出的程序很清晰。
自己写的代码,往往数据,算法,业务思路粘合的太强了,让程序变的不优雅了很多。
现在我所看到的代码,
基本上STL被用于保存“不常用”的数据,
频繁使用的数据,还是在用自己编写的链表来存储的。
就这个问题我请教我们部门的老员工,他说是因为STL因为为了支持泛型设计,导致很多操作变的很隐秘(不知道编译器做了什么手脚),所以为了方便控制程序的运行情况,是使用自己编写的链表。
Top
16 楼millfox(胡某)回复于 2006-03-06 11:15:29 得分 0
顶Top
17 楼DiabloWalkOnTheEarth(我想到个绝妙的昵称,只是地方太小,写不下)回复于 2006-03-06 11:39:41 得分 1
说 "STL的效率要比你写的代码的效率要高" 绝对是说话没经过大脑 ....
Top
18 楼jiaaong(海兵)回复于 2006-03-06 11:55:51 得分 1
学习。。
处于什么阶段说什么话,你同学没写过什么程序,所以说数据结构没用。。
上面有位老兄说“STL的效率要比你写的代码的效率要高”,估计是还没有到大师级。
再后面大师级的任务估计不会讨论stl、数据结构这种东西了,估计是什么方法论、哲学方面的了。
汗一个先。。。hohoTop
19 楼galen_wang(小丑)回复于 2006-03-06 12:13:58 得分 1
足球运动员 在练习球技的同时也要练习体能Top
20 楼shangguancheng(潜龙勿用)回复于 2006-03-06 14:26:46 得分 1
你的同学只能做低级程序员,大家都会做的值什么钱,要研究一些深层次的东西。数据结构很重要,工作中会经常遇到,当然数据结构大家都学过,但不是都能够灵活运用其中的思想,类库虽然封装了很多,但是你写程序的时候很多还是需要自己写,因为有特定的需求。Top
21 楼pcboy1982(pcboy)回复于 2006-03-06 14:58:25 得分 1
其实,从lz的口气看,答案就在你自己的心里,看了大家的回复你应该更加确定!
学生的时候好好打你的基础,别忘了,除了基础课,还要学好英语
....Top




