C语言做为一门较低层的语言,有着她独有的特色程序员
##简约而不简单的C语言 C的历史很悠久了,就语言自己而言虽然简单,但在低层应用中有着重要的地位。shell
从当前来看她是不会没落的,由于操做系统须要她,而一切的一切的应用都是创建在操做系统之上的。还有就是编译器也须要她,绝大部分驱动程序也须要她。缘由就一个——快,比起其它编译型语言,她速度快了太多。特别是算术与位操做,只须要进过一次汇编解释,就能够直接操做寄存器和各个总线之类的。数据库
说她简约,是由于C语言的关键字是不多的,语法也很简单,内置的数据结构就更少了,除了能模拟数组,其它的好比链表,栈等数据结构是须要本身实现的。因此入门她是快的,稍稍了解语法、一个gcc、一个文本编辑器就算知识准备好了,环境也搭建好了,能够开始玩了。小程序
C语言是强数据类型的(编译型的)面向过程的语言,确定不适合作Web先后端的开发啦,这样会开发成本高和开发周期长的重大弊端。虽然她很快,可是就界面交互和普通业务逻辑,她快过头了,不必。并且这些开发基本都是面向对象的,用C作面向对象不是不能够,是成本过高,你得请一帮牛逼的人,而不是像我这种仅搞过一两年技术的小菜鸟,或者刚毕业的大菜鸟。 ##尴尬而又苦逼的C语言 在你没有成为一个牛逼的人以前,用C做为本身的主打开发语言是很苦逼与尴尬的。后端
在当下Java、PHP、JS等语言在移动端和服务器端开发占领了太多份额,以及以这些语言为主的程序员更是多如牛毛的状况下,应用层的开发还真没有C语言什么事。从我从数据库转开发历时2年半以来,工做也换了3份,每次换工做投简历都很痛苦,不多能找到本身的位置。由于我只会SQL和C,还有就是一点shell脚本语言,因此好工做很差找,高工资的工做更很差找〜〜〜数组
固然C语言仍是有行业用得较多的,那就是金融行业。可是有个弊端,那就是由于这个行业没票子确定搞不起来,因此提供这样岗位的都是清一色的外包公司,你懂滴〜〜〜。除非你很强力,或者一点经验都没有想混点经验值,不然每天都是和业务打交道,写的代码都是很简单的流水式的(就是if...else...
外加switch(x){case...}
),基本接触不到其它的。由于你所用的库都是牛逼的人被封装好了的,你就写业务逻辑好了。全部真不太适合想要提升我的能力的人干过久。bash
##怎么学习C语言 仅仅掌握语言自己的知识,确定是玩不转的。那样真真正正的只算业余爱好,是不能拿来工做的。不只是C语言,就算是Java这样的高级语言,都是须要了解部分操做系统的,更况且像C这么低层的语言了。因此在简简单单掌握了C语法知识后,就须要了解操做系统层面的知识,最基础的确定就是系统调用,也就是学会怎么和内核交互,写出实用高效的小程序。为什么说是小程序呢?由于C语言自己的特色,要写出像Nginx这样庞大的程序,一我的是很难操做的,并且开发周期也很长,维护起来也很难。其实在我看来这有违背高效简单的原则。什么样的程序最适合C?打开你的Linux终端,而后敲入ls -l /usr/bin
后回车,所列出来的程序就是最最适合C的。功能简单明确,后期也不须要怎么改变,速度要求高,最重要的一点要能够很好的与其它独立程序交互,好比ls -l /usr/bin|grep bash
,这样的程序就是C最擅长的,也是所谓的——KISS原则——Keep It Simple, Stupid。虽然把功能都分散开,就像之前的人们现代化生活,手表、音乐播放器、非智能手机、照相机,出门带一堆,如今只须要功能都有的智能手机就行了。C程序为什么不像智能手机这样作呢?要用看上去很蠢开发模式呢?由于这种“蠢”作法能够很高效的拼凑出想要的功能,好比ls -l|wc -l
就能够立马知道当前目录下有多少文件,没必要专门的开发一个程序来干这件事,只须要像吗积木同样组合一下程序就能够获得新的功能了。服务器
##后续我会写些什么文章? 后续我会在假设你已了解C语言语法的基础上写一些主方法论的随笔,一块儿探讨该如何用C语言模式思考,渐进试的改进一个简单实用的程序,让她变得实用而非像C等级考试同样教条。数据结构
以上仅仅是我的观点,不喜勿喷啊,谢谢。编辑器