博文
Java替代C语言的可能性 孟岩著(2007-01-15 22:47:00)
摘要: Java替代C语言的可能性 孟岩著
前不久CSDN刊登了一篇《C语言已经死了》的文章,引起了一些争论。其实那篇文章是从Ed Burnette的博客上转载来的,原文题目是“Die, C, die!”,直译过来应该是《去死吧,C!》,表达的是一种诅咒,而不是判断。翻译称《C语言已经死了》,显然是一种煽风点火的误读。CSDN网友对于其观点已经进行了批判,不过坦率地说,由于这些批判基于一个扭曲的翻译文本,所以不但没有什么新鲜的地方,而且也没有抓住原作者的重点。
实际情况是这样的,最近一段时间,在国外的技术社群里刮起了一股风,不少人在讨论Java做为C语言替代者而成为最主流的基础软件编程语言的可能性。从大部分人发表的观点来看,对于Java替代C的趋势还是支持的。
基础软件是指这样一类软件,其主要任务是把计算机的潜能充分发挥出来,面向上层应用软件提供一个高效、可靠的功能集。这些软件会被密集地调用,性能上的一点点滞后都会在实践中被成百上千倍的放大。所以对于基础软件来说,性能至少与可靠性一样重要。我们在一些基础软件的源代码里,常常看到一些丑陋的设计,看到一些变态的黑客技巧,在其他的领域里,这是不被鼓励的,但是在基础软件中,这就是合理的,可以接受的。
C语言目前仍在一些领域里坚挺,在操作系统、虚拟机和设备驱动程序开发方面,它可能是永远的王者。但是在其他的基础软件领域,比如数据库、网络服务器、图形图像处理等,C语言继续占据霸主地位的原因其实只有两个,一是快,二是熟悉的人多,而且经验丰富。
但是这两点现在都遭到了挑战。
首先是速度。Java的执行速度在JDK1.4的时候达到了这样一个水平,就是对于一个一般水平的开发者来说,他写的C++程序已经不再比对等的Java程序跑得更快了。随后的JDK 5.0和6.0进一步提高了执行性能,由不同的组织举行的多项评测结果表明,Java与C语言的整体执行效率差距在一倍以内,也就是说,素以速度著称、并且为了速度放弃了很多东西的C语言,现在比装备齐全的Java只快不......
新手阅读:一个程序员对学弟学妹建议 来自csdn论坛(2007-01-14 00:50:00)
摘要:新手阅读:一个程序员对学弟学妹建议 来自csdn论坛
我始终认为,对一个初学者来说,IT界的技术风潮是不可追赶。我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的
大部头,这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C
#里面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样,“忽如一夜春风来,
千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。96,97级的不少大学生
都去做Web 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些
时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。
几个误区
初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实
际的例子来说明这些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种
:
认为计算机技术等于编程技术:
有些人即使没有这个想法,在潜意识中也有这样的冲动。让我奇怪的是,许多信息学院
的学生也有这样的念头。认为计算机专业就是编程专业,与编程无关的,或者不太相关
的课程他统统都不管,极端的学生只要书上没带“编程”两个字他就不看。
其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层
的人是程序员(CODER)。计算机技术包括了多媒体,计算机网络,人工智能,模式识别
,管理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践
的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有
趣的现象是,不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好
的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白,自己这些东西,
学的时候并不比其它专业难,所以自然也不会高档到哪里去。
咬文嚼字的孔已己作风:
我见过一本女生的《计算机网络原理》教材,这个女生像小学生一样在书上划满了横杠
杠,笔记做得满满的,打印出来一定比教材还厚。我不明白的是,像计算机网络原理这
样的课程有必要做笔记?我们的应试教育的确害了不少学生,在上《原理》这一类课程
的时候许多学生像学《马列原理》一样逐字背诵记忆。这乃......
VC程序员之无法选择的命运(来自csdn论坛)(2007-01-11 19:46:00)
摘要:文章:VC程序员之无法选择的命运
http://community.csdn.net/Expert/topic/5286/5286537.xml?temp=.5930445
许多人选择做程序员,因为觉得程序员做的是创造性的工作。
许多人选择做VC程序员,因为想感受掌握一切,君临天下的感觉。
后来,程序员们都明白了:自己所做的,只是最机械、最重复的劳动。我们并未创造着世界,而是让世界死死地牵着鼻子走。我们一步也不敢停留,害怕着会因此与世界失去联系。
再后来,程序员知道了除了写程序之外,还要吃饭。许多程序员找到了工作,唯唯诺诺地写公司规定的代码,过上了任人鱼肉的生活。VC程序员却由于一直找不到工作,流浪街头。
其实,选择做程序员,就意味着比别人受更多的苦。选择做VC程序员,就意味着比别人走更多的弯路。因为我们没有好的书籍参考,没有好的老师指导,没有好的环境实践……我们孤独地在眩目的显示器前或在漆黑的夜里苦苦摸索,寻求出路。然而,蓦然回首,离自己的目标已渐行渐远……
数百个VC程序员联系上我,说找不到工作,有的说要到我公司来。我要求他们设计一个最简单的项目,但他们都似乎有心无力,屡屡犯错。我知道,这并不是因为我们的VC程序员不认真,不努力。而是在这盲目的大潮中,程序员们找不到方向。举个例子,当今的VC书籍可不能不谓浩如烟海,但真正有用的没有几本。写书的人欺骗着一批又一批的莘莘学子,让一大班程序员跟着他的屁股去啃那些枯燥无味并大多无用的东西。当程序员们探索得有点眉目的时候那技术早已经不流行。如MFC,来不及让程序员们真正理解,却显江河日下。
我知道,真正让你有进步的行为是进一家软件公司做一个项目。那时,你会真正感受到一日千里是怎么一回事。但是VC朋友说要到我公司来,我总是拒于千里,理由是不能给公司带来效益。公司不是慈善机构,要培养一个VC程序员也不是一朝一夕的事情。朋友说,我们可以合作,这样总可以帮上公司一点忙吧。其实,合作写程序并不象书上所写的那样简单,相反它更是一个漫长的过程。每个人的经历不同,思维不同,要融合在一起是很难的。即使大家同一样的大脑,初次合作时也要不断地交流。最......
阿蒙:程序员高手是怎样炼成的? (2007-01-07 01:55:00)
摘要:阿蒙:程序员高手是怎样炼成的?
首先声明,偶不是高手,以免引起不必要的冷嘲热讽,呵呵。
估计很多的朋友在很小的时候就看过奥斯特洛夫斯基同学的《钢铁是怎样炼成的》,偶小时候在农村混,看的最多是各式各样的牛屎以及长得极象牛屎的山头,这些所谓的名著偶直到大学才有机会拜读,但说实话,偶是个俗人,还是更喜欢看一些痞子写的文字或带COLOR的BOOKS。偶之所以写这么个主题,主要是太多的朋友给偶发EMAIL或在VCHOME.NET提问,偶其实也与大家一样为生活而奔波,因此没有时间一一作答,在这作一次回答,还望海涵。
高手是一个哗众取宠的词汇,世上本来并没有高手,说的人多了也就有了高手,我看程序员只有老少之分,并无高低之分,比如偶就是一个老程序员,因此作为程序员,我们追求的应该是写出有用有价值的软件产品,呵呵,废话少说,切入正题吧!
1.迷恋 + 热情;
爱因斯坦同学说:兴趣是最好的老师,这就是说一个人一旦对某事物有了浓厚的兴趣,就会主动去求知、去探索、去实践,并在求知、探索、实践中产生愉快的情绪和体验,并不断地激发学习的动力,这种说法很美妙,众所周知,程序员是一种有点乏味有点枯燥有点辛苦的技术工作,要能坚持下去,并能做得很好,没有迷恋没有热情是很难很难的,偶就很迷恋,迷恋C++,迷恋computer,迷恋network,偶迷恋for、if、while、case等等就如同歌手迷恋五线谱的小蝌蚪一样,我觉得程序代码真是无所不能,简简单单的几行代码就能实现丰富多彩的功能,你难道不觉得很NB吗?呵呵,因此,作为一名老程序员,我建议年轻的程序员们一定要对coding保持迷恋保持热情,那样我们才有可能做得更好。
2.在项目中磨练与成长;
很多朋友经常问:他看了很多书,也做了较多的练习,但感觉水平并没有得到提高,这是为什么?呵呵,我觉得每个人不同,有些程序员通过看书,也能学到很多东东,但我个人觉得最好的提高方法,还是要参与到某一项目中去锻炼,从设计到开发到测试到维护一整套的磨练流程,项目是有周期的,有周期就有压力,有压力才能不分昼夜地去学习与实现,学习的效果也会很显著与深刻。
3.数不胜数的加班;
偶这里所讲的加班并不单指工作上的OT(即ove......
周末闲侃:论J2EE程序员的武功修为(2007-01-04 21:33:00)
摘要:周末闲侃:论J2EE程序员的武功修为
2006.12.21 来自:pconline 大峡
作者:EasyJF开源团队(www.easyjf.com) 大峡
经常会跟一些朋友讨论怎么样才能学好Java,学到什么程度才算撑握了Java的问题。其中有一个J2EE程序员层次及武功修为的问题,有点意思。这里就把讨论的内容大致整理一下发出来,大家继续讨论。
纵观国内的软件行业,靠Java吃饭的程序员还真不是少,而且Java程序员是有很大优越感的,毕竟对于很多用b/s搞开发的业内朋友来说,Java技术意味着难度大、门槛高,因此相对来说Java程序员比其它的程序员(如php、.net)收入高就理所当然。然而J2EE所涉及到的范畴是很广的,不能一个Java程序员就概括了事,而应该具有层次及水平之分,很多时候经常需要进行分类或评级,有时他评、有时自评。
谈到国内J2EE领域的程序员层次水平,当前流行的称谓及评级不外乎就下面几种:
第一种是精通掌握记事本、Dreamweaver等工具来写JSP+JavaBean数据库应用的是J2EE程序员;
第二种是用JBuilder、Eclipse等专用Java开发工具写着一堆一堆过程式Java Bean,而且还能精通Struts+Spring+Hibernate等应用框架的高级J2EE程序员;
第三种是用Together建模,然后生成一堆Java接口或代码,开口闭口都是设计模式的资深Java程序同及高级系统分析、构架师;
最后还有一种是整天在BlogJava或JavaEye上谈经论道的大师们,这些大师技术水平难以触摸,武功门派也各具特色,不好归类,有时不好称为程序员(因为有的时候他们甚至不写或者写不出程序),但又做着与J2EE程序员密切相关的事情,我们暂且就归为“牛牛”或“大师”。
称谓毕竟只是称谓,带有点主观或者功利色彩,有时很难鉴定一个人应该属于什么,因此,我们再从纯技术的角度,也即武功修为的角度,作了一个简单的分析及归类,把2EE领域程序员大致分成以下几个层次,可以作为大家自评的一个参考标准:
第一个层次:精通掌握Java语法、能调试基本的程序错误,精通掌握JSP+Java Bean写一些N年前ASP、PH......
八个经典问题 来自csdn论坛(2007-01-03 20:55:00)
摘要:八个经典问题 来自csdn论坛
简单的几个问题,体现着人生的大智慧。其实,很多时候我们都会范着这种简单的错误……
问题一,
如果你家附近有一家餐厅,东西又贵又难吃,桌上还爬着蟑螂,你会因为它很近很方便,就一而再、再而三地光临吗?
回答:你一定会说,这是什么烂问题,谁那么笨,花钱买罪受?
可同样的情况换个场合,自己或许就做类似的蠢事。
不少男女都曾经抱怨过他们的情人或配偶品性不端,三心二意,不负责任。明知在一起没什么好的结果,怨恨已经比爱还多,但却“不知道为什么”还是要和他搅和下去,分不了手。说穿了,只是为了不甘,为了习惯,这不也和光临餐厅一样?
做人,为什么要过于执著?!
问题二,
如果你不小心丢掉100块钱,只知道它好像丢在某个你走过的地方,你会花200块钱的车费去把那100块找回来吗?
回答:一个超级愚蠢的问题。
可是,相似的事情却在人生中不断发生。做错了一件事,明知自己有问题,却怎么也不肯认错,反而花加倍的时间来找藉口,让别人对自己的印象大打折扣。被人骂了一句话,却花了无数时间难过,道理相同。为一件事情发火,不惜损人不利已,不惜血本,不惜时间,只为报复,不也一样无聊?
失去一个人的感情,明知一切已无法挽回,却还是那么伤心,而且一伤心就是好几年,还要借酒浇愁,形销骨立。其实这样一点用也没有,只是损失更多。
做人,干吗为难自己?!
问题三,
你会因为打开报纸发现每天都有车祸,就不敢出门吗?
回答:这是个什么烂问题?当然不会,那叫因噎废食。
然而,有不少人却曾说:现在的离婚率那么高,让我都不敢谈恋爱了。说得还挺理所当然。也有不少女人看到有关的诸多报道,就对自己的另一半忧心忡忡,这不也是类似的反应?所谓乐观,就是得相信:虽然道路多艰险,我还是那个会平安过马路的人,只要我小心一点,不必害怕过马路。
做人,先要相信自己。
问题四,
你相信每个人随便都可以成功立业吗?
回答:当然不会相信。
但据......
我对JAVA学习和JAVA程序员找工作的看法(来自csdn论坛)(2007-01-03 20:52:00)
摘要:我对JAVA学习和JAVA程序员找工作的看法 来自csdn论坛
本人做软件开发大概有6年多了,从事JAVA开发大概4年多,一直在上海.
现在我在网上总是看到大家在讨论什么架构比什么架构好,什么技术比什么技术强.
对这个我想谈谈我的几点看法.
第一、我觉得谈架构是需要有资格的。如果你THINK JAVA或
JAVA核心技术这两本书还有很多你不能理解 那么你最好先把其中的一本看个滚瓜烂熟,再去看其他技术。你SERVLETS用得很熟练了么?如果没有,那么strust你应该先停下来。如果JDBC还不熟,(我的意思是至少你要知道它是总样工作,总样能提高对数据库操作的效率,不是只会调简单的调一ST对象,写一句简单的SQL)就没有必要去讨论Hibernate之类。当然你可能在工作时候正好用到我说的Hibernate,strust。不过你还是不应该把时间放到这个上面,因为工作中用到它们的地方不是很多。还是应该先把基础打好。Hibernate,strust这样的东西能给你工作带来很大的方便,但是你去学习它的应该是他的原理和为什么要这么做,而不是简单的学习怎么用。我以前是SERVLETS程序员,三年前第一次拿到STRUST我好象马上就会用。那些标签库我估计我也能写出来 只不过可能考虑不到那么全。
如果你是刚开始找工作的,我觉得你只需要简单的会一点STRUST就可以,把主要精力放到JAVAV基础,JSP,SERVLETS上 然后JDBC看点,没有公司会对一个新人有太高要求,因为它不会给你很高工资的。不同工资的人做不同事情的。如果公司要采用什么架构也不需要你来做的,有更高工资和更多经验的人会来做这个事情的。你要做的事情不会很多,而且只要你态度好,即使有什么不会也有人会教你的。而面试的时候问得多的也是JAVA基础 JSP SERVLETS这些东西,其他的象SPRING,Hibernate你完全可以直接说你没有用过。不是每个公司全部采用这些的,关键还是基础。基础好学什么也容易。所以为什么说面试最关键的是你现在会什么 而是你要让人知道你以后会什么。
第二、我觉得你应该考虑你是为什么学习软件的。我比较俗气,我是为了更好的待遇才学习软件的。我以前是VB程序员,为什么要学习JAVA,我就因为当时认为JAVA有钱途(本人绝对没有说......
成功完成天网千帆开源项目的感受 来自csdn论坛(2006-12-21 15:17:00)
摘要:
成功完成天网千帆开源项目的感受.
来自CSDN的文章,作者zihui.
一个真实的案例,可以说是一个具有开源特点的项目管理过程,对于开源的项目运作,是有借鉴作用.更可贵的是,他记录的非常完整和全面.
【【开源尝试】】
2004年4月至8月,作者有幸进行了一次开源开发,期间感受颇多,在此撰文向大家做一简单介绍我们开源项目的前前后后,并穿插很多开源相关的知识,以飨读者。
【背景】
在教育网,尤其是高校的学生中,北大天网文件搜索引擎(旧称北大天网FTP搜索引擎)大概是使用频率最高的文件搜索引擎了。它是一个运行了多年的较成熟的文件搜索引擎,每天有大约30万的查询量。我有幸从它的主要开发者陈华手中接过它,作为唯一的维护、开发人员。但系统从2000年至今,经过多次的增删改,结构相当复杂,加之秉承了高校项目的一贯问题——文档不全、代码可读性较差,致使后续维护和开发相当困难。
人力问题大概是首要的问题,我首先向负责老师申请学生和我共同开发,但由于实验室本身容量的限制,已经不可能有其他人和我共同工作了。或者说,封闭
开发这条道路已经被堵死了。
不得已,我只有另择它途。如果从外面吸引人,传统的开发模式已经不适用了。很快,“开源”这条路映入了我的脑海,也许这是一条通往成功之路。
【开放源码项目的开发模式】
光有目标是不够的,还需要脚踏实地,我决定先学习前辈的经验,看看开放源码项目的具体开发模式是怎样的。
现有的成功的开放源码开发模式主要有:
1. 小型开源软件开发模式
2. 中型开源软件开发模式
其特点为拥有3-5 名核心维护人员,参与开发的人员10人-40 人之间,采用CVS 进行代码管理,通过maillist/irc进行开发交流,有明确的开发计划和日程。
用户提出的错误报告和修正数量很多,并且有一些分支产生。
3. 完全封闭的商业Open Source软件
4. 比较封闭的大型Open Source软件的开发
5. 由商业软件转化过来的大型Open Source软件开发.
6. "独裁"式的大型Open Source软件的开发.
7. "民主"式的大型Open Source 软件的开发......
标题:程序员学习的革命,教你如何使用大脑(2006-12-14 19:57:00)
摘要:标题:程序员学习的革命,教你如何使用大脑
作者:邢晓宁
时间:2006年12月13日
声明:版权没有,随你任转
很多人搞技术,还有很多转行搞技术,搞了一段时间终于发现,自己不适合作技术,又退了回去。要我说其实就是用脑方式的问题,真的学会适当的用脑方式,编程编起来才得心应手,才能找到编程的快乐。
有时候,我们问到很多高手详细的技术问题,他们马上用程序给你实现出来,而且运行无误,这应该是左脑高手。左脑:是作抽象化符号处理的。
而另外一些高手,我们问他们请教设计方案的时候,简单的在纸上勾勒几笔,大致的设计方案图就呈现出来,之后的check,他多半不看你程序,只让你给他讲讲大框儿便能发现问题。这样的的应该是右脑高手,右脑:形象化分类处理,我公司以前的老板是技术出身,每次检查我的程序的时候,都要让我给他讲程序,他从来不看我的代码。人家讲话,你的程序在我这里讲明白了才算通过,连你自己都想不通,那就别上手,想明白了再说。
当然,左脑和右脑结合是最好的方式,但是现代人对右脑的应用没有得到很好的开发,人刚生出来的时候最开始发育的是右脑,之后的3年中主要也是使用右脑,然后才是逐渐的在右脑和左脑架起一个沟通的桥梁,扶助左脑的建立,随后左脑逐步的完善。随着学校的教育,左脑的使用频率越来越高,比例上成年的使用左脑远远大于右脑。但是值得注意的是,右脑的信息存储容量是左脑的100万倍,如果得不到很好的右脑利用,那么岂不是浪费了很大的资源。
另外,论坛上,有人调查过,编码人员每天要有多少代码量,剩下的时间在干什么?平均是150行左右,当然干外包的要多一点。不过,星星多的,基本每天编程的时间不超过工作时间的20%,剩下的时间在思考,或者说这些时间在大脑里面勾勒出来程序的图,也就是常说的画脑图。看来很多大牛,在用脑上,右脑的使用还是高于左脑的。
对于画脑图这个概念,又叫做思维导图、心智地图,心像图,心智图,Mind Map,Mind mapping, 可以视之为一个树状图或分类图。不要一行行地作记录,而是画脑图。用树状结构和图像再辅以颜色、符号、类型和关联来画脑图。脑图法,是由托尼·布赞发明的一种方法。在他杰出的新著《脑图之书—发散性思维》(TheMindMapBook—RadiantThinking)里,有对这种方法很好的介绍。
顺便说一句,编程中什么语言好,这是......
有效编写软件的75条建议 来自csdn论坛(2006-12-10 00:48:00)
摘要:有效编写软件的75条建议 来自csdn论坛
1. 你们的项目组使用源代码管理工具了么?
应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。
2. 你们的项目组使用缺陷管理系统了么?
应该用。ClearQuest太复杂,我的推荐是BugZilla。
3. 你们的测试组还在用Word写测试用例么?
不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是Track和Browse。
4. 你们的项目组有没有建立一个门户网站?
要有一个门户网站,用来放Contact Info、Baselined Schedule、News等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)。
5. 你们的项目组用了你能买到最好的工具么?
应该用尽量好的工具来工作。比如,应该用VS.NET而不是Notepad来写C#。用Notepad写程序多半只是一种炫耀。但也要考虑到经费,所以说是“你能买到最好的”。
6. 你们的程序员工作在安静的环境里么?
需要安静环境。这点极端重要,而且要保证每个人的空间大于一定面积。
7. 你们的员工每个人都有一部电话么?
需要每人一部电话。而且电话最好是带留言功能的。当然,上这么一套带留言电话系统开销不小。不过至少每人一部电话要有,千万别搞得经常有人站起来喊:“某某某电话”。《人件》里面就强烈谴责这种做法。
8. 你们每个人都知道出了问题应该找谁么?
应该知道。任何一个Feature至少都应该有一个Owner,当然,Owner可以继续Dispatch给其他人。
9. 你遇到过有人说“我以为…”么?
要消灭“我以为”。Never assume anything。
10. 你们的项目组中所有的人都坐在一起么?
需要。我反对Virtual Team,也反对Dev在美国、......