c语言现在还有必要学吗,如果有,优势是什么?

蒋光登


答案是肯定的。 估计题主问这个问题,应该是看到了现在好多的高级语言,像C#、JAVA等,都能做出好多漂亮的界面,而且也能实现好多的功能,而且只要在IDE上用鼠标拖拉下某个组件就做成了一个UI界面,由此怀疑到还要C语言有何用吧?

可是题主知道吗,这些高级语言再怎么牛逼,一些底层的功能还是需要C语言来实现的。你看JAVA里面有jini机制,用来调用native代码的,为啥?因为有些功能JAVA做不到,只能依赖C来实现。

你再看Android,它也有个jni机制,也是要调用C代码来实现某个功能。 比如做Android开发的时候,有个功能是需要对手机里存储的视频文件截图。单纯靠android的框架做不到这一点,只能通过native机制调用ffmepg来实现视频的处理,而ffmepg是用什么语言实现的?就是C语言!

所以不管高级语言如何发展,都需要用到C语言来帮忙的时候。 我在“C语言编程技术分享”里,也就是公众号里,原创自己的C语言文章,题主有兴趣可以一起交流!


智能终端小屋


我感觉C语言有必要学,但不是必须要学。

我们可能会看到有关这样的疑问:“老师,为什么我们的应用程序设计要学C语言而不是别的?C语言不是已经过时了吗?如果现在要写一个Windows程序,用VB或Dephi开发多快呀,用C行吗?退一万步,为什么选择C而不是C++呢?”

一、C语言在编程语言中的地位

随着编程技术的发展,编程语言越来越多,多到甚至看花了眼,现在我们经常会看到各种培训班培训JAVA,VC,LINUX等等编程语言,却看不到多少C语言的培训班。

但是说起C语言,可以说是无人不知,无人不晓(当然,我只是说知道编程的人)。C语言诞生至今已经四十多年了,相比于现在火爆的JAVA,PYTHON等编程语言,C语言是不折不扣的老大哥。

我们可以查看一下历年来的编程语言排行榜,C语言基本都是前五名。这说明什么?说明C语言不仅资格老,而且功能强大。

我想今天我们这个问题的目的也正是这样:C语言很好很强大,但是是否真的有必要学?

二、学习C语言的必要性?

C语言是计算机编程的基础,不管你现在是一个高级编程师还是一个刚刚起步学习计算机语言的人,建议从C语言开始学习。如果不懂C语言,你想写底层程序这听起来十分的可笑,不懂C语言,想写出优秀高效的程序简直是天方夜谭。正所谓:学好C语言,走遍天下都不怕。

C语言是实用的程序设计工具,学好C语言对我们今后学习JAVA、C++、VB等可以打下良好的基础,因为这些语言大部分都是由C语言扩充或衍生而来的。C可以用于开发比较底层的东西,比如驱动、通信协议之类,在Unix和Linux环境中也是不可或缺的,另外在嵌入式领域也大有作为。

三、C语言的优势

1、学了C语言,也就理解了程序设计的思想,因为想真正学会程序设计就不可能不跟数据结构打交道,而初学者如果直接从VB或Java入手,基本上很难理解如何构造数组、链表、树、图等数据结构。也只有真正理解了数据结构,才有机会体验程序设计的思想和算法的精髓。

2、C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,而我们常说的,算法是程序设计的灵魂,只有掌握了设计的灵魂,才能做出更好的设计。

3、C语言能够让你深入系统底层,所有的操作系统windows,Unix,Linux,Mac,os/2,都使用C语言来完成的,如果不懂C语言,怎么可能深入到这些操作系统当中去呢?

4、很多新型的语言都是衍生自C语言,C++,Java,C#...掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了。


老马识途单片机


这是这个问题具备很强的两面性,对于想切入某些领域比如嵌入式开发等这些C语言是必须要学的,不但是C语言要学习,数据结构,c++也要切入进去,所以对于C语言的学习,还是要选择的方向,有些java的技术大牛本身也不懂c++,但java搞的风生水起。

