能算是掌握系统编程技能了吗?
另外迷茫的是到底要不要去读计算机的那些论文,感觉离敲代码很远。
我觉得是不能,问了chatGPT,下面是回答
大概可以达到以下编程水平:
- 理解操作系统的基本概念和原理,熟悉 Unix 系统调用和库函数的使用;
- 能够编写基本的 Unix 命令行工具,如文件操作、进程管理、管道等;
- 熟悉网络编程基本概念和技术,能够使用 Unix 网络编程 API 进行 Socket 编程;
- 能够编写基本的网络应用程序,如服务器和客户端;
- 熟练使用 Unix 系统和工具,如 shell、awk、sed 等;
- 理解 Unix 系统的安全机制和实现,能够编写安全的程序,如用户身份验证、权限管理等。
当然,这只是一个大概的评价,实际上读完这两本书之后,还需要不断的实践和学习,才能不断提高自己的编程水平。
光读完不能看出来是什么水平,一般还是看能不能写项目
比如如果你能用书中的 api 实现一个 http server ,那应该算了解网络编程了
不用问读完会怎么样,想想如果不去读这些书,有没有可能掌握系统编程
既然不读的话也没有别的捷径,那瞎想这些有什么用么
什么,其实你也不需要会系统编程,就是听着炫酷觉得好玩想学?那我只能说挺叔一句劝,你这样自己下不了决定怎么学的话啥也学不会的。
至于读不读论文,只是为了装逼读论文的话,读得少一些光读些经典的还好,多读是读不出啥用的
曾经我也以为读完APUE后会有很大的提高。实际上这个大部头还是更适合作为工具书。它确实能补全你对操作系统基础的理解,但是脱离了具体目的和应用场景,看这个书也只是匆匆一瞥,很难熟练。
主要还是得多做项目,才能掌握编程技能,需要多多实践,不然看完还是会很快忘掉的。
两本书都草草翻过的表示可以提供一个学习目标:
- 怎么理解 “同步” “异步” “阻塞” 与 “非阻塞” 这四个名词在这两本书里的含义?
- 这两本书成书已久,现在Linux用户喜闻乐见的io_uring与书中描述的IO模型相比有什么特点?
我自己的读后感就是弄清楚这两个问题之后,书中剩下的内容就是(很可能过时的)API reference了。
看不起用 FreeBSD/Solaris/Plan9/macOS 的是吧
但凡他们争点气也不至于一点气也争不到
可以先熟悉 Linux,应用广泛,有兴趣再了解其他小众的
代码大全(Code Complete)我觉得很不错,介绍了常用的编程技巧。
APUE对我没有直接的帮助,因为我当时是在已有系统上维护,C使用自己代码封装的少量api(基本上就是字符串处理),后续很多代码迁移到python/perl上了。
系统编程技能还是要参加一些大项目(开源闭源都行)。
编程本质上是个手艺活,不把自己的手弄脏,不亲自动手做个项目应用书上的知识是没办法提高自己能力的。读完了这两本书,只能说明你了解了其中的一些概念。
提个学习的建议,看书的过程中可以自己封装一套库出来