C语言学习(五)学习C语言前你必须要明白的事情!

C语言究竟能做什么

  对于大部分初学者来说,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来。但如如果我们在学习了C语言的基本语法后,发现他只能开发出黑底白字的DOS程序,完全没有漂亮的界面和生动的交互。那么,C语言究竟能干嘛呢?

  其实,C语言本身是一门非常简单的语言,提供的实用功能不多,大多都要依靠操作系统、第三方库、单片机来完成。也就是说,只学习C语言,什么都做不了。

  C语言是一门通用型语言,并没有针对某个领域进行优化。在实际项目中,C语言主要用于比较底层的开发,比如:

  • Windows、Linux、Unix 等操作系统的内核90%以上都使用C语言开发
  • 开发硬件驱动,让硬件和操作系统连接起来,这样用户才能使用硬件、程序员才能控制硬件;
  • 单片机和嵌入式属于软硬件的结合,有很多使用C语言的地方;
  • 开发系统组件或服务,用于支撑上层应用;
  • 编写PHP扩展,增强PHP的功能;
  • 如果对软件某个模块(例如算法和搜索部分)的效率要求较高,也可以使用C语言来开发。

  C语言应用有这么多,那为什么初学者觉得C语言没用呢?

  首先,我们先说说一个概念,就是库(Library)。库就是编程专家已经写好的代码,可以直接拿来为我们所用。这样能够节省开发成本,提高开发效率。并且库代码的执行效率、严谨性、安全性、规范性明显好于我们自己编写的代码(当然,如果你足够牛逼,就当我没说)。市场上有很多优秀的库,有些免费,有些收费,我们要尽量利用好这些库,尽量不要重复造轮子。

  库一般分为两种:

  • 标准库(Standard Library)。编程语言的开发者在开发编程语言的时候,一般会预先写好常用的的代码,或者说是常用功能。比如,输入输出、数学计算、文件操作、网络操作、日期时间、错误处理、字符串处理等。这些由官方编写的库,称为标准库。他们随编程语言一起发布,可以说是编程语言的一部分。
  • 第三方库(Third-party Library)。有些组织、个人也会开发一些库,有些是为了盈利,有些是业余爱好,有的是本公司正在使用的代码,开源出来造福人类,这些库称为第三方库。

  第三方库不是由官方开发,没有质量把控,良莠不齐,但是也有相当一部分优秀的库已经得到大家认可,用在公司的项目中,这些库能够和标准库相媲美。

  标准库是我们在学习编程语言的过程中必须要学习的,例如C语言的输入输出、文件操作、日期时间、字符串处理、内存管理等都是标准库提供的功能,它们并不是C语言语法的内容。

  如果一门编程语言的标准库足够强大,初学者经过简单学习后就能开发出实用的项目。例如Java,它的标准库包含了GUI(图形界面)、图形处理、网络通信、网络服务器、HTML解析、HTTP协议、多线程、多进程、正则表达式、压缩文件、加密解密、数据校验、音频视频处理、数据库操作、XML操作等常用功能,初学者学了以后立马就能够开发网站、开发PC软件,感觉很实用,也感觉学到了东西。Python、C#、VB、PHP、JavaScript、Ruby 等都是非常实用的语言,学了就能做出东西来。

  反观C语言,他的标准库只有输入输出、日期时间、数学计算、文件操作等基本功能,都是在黑黑的控制台下进行的。跟网站、APP、PC软件八竿子打不着。所以,初学者会觉得学习C语言没用。

  那么,C语言到底能不能开发网站、APP、PC软件呢?

  C语言的标准库当然是不能做这些的,就得依靠第三方库了。不过遗憾的是,C语言的第三方库大多也是底层库,支持应用开发的寥寥无几。只有一个GTK库能开发出PC软件来,而没有能支持APP、网站开发的库。

  而GTK库在PC软件开发中也很少用了,PC软件开发已经是 C++、C#、VB、Java、Delphi 的天下了。换句话说,开发PC软件几乎已经不用C语言了,而是使用C++、C#、VB、Java、Delphi等其他语言。

  记住,C语言几乎不用来做软件、APP、网站等应用层开发,其他编程语言能更好的完成任务,没必要非得用C语言。C语言基本都是用来做底层开发,也就是那些看不见、摸不着的,在后台默默提供服务的那些服务。而这样的项目对初学者基本没有实用价值,初学者也不知道该怎么用。

  初学者想要的C语言没有,C语言能做的初学者用不到,这种矛盾导致初学者非常迷茫。

  有人可能会问,C语言不是还能用来开发嵌入式或者单片机吗?是的,没错。但是这个方向是软硬件结合的,不是在我们的电脑上进行开发,而是在特殊的开发板上进行开发。并且还需要学习数字电路、模拟电路、汇编、ARM、Linux 等方面的知识,只学C语言也没有用武之地。

  如果你觉得学习C语言没用,那么恭喜你, 你是对的。一般的应用层开发还真用不上他。

  但是,没用也要学。学习C语言并不一定是要应用他,C语言可以夯实你的基础。尤其是数据结构、算法、内存、线程、进程、通信、操作系统等计算机底层知识,没有C语言的基础是学不好的。

  这些底层知识并不一定能直接应用在实际开发中,但是他们会让你有底气,会让你透彻的理解编程观念,会让你站的“低”看得远,让你避免很多低级错误,会让你心中有“架构师”的思维。

  不学C语言是码农,学了C语言是程序员。

