经过五年的专业Java(以及较小程度的Python)编程,慢慢地感觉到我的计算机科学教育正在流失,我决定要拓宽我的视野/对世界有普遍的用处,做一些(对我来说)更像是对这台机器真正有影响的事情.我 Select 学习C和Unix编程,因为我觉得这是许多最有趣的问题所在.

我的最终目标是能够专业地做这件事,如果没有其他原因,就是我每周必须在支付账单的工作上花费40-50个小时,所以这也可能是我想要变得更好的编码类型.当然,你不会被雇go 做你以前没有做过的事情,所以现在我要靠自己了.

To this end, I started with K&R, which was a great resource in part due to the exercises spread throughout each chapter. After that I moved on to Computer Systems: A Programmer's Perspective, followed by ten chapters of Advanced Programming in the Unix Environment. When I am done with this book, I will read Unix Network Programming.

我在Stevens的书中遗漏的是缺少编程问题;它们主要记录功能并提供示例,后面还有几个章节末尾的问题.我觉得我会从挑战使用K&R中每一章的知识中获益更多.我可以 for each 函数编写一些测试程序,但这是一个不太可取的方法,因为(1)我可能没有那么积极地接受一些外部挑战,(2)我自然只会考虑以我已经想到的方式使用函数.(2)我可以 for each 函数编写一些测试程序,但这是一种不太理想的方法,因为(1)我可能没有那么积极主动go 迎接一些外部挑战,(2)我自然只会考虑以我已经想到的方式使用函数.

所以,我想得到一些关于如何练习的建议.显然,我的首选是找到一些有Unix编程挑战的资源.我也考虑过寻找并try 为一些开放源码的C项目做贡献,但这有点令人望而生畏,因为学习使用软件,然后学习代码库会有一些开销.我能想到的唯一经常使用的开源C项目是Python,我不确定开始使用它有多容易.

这就是说,我对各种建议都持开放态度,因为可能有一些我甚至没有想过的事情.

推荐答案

重新发明许多核心Unix实用程序.其中大多数是(现在仍然是)用C编写的,所以它们是开始学习的好方法.根据您的技能, Select 更难或更容易复制的实用程序.

try 编写您自己的malloc.您将学到很多关于Unix的知识,也会学到很多C编程知识.

谷歌提供计算机科学操作系统课程,并在那里做项目.许多学校在公共网站上都有这些项目,这样你就可以获得你需要的一切.Here是普渡大学网站的链接.试一试shell项目;它很难,但真的很有教育意义.

C++相关问答推荐

想了解 struct 指针和空指针转换

C中出现分段错误后关闭文件

如何在C宏中确定Windows主目录?

有没有更简单的方法从用户那里获取数据类型来计算结果

仅在给定的大小和对齐方式下正确创建全局

C中函数类型的前向声明

如何确保在C程序中将包含uft8字符的字符串正确写入MySQL?

==284==错误:AddressSaniizer:堆栈缓冲区下溢

将返回的char*设置为S在函数中定义的字符串文字可能会产生什么问题?

Cairo STM32MP1 cairo_Surface_WRITE_TO_PNG始终返回CAROLIO_STATUS_WRITE_ERROR

不同原型的危险C函数是可能的

-Wnonnull-Compare警告不是具有误导性吗?

如何在双向表中实现线程安全,每个条目仅使用4位,同时避免任何全局锁?

C语言中的数字指针

递归打印二维数组(C编程)

C中的回文数字

Dlsym()的手册页解决方法仍然容易出错?

生成的头文件不包括用户定义的文件

malloc:损坏的顶部大小无法找出问题

为什么 C 字符串并不总是等同于字符数组?