{eval=Array;=+count(Array);}
C语言是一门历史非常悠久的语言,C语言非常的简洁紧凑、灵活方便;数据类型和运算符号者非常的丰富;可以直接的操作物理地址,非常适合对硬件直接操作;生成的目标代码质量和运行效率也非常高。
51单片机便宜到爆(10元以下大把有),教材多到堆成山,主要是C语言,你可以体会下操控硬件的感觉。譬如操作机器人小车,遥控飞机神马的。即使是‘软件工程师’也没关系,完整的开发板,你所需要知道的就是插个USB接口就行,也不贵~
还有其他的,stm8s,stm32,都很便宜,而且功能更强大;尤其是stm32,一个指针所占空间也是4字节哟~~~你学过的那些神马的C语言的关于指针的奇技淫巧,都可以用了哦~
用两个按钮做0和1,一块液晶屏,一个stm8开发板,所有成本30元可以找到包邮的。输入、输出、cpu、内存、存储什么的就都全了,就是一台‘冯诺依曼’电脑了。要知道美国人送月球上天的处理器也是8位的,小伙子我看好你,上吧。
Arduino,入门太过简单了,模块,淘宝上什么模块都有,简单的扩展板连接,你可以体会 build world的感觉。
你要是想玩玩更复杂的,现在很多WIFI芯片、GPRS or LTE芯片也都开放固件定制,很多路由器也可以定制其固件与行为,并且是性能还不错的cpu搭配完整的linux~都可以试试~
这些大部分都是C,或C改,或C++或C++改,stm32其实你可以使用其函数固件库,搭配Eclipse/CDT && gcc for ARM,则完完全全的C/C++了,绝对是学C语言的利器~
可以深切的体会内存只剩下2KB,flash只剩下10KB时,如何存储,如何设计~
另外,如果有时间,给他们写个操作系统吧,照着RTOS(才几千行代码/其实是9千9百多行~),实现一个操作系统,对课本知识的理解,绝对上升一个档次了。如果你解决了某个小技术难题,或者给某款原本没有OS的芯片加入OS支持,说不定有人感兴趣,卖个一二十万也不是什么难事儿~
其实很多人都会有这个疑惑:大家都说C语言很好,是编程语言的基础,用途非常广泛。可是具体到实际问题上,却又很难准确说出C语言可以用在哪些方面。
其实这个问题就像1+1一样,都知道1+1是所有算术运算的基础,可是在正规的教材上(除了幼儿园的教材),基本上不会出现1+1这样的题目,可是我们都知道,所有的算数运算都是起源于1+1的。
c语言是计算机技术的基础,是信息技术的基础,是自动化技术的基础,是很多电子设备能够运行的基础。
学习C语言可以让你了解编程,锻炼编程的逻辑思维,所以C语言也是比较重要的,能够为你学习好其它编程语言打下基础。各种语言之间虽说语法不同,但是编程的思维是相通的。
Windows大部分源代码都是用C语言写的,Linux也一样。连操作系统都是C语言写的,其他软件之类的更不在话下。C语言可以干几乎和计算机相关的任何事,编写任何系统或软件,实现任何功能。
像C语言、C++、Python等都是通用性的编程语言,它们不针对某一个特定的方向,能做的事情很多。C语言主要用于底层开发,Windows、Linux、Unix 等操作系统的内核90%以上都使用C语言开发,开发硬件驱动,让硬件和操作系统连接起来,这样用户才能使用硬件、程序员才能控制硬件。
C语言介于汇编和高级语言之间,属于最底层的高级语言。因此现在被广泛用于嵌入式系统开发,各种底层软件、驱动程序,等等
各种网络设备,tcp/ip协议都是用C语言写的,
服务器端程序大部分都是用C语言写的。云服务也离不开C语言。
C语言的用处还有很多、很多。有人说C语言够学一辈子了,诚哉斯言!
C语言能干很多事,往往别的编程语言不能干的事C语言很轻松就解决了。这里我说一个程序员朋友的例子。
这名程序员做的是android手机研发,开发方向是做视频播放器类的。有一次产品经理丢来一个需求,就是用户在看视频的时候可以一键截图。这个截图可不能用android自带的屏幕截图功能,必须得是播放器自带的截图功能。
程序员做上层应用开发比较久,android框架类也比较熟悉,所以第一反应就是去找有没有截图的方法可以用。让人失望的是找了半天都没有找到一个完美的截图方案的框架类。于是在网上搜索、发帖咨询等都没有找到。
后来是一个高级程序员无意中提到了ffmpeg这个项目,是一个纯粹用C语言开发的音视频编解码的项目。好多流行的播放器在编解码方面都是调用的ffmpeg的功能。注意哦,这个ffmpeg完全是用C语言开发的。
有了这个思路之后,下面的事情也就简单了,让上层的Java代码调用ffmpeg的C语言代码库。要把ffmpeg编译为一个静态库包含在项目中,利用Java的native机制调用C语言静态库即可。这个C语言静态库中包含着各种各样的音视频编解码库,于是程序员完美地完成了这个需求。
所以C语言也许不像其他编程语言那样可以做出精美的界面,但是很多贴近硬件的、复杂的功能除了C语言就是做不出来,最后还是得找C语言的解决方案。
C语言是本科阶段大多数专业的必须科,大学阶段最重要的证书之一计算机二级证书大多数人也都是选择的C语言方向。据我了解大学的理工科专业在大一阶段都会学习C语言这门课,而且还是一门必修课。C语言作为一门低级语言,采用面向过程的编程思想,相对来说比较简单,所以才会作为入门级编程语言,也经常作为学习其他语言前必须先学习的基础语言。
智能穿戴产品:手环,手表,VR/AR眼镜。现在智能穿戴产品基于它们的便携、智能等优点,在我们身边已经越来越普及了,那么这些产品的构成,离不开C语言编写的各种驱动、算法等。
嵌入式产品:交换机,路由器,服务器,车载电脑,智能音箱,智能家居,机器人,无人机。
软件系统:windows操作系统,Linux操作系统(Ubuntu、Redhat),游戏。
嵌入式软件工程师
嵌入式软件工程师通常做一些网络服务,数据交互等方面的工作,比如做路由器、交换机等都需要嵌入式软件开发工程师。
Linux/Android驱动开发工程师
Linux驱动不用说,肯定是用C语言开发的,那么Android的底层是Linux,所以Android的底层驱动同样是C语言写的。
window驱动开发工程师
windows系统大部分是c写的,所以基于windows的开发大多也都是C开发,比如很多的上位机程序。
单片机开发工程师、Linux内核工程师、游戏开发工程师
...
C语言作为一门低级语言,基于其运行效率高等特点,在智能电子产品中应用非常广泛,小到一个纳米级的芯片,大到航空航天产品,都需要用到C语言。同样,学习C语言就业也是很广泛的。
从功能上来讲,任何其他编程语言能够做的事情,C语言都可以做到。
对于入门来说,推荐学习C语言,毕竟这是绝大多数程序员的入门语言。C语言语法简单,易于学习。
现在广泛流行的绝大部分语言,如Java、Python、Lua、Javascript、Go等这些编程语言,都是在C语言的基础上衍生而来的。而且,这些语言开发在之出的第一个版本的编译器,往往也是采用C语言开发的。因此,这些语言能够实现的功能,C语言全部都可以实现。
但是,随着计算机技术的发展,现代软件项目的规模越来越大,实现的复杂程度越来越高,软件开发周期越来越长。有些大的软件项目,可能需要几千人花费几年的时间来开发。在这样的背景下,为了提高开发效率,缩短软件开发周期,降低软件的维护成本,一些更为高效的语言应运而生。注意,这里说的高效,是指开发效率,不是软件运行效率。
现在流行的高级语言,如Java、Python、Go等,相比C语言来说,提供了很多提高开发效率的高级特性,如面向对象、动态类型、垃圾回收等。这些特性大大缩短了软件的开发难度,降低了开发成本。
简单总结一下,C语言适合开发一些对性能要求很高的的系统软件,如BIOS、操作系统、编译器、数据库、基础库等。其他诸如Java、Python等语言,适合开发规模较大、复杂度高、对性能不是非常敏感的上层应用软件。
很多想学习编程或者刚开始学习编程的童鞋,往往会纠结于什么编程语言是最好的,最好的IDE工具是什么,或者哪个版本的语言最好用等等诸如此类的问题。当然,尚未入门的童鞋,对编程还没有什么很具体概念,这些问题也在情理之中。
但是,对于入门来说,最重要的是培养对编程开发的兴趣,尽快找到编写程序的感觉。可以适当了解一下各种编程语言的特点,但是不要过于纠结。
我的建议是,选择一个绝大多数程序员入门的语言(通常是C或Python),然后从最简单的“Hello World”开始,由浅入深,循序渐进,尽快了解并掌握语言的基本语法,然后逐渐培养程序开发的兴趣和感觉。
做软件开发这一行,个人认为兴趣是最重要的,有兴趣才会有动力持续、深入的学习。一旦没有了兴趣,技术上不可能达到很高的乘次,编程也会变成一种煎熬。
希望对你有用!对编程开发感兴趣的童鞋,欢迎关注我!
我一直觉得c是比较接近底层的语言了,当然除开汇编、机器语言神马的,感觉c是加法其他语言是乘法,乘法的实质就是加法,但是乘法和加法都是四则运算符号之一,c基本上可以干很多其他语言能干的事情但是一般不会用,就像你能用乘法运算的题目不会把它用加法来实现,因为过程太麻烦了,但c存在的意义就像加法一样有些地方是不能替代的像硬件驱动啊等等这个其他人说的比较多了,这个比喻也不是特别贴切而且有点片面,因为不是所有的语言都是脱胎于c的,但是大概关系应该是这样的
虽然是BAT的Java开发工程师,但毕竟也是某985计算机专业的本硕毕业生,我可以说C语言是编程领域最基础最重要的语言(比Java还基础的多)。
首先,C语言是本科生的必修课。在学习算法,数据结构等重要课程之前,首先要学C语言,可见是被视为最基础的工具。C/C++是偏向底层的语言,把高级语言的基本结构与语句和低级语言的实用性结合了起来,使它可以像汇编语言一样对位,字节还有地址进行操作,当然,这种操作对于初学者来说有时会导致程序错误或者崩溃。
然而正因C语言具有偏向底层的特点,因此可以作为工作系统的设计语言编写系统程序,比如我们常见的嵌入式系统。嵌入式系统其实与我们的生活息息相关,大到汽车,小到豆浆机,里面都有嵌入式芯片,通过C语言来将人类的操作转化为机器语言,操作这些家用电器。
除此之外,学好了C语言,就是学到C在Linux里的应用,而Linux众所周知是一个非常稳定与强大的操作系统。
C语言具备很强的数据处理能力,在各类程序设计以及科研上都需要C语言,还能编写三维,二维图形和动画,甚至能够编写windows病毒。当然上面都是非常复杂的场景了,对于一些简单场景,C语言也能胜任,比如高并发聊天室,万年历等等,基本上作为一个底层语言,C语言能够做到大部分上层编程语言能做到的事情(比如JAVA,PYTHON,PHP等等)。
最后,C语言也能进行游戏设计,简单的游戏如几年前很火的2048,愤怒的小鸟,五子棋,扫雷,复杂的比如ucloud网易家的很多大型游戏,比如王者荣耀,逆水寒,国外公司的战地等等,运行这些游戏通常对底层有更高的要求,因此代码里通常也会有C语言存在。
总的来说,C语言是一门非常重要且基础的编程语言,能够实现你的大部分需求。
以上是我的浅见,如果有帮助,欢迎给我点赞留言。
我是苏苏思量,来自BAT的Java开发工程师,每日分享科技类见闻,欢迎关注我,与我共同进步。
近日,2019年4月份编程语言排行榜发布,如下图所示,由图中可以看出,C语言仅居Java之下,是使用率排名第二的编程语言。
C语言是很多计算机专业学习的第一门编程语言,之后就转学了Java/C#/C++,那C语言究竟能做什么呢?
其实很多非计算机专业的学生,如自动化、机械、信息等专业的学习也会学习C语言。
C语言在嵌入式上应用广泛。当前智能家居正火热,而智能家居属于嵌入式范畴,C语言在这一块应用广泛,不管是功能模块还是驱动(包括Android驱动),基本都是C语言实现(当然,现在Lua也能代替做一些东西,但整体上,C语言还是最主要的)。比如我曾经就写过一个智能指纹锁的几个功能,全是C语言。但嵌入式这一行有一定门槛,如果你不是相关专业并且没有很浓厚的兴趣,不建议入行。
Windows、Linux等操作系统大部分都是C语言写的,这个其他答案有提及,不再赘述。
那C语言为何能做这么多事?
我们知道,编程语言中,越低级的语言执行效率越高,机器语言(0和1组成)执行效率最高,其次是低级语言(汇编语言等),然后才是高级语言(C、C++、Java),其中低级语言是封装机器语言而来,高级语言又是封装低级语言而来,在这些封装的过程中虽然隐藏掉了很多细节,减少了开发难度,但执行效率其实是越来越低。
有趣的是,高级语言之间其实又有封装,比如C++是封装了C,Java是封装了C++,Python全是库,封装了更多。在这层关系中,C处于最底层,也就是说,在高级语言中C语言的执行效率相对较高。因此,即兼顾了可读性、又有执行效率的C语言自然应用广泛。
以上就是我对“C语言能干什么”这个问题的回答,我本人有较多的前端、后端、Linux服务器、微信小程序及嵌入式的开发经验,如还有什么问题,欢迎评论区提问或者邀请我回答。
学好了C语言,当然可以编写游戏和软件!
C语言是计算机的基础语言,学好C语言可以为其他语言打下很好的基础,可以看下这张图,C语言是系统层级的语言,在计算机体系中占据着不可替代的位置!
无论是Windows系统还是Linux系统,大部分操作系统代码都是C,Windows的API都是按照C语言的格式给的,这也很能说明问题!嵌入式开发更是离不了C语言!纵观电脑发展几十年,C语无所不能呀!
C语言还可以用来开发游戏服务器,3D游戏框架!
学好C语言还可以做黑客,这个不是搞笑,是真实存在的!
学了C语言能干什么?来看一张职业发展图,你就知道啦~~
那么,如何学习C语言呢?来看一下这个学习路线图,跟着学,总没错哦
0
回答10
回答10
回答1
回答0
回答10
回答7
回答6
回答0
回答1
回答