初学者必须从C语言开始吗?

  最好从C语言开始,然后学习数据结构、算法、内存、线程、进程、通信、操作系统等基本概念。他们是学习编程的基础,无论是应用层开发还是底层开发,这些都是必须的。
如果你非要跳过C语言,从其他语言开发,比如C#、Java、Python、PHP等,也不是不可以。但是,在学习的过程中,会有种雾里看花,空中楼阁的感觉,很多东西只会用,但是理解不了、深入不了,原因是没有计算机基础,没学会走就想跑了,这时候还得老老实实回来学习C语言。

如何学习底层知识?

  关于数据结构、算法、内存、线程、进程、通信、操作系统等基础知识,重要的是理解概念,知道计算机是怎么一回事,千万不要深入细节,把自己绕进去,耽误一两年功夫。要尽快跳出来,做应用层的开发,找到兴趣点,获得成就感。

  这个时候,C语言的作用主要是让你入门了,了解编程语言的基本语法,强化编程思维,学习计算机底层知识,为以后的职业生涯打下坚实的基础,而不是用来做实际开发。

  在实际开发中,遇到问题了,或者哪里理解不透彻了,再来回顾这些底层知识,这时就可以深入细节了。因为有了实际的开发经验,再学习底层知识就知道哪里是重点了,不会像无头苍蝇一样乱飞,什么都学。

C语言为什么没有应用层开发的库?

  C语言是一门“古老”的语言了,他只支持面向过程编程,不支持面向对象编程和泛型编程。在中大型应用层项目开发中,C语言显得就捉襟见肘了,C++、Python、Java、C#等其他编程语言能够更好胜任。为C语言开发应用层库简直是费力不讨好,所以几乎没人愿意这么做。
GTK算是一个应用层的库,但他也比较老了,新版的GTK+已经支持C++了,不再仅仅支持C语言了。
我们先不管面向过程、面向对象、泛型这些晦涩的编程概念,简单地理解就是,C语言支持的特性少,用起来费劲,开发效率低,而 C++、Java、Python、C# 等支持的特性多,用起来方便,开发效率高。

  C语言的优势就是运行效率高,这正是底层开发所看重的。底层开发有时候就是一个模块,或者是一个服务,规模不算大,但是对效率有严格的要求,此时用C语言就非常合适,所以针对底层开发的C语言库较多,因为它们有非常大的实用价值。

  至于更多需要了解的,请继续阅读C语言学习(六)学习C语言前你要了解的知识!包括编译、IDE、C语言的标准等

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JayerZhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值