从系统学习的角度考虑学习C语言还是很有必要,毕竟懂得底层功能的实现,对于系统的了解软件框架还是有帮助。现在很多主流的编程语言的底层大多是基于C语言构建出来的,了解底层的实现,对于深刻了解底层代码的实现有非常强烈的借鉴意义。

简单总结下学习C语言的步骤:

1.选择一本教材然后找到配对的视频

2.制定学习计划,计划的推进以书本的大纲为基准

3.在推进计划的过程中,如果遇到不懂找到 对应的视频学习

4.把指针,数组,函数,结构体,递归,回调等基础学好之后

5.尝试做点C语言的测试小项目,比如贪食蛇,图书管理系统等等

6.找一些开源的代码,通过查找资料争取让自己看明白

7.尝试修改开源代码,并且能够顺畅的运行起来。


大学生编程指南


现在还问C要不要学。是根本搞错了基本概念。把C语言当软件编程语言。其实。C语言和软件开发关系不大。C语言是搞电子用的。再强调一次。C语言是搞电子用的。

主要用在单片机。嵌入式这些都应用在各种仪器工业民用的电子电气设备上。当然。服务器也会用一点C语言。但从业人员和搞电子的相比。零头不到。可以说。学好C语言。就有机会进入电子开发的行业。而且是钱多事少的工作性质。因为程序都有自身的设计模式。搞熟了。就是那回事。


宇记4


我曾经是一名资深的编程人员,在初创公司有着丰富的工作经验,欢迎关注我,和我一起分享职场,科技,互联网创业等方面的知识。

其实要回答你这个问题也是挺简单的,没有必要说得很复杂。

C语言有没有必要学,这个就要和你所从事的职业有很大的关联了。

C语言主要用在底层软件,操作系统,服务器底层工具链的开发较多,适用于MCU的驱动,嵌入式系统的底层软件,服务器底层工具测试等领域。

学好C语言可以从事的行业有很多,比如:智能硬件领域,小家电领域,人工智能领域,物联网终端,机器人领域等等。这几年由于智能硬件、物联网、机器人领域的兴起,C语言也是水涨船高。非常有发展前景。

C语言的优势:

1、C语言是所有高级语言中最接近底层的语言,所以在一些要求实时和高校的应用场合就拥有天然的优势;

2、很多更高级的计算机语言都是衍生于C语言,所以当你掌握了C语言之后,别的语言就很容易入门了;

我的结论是:学习一下C语言的基础知识还是很有必要的。至于要不要精修,就看你所从事的职业了。

希望我的回答对你有所帮助。请记得关注我哦,并在下方留言,我们一起探讨。我可以给你更多的参考意见。


社会关注聚焦


如果是计算机专业,以后靠计算机吃饭,那必须学c,c语言是很接近底层的语言,而且和汇编直接的对应很直接,可以让你对于计算机程序运行的原理的理解有很大帮助。

函数调用时,参数在调用栈中是怎么排布的,返回地址藏在了哪里。栈和堆有啥区别。编译链接都干了啥。静态链接和动态链接有啥区别。elf或者pe结构里面各个段对应代码里面什么内容。缓冲区溢出怎么可以被准确利用。等等一些程序运行的基础知识,通过c语言都可以非常直接的对应上去。用其他高级语言编译器帮你做的事情太多了,语法糖也太多了,这些不利于你理解最纯粹的程序运行原理。

但是c语言语法表达能力太弱了,适用范围也是一些比较贴近硬件的场景,或者是资源要求比较严格的场景等。国内用c比较多的还是一些传统IT厂商,设备厂,数通厂等等。互联网用的还是少,学c不一定会找c语言的工作,只是帮助你理解计算机。

而且c语言学起来回馈很低,一开始会有一种啥也写不了的感觉,其实这很正常,这就是语言表达能力弱的一个特点。以后可以根据自己想要从事方向来更换语言,或者继续深入理解c。(不过c语言的语法就那点东西,很简单的,难的是大型c语言项目背后的算法,操作系统,调度,内存管理相关的内容)。

