【发布时间】:2011-02-26 08:58:33
【问题描述】:
经过五年的专业 Java(以及在较小程度上是 Python)编程并慢慢感觉我的计算机科学教育逐渐消失,我决定要拓宽我的视野/对世界的一般有用性并做一些感觉更多的事情(对我来说)就像我真的对机器有影响一样。我选择学习 C 和 Unix 编程,因为我觉得这是许多最有趣的问题所在。
我的最终目标是能够专业地做到这一点,如果没有其他原因,除了我每周必须花费 40-50 小时来支付账单的工作,所以它也可能是类型我想变得更好的编码。当然,你不会被雇来做你以前没有做过的事情,所以现在我要靠自己的努力。
为此,我从 K&R 开始,这是一个很好的资源,部分原因是每一章都有练习。之后我转到Computer Systems: A Programmer's Perspective,然后是Advanced Programming in the Unix Environment 的十章。当我读完这本书时,我会阅读Unix Network Programming。
我在 Stevens 的书中缺少的是没有编程问题;它们主要记录功能并提供示例,随后是一些章末问题。我觉得我会从被挑战使用每一章中的知识中获益更多,就像 K&R 一样。我可以为每个函数编写一些测试程序,但这是一个不太理想的方法,因为(1)我可能会比我遇到一些外部挑战时更没有动力,并且(2)我自然只会考虑使用该函数以我已经想到的方式。
所以,我想获得一些关于如何练习的建议。显然,我的第一选择是寻找一些有 Unix 编程挑战的资源。我也考虑过寻找并尝试为一些开源 C 项目做出贡献,但这有点令人生畏,因为在学习使用软件和学习代码库时会有一些开销。我能想到的唯一一个我经常使用的开源 C 项目是 Python,我不确定它是否容易上手。
也就是说,我对各种建议持开放态度,因为有些事情我什至没有想到。
【问题讨论】:
-
我只想说我喜欢看到这样的帖子,你不只是在说“我如何学习 C,但我自己什么都没做。”荣誉。点赞。
-
首先,请阅读:stackoverflow.com/search?q=code+kata。其次,更新您的问题,使其尚未得到回答。或者,可能,关闭此问题,因为它与其中一个或多个重复。
-
我不同意 S.Lott 的观点,他不像大多数其他问题那样寻找初学者介绍。他的背景不同,值得不同的话题和回应。
-
@S.Lott:我通读了这些问题,但没有看到任何与我所问内容相关的内容。如果您想提出一个重复的特定问题,我愿意关闭这个问题,但请记住,我正在寻找一个特定的东西来练习而不是一般的编程。
-
我认为这个问题很简单......“我读过书,但想要一些实际问题和练习。”这不是 Code Kata,因为他专门询问 Unix 编程,其中包括线程、管道等。 Code Kata 以超市定价为例。 Code Kata 在学习一门新语言时很有用,并且通常与平台无关,但他希望通过特定项目来提高他的 Unix 技能并了解 UNIX 内部结构。