人文艺术 > 在哪些领域只能由C/C++实现或者C/C++做得很好,而其他语言完全实

在哪些领域只能由C/C++实现或者C/C++做得很好,而其他语言完全实

2020-09-14 20:04阅读(61)

在哪些领域只能由C/C++实现或者C/C++做得很好,而其他语言完全实现不了或者效果很差?:问这个问题的,说明你对计算机编程还没有真正入门。不要相信网上那些什么C

1

问这个问题的,说明你对计算机编程还没有真正入门。不要相信网上那些什么C语言已过时,现在是python的天下之类的营销语言。那只是忽悠小白交几万块钱去上编程课的。事实上对真正的计算机入门没有什么卵用。

计算机语言从早到晚从内到外从底层到前端,不同的环境层次需要不同的语言。

最早没有程序设计需要这个概念,就是机器语言编程。在纸带上打孔,代表0或1,然后把打好孔的纸带放进读卡器读出来从而控制与非门来实现程序功能。

后来显示器出现,终于可以不再打孔,直接编程机器语言。那时候的程序就是一个个二进制的矩阵,需要你线性代数学的非常遛。再后来,有了汇编语言,终于可以直接控制处理器了,还记得用汇编控制寄存器,累加器等等的场景。于是汇编也成了最底层最初级的程序设计语言,主要面向底层硬件,也可以编写单片机。汇编的效率也是非常的低,于是出现了一系列真正的程序设计语言如FORTON PASCAL delphi之流。。。。具体发展历程就不介绍了,几乎每本讲程序设计的书都会提到。这些语言中,C语言靠简洁的语言结构和高效的执行效率脱颖而出。C语言的应用场景非常广泛,由于可以调用内存,C语言也可以面向底层硬件,keil C也可以写单片机,比汇编高效很多,但占用存储空间也相对更多。

严格来讲,从硬件到操作系统之间的中间层,如接口程序,驱动程序,。。。大多用C语言实现。然后C语言的结构化编程也让程序结构变得更加清晰易读,所以C语言也可以用来很高效的编写应用程序。可以说从底层到表层,C语言都可以很好的实现。当然C语言有他的弊病,结构化编程的通用性非常差,有点类似于私人定制,所以在此基础上,提出了面向对象的概念,发展出C++语言。引入了类和继承。这一拓展,大大的丰富了C语言的编程环境生态。特别是微软开发的VS系列,发现至今已二十多年,经久不衰。就是因为WINDOWS编程的生态发展的非常好,记得当年有本书叫《深入浅出mfc》专门介绍windows上可以应用的公共类。mfc就是Microsoft Foundation Classes的缩写。

c/c++虽然有相当多的优势,但由于还是偏底层,最大的问题是所有的程序都需要编译。特别是在网络编程时代,非常影响发挥。

于是JAVA横空出世,JAVA是边解释边执行的语言,不需要特定环境下的编译器,因此编程环境相对简单。而且JAVA取消了指针,不用操心内存控制,导致程序设计也更简单。当然,相对C/C++,JAVA只能实现更加表层的功能。如各类b/s系统,mis系统等等,是JAVA的典型应用场景。

再往上,就是一度流行的各类网络编程jsp,asp,php。。。。。以及如今的python,号称编程生态第一流。基本把程序设计变成了程序搬运。把程序员的工作变成了搬运工,只要搭积木式的编程就可以实现各类应用。

最后就是前端,各类脚本语言,界面美工,html。。。。不介绍了,没啥意思,基本不算程序开发了。

以上纯属个人浅见,不当之处请多理解。毕竟脱离专业十几年了。

2

凡是涉及到硬件控制的固件,都需要用C语言,在底层一些就要用单片机汇编语言,在上层更高一些用C加加,纯软件的应用程序一般用其他的开发语言!网缘的网管软件往往也会用到c和C加加语言!其实现在的很多的开发有语言的都在横向的发展,所以也有些拓展,例如他们都应用到网络的程序开发当中,都有跨界的模糊的地带,只是有擅长与不擅长之分!

3

嵌入式领域

4

单片机就基本上只用c语言写,其他语言也有的可以写,但是效果不好,基本上单片机都是用c语言编译的。

5

C语言,在开发最底层应用的时候,有不可替代性。而C++则属于结合底层和上层技术的语言,不可替代性没有那么强了。下面探讨一下这个问题。

底层应用

嵌入式单片机,操作系统,通信等底层应用,一般使用C会更好,或者直接使用汇编语言。

高性能及服务器应用

高性能服务器,游戏渲染等偏底层的应用,或者对性能要求很高的应用,用C++的比较多。

当然这个层面没有那么绝对了,比如Java在服务器领域也使用非常广泛,新贵Go语言也在服务器领域崭露头角,甚至JavaScript借助于node也在后端应用发力。

同样在游戏领域,也有基于C#的unity跨平台游戏引擎,也非常出色,腾讯的王者荣耀就是使用C#开发的代表作。

前端上层应用

再往上层应用走,使用C或者C++的就很少了。

Android是Java的天下,当然Google的flutter也有前景。

iOS是object C的天下,后来者Swift也在苹果的强势推动下,使用得越来越多了。

至于桌面端,基本上是C#和Java的天下了。

但是有一个例外,就是Qt,这个对跨平台支持最全的框架,是基于C++的。从嵌入式到移动平台,再到桌面平台,Qt基本上可以通吃。不得不说,在需要支持多平台的时候,Qt是一个不错的选择。

web技术

但是目前最上层的前端应用,还是html,css,JavaScript三剑客的天下。web前端应用就不说了!现在还有很多基于web技术的跨平台框架,可以同时开发桌面端,移动端应用,这其中的佼佼者有react native,week等。

这类框架的优势在于技术栈相对单一,掌握好前端技术,就可以做各端的应用开发了,不需要学习新的技术。比如flutter,也能开发多端应用,但是需要学习dart语言,需要熟悉flutter框架。所以学习flutter的性价比就没有那么高了。

可能有人担心web技术的性能!其实这个也属于多余的。web技术非常活跃,发展迅速。性能这块,随着webgl技术的成熟,已经完全不输本地应用了。

另外现在有一种新技术,Web Assembly,可以很好的弥补JS的短板。目前各大浏览器,也在积极的推进该技术,同时有很多基于该技术的应用在不断产生。

而且前面提到JavaScript(nodeJS)在服务器端应用也很广泛,而且性能不俗,长期发展,不排除JS一统天下啊(开个玩笑)!

总结

总的来说,编程语言这个领域,使用什么语言或技术,没有那么绝对!

另外软件行业,很多东西都是分层结构的,在不同层次有不同的编程语言或者相关技术。

针对不同层次的应用,选择合适的技术,才能事半功倍。千万不要出现杀鸡用牛刀的情况,比如说用C语言开发网页!