`
jimmy_c
  • 浏览: 15065 次
  • 性别: 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思想的应用,至少目前是不存在的。
那么,原因何在呢?

<未完待续>
分享到:
评论

相关推荐

    Java编程风格与规范

    Java 编程风格与规范 Java 编程风格与规范是 Java 编程者必备的一本权威书籍。它提供了 Java 编程风格的指导方针,帮助开发者编写高质量、可维护、可扩展的代码。本书籍中详细介绍了编程风格的重要性、编程原则、...

    自己做的googleC语言编程风格指南

    ### 自制Google C语言编程风格指南精要 #### 背景与目的 在软件工程领域,编程风格的规范对于确保代码质量、提高代码可读性和可维护性至关重要。Google作为全球领先的科技企业,其内部制定的编程风格指南无疑成为...

    Google Java编程风格指南

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

    Keil_v5_编程风格配置.zip

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

    MatLab编程风格指南.pdf

    MatLab编程风格指南.pdf

    C & C++ 编程风格指导.rar

    然而,为了写出可读性强、可维护性好的代码,遵循一套良好的编程风格至关重要。"C & C++ 编程风格指导"旨在提供一套准则,帮助开发者构建更加一致且易于理解的代码库。 首先,我们要明确的是编程风格不仅关乎代码的...

    Google C++编程风格指南

    强人翻译的Google C++编程风格指南,我等英语不良的人有福了,特收集整理与大家共享。 作者博客 http://www.cppblog.com/Fox/&lt;br&gt;原文链接 《Google C++ Style Guide》...

    Google C++ 编程风格(中文版)

    《Google C++ 编程风格(中文版)》是一本深入探讨C++编程规范和实践的书籍,尤其针对在大型企业如谷歌这样的环境下如何编写高效、可读且易于维护的代码进行了详尽的阐述。这本书对于任何希望提升C++编程技能,尤其...

    Java编程风格

    Java编程风格是编程界的一本经典著作,它深入探讨了如何编写出清晰、高效且易于维护的Java代码。这本书不仅适合初学者,也对有经验的开发者提供了宝贵的指导。书中内容涵盖命名规范、代码结构、注释技巧、异常处理、...

    c# 编程风格(word文档)

    C#编程风格是编写高效、可读性强且易于维护的C#代码的关键因素。良好的编程风格不仅能够提高代码质量,还能够使团队成员之间更好地协作,因为大家都遵循统一的规范。以下将详细讨论C#编程风格中的多个方面。 第一章...

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

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

    c++ 编程风格的规范化

    c++ 编程风格的规范化 规范化你的c++编程风格 规范化的风格 大量的例子和注释

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

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

    编程风格资料

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

    PIC单片机编程风格和格式

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

    Matlab编程风格指南.pdf

    有关 MATLAB代码的建议通常强调的是效率,譬如说有关“不要用循环”等的建议, 本指南与之不同。本指南主要考虑的是代码(格式)的正确性、清晰性与通用性。本指南的目的在于帮助写出更可能正确、易于理解、更具有...

    谷歌开源项目的编程风格

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

    C语言的编程风格C programmer

    根据给定的信息,我们可以深入探讨C语言编程风格的相关知识点,包括但不限于代码格式、注释习惯、变量命名约定等。 ### C语言编程风格概览 在软件开发领域,特别是在使用C语言进行程序设计时,遵循一致且清晰的...

Global site tag (gtag.js) - Google Analytics