程序员入门必读
文章目录
本文主要是一些针对程序员入门的一些资料。
1 一些基础知识
The Missing Semester of Your CS Education
2 新手如何提问
How-To-Ask-Questions-The-Smart-Way.
中文版本:提问的智慧
经典的关键字:
-
STFW
如果你收到STFW(Search The Fucking Web)的回应,回答者认为你应该到他妈的网上搜索。那人多半也是对的,去搜索一下吧。(更温和一点的说法是 Google 是你的朋友!) -
RTFM
有一个古老而神圣的传统:如果你收到RTFM(Read The Fucking Manual)的回应,回答者认为你应该去读他妈的手册。当然,基本上他是对的,你应该去读一读。 -
RTFSC
Linux的鼻祖Linus Torvalds在回答有人提出的Minix的一个问题时,所说的第一句话就是"Read The Fucking Source Code",这就是RTFSC的来由。
3 理解(讲解)复杂问题的方法
- why: 为什么产生的?背景是啥?
- what: 是什么? 解决什么问题的?优缺点?
- how: 怎么实现的?
4 编程的一些经验
- 机器的结果一定是正确的。当代码结果不符合预期时,可能存在以下几种情况:
- 代码存在bug?
- 使用的库函数、系统调用等存在bug?
- 硬件(CPU/内存/磁盘)异常
总之,不论是什么情况,都是因为存在软件或者硬件异常导致结果不符合预期的。
-
没有测试的代码都是不可靠的
-
一切外部输入都是不可靠的
-
编写代码一定要采用滚雪球的方式进行
- 切记贪多求全,全部写完后再进行测试,问题隐藏的更深,更难被发现。
- 编写代码时,按照功能进行模块化。已经完成的模块都要进行接口测试。
- 测试阶段多使用assert(), 提前发现不符合预期的bug。
5 一些有用的学习编程资源
南京大学计算机基础实验
蒋炎岩操作系统课程视频
蒋炎岩操作系统课程配套课件和代码
调试理论与实践 (Fault; Failure; Error; 调试一切) [南京大学2023操作系统-P8] (蒋炎岩)
musl-libc-精简易读的类glibc库,适合学习glibc内部实现细节
6 经典的书籍
- Computer Systems: A Programmer’s Perspective【深入理解计算机系统】(CSAPP)
- Operating Systems: Three Easy Pieces(OSTEP)
- Advanced Programming in the UNIX Environment (3rd Edition)【UNIX环境高级编程】 (APUE)
- TCP-IP Illustrated Volunme 1-The Protocols
7 实用工具
7.1 windows实用工具
本地文件搜索:everyting
解压工具:7Zip
剪贴板:ditto
截图工具:Snipaste
图片简单编辑工具:GreenShot
远程连接客户端(开源免费的类Xshell工具):WindTerm
7.2 绘图工具
ProcessOn:在线绘图网站
Drawio
Graphviz:开源图形可视化软件
XMind: 思维导图工具
Excalidraw: 开源手绘画风绘图工具
PlantUML:绘制UML的工具
Matplotlib【配合python使用】 官网
7.3 格式化代码
7.3.1 indent
|
|
7.3.2 clang-format
|
|
clang-format下载地址
clang-format用法
7.4 ImageMagick给图片添加水印的方法
-
下载ImageMagick: ImageMagick下载地址
-
添加ImageMagick的环境变量:将ImageMagick的安装完成后的二进制目录添加到系统path路径中。
-
制作水印文件watermark.png,可以使用windows自带的mspaint制作。
-
执行命令
composite -dissolve 30% -gravity south watermark.jpg input-file.jpg output-file.jpg制作水印。 -
也可以批量制作水印。例如下面shell脚本可以将当前目录下所有的jpg文件添加水印。
1 2 3for pic in *.png; do composite -dissolve 30% watermark.png $pic ${pic//.png}-marked.png done
7.5 7-zip用法
7-zip制作tar.gz压缩包的方法:
- 先将待压缩的目录或者文件压缩为tar格式的压缩包
- 然后再将tar包使用gzip进行压缩即可
8 实用网站
c语言编程书籍推荐
C++书籍推荐
操作系统相关知识库
ArchWiki: Arch Linux documentation
在线LaTeX编辑网站
计算机自学指南:涵盖计算机相关的网站、书籍等,内容丰富
开源编程书籍
计算机相关书籍推荐