今天在论坛看到一个帖子:
“不错,我一开始就是从C语言过来的,如果有电子方面的基础的话,我就想搞硬件开发了,现在搞C#,有点像“拿来主义”,基本不知道其所以然,还是写C++ 的时候心最静,其实,我现在用“类”,就是把一些功能相似的函数放在一起搞成一个类,然后使用,还不如C的函数来的直接,一开始写程序的时候就接收的是面向过程的思维,面向对象细节的实现也是过程的
眼下这个项目快做完了,C,MFC,C#都在用,其实内心真的非常的矛盾,就想只学一种语言,从灵魂的深处出发,我想写C++,每次在深夜写C#写到头昏脑胀时,就会嘶声力竭的大叫“我想写C++”,那种感觉,就像三井寿对安西教练哭着说“我想打篮球”一个样子,可是每次在项目中遇到C++解决不了的难题的时候,我就会“犯贱的”想念C#,矛盾,人就是矛盾的产生 ==》 我就是C++&C#的产物”
看了上面的讨论,我认为根本的问题不在语言。而且,所有的问题,很少能够归咎于语言特性限制的。
这让我想到了《代码大全》这本书中一直强调的一个概念:深入一种语言去编程,而不是在一种语言之上去编程。
其间的区别是,在一种语言之上去编程,思想受限于语言特性的限制;深入一种语言去编程,放在首位的是我们的思想,我们首先要确定我们的思想,之后,要用语言特性去实现它。不要将我们的思想局限于语言特性。
无论是c,c++,c#,我们都可以编写出优秀的代码,这其中,最重要的因素,是你的思想,你的思路,而不是你使用的语言。
举例一:
断言是指在开发期间使用的、让程序在运行时进行自检的代码。断言是一个优秀程序员的一个利器,但是,有些语言并不提供断言机制。那我们就不用断言了吗?非也!我们可以很简单的实现一个断言,比如,在c中:
#define ASSERT(flag)/
{/
if (!(flag))/
printf("ASSERT failed! file=%s, line=%d./n", __FILE__, __LINE__);/
}
举例二:
面向对象有一个非常重要的概念就是封装。在处理全局数据时,一般不会直接的让客户端访问数据本身,而是使用访问器函数。比如,某类中有一个static变量,一般会配备两个函数:1)Set***();//设置函数; 2)Get***()//访问函数。这样做的好处是:1)对外部隐藏实现的细节。2)便于扩展,如果有一天变量要变成结构体,客户端部分可以基本不动,而只修改访问器函数即可。3)存在一个中央控制点,便于定位问题。
但是,如果你使用的c语言,面向过程的,是否也可以使用这种方法来实现封装的好处?答案是可以的。比如,有一个两个文件都需要访问的全局变量,你可以将此文件定义为static,只允许他在其定义的文件内使用。然后,定义两个非static的访问器函数,供客户端来访问此全局变量。这样,你也可以在c中使用封装带来的好处。
分享到:
相关推荐
Windows环境下32位汇编语言是一种全新的编程语言。它使用与C++语言相同的API接口,不仅可以用来开发出大型的软件,而且是了解操作系统运行细节的最佳方式。本书从编写应用程序的角度,从“Hello World!”这个简单...
Windows环境下32位汇编语言是一种全新的编程语言。它使用与C++语言相同的API接口,不仅可以用来开发出大型的软件,而且是了解操作系统运行细节的最佳方式。本书从编写应用程序的角度,从“Hello World!”这个简单...
这本书不同于大多数其他编程语言文本,试图结合两种不同风格的编程语言教育:一种是基于语言调查,另一种是基于口译。在前一种方式中,忽略难以理解的技术要点是非常容易的,有些技术要点通过试图再现(通过实施)...
确切地说,作者并非是想讨论JavaScript作为一种语言工具的用法或特性,更多地是希望用一种简洁的语言来讨论动态语言、函数式语言。而为了给这些语言范型以参照,以及讲述多范型如何“杂凑”在一起,也讨论了...
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。 Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得...
汇编语言,作为计算机编程语言的一种,是低级语言的重要代表。以下是关于汇编语言的500字资源介绍: 汇编语言,又称为符号语言,是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言。它与机器...
详细地介绍MOJO编程语言,包括其特点、用途、语法结构、编程范式,以及它在现代软件开发中的角色和未来前景。详细地介绍MOJO编程语言,包括其特点、用途、语法结构、编程范式,以及它在现代软件开发中的角色和未来...
Ruby 是一个注重均衡的语言,它的发明者松本行弘(Yukihiro “Matz” Matsumoto),混合了他喜欢的多门语言(Perl、Smalltalk、Eiffel、Ada 和 Lisp),创造出了一种兼具函数式编程和命令式编程特色的新语言。...
JAVA是一种编程语言,也是一种开发环境,还是一种运行环境。从这里开始你的JAVA学习之旅吧。
Java是一种广泛使用的编程语言,由James Gosling在Sun Microsystems(现在是Oracle Corporation的一部分)于1995年发表。Java是一种静态类型的、类基础的、并发性的、面向对象的编程语言。以下是一些Java的主要特性...
slang一种用JS构建的音频编程语言
Julia编程语言( http://wwww.julialang.org )( ...2,同时作为一种新的动态编程语言,在代码编写效率和运行调试等方面,相比C有很大的优势。 PS.这个PDF文件的单页大小已调整到适合在自己的iPadMini上阅读。
发布时间: Go语言于2009年发布,...错误处理: Go语言的错误处理方式是使用多值返回和错误类型作为内置的一种方法。 由于Go语言的简洁、高效和强大的并发编程能力,它被广泛用于网络编程、云服务、分布式系统等高性能
是PLC使用最多的一种编程语言,易于被广大的电器工程人员掌握,特别适用于开关量逻辑控制。用线圈、常开触点、常闭触点表示。 3)功能块图FBD(Function Block Diagram) 类似于数字逻辑电路,有数电知识的人易于...
C#是一种最新的、面向对象的编程语言。C#使得程序员可以在Microsoft开发的最新的 .NET平台快速地编写Windows应用程序,而且Microsoft .NET提供了一系列的工具和服务来最大程度地开发和利用计算与通讯领域
Swift,作为苹果公司于2014年WWDC(苹果开发者大会)上发布的一种全新的编程语言,自诞生以来就受到了广泛的关注和喜爱。以下是对Swift的500字资源介绍: Swift是一款强大而灵活的编程语言,它结合了C和Objective-C...
Scratch 是一种图形化编程语言,主要用于教育目的和初学者学习编程
大多数编程语言都具有相似的基本特征,如果熟悉一种编程语言就可以很容易地将这种编程语言的知识应用到其它语言中去。 几年来,我一直教授职业中学计算机程序设计课程,下面我就将计算机专业所学的Foxpro、Basic、...
适合有java语言基础和JSP基础的同志们,JSP是一种如日中天的新型Internet/Intranet开发语言,可以在多种操作系统平台和多种Web服务器下使用。本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了...
Java 是一种广泛使用的编程语言