`
jimmy_c
  • 浏览: 15166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

编程风格偶感

阅读更多
基础知识:
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 Java编程风格指南

    这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, ...

    Keil_v5_编程风格配置.zip

    MDK5的编程风格,灰度风格,复制到Keil_v5\UV4 目录进行覆盖 。

    C语言编程风格规范.pdf

    C语言编程风格规范

    MatLab编程风格指南.pdf

    MatLab编程风格指南.pdf

    Google C++编程风格指南

    高级工程师Dan sanderson将向你讲述如何设计高可伸缩性应用程序的方法,以及如何使用App Engine的API和可伸缩的服务来实现常见的开发任务。你将会学到有关App Engine的应用程序服务器架构、运行时环境以及可伸缩数据...

    Oracle8PL_SQL编程风格与系统性能的提高.pdf

    Oracle 8 PL/SQL 编程风格与系统性能的提高 本文主要探讨 Oracle 8 PL/SQL 编程风格对系统性能的影响,并提供了一些提高系统性能的方法。文章首先介绍了 PL/SQL 编程风格的重要性,然后讨论了编程风格对系统性能的...

    google-c++编程风格(高清版).pdf

    在深入介绍Google-C++编程风格之前,我们首先要了解C++编程风格的重要性。C++是一种功能强大的编程语言,它提供了丰富的特性,如面向对象编程、泛型编程和多线程等。然而,这些特性也带来了复杂性,如果不加控制,就...

    编程风格资料

    编程风格是编写源代码时遵循的一系列规则和约定,它涉及到命名规范、代码布局、注释方式等多个方面。良好的编程风格能提高代码的可读性和可维护性,使得团队合作更为顺畅,也是每个程序员应该重视的基本素养。 ...

    PIC单片机编程风格和格式

    PIC单片机编程风格和格式 PIC单片机编程风格和格式是单片机开发中的重要环节,好的编程风格和格式可以提高编程效率和代码可读性。在本篇文章中,我们将主要介绍PIC单片机编程风格和格式的基本结构和要点。 程序...

    谷歌开源项目的编程风格

    谷歌公司的开源项目以其高质量、可维护性和一致性而闻名,这些都离不开其严谨的编程风格指导。这份指南将深入探讨谷歌在C++、Objective-C、HTML和Java这四种语言中的编程规范,帮助开发者遵循最佳实践,提升代码质量...

    高质量Matlab及C及C++编程风格指南

    对于Matlab、C和C++这三种语言,虽然各有其特性和应用场景,但良好的编程风格可以跨越语言界限,提升整体的编程素质。下面我们将深入探讨这些语言的高质量编程风格指南。 首先,让我们关注Matlab。Matlab是一种面向...

    SQL编程风格Sql.Programming.Style.Joe.Celko.扫描版

    本书详细介绍了SQL语句的编写风格,适用于各种数据库。

    C语言书籍,编程风格指南,编译原理等等

    C程序设计语言(第2版·新版),C语言模块化编程(我见过最好的),C语言深度解剖,printf和scanf家族函数底层IO函数重定向至串口,The C Programming Language(译文),第七天_模块化编程思想等等。

    C编程印第安山书写风格

    印第安山风格,在一些地方被强烈的被推荐使用而在另一些地方则 被贬的一文不值!C编程书写风格

    C语言编程风格[归纳].pdf

    C语言编程风格[归纳].pdf

    C++编程风格

    叫你如何养成良好的编程风格,变量的命名等等

    python入门教程-9-Python编程风格(1).zip

    python入门教程-9-Python编程风格(1).zip

    python入门教程-9-Python编程风格(2).zip

    python入门教程-9-Python编程风格(2).zip

Global site tag (gtag.js) - Google Analytics