是否值得学习C作为Web开发人员?我会用它吗?

时间:2009-12-18 00:39:14

标签: php ruby-on-rails c

作为一名网络开发人员,是否值得我学习编程语言C?我是否需要使用它?我目前正在使用PHP和Ruby on Rails。

20 个答案:

答案 0 :(得分:9)

让C程序真正可靠地工作的无尽痛苦将教会你很多关于为什么PHP是一种更文明的编写软件的方式。

是的,你最终会使用它。

有一天,你会遇到一个不适合PHP或Ruby的问题。你将能够回归到C并且看起来像英雄,因为你比其他人更了解某些事情。

答案 1 :(得分:8)

Joel Spolsky敦促计算机科学专业的学生学习C:

Advice for Computer Science College Students”(2005年1月)

答案 2 :(得分:7)

我发现将C作为Web开发人员非常有用。例如,我写的一个网络应用程序包括一个照片库。它将照片存储在webroot之外,以便在显示实际图像之前检查用户的权限。

最终,我发现使用PHP中的Web应用程序显示一个充满图像缩略图的页面的开销非常高。因此,我将C中的实际照片显示代码重写为cgi程序,这将开销减少到几乎没有。

答案 3 :(得分:7)

不是真的。如果有的话,学习C,因为它很有趣,是一种很好的语言,可以帮助你更多地了解系统内部。从事Web开发是非常高级的,您将无法获得真正深入了解系统的机会。使用C可以帮助您更好地理解指令在低级别执行的方式,内存管理的工作方式以及如何创建PHP / Ruby内置的许多内容。

答案 4 :(得分:6)

学习拉丁语有助于理解现代派生语言的结构;所以就这样,我说为什么不呢?

答案 5 :(得分:5)

正如其他人所说,你可能不会使用C,但仍有许多与计算机和计算机科学相关的重要概念。可以从Kernighan和Ritchie等C编程语言这样的经典文本中获得一些见解。

这包括

  • 在简要文档中解释语言时非常好的文档和写作风格的示例。您会发现在一本不超过100页的书中解释了完整的语言。将此与今天出售的一些书籍墓葬相比较,这些书籍将自己定位为教授语言,但通常不仅仅是重新编写的API手册。

  • 了解指针,内存管理,数组和字符索引。所有与核心计算机科目一致的好信息;虽然水平较低,但对于专业程序员来说却是一条有价值的信息。

  • 这是一本简单快速的参考书。再一次,你不会破坏它提升它的手臂,但从中获得了很多知识。

一般来说,C非常适用于那些真正需要靠近机器或需要通过使用C-API扩展语言的场合。

答案 6 :(得分:4)

我认为学习任何新语言都不是一个“坏”的想法。特别是对C来说,它只能让你更好地理解你所使用的语言是如何运行的。“

答案 7 :(得分:4)

从我自己的经验来看,从Python到C(再回来,哇!):是的 - 学习它。

如果您还没有,请学习基本的低级数据结构;好好学习。

了解真正使HTTP发布的内容,或者为自己和他人编写一些低级调试工具。当你可以编写一个apache模块时,你可以在web开发中获得“引擎盖”的方式令人惊叹。 (Huzzah,斗旅!)

了解setjmp / longjmp的内部和外部,或许可以更好地理解异常处理 - 也就是说,它是如何真正起作用的 - 在更高级别的语言中。

您可能永远不会发现自己正在为Web开发编写一系列C代码,但如果您能够很好地学习该语言,那么您将会给自己一个优势。一定要不要用它来削减你的脚趾。 (:

答案 8 :(得分:3)

首先,您必须定义“Web开发人员”。您是在构建网站还是基于网络的软件?虽然这两项任务都很容易属于“网络开发”类别,但它们在您需要的技能方面却有所不同。

您更有可能遇到后台处理和文件/操作系统与软件的交互,而非“只是”一个网站,从而增加使用像C这样的低级语言的可能性。

话虽如此,你会用它吗?不太可能。数十种语言已经引入了高级语言来处理Web开发。从Web开发的角度来看,如果您不得不求助于C,那很可能是因为您没有更合适语言的必要技能。请记住大量不同大小的站点和软件解决方案,这些解决方案在PHP和Rails上运行良好。

值得学习吗?也许。如果你觉得你需要硬核编程技巧来补充你的网络开发技巧,你就有时间;去吧。如果没有,不要。你可能更擅长Ruby / Rails。

答案 9 :(得分:2)

你可能永远不必使用它,所以如果你只是瞄准“可用性”,就忘了它。但是,学习C是掌握编程基础知识的好方法。您可能会免费深入了解PHP和RoR。

一般来说,如果您对自己的语言有信心,不会 - 这不值得付出代价;)。

