C 作为一名程序员,如何更进一步?

C 作为一名程序员,如何更进一步?,c,C,在过去的六个月里,我一直在阅读C语言编程,我得到了K&Rv2,BEEJ的socket指南,专家C编程,Linux系统编程,ISO/IEC 9899:1999规范(真实的,而不是草稿)。从Amazon收到它们后,我安装了Linux,并开始使用它 我已经完成了K&R,大约完成了专家C编程的一半,但作为一名程序员,我仍然感觉自己很虚弱,我相信要真正熟练掌握K&R需要6个多月的阅读时间,但我的问题是: 我已经完成了K&Rv2(第1章)中的所有练习,以及其他章节中的一些练习,其中大部分通常都很无聊。我如何

在过去的六个月里,我一直在阅读C语言编程,我得到了K&Rv2,BEEJ的socket指南,专家C编程,Linux系统编程,ISO/IEC 9899:1999规范(真实的,而不是草稿)。从Amazon收到它们后,我安装了Linux,并开始使用它

我已经完成了K&R,大约完成了专家C编程的一半,但作为一名程序员,我仍然感觉自己很虚弱,我相信要真正熟练掌握K&R需要6个多月的阅读时间,但我的问题是:

我已经完成了K&Rv2(第1章)中的所有练习,以及其他章节中的一些练习,其中大部分通常都很无聊。我如何提高我的技能,并成为真正的伟大?我已经为我真正想要的东西投入了金钱、时间和一种普遍的生活方式,但我不确定如何才能实现它

有人能给我解释一下,如果我需要不断地编码,我到底要编码什么?我很确定,编写hello world程序不会教我比我所知道的更多的东西

我的一个朋友说每天“阅读”(重点是阅读)一个手册页,但阅读是我所做的一切,我想做的,但我不确定是什么!我对安全性很感兴趣,但作为一名新手,我不确定应该编写什么样的代码

啊,我希望你不要删除这个问题:)


感谢“阅读”并练习你所阅读的内容,哪一种是最好的方法。

彼得·诺维格已经尝试实现一些非平凡的算法。我不知道书中有什么例子,但你可以试着写

  • 代数计算器。输入“sin(2)+5!*3^(1/2)”可以得到208.755394335作为输出
  • 从头开始的语法高级文本编辑器
  • 从头开始编写PNG(或任何其他图像或声音格式)编码器/解码器
  • 编写一个图像编辑器(例如,泛洪填充并不完全是琐碎的)
其中大多数通常都很无聊


学习一些你觉得有趣的东西,然后其他的东西就会到位。

真正帮助你学习的是开始一个项目。它可以是任何东西,实现一个聊天客户机/服务器、一个unix shell、一个存储购物清单的简单程序等等。关键是,通过选择你感兴趣的东西并努力实现它,你会惊讶地发现你在这一过程中学到了多少东西,你不会因为正在做对你有意义的事情而放弃


基本上,你只能从阅读中学到这么多。要获得真正的知识,你需要解决实际问题。

我发现练习学习概念比阅读概念更有用。通常我要做的是确定一个我想用软件解决的问题,然后尝试解决这个问题。我将在这一过程中利用各种资源,但是尝试一下你所读的东西,而不是阅读每一本关于这个主题的书,这确实更有用


此外,这也是一个很好的方法来寻找有趣的节目来尝试

你需要用一个更大、更复杂的项目来挑战自己。像大多数书中的例子一样,处理代码片段不会让你远远超过章节练习


你正在努力成为一名图书智能开发者。在现实世界里做点什么,让自己变得聪明

编写Hello World,然后通过网络、3d或使用数据库编写Hello World。在你完成之前不要认为事情太琐碎。实施算法以确保您知道如何操作。做你认为有趣的代码。

做吧。要成为一名“优秀”的开发人员,没有捷径可走——就像其他任何技术一样,它需要大量的时间、实践和耐心。就这么做吧。


此外,Code Golf和Project Euler也不错,但它们更多的是解决问题和数学,而不是编程

找到您感兴趣的开源项目(可能不是Linux内核),下载源代码并尝试使用它。理想情况下,它是一个库,而不是一个应用程序,所以你必须学会如何阅读它,才能与你自己的东西一起使用


别担心——成为一名优秀的程序员只需要10年左右。

如果你对安全感兴趣,试着在编写web应用程序时考虑到安全性。如果你创建一个类似论坛的东西,你不仅会了解一些安全问题,还会了解如何使用多种技术,如数据库、web服务器,以及除C之外的一种新语言和可能的新样式。然后,当你完成项目时,将代码与其他类似软件进行比较。如果你的项目陷入困境,你也可以看看类似的项目,看看它们能做什么。它可以是简单的,也可以是复杂的


Web编程可能在很多方面与系统编程不同,但两者都有许多安全问题。

学习编程就像学习说外语一样。起初,这很令人沮丧,而且常常很无聊。只有在你对一种语言有了一定程度的流利之后,你才能发现你的工作效率提高了。同样,仅仅学习规则是不够的。与语言学习一样,如果你不使用它,并且经常使用它,你将很难保持兴趣

对一个人有用的东西并不总是对另一个人有用。代码高尔夫可能适合你,或者你可能会发现它乏味的例子。就我个人而言,我喜欢做一些真正有价值的事情,但那就是我。尝试一下不同类型的编码项目,可能是高尔夫编码项目,可能是开源项目,制作游戏,等等。有时候,只是想弄清楚如何回答别人的问题会有所帮助。最终你会找到适合你的。记住,学习是不够的,你必须应用这些学习。

一些项目想法:

  • 小型数据库项目:联系人列表、DVD收集等。强调文件I/O、可搜索数据结构等<