主题:[转帖]学不会的java,消不了的忧愁 献给那些酷爱计算机编程的人们
lampeter123
[专家分:160] 发布于 2009-03-04 19:50:00
PS:01年的老帖子了,看了之后茫然下
学不会的java,消不了的忧愁(一)
作者:jigenghua
亲爱的网友,和大家一样,来这里看贴子的,都会有一个共同的地方,那就是对JAVA有着或深或浅的爱好。
或许是我太笨吧,有不少书上明明写着,JAVA是一种很容易学习的编程语言,但我断断续续学过近两年的JAVA了,至今,还是写不出一个像样的、有实用价值的程序。总是一边学,一边忘。
哎,压死人的包(J2EE好像有60个)、成千上万的类(Classes)、接口(Interfaces)、异常(Exceptions),还有无穷无尽的方法(Methods)和类变量,一个又一个深奥得不得了、怪得不得了的专业术语,弄得我头昏脑涨,气得我咬牙切齿。也许你们会说:“既然你自己这么笨,那就叫JAVA滚一边去吧,学学其它简单一些的不行吗?”是的,几番番,我也会这样想的,但想到,未来的编程世界是JAVA的世界,(这句话不是我随口说说的,只要对网络和程序稍具了解的人都会这么想),为了一口饭吃,为了挣钱娶老婆生孩子养家,我除了走编程这条路,实在没有什么好路可走,(我乃一介中专生,97年自动化专业毕业)既然要走编程的路,不懂JAVA能行吗?不行!绝对不行!在深圳,在现在,懂VC、VB、DELPHI再加上任意一种数据库系统(SQL SERVER/ORACLE/SYBASE)的温工者,找一份3、4千元的企业编程工作的基本时间是10天左右。我不懂VC也不懂VB和DELPHI,但值得庆幸的是,我对VFP比较熟,能用VFP编各种企业用的数据库应用程序。我错过了学习VB、VC的时间(不久的将来,不懂JAVA的人很可能找不到编程有关的工作),现在学了,也是落后的......我现在下班了,明天接着写。BYE!
回复列表 (共6个回复)
沙发
lampeter123 [专家分:160] 发布于 2009-03-04 19:56:00
学不会的java,消不了的忧愁(二)
接着昨天的内容写吧,各位网友请先看昨天(03/11)的内容。
对于一个编程员来说,不懂VB、VC、DELPHI,在当今VB、VC横行霸道的HUGE CHINA,显然是很可怜的。我从Dbase3到FoxBase,再从FoxPro到现在的Visual FoxPro6.0,用这个桌面数据库管理系统不断地为公司或工厂开发一些数据库应用系统。在计算机水平还很低下的中国,用这样的简单系统开发出来的东西还是能够满足那些不太懂计算机的企业高层要求的,所以一直以来,快6年啦,我的生活过得还是挺滋润的,可爱的狐狸(Fox)帮我挣了大约10万元吧,最为重要的是,我心爱的Girl Friend(女友)也是她做的媒。
按理说,既然我对狐狸这么了理,狐狸也对我做出不少贡献,我应该好好继续和它发展下去才对,可君是否知道,狐狸的能力有限,在网络如火如荼的当今网络计算的时代,VFP前途黯然。很长的时间,我都在用着它,编程的思想也被它定型了,对“可视化编程”我能够深入了解,然而面向对象(OOP)、网络编程的概念一直没有深深感受过,我不是在说VFP没有这方面的概念和没有这方面的能力,只是用它去完成网络计算的工作,就好像用一台486的电脑安装win98一样。
搞了这么久的VFP,发现自己越来越木了,(vfp会让人学笨的),除了它什么也不会,在一个小企业里,它能完成所有办公需要(在后面我会结合我开发的应用软件举一个详细的例子来解释),大企业里呢,很多人还不屑于和一只狐狸打交道呢!人不能总吊在一颗树上,万一树倒了,就惨了,因此,我准备学另外一种编程语言,也准备学学网络,这是98年的想法。
受97年电脑报上发表的一篇文章影响,那篇文章刊登了比尔.盖次对java的看法,说java是一种最优秀的网络编程语言。那时对网络编程还不很了解,但知道网络是怎么回事,考虑到今后的发展,也明白网络是今后的发展趋势,我选择了自学java,第一种网络编程的语言,从此开始了学习java的历史,我想,在我们国家,一定有很多人像我一样,没有很好的计算机基础知识,也没有很好的编程基本功,却走上了编程的道路,我的背景和我的学历我在前面已讲得很清楚,这里再总结一下,学历:97年中专毕业;懂的计算机操作:vfp(一种可视化数据库开发语言)、win98、office97、WindowsNT4.0(不精)。这就是我当时(98年)的知识水平,在这么低的水平下,我是怎么自学java的呢?其间有多少辛酸的故事,我会把它详细写下来,让大家一起来分享。我的愿望只有一个,让别人也让自己一起来把java学好。限于一张贴子的篇幅,我这次不写太多,请看我下张贴子《学不会的JAVA,消不了的忧愁》之三——献给那些所有酷爱计算机编程的人们,
如果大家对我有什么看法,也可以写信给我:jigenghua@163.net
板凳
lampeter123 [专家分:160] 发布于 2009-03-04 19:57:00
学不会的java,消不了的忧愁(三)
各位网友,这已是“学不会的JAVA,消不了的忧愁”连载之三了,如果你没有看过前面两贴的话,还请先读读吧,虽然每幅贴子之间关系不是那么密切,但当你看完了所有贴子之后,我相信你会有所收获的。
或许是JAVA流入中国的历史还很短吧,在网上,关于JAVA的网站很多,可就是没有VC、VB多。现在(包括前几年),大家都一股脑儿去搞VC、VB去了,在这两方面China Man也研究出了一些名堂,出了一些很好的作品,据说那只伟大的蚂蚁(网络蚂蚁NetAnt——一种在网络上COPY文件的工具软件),还有那个好聊天的网络BiBi机——OICQ,都是用VC开发出来的。有一位同事,在深圳网天技术服务公司(据说现在被合并了)做过网站的,他略带夸张地说:“我们老板(原中华网的一位技术总监)说过,只要精通VC,一个礼拜,就可以把OICQ所有代码搞熟”,多么诱人的能力,由此可见,在我们国家,懂VC的人的技术不会比美国佬差。可对JAVA的研究呢,我至今还没有用过或听说过国人用它开发出来的很好作品,或许是我孤陋寡闻吧,我想,也不会啊,我天天在Internet里面游玩,尤其对有关java的技术讨论,鼻子一向是挺管用的。如果是一种没有什么前途的东西,比美国佬落后并不代表着什么,可对一种大家都想象得到的、有前途的、生命力旺盛的东西,比鬼佬差那么一大截就问题大大的了。一位网友在网上发过一篇文章《中国人不谈JAVA》,说美国的VC、VB时代已过去了,大家都在发疯似的搞java,而我们国家呢,哈哈,不想说了。
就是因为这样的原因,很难找到一本java技术学习的好书。在深圳,在现在,所有的书城里面的java图书不是没有,而是多得不得了,可你随手抽出一本,厚一点的,在封面上都会有一句八九不离十的话——美:ABC,XYZ著;张三、李四译。不知大家有没有看过有关计算机图书方面的译本,我看过好几本,对译本的印象实在是不佳,一句很长很长的话,用心去读、咬文嚼字去读,可还是不明其意何在,用中国人的一把锋利宝剑(缩句),把那些多余的枝条统统捎掉,结果发现:“对象就是对象,方法就是方法”之类的下定义,众所周知,在我们国家,这样的下定义是“违法”的,是要被老师拷叉的。对于一般的概念,只要能明了其含义即可,但对那些关键性的概念,像对象、面向对象,类、抽象类,方法、类方法、实例方法,等等等等,太多太多,是一点都不能含糊的,也不能似懂非懂的。有时候,遇到一些很重要的术语和程序,因为书上说得模里模糊,越看越不懂,真是气得吐血,恨不得把那个翻译的狗官丢进牢房——误人青春、误人子弟、罪该把牢底坐串!!(真心希望各位译大侠在把别人的作品译完之后自己能读上一两篇。)
在网上,很多爪哇技术网站,包括我现在所在的这个,里面的内容也逃脱不了翻译的痕迹——一句话:不好懂!
记得我第一本爪哇教科书是在江西吉安新华书店二楼花了39元买的,书名叫《21天学通Visual J++》,当然也是本译本,我很想能快点掌握java,所以选择了《21天...》,也希望能在21天学会它,就算我笨,我呆,21天学不会,那么42天呢,63天又怎样?
书的前面几页译得不错,打算从第一面看到最后一面,奇怪的是,第一章就把一幅Visual J++的编程窗口的插图搞错了,害得我看了老半天,看到第二章才发现正确的插图。
这样下去看了几章,越看到后面,就越看不懂,我深信自己的自学能力,也深信自己国语水平,我不怀凝自己,却开始怀凝这本书是不是值得看下去了。
于是,我开始四处查找资料,好在我读了四年中专,对英语还是有那么一点功底的,资料上的、书上的一些重要概念,实在看不懂,我就打开全是英文的JAVA说明书,借助于金山词霸的帮忙,尽量把它译成自己能明了的一句话。这样搞了一段时间,自己的计算机英语水平反而有一点点进步,现在没有“词爸”现场指挥,我也能看懂不少文章,但看得还是很累。
在断断续续学了两年JAVA后,才发现自己这辈子是不可能把爪哇学精学全的了,在以后的贴子里,我会把我已经懂得差不多的一些概念用纯中国话、最好懂的中国话告诉大家,不分什么章节,也不讲什么JAVA的发展史(讲了有个鸟用),想说什么就说什么,请大家对我的错误之处严加批评。
最后我会把我用VFP(一种很简单的数据库管理系统)帮一家外资手袋厂开发的计算机管理系统的功能实现告诉大家,为什么我会这么做?原因只有一个,我很想用java来重新实现这套系统。我把它写下来,算是我向大家提出的一个课题吧。在我开发的这套系统里面,所有的“JAVA 2代”新技术都有用武之地,你想真正地、务实地掌握JAVA的话,你有这个能力的话,大家一起来实现它。不要再向别人炫耀啊啊,我的Applet水平有多高;啊啊,我用JSP用了8个月;啊啊,我精通JDBC、Servlet、EJB,还有什么JINI、JNDS...只要你能用这些新技术实现我那套系统,那么,叫我以身相许我也——愿意!我崇拜真正有能力的人!(不过呢,哈哈,本人非靓女,实乃靓仔,江西的男孩不靓才怪!)
以上文稿没有仔细校过,可能会有错别字,莫见怪。限于贴子篇幅,就此搁笔,请看下贴《学不会的JAVA,消不了的忧愁》之四——献给那些所有酷爱计算机编程的人们
3 楼
lampeter123 [专家分:160] 发布于 2009-03-04 19:57:00
学不会的java,消不了的忧愁(四)
这一回,我不想谈那么多的感概了,我用自己的话来说说java,请大家来做几道判断题,认为对的,你可以不开声,认为错的,可不要忘了指出来。所有这样问题,面向像我一样的菜鸟,大虾也可以看看。
学习一和编程语言,不外乎两种背景:其一,兴趣爱好;其二,工作需要。在学校里,可能还有第三种背景——那就是必修课程。
在我看来,凭兴趣爱好学的东西学得很快,印象也很深,但没有很好地结合实践应用,自己也想不出什么真正有价值的课题去实现它,所以这种知识水平并不是很高。我见过很多这样的朋友,他们对VFP、VC的道理懂得真不少,可一问到一些真正有用的东西,他们回答得总是那么不尽人意。我曾经深爱着C,也会用它编一些简单的小程序,不过,从来就没有用它做过什么工程,所以,在外面应聘的时候,我不敢说我精通C,虽然知道自己的C水平很不错了。不过呢,话又说回来,一旦有了理论水平和基本功,真正遇到难题的时候,往往都能很快解决,所以凭兴趣爱好掌握的东西用途也是挺大的。
相反,因为工作的需要,自己不得不去掌握的东西一旦自己搞懂了,印象会更深刻。由于所有的“知识”都是建立在以“用”的基础上,掌握到了的东西就是活生生用得到的、看得到的东西,所以谈不上什么学不致用的问题。这种知识处处以实践为基础,一分钱一分货,最能解决实际问题,这也就是用工单位为什么那么注重实际工作经验的真正原因:招到有经验的老手,新工作上手很快,工作质量也很高!(我没有什么学历,中专生一个,但我早在95年的时候就开始用Fox真枪实刀地干,半工半读,为工商所、商场、酒店、制造厂、甚至我的校图书馆免费开发了一个又一个的数据库应用软件,这些软件,在我们江西内地,大多数至今还活得挺好的。这么多的软件,为我98年四月份在深圳能找到一份别人看来复杂、而我看来一般般的数据库网络编程工作打下了了不起的基础。来到这里不到半年,一家很大的电子厂,不知是通过什么渠道,连打三次电话给我,叫我过去帮他们搞编程,我想学java,不想再搞VFP了,所以没有答应,虽然对方开的报酬比我现在要高一个档次。)我的经历告诉我,学历并不是很重要的,关键是真正的水平,你能带着你亲手制作出来的CPU芯片到联想去应聘,哪怕你从来没有进过校门,柳传志也会叫你一声干爹。明白了能力的“妹”力以后,我不再刻意追求什么本科学历、研究生学历,我只想好好学点有用的东西,用能力向别人展现自己的风采!(有点吃不到葡萄就不吃葡萄的心态)
至于第三种学习知识的方法——为了修完课程而学,通过这种方式来掌握知识,基本上没有什么好谈的了,一句话,没有什么用啦!或许我讲的太武断太偏激。
我学JAVA,既不完全是凭兴趣爱好,也不是因为工作压得非学不可,只是基于学JAVA的一种潮流,和不久的将来的工作需要,错过了学VC、VB的疯狂时代,也错过了学CGI、ASP的关键岁月,我不能再错过JAVA,我输不起!
正是因为以上的原因,我把JAVA建立在将来的应用上,所以学得不是那么的累,人没有压力学东西往往很慢。一个面向对象的概念,看了一遍又一遍,不但弄不明“面向对象”是何物,连对象是什么东东,都似懂非懂,还以为面向对象是把脸面向着对象(Face to object),就算这样理解,面向着对象干什么?发神经啊?很多很多的书,标题写得不错——“什么叫面向对象”,抑或“面向对象的概念”,可看完之后,还是一头雾水。
最令人恼火的是很多书对类(Class)的定义:具有相同特性的多个对象的一个实体。去他奶奶的,老子连对象还不太懂,就用对象来说明类的定义,还加上一个怪异的词语——实体。这样的定义能说明什么问题?也许是写书的人太聪明了,以为大家的头脑都是抽象的,不会想木头、石头、狼和兔子之类的具体东西。
他完全可以想到这个词:模板,用模板代替实体,就成了类是具有相同特性的多个对象的一个模板,这样呆板的解释,当然不能让初学者对类这个重中之重的概念留下难于忘怀的印象。假如他能像我这样解释,请看下文:
传说中上帝造人是用模子来造的,上帝造人用的模子就是类(Class),当然模子也不是天生的,由上帝根据自己的想象制作,作好了模子以后,造人可就方便啦,几乎不用动脑筋,泥巴往模子里一丢,一个人就出来了,出来了的这个人就有了眼情啦、鼻子啦、耳朵啦,等等,最重要的是,这个人会说话,会唱歌、跳舞......
以上这个例子中,类就是模子,专门用来制作一些有很多共同点的实物,用模子造东西的最大好处就是可以偷懒,一劳永逸,用类来开发软件的妙处也正在于此。模子造出来(对“造出来”这三个字打上着重号,引起读者的注意)的东西有一个响亮的名字:对象或实例,因此,在java里面,我们讲的对象或实例,都是指已经用类制作好了的。用类制作对象这个动作,也有一个各位不太好懂的名字——类的实例化,或叫类的一个实现,好听吗?你们可要记在心里。
不知大家是否注意到,我上面说过,上帝用类造出人这种对象具有很多很多的特性,像眼情有大、眉毛有多长、牙齿有几颗、人长得是否靓仔等等叫做对象的属性(Attribute),一个对象视它简单与复杂,属性可以没有一个,也可以有多个。而人会说话、会打架、会谈恋爱……这些涉及到动作的行为叫做对象的能力(Ability),但在JAVA里面叫做对象的方法(Method),假如你的思想被VC化,你把它暂时理解为函数也不是不可以的。
通常我们讲的“面向对象编程”这种方法,或说这种思想,就是要求大家学习上帝造人这种方式、这种思想,把所有程序分成一个一个的功能块,有些功能块不仅你正在编写的这个程序用得到,将来编写的其它程序也可能用得到,正是你会这么想,把一些通用的功能块抽出来、概括出来,用一个独立的、能被其它类制造时调用的名字命名它。用这种思想去设计程序,叫什么面向对象编程(OOP)。
这一贴,我讲了学知识的三种背景,不同的背景学知识会有不同的方法,从面产生不同的效果。
我也介绍了类、对象、面向对象编程、对象的属性、对象的方法这些基本的概念,大家懂了吗?
下一贴,我将接着介绍类库的概念,还有父类、子类、类与类之间的遗传(继承),并教大家怎样快速用JDK这个工具
开发小程序。虽然有很多的可视化开发工具可以用来开发JAVA软件,但不懂使用JDK工具的JAVA开发人员,跟只懂Linux的X Windows不懂它的shell操作一样,属于低能的操作员。
所有这些贴子,都是出自于个人爱好,连载出来,目的只有一个:为了别人,也为了自己把JAVA学好!
请看下贴《学不会的JAVA,消不了的忧愁》之五——献给那些酷爱计算机编程的人们。
4 楼
lampeter123 [专家分:160] 发布于 2009-03-04 19:58:00
学不会的JAVA,消不了的忧愁(五)
各位网友,这是《学不会的JAVA,消不了的忧愁》之五了,在座的不泛JAVA高手,小生一而三,三而再地在爪哇连盟.COM自由论坛上发布奇谈怪论,不知是否碍了大家?不管怎样,灯火夜夜开,闲言说不尽,在没有接到贴子管理员的严重警告之前,这个长篇大贴将继续连载下去。
为了100%尊重网友,所有这些贴子都是本人亲手一词一句精心制作,字里行间不出现任何关于其它URL的链接,也没有任何商业味道,请大家放心阅读。
本人自学JAVA两年有余,第一年发现自己对JAVA很熟,第二年觉得JAVA变了,很多地方还没有摸她一下呢,现在更糟,越学越木了,真是“学不会的JAVA,消不了的忧愁”。sign~~(我在长叹息!)
……
--------------------------------------------------------------------------------
闲话少说,言归正传。
上贴讲了关于类和对象的一些基本概念,现在我们再来看看类库。
不知大家是否在制造厂呆过,在深圳,像塑胶制品厂、五金制品厂可多啦。在这些厂里,生产东西有个生死逃不了的工序--工模制造。工模做好后,成了其它产品制造的榜样,应该说“槽”更确切一点。会造工模的比会造JAVA类的吃香。或许,前者造的模子是硬的,摸得着的,给人踏实的感觉,而后者造的JAVA模子(Classes)是软的,给人不实在的感觉。所谓外行看热闹,内行看门道,那些造塑胶、五金模模的工人当然不懂我们用JAVA造的软件模子。然而,硬的模子也好,软的模子也好,它们在管理方面大都相同。会管理JAVA模子的人一定会管理工模,反过来,就不成立了,这点,值得我们搞JAVA的家族骄傲。
制造厂产品制作越多、越久,模子也就越多。很多产品外形大同小异,君不见诺基亚3210和8250的机型,除了后者小一点外,身材基本相同,所以大多产品的工模重复使用的概率很高。为了下次产品开发能够快速找到本次做好的这个模子,对模子进行分门别类分开存放并按名称排列是一种很好的方法。喏,这是诺基亚3210系列的工模柜,放的都是这个系列的模子,还有一些模子说明书、技术资料等。那边是诺基亚8250系列的工模柜,存放的是8250系列的模子以及说明书和技术资料……所有这些工模柜都存放在一个房子里,暂就叫它工模仓库吧。这个工模仓库对工厂来说,用途你瓦大不大?
所有的JAVA的模子,即所有的JAVA 类,管理方式与上面所讲的一模一样。你用JAVA开发软件的时间越长,编写的类就会越多,为了下次能借用本次编写的类,你得和上面一样,对JAVA类分类型(请原谅我在同一句话里用一个字的两种不同含义),这类是专门用来制作按钮、标签、文本框等等的,那类是为了开发数据库应用程序专用的,另一类是专调颜色的……每一个类别都帮他取一个名字吧,取什么名字好呢?在爪哇里面,分别叫Swing(小时候叫AWT)、SQL、Color……,通常我们不这样说Swing类别、SQL类别、Color类别……,而是说Swing包、SQL包、Color包……所有这些包存放在一个地方(也就是一个文件夹下),由此可见,这个文件夹可是个金矿。
内含了所有JAVA包的文件夹就是通常讲的JAVA类库,现在你应该明了,类库里面放的都是包,大包小包;包里面放的都是类,大类小类,类里面放的都是什么?是我上贴讲的那些东西,方法啊、属性啊等等。当然,有时候,包里还可以放入别的东西,象接口、异常、错误,这些东西你现在还不知道,我后面的帖子会再慢慢告诉你。
一个很重要的概念,在工模库里面,有些工模只有同类产品可以借用,有些工模所有产品都可以借用,还有些根本无法借用。JAVA包里面的类也一样,有所有包里面的类都可以用得到的,叫public类;有本包之内的类才可以用得到,叫protect类;还有些类是吃独食的,任何其它类都不准打它主意,这叫自私类(private),更绝的是,大多数类都会生类仔,而有些类是性无能,不会生仔的,这又叫什么类呢?JAVA里面叫性无能类,哦,不不不,叫终止类(final),似乎还有几种类,但我还不知道怎样称呼,问问SUN公司吧!
在爪哇里面这样分类有什么作用呢,用途可大,这是后话,本贴不提。
本来打算再讲讲类的继承概念和JDK的简明使用,由于时间有限,这贴不讲啦,请看下贴吧!
--------------------------------------------------------------------------------
这贴我们讲了类库的概念,还有什么叫包,为什么要把所有类打成不同种类的包,同时涉及到了public类、protcet类、pvivate类、final类的一些解释,这些都是很重要的概念,大家懂了吗?
直到现在,我没有举一个程序例子来说明问题,随着贴子的发展,例子会越来越多,而到了讲解JDBC、Solect、JAVA Bean、Enterprise JAVA Bean、Selvlet、Applet……等等的时候,没有例子讲解简直无法开口。
请大家百分之二百放心,我的口中从不出人家听不懂的话,我曾经让一个64岁还在江西种田的农夫明白了VC动态调用的概念。
在学校里,我办计算机自由论坛接近3年。课堂上,老师讲DOS没人听,课堂外,我讲DOS教室挤得人挨人。
我的知识很贫泛,懂得东西太少,但我能把我已经懂了的让大家都懂。我说话的方式曾经让很多小企业的老板吃惊,甚至连我们学校的图书馆馆长也为之动容,这也就是为什么我在学校的时候就能接到软件开发的业务。
6 楼
流星小子 [专家分:0] 发布于 2009-03-08 23:27:00
好!!
我来回复