对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来。但是学了C语言的基本语法后,发现只能开发“黑底白字”的DOS程序,完全没有漂亮的界面和生动的交互。于是学数据结构,学算法,学操作系统,越陷越深,越来越难,最后迷茫了,不知道学C语言能做什么,认为学习编程很难,开始怀疑自己,甚至想放弃。

其实,这是很多初学者都会踩到的一个坑!C语言本身是一门很简单的语言,提供的实用功能不多,大部分要借助操作系统、第三方库、单片机来完成。也就是说,只学C语言基本什么也做不了,也基本找不到工作。

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

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

既然C语言的应用这么多,为什么很多读者觉得它什么也做不了呢?

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

库一般分为两种:

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

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

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

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

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

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

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语言,从其他语言开始,比如 Java、Python、PHP、JavaScript、C# 等,也不是不可以;但是,在学习的过程中你会有一种雾里看花、空中楼阁的感觉,很多东西只会用,却理解不了,深入不了,原因就是没有计算机基础,没学会走就想跑了,这个时候,还得老老实实回来学习C语言。


如何学习底层知识


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

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

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


【拓展】C语言为什么没有应用层开发的库


C语言是一门“古老”的语言了,它只支持面向过程编程,不支持面向对象编程和泛型编程,在中大型的应用层项目开发中,C语言已经显得捉襟见肘了,C++、Java、Python、C# 等其他编程语言能够更好地胜任,为C语言开发应用层的库简直是费力不讨好,所以几乎没人这么做。

GTK 算是一个应用层的库,但是它也比较老了,新版的 GTK+ 已经支持 C++ 了,不再仅仅支持C语言了。

我们先不管面向过程、面向对象、泛型这些晦涩的编程概念,简单地理解就是,C语言支持的特性少,用起来费劲,开发效率低,而 C++、Java、Python、C# 等支持的特性多,用起来方便,开发效率高。

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

最后,想学习编程的小伙伴们可以关注+转发+私信回复:“资料”就可以拿到一份我为大家准备的编程学习资料!

C语言

注:加.群要求

1、零基础,目前遇到困难不知从何下手可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、基础非常扎实,但对目前主流技术欠缺,需要突破技术瓶颈的可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.企业一线C/C++高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?不可能的...相关推荐

  1. c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?错!大错特错!!!...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  2. c语言输出数字漏斗图形_入门c语言必刷的五道题

    学编程最重要的就是刷题,只有刷到一定的量,才会有质的变化. 如果是刚入门的c语言,那么一定要从这些题入门 1.问题 1001: [编程入门]第一个HelloWorld程序! 即使一个简单的程序,里面也 ...

  3. c语言输出数字漏斗图形_2019级C语言大作业 - 十步万度

    分享19级同学大一上学期用C语言实现的十步万度,可从码云下载: 期末作业/十步万度​gitee.com C语言大作业 - 十步万度https://www.zhihu.com/video/1215683 ...

  4. c++语言表白超炫图形_教你用C语言加图形库打造炫酷表白连连看

    图1 今天小编用简单的C语言知识写一个连连看的游戏,但是是有含义的哈,游戏玩完之后又是属于一个表白程序,也感觉不错的哦. 下面小编把全部的代码发出来一下,以及效果图发一下,最终的话把涉及的知识点也讲解 ...

  5. c语言输出方框□怎么回事_值得收藏的 C语言指针讲解文章,确实不错!

    来源 :https://zlc.im/language/c/c_and_pointer.md#%E6%8C%87%E9%92%88 指针 本文介绍C语言的指针相关知识. 指针是什么? 指针和其他的in ...

  6. 语言防止鼠标连点_全球化设计系列 | 多语言设计的“小锦囊”

    hello,又见面了-在上一篇文章中,我们提到了国际化产品大致可分为两种:一是根据不同国家/地区分别设计不同的信息架构和用户界面:二是出于成本考虑用相同的架构和设计做不同语言的适配.(文章还探讨了关于 ...

  7. c语言输出数字菱形北京理工大学,C语言程序的设计—北京理工大学MOOC提交作业.docx...

    第一周作业 [练习 11 HelloWorld 成绩 0 开启时间 2014年10月21日星期二08:00 折扣 0.8 折扣时间 2014年12月7 E1星期日23:55 允许迟交 否 关闭时间 2 ...

  8. c语言求数列的和_例15:C语言求Fibonacci数列的前30个数

    例15:求Fibonacci数列的前30个数.这个数列有以下特点:第1,2两个数为1,1,.从第三个数开始,该数是其前两个数之和.(斐波那契不死神兔) 解题思路:从前两个月的兔子数可以推出第3个月的兔 ...

  9. php语言能开发app吗_怎么利用PHP框架语言开发手机app?

    原标题:怎么利用PHP框架语言开发手机app? 一般的PHP框架都可以用来做app后台服务器.因为原理上客户端从你这边拿的都是字符串数据,所以就算你不用框架也没有问题,不过会引发后续的问题.PHP提供 ...

最新文章

  1. AD域中NTP服务器的配置
  2. 日期类型存储成字符串类型的格式问题
  3. (管道| / 重定向 / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
  4. JVM:gc什么时候开始?System.gc()能保证gc一定发生吗?
  5. python练习题:使用循环和函数实现一个摇骰子小游戏
  6. 程序员谈薪技巧公开,这样谈比预期高30%
  7. string match
  8. 1285. 单词 ac自动机 + fail树
  9. MySQL的set names命令详解
  10. LwIP之网络技术基础
  11. Linux 命令 find / -ctime +1 真的是查找1天前创建的文件咩?
  12. IntelliJ IDEA 设置主题背景
  13. python 概率分布_Python中的联合概率分布
  14. wav怎么转换成mp3?步骤详细介绍
  15. Windows11下Edge浏览器登录工行农行并使用K宝U盾
  16. 哔哩哔哩谷歌浏览器助手Mac版分享来了
  17. MyBatisPlus之逻辑删除
  18. 解决@Override错误
  19. 抖音小程序模板全行业整理合集,抖音小程序制作平台分享
  20. Android手机游戏大全apk

热门文章

  1. 深入理解 Dubbo 原理
  2. php多维数组添加元素,PHP中如何将元素添加到多维数组
  3. ndk开发(一)环境搭建
  4. memcpy和memmove
  5. k3刷梅林5g信号不稳定_华硕AC86U路由器最佳设置(解决5G信号断流和米家设备掉线的问题)...
  6. Ubuntu12.10 下安装搜狗输入法、Google拼音、双拼、五笔输入法
  7. 手机抓包工具--stream的安装与应用
  8. html 页面地图不显示图片,嵌入谷歌地图不显示在HTML页面
  9. 一文教会你何为重绘、回流?
  10. npm run 是什么?为什么使用npm run 这一命令,就能够将 webpack 跑起来并进行下一步的操作?