xym-ee
  • 计算机与嵌入式开发学习
  • 1-1.编程基础
    • C 语言
      • C 中的数据
      • C 语言基础
      • 字符输入输出
      • 函数
      • 数组和指针
      • 字符串处理
      • 存储类别
      • 文件 I/O
      • 复杂数据类型
      • 位操作
      • 预处理和 C 库
    • 数据结构和算法入门
    • leetcode 刷算法题
      • 递归与栈
      • 二叉树与递归
      • 回溯问题
      • 动态规划 1
    • 基本工具和使用
      • shell
      • shell 脚本
      • vim 编辑器
      • 命令行数据整理
      • 命令行环境和配置
  • 1-2.计算机系统基础(CSAPP)
    • 1.计算机基础
    • 2.数据的表示
    • 3.加减运算
    • 4.乘除运算
    • 5.程序的表示转换和链接
    • 6.IA32指令
    • 7.过程调用
    • 10.程序的链接
  • 1-3.数字电路、计算机组成
    • 1.数字电路、virtual circuit board
    • 2.计算机组成/steam:Turing Complete
    • 3.微机原理与接口技术(8086)
  • 1-4.计算机网络
    • 1.从浏览器开始
    • 2.协议栈和网卡
    • 3.网络设备
    • 4.运营商、接入网
    • 5.服务器
    • 6.数据返回浏览器
    • socket编程
  • 1-5.操作系统
    • 0.绪论
      • 1.应用视角的操作系统
      • 2.硬件视角的操作系统
      • 3.数学视角的操作系统
      • 4.状态机模型的应用
    • 1.并发
      • 1.并发 bug 的解决思路
      • 2.互斥
      • 3.同步
      • 4.信号量
      • 5.真实并发
      • 6.调试技巧
      • 7.os kernel 实现
    • 2.虚拟化
      • 1.操作系统上的进程
      • 2.进程的地址空间
      • 3.系统调用和unix shell
      • 4.C 标准库的实现
      • 5.linux 操作系统
      • 6.可执行文件和加载
      • 7.动态链接和加载
      • 8.内核的实现
      • 9.fork 的应用
    • 3.持久化
      • 1.存储设备的原理
      • 2.输入输出设备模型
      • 3.设备驱动程序
      • 4.文件系统 API
      • 5.fat 和 unix 文件系统
      • 6.持久数据的可靠性
    • 总结
  • 2-1.嵌入式裸机开发
    • 嵌入式系统通信接口与协议
    • cortex-m 内核芯片裸机开发
    • MPU
  • 2-2.中等规模系统开发
    • LVGL 图形库
    • 裸机开发的软件框架
    • 基于 rtos 开发
  • 2-3.armv7-m架构与 rtos 原理
    • armv7-m 架构
    • rt-thread 内核实现
    • rt-thread 驱动开发
  • 3-1.linux 应用开发基础
  • 3-2.linux 镜像构建
    • uboot 使用
    • uboot 适配
    • uboot 启动分析
    • uboot 自定义命令
    • linux 内核适配
    • linux 内核启动分析
    • busybox 根文件系统构建
  • 3-3.linux 驱动开发
    • 驱动开发基础
    • sysfs
    • led 驱动
    • 设备树
    • pinctrl 和 gpio 子系统
    • 并发控制
由 GitBook 提供支持
在本页
  • 开始编程
  • 使用 vscode

这有帮助吗?

1-1.编程基础

计算机语言这个东西,理论要和实际联系起来,相比于掌握语法,更重要的程序运行的平台以及程序设计的思路。学会一门计算机语言最终是要去解决实际问题的,而非写出i = i+++++i结果这种纸面问题,因此理解语法后就应该去学习研究好项目的代码了,或者去上手实现一个东西。

对于C语言来说,一个比较好的项目就是嵌入式实时操作系统,它相比Linux足够简单,但是又足够复杂,是计算机原理、数据结构等知识的综合应用,学会了以后对实际工作也又巨大帮助。

“面向对象”是一种设计思路,并不是一种语言。C++比C多了面向对象的特性,可以更容易地实现面向对象的设计,也就是说C语言也可以比较困难地实现这种设计思路,只不过对编程能力的要求更高。Linux内核、一些嵌入式操作系统就基于C语言和面向对象的思路来实现。

各种语言编译后最终形成机器码供CPU执行,方便人看的是汇编程序,理解汇编程序是理解CPU执行高级语言程序的一个角度,在操作系统的源码里,也会出现汇编语句。

开始编程

学习编程最简单的方式,在 windows 里下载一个 IDE 如 code::block 、Clion ,然后就可以学习一个语言了。

但是,如果可以的话,还是用 linux 来写代码,去熟悉命令行的环境。如果想对自己的代码进行测试,如果想一次性的测试很多样例,有没有更高效的测试方式?一次性输入所有的样例,然后比较输出是否正确。

./a.out < in.txt

自动化一些流程,比如自动化运行测试。

在 windows 里这些事情也是可以做的,但是在 linux 里面的这些工具就是为协作而生的。用多了 linux 会在编程能力上有显著的提升,因为使用 linux ,使用终端完成一些操作本身就是在编程。

最重要的,linux 本身就是一个更加计算机的思考方式,而且 C 语言本身就是和 unix 一起诞生的。

使用 vscode

诞生于 2015 年的现代编辑器,并且在前端开发流行起来。现代编辑器的公理:

  • 如果有需求,就一定能做到

  • 如果能做到,就一定好找到

因此要记得这个快捷键 ctrl + shift + P 交互式的更容易使用的

另一个常用的快捷键 ctrl + ~ ,切换终端和编辑器。

上一页计算机与嵌入式开发学习下一页C 语言

最后更新于8个月前

这有帮助吗?