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

学习JAVA的过程中我糊涂了。。。(N多问题)
为什么学习JAVA要学习数据结构呢?以前,一直听说在面向过程的程序设计,或者存储空间有限的领域里对数据结构和算法要求比较苛刻。我以前学了段时间单片机,用汇编语言编写单片机程序的时候,对程序的代码量有很严格的要求和限制,但在JAVA的设计中,现在PC机的存储空间都比较大,内存也大,那么这时候的数据结构的优势在什么地方呢?
还有,很多人都在说,程序设计中的数学很重要,可能是我刚在学JAVA中,我 不太清楚数学的重要性,编程的过程中真的能用到高数知识吗?
到目前为止,哪个牛人所涉及到的软件开发领域用到了离散数学的知识,我觉得离散数学知识好像是为了锻炼一个人的逻辑
思维能力,它在实际应用中主要体现在什么地方呢?
为什么中国会有这么多程序员呢?是因为开发的工具越来越智能化吗?前几天,一个刚认识的朋友,就在跟我大谈JAVA的软件开发,呵呵,我刚开始学,也不太清楚他说的是什么,他好像高中毕业后就去读北大青鸟了,现在在做J2EE,我很纳闷的是,软件开发真的这么容易学吗?我觉得他很多JAVA的基础知识都不是太清楚,就在搞J2EE开发,难道有些细节的东西是不重要,还是很少用到,还是只学经常使用到的就行了。

------解决方案--------------------
java很多时候要跟服务器打交到,有效利用和设计服务器程序是java程序设计的高端,从服务器开发的角度可以看出软件架构的设计是比较重要的,从数据库里检索数据比较简单,但是能象google一样让一万多台服务器同事工作,速度还那么快就比较难了,java游戏可能代码还比较多的牵涉到算法,你看看java游戏开发的公司有多少开发人员你就知道了,我就不多说了(作坊)。
------解决方案--------------------
看api函数源代码
在装好的jdk里面就有
src目录下面
------解决方案--------------------
算法 自然需要 高等数学的支持, 算法 自然要处理 数据,自然涉及数据结构。
编程 都需要这些东西吧,不是java才要吧。。。java不是玩具,拖拖画画,就可以开发出万人使用的程序。


一个小程序 更本感觉不到 数据处理的过程,但是当这个数据量被放在网络上,同时同地被成千上万的人调用,
自然程序内部数据结构的合理性,代码的精炼 就需要达到一定程度了。


我也是刚开始系统的学习java,目前在用java编写一个 打字游戏,在编写过程中与越来越觉得 对于高数,
数据结构的不足,特别是数据结构


------解决方案--------------------
所谓编程,就是用计算机模拟出业务逻辑,所有的程序都将操作数据,数据结构就是组织数据的方法,所以学习数据结构跟用什么语言没有关系。

离散数学:这要看你做什么样的开发了,数据库技术发展的时间也不长,但为什么关系型数据库那么流行,在面向对象的今天,依然沿用关系型数据库?还不怕麻烦地发明ORMapping(Object Relation Mapping)来解决对象和关系型数据库中数据的关系问题,为什么不发明面向对象的数据库呢?就是因为关系型数据库有深厚的数学理论基础做支撑,你说数学重要不重要?哪一个经典的数据结构或算法是计算机科学家发明的呢?包括树、图,最优二叉树的遍历和最佳删除,这些都是数学家研究出来的。

如果仅做编码工人,那用JAVA确实不需要那些东西,可是要是做设计或系统分析呢?就一定要了,可能不会像上课考试那样的题摆在面前,但是没有深厚的这方面功底设计出来的东西就是垃圾,就会给后来的升级和维护带来诸多的麻烦,浪费全人类的资源,甚至整个系统都将要被淘汰。

一个例子,在JDK中有一个类叫Stack,本意是要实现一个栈,但由于设计不善,这个类继承了Vector,就是为了复用里面的代码,后来被证明,这是不合理的,因为一个Stack不是一个Vector,它们之间不应该有继承的关系,而且,我用一个Stack的对象,可以调用Vector里面中间插入和删除的方法,那就不是一个栈该有的操作了,这个错误发现后,最难办的是:它还要保留在JDK中,只不过加了不建议使用的标记,就是因为以前的系统里大量的用了这个类,为了高版JDK能兼容低版,JAVA不得不长期带着这个粗劣的设计向前发展。

不同的编程拼的东西是不一样的,要是你是一个C或汇编程序员,那么评价是否NB的标准是效率,而做为JAVA程序员,是否NB看的是架构,要想成为NB的JAVA程序员,请不要忽视“数据结构”“数学”