C是贝尔实验室的产品,c ++也是如此。但是c是最古老的3.当时C是独一无二的,因为它是一种中级语言。它比汇编程序更高级,因此可以移植代码,但它具有足够的低级别功能,例如通过指针直接访问内存,这非常适合以驱动程序开发等硬件为中心的任务。它在Bell中作为系统开发语言变得流行,并且用于编写UNIX。后来,K&R C(由Kernighan和Richie出版)特别推广了学术界贝尔以外的语言。最终K&R C成为ISO C语言标准正式化。C是并且是一种相当简单的语言。没有面向对象需要担心。如果你需要那种东西看其他地方。
在九十年代早期,面向对象的编程概念和语言开始流行。Bjarne Strousup正在Bell工作进行软件开发,并开创了一种基于C的新语言,称为c ++。当时,对于大多数共享历史记录,c ++是c的正确超集,这意味着任何有效的c代码都必须为任何c ++编译器实现进行编译。在我看来,这导致c ++具有非常重的语法,它仍然持续到今天,尽管现代c ++编译器已经通过自动类型声明等功能改进了这种情况。
C ++是一种强类型的面向对象语言。编译器在编译时执行大量静态分析,以在编译时而不是在运行时解决任何错误问题。C ++引入了C中不存在的许多特性和功能。
C ++ 14/17能够提供其他编程风格,如功能和通用。但要实现这一点,语言必须忍受额外的语法覆盖,例如模板和lambda语法。即使是Strousup也会承认c ++中有一种更简单,更具表现力的语言正在努力逃避(释义)。
尽管它的名称和表面上的相似性c#与C或C ++几乎没什么关系。与前两种语言不同,c#在称为CLR(公共语言运行时)的虚拟机中运行。C#拥护者可能对此感到愤怒,但可以说你可能最好理解c#作为微软对Java的回答。
它们都是垃圾收集的托管运行时,具有令人印象深刻的系统库,旨在最大限度地提高应用程
像Java这样的C#有interface关键字。在c#中,它用于支持类型安全的鸭子打字,即如果它像鸭子一样行走/嘎嘎叫它是一个用于所有意图和目的。恐惧集有很多重叠,除了c#主要局限于仅限windows的应用程序。C#被嘲弄地称为“穷人,java”。
C#倡导者会拒绝这一点,并认为最新版本的c#超越了java。我不会试图为理解c#提供适当的上下文。
当然,有许多不同之处,但我的观点是强调c ++与c#之间几乎没有联系。C#更多地受到微软的业务需求的驱动,以重新启动Windows桌面应用程序开发,以抵御Java等感知竞争威胁。
领取专属 10元无门槛券
私享最新 技术干货