C语言是不支持面向对象的,这也是它和C++的最大的区别。C是纯过程式(procedural)编程语言,而C++是既支持过程式又支持面向对象的混合编程语言。
以下是C和C++的其他不同点。
C++作为C的扩展,意味着它可以运行大部分C代码。但是反过来,C去运行C++的代码,就不行了。
作为一种面向对象的语言,C++支持多态(polymorphism)、封装(encapsulation)和继承(inheritance),但是C不支持。
在C中,数据和函数是“自由的实体”(free entities),这意味着你可以使用外部代码来操作它们。但是由于C++将数据和函数封装到一个单一的对象,就等同于对外部代码隐藏了,所以外部代码无法操作其数据和函数。
C++使用名称空间(namespace)将代码组织为逻辑组并阻止了名称冲突(collision)。当你的代码基(code base)包含了多个库的时候会发生名称冲突。C不使用名称空间。
C使用函数来实现输入和输出,而C++使用对象来实现输入和输出。
C++支持引用变量(reference variable),而C不支持。引用变量是已存在变量的别名,可用于加速编码。
C不支持错误和异常处理,但是C++支持。
C++ vs. C#作为一款更现代的编程语言,C#被设计于与当前微软.NET框架共同工作,在客户端和web应用程序中均有涉猎。
C++是一门面向对象的语言,而C#被认为是一门面向组件(component)的编程语言。面向对象编程聚焦于将多个类结合起来链接为一个可执行的二进制程序,而面向组件编程使用可交换的代码模块(可独立运行)并且你不需要知道它们内部是如何工作的就可以使用它们。
以下是C++和C#的主要区别。
C vs. C#虽然C和C#在技术上相互有所关联,但是它们几乎是完全不同的语言,因此它们之间有更多的不同之处。有C语言功底的同学在学习C#时会比较简单,因为有些语法是相似的;不过,即使你没有C语言基础一样可以轻松学习C#,因为它的语法非常简单(译者注:原文是forgiving,宽容)。
如何选择自己的第一门编程语言?现在,你已经清楚地了解了这三门语言的区别,那么该如何选择呢?
菜鸟程序猿如果你此前从未接触过编程,那么许多计算机科学专家会建议你首选C语言。不仅仅是因为它相对于它的后继者拥有更少的选项(译者注:这里指的应该是语言特性,例如装饰器、垃圾回收等),而且许多语言的语法和概念都是借鉴C的。简而言之,当你学了C之后你再学习其他的任何语言都是易如反掌。
中级程序猿如果你此前已经有过编程经验的话,那么你可以尝试C++。如今面向对象编程会比过程式编程更为常见,如果你已经有了一些OOP经验的话,那么你学习C++也会更快。
高级程序猿如果你已经具备多种编程语言的开发经验的话,那么你的选择取决于你希望在新的编程经历当中得到什么。
一些年轻的开发人员选择学习C语言来学习编码的基础。经验丰富的前辈们往往看不起年轻的一代,因为他们不尊重自己的根(译者注:可能C语言代表了编程语言的根、基础,这里应该也是要强调重视基础的意思),因此具备C语言的知识可以作为新工作中的街头信誉(street cred)。(译者注:街头信誉可以理解为在某个领域受到某些人的敬仰之类的,例如乔丹之于篮球,不过街头可能更加像是周围所发生的事情)
C++在工作环境下有广泛的应用,因此具备C++开发能力可以带来许多工作机会。如果你已经有OOP的经验,并且希望以最小的学习代价尝试一门新的OOP语言,那么C++是个不错的选择。
如果你希望在微软.NET网站开发环境下工作的话,那么C#就是最好的选择。虽然它的使用情况没有前两者来得广泛,但是它依然有一席之地。
总结了解它们的区别有助于你做出自己的选择。无论哪种语言都有其优点和缺点,无论学习哪种语言都不会浪费时间!(译者注:犹豫不决才是)现在,是时候做决定了。