C语言可以用来做什么呢?

当然讨论也算热烈的,学过《计算机系统结构》的同学,应该都清楚,计算机在逻辑上分层设计的,底层只给上层提供接口,具体实现对上层透明;上层只知道底层做什么,但不知道怎么做。目的就是为了简化开发流程,同时也可以让开发人员专注自己这一层的业务,不要分心。

大家都是社会主义的建设者和接班人,只有分工不同,没有贵贱。每个人生来都是不同的,长相不同,天赋不同,智商也不同。我想说高智商的人士存在的,从硬件层到应用层样样精通,但是我智商不够,不论兴趣还是经验都已经扑在嵌入式行业13年了,其他层次的东西,太高了,真的上不去。

走入计算机行业的你,一定有适合你层次的工作,让你实现自我。

再说说我个人的一点感想吧。

有一个规律叫8020规律,就是说

解决80%的问题,只需要20%的知识,至少在嵌入式这一行,这个规律是可以说明问题的。

你只要有简单的C语言知识,给你一个搭个51的开发板,就可以让你做出一个闪烁的LED灯来,再通过串口发送一个“hello world”也不是难事。所以入门的门槛跟应用开发程序员的难度差不多。你可以解决80%的问题。

但是这80%的问题解决了,仅仅只是入门,做出来的东西基本只有观赏价值,没有应用价值。接下来你需要继续深入:再学习16%的知识,去解决16%的问题;再学习12.8%的知识,去解决3.2%的问题……

所以你会发现,哪些“经验丰富”的工程师,并不比你知识上多多少,能解决的问题也不比你多多少,但是人家就是比你牛,有些问题你两天搞不定,人家一上午就搞定。

做为一个03年开始学C,毕业后当了十年的C打字员的我,可以负责任的告诉你。

当硬件资源非常有限、而自己智商太低又理解不了汇编的时候,C机乎是唯一的选择。

当然如果只用C而不搞汇编,就好像聘礼下了、婚礼办了、衣服都脱了,最后却让隔壁老王上了婚床。

学习c语言能干什么(c语言可以用来做什么)(1)

计算机语言越来越高级、越来越接近自然语言,实现复杂功能所需的代码量越来越小,造成的结果就是,似乎计算机就是这个样子。

网络编程的时候,似乎打开socket,建立连接,收发数据,一切都那么自然,似乎世界本应如此,他不会去问:“数据链路层发生了什么?物理层发生了什么?云端无数的路由器、交换机发生了什么?”因为在网络层看来, 这一切都不存在,这一切都是透明的。

键盘上敲下一个字符,屏幕上就显示了,一切都那么理所当然,他不会去问:“键盘里发生了什么?ps2/usb接口上发生了什么?字库从哪里来?怎么送到VGA?显示器里又发生了什么?”在应用层看来,这一切都不存在,是透明的。

刚才又仔细看了一下问题,高级语言的出现,把很多复杂的操作以接口的形式出现。在很多高级语言中,简单到拖拖鼠标、调几个函数就能出来一个窗口。但这简单的背后是多少底层工程师的心血,这些心血的外在表现就是一个个封装好函数接口,操作一单封装成接口,对于调用人员来说,那些本来很复杂的操作就是透明的,他们不需要知道接口做了什么。他们不知道底层做了什么很正常,我们封装接口的目的,就是为了操作透明化,但不能就因此就觉得底层没用。

用C语言写东西,我得另外告诉你一个事实,有个黑色边框已经很炫酷了,更多的时候,连个黑边框都没有。大多数时候,没有设备,没有任何视觉输出,比如这样的设备:

学习c语言能干什么(c语言可以用来做什么)(2)

学习c语言能干什么(c语言可以用来做什么)(3)

这样的:

学习c语言能干什么(c语言可以用来做什么)(4)

还有可能是这样的:

学习c语言能干什么(c语言可以用来做什么)(5)

所以c语言汇编并不需要多高的智商,需要的只是对硬件结构和原理的熟悉,还有更好的记忆力。

,