如何你是爱好者,而且想做一些比较上层的应用,那没啥必要学c了。可能挫败感会让你放弃计算机,毕竟学c很枯燥,你一开始很难用c写出来有点意思的程序,只能写那种连玩具都算不上的东西。可以从比较感兴趣的方向来确定需要学什么语言。


冰封灬飞飞


想成为程序员那就一定要从c开始

C语言相对其他的可以更容易懂

然后C语言也是最基础的编程一样

可以说一切开发语音基于c

所以c还是很重要的

c语言是一个程序员的必经之路



牛仔爱玩机


这要看你从事什么行业。不同的行业不同的应用环境催生不同的要求。

web服务器不考虑负载可以Python,有Django。考虑负载Java。底层有c,大型服务器有c++。ai有Python。glue有perl。

我有一个项目,dns服务器,电信级的,用perl做glue。一头开net服务器接受配置命令,一头连接MySQL本地存配置,一头用netlink配置内核模块。


程琰657


我想问题的关键不在于是否要学习C语言,而是以C语言为代表的结构化语言在现今友好GUI下编程工具众多的环境中的地位问题。

俗话说,要知其然更要知其所以然,程序员们欲知其所以然自然牵扯到几种“过时”的计算机语言,这几种语言虽已“过时”,但学习他们可以程序员们更好的了解计算机基础知识。

一是汇编,这是基础,程序员学习汇编的目的是了解机器内部堆,栈结构及移位运算。

二是FORTRAN,标准的科学计算用语言,学习FORTRAN可以帮助你更好的学习数值分析和微积分。

三是C和PASCAL(PASCAL已消亡数十年),这是结构化语言的代表,学习它可帮助你更好的理解数据结构,和程序结构。当然,目前C语言还在多个领域发挥着举足轻重的作用。

四是COBOL和DBase,这是关系型数据库的基础。

当然还有HTML。

实际上学与不学C都不会对目前环境下“完成编程任务”造成大的影响,但或多或少的影响着你的软件开发思路和编程质量。


MosquitoVon


建议初学者学编程要先学C语言,再学其他语言。这样在学其他语言的时候,就会觉得比较容易。而如果先学其他语言,再来学C语言就会觉得很难,甚至根本学不会。这有点像学开车,手动挡踩油门和刹车,同时需要换挡和踩离合器,要手脚协调配合。但自动挡不用,只需要踩油门和刹车,非常傻瓜。如果你先学会开手动挡,那么遇到自动挡的车,你只需几分钟就学会了,而且你会惊奇:怎么这么简单?!但如果你先学会了自动挡,而且习惯了开自动挡,那么恭喜你,估计你这辈子都很难再学会手动挡了!因为你已经习惯了自动挡的傻瓜式操作,你只会踩油门和踩刹车,你不明白启动和加速为什么要换档,也不习惯在换挡和踩刹车的同时要踩离合,这样手动挡的车很容易熄火,而你会崩溃。

不同的语言有不同的优势。C语言的优势是速度快,效率高,同时,因为C语言和底层关系密切,能够更深入理解计算机的工作方式,但指针、结构体和共同体,位运算,内存分配等概念学习难度也比较大。高级语言如Perl,java/PHP,C#, VB,R, Python等往往和底层脱离,只面向逻辑思维和解决问题。和C语言相比,很多东西(如内存分配,数组、字符串变量定义)都是傻瓜式的。

实际工作中,要编写程序,往往不能只用一种语言,而是根据不同的需求,选择不同的语言,以便达到事半功倍的效果。比如做个简单的窗体应用,选择C#;做算法和统计分析、作图,就用matlab/R/Python语言,写web网络应用,就用SSH/java/PHP,要做office插件,还得用VB,而不要用c语言,累死你也写不出来。但如果设计底层的控制,这些高级语言往往不支持,需要用c语言。


分享到:


相關文章: