哪种 Web 开发语言最适合 C 程序员?

3

问题

我经常在*n*x环境下使用C (ANSI C89 / ISO C90) 进行编程。现在,我需要学习一种web开发语言,这对我非常有益。特别是,我想学习一种语言,它能够:

  1. ...充分利用我的C程序员背景。
  2. ...能够产生像stackoverflow.com这样网站的交互性水平。

我听说PHP很好。你们有其他建议吗?

备注

  1. 我还熟悉其他语言:Java、Perl、Tcsh和Scheme。
  2. 我忘了提到我有兴趣学习一种能够在客户端完成任务的web开发语言。如果这不清楚,请谅解。
  3. 我计划利用自己的语言知识来开发一个与stackoverflow.com风格相似但具有非常不同概念的网站。

你懂Java和Perl - 这两种语言都非常适合Web开发。除非你想为了学习新语言而学习,否则你已经拥有了所有必要的工具。 - Sean McSomething
13个回答

21

如果您已经了解C,Perl和Java,那么老实说,您已经了解PHP了,只是您还不知道而已。有意义吗?也许不。但是一旦您开始使用它,就会有所体会。

你没有说明学习Web开发语言的原因和目的。这是提供任何建议的关键信息。在缺乏这样的信息时,我建议选择PHP有以下几个原因:

  • 它是面向Web的;
  • 它非常流行。找到问题的答案非常容易;
  • 它非常容易学习(即使您不了解C,Perl和Java);
  • 正如卡尔·亨德森在他的主题演讲“为什么我讨厌Django”中所说的,“PHP是一门严肃的语言”。它支持全球前20大网站(维基百科、Flickr、Facebook和另一个我忘记的网站)之中的4个;
  • 它与Perl并没有太大的区别,尽管Perl具有略有不同的类型系统,并且在Perl中,正则表达式更为一等公民。此外,PHP没有$ _运算符,但尽管如此,它们之间有许多相似之处;
  • 作为一种动态脚本语言,它将帮助您走出强类型编程的模式,这应该会带来一些变化和有用的经验;
  • 尽管PHP支持对象(我认为PHP不是面向对象的),但大部分PHP都是以过程化方式编写的,使其更符合C程序员的习惯;
  • 它拥有令人难以置信的丰富库;
  • 只需要Apache,它非常轻巧,因此与Java或ASP.NET托管相比,托管费用非常便宜;而且
  • 只需保存文本文件并单击浏览器上的“重新加载”即可查看发生了什么事情,这样做会带来某种满足感,而无需单独进行编译、构建和部署步骤。

不要被引导远离设计模式和面向对象编程的最佳实践,建议阅读 Uncle Bob 的《敏捷软件开发:原则、模式与实践》一书。Rob Conery 也会同意,回归基础是好的,但前提是你已经掌握了敏捷(和其他原则)的原则。最重要的是它能够工作并且你能够维护它。 - Zachary Scott
PHP是一种面向对象的语言,但它不像Java和.Net那样花哨。 - Eskinder

5

PHP的语法与C语言非常相似。但是,它也有区别,您无法管理指针和内存(至少我不知道如何)。它也非常容易上手。

PHP是一种服务器端语言,因此浏览器与其无关。它们将获得相同的HTML/CSS信息,而这就是它们之间的差异所在。

如果您想要像本网站这样的交互水平,则应考虑JS(以及其框架,例如:jQuery)。该语言负责Web开发中的客户端。


PHP很容易学习,特别是对于C开发人员来说,几乎是微不足道的 - 语言结构是相同的。成为一名优秀的PHP开发人员更难,需要学习很多关于软件和网站工程的知识,以避免代码混乱。但其他任何Web开发环境也是如此。 - Alister Bulman
但是能够编写大型C程序的人可能有足够的纪律来编写大型PHP程序,而不会产生混乱的代码。 - Nosredna

5

我喜欢之前提到的所有选项。只想补充一点,如果您已经了解 PERL,那么您可以使用它来制作您所能想象的所有网站。


这里的优势是,您已经了解Perl,并且它完全能够完成您想要在网站上做的一切。无需学习任何其他服务器端语言。 - Danny

4
很多人在这里谈论PHP、.NET、Java等技术。但我要提出一个新的观点:对于网络,服务器端正在迅速变得不那么重要,特别是考虑到您的标准(SO.COM的互动性)。您需要学习4种核心技术。如果您认为自己已经了解它们或可以在没有学习的情况下理解它们,那么您可能是错的。标准已经发展了太长时间,如果您只是试图死记硬背来学习,很容易对“应该如何做事”产生模糊的印象。
1)现代、标准的(x)HTML。了解HTML/xHTML 4中包含哪些内容和不包含哪些内容。您认为您了解它吗?您知道块级元素和内联元素之间的区别吗?您知道哪些元素允许在其他哪些元素中使用吗?
2)CSS 2.1或更高版本。我推荐O'Reilly的“CSS权威指南”。深入了解CSS选择器。您将需要它们来完成技术#4。您会惊讶于在CSS中可以实现什么,而您以为只能在HTML中使用大量标签才能实现的东西。
3)JavaScript。不,我不是在开玩笑。它不再是一个不起作用的笑话语言。它行得通。它正在运行最具响应性、最互动和最有趣的网站(如Google Maps、SO.COM)。
4)jQuery。它非常辉煌,我甚至无法说出它的名字。也许评论者们会对它的光辉氛围不那么感冒,能够呼吸它的名字。
因为在我看来,所有真正令人印象深刻的东西都在客户端上,所以服务器端语言并不那么重要。我喜欢.NET的LINQ语法。起初我对它表示怀疑,但现在我已经彻底认同了它。但如果您选择PHP或RoR或Java或其他任何语言,也没关系。但这应该是一个次要的决定。首先学习上述4种技术——无论您在服务器上做什么,都需要它们。

