完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
一.前言
目前,C语言应该可以算得上是世界上最伟大的编程语言。全中国口气最大的程序员,业界称之为“垠神”,曾经发过文章吐槽过业界各种主流的编程语言(对Java,的Python稍微宽容一些),他说Go语言设计有错误,Ruby是垃圾,JavaScript是垃圾中的垃圾。但他对C语言却没发表过什么负面言论。 之前Go大会,演讲的人许多都在说受不了C语言了,它动不动就爆内存,为了提高系统稳定性与可维护性他们把原有的逻辑用Go语言重写了一遍,这应该是一个正确的策略,并不是C语言不适合大项目,而是要掌控好这门编程语言实在太困难,一个公司很难保证招聘的所有员工都牛逼到考虑到如此之多的内存管理情况,难免引入一些有内存泄露隐患的代码,与其在这里面死磕还不如换一种更好掌控的语言,这或许更符合公司的发展需要。 C语言没有垃圾回收,需要自己去管理内存释放内存,而这点对于现代程序员来说确实有点难以接受。除此之外语法过度严谨,定义方法之前都需要预先声明,指针操作难以理解这种种麻烦事也导致了C语言的市场份额(应该这样说)渐渐被其他语言所占去。不过我觉得以上种种麻烦事也是C语言的魅力之处吧。它能让我们可以更加直观地与计算机系统打交道,让我们可以更加清晰地了解到一个程序运行的时候发生了什么事情,我们哪些方面需要系统的接口支持,我们能够清楚自己需要分配多少内存空间等等等等。 二.C目前的现象 对于许多计算机系的同学来说C语言可能就是噩梦,以至于他们遇到Java的时候就如同找到一根救命的稻草。经济快速发展的今天C语言似乎渐渐失去了昔日的荣光,在语言排行榜上的第一名的位置已经让给了Java,游戏领域C++已经占有了一席之地,Web领域,Ruby,Go,Python,JavaScript这些语言各自占着不同比例的“市场份额”。那问题来了,C语言是否还有市场? 让我们透过现象来看看更本质一点的东西,目前承载着我们生活的大部分技术其实都跟C语言脱不了关系。比如,Python,Ruby这些流行编程语言的解析器,目前使用最广泛的服务端操作系统–Linux的内核,以及我们目前用得最多的版本管理系统Git,他们都是大神们用C语言编写而成,只是我们平时看不到C的存在罢了。或许它已经被编译成二进制代码,可以直接在命令行直接运行,或许有些人给你提供了友好的用户界面,让你们看不到在背后默默支撑他们的人。或许有人用它实现了其他更加高级的编程语言(如Ruby,Python,Lua),让你沉迷于这些语言的语法糖的时候忘记了它的解析器是由谁来实现。 如此看来就有点像是前端开发跟后端开发的关系那样,个人觉得后端工程师往往需要承担比前端更加大的工作压力,他们编写的代码支撑着我们系统最关键的部分,但是人们往往只能关注到他们能够直接触碰的东西(可供用户使用的UI界面),却忘记了为了支撑他们所见的这个页面背后默默运行着的服务端代码。C语言实现了许多主流语言的解析器,而我们基于这些编程语言实现了很多了不起的网站,App,而它自己(C语言)却渐渐淡出了人们的视线在背后默默运行着。 三.C语言的应用 写C你很难找到相关的工作,但是它能让你成为一个更好的程序员。 如今,函数式编程是越来越流行了。后起之秀Go声称要击败C语言,把C语言能做的事情都做一遍。确实如今的C语言已经没有当年的那么无敌了,出现了许许多多的替代品,或者衍生品。但我觉得作为一个存活了几十年的语言,它自有它过人之处,作为一个系统级编程语言,它简单却难以掌控。 我来举个例子吧,你可以制作一块电路板,用单片机控制的,这可以用C语言来写单片机的控制程序,然后将这块电路板连接到计算机串口或并口或u***口,用C写一个计算机程序,通过控制这块电路板实现对家用电器的控制,如果加上遥控模块,可以通过计算机遥控各种设备,想想你在外面玩电脑控制家里的电饭堡,微波炉吧,也可以用手机发消息来控制,这不是想象。 其实单纯用C语言写的实用程序并不是很多,因为语言只是一个工具,最主要的还是算法,一般都是结合数据库技术编写程序。在生活中应用也是很多的,有人说的计算器,那是最简单的应用,其他还诸如电子琴,象棋,游戏外挂,还可以在C中嵌套汇编语言,实现对计算机硬件的控制,比如上面提到的。下面具体来说一下。 1.平时所用的PC电脑系统无论是windows系统还是nuix系统,KTV里面的点歌系统,电话等都是通过C语言来进行底层开发的。 2.做软件UI设计的都会用到PS等工具,其实这也是C语言编写的。 3.C语言具有很强的绘图能力和可移植性,并且具备很强的数据处理能力,可以用来编写系统软件、制作动画、绘制二维图形和三维图形等。 4.可编程芯片 51单片机是电子、自动化等专业同学的必修课程。它体积大、处理能力低,虽然缺点明显了一点,但非常适合学习入门。单片机里面跑的程序就是C语言。我们可以通过C语言来控制硬件电路。这也体现了C语言指针的特性,单片机里面的寄存器其实就是地址,而C语言正好可以操作地址。 所以,给大家总结的第一条就是: C语言可以直接操作硬件,针对芯片编程可以使用C语言。 5.操作系统 如果说再高端一点的芯片,可能就要提到ARM Cortex A系列了。比如图上的华为AI智能音箱。使用Cortex A系列的芯片,就不得不提操作系统Linux。操作系统由三部分组成:bootloader、内核、文件系统。核心代码全部由C语言编写。这也体现了C语言的优势:可以直接操作硬件(驱动),执行效率高。 C语言的第二个作用:编写操作系统(操作硬件的底层代码+内核代码)。 6.应用程序 图上的AI音箱是怎么通过手机控制的呢?其实中间还有一个我们看不见的服务器,手机把消息发送给服务器,服务器再转发给音箱。音箱接收和发送指令的过程也离不开C语言。 所以,对于一些更注重逻辑处理的小型应用程序,也会使用C语言来编写。C语言是一门面向过程的语言,没有过多的UI界面,这也是为什么我们写完C语言只能在黑乎乎的界面上运行(终端)。服务器端的程序其实也算是应用程序,但是由于服务器端往往都是大型软件项目,C语言可用的库和框架太少,所以服务器程序一般都会选择面向对象语言,基本不会使用C语言开发。 C语言的第三个作用: 编写运行在操作系统之上的应用程序,而且都是我们看不见的程序。 四.实例 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。 E选手说:我第四,A第一。 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 /*#include int main() { int A=0,B=0,C=0,D=0,E=0; for(A==1;A<=5;A++) for(B=1;B<=5;B++) for(C=1;C<=5;C++) for(D=1;D<=5;D++) for(E=1;E<=5;E++) if((B==1)+(A==3)==1 && (B==2)+(E==4)==1 && (C==1)+(D==2)==1 && (C==5)+(D==3)==1 && (E==4)+(A==1)==1) printf("%d,%d,%d,%d,%dn",A,B,C,D,E); return 0; }*/ 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。 #include int main() { int i=0; char killer=64; for(i=1;i<4;i++) { killer++; if(((killer!='A')+(killer=='C')+(killer=='D')+(killer!='D'))==3) printf("%c is the killern",killer); } return 0; } 五.扩展资料 1.C语言中没有连续不等式的写法,电脑只能理解一个数是大于等于0的,同时这个数是小于等于5的。 2.C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 |
|
|
|
只有小组成员才能发言,加入小组>>
2489 浏览 0 评论
1056浏览 2评论
672浏览 1评论
438浏览 0评论
173浏览 0评论
282浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 10:21 , Processed in 1.280529 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号