关闭
搜索
搜索
本版
帖子
用户
热搜:
程序员
简洁模式
高级模式
用户组: 游客
消息
提醒
新听众
我关注的
帖子
道具
勋章
任务
设置
退出
请
登录
后使用快捷导航
没有帐号?
立即注册
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
or
立即注册
快捷导航
搜索
首页
论坛
BBS
MCU单片机技术
程序员交流
为何要学习C语言,以及如何学习C语言
[复制链接]
作者:
hjkkjh110
版块:
›
灌水·股票·程序员大本营·工作之余需要点阳光·我们不只是工程师
›
IT业界资讯
发布时间:
2019-1-26 21:53:28
990
0
返回列表
hjkkjh110
当前离线
新手上路
新手上路, 积分 14, 距离下一级还需 36 积分
新手上路
新手上路, 积分 14, 距离下一级还需 36 积分
积分
14
发消息
楼主
电梯直达
hjkkjh110
发表于 2019-1-26 21:53:28
|
只看该作者
|
倒序浏览
|
阅读模式
有关为何要学习
C
语言以及如何学习
C
语言这个话题,可以说和“一千个读者就有一千个哈姆雷特”一样,每个人都有每个人的见解和学习方式。回想起
10
年前的那个暑假,自己跟着某天翔七天学会单片机的视频教程一步一步学习
C
语言、单片机的日子,不由得感慨万千,想起自己在开发路上走过的路,坎坎坷坷。。。
废话说多了,,,有关本文的主题,个人感觉,这个首先该看自己的定位在哪,不同的目的会有不同的过程,一般学习
C
语言分为以下几种情况:
1.
学校开设这门课程,学习
C
语言仅仅是为了应付考试
。如果是这种情况,跟着老师步子走,把课后题多做一些,多上机练一练,考个高分还是不成问题的。
2.
业余编程,把
C
语言当成一种爱好
。如果是这种情况,可以较为深入的学习一下
C
语言,多看一些源码,看看别人怎么用
的,然后多多将自己的实际问题转化成
C
代码实现一下就
OK
了。
3.
要从事其它语言开发,把
C
语言当成一种敲门砖
。这种情况比较复杂,因为我曾经走过这条路子,
14
年曾经尝试着转纯软件开发,后来感觉那种日子不如搞软硬结合来的爽快、成就感强,就放弃了。抱这种目的的,也分情况,如果是从事
web
开发这个方向,学不学
C
语言作用都不是很大,尤其是从事前端开发,有没有
C
基础,几乎对前端的学习没有一点帮助。如果是从事后端开发,有
C
基础肯定比没有好点,但是这种付出不成比例,
C
指针那块太耗时、耗力,建议直接上后端开发语言(比如
Java
、
php
等)即可。
4.
嵌入式开发
。这种情况,如果纯裸机开发,就掌握了
C
基础以后,多看别人的代码,多学编程思路,多使用结构体封装,多使用模块化编程,便于代码移植、复用,多从项目整个框架的层面考虑就可以了。如果是开发比较轻量级的系统,比如
FreeRTOS
、
uCOS
等,可以掌握
C
基础以后,直接上源码即可,多研究下这些系统的功能是如何实现的,掌握指针与数组、函数的关系,然后多加分析、练习就差不多了。这种情况,建议当你感觉到没什么进步的时候,找一个固定平台学习一下汇编,推荐
ARM
平台的汇编,因为
ARM
汇编标准化比较高,而且将来一定是
ARM
的天下,现在
Cortex-M0
核的
MCU
已经
2
块钱以下了,低端到高端产品线超级丰富,选择性太好了,还犹豫啥呢?!对照着指令手册,慢慢分析下自己的
C
源码产生的汇编是什么样子、该如何优化,看下自己的
C
代码的变量、函数等内容的地址是怎么分布的、字节对齐有什么效果等等,调试的时候多借助下映射、链接文件,会极大提高调试效率。这个阶段,需要熟练掌握、随意应用指针与结构体、数组、函数的转化的时候,就说明已经可以结束了。
5.
安全、内核、驱动开发
。这种情况,就需要深入学习一下
C
语言了,不仅要对
C
语言的语言特性了如指掌,也要对
C
代码转化为汇编以后的行为、特性进行分析,这种能力越熟练越好。我本人也是一直在内核、驱动两方面折腾,这方面还算比较了解,可以多说一点我的学习过程。首先我们要做好长期吃苦的准备,但是这种苦是值得的,我们要明白,不吃学习的苦就得吃生活的苦,而生活的苦比学习的苦苦太多,在该吃苦的年纪,就应该多吃点苦,既然这样,那我们为何不多吃点学习的苦,少吃点生活的苦呢。这个阶段是建立在第
4
阶段之上的,要想从事这类开发,不仅要熟练掌握操作系统原理这种宏观、原理层面的技术,也要对
C
语言、汇编、工具链都有所了解,而且,这些内容掌握越多越好、越深入越好,我们要掌握控制工具链对自己源码(可能不仅仅有
C
程序)“加工”的过程,还要考虑这种
C
源码会产生何种汇编代码,会导致机器做出什么样的行为。这个阶段,当你可以使用工具链将程序的各个段按自己意愿进行分布、排列;当给你一段可执行程序代码,你可以使用工具链导出反汇编文件,进而分析出它的功能的时候,就差不多可以了
~
总之,学习是一个反复的过程,嵌入式开发知识面广、体系杂,要想成为高手,就需要时刻保持一颗学习的心。本号接下来会连载《随时随地学习
C
语言》系列,将本人在嵌入式、内核及驱动开发路上的经验、感悟及心得与你分享,绝对干货满满,赶紧上车吧
~
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
收藏
0
相关帖子
•
广和通助力STM32峰会打造嵌入式开发者的狂欢时刻
•
Python基础教程之参加Python培训课程学习内容详解
•
Python编程语言知多少?
•
华为鸿蒙(python程序员)总结的一整套python学习路线,内含python学习视频 ...
•
Rust引入Linux内核开发?Google:支持!
•
许式伟:Go+门槛比Go低,小孩6年级开始学Go+
•
2021最新100GJava学习资料,从入门到精通!
•
作为一个开发者,如何更好地学习鸿蒙?
•
MIKROE的新SiBRAINMCU开发标准
•
如何才能成为一名DevOps工程师?
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
表情
@朋友
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表