想做一个合格的C语言程序员,从这篇文章开始
软件行业发展趋势十分快,大学的教育基本都跟上实际的社会发展需求。如果你所属的大学还在指定大家采用谭浩强的教科书,或采用VC6.0来教大家上机实验,那你不妨看一看这篇文章,在这里有一点建议可以帮助你不会脱离社会过远。
充分考虑这是1个过来人觉得很基础,并且对于新手又感觉困难重重的难题,我想要是这本文要想写得不让你认为专业名词扎堆,內容高深莫测,读过还是不知所云,那有效的方法或许是,让我们通过沟通交流的形式把整个「c语言应当怎样学」的问題由小及大的展开,慢慢来谈。
在开始之前,让我们先来做1个小测试。
一、小测试,你做好准备好學習c语言了吗?
- 你可否听说过二进制数,他们是怎么实现运算的?(基本的数的进制专业知识)
- 你可以讲出1个最小的操作系统由哪几个部分组成吗?(基本的电脑构造小知识)
- 电脑是怎么存放图像的? (数字化工作原理)
上边这3个问題,能作答的同学举手。如果你举手了,那麼让我们进到下环节的探讨,要不然,我将对你说,你现在最重要的事情,是赶快找一本《计算机科学导论》把预备专业知识填补好。
因为——
c语言归根结底是一门以内存为中心的计算机语言,你能否学懂它,我觉得很大层度上并不是取决于你智力高低,而是你是否具有扎实的电脑构造、储存、与运算工作原理这方面的专业知识!!
在这,我想要特别强调,一切新专业知识的學習全部都是有一定的前提的。c语言學習的前提就是,对操作系统要有个整体的,科学的基本认知。 脱离了这个基本认知,任何都很艰难。
因此,一些同学学不会c语言,并不是因为他们智力不好,只是因为他们都没有准备好。
我花时间写这一篇文章来给大家讲c语言的学习,当然是期望大家真正的学好、学懂c语言,并能够真的感覺到它的作用,因此抱歉我不想像培训学校那般,对你说“零基础”就可以开始学。但如果你确实按照我说的去做,那么至少从现在起,你确实是开始有点“学院派”的认真了。
在这一篇文章的末尾,我推荐了一本曾经读过的《计算机科学导论》。这一本书可以说是我的启蒙书,我读过,真心实意认为好,所以强烈推荐给需要的同学。
好啦,接着让我们进到c语言的學習过程。
二、学c语言究竟学些什么东西—— 「语法」和「函数库」
c语言學習的核心,是要先搞搞清楚,学c语言究竟是在学些什么?
我如此一问,有的同学就要翻开教科书,指着目录说,我知道我知道,有变量,数据类型,循环语句,函数,哦哦哦,还有指针等等!
很遗憾,如果你觉得學習c语言就是學習这些東西,那你得马上改正一下看法,要不然接下去的学习会困难重重。因为曾经的我就是这样掉到坑里的,这种狭隘的思想观点让我浪费了很多的时间去學習琐碎的细节,又让我迟迟没法触及到更重要的专业知识,結果是眼高手低——知晓很多其他人不知道的没用专业知识,可是又写出不来什么真正像样的软件程序来。
说白了「语法」,就是新手入门教科书里最主要解读的內容。也就是那些所谓的变量、数据类型、分支判断、循环、函数、指针等等。
这些內容比效枯燥乏味,只是好消息是这些內容并不难,全部都是一些格式化的东西。如果你多练习,就会自动的刻在你的脑中,变为某种无意识的习惯。
可是 「语法」自身其实没有什么用。是因为它就是一种格式规范,你学得再好,也不可以正确引导你写出厉害的软件程序。因为在编程设计中,事实上最关键的一部分还是在于其 「函数库」部分。
什么是 「函数库」?
简单来说,函数库就是别人编写好的C函数,直接提供给你用,你只要调用里面的函数,就能实现一定的功能。例如 printf() 函数,你肯定知道,只要调用这个函数,你就能够在那个黑糊糊的窗口里显示一段文字。你并不明白 printf() 的内部工作原理,但是你知道你只要按照说明去调用,就能够实现对应的功能。
这就是函数库——别人写好的,打包送到你面前,你可以自由调用来做各种各样的事情的函数集合。
我来说几个来自函数库的函数,例如 CreateWindowEx() 函数可以用来创建一个窗体(这个函数由微软提供),例如 GaussianBlur() 函数可以用来对一个图像进行高斯模糊处理(这个函数由 OpenCV 提供),再比如 e链接 函数可以创建一个 HTTP 服务程序(这个函数由 libevent 提供)……
学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习C/C++或者有兴趣学习C/C++的伙伴可以加小编自己的学习群773649038,一起学习,一起进步,还有免费学习资料可以给各位伙伴
其他还有什么库函数?太多了。从控制网络通信,到截取视频画面并分析其中的人脸位置,到加解密本地文件,甚至包括微信收发消息,抓取淘宝商品信息……库函数的数量和有用程度远远超乎大家的想象。
诶?你从来没听说过还有这些东西?课本里也没提到?
那是因为你看的是入门教材,着重讲解语法,顺带提到了少量的 C 语言自带的库函数而已。事实上 C 语言包含的库函数本身就有不少,但是更多更强大的还是许多第三方库函数,例如我上面提到的这些。
重点是在于,我想告诉你,库函数才是你学习C语言并将其应用于实际的关键!!
学会调用别人的库函数,甚至写出自己的库函数,都是极其重要的。因为一个函数,本质上就是一个功能单位。你拥有的基础设施越多,你的发挥空间越大。道理就是这么简单。这就是我需要向大家强调的第二个观点,要想写出实用的C程序,一大关键就是研究并学会使用各种库函数。
你看见隔壁王二写了个三维程序能让一个彩色的立方体在空中旋转?快找 OpenGL 库函数来用。什么?刘大宝写了个网络软件能在局域网里聊天?快找 Socket 库来用。
看见了吗?库函数有多重要?
但是,函数库的学习并不是孤立的。许多库函数背后需要一定的领域知识支撑。同样如我第一个观点所述,需要预备知识。学懂一个函数库,代表的不仅仅是明白如何调用那么简单, 而更反映了我们对一个特定领域——网络、数字图像、密码学、操作系统等的认识。
三、基本的学习过程与一般规律
如我前面所述,C语言学习主要是以语法入门,然后到函数库。再具体一些来说,包括以下阶段:
- 学习基础语法
- 学习简单的少数几个C语言自带的函数
- 学习一些程序设计的基础知识(数据结构,算法)
- 学习更多更强大的C语言自带的函数
- 学习一些特定应用领域的基本理论知识(操作系统,数据库,网络,图像……)
- 应用上一阶段学习的到知识进一步学习其他人提供的函数库(网络处理、操作系统管理、图像、密码学等等)
对于本科阶段的同学来说,着重学好1-4,有选择的学习一下5-6,做一些小作品出来,就已经非常非常不错了。这就是一般的学习规律。说得很简短,但是要做到真的很不容易。
四、书籍推荐
基础(C语言入门,初学,编程基础)
- 《C语言程序设计:现代方法》(第2版)(C Programming: A Modern Approach, 2nd Edition, K.N.King)
- 《深入理解计算机系统》(修订版或第2版)(Computer Systems: A Programmer's Perspective, Randal E. Bryant et al),阅读建议
- 《C语言程序设计》(第2版)(The C Programming Language, Brian W. Kernighan & Dennis M. Ritchie)
- 《程序员修炼之道》(The Pragmatic Programmer: From Journeyman to master, Andy Hunt & Dave Thomas)
-
内核/驱动
- 《Linux内核设计与实现》(第3版)(Linux Kernel Development, 3rd Edition, Robert Love)
- 《Linux设备驱动程序》(第3版)(Linux Device Driver, 3rd Edition, Jonathan Corbet et al)
- 《深入Linux内核架构》(Professional Linux Kernel Architecture, Wolfgang Mauerer)
应用
- 《UNIX环境高级编程》(Advanced Programming in the UNIX Environment, W. Richard Stevens)
- 《UNIX网络编程》(Unix Network Programming, W. Richard Stevens)
-
进阶
- 《C陷阱与缺陷》(C Traps and Pitfalls, Andrew Koenig)
- 《C专家编程》(Expert C Programming, Peter van der Linden)
- 《ARM嵌入式系统开发:软件设计与优化》(ARM System Developer's Guide: Designing and Optimizing System Software, Andrew Sloss et al)
-
如有侵权,请联系删除
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用scrapy抓取股票代码
个人博客:https://mypython.me 源码地址:https://github.com/geeeeeeeek/scrapy_stock 抓取工具:scrapy scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取)所设计的, 也可以应用在获取API所返回的数据(例如Amazon Associates Web Services) 或者通用的网络爬虫。 安装scrapy pip install Scrapy 抓取步骤 选择一个网站 --> 定义数据 --> 编写spider 首先使用scrapy创建一个项目 scrapy startproject tutorial 选择一个网站 这里我们选择的是东方财富网的股票代码页面:http://quote.eastmoney.com/stocklist.html 定义要抓取的数据 我们需要抓取股票的代码id,因此只需要定义stock_id class StockItem(scrapy.It...
- 下一篇
为什么大多数程序员都会学C语言的5大原因!什么原因让你学不会?
一、c语言,不朽的传奇 从30年前到如今,一些流行的科技媒体上发表的编程语言排行榜,c语言始终稳定位于前三位,这是其他一种其他的编程语言都达不到的。c语言的江湖地位,不容撼动。虽历史悠久,却也是不朽的传奇。 二、c语言,程序编程的基础 c语言是计算机程序語言的基础,是实用的程序设计工具。JAVA、c++等其他語言许多都是由c语言扩充或衍化而出的。基本上全部的高级语言都是以c语言为基础的(像JAVA,c++,C#等等)。学好c语言对你以后学习都可以打下充分的基础。就算你以后想要从事别的的编程语言,带着扎实的c语言基本功也会让你很满意。 三、c语言,编程的思维和精髓 但当你不了解C,几乎就没办法掌握程序设计的思维,因为想真正学好程序设计就不可能不跟数据结构打交道,而新手要是直接从VB或Java下手,通常没办法了解怎样构造数组、链表、树、图等结构,这些東西很容易和封装、继承等概念打架。而用c语言则可以清晰明白地把他们表达出来。也只有真的掌握了数据结构,才有机会感受程序设计的思维和算法的精髓。 四、c语言,操作系统和底层 c语言是编写底层驱动程序和操作系统的唯一之选,并且有许多影响悠远的软件和...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- CentOS关闭SELinux安全模块
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Linux系统CentOS6、CentOS7手动修改IP地址
- Red5直播服务器,属于Java语言的直播服务器