⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_15133.htm

📁 一些关于vc的问答
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<blockquote><p>
回复者:史列因 回复日期:2002-09-15 18:48:26
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;“为什么学习了数据结构以后,就一定要会编程”请指点一下,除了编程,哪里还用的到数据结构?<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我之前说了“最好先写上几十个一二十行的小程序。完成简单算法,字符串处理,简单图形绘制之类的基本功能。然后将每个程序反复优化。直到你觉着给一个小问题就能很快找到解答方法,并能将思路很快的转化为程序为止。”<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;你认为那二十几行的程序是什么?Win32?<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;“学习了数据结构,如果学得很好,完全可以完成很多工作,加密/下棋的算法等等”那些东西不是数据结构的内容。事实上,学好数据结构,并不意味着会算法,也不意味着能写程序(包括简单的控制台程序)。怎样将数据结构融入算法里,怎样将算法组织成程序,都是很有学问的。而且加密、下棋是科学家的工作,不是程序员的工作。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;编程不意味着窗口,但是,编程也不意味着数据结构、算法。一般来说,大规模的程序中程序结构规划远比低级的算法和数据结构重要的多。这门科学在计算机科学中所处的地位越来越高。可控制台程序在这方面与窗口程序有很大不同。现在计算机越来越大众化,很少有人会用控制台程序了,想混口饭吃只能转向窗口。(除非你有自信成为顶尖高手)我说要写一个几千行的程序并反复修改、优化就是为了锻炼这个。另外,无论什么功能,最终都要通过平台实现。平台的知识绝对是必不可少的。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;你说的现象确实存在,所以前一阵子我会建议开一个算法论坛。但我隐约感觉到,数据结构和算法在程序设计中所占的比重越来越小了。尤其是商务软件。现在最重要的,似乎成了观念,如面向对象、组件化等。相当多的软件开发只是将现有的组件进行组合。无论你对那些技术怎么看,它们创造了价值。对大多数人来说,这就足够了。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;"至于ating, 告诉你一个证明自己的好方法:再多学一点你可能认为没有用的"编译原理",然后写一个c++编译器出来,用法 cc &lt;source file name &gt; &lt;obj file name&gt;里面不需要任何win32,你做出来了,这里任何一个看帖子的人,只要你发言,目光都在你那里! "<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;别坑人了好不好,拍拍良心,给你十年的时间,你做得出来吗?而且,编程对你来说只是“证明自己”,吸引目光吗?到底谁在炫耀?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:xiongli 回复日期:2002-09-15 22:33:32
<br>内容:编译原理期末作业就是写一个分工完成一个c语言的编译器.四个小组合作一个月就可以完成.<BR>认为编译器,操作系统,跟自己很远,认为自己只要会在frame work上面添点代码就可以的人,根本不是程序员,我想,这种要去过一高级程序员都很难<BR>告诉你一个例子:大学四年级其中一个大型工程作业就是1,合作完成一个手机嵌入式系统的操作系统,2,本科生写一个java的分析器,研究生提供mini的jvm.<BR><BR>"学习了数据结构以后,为什么就一定要会编程",这句话的意思是数据结构是编程的必要条件,不是充要条件,"除了编程,哪里还用的到数据结构?"这句话的意思也是说数据结构是用来编程的,但是并不是说编程只需要数据结构,所以也是必要条件,跟我的话一样.这不是离散数学的东西?命题跟逆反命题的关系.<BR><BR>同时要告诉你,现在病没有专门的"算法"课程,都是在"数据结构"里面共同讲解的.教科书也一样,国内国外的都一样.<BR><BR>linus 也是一个大学生,你认为给他十年,他可以做一个什么东西?现在你居然要一个中国的大学生十年去完成一个编译系统,是不是你本身就对这个国家的技术失去信心了,还是对你本人来说很难??要知道,完成c++编译器,难点不在与知道了c++ standard了如何去作,而是制定一个oo 的standard,只要这些做好了(inside the c++ object model),完成一个没有效率的编译器根本不难.<BR><BR>同时,你说的"如面向对象、组件化等",的确在商业化的 pc 上,而且是windows上有广泛的应用,但是要知道pc程序,不过是计算机程序的10%,而且,基于组件的编程,和rad工具的使用,是一个专科学生可以掌握的,把本科学生的全部精力弄去做这个,实在太不应该,但是事实却的确如此:凭借一身热血,你可以在中国的it做很多事情,只要你会说,会下功夫,也就够了.换句话说,我认为这中间少一点灵魂,少一点大学里面完全凭借兴趣培养的天马行空,不被外界干扰的灵魂,自己想做什么,可以从硬件做起,从汇编做起的风度!就像linus,像1美元的http服务器一样!<BR><BR>可能现在说的好多跟ating的问题无关,我不过是借题发挥,认为ating问的问题揭示了中国教育上的弊病.就因为这个,我在大学浪费了不少时间,现在想补回来,感觉也有点力不从心了.<BR><BR>同时,我这里也不是反驳你,我也赞同你的观点,因为对大多数人来说,学习坡度是因该你说的那样,但是,我认为那样不够专业,因为那样的程序员,很容易累,很容易老.其实我很希望现在发言的人看看中国计算机本科的课程和目标,其实如果这些目标都达到的话,超英赶美,不是空话.<BR><BR>我来介绍一下吧:<BR>计算机组成试验:曾经使用74ls系列芯片,做一个计算机基本系统,换句话,就是cpu,mem,mainbord,bus,i/o<BR>操作系统:用vb模拟一个多任务操作系统,可以实现进程优先级,虚拟内存,系统托管,和分步操作<BR>编译原理:合作完成一个c语言编译器<BR>windows程序设计:用Windows api完成一个五子棋程序,要求最好可以人机对战<BR>软件工程:直接实习,具体还不知道<BR>等等<BR>最后,有两个大型作业和一个论文.虽然现在完成得都很假,但我们不妨看看他的要求:实现一个网络分步数据库,支持简单sql语言的接口,并且为网络服务器开发出连接c/s的服务器中间间,要求有过滤功能,同时可以把数据库里面的表转换成http页面发送到浏览器<BR><BR>这不是一个非常小的sevlet/jsp/java application的模型吗??<BR><BR>还有一个嵌入式系统,要和研究生一起完成,就是弄一个无限网卡,用usb,因为要支持sub,所以要对芯片编程<BR><BR>要使这些目标都可以达到,现在的软件公司招人,还需要培训??
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2002-09-15 22:36:34
<br>内容:最后说错了,无线网卡,支持USB
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:雷神 回复日期:2002-09-15 22:40:14
<br>内容:看了xiongli和史列因两位的辩论,雷神很欣赏两位,而且喜欢这种技术上的讨论,雷神也想说上两句。<BR><BR>TO xiongli<BR>很明显如果你是一个在软件公司工作的程序员,可能会有史列因的观点,因为我们的工作并不需要很高明的算法。记得关于印度软件的一篇文章上有个例子,在做一个系统时,印度的工程师直接开大数组,不考虑效率问题,而中国的工程师会用链表,局部中国工程师的算法绝对高效。但整体来看由于印度的软件工程水平造成的结果印度的软件稳定,健壮,由于硬件的原因造成算法的效率并影响系统的效率。这说明现在的部分软件开发可能涉及不到,或者说并不以你对抽象的数据结构掌握程度决定你的开发质量。<BR><BR>TO 史列因<BR>我很同意你的大部分观点,但xiongli的说法学习了数据结构,如果学得很好,完全可以完成很多工作,加密/下棋的算法等等,可以说软件最难的部分,最有价值的部分,就在这里,这是整个系统的效率来源。说的很有道理,程序设计一般要做的就是用高效的数据结构来描述你的数据,实现他们需要一个好的算法。当然也许我们很可能一辈子不用去设计一个类似MS SQLSERVER数据库的系统,但实际上你学的所有知识已经渗透到你的编程中了,数组不是我们常用的数据结构吗,排序不是我们常用的算法吗。所以 编程不意味着窗口,但是,编程也不意味着数据结构、算法,但是编程离不开数据结构和算法。而且下棋并不象你想象的那样,只有象《美丽的心灵》中天才的数学家约翰·纳什才会去做的事情。其实有很多的人都对这个课题非常感兴趣。<BR><BR>TO 两位<BR>其实你们的讨论应该相互包容一下,因为不同的角度会得出不同得观点。你们一个主张厚积才有薄发,一个从实际应用出发,需要就去学习。其实这都是很好的学习方法,一个向华山派的气宗,一个象华山派的剑宗,但当到达一定的程度,这两种必然会结合。<BR>雷神认为不论你正在学习(学生)还是已经工作,你都应该尽可能同时去做这两件事情。厚积才有薄发不能够适应当今的快节奏,你必须跟上新技术的发展。不然你会没有饭吃。如果你做基础研究或者不准备做程序员那是另外的一回事了。但如果你想要跟随新的技术,是必须建立在你积累的一些知识上的,数据结构和算法更是你必须学习的其中一个。<BR><BR>其实从你们的言论中可以看出两位都是很有功力的人。(尤其是史列因,雷神相对比较了解些)所以雷神在二位面前说了这些有点班门弄斧了,欢迎两位批评指正。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2002-09-15 23:27:07
<br>内容:雷神好,我明白你的意思,也明白史列因的意思,如果我也是一个公司的职员,我也可定会按照公司的要求,完成工作任务,采取最合理和有效率的办法.但是我这里更想说的是中国计算机的前途问题,前途的黑暗是由于什么造成的,我认为教育和舆论导向有一定的原因.<BR>还有,我有过实习,我觉得做软件,特别是做老板要求的软件很累,现在没有工作,还有两年,所以我不知道以后我有多少工资,那么累是不是值得,我本来也就只想做自己喜欢做的东西,特别想为了满足自己的好奇心,从硬件到软件,做一个系统出来,虽然我也知道,我可能只有1%不到的机会可能去做这个东西.<BR>同时,雷神说的文章,我也看过,我认为不同的程序有不同的方法.做企业软件,应该像你说那样,淡化数据结构,但是,如果要做点好东西,举个例子,不知道雷神玩过quake3没有,如果没有,也希望你去看看一里面的录像,是一个3d游戏,id software."里面的3d水平,超过中国3年以上(林锐)".那就是因为数据结构很好,效率很高,特别是画三角形,怎么去去掉看不到的三角形,而且那个游戏也非常强调编译原理,可以在任何平台(ps/xbox)运行,因为它采用雷神虚拟机,上层游戏是用雷神引擎的语言写出来的,所以现在很多游戏都可以直接采用他的引擎.<BR>所以说就爱好而言,我喜欢有难度的东西.我认为在学习的时候,应该目光长远;在需要具体运用的时候,应该具体分析,采取合理的方法.<BR>但是,提问的人,显然也是个学生,所以我希望大家能够长远一点,当然,如果你学习,仅仅是为了眼前要找一个it工作,而不是整个计算机科学,就不必如此.但是,我想我的目标应该远一点,同时,史列因好像也马上要上大学,我认为如果四年时间,太注重应用,不发展科研,不培养个性,而是去考虑如何适应以后的工作,四年时间学习也太长了,毕竟计算机科学,是博大精深的.要知道好多优秀的东西,不是来源于用户需求,而是作者的兴趣.<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:史列因 回复日期:2002-09-16 00:45:48
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;看来真的像雷神说的,不同的角度会得出不同得观点。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;仔细想想,我感觉用你的做法一口气读到博士然后从事一些科研工作会很不错,因为你有时间慢慢来。但如果只读到学士就出来作程序员,至少会有一阵子很难受。应用和研究的差异还是很大的。搞科研,不刨根问底就不行,但搞应用的话,对一切刨根问底会浪费很多时间。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我也知道内力的作用。不谦虚的说,我感觉我最大的优点就是有内力。可这内力是从哪来的我却并不清楚。我没有看过任何基础书籍。但从我开始学C++就一直很顺。所以我觉着基础并不是内力的唯一来源,在学高级语言的过程中一样可以培养。我想,多动脑思考远比记住些东西重要。学习基础书籍的目的决不应该是学习技术。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我把我的数据结构书看了至少3遍。也许是我的书太差,反正我觉着里面只有些常见的、直接操作数据结构的标准算法。而真正应用的常常是标准算法的变形,专业算法,甚至是稀奇古怪的东西,根本没法归类。至少搏奕和密码学在数据结构中都没讲,这应该属于专业算法。还有人工智能等,虽然以数据结构为基础,但并不属于数据结构。另外,以我的经验看,许多算法上的技巧只有在实践时多动脑才能发现,书中根本不可能介绍到。所以我说,学好数据结构并不意味着会算法。学习算法,除了掌握专业的算法,还要培养灵活的思维。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;至于查找、排序,我了解它们的特性,却没记住怎么实现。因为STL给实现得差不多了。剩下的CP大法也能很快搞定。没必要在这些机械的东西上花太多时间。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;至于下棋,如果只是对付像我这样的菜鸟,花点时间我也能搞个五子棋出来。只是这种工作有没有意义就是问题了,肯定有人比我做得更好。毕竟人的时间是有限的。直接把别人的成果拿来用效率会高很多。现在,即使写练习程序,我也要让它尽量有实用价值,而不会去写那些被人嚼烂的东西。例如链表的实现。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我没学过编译原理和操作系统,但从C++的书籍和Windows编程的书籍和一些杂七杂八的文章中,我也能推测个大概。我所不清楚的只是具体实现的细节。我想,即使我学过那些东西,不出半年也会忘得差不多。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我始终认为底层技术的细节是无关紧要的,知道实现一个功能的充分必要条件才是最重要的。而这个条件常常是可以通过直觉得到的。我知道类指针可能会被加一个offset,但至于什么时候加我就不管了。编译原理也是,我知道参数被分配空间压到栈里,至于怎么压,让编译器处理好了。我只要注意给没给够参数,会不会有二义性就行了。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;另外,我觉着将来某些领域对底层的知识要求会越来越高,但需要的人会越来越少。绝大部分人将会从事高层的应用。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;吵了一顿,不过收获还不小。毕竟真理越辩越明。反正我是个典型的实用主义者。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;顺便说一句,你可以很快的写出一个C编译器,因为C并不复杂,还有很多书把它研究透了。但你绝对写不出C++编译器。继承部分还算好办,但加上模板和异常还有满天飞的typedef就是灾难了。以至于现在还没有一个编译器完全支持标准。linus的例子并不普遍适用,那样的人并不多,中国不多,外国也一样。何况linux的成功也不是他一个人的功劳。以现在的技术状况,任何人单干十年都做不出什么复杂的东西。<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;By the way:我总算明白雷神的头像是什么了。不知将来我是否也会这样。^_^
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2002-09-16 02:43:04
<br>内容:你认为你有没有可能在以后写一个嵌入式设备的操作系统?同时包含一个编译器和基本的api.<BR><BR>虽然现在windows ce/palm/linux在嵌入系统占有很高的份额,但我知道,去年台湾互惠公司推出了penbex,用在pda上的操作系统,支持蓝牙,java,然后要我去当程序员.<BR><BR>整个操作系统,都是台湾公司独立完成的,我很佩服他们,所以我在想,以后会不会有人聘请我去做一个操作系统.我非常想,但是,我以后有这个能力吗?<BR><BR>如果要当一个多面手,我现在应该如何做起?<BR><BR>如果我是一个pc程序员,在别人的框架上写程序,有很好的oo思想,熟练的高级语言的语法,常用算法和数据结构也很熟悉,给我半年时间学习,我能够马上适应这种工作吗?<BR><BR>如果说那样的系统要专门的人来做,那么,他应该是什么专业毕业的呢?电子?学电子的可以写一个操作系统吗?<BR><BR>本来我也习惯了pc编程,但是,当我看到penbex的时候,一切都改变了.我认为,如果我还是以前那样,我绝对不可能参加他们的开发,我被打击了.我不能吊死在一棵树上,穷则思变,才有了上面的感想.<BR><BR>其实问题就是:<BR>1,计算机科学里面是不是应该分成跟细的专业,比如面向对象软件开发/硬件系统和单片机/操作系统,汇编语言和编译原理/网络和分布数据库..,不同的方向有不同的重点.还是跟现在一样,整个专业什么都学,什么都不偏废,等到以后需要具体运用的时候,再去具体学习<BR>2,大学里面,应该鼓励实用性的培养,还是创造性的培养.因为新创造的东西往往不成熟,不能直接用到实践上去.研究生应该偏重研究,专科偏重实际,本科呢??<BR>3,在开发环境日渐清晰的今天,pc程序设计是不是应该和计算机科学独立出来?(现在国家教育部批准成立软件学院,和计算机科学技术系并行发展)<BR><BR>这些问题我都不能够回答,我只是有自己的看法.<BR>其实版主可以专门为这几个问题成立一个话题讨论.因为这个涉及计算机教育和培养的方向.<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -