作为一个Web开发人员,学习C语言是否值得?我会用到它吗?

15

作为一名网站开发人员,学习编程语言C是否值得?我将来会用到它吗?我目前使用的是PHP和Ruby on Rails。


4
PHP 扩展是用 C 编写的 ;) - Franz
1
你可能不“需要”它,但至少应该学习一些基础知识。而且你可能会喜欢它,谁知道这会导致什么呢。 - nowk
4
我不明白这个问题。学习新东西什么时候变成了坏事? :-) - TheHippo
1
你可以终身学习,却永远无法完成任何事情 ;)。 - Kornel Kisielewicz
C语言是最好的。只需为了你的乐趣学习它,然后看看你在哪里可以使用它! - mati
显示剩余2条评论
20个回答

11

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

而且,你最终也会使用它。

有一天,你会遇到不适合用PHP或Ruby解决的问题。你可以退而求其次使用C,并因为你知道比其他人更多而成为英雄。


20
让 C 代码可靠运行并不像在 PHP 中每次调用函数时都需要上网搜索那样痛苦,因为你可能记不住参数顺序(或名称)。 - Chris Lutz
6
啊,别这样嘛,PHP 只有几千个函数而已,记住它们并不难啊!哈哈 - Kaleb Brasee
1
@S.Lott - 你为什么要写像 a[i++] = i; 这样的代码呢?听起来你是在混淆编写 C 代码和维护遗留的 C 代码。 - Chris Lutz
10
男人:医生,我执行 a[i++] = i; 的时候很疼! 医生:那就别这样做! - caf
3
@S.Lott,你在说什么鬼啊。我从其他开发者编写的成千上万行的C代码中从未见过类似的东西。此外,它并非语义上毫无意义,它具有非常具体的含义。而且,我不明白为什么不能用任何其他语言编写这样的代码行。 - tster
显示剩余6条评论

8

并不完全是这样。如果你想学习更多关于系统内部的知识,C语言是一个有趣且非常好的语言。在网站开发方面,很多都是高级别的操作,你没有太多机会深入了解系统。使用C语言可以帮助你更好地理解低级别指令的执行方式、内存管理的工作原理以及如何创建PHP/Ruby内置的许多功能。


8

+1,虽然它不是立即相关的,但这是一篇好文章。 - Chris Lutz
是的,我意识到它只有轻微的联系,所以我标记了我的答案为 CW。 - Bill Karwin
社区维基不适用于潜在的无关答案 - 它适用于需要社区参与的答案。如果一个答案不相关,请不要发布它。这是一个完全有效的答案(非CWiki)。 - dbr
2
-1 是一种以假设发帖人是计算机科学专业学生为借口,以链接 Spoolsky 文章的行为。 - GreenieMeanie

7
学习拉丁语有助于理解现代衍生语言的结构,因此我认为为什么不学呢?

7
我发现作为一名Web开发人员,学习C语言非常有用。例如,我编写的一个Web应用程序包含一个照片库,将照片存储在Web根目录之外,以便在显示实际图像之前检查用户权限。
最终,我发现使用PHP在网页上显示缩略图的开销非常高。因此,我将实际的照片展示代码重写为C语言cgi程序,几乎消除了开销。

5

我认为学习任何新语言都不是一个“坏”主意。特别是对于C语言,它只会让你更好地理解你正在使用的语言在“引擎盖下面”是如何运行的。


4

从我个人的经验来说,如果你要从Python转向C(然后再回到Python):是的 - 学习它。

如果你还没有学过,学习基本的低级数据结构;好好地学习它们。

了解一下HTTP post的真正原理,也许为自己和别人编写一些低级调试工具。当你能够编写一个apache模块时,你会惊喜地发现在Web开发中可以深入了解内部运作机制。(欢呼吧,桶传递!)

学习setjmp/longjmp的细节,并且或许能更好地理解高级语言中异常处理的实际运作方式。

你可能永远不会在Web开发中写一行C代码,但如果你学好这门语言,你仍然会给自己带来优势。只是要确保不要用它割掉自己的脚趾。 (:


4
正如其他人所说,你可能不能使用C语言,但仍有许多与计算机和计算机科学相关的重要概念。从Kernighan和Ritchie的C编程语言等经典文本中可以获得一些见解。
这包括:
- 在简短的文档中解释语言的非常好的文档和写作风格示例。你会发现完整的语言在一本不到100页的书中得到了解释。与今天销售的一些自称教授语言的书相比,它们往往只是重新包装的API手册。 - 理解指针、内存管理、数组和字符索引。所有这些都是与核心计算机科目相关的良好信息;虽然是低级别的,但对于专业程序员来说是一个有价值的信息。 - 这是一本易于快速参考的书。再次强调,你不需要费力去读它,却能从中获得很多知识。
总的来说,当你真的需要靠近机器或需要通过使用C-API扩展语言时,C语言非常有用。

+1 建议使用经典书籍来编写一些低级别的东西,以获得“视角”,这与增加具体技术知识同样重要。 - charstar

4
首先,您需要定义“Web开发人员”。您是在构建网站还是基于Web的软件?虽然这两个任务都可以轻松地归为“Web开发”类别,但在成功完成它所需的技能集方面略有不同。
如果涉及到后台处理和文件/操作系统交互等软件方面的问题,那么使用低级语言如C的可能性就更大了。
话虽如此,您会使用它吗?不太可能。为了解决Web开发问题,已经引入了数十种高级语言。从Web开发的角度来看,如果您必须使用C,那很可能是因为您没有更适合的语言的必要技能。请记住,有大量的网站和软件解决方案,大小不一,都可以在PHP和Rails上正常运行。
学习它是否值得?也许吧。如果您觉得需要硬核编程技能来补充您的Web开发技能,并且您有时间可以抽出来,那就去学吧。如果没有,那就不要了。您可能会更好地专注于Ruby / Rails的技能提升。

2

你可能永远不需要使用它,所以如果你只关注“可用性”,那就忘了它吧。然而,学习C是掌握编程基础的好方法。你可能会免费获得对PHP和RoR更深入的理解。

但总的来说,如果你对自己的语言能力有信心,那么它就不值得花费这个代价;)。


1
不,学习从来都不是“不值得的代价”。 - Chris Lutz
我是在提到投入时间与收益之间的比较。 - Kornel Kisielewicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接