作为高级编程语言中的一门“低级”语言,C语言总是不那么招人待见。有人会罗列出C语言的一系列缺点,来作为拒绝接触他的理由。比如最常见的:我的工作中用不着C语言。
确实如此,在互联网飞速发展的当今,即使在大公司,很多职位的程序员,都用不着C语言了,许多小创业公司,可能整个公司都不需要。各式各样的高级语言,脚本语言都可就付。然而,如果你想更了解自己写的程序,想进一步知道程序在计算机如何运行,就有必要了解一下C语言(当然啦,计算机的基础学科很多,本文我们只讨论程序语言)。
下面我们就来罗列一下学习C语言的好处。
第一,学习C语言能让你更了解你正在使用的其它高级语言或脚本语言。
首先编程语言的思想都是相通的,像循环、跳转、控制流等,各语言基本上都是类似。其次,最重要的是,很多高级语言或脚本语言,底层本身就是用C语言实现的,跟C语言有着千丝万缕的关系。如果我们想了解各语言的更底层实现,就必须得有C语言的基础。比如如果你是一个PHP工程师,总不能搞了十年PHP还没看过PHP源码吧!
第二、学习C语言能帮助我们学习其它开源模块。
看开源代码是程序员进阶的一个很好途径,而很多开源的软件,都是用C语言实现的。Linux/Unix系统都是用C语言实现的。如果你想了解计算机更基础的技术,比如操作系统、多进程/多线程、进程通信、网络编程等,不懂C语言是寸步难行。
第三、学习C语言是学习其它语言的基础。
这条我认为是最重要也最实在的,即使是刚接触编程的同学,我也建议从C语言开始入门。
首先,C语言是最接近汇编的高级语言,原知原味。C语言教程中比较基础的几章——变量、条件判断、循环、控制流、函数是程序语言的基础,不管其它语言怎么变,思想都跟C语言类似。
而数组、结构体、指针这些稍难的章节,也是阻碍很多同学进一步学习C语言的障碍,指针也是C语言最令人诟病的东西。然后,这些基础确是帮助我们理解其它面向对象编程语言的基石。
如果你还刚接触编程,还要考虑用哪一门编程语言入门,请不要犹豫,选择C语言吧!学习的过程肯定会比其它语言艰难,但等你哪天再回头想想,绝对是正确的选择。刚上大一时,当时完全是零基础,自学C语言,教程前三章,反反复复看了三遍,才有了一点点感觉,才写出“hello, world”。万事开头难。如果你已经是一个合格的程序员,但还没有正正经经学过C语言,我也建议重新再学习一遍,定有所获
原文标题:程序员为什么一定要学习C语言?
文章出处:【微信号:xx-cyy,微信公众号:C语言编程基础】欢迎添加关注!文章转载请注明出处。
收藏
人收藏
扫一扫,分享给好友
复制链接分享
评论
发布评论请先 登录
相关推荐
第一个C语言编译器的来源
不知道你有没有想过,某种编程语言的第一个编译器是怎么来的呢?这不就是“鸡生蛋,蛋生鸡”的问题吗?
嵌入式ARM 发表于 03-12 12:36 •
539次
阅读
详解C语言中的短路现象
C语言一经出现,就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语....
嵌入式ARM 发表于 03-12 12:23 •
471次
阅读
如何快速学习并精通C语言
学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文....
嵌入式ARM 发表于 03-12 11:59 •
302次
阅读
编写一个简单的C51程序
对于嵌入式系统,如果没有运行RTOS,那么程序开发中的 主函数(main())需要通过某种机制使其永....
嵌入式ARM 发表于 03-12 11:17 •
267次
阅读
C语言操作寄存器的常见手法
使用C语言对寄存器赋值时,常常需要用到C语言的位操作方法。把寄存器某位清零 假设a代表寄存器,....
硬件攻城狮 发表于 03-12 09:06 •
107次
阅读
为什么嵌入式开发要选择C语言?
简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和C语言汇编属于低级语言....
硬件攻城狮 发表于 03-11 10:21 •
107次
阅读
C语言有哪些语法技巧和功能
C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非....
strongerHuang 发表于 03-10 17:42 •
730次
阅读
c语言嵌入式编程
比较详尽的嵌入式C语言解答和分析
发表于 03-10 14:53 •
37次
阅读
使用GoRK3288库的时候需要用到的语法有哪些呢
使用GoRK3288库的时候需要用到的语法有哪些呢?...
发表于 03-10 06:49 •
149次
阅读
C语言简单模拟委托与简单模拟反射
函数是C语言的核心概念。主调函数(caller)调用被调函数(callee)是一般的调用关系,如果被....
硬件攻城狮 发表于 03-09 17:17 •
1463次
阅读
C语言中内存四区模型的本质区别和代码分析
●数据类型可理解为创建变量的模具:是固定内存大小的别名。
嵌入式ARM 发表于 03-09 14:45 •
190次
阅读
采用FMDft61t133芯片点亮LED的代码
由于目前本人零时朝8bit单片机方向走所以其内容接下来也是8bit单片机。
互联网电子设计 发表于 03-09 09:19 •
1501次
阅读
如何调试TAS5805?
如何调试TAS5805?
发表于 03-09 06:38 •
49次
阅读
如何通过驱动的方式点亮LED灯?
如何通过驱动的方式点亮LED灯?
发表于 03-09 06:34 •
48次
阅读
YL-236指导书C语言版
YL-236指导书C语言版,方便大赛训练时使用。
发表于 03-07 15:47 •
7次
阅读
分享一些单片机基础入门级的知识
很多在校的大学生或者在岗位想加深自己职业技能的人,都想通过学习单片机来补充自己,以便与不被社会淘汰,....
发表于 03-07 14:18 •
57次
阅读
Bootrom loader的启动流程是怎样的
Bootrom loader是什么意思呢?
Bootrom loader的启动流程是怎样的?
...
发表于 03-07 07:43 •
168次
阅读
Linux的2种显示方案它们有什么区别呢
Linux的2种显示方案它们有什么区别呢?
发表于 03-07 06:42 •
120次
阅读
RK3399如何启动shell脚本?
RK3399如何启动shell脚本?
发表于 03-04 06:04 •
123次
阅读
单片机存储器的入门知识分享
特殊功能寄存器的概念理解清楚了,单片机的编程就不难了,整个的单片机的存储空间的一个结构图,这也就是我....
发表于 03-03 10:40 •
40次
阅读
C语言中枚举精讲分析
在使用带有数字性质的名称时有的时候需要用到枚举的方式进行定义函数名字,按照对应的数字格式来....
嵌入式应用开发 发表于 03-02 10:58 •
1717次
阅读
怎样去编写RTC实时驱动的代码呢
实时时钟是什么?
怎样去编写RTC实时驱动的代码呢?
...
发表于 03-02 09:50 •
169次
阅读
比较嵌入式与互联网的异同点
进入这家公司也快两年了,说长不长,说短不短。这两年真正从嵌入式行业转入互联网,从自己亲身经历来看,虽说同属IT行业,一样...
发表于 03-02 07:26 •
542次
阅读
嵌入式的底层软件设计如何去实现呢
在实际的项目开发中,项目往往是并行开发的,也就是说硬件设计,底层软件设计,应用软件设计是同步进行的。比如说在开发板上调试...
发表于 03-02 06:30 •
89次
阅读
关于系统应用core dump的分析
解决段错误,系统应用core dump的分析 这个错误在单片机上往往以hardfault的错误出现,分析思路都是分析堆栈的位置;单片机的编译...
发表于 03-02 06:10 •
109次
阅读
大小端定义与应用场景及C语言中大小端的实现
大端模式:数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中;
嵌入式应用开发 发表于 02-28 08:52 •
218次
阅读
arduino开发实战指南
arduino开发实战指南
发表于 02-22 14:56 •
55次
阅读
《c#高级编程》第六版pdf
c#入门经典第五版由清华大学出版社出版,全面介绍C#编程的基础知识,从该语言本身一直到windows....
发表于 02-21 14:25 •
39次
阅读
一文详细了解单片机的大小端模式
咱们中文中常常提到的大小端的英文名字为“endianness”,英文直译的意思是“字节序”,是内....
硬件攻城狮 发表于 02-16 17:44 •
573次
阅读
为什么要用C语言实现面向对象
不知道有多少人去了解过语言的发展史,早期C语言的语法功能其实比较简单。随着应用需求和场景的变化,....
硬件攻城狮 发表于 02-16 16:19 •
373次
阅读
STC8G/STC8H系列MCU的C语言封装库下载
FwLib_STC8 是面向 STC8G/STC8H 系列 MCU 的C语言封装库
发表于 02-15 15:05 •
88次
阅读
一文详细了解五种IO模型
五种IO模型包括:阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO。
硬件攻城狮 发表于 02-14 14:38 •
484次
阅读
C语言常见内存错误及解决方法
本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内。内存错误是 C 和 ....
硬件攻城狮 发表于 02-14 13:10 •
429次
阅读
《C陷阱与缺陷》pdf
《C陷阱与缺陷》pdf
发表于 02-14 11:02 •
63次
阅读
《C语言程序设计》第四版谭浩强
《C语言程序设计》第四版谭浩强
发表于 02-14 10:09 •
133次
阅读
C语言在STM32中的内存分配
num_byte、num_word、num_byte_static和point_heap存储在内....
硬件攻城狮 发表于 02-10 14:57 •
489次
阅读
C语言495例
C语言的常用程序的例子集合
发表于 02-10 09:55 •
36次
阅读
单片机入门必知 | C与单片机C不一样?
单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c....
发表于 02-09 11:18 •
25次
阅读
学习单片机C语言,必知的数据存储与程序编写知识!
内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
发表于 02-09 10:15 •
17次
阅读
C语言开发单片机为什么大多数都采用全局变量的形式?
全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是:1. 做控制的工程师, 2. 做非嵌入式的....
发表于 02-09 09:54 •
19次
阅读
【干货】单片机常用的14个C语言算法
算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数....
发表于 02-09 09:46 •
14次
阅读
单片机C语言如何产生随机数
随机数在单片机的应用中也是很多的,当然产生随机数的方法有很多,当中有一个就是利用单片机定时器,取出未....
发表于 02-08 17:12 •
50次
阅读
学习单片机C语言,必知的数据存储与程序编写知识!
内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
发表于 02-08 16:51 •
15次
阅读
C指针加1引发的思考
1. 问题背景 最近有小伙伴对于 C 语言中指针的运算有点疑问:指针变量加 1 之后,到底向后偏移了....
发表于 01-26 10:07 •
36次
阅读
智能家居系统设计(监测+控制)
智能家居系统模型设计引言实现的功能硬件选型主控模块无线通信模块数据采集模块温湿度监测空气质量监测光照....
发表于 01-18 11:23 •
64次
阅读
学习笔记(08):单片机到底是个什么东西-1.2.第1季第2部分-1.2.6.外设与内部外设
本课程是《朱有鹏老师单片机完全学习系列课程》第1季第2个课程,用通俗易懂的语言讲了很多和单片机有关的....
发表于 01-18 11:14 •
45次
阅读
结合 RT-Thread 了解 PCA9685 扩展 I/O 的应用(带 PWM 功能,I2C 通信)
背景介绍:上一篇《看 Sugar 如何说 I2C 通信》中 Sugar 从硬件角度说了 I2C 总线....
发表于 01-18 11:11 •
38次
阅读
单片机裸机环境下编写AT指令程序
1.写在前面AT指令在各种WIFI模块、2G/4G模块以及一些无线通讯模块中应用广泛。但是用过的朋友....
发表于 01-18 10:43 •
64次
阅读
时间片轮询+状态机实现裸机多任务
时间片+状态机实现裸机伪多任务注:上述伪多任务是按个人理解命名的,实际上在裸机中跑的还是单线程,只是....
发表于 01-18 10:37 •
78次
阅读
systick定时器 延时计时
systick定时器是属于cortex M内核的外设,专门为RTOS的系统时钟节拍设计的。systi....
发表于 01-18 10:28 •
38次
阅读
《单片机》实验——实验5 定时器及数码显示实验
《单片机》实验——实验5 定时器及数码显示实验一、实验目的二、知识要点三、实验内容一、实验目的进一步....
发表于 01-18 10:13 •
42次
阅读
单片机实验4 矩阵键盘应用
单片机实验4 矩阵键盘应用#include#define KeyBoard_Value P3 ....
发表于 01-18 10:11 •
35次
阅读
STM32CubeMX系列|DS18B20温度传感器
DS18B20温度传感器1. DS18B20简介2. 硬件设计3. 软件设计3.1 STM32Cub....
发表于 01-18 10:04 •
79次
阅读
基于 Arduino 高精度简易桌面钟(Oled/DS3231)
在网上很少能看到有关RTC时钟的教程,有的话也是语焉不详,更多的是基于ESP8266的电子时钟,可惜....
发表于 01-18 09:53 •
107次
阅读
DS1302时钟芯片读写操作(基于普中A2开发板)
一、命令字讲解命令字为一个字节,由八个位组成。1、位7固定位1;否则不可对DS1302进行操作;2、....
发表于 01-18 09:43 •
52次
阅读
旋转LED:光の翼电子钟
文章目录旋转LED:光の翼电子钟制作目的经验分享原理图PCB实物图BOM程序成本计算视频白嫖旋转LE....
发表于 01-18 09:42 •
49次
阅读
DS1302避免重启电源重复初始化的方法
两种解决方法,第一种:先把程序烧录进单片机,然后把程序中的写时间函数注释掉,再烧录进去就可以了.第二....
发表于 01-18 09:21 •
61次
阅读
DS1302输出时间,在lcd上显示
完整电路图:完整代码:#include #include //包含_nop_( )空函数指令的....
发表于 01-18 09:17 •
13次
阅读
DS1302时钟程序详解,每一步都有讲解
首先附上DS1302的时序图和它的寄存器图,程序中写的不好的地方希望大家多多谅解,谢谢~#inclu....
发表于 01-18 09:03 •
29次
阅读
|