基础知识:
c++和c是一种完全不同的语言。c以小取胜,c++以多范性编程而著称。
c++的范型可以包括:
c一样的面向过程编程;
宏语言;
c with class;
oo;
template;
GP。
这中间,我认为宏是一种可以称作范型的东西,因为这方面的高手完全可以用它来创造出属于自己的子语言来。
应该把简单目的的template编程(泛型?此泛型非彼范型)和GP分开,他们的编程目标是截然不同的。
最早受MFC影响很深。感觉自己最初的进步始于MFC源码的阅读(VC4.0了)。所以当时写程序的风格也是类MFC的,我的定义就是OO + 宏。其实也很好,很强大。
中间做了两年java,这期间学习了GP,两种完全不同风格的编程模式冲击下,渐渐放弃了MFC的手法。
但是OO + GP的开发偶觉得很痛苦,所以虽然不断地尝试,但并没有持续很久。原因一个字:累!
OO最大的缺点我认为是侵入式的。用c写程序,lib也好,dll也好,一般只要一个简单不过的头文件就好了。而C++和Java呢,拔出萝卜带着泥,哩哩罗罗一堆类,通常缺了谁也不行。
OO的原始目的/优点是什么呢?封装呗!可这样还不如c的模块封装性,实在是难以令人苟同。
带来的恶果是很明显的。OO的工程,尤其是C++,我们精心维护的工程,很容易被一两个水平不够的孩子改的面目全非。编译不过了,这儿加个头文件;程序运行遇到了框架的束缚,改就一个字!java的情况也好不到哪儿去。所以broken window的理论被发明了,说白就是:谨慎谨慎再谨慎!珍惜珍惜再珍惜!
解决这种状况的方法大概只有一种,就是给OO的模块加上一个面向过程的壳子。我们可以美其名曰:Facade。MS发明的COM+接口在这里也能凑活用上。不过这样的壳子对于程序本身,总像是身外之物。因为他们和真正的Facade和COM+的初衷是不一致的。孟岩老大给这种状况起了一个好听的名字,叫做:用C做接口,用C++编程!
GP是一种很奇特的技术。我不是科班出身,所有的技术大多从编码中得来。虽然好读书,但是有点儿不求甚解,经常会搞错个名词什么的,思想上也很难达到深刻。不过当我第一次看到《深入C++模型》、《设计模式》、《重构》、《敏捷开发》时,里面的东西都有似曾相识的感觉:原来如此!这不就是我一直研究的XXX问题么?
然而GP的概念最初我是从书本中得来的。两本书给了我很大的启发作用:《C++设计新思维》和《产生式编程——方法、工具和应用》。它给我的感觉是震撼性的,焕然一新的:原来C++还可以这样想,这样用!然后基于它作了很多实践。但是真实的感受却是:理想和实际相差得很远。
GP的技术难度我就不说了。多数人认为是GP的技术门槛太高,限制了它的使用。我不这样认为。如果一个技术真的能够带来很高的劳动生产率,那么即使它的难度很大,也不会真正阻止它的流行。而对于有创造力和求知欲的程序员来说,“技术难度”一词很难说是褒义还是贬义,也许更可能因此成为大家追捧的对象。
所以,GP之所以未流行起来,应该只能是基于以下两种可能:
1. 目前的市场没有符合这种技术的强有力的需求(不妨碍这种技术今后在某一时刻会忽然流行起来);
2. (由于某种限制,或者自身缺陷)这种技术并未带来真正的、实际的、比其它技术更高的劳动生产率水平。
说到这儿我要暂停一下。我所说GP技术未流行起来,并不是否定或者无视诸如STL,boost之类的模板库的广泛应用。我所指的,是深入C++项目的GP思想的应用,至少目前是不存在的。
那么,原因何在呢?
<未完待续>
分享到:
相关推荐
### 自制Google C语言编程风格指南精要 #### 背景与目的 在软件工程领域,编程风格的规范对于确保代码质量、提高代码可读性和可维护性至关重要。Google作为全球领先的科技企业,其内部制定的编程风格指南无疑成为...
这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, ...
MDK5的编程风格,灰度风格,复制到Keil_v5\UV4 目录进行覆盖 。
而为了达到这一目标,良好的编程风格是不可或缺的。Google作为技术领域的领导者,发布的《Google C++编程风格指南-中文版》为C++开发者提供了一套标准化的编程规范。 该指南是Google多年软件开发经验的结晶,旨在...
强人翻译的Google C++编程风格指南,我等英语不良的人有福了,特收集整理与大家共享。 作者博客 http://www.cppblog.com/Fox/<br>原文链接 《Google C++ Style Guide》...
在深入介绍Google-C++编程风格之前,我们首先要了解C++编程风格的重要性。C++是一种功能强大的编程语言,它提供了丰富的特性,如面向对象编程、泛型编程和多线程等。然而,这些特性也带来了复杂性,如果不加控制,就...
编程风格是编写源代码时遵循的一系列规则和约定,它涉及到命名规范、代码布局、注释方式等多个方面。良好的编程风格能提高代码的可读性和可维护性,使得团队合作更为顺畅,也是每个程序员应该重视的基本素养。 ...
PIC单片机编程风格和格式 PIC单片机编程风格和格式是单片机开发中的重要环节,好的编程风格和格式可以提高编程效率和代码可读性。在本篇文章中,我们将主要介绍PIC单片机编程风格和格式的基本结构和要点。 程序...
本书详细介绍了SQL语句的编写风格,适用于各种数据库。
C程序设计语言(第2版·新版),C语言模块化编程(我见过最好的),C语言深度解剖,printf和scanf家族函数底层IO函数重定向至串口,The C Programming Language(译文),第七天_模块化编程思想等等。
印第安山风格,在一些地方被强烈的被推荐使用而在另一些地方则 被贬的一文不值!C编程书写风格
C语言编程风格[归纳].pdf
叫你如何养成良好的编程风格,变量的命名等等
本书《Exceptional C++ Style》由Herb Sutter撰写,旨在探讨C++编程中的风格、实践和技巧。作者通过40个工程谜题和编程问题,结合实际案例,详细阐述了如何在C++开发中寻找风格与实质之间的平衡。书中不仅涵盖了泛型...
Java编程风格及基础类库使用培训.pptx
Google-Java编程风格指南是一份旨在规范Java开发者编程习惯的文档,它不仅涉及编码格式的美观问题,还包括了对编码约定及标准的讨论。这份文档将直接影响到Java源文件是否符合Google的编程风格。它强调了编码的...
附件中针对这种情况,做了51控制步进电机的4个实验,都是使用了模块化的多C文件编程风格,并加以注释,对于有C语言基础的人理解起来应该不难。程序的编程结构模块化对于以后从事开发之类的都是有帮助的~(至此献给...
这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为 它符合Google的Java编程风格。 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, ...
本书第一章至第六章主要论述C++/C编程风格。难度不高,但是细节比较多。别小看了,提高质量就是要从这些点点滴滴做起。世上不存在最好的编程风格,一切因需求而定。团队开发讲究风格一致,如果制定了大家认可的编程...