关于Java的一些牢骚(转贴)

ewang_365 2001-11-23 12:11:43


发信人: Nullgate (民工空门·道·自由), 信区: Java
标 题: 关于Java的一些牢骚
发信站: BBS 水木清华站 (Sat Feb 17 01:06:11 2001)


Java现在热的不得了,似乎是个人都在学。网站也动不动就说jsp,servlet,ejb。我也见过不少需要java的公司的小头目(项目经理一级吧),他们却抱怨缺乏java的人才。以前我以为只是懂perl的少,毕竟摸过perl的不多,所以不太理解。现在我算是明白了,很多人学java不是把他当作一门语言来学的。写applet的就只知道如何画图,写jsp的把jsp当asp用,在程序中用过数据库就算是懂数据库。

Java是一种语言。我觉得不懂计算机就去掌握一种计算机语言是不可思议的。你首先得了解世界,才能用语言去描述这个世界。对于盲人来说,颜色永远只是个抽象概念。我很理解那些搞不清tcp和http的jsp程序员,因为他们可能永远不会遇到“裸露”的tcp连接。他们也不需要了解垃圾回收和互斥,因为http基本都是短连接。或许他们活得很实在,但是我绝对不会认为这些人“懂”Java。

当初刚学Java的时候,我觉得它的语法和C++别无二致。那时候我精通C++的语法规则,继承规则,重载、超载、虚函数、内存管理的语法,然而我完全不明白OO,完全不懂TCP/IP,完全不明白操作系统。那时候我觉得自己是个天才,自以为在半年内学会了C++。很可惜,懂语法规则并不等于懂计算机语言。我现在对tcp/ip,sql,操作系统和面相对象有一些肤浅的认识,回过头去看过去,发现自己整一个傻冒。

算法虽然不是语言的一部分,但是不懂算法的人,怎么可能写程序呢?算法在很大程度上与语言无关,然而却是一个程序员的基本素养。很难想象,只知道穷举的人能写出什么高效率的东西,虽然在很多情况下穷举是最优算法。我的说法并不严谨,并不是说一个程序员非得能凭空想出快速排序才叫程序员。我只是想强调对算法的知识是很有必要的。

面向对象的编程方法在很大程度上是一种革命,与面向过程的编程相比,面相对象的编程与语言的有很大关系。拿C++或者SmallTalk写出来的东西区别很大。但是面向对象的精髓却是一致的。Java就是一种专门为面相对象编程而设计的语言,所以,我认为不懂OO的人根本不可能懂java(等他懂Java的时候,自然明白什么是OO :-D)。

虽然很多人说学习Java不需要任何C++/C的经验,甚至可以把它作为第一门语言来学习。我也很同意,但是不要以为找几本Java书就可以从一个菜鸟变成大虾。Java只是一种语言,只是一种工具,你不可能指望从Java的教材中精通数据库,了解TCP/IP细节。当然,你肯定可以通过Java学会OOP。Java是跨平台的,但是不等于你可以完全不了解平台,否则你可能连简单的rpm -i都不懂(不懂没关系,因为不一定非得用Linux),你至少得学会安装它。

如果你希望我开一个与Java无关的单子,我会列出:计算机体系结构、汇编语言、SQL和数据库知识(不是Oracle的手册!我说的是基础)、计算机网络(比如同名教材)。如果有时间,可以看看操作系统,只是简单的了解,至少你应该看看五个哲学家的问题。如果穷极无聊,我推荐你看看应用密码学。事实上,计算机科学在很大程度上是数学,离散数学、形式逻辑、拓扑学,相关的知识很有帮助。

不要被我的清单吓跑,罗马从来就不是一天以内建好的。如果你是计算机或者电子系的学生,上面的大部分东西都是必修课或选修课,你只需要理解教材,成绩根本不重要。如果你完全没有计算机基础(我是说系统的学习),你得学习很多枯燥的理论知识,但是那绝对值得。我个人比较羡慕计算机系的学生,呵呵。

事实上语言是触类旁通的,只要你精通任何一门语言,你可以很快地掌握另外一门语言。所以没必要犹豫不绝,学习C++并不妨害你精通Java。我只是觉得语言只是一种工具,不要被工具所羁绊——虽然这正是sun的险恶用心。我只想说明,只有大量的实际编程才能真正使你掌握一门语言。所以,如果你的项目是C++,没必要花时间学习Java,当你精通了C++,你会发现Java很easy。如果你有选择的余地,我强烈建议Java,用执行效率换开发效率是非常划算的。

我并不认为写程序是一门艺术。至少写代码不是。如果你打算一辈子做代码生成器,也许只有等到程序机器人出现,你才会后悔。很多劳动,尤其是做网站,都是简单重复脑力劳动,对你的学习没有太大的帮助。如果你只是为了挣点零花钱,也没什么好说的。

