既然是畅想计算机的自动编程,那就要先考虑平台的问题。无非是Windows和类Unix两个平台。
我想未来为了把程序员们从输入代码的“体力活”中摆脱出来,计算机自动编程将是必然的趋势。未来的程序
员将仅仅是编程活动中的辅助,也就是说,未来的程序员将不叫程序员,而叫辅助程序员。
那么究竟计算机自动编程该遵循什么原理才可以让它自己去编程呢?
我想最主要的技术是人工智能(AI),也就是要让计算机有人大脑思考的能力,模拟人在开发一个项目的过程
中是如何思考的,是如何学习的。
首先我自己不是什么专家,也不懂算法的设计。但我认为要想让程序编程序,就应该利用好互联网这个巨大的
信息资源。
程序启动后就对随机产生的IP地址进行扫描,然后试图连接Web站点或FTP站点,但最主要的是为了获取公开站
点上的源代码,这些源代码就是计算机自身学习提高的资源。我想这个资源是无穷尽的。因为没个程序员的手
中都要有大量的开发资源,更何况是计算机呢。
另外未来的计算机自动编程软件,最好被捆绑到操作系统上,使其开机就开始工作,并且没个安装了该操作系
统的计算机都将作为网络中的一个结点。计算机自动开发出来的软件将被以隐藏的方式存储在PC的存储设备上
。但是要保证不影响用户的正常工作,如果用户想使用计算机开发出来的资源,就必须另外再安装一份软件来
激活它,而对于操作系统的开发商来讲,可以用一台或多台的集群式计算机做为服务器;因为如果全世界大部
分的计算机都装有其捆绑了自动编程组件的话,这些计算机的自动成果将直接提交到那台服务器上。操作系统
开发商也可以从这台服务器上获取统一的,集中式的开发资源。
但是有人不禁要问,这么做又必要吗?
我想是肯定的,因为目前全球使用电脑的人很多,尤其是使用Windows的用户;但不见得这些用户都在用计算机
做程序开发,这无疑就是对软硬件资源的一种浪费。但是如果把全球的计算机都利用起来,那它完成的工作量
也将是惊人的,
其实按照传统的想法就是利用全世界的计算机进行分布式计算的问题,但是如果真的去做一套分布式系统的话
,我想很麻烦,但是如果用计算机自动编程的话,问题将很轻松,但还是有相当大的难度的。
最主要的难度在于人工智能的让计算机有个学习的功能。
传统的人工智能是如何实现的我并不知道
但我想如果让计算机自动编程的组件和辅助程序员之间有一个互动的话,我想问题将很容易解决。
那么究竟该如何互动呢?
我想就是无论程序设计的怎么完美,在程序和人之间一定要留有一个接口。这个接口是针对程序员,或更高层
次人员而保留的。目的就是当计算机遇到不能处理的情况时,程序开发人员可以通过这个接口直接更正计算机
的错误,使其继续自动编程;这就要求这个自动编程的组件在工作状态下如果出现错误,就不能导致系统的死
机。而是返回一个消息,通知程序员发现异常,这样程序员就可以通过一定的手段来使其恢复。
另外即便是计算机自动编程也应该像传统开发一样,要对起进行定制,使其是专注于某个方面的开发。比如网
络,数据库,游戏等。
再有最重要的就是无论这个计算机自动编程是什么形式出现的,最好是不受任何平台影响的。
而且是必须和操作系统捆绑在一起,开机就运行,而且是隐蔽的方式在后台工作的。这样,只要有一台配套的
服务端程序对客户端的自动编程工具进行搜索连接,那全世界的代码就都将用向你,而且是计算机自己弄的,
那样还有版权之分吗?
未来的程序员也许会更痛苦,因为就像一套自动化的纺织工厂一样,只需要一些补充材料和监管人员,其他的
都有机器来自动完成。而未来的计算机也将成为那样的机器,程序员花多年工夫学来的知识,就是为了学习如
何管理那个自动的组件,监视它的状态,出现异常就帮助计算机处理,并让计算机学会处理的方法。
这样程序员的竞争会更加激烈。开发一个小的应用完全有软件生成,根本没程序员什么事。
那么未来的程序员该如何呢?
明显的只有提高自己的能力,
也就是说计算机自动编程是未来IT领域的技术门槛又抬高了一打截,未来将不存在程序员这种形式,就是说你
不再会看到一个小的公司也去花高薪聘请一个程序员去做某一方面的应用,他们完全可以买来激活工具来让自
动编程组件来满足自己的需要,而且计算机编的东西要比那些程序员编的还要好。