除了纯粹做软件的,例如web之类的,在生产部门,用得最多的还是辅助生产,对重复工作进行批处理,所以二次开发成为生产力的标志。
例如,在测绘、国土、设计、工业等行业大量使用AutoCAD,而对于lisp,vba的开发,就成为技术人员的最终追求,对于管线、电力、科研,会大量使用GIS软件(ArcGIS、MapInfo),只要进行简单的开发,就能百十倍的减轻工作量。
而且,个人认为,生产领域,是社会就业的主要领域,也是培养领导和技术人员应该锻炼的领域。我们不能想象程序员去当领导国家吧。
但在应用二次开发领域,计算机的落后,是管中窥豹,吓你一跳。例如cad开发,计算一个简单的数学计算,用c#,几分钟搞定,用lisp,几天还在检查拼写,括号 ,本来这些都是编译程序的事......
为了推动二次开发,微软在很多年前,推出了VBA,对整个行业产生了巨大的冲击,极大的提高了生产力。
但这么多年过去了,二次开发应用蓬勃,二次开发技术却没有及时得到提升。
随着.net的成熟和推广应用,C#也越来越开放,吸取了众多语言的优点融于一身,例如lambda表达式,linq,匿名变量,动态化,更不要说经典的泛型。
但C#的动态化,个人认为是最具有发展前途和应用前景的特性。如果能够像当初发展visual basic for application那样,来发展c# for Application,那么它的应用将是惊人的,同时也是无敌的。只要占领了各行业的应用领域,人们将死死坚持恪守这个平台,对发展.net产业链,巩固微软地位,形成微软软件生态圈有着不可低估的作用。
那么怎么发展c# for application(CSA)?
(1)先是.net平台。因为在原有平台上开发,别人不希望受到额外的束缚。所以最好能有一个动态的小型.net编译器(sub .net),就类似于silverlight,它是.net的子集,人们在上面实时运行小型的二次开发的程序,对性能不要有任何影响。这实际上可以直接把siliverlight进行改造就可以了。工作量不大,而且有silverlight的先例铺路,这里有没什么风险。
随着.net的普及,微软就可以慢慢推行完全版的.net。当然这得假以时日,因为很多应用行业的软件版本低,升级慢,稳定性和可用性及功能是衡量的最大标准。
(2)C#语言,努力加入dynam部分。首先必须保持c#纯正的血统,尽量的强类型和泛型,做到能静态尽量静态,要动态则可以动。在这点上,得吸取javascript的教训。现在的javascript用得满天飞,缺点和优点一样多。而很多的js应用,仅仅是用js扩充js的面向对象功能——重复造轮子的事情。
想想以后,我们的C#,跟很多年前的basic语言,现在的python一样,是多么的美好美丽!
我们可以动态的执行C#,可以临时加载任一段代码,可以交互命令,可以方便用来编写操作系统脚本!
想象一下:我们可以用evaluate(string CS);,CS就是一段c#代码,很久很以前的某一天,在foxpro里,我们曾这么做过。
我们二次开发的时候,能静态的,尽量静态,这样编译器给我进行强类型的检查,没法动态的,我们就动态,可以利用所有的资源。在二次开发里会碰到很多,因为要调用很多程序和模块的处理结果,而且,大部分的行业应用程序都不太可能完全com化(.net化,组件化)更不要说面向对象化,你看了mapgis,就会发现,小工作坊,依然在行业应用里占主流,连模块化都没有。