(注:本文翻译自https://csharp-station.com/understanding-the-differences-between-c-c-and-c/)
如果你是个有雄心壮志的程序员,你可能会很难选择将哪里作为开始。这世上的编程语言浩如烟海,就比如C#、C++和C里面,哪一种最有用呢?
你可能听说过C系编程语言的三个成员。不过,在选择其中一个之前,你需要先弄清楚C#、C++和C之间的区别。
1.什么是C语言?
我们先从C语言(C programming language)开始,因为它是三种语言中资格最老、使用最广的一种。丹尼斯·里奇(Dennis Ritchie)于1972年发明了它,然后于1978年出版。里奇最开始的设计初衷是想要开发新版本的Unix系统。
在此之前,Unix操作系统用的是汇编语言(assembly language),这是计算机可读的最底层的编程语言。C的发明彻底改变了编程和操作系统。至于那些剩下的,正如他们所说,都成为历史了。
C仍然是一种底层编程语言,其执行效率几乎与汇编代码一样高。它提供最基本的对内存的访问,并且只要很少的运行时支持。
尽管C语言早在40年前就已被发布,但它仍然是有史以来使用最广泛的编程语言。程序员们仍然在操作系统、内核级软件开发、硬件驱动程序和需要用上旧代码的应用程序里使用它。
大多数老派的程序员都认为C是最好的编程语言,因为许多新的语言都是以C为基础的。由于其年代久远,这反倒使得C也可以提供一些安全保障。使用它的人数相比较少,因而它更不容易成为黑客的攻击目标。
2.什么是C++?
C++是作为C语言的扩展而开发的。它是由丹麦一位名叫本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)的博士生创建的。他的目标是:在不牺牲速度和效率的情况下,扩展C语言并,添加面向对象(object-oriented)的编程功能。
一般认为C++是一种中级的编程语言,因为它建立在底层的C语言的基础上,但有更高级的功能。
自1985年C++首次发布以来,它已成为另一种极其高产的编程语言。它与C一起用于操作系统的开发,但在那些赫赫有名的服务器和PC软件也能见到它的身影。
如果你已在C语言上有了坚实的基础,那么理解C++就容易多了;然而,如果你想直接进入面向对象编程,你仍然可以吧C++作为你的第一语言。
(注:想要了解C++的历史,可以看BS的著作《The Design and Evolution of C++》,也可以戳他个人主页里的FAQ。)
3.什么是C#?
C#(发音是“C Sharp”)是一种高级的、面向对象的编程语言,同样也是作为C语言的扩展而创建的。2002年,安德斯·海尔斯伯格(Anders Hejlsberg)带领的微软(Microsoft)团队开发了C#。它基于.NET框架,但它的主干仍然是C语言。
C#会将代码编译成字节码(byte-code),而不是机器码。这意味着它在可以在虚拟机上运行,并且会被动态转换为机器码。它为基础C代码添加了垃圾回收(garbage collection)、对未初始化变量的检查、边界检查和类型检查等功能。
C#通常用于内部或企业应用程序,而不是商业软件。你可以在.NET框架中的客户端和服务器端开发中找到它。
(注:除此之外,Unity引擎也使得C#在游戏业蓬勃发展了)
虽然C#是这三种语言中技术上最复杂的,但相比C或C++而言,C#更不容易出错,而且学起来也相对快一些。