跳转至

个人推荐的编程学习路径

Abstract

该推荐主要面向信息学院的同学,按照学习的先后顺序排列。如果只是想了解编程,那么学 Python 来玩就够了。

  • 英语 没有英语基础的话学什么都会感觉有些困难 因为你可能需要查看很多英文文档 与世界上的其他人使用英语交流 推荐有良好的编程基础 当然边学知识边学英语也是好的
    • 科学上网 Google搜索 科学上网和 Google 能让你获取互联网上绝大部分的有用的资源
    • Stack Overflow Google 找不到的问题可以在 SO 搜索 没搜到则可以直接在 SO 提问
      • 在进行任何提问前请仔细阅读《提问的智慧》
  • 操作系统 初步
    • 操作系统历史与现状 从大家熟悉的桌面操作系统切入,了解操作系统这一世界级的大工程
    • Linux 命令行程序 shell 了解 Linux 这一开源的操作系统 熟练使用shell与计算机进行交互
  • Python
    • 入门编程 从C语言学起有些劝退... 可以先从 Python 着手学习基本的编程思想
    • 日常编程 熟悉包管理 学会调包 Python 能帮助你将日常工作中的很多繁琐重复的事情简化
    • 脚本 取代 shell 脚本
    • 科学计算 numpy 计算 matplot 绘图 以取代 MATLAB
  • 处理器基础
    • 数字逻辑 数字电路 CPU电路设计 有了数字电路的基础 你才会知道计算机到底是怎么进行计算的
    • 指令集 汇编语言 CPU和内存的关系 知道指令集为软件和硬件设计的分界线 了解CPU寄存器 了解汇编语言
    • 函数调用的思想 为学习编程语言的函数打基础
  • C
    • C语言语法 C 与计算机底层资源紧密结合 作为最早且最简洁的编程语言 值得每个入门编程的人了解并熟练掌握
    • 数据结构与算法设计 初步
    • 熟练掌握常用开发工具:详见MIT missing-semester
      • 重点熟悉 Git GitHub make gdb/lldb VS Code Markdown
  • C++
    • C++语言语法 面向对象的经典语言 代码执行效率高
    • 相比现代的编程语言较难掌握 但现实大多实际工程都在使用 C++ 构建 学习编程无法绕过
    • (我个人极其不推荐学 C++ 但是历史原因真的没办法 我更推荐这个阶段直接入门 Rust)
    • 数据结构与算法设计 进阶
  • 操作系统 深入
    • 特权机制 内存分页 进程线程 文件系统等操作系统设计原理 了解这些原理能够帮助你编写更高效的程序
    • 高级编程 如多线程 网络编程 系统编程等
  • 任何你喜欢的技术
    • 其他编程语言
      • Rust 其是有着现代设计的新语言 与底层开发联系较紧密 相信在未来会大放光彩
    • 深度学习 深度学习近年来发展迅速 应用广泛 只是了解的话并不困难 总感觉学了 Python 但是不了解 PyTorch 有点可惜
    • 计算机网络 没有网络 我们可能已经寸步难行 互联网的设计做到了让这个世界互联
      • 前后端技术 现在很多应用都离不开网络
    • 应用程序开发 Windows/macOS/Linux/iOS/Android 平台开发 有了编程基础你很容易就能创建出你自己的 App
    • 音视频编码 我们听到的音乐和看到的视频都是 01 的编码串 编码建立起从人的感知到计算机存储的桥梁
    • 计算机图形学 你能看到的 GUI 界面 3D 游戏 背后都是计算机在做渲染
    • 编译汇编 操作系统底层的重要技术之一
    • ......