关于接下来的学习路线
来源:2-8 【加餐】背景知识

sadcloud
2021-01-06
老师,目前我看了课程前面八章,现在我遇到的问题是:对桌面开发 GTK什么的不太感兴趣,感觉这个也是比较独立,知识的复用性可能差一些? 时间比较少,老师建议我继续看下去跟着做GUI编程,还是 直接跳过去 “学习一些 Linux、Unix 系统编程的知识,包括进程间通信、网络编程、更复杂的 IO 等等” ? 对于这些内容我知道很重要 但是学习路径和学习资料并不清楚,老师可以给一些稍微详细些的建议吗? 非常感谢!
1回答
-
GTK 的部分主要在 14-16章涉及,所以同学至少可以先把前13章学习一下哈
桌面开发这部分内容其实桌面的 GUI 内容只是一个方向,更重要的是了解一下其中的思想。例如咱们在 14章介绍 GTK 的时候也介绍了 glib 当中使用 C 语言语法实现面向对象的基本思路,以及内存管理的方法,这些内容还是比较有价值的。
案例当中,GUI 其实只是用来与用户交互的,因此你会发现15章主要的工作还是完成一个计算器的内核,并且一开始尝试编写单元测试 case、使用控制台来完成内核的调试工作,也只有最后的两节是设计到 UI 的。16章的前面6节我们都是专注于引入 sqlite、curl、线程池等库来完成基础功能。
简单来说,即便同学对 GTK 不感兴趣,了解一下这些内容也还是有价值的,所以我个人建议同学还是有空的话也可以快速浏览一下14-16章的内容,挑你感兴趣的看即可。
另外就是一个很现实的问题,可能时间确实不足,同学想要快速掌握起来 Linux 开发的相关知识体系。这里我建议找一本 Linux 系统编程的书籍快速浏览一下先大体了解其中的知识,我们通过前面的 C 语言学习,在浏览的过程中其实 C 语言本身不再是问题,主要是了解 Linux 特有的一些 API (例如 epoll),以及 Linux 的一些很好用的工具(例如命令行的 awk、sed)和 Linux 操作系统的相关知识。
顺序上:
Linux 操作系统先快速整体有个了解,这部分内容很多很多,书籍例如鸟哥的 Linux 私房菜,很多同学都在看,我的建议是快速浏览,先了解大概,这些知识很多都很细碎,短时间完全掌握是不可能的,一个一个上机练习也是不可能的,只要后面在用到的时候能想起来去查阅相关资料就行。
要习惯使用 shell,命令行在日常开发当中非常重要,甚至在远程服务器的交互当中只能使用命令行,因此这部分要熟练起来,也不要怕shell命令复杂,用多少学多少,不会的随时Google,都是这么过来的。shell 大牛都是老程序员。前面提到的 sed和awk 是shell当中大神常用的命令,这两个命令就可以写几本书,但实际上我们常用的也就那几个简单的场景,例如正则替换、拆分字符串之类的,用多少掌握多少就行,不要陷入细节。
shell 命令其实还可以一个替代的方案,就是 python。我们平常很多时候都需要写脚本,但 shell 不能跨平台,甚至 Linux 和 mac 上的命令都不完全相同。因此我更推荐了解一下 python,作为 shell 的替代选择,客观的说,我更喜欢这个,因此我自己的 shell 也就是入门水平(复杂一点儿的都写 python 了)。
接下来就是 Linux 系统编程了,Unix 环境高级编程是可以参考的,不过太厚了,建议找一本薄一点儿 Linux 系统编程的书籍的,先了解个大概,再找些机会去实践一下。
另外最好有个实际的 Linux 使用需求,逼着自己天天用 Linux,学习效果会更好;当然,用 mac 也多少可以起到一些效果。
差不多就这样吧。加油
212021-01-07
相似问题
回答 2
回答 1
回答 1
回答 1
回答 1