我从未使用过C或其他编程语言,但我经常使用这个网站,所以你可以想象我经常遇到它们。由于我不太了解这些语言,这是谷歌无法回答的问题。
那么简单来说,这些语言之间有什么区别呢?我认为它们是相关的。我只知道C++是将面向对象编程引入C语言的。
就语法而言,它们在某种程度上有关联。
总的来说,C++ 在很大程度上增加了许多能力,主要包括面向对象编程和泛型编程结构。然而,它尽可能地保持与 C 的向后兼容性。
另一方面,C# 则是一个非常不同的语言。它完全放弃了所有向后兼容的尝试,并更多地试图保持与 C++ 的表义相似性。
然而,在实际应用中,这三种语言都非常独特。由于支持库和技术的巨大差异,C 与 C++ 以及 C# 的开发方式有很大的不同。
C语言是祖宗。当你编译C应用程序时,会得到可执行的机器码,可以在你编译的任何平台上运行。
C++将面向对象开发添加到了C中。
C#只是与C语言名称中的字母相似,并且具有类似的语法结构。C#编译成.NET IL,由.NET运行时即时编译(就像.NET语言系列的其他语言一样)。
C#与C或C++并没有太多关联,除了名称和使用相似的语法。在底层,C#与C和C++完全不同。
C#受到Java的强烈启发。
C语言和C++语言非常相似;C++几乎是直接从C语言派生而来的,添加了一些新的语法和语义来支持面向对象编程。像C语言一样,它不提供内置支持除基本流定向I/O之外的任何内容;涉及位图图形、声音、网络等的任何内容都必须使用第三方库来完成。这两种语言的程序往往被编译并作为本地机器代码运行。
C#语言与Java语言比与C语言或C++语言更加相似;像Java语言一样,它倾向于被编译成在虚拟机中运行的字节码,而不是本地代码,并且像Java语言一样,它试图支持C语言和C++语言不支持的所有内容。Java语言和C#语言在第一眼看起来有点像C语言和C++语言(它们使用许多相同的关键字、分隔符等),但是在使用一段时间后,你会意识到它们是非常不同的语言。
他们的名称看起来相似,因为它们的语法看起来相似。
C 从这三种语言中可以说是最不同的。它实际上是一种高级汇编语言,可以编译多个处理器架构的代码。(而汇编通常不能)
C++
提供了许多功能,除了C
语言外,还可以辅助编写面向对象程序。即使在C++或C#中,任何面向对象的程序都可以轻松地重写为非OOP。具体的面向对象特性包括:
C语言是基础编程语言。它非常适合低级别的编程,虽然你可以使用它进行更高级别的面向对象编程(OOP),但这样做会变得有些“啰嗦”。非常适合嵌入式编程和在尝试使事情非常高效时。
C++基本上将C语言转化为面向对象编程语言。语法略有不同,但总体上非常相似。这使得更高级别的编程更容易,同时仍然能够编写高效的代码。适用于编写游戏引擎等内容。需要高效率,但没有OOP编程将是痛苦的。
C#在我看来与其他两种语言最不相似。它具有类似的语法,但几乎完全是OOP。它适用于编写.NET应用程序。它适用于快速编写GUI,在Windows和Web开发中都很好用,在效率不是目标而是尝试快速推出产品的情况下。
我从C ++背景开始,曾经在C ++ Windows应用程序上工作了四年左右,后来转向了C#。我可以告诉你,C ++和C#在语法上非常相似。然而,C#具有一些很酷的简写功能,在C ++中不可用。
在我看来,最大的区别不在语法上,而是在库、框架或者你想叫什么东西上——忽略托管C ++。当你使用C ++编码时,通常需要决定你要针对哪个平台以及你计划使用哪种类型的库。当我使用C ++时,我使用Microsoft Foundation Libraries。但是还有很多其他选择。此外,使用C ++时,您还有更多的选择,可以决定使用哪种类型的IDE。使用C#时,除非您使用Mono进行编码,否则通常只需使用Visual Studio和.Net框架。
此外,由于C#使用非常丰富的.Net框架,因此可以轻松编写通常为C ++世界中的专家保留的程序。当然,您也可以选择使用托管C ++,它使用.Net框架,但我必须问:为什么呢?
我故意在讨论中省略了C,因为我从未在专业水平上使用过它。 尽管如此,我可以说,我所看到的少量C代码非常难看。这不仅是因为它是过程性的,还因为许多编码标准非常精确但难以阅读。 我认为这并不一定是必须的,只是通常以一个非常难以阅读的风格编写。 这也可能是由于我有很长时间使用面向对象编程的经验。把C语言看作是在C#中执行所有操作的一个巨大的静态类。
你可以使用指针传递数据(在C#中也可以这样做)。我发现大多数人被指针绊倒了。
你可以通过创建结构体来创建新类型(就像在C#中一样)。
如果你想学习C语言,那就假装C++不存在吧 :)