导图社区 编程入门指南
编程入门指南,包括编程知识的金字塔基、《Learn Python the Hard Way》、MIT计算机导论课、Harvard CS50、《编码的奥秘》、《C语言编程》、《Hacker's Delight》等介绍。
编辑于2022-12-09 17:02:27 浙江省编程入门指南v1.4
作者:@萧井陌, @Badger 自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 CoCode:一个让大家学习、成长、相聚并获得乐趣的技术社区 编程入门指南 一群(243545867);编程入门指南 二群(438379133) 答疑邮箱: xiao.gua@outlook.com (@萧井陌)
01启蒙
编程知识的金字塔基
算法思想
语法
系统基础
为什么 while(1) 时线程永远无法结束?为什么 int *foo() { int x = 0; return &x; } 是不可行的?
《Learn Python the Hard Way》
《Python核心编程》
MIT计算机导论课
Harvard CS50
《编码的奥秘》
《C语言编程》
《Hacker's Delight》
10入门
阶段任务
学习计算机科学通用基础知识
【但别深入】可学具体技术
不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。
反思已写程序
Why如此设计
How to improve
编程的本质:利用计算机解决问题
《SICP》
Udacity CS212 Design of Computer Program
How to Design Programs, Second Edition
UC Berkeley SICP授课视频
Composing Programs
SICP 解题集
尽力并量力完成
《The Elements of Computing Systems》
卒于SICP者此处复活,写写俄罗斯方块
复活后可先点其他技能
计算机系统基础
《深入理解计算机系统》
CSAPP3e英文主页
The Hardware/Software Interface
《The C Programming Language》
UNIX相关 KISS
尝试脱离IDE,学会Vim或Emacs
《UNIX编程环境》
《UNIX编程艺术》
折腾你的 UN*X 系统
数据结构与算法基础
《算法导论 》
读第一遍的时候跳过习题和证明
《数据结构与算法分析》
Coursera Algorithms: Design and Analysis [Part 1]
& [Part 2]
注意培养使用常规算法解决小规模问题的能力
《编程珠玑 》
《程序设计实践 》
编程语言基础
入门:《C++ Primer》
[可选] 进阶
高效使用:《Effective C++》
深入了解:《深度探索C++对象模型》
《C++Templates》
研究反思:《The Design and Evolution of C++》
守夜or守日《Necessary Evil》
参考
《程序设计语言-实践之路》
Coursera 编程语言MOOC
Ruby
Udacity CS262 Programming Language
写简单浏览器
尝试SICP:用Python写Scheme Interpreter
11拘小节
学好英语
学会提问
搜索引擎的「高级搜索」
Stack Overflow 或 知乎
不要做一匹独狼
Markdown
LaTeX
写Blog记录自己想法
Joel on Software
Peter Norvig
Coding Horror
「费曼」技巧
分解难点,逐个击破
不局限于指南
有一些值得在入门阶段以及将来的提升阶段反复阅读的书籍
《Code Complete》
《The Pragmatic Programmer》
The Pragmatic Bookshelf
00自省
心态调整
确定目标
不要浮躁
Practice every day 十年磨一剑
培养兴趣
误区警醒
故事
浮于表面,基础不牢。编程技术遭遇瓶颈而不自觉
面对新问题无从下手,恐惧面对
只知其然,对Hows背后的Whys不探究
反思
“HOLISM-整体论” & “REDUCTIONISM-还原论”
【目标 of 初学者】倾向于整体论而忽略基础
【只会利用组件 忽略基础】限制构建能力和诊断解决问题的能力
回头「补足基础」更加困难
类比:学习厨艺----成为「大厨」需要理论与实践的正确结合
编程是连接理论与实践的纽带
通过自顶而下的探索与项目实践,获得编程直觉与推动力
从自底向上的打基础过程中,获得最重要的通用方法并巩固编程思想的理解。
后者为主,前者为辅。