发布一篇Java文萃 甚么才是软件开辟的葵花宝典
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.中国人多数喜好用武侠小说来对照软件开辟,可是在实战武功中,只要葵花宝典才是最凶猛的,也只要把握了葵花宝典,才干称为"不败"。
但甚么才是软件开辟的葵花宝典?
让我们先从一些征象动身。我们的条件是,软件开辟是一项智力麋集型休息。关于智力麋集型休息,我们察看到的征象是,个别的体现差别很年夜,团队的体现差别很年夜,构造的体现差别很年夜,国度的体现差别很年夜。这不象膂力占次要的休息,象百米王跑百米的速率也仅比我快50%。但在棋类活动中,一个妙手能够车轮战数位低手,并且毫无破例地将他们逐一击败!
这些智力活动员体现出的特性是,盘算准确并且速率快。其举动很象东方不败。固然关于葵花宝典的传说良多,但最正确的形貌只要一个字"快"。东方不败已快到了吓人的境地。就象卡斯帕罗夫已快到了深蓝的境地。
有一则关于物理学家玻尔的轶事,有一次玻尔在普林斯顿年夜学听两个年轻传授演讲他们的事情功效。时代玻尔俄然讲话说,假如照你们的研讨算下往,会失掉一个很成心思的推论。了局两个年轻传授归去盘算了两天,公然得出了一样的结论。玻尔是怎样做到如许快的?
在软件开辟中,我们一样注重到如许一种妙手,他们能够天天写出一千行摆布的高品德代码。他们能够使用已有的一些软件包,敏捷完成一个新的产物。他们能够在很短的工夫内,学会一项新的程序言语或是新手艺。他们体现出一种奇妙的速率。
在武侠小说中,一切的妙手都有一些伟人不克不及企及的体现。象张无忌学太极,用龙爪手击败龙爪手名家;乔峰用太祖长拳击败世界好汉;苏州慕容以其人之道还治其人之身,令狐冲一剑剌瞎十几双眼睛等等。我以为,之以是他们能做到如许,关头是在于他们快。
快其实不意味着禁绝或品德差。快与品德其实不冲突。
妙手的快,实在包括着很高的品德在个中。假如你由于妙手的快,就质疑其品德,那就相称于在问:东方不败脱手那末快,会不会刺禁绝?东方不败其实不满意于刺逝世敌手,他会在敌手身上刺朵花。他把杀人酿成了艺术。正确来讲,他真实的乐趣不在杀人,而在于艺术。
退一步说,就算东方不败第一击有点偏向,他稍作修改后,即刻跟上的第二第三击,也会击中他想击中的中央。在武功差的敌手剑还没拨出来的时分,他已杀逝世对方并刺上了一朵花。
以是真实的软件妙手,他其实不满意于他的代码能无效地事情了,他以为编程是艺术,并醉心于个中。在低手能写出一个版本的工夫里,他已写出了第十版。其品德固然不成等量齐观。就象一个九段棋手,在给定的工夫里,他能盘算十种大概,并将每种大概盘算到100手以后,从当选择一种最有益的下法。低手岂有苟全的时机?
妙手写软件老是一直地在重构(refactoring)。妙手喜好迭代式开辟。妙手说,增量就是打补钉,迭代就是推倒重来。关于软件这类工具,写一遍它大概OK(做到这一点也不简单),写十遍就是一个巨大的产物,再多写一遍它就更巨大些。
妙手快的窍门在于他很熟习各类工具。妙手看书很快,由于每本旧书里,值得他好悦目的新手艺只要一两章的内容。他能敏捷看完,并正确了解这本书的中央头脑和代价。而关于一个老手,每句话都是新的,他都必要往了解,每段例子,他都必要往试。
很少看到一种100%全新的手艺或实际。就象Javalanguagespecification里说的,Java没有利用任何新手艺,用的都是业界久经磨练的手艺。关于妙手来讲,那些手艺都是他所熟习的。天然,很快他就从一个C++妙手酿成了Java妙手。假如一个编程老手学Java,学两年也不如一个妙手学两个月的。妙手学新工具快。
妙手写代码速率快。统计了局说,人均每人月的无效代码速率也许是300至400行。但那是业界均匀临盆效力。关于妙手来讲,这个数字太低了。天天写300至400行是完整有大概的。由于在写代码时,一切常识都已具有,已没有任何必要他多花工夫的事变了。他乃至很少必要Debug。
妙手重用代码的才能很强,熟习新的API的速率很快。这也是由于,他已经利用过良多的API,重用过良多的代码。他晓得哪些是可用的,哪些出缺陷。他既过用Qt,也用过gtk+,也用过windowsAPI&MFC,也用过AWT&SWING。新的API对他来讲,也是老熟人。
妙手喜好用轻量级的工具,象vi,notepad,最多到UltraEdit如许庞大的。妙手用这类工具写出良多的工具。这些工具就象东方不败的针。那根针已具有奇妙的魔力,偶然候它能够当激光枪来用。
关于一些分量级的工具,妙手虽不经常使用,但一经使出也能力年夜于凡人。假如让东方不败用剑,最凶猛的剑术名家也会败得很丢脸。妙手实在用过良多的分量级工具,并且深知其优弱点。以是使出来,就会把能力发扬到最年夜,而把缺点削减到最校而低手则否则,老是把缺点加以年夜年夜的发扬而浑不知其精华安在。就象良多人学用UML、RUP、XP、Designpattern那样。
妙手所学博杂且举一反三。妙手做甚么都快,当低手还在一愁莫展的时分,妙手已美满办理成绩,往干其余事往了。
在成为妙手的路上,要有热忱,要循规蹈矩,要锲而不舍。
要逼本人,书要快快地看。要试图敏捷了解其大旨。实在你快快看所承受的信息量,与渐渐看承受的差未几。能分明几很年夜水平上取决于你的功底。今后用到再回过火来看。一本对你来讲新工具太多的书,不要期望看一次就全了解吸取。就象良多功力不敷的人看designpatterns那本书一样。渐渐看还不如找到多种信息来历,都快快看一遍。关于一个完整生疏的范畴,只看一本书很远远不敷的。
要逼自已,事要快快做。有一个伴侣,几年前我先容他往玩玩linux,他也暗示想玩,但他如今还没碰过。他得到了良多时机。
平常要无意识进步本人写代码的速率,实在你一天写15行无效代码,与你写50行无效代码,其品德是差未几的。你应当把那些业界均匀程度抛诸脑后,把超出本人做为独一方针。比及你写了良多形形色色的代码,你的程度就纷歧般了。一个先生曾向我先容他的学英语的决窍,他说你往啃原版小说,啃到50本,就和常人有很年夜间隔了。就是这个理。假如你写得太慢,怎样能写很多?程度怎样能进步?
要逼本人,学良多他人怕学的工具。低手总会说:这么多工具怎样学得过去埃因而就少学或不学。如许就成不了妙手了。妙手有十分广的常识面,有很丰厚的履历。晓得良多低手不晓得的事。玩过良多低手听都没听过的工具。
要逼本人,勉力满意客户的各类需求。团体妙技是在满意客户的各类需求的过程当中进步的。好比你喜好用Delphi,客户说必定要用VB,那你就允许他,然后把本人培育成为VB的妙手。用户的需求看似反常,但对你是一个时机。
如何才干做到看书快,写代码快,学新工具快,一个不言而喻的路子就是将事情并行化。你在一台呆板上make时,同时能够在看其余文档和谈天。关于盘算机是如许,对人也是如许。假如你只能串行地处置成绩,你的速率将进步无限。你的年夜脑有很年夜潜力可挖,它应当是一个多义务分时体系。勉力削减它idle的工夫。弄经济的Samuelson被人称为humanbrainmainframe,可见他的年夜脑有多快。
让你的头脑快起来,你就会区分于那些反响愚钝的人。假如你不克不及让人生的路途变长,就让它变宽。这天下变更快,必要你变得比它快才行。
如许加速其实不会让你夭折,相反,你有更多的工夫来享用生存和熬炼身材。你的生存将更有品德,更丰厚,更成心义。面临变更,你将立于不败之地。我们都是和本人竞走的人,必要跑得比今天的本人更快。
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听, 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 是一种使用者不需花费很多时间学习的语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java是一种计算机编程语言,拥有跨平台、面向对java 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 是一种为 Internet发展的计算机语言 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 是一种将安全性(Security)列为第一优先考虑的语言
页:
[1]