最后我想说明一点,我并不是什么大牛,也不精通Java,事实上我前几天才明白wait是做什么的。我学习Java的时间不到半年,我自认为了解OOP的时间和这一样。我在上面开出的单子我自己也不怎么了解,我甚至没有系统地学习离散数学。但是我觉得这并不妨碍我阐述真理。

说了半天,基本上没有说到Java,不好意思。
拜托,我只是个民工。
...全文
364 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbc2188 2002-01-09
  • 打赏
  • 举报
回复
我现在学Java
david_liu 2002-01-09
  • 打赏
  • 举报
回复
不错! 感触很大!
ewang_365 2002-01-09
  • 打赏
  • 举报
回复
haha
Fiber 2002-01-09
  • 打赏
  • 举报
回复
站在计算机专业的角度你可以这样讲,但是以现在中国现有每年的计算机专业毕业生去考虑这些未免有些太过于挑剔吧!就问你一句话如果你学过编译原理,那你看看你在写程序的时候是不是完全考虑到语法及语义还有它的执行效率呀!你要不要考虑你的内存分配及回收,要不要考虑你的中断异常处理,扪心自问能够做到吗?算法是很重要,但是问一下你自己你在写程序的时候有没有考虑一个算法!
ewang_365 2002-01-09
  • 打赏
  • 举报
回复
u p
hahaha88 2002-01-09
  • 打赏
  • 举报
回复
Java只是计算机技术中的一部分,是谁说Java能代替所有的计算机技术了?嘻嘻

“不是文盲”这个条件为什么没有列在你的清单上呢?我认为这个条件比你在
清单上列出的所有东西都重要,为什么你不写呢?嘻嘻 因为这是“缺省必需”的,
所以数据结构/算法/OS这些也是基础知识,和语言(C/C++/Java)基本无关,这并不是
Java的缺点 :-)

另外在强调基础知识的重要性时,也不应该忽视社会分工的重要性,一个JSP程序员
首先要熟悉JSP,一个开发团队是由负责各个方面的工程师联合组成的,从这个意义
上说,一个JSP程序员可以认为“硬件层”对于他/她来说是“透明”的,网络协议
为什么要分层呢?原因之一就是要提供一个“隔离/解耦机制”,不需要知道每一层的细节也
可以工作。你熟悉你用的鼠标上面的塑料是怎么加工的嘛?你如果不知道,
你就不是一个合格的计算机工程师 :-)

说了半天,基本上没有说到计算机,光说塑料了,不好意思。 嘻嘻(开玩笑)
domustdo 2002-01-09
  • 打赏
  • 举报
回复
现在在忙考试,没时间!
java2b 2002-01-08
  • 打赏
  • 举报
回复
U P 一下
lxj_guitar 2002-01-08
  • 打赏
  • 举报
回复
想你致敬!
lxj_guitar 2002-01-08
  • 打赏
  • 举报
回复
太棒了
我就喜欢这样的文章

实在是太实在了
^_^
Patrick_DK 2002-01-08
  • 打赏
  • 举报
回复
高手帮忙给看看

http://www.csdn.net/expert/topic/463/463710.shtm

http://www.csdn.net/expert/topic/463/463555.shtm
ewang_365 2002-01-08
  • 打赏
  • 举报
回复
isamsung(fantastico) ?????????
Philyan 2002-01-08
  • 打赏
  • 举报
回复
好看!
camry_camry 2002-01-08
  • 打赏
  • 举报
回复
哈哈,XX所见略同。
isamsung 2002-01-08
  • 打赏
  • 举报
回复
人生到底多少年?
ewang_365 2002-01-08
  • 打赏
  • 举报
回复
camry_camry(camry) : 同意你的说法,其实写代码也是一种艺术。

greatsuoer(英雄索尔) : 关于书籍,先看一些基础,然后看该考试的书籍。
推荐你看一些网站: http://my-wjl.scu.edu.cn/~xxuzi/
http://www.deping.net/cgi-bin/lbbs/forums.cgi?forum=4
bistar 2002-01-08
  • 打赏
  • 举报
回复
是啊,欣赏了这篇大作再看看现在排在“热点问题”头名的“(转贴)我看.NET和JAVA--JAVA必败!!!”感觉真是好笑,还是作“民工”的好,总比作“麻雀”强:-)
karmaho 2002-01-08
  • 打赏
  • 举报
回复
那是给谁看的?
aistill 2002-01-08
  • 打赏
  • 举报
回复
这东西可不只是给Java程序员看的!!
tianzhhy 2002-01-08
  • 打赏
  • 举报
回复
五个哲学家的问题
是什么啊?
加载更多回复(26)

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