最近,我越来越发现拥有丰富的编程基础知识是件好事.可悲的是,我是(许多)自学成才的PHP开发人员之一,并且没有后悔选择这条道路.
但是,我仍然认为我应该从零开始将我的知识扩展到一些"真正的"编程语言,并从那里积累我的知识.我无意改变自己的职业道路,但我认为从网络开发框中思考是件好事.
我不喜欢上课或课程,因为我根本没有时间参加.所以:
从零级开始,一步一步地教自己C的最佳方法是什么?
由于我的主要目标是学习更多编程基础知识,C甚至是一个不错的选择吗?
如果没有,会是什么语言?
截至目前的摘要:
首先,感谢所有出色的回应.这些将非常有帮助.虽然大多数人似乎都同意从C开始并不是一个糟糕的选择,但我也看到人们说跳过C并使用C++甚至C#可能是个更好的主意,因为这些语言更新.
我的个人意见仍然是从零级开始是好的,即使语言本身不直接有助于我做的事情.我仍然相信它会间接地让我成为一个更好的程序员.但话说回来,就像说的那样,我对这些语言的了解非常有限,所以我很想听听你对此事的看法.
阅读Kernighan和Ritchie的 "C编程语言".这是经典.
它是由该语言的原始创作者编写的书.它很短,而且非常易读且写得很好.
我不同意前两个推荐着名的"K&R"指南的答案.我完全无法从那本书中学到任何东西; 在阅读了本书的前三分之后,我只是放弃了三次.也许我只是愚蠢.
相反,我建议这本精彩的书:C编程:现代方法(免责声明:亚马逊链接)
我已经从那本书中学到了我需要了解的关于C的所有内容,它涵盖了历史和需要完成的事情,同时仍然保持着"现代"的观点.
警告:我没有来C"for C",我在Apple Mac OS X的桌面应用程序的最终目标,Objective-C和Cocoa编程的路上通过它.如果你真的想要一个非常深刻的知识C,获得上述两本书并没有什么坏处,阅读现代C后阅读K&R指南
我拿起C的第一步是"C编程语言"的副本 - 这是一本简单的书,但语言本身很简单.
好吧,如果你想"从零级开始",我建议学习装配.是集会.我学到了6502,你可以学习x86,如果你喜欢,或者手臂或mips.查找模拟器或中断器并阅读一些教程.您将完全理解CPU的工作方式和代码将更有意义(例如为什么getkeys不会更新,直到您执行pollkeys等).
之后我推荐C#,因为它不像c/c ++那样令人讨厌(我主要使用c ++).您将了解如何在汇编中表示C#行.与c和c ++不同,C#允许你做更多你想要做的事情(以下是我们可以用c ++做的事情列表,我们将在下一个标准http://en.wikipedia.org/wiki/中做到这一点C%2B%2B0x,C#有一些这些).
如果你想学到很多东西,你可以尝试学习我推荐的语言/sf/ask/17360801/#578618我认为组装后是一个好主意.