扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
AOP这个概念打从它出生,就有许多人关注和推广。不可否认的,它确实对于面向对象程序设计(以下简称OOP)带来了许多好处和影响,可是在实际的程序/系统开发上,使用的人并不多。其实这样情况是很自然的,OOP的概念也不是从Java之后才有,早在1970年代的Smalltalk就是一套面向对象的程序语言,只是OOP演化了这么久,借着Java才大红大紫。何故?Java是个好的程序语言,但它并没有让OOP变得多简单,主要是人们心态和逻辑上的「进化」,当传统的结构化程序设计(Structured Programming)无法满足对逻辑的需求时,OOP刚好弥补了SP的不足。虽然OOP的学习曲线颇高,但整个环境大势已让大家渐渐地朝这个方向走了。
Josh和Neal也一致的认为,AOP是不错,但要发光发热还需要时间。目前底层的程序设计师,对于OOP都还不能全然的掌握,要他们再去学个AOP,写出来的程序只会更烂,不会更好。
我们还聊到另一个更新的概念 – DBC (Design By Contract)。事实上原本Java就有DBC里的interface概念,所以不靠外力的话,Java也可以利用现有的语法来达到DBC的实作。不过就像之前Java语言本身没有泛型(Generic)之前,有许多外挂的套件或其它变通的方式来让Java达成泛型的功能,而iContract就是DBC for Java的一种实作,有兴趣的读者可以上网搜寻,数据还不少,只是理论方面居多。DBC在学术里是很受欢迎的,但要走出这个象牙塔,一样得等待人们进化才行。
我们这四天也不是全都在聊这种严肃的话题。我也基于个人的好奇,而问了他们一些有关程序开发人员最在乎的生涯规划的问题。
Don't Copy & Paste
很多初学者问我是怎么学习Java(或是程序设计)的?该怎么走才能到达我今天这样的程度(成就?好像没什么特别的成就)?遇到这两位大师,当然未能免俗的也问了他们类似的问题。网络上最常出现的问题就是:我已经考上SCJP或我已经会Java基本的语法了,接下来我该怎么走?
当然我不是问这么白烂的问题(其实也没有好到哪去),我问他们该如何提升自己的实力?「Don't Copy & Paste」,两位大师语气很重地说了这句话。他们说你在Copy & Paste的过程中,因为你不了解你copy的东西,它往往90%都是不必要的,而且以他们的经验来说,几乎都会出错!有重复性或可reuse的功能,就把它们设计成library或framework。就算你非copy不可,也要确切知道每一行程序代码在干什么,这样将来出错时,才知道怎么找出bug来修改。相信很多senior再带junior时,一定都遇到只会copy,而不懂到底copy了什么的junior;而最后当然是由senior边收边念地收烂摊子。
此外,至于如何更上一层楼,两人的回答很一致:「Join Open Source Community」。Join的方式从单纯的review code,到真正的贡献你所写的code都算,要join到什么程序,就看个人的功力啰。就像学习书法或画画,刚开始也都是临摹别人/前人的作品,有了基础之后,进而发展出自己的风格。学习程序设计也适用这样的方式,review code就是这个用意!人家的code不一定写的好,初学时你可能无法看出不好的地方,或是还没有能力修改地更好。
Joshua Bloch: Google首席Java架构师(Chief Java Architect)
Neal Gafter:Google专任工程师兼Java讲师
两人在到Google之前都是Sun的资深工程师,对于Java核心及Class Library的开发与设计着有贡献,合着《Java Puzzlers》一书。 Bloch并着有畅销书籍《Effictive Java》。
Community除了code之外,另一个很重要的是mail list或是forum。经由大家脑力激荡,你可以在整个讨论的过程序学到很多。除了写程序功力上的帮助之外,你还可以学会team work、process、version control,而且志同道合的学习伙伴会让你在学习的过程中更愉快、更有信心。不过大家要join这些open source community第一个要克服的问题,可能是英文,读好还,因为你可以边读边查字典;写的话就只能多练习啰。
两位大师的程序设计生涯已经超过25年,是什么让他们能这样一路坚持下去?他们的回答是:「Passion」,依自己的兴趣做自己想做的事,这样才会持久。但要怎样才能让这股热情一直持续呢?这就要看你所做的事情,是否能让你获得正面的回馈,Josh说,他觉得他能够写一本好书,让大家从这本书中得到很多的帮助,他认为这样的成功对他的意义很大,进而更有动力继续写出更好的书。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者