jQuery是一个绝妙的设计模式(创建者)。模型视图控制器是另一个精彩的设计模式。两者结合起来,您可以创建一些精美的Ajax网站,特别是如果您使用jQuery插件。哦,还有C#也是其中的一部分。 - Zachary Scott

2

你需要考虑语言和平台。我建议使用C#中的ASP.NET MVC。语法非常熟悉。MVC是一种很好的模式,支持jQuery,可以为javascript提供良好的跨浏览器支持。MVC还可以让您更好地控制生成的HTML。实际上,SO就是基于该平台构建的。


2

这取决于您想要做什么的复杂程度。

PHP,正如几乎每个帖子中提到的那样,非常适合服务器端Web开发,简单的东西很简单,复杂的东西也处理得相当好。PHP语法类似于C,并且逻辑上一致--您几乎永远不需要参考优秀文档的语法部分。

但是,PHP只提供页面,您需要学习HTML、CSS和可能一些Javascript来放入这些页面。

我个人犯了一个错误,认为Javascript只是另一种基本的脚本语言,错过了数年来JavaScript可以带来的强大、优雅和可能性。几乎所有您在像Gmail和StackOverflow这样的网站上看到的交互式好东西都归功于Javascript。

同样,这些网站上的“酷”的视觉呈现几乎都是由CSS完成的。

对于极其复杂的后端内容(特别是如果您需要在页面之间保持状态),您可能最好使用Java和各种框架(Tomcat或Jetty,加上Spring和Freemarker模板,IBATIS是我个人的胜出组合!)。问题在于这里有一个陡峭的学习曲线,只有在确实需要Java后端的强大功能时才应该去那里。


1
如果您想从事客户端开发,那么学习JavaScript是必不可少的。所有主流浏览器都对它提供了很好的支持,而且有许多丰富的框架可供选择(如jQuery、dojo和ASP.net)。一些人仍在使用Java applets,但总体来说applets已经相当萎靡不振了。

0
如果您选择PHP,为了您的心理健康,请使用一个好的框架。我强烈推荐CakePHP,但我不想引发任何宗教战争。
您提到过Java方面的经验 - 为什么不应用它呢?或者作为一名C程序员,怎么样考虑一下C#和.NET?
朋友,世界是你的蜗牛壳。

我不使用任何框架,而且运行得非常好……为什么要使用框架呢? - Logan Serman
PHP 一个框架。嗯,一个模板系统。 - Thomas L Holaday
当我构建网站应用时,每次都需要一些特定的东西。我需要一个前端控制器,良好的安全性,清晰的URL,数据库抽象层,日志记录,验证等。简而言之,我需要一个可重复使用的代码库或框架。 - Luke
PHP中的框架特别糟糕,因为PHP并不适用于编写应用程序代码,而是一种模板语言。我见过最奇怪的是Smarty,它是一个在PHP中实现的模板语言,而PHP本身也是一种模板语言。 - singpolyma
我还是不明白为什么要在模板语言中添加另一种模板语言(例如Smarty)。 - cletus
显示剩余3条评论

0

有了Perl和C的背景,我觉得学习PHP会很容易。然后再学习框架和类似的东西。


0

我是一个相当严格的C程序员,不是因为我视野狭窄或者害怕其他语言,而是我的工作需要这种编程语言。我的大部分工作都是后端自动化处理,针对虚拟化、云计算等领域。

偶尔,我必须构建某种Web前端来将一切联系起来。在这种情况下,我非常喜欢使用PHP。实际上,我发现大部分具有扎实C背景的人们使用PHP可以更加高效和富有创造力。

这就是我为什么喜欢PHP以及为什么以良好的C知识进入PHP很酷的原因:

PHP非常容易扩展。虽然PHP带有非常丰富的库集合,但你会发现(至少我会),你需要它与某些其他库原生地进行配合。一个很好的例子就是libvirt。你可以将需要在libvirt中使用的函数转换成PHP函数,而不是调用和解析一堆shell forks。

PHP没有强制推行面向对象的概念 如其他人所说,PHP作为面向对象语言表现得很好。然而,它的语法并不像其他面向对象语言那样,强制要求你采用面向对象的方法。换句话说,你的代码看起来不会像某个使用面向对象语言的程序员那样,而是跟C相似。

PHP自我解释 如果在php.net的广泛文档中找不到函数参考和示例,请获取PHP源代码并自行查找。Zend核心相当神秘,但扩展并不难读。

简而言之,在你习惯了动态类型语言和垃圾回收器之前,你会感觉像是没有安全带在开车。然而,我认为你很快就能掌握它,并对你的生产力感到满意。


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