网名:Naven,爱好广泛,汽车、计算机、艺术、足球等等,汽车设计技术乃之最爱,恐终身无法如愿。偶从事软件开发工作6年有余,入行2年才悟道,对软件技术执着,技术狂热型,设计和开发追求严谨完美,程序设计是一门艺术,不是枯燥的技术。
深研C/C++和JAVA语言四载有余,初窥其道,对面向对象、范型、组件技术、WEB服务稍有领悟,感悟到其博大精深,深不可测。同时对各种基础技术兴趣异常,喜钻研Framework(框架)、OS内核、虚拟机技术,前方之路遥遥。 本人前几年主要学习OOD(面向对象编程),学习OO理论及其实现(C++和Java),发现光靠它还是很难设计出好的系统,系统容易臃肿而难以维护(虽然范型技术能够解决一些代码重复的问题),而解决这一问题让自己的设计更完美的办法就是设计模式。自从设计模式(GoF95)问世以来,各种设计方法理论层出不穷,比如敏捷设计、重构、面向方面设计、创建式设计等,但偶认为最重要最精髓的还是设计模式,它是我学习的重点并运用到我的设计开发中,关键是领悟而不是死搬硬套。而且设计模式已经是各种系统设计的指导理论,比如J2EE、.NET里均运用了大量的模式,Java Framework里旧的一些不合理的设计也在慢慢改用标准的模式重构,学好用好设计模式在未来意义重大。
技术学习上感觉已开始进入思想积累、理论研究阶段,学习已不拘泥于某个具体的技术,主要以研究其技术原理和设计思想为主, 学习一门新的语言或新技术觉得大同小异。目前本人积累基础技术经验主要以语言特性发展、数据结构和算法、设计模式等为主。对于具体的技术,本人涉足过和准备涉足的有C/C++、STL、Boost、Java、J2EE/EJB、COM、.NET Framework、MFC/ATL、WIN32、Unix/Linux、TCP/IP、VC、ACE Framework、UML、设计模式。。。只要是软件的基础技术,均想涉足,目的是想窥视软件共同的奥秘。 偶认为,软件领域虽然庞大繁多,徜若一一详究慢慢积累,倾一人之终生也未可得。但万物皆有其宗,假如只剖其主干去其枝叶,就可得其精髓。况且软件技术均有通融之道,观一即可领悟其他,再者凡新技术均由旧技术发展而起,师夷而制夷,青出于蓝而胜于蓝,如能学习他人之长处创造新技术或者新产品甚至或者应用于实践足矣,此乃偶之本意。观所有成功产品及其缔造者皆有此来。另本人从小对艺术书画颇有天赋,因此非常希望学习GUI/GDI、DirectX、Media/DVD、游戏3D-Engine等图形相关技术,并希望开发出一些相关的产品,苦精力有限,难有时间持续钻研。
本人崇拜的软件领域的偶像主要有Anders、Richter、Strustrup、Lippman,他们是偶努力学习的榜样,尤其是Richter钻研Win32奥秘的精神,还有两位就是候捷和李维,真希望有朝一日修炼到他们的层次。一个人水平的高低不在于他写过多少行代码,完成多少个项目,而是他对软件精髓的领悟,对技术发展趋势的把握,并由此发展出开创性的技术理论或产品, 而世界整个软件未来的方向就依靠这些少数有头脑的人,微软立于不败之地就在于它始终是软件发展的领头羊。引用李维的话:“软件设计是入门,软件趋势是无价”。
(写于 2005年 北京)
本人经过两年奋斗,完成两个基础框架:Java Web框架(一个MVC框架)和一个C++基础框架(还在继续完善中,陆续会有文档介绍),约有20万行代码,代码设计优美清晰。考虑到未来希望支持应用服务器软件、普通软件、PocketPC软件、游戏等应用软件的开发,以及跨平台的特性(为开发这些相关的产品做准备),本人正在考虑重新设计此框架,以使其具备跨平台和支持多个编译器及开发工具,以及支持小内存应用等。未来准备重点设计统一的框架体系,有与Java的Interface、Abstract 和 Implement 类和Factory模式、Wrapper模式类似的体系结构,以使得接口与实现尽量分离,并使接口尽量与Java和.Net的统一或者类似。关于C++的库,本人认为未有一个像Java/.NET这样完善规范的框架,而且各个C++库千差万别,功能单一,整合起来非常困难,而且很多库易用性简洁性考虑不够,接口的设计很不统一,很多设计出来有点展示或炫耀自己独有的设计方法似的。
(写于 2006年 北京)
我正式学习和使用C++/Java已经5,6年了,不包括大学里和刚毕业2年的陆续地上手式的学习,在国内的说法也可以说“精通使用”,但更想深入钻研这些语言的机制和高级特性以及语言的发展等,可以说刚刚“入门”而已。本人开设这个“软件工作室”,目的是为了立足于以开发实际应用框架或者软件为主,以文章介绍设计和使用以及自己心得为辅,所以说第一步发布了这个javen框架,不久将来也想加入OpenSource的大家庭里来,另外也有一些自己的想法,也想通过这些库或应用实现出来。
目前纳入这个库的都是一些跨平台的部分,暂时无法跨平台的暂通过独立的库包含进来,比如javen是一个基础的跨平台库,jserver是一个进程调度的服务器框架,jstorage将做一个分布式存储框架,jsearch将实现一个搜索引擎框架等等,根据想做的应用,以后还想封装更多的框架。不过考虑到学习和使用的成本问题,我这些库的接口基本都是仿照目前最流行的语言和库做的,比如jsearch将仿照lucene的接口,jstorage可能仿照hadoop等,javen则与java语言尽量类似。
目前C++领域确实有很多的库,不过我感觉它们的管理不像java那样严格,有标准的接口,像ACE这样的大型库学习使用难度比较大,而且功能大部分单一,所以我想考虑自己设计这样一些库,简化应用系统的开发。
(写于 2007年 北京)
人的生命真是短暂,而能用来学习、工作以及实现自己理想的时间更是少之又少。反之软件邻域的发展真是神速,一
个人能在其中有所成就的机会更少,如果想让自己的想法或理想得到实现,必须要加倍努力,并且要善于站在前人肩
膀上,完全靠一个人或者几个人是难以成就的。这几年软件领域又有了一些变革,再发展几年估计要产生真正的革命
,进而影响到每个人的生活。如最近比较火的一个概念“web2.0”,这其实是个很虚的东西,可以说没有任何实际
内容的概念,但是却不断有不少新技术捆绑在上面,如可以实现应用整合的web service/SOAP, 实现网页异步请求
的AJAX,实现页面动态布局的CSS,实现内容聚合的RSS等技术或协议,当这些“小”技术越来越多时,量变将产生
质变,比如SOA面向服务架构的应用将深入到生活的各个方面。
其实我更看重另外一些更专业的软件技术,现在的计算机硬件已经接近摩尔定律的极限,即CPU的运算频率已近不能
再继续提高下去了,必须要采用另外的途径来革新,即“分布式计算”“集成计算”“网格计算”,现在的多个内核
的CPU即是“集成计算”,很低的频率即可完成大规模高速运算,这就一种革命。同样在软件领域也在开始这种革命
,随着硬件的分布式,软件也在开始分布式变革,首先是开发语言,现在的语言基本都处在“命令式”执行阶段,即
是按语句顺序一步一步执行的,即使是OO语言也如此,但是未来的语言(如C#的LINQ技术)将支持lambda表达式,
可以让多个语句(通常是表达式)同时执行,这将极大地提高程序运行速度,同时给程序员也带来更大的挑战,就像
多线程一样需要考虑更多问题。另外一种软件变革技术就是真正的分布式计算,google在这方面走在前面,它设计
的三大分布式技术GFS/MapReduce/BigTable已经成为google各个应用的基础,而这些应用可以同时自动地运行在全
球数万台很廉价的机器上,这些庞大的计算机群组成了一个超级计算机。yahoo和微软也在努力追赶,yahoo的技术
hadoop HDFS/MapReduce/HBase对应于google相应的技术,这是一个apache开源项目,现在还在实验阶段,本人主
要在研究hadoop相关技术。还有一项技术是模块化软件设计,代表技术是OSGI,比较成功的应用是Eclipse IDE,
说到这开发工具估计很多人都很熟悉了,这是一个真正开放的IDE,可以用来开发Java/C++/C#/PHP等各种程序,甚
至可以用来做任何桌面应用,只要你提供相应的组件挂上去就是了,这种组件就是基于OSGI技术,其实它并不限于桌
面应用,它是一个通用的软件模块快协议,不限语言,不限操作系统,甚至在嵌入式,机顶盒等家电,数码领域都可
以应用。想想看如果家里买的家电,不管洗衣机,冰箱,电视,还是电脑,只要下载新的软件组件就可以停供新的功
能该有多棒,比如给电视下载高清模块,既可以收看高清电视了,实在不错
通观目前的软件技术,说起来还是太杂太复杂,可以说开发出的软件使用也很复杂,难以跟电视等相比,但是绝大部
分人的真正用途还是如何搜索自己想看的资料,阅读文章,或者管理成千上万的文档,但是目前要达到这个目标还是
难度很大。想想看,如果你的电脑上积累了上万个文档,如何整理它们将是一个噩梦,而要找出它更是难上加难,如
果文档在别人电脑上呢。所以我的想法是吸收电驴的思想,在加上搜索引擎的技术,同时应用分布式计算和模块化设
计的技术和理论,设计一个应用平台,用它来组织和管理自己的文档,以及网上的资料岂不更妙,同时还可以与网络
上任何人共享资料。电驴的想法很奇妙,它可以自主地将有共同需求的人组织在一起,相互共享资料,还可以让用户
自主地挑出最好的东西,抛弃网络上90%的糟粕。而且不用依赖任何网站服务器,实际就是自动将全世界有用的信息
组织起来,用户打开电脑不用费力去各个文件夹寻找,它会自动将你喜好的文档提供给你,而这个文档有可能在世界
任何一个角落,想想就很不错。本来目前开发的 Hawk 搜索引擎平台将是这个应用系统的前身,即实现一个具体的
网站内搜索工具,和用户桌面文档或者自己感兴趣的网页的搜索工具,下一个版本将实现一个垂直领域的可以自由配
置的垂直搜索引擎平台。
(写于 2008 年 北京)
MSN:navychen2003@hotmail.com
_________________
C++/OO Java .NET 图形/GUI 游戏 - 探讨软件深层问题,结交天下豪杰侠女。
浓浓的咖啡,温馨的小屋,欢迎来咖啡小屋坐坐啊!
http://www.cppblog.com/javenstudio/