胡思乱想胡说八道胡诌八扯------由C->C++想到的

来源:互联网 发布:mac matlabr2014b下载 编辑:程序博客网 时间:2024/05/01 23:21

疯狂的白痴的想法,不妨记录下来。

如果自然世界和计算机世界是两极,两极之间有一条长长的路,那么要想通过计算机解决问题,或者更普适地说要想与计算机交流,就必须得走完这长长的路才行。如果计算机用户可以划分为不同的层次,那么最底层的用户显然是那些彻底的使用者,他们没有任何在这条路上前进的能力,要想走完全程,需要借助软件的全程运送。第二层次应该是利用程序设计语言进行软件开发程序员们,他们为下层的使用者提供通行于自然世界和计算机世界交通工具--软件。暂且先说到这一层。

程序设计语言对程序员来说,相当于这条长长的路上的一个接送站,只要程序员有能力从自然世界那一极走到此接送站,那么接下来的交流之路就可以靠编译器(即语言本身)来实现了。

自然世界是多元的,错综复杂的,不确定的,非线性的;计算机世界是二元的,严格的,确定的,一定意义上线性的。

目前的程序设计语言发展趋势是由面向过程到面向对象的。想象一个面向过程语言写出的程序,如果把函数调用用函数代码所代替,即拆穿它本就不多的封装,只保留一个MAIN函数,那么得到的程序更像是一列需交给计算机执行的指令序列(当然还存留着循环分支等等抽象),这与最终交由计算机执行的机器指令实际上是差别不大的,面向过程的程序设计语言所代表的接送站,其实是很接近计算机世界那一极的。

再考虑面向对象的程序设计语言,明显更接近于自然世界,面向对象思想的提出本身就是出于对自然界的模拟和高度抽象,所以显而易见,面向对象的程序设计语言是个离自然世界更近的接送站。

还有一点,距离自然世界越近的接送站,需要语言完成的工作越多,这些工作是抽象的,非具体的,这个比重越大,自然程序运行效率低下的可能性就越高。这也是现在一些远离自然世界的接送站用户(C/C++程序员)抵制接近自然世界接送站(C#/JAVA)的理由之一,抑或是借口之一,因为随着硬件的不断升级,这些效率上的差异将会被忽略简直是一定的。

刚才说到程序员处在所有计算机用户的第二层,为第一层的用户提供交通工具-软件,而他们自己使用的交通工具其实就是程序设计语言,自然,在他们之上一层的就是为他们提供程序设计语言的语言开发者们。

一个接送站距离自然世界越近,对程序员的要求就越低--因为他只需有从自然世界走到接送站的能力即可,所以不断地将接送站向自然世界推近实际上是程序员群体的客观需求(就像底层用户对软件傻瓜化的需求一样,是由人的惰性决定的),有意思的是虽然是理所当然的客观需求,但很多程序员对由此需求带来的“程序设计语言傻瓜化”却表现出恐慌。这也容易理解,接送站距自然世界越近,对程序员的要求越低,也就降低了成为程序员的成本,自然程序员的价值也就越低。

相反,程序设计语言越强大,这样的语言设计起来就越难,也就是说,要想让第二层的程序员们越省事,第三层的语言设计者们就需要做的越多。

现在,程序员的概念越发模糊,会写代码就算步入第二层吗?以前或许是这样,然而现在,计算机的普及和程序设计语言的强大共同造就了通过代码实现与计算机交流这一任务的简单化。不少玩个人空间的用户也许一点计算机背景都没有,但却很可能会用简单的代码美化自己的空间(简单的HTML标签),我有一个学外语的网友,如今的工作兼有网络性质,还在某论坛任过斑竹,他在这方面就略知一二。他处在哪层呢?即使不算他这种比较模糊的个例,由程序设计语言傻瓜化影响,第二层的人数越来越多(或者价值越来越低)在短期内是必然的。

那,路在何方呢?

程序设计语言越强,对于同一个使用者来说,他利用此语言所能解决的问题难度就可能越高。所以出路就是发现更难的问题,更能体现程序员价值的问题,使程序员的价值即使在强大的新语言旁边仍然不打折扣的问题。

往小了想,这可能会改变软件的面貌,往大了想,这个“发现新问题”很可能是超越性的,想想就让人激动。而这个程序设计语言与解决问题能力之间激励的过程,也许会一直持续作用到所有问题得解为止,人类的最后一个程序设计语言也许是这样的:

你用任何一种已知语言输入:宇宙的意义是什么?

它便给出了答案。

 

 

 

                                                            胡言乱语,记录下来是怕老了就产生不了如此荒唐的想法了,荒唐也算是一种美吧,见笑见笑。