我不是技术大牛,也从没有贡献过一行代码给Liunx,所以下面的这些文字对我来说“太沉重了”。
我们能够从TIOBE看出每种编程语言的流行程度。在面向对象程序设计已经日臻成熟的今天,C语言一直傲立三甲之中,它是个奇迹。
纯粹的类不叫面向对象,我觉得泛型和模板更面向对象。
我从DOS下的Turbo C和Turbo PASCAL一路走来,跟大家一样,经历了编程语言孰优孰劣的火热年代,经历了IDE百家齐鸣的辉煌历程,亲身体验了基于对象和纯面向对象的时代变迁,反而让我对面向对象有疑惑了。
我不知道几乎月月排在TIOBE榜首的Java是否是纯粹的面向对象语言。但是,我无意挑起语言之争,我自己也在啃《Java编程思想》,而且这真的是一本好书,Java程序员应该人手一本的那种。当昔日红红火火的UML渐行渐远之后,当B/S结构趋于平淡,而胖客户端依然坚挺之际,更彰显了不同平台和语言之间的本质区别。
编程就是解决复杂问题的过程,这个过程中我们使用面向对象的方式将事物封装,通过继承和多态进行拓展,程序员和客户多年间从中获益匪浅。但是每每调用Java库中的方法时,我的思想却总是回到过程式开发中去。每每看到“纯粹”的使用类的方式的C++代码时,我心里总是别扭,这是C++的本来面貌吗?亦或是我们自己刻意的按照面向对象的方式“塑造”的结果?有类就是面向对象吗?我老是觉得,为了面向对象而拼凑的类代码,跟集合没什么区别。但是泛型给我的感觉更像面向对象,无论泛型的代码多么“丑陋”。C++的骨子里还是过程式的开发思想,C++之父多年来,以及在《C++程序设计语言》中也只是说C++支持面向对象的程序设计模式,这里面的语义很丰富也很单一。
使用Java是出于工作的需要,但不是面向对象的需要。C++也是如此。但是C呢?C有没有可能面向对象呢?答案是肯定的。面向对象程序设计从没有要求过程序代码的书写方式,C这种中级语言承上启下,排在Java之后(有时也会跑掉前面去,呵呵),在C++之上,它的地位相当牢固,根基相当底层。比面向对象,C++肯定比Java强(C++几乎支持面向对象的方方面面,Java借鉴了C++的成功经验,回避了面向对象中的艰涩部分),比性能C++不可能比C强,论底层编程能力,C++和Java都不是C的对手。
不是要谈语言的优劣,我们在工作中继续好好使用我们的语言就是了。但是我老觉得平时大多数时候我们在用类的方式干着过程的活,是不是呢?我不知道。