答案 10 :(得分:1)

学习一门新语言总是令人愉快的体验,并对您的编程方式产生积极影响。

您是否打算在Web开发中使用C.答案很可能是,没有。除非您要编写PHP扩展或自定义Web服务器的代码。

答案 11 :(得分:1)

如果你了解到很有可能取得成功,否则毫无疑问。

答案 12 :(得分:1)

我说,我说,我说: 是的......但只是一点点。

至少一些非常基础:字符串,指针操作......

即使您从未真正使用它,您也可以更好地理解更高杠杆语言中的性能问题。考虑我们一直在使用的字符串: links are hard by Joel Spolsky

答案 13 :(得分:1)

我会这样说的。 C是坚果。它是在人们以完全面向对象的方式思考之前编写的。它会让你感到沮丧。学习东西之后很难理解你现在对它们的了解。

但它对了解其他一切运行方式非常有帮助。它是一种很好的语言,可以帮助您过渡到其他语言,因为大多数现代语言都是从它继承或构建的(语法,数据结构等)。

此外,Ruby / Rails和PHP都基于C语言。许多支持库都是用C语言编写的。它疯狂快速,因为它是编译的并且相当低级,它的API比PHP或Ruby / Rails小得多。

我肯定会建议学习它,即使它只是为了学习一门新语言的乐趣。我的教授总是告诉我:“如果你能给我一本值得工作的手册和项目,我会学习任何语言。”所以,如果你能找到这两件事,那就去吧!

答案 14 :(得分:1)

学习更多语言总是一个好主意。 C非常好,因为 ton 语言是正式或非正式的,并且知道在较低级别发生的事情只会有所帮助。

OTOH,为了真正提升你的知识,我建议你学习一种与你所知道的语言截然不同的语言 - Erlang,LISP,Haskell,Smalltalk ......

答案 15 :(得分:1)

学习一门新语言总是好的,因为你已经在使用Ruby和Rails框架了。当您尝试深入学习Ruby脚本语言时,有关C编程的知识将会派上用场,因为 Matz Ruby Interpreter或MRI 是用C语言编写的。此外,大多数 Web服务器 都是用C和C ++编程语言编写的。

一旦了解了Web服务器的工作原理,您就可以创建可伸缩的应用程序,并且还可以分析正在部署应用程序的Web服务器的正负。

“杰克,你可以在任何编程语言和任何时间在你的职业生涯中成为主人”.... :)

答案 16 :(得分:1)

虽然我不再使用C,但我发现能够以他们的语言与其他程序员交谈很有用。您可能没有自己的专业知识来解决特定问题,但您可以聪明地与能够解决问题的人交谈。

当然,情况也是如此。

而且,正如上面所指出的,C是几乎所有其他语言的基础。

答案 17 :(得分:0)

学习语言绝非易事。但作为一名网络开发人员,我认为你花时间磨练另一种技术会更好。我已经深入研究了Rails和Java,但想想如果我真的想学习一些新的作为一名网络开发者,我会全身心地使用Django,google app engine,javascript,silverlight,flash。 ..在我考虑c之前还有一些其他技术。

答案 18 :(得分:0)

在我看来,对于编写在计算机上运行的软件的人来说,学习C就像学习拉丁语或希腊语一样,是人类学或文学科学的学者。

今天在软件开发中已经完成的大部分工作都是用C语言完成的,这就是你真正想要学习的东西:它不是用C编写你的软件,而是能够理解。既可能又做了什么。一切都来自于我们为什么在许多领域越来越远离C语言。

快乐的Segfaults! ; - )

答案 19 :(得分:-1)

学习C的机会成本很高 - 你可以学到一些实用的东西。

如果您是一名Web开发人员并希望继续成为一名,那么您可能更有意义学习更适合您所在领域的内容:Ruby并了解Ruby On Rails的工作原理,Python以及Django的工作原理, C#以及MSFT MVC的工作原理。或者Flex。或JavaScript和mooTools / JQuery。

虽然您可以从学习C中获得许多基本的计算机科学概念,但您可能永远不必触摸它。如果/如果你这样做,你会学到它。

如果您希望学习计算机科学(不仅仅是略低级别的编程),您可以尝试Project Euler或某些算法,操作系统等文献。