游戏全栈开发

C 语言和 C++、C# 的区别在什么地方?

本文来自知乎问题:C 语言和 C++、C# 的区别在什么地方?

作者:绿帽蝙蝠侠

用途不一样。

C语言主要用来做单片机。写代码只是次要的,关键在于要懂电路。

单片机就是这玩意:


你拆开家里的废旧电器,就会看到它了。

它相当于一台超级低配的电脑主机。C语言写的代码,就可以烧录在里面运行。

这些代码通过控制针脚输出的电平高低,来切换元件的开关状态。

代码通常遵循几个编写套路。这些套路,行话叫做“状态机”。其中最为常见的是“FSM有限状态机”。

程序员靠C是吃不上饭的。C在今天,应该属于电工技能。


C++和C#,用途倒是有不少重叠。它们的共同点是,两者都适合做桌面软件开发、游戏开发、以及适合搞工业控制。

比如C++有MFC和QT,C#有Winform和WPF。这些都是用于开发电脑桌面软件的。

C++有OpenCV,C#有Halcon。这些都是用于搞机器视觉的。

C++有Ogre,C#有Unity3D,这些都是用于3D游戏开发的。

相同的这部分,C++更偏学术,C#更偏应用。所以你会发现,学校里喜欢C++的老师比较多一些,企业里C#的项目比较多一些。


至于两者的不同点。。。。

C++没有MVC框架,无法开发互联网行业的Web服务端。而C#有ASP NET框架,以及最新的.NET Core。可以用于互联网行业的Web服务端开发。

而C#由于运行层级高,所以不能用于一些特别底层的工作。比如开发操作系统。

简单概括就是:

C++能当C用,但不能当Java用。

C#能当Java用,但不能当C用。

画了张图,大概说明了一下各语言的适用领域(只说明技术本身的适用范围,与市场份额无关):


彩色线条——可用于真正的项目开发。

黑线——理论上可以用,但实用价值不高。

比如C语言,在单片机,以及操作系统开发(含嵌入式)方面非常适用。而在游戏开发方面,虽然理论上可用,但并不适用。


C++的历史很长,轮子比较多,但潜力早已挖掘殆尽,今后基本不会有新的框架产生了。但它的学术地位依然很高,所以它今后的存在价值,主要体现在学校项目里。企业方面,除了一些历史遗留的骨灰级项目之外,已经很难见到它了。

C#很年轻,2002年才发布,目前还是个发育期的幼崽,今后还有新的框架会不断出现。比如即将面世的跨平台UI框架MAUI,人工智能框架ML NET,云计算网络框架Azure等。C#的潜力非常巨大,不仅有微软保驾护航,而且还入选了ECMA规范,由ECMA组织直接参与新版本的语法修订工作,即《ECMA334 》规范。

《ECMA334》有极大概率,会成为工业互联网的行业编程标准。

如同当年的《ECMA262》(Javascript),成为了浏览器前端编程标准一样。

网友评论

我感觉学院派其实更喜欢C#,因为它逻辑特别自洽而且有高度,真正工程风浓郁的是Java。

来自知乎网友:楚梓桐

请问一下您,本人现在大三,学过C,java,web前端,但都是一些皮毛,现在暑假正在学python,拓展一下自己,请问将来为了好找工作,不需要那种特别深入的(研究算法),就业面广一点的,根据您的经历和经验,选择什么语言作为主要的学习对象?

来自知乎网友:Oddity

奔着找工作,选Java。岗位多,但是行业局限性大。

业面广,C#最广,触及行业多。但是岗位数量不给力。

其实单论岗位数,最多的也不是Java,而是Web前端。只不过前端每隔几年就改一次标准,定期割韭菜。

Python不用学了,只能忽悠孩子,实际开发基本没用。

来自作者对上面评论的回复
作者:绿帽蝙蝠侠

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部按钮