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

我定期在* n * x环境中用C(ANSI C89 / ISO C90)编程。 我现在处于一个有利于我学习网络开发语言的位置。 特别是,我希望学习一种语言:

  1. …利用我作为C程序员的背景。
  2. …可以产生像stackoverflow.com这样的网站的交互性水平。

我听到很多关于PHP的好东西。 你们有没有其他建议?

笔记

  1. 我熟悉的其他语言:Java,Perl,Tcsh和Scheme。
  2. 我忘了提到我有兴趣学习一种能够在客户端做事的网络开发语言。 如果不清楚,我很抱歉。
  3. 我计划利用我对该语言的了解来开发一个与stackoverflow.com风格相似的网站(当然,这个网站的概念非常不同)。

如果您已经熟悉C,Perl和Java,那么您已经完全了解PHP,您还不知道它。 合理? 也许不是。 但是一旦你开始玩它就会。

您没有说明为什么您正在学习Web开发语言或它的用途。 这是提供此类推荐的关键信息。 在没有这些信息的情况下,我会建议PHP出于以下几个原因:

  • 它以网络为中心;
  • 它非常受欢迎。 找到问题的答案非常容易;
  • 它很容易学习(你已经知道C,Perl和Java,但即使你没有,也很容易)
  • 正如Cal Henderson在他的主题演讲中所说的那样“为什么我讨厌Django” (在DjangoCon 2008上也不例外)“PHP是一种严肃的语言”。 它支持互联网上排名前20的网站中的4个(维基百科,Flickr,Facebook和其他一个我忘了;
  • 它与Perl并没有太大不同,尽管Perl确实有一些不同的打字系统,而正则表达式在Perl中更为一流。 加上PHP没有$ _运算符,但尽管存在许多相似之处;
  • 作为一种动态脚本语言,它将帮助您摆脱强类型模式,这应该会带来一些变化和有用的体验;
  • 尽管PHP支持对象(我订阅了PHP不是面向对象的视图),但大多数PHP都是以程序方式编写的,这使得C程序员更熟悉它;
  • 它拥有一套非常丰富的图书馆;
  • 它只需要Apache,它非常轻量级,因此,与Java或ASP.NET托管相比,托管非常便宜; 和
  • 只需保存文本文件并在浏览器上单击重新加载即可查看会发生什么,而不是单独执行编译,构建和部署步骤。

PHP的语法与C非常相似。但是,它有其不同之处,你无法管理指针和内存(至少,不是我所知道的)。 这也很容易。

PHP是一种服务器端语言,因此浏览器与它没有任何关系。 他们都将获得相同的HTML / CSS信息,并且它们的区别在于它们。

如果你想拥有像这个网站这样的互动水平,你应该看看Javascript(和它的框架(即:jQuery)。这种语言负责网络开发中的客户端。

我喜欢前面提到的所有选项。 只想添加一下,如果您已经了解PERL,那么您可以使用它来生成您能想到的所有网站。

很多人都在谈论PHP,.NET,java等等。

但我要提出一个新论点:

对于网络而言,服务器端正在快速变得无关紧要,特别是当您考虑您的标准(SO.COM的交互性)时。 您想学习4项核心技术。 如果你认为你了解它们或者可以在没有学习的情况下解决它们,那么你可能错了。 这些标准已经发展了太长时间,如果你只是想通过死记硬背来学习“应该怎么做”的阴影,这太容易了。

1)现代,标准(x)HTML。 知道HTML / xHTML中的内容和内容是什么4.想想你知道吗? 你知道块级元素和内联元素之间的区别吗? 你知道哪些元素被允许在哪些元素中?

2)CSS 2.1或更高版本。 我推荐O’Reilly的“CSS:The Definitive Guide”。 了解内部和外部的CSS选择器。 技术#4你需要它们。 你会惊讶于CSS中可以完成的任务,你认为你只能用HTML中的大量标签。

3)Javascript。 不,我不是在开玩笑。 它不再是一种不起作用的笑话语言。 有用。 这是运行响应最快,最具互动性和最有趣的网站(谷歌地图,SO.COM)。

4)JQuery。 它是如此光荣,我发现自己甚至无法说出来。 也许评论者会因为它的光辉光环而不能克服它,并且能够呼吸它的名字。

由于所有真正令人印象深刻的东西,IMO,如今在客户端,服务器端语言并不意味着那么多。 我喜欢.NET的LINQ语法。 我一开始对它表示怀疑,但这些天我正在喝加仑的加仑。 但是,如果您选择PHP或RoR或Java或其他什么,那很好。 但这应该是次要决定。 首先学习以上4种技术 – 无论您在服务器上做什么,都需要它们。

您需要同时考虑语言和平台。 C#中的ASP.NET MVC将是我的推荐。 语法将非常熟悉。 MVC是一个很好的模式,支持jQuery烘焙,为您提供良好的跨浏览器支持javascript。 MVC还为您提供了对生成的HTML的更多控制。 事实上,它是SO所基于的平台。

这取决于你想要做的事情的复杂性。

几乎每张海报都提到过,PHP对于服务器端Web开发非常有用,简单的东西很简单,复杂的处理得相当好。 PHP语法与C类似且逻辑上一致 – 您几乎不需要参考优秀文档的语法部分。

然而,php只是提供页面,你需要学习HTML,CSS和可能的一些Javascript来放入这些页面。

我个人犯了一个错误,认为Javascript只是另一种基本的脚本语言,错过了JavaScript可以带来的力量,优雅和可能性多年。 您在gmail和stackoverflow等网站中看到的几乎所有交互式好东西都归结为Javascript。

同样,这些网站上几乎所有“酷”的视觉呈现都归结为CSS。

对于极其复杂的后端内容(特别是如果你需要在页面之间保持状态)你最好使用Java和各种框架(Tomcat或Jetty,加上带有Freemarker模板的Spring,以及IBATIS是我个人的获胜组合!)。 这里的问题是这里有一个陡峭的学习曲线,如果你真的需要Java后端的强大function,你只想去那里。

如果你想在客户端工作,那么选择Javascript是必须的。 所有主流浏览器都支持它,并且有各种丰富的框架可用(jQuery,dojo,ASP.net)。 有些人仍在使用Java applet,但整体applet非常奄奄一息。

如果你坚持使用PHP,那么请理智,并使用一个体面的框架。 我强烈推荐CakePHP,但我不想开始任何神圣的战争。

你提到Java的经验 – 为什么不应用它? 或者,作为C程序员,C#和.NET怎么样?

世界是你的软体动物,朋友。

有了Perl和C背景,我认为PHP会很容易实现。 了解框架和那类事物。

我非常严格地说是C程序员。 它不是我有一个狭窄的范围或害怕其他语言,它只是我的工作所要求的语言。 我所做的大部分是虚拟化,云计算等的后端自动化。

偶尔,我必须将某种网络前端放在一起,将所有东西捆绑在一起。 当我这样做时,我真的很喜欢使用PHP。 事实上,我发现大多数使用具有强大C背景的PHP的人都可以非常高效和富有创造力。

这就是我喜欢PHP的原因,以及为什么在熟悉C语言的情况下加入PHP很酷:

PHP很容易扩展。 虽然PHP确实附带了一组非常丰富的库,但您经常会发现(至少我这样做)您需要它来本地使用其他库。 一个很好的例子就是libvirt。 您可以将libvirt中所需的function转换为PHP函数,而不是调用和抓取一堆shell分支。

PHP不会推动OO概念正如其他人所说,PHP作为面向对象的语言做得很好。 但是,它的语法并没有推动 OO方法。 换句话说,您的代码看起来不像是在程序上使用OO语言的人。 它读起来很像C.

PHP解释自己如果你在php.net上的大量文档中找不到函数引用和示例,请抓取PHP的源代码并自己查找。 Zend核心相当神秘,但扩展并不难以阅读。

简而言之,直到你习惯了带垃圾收集器的动态类型语言……你会觉得你没有安全带就开车了。 但是,我认为你会很快接受它并对你的工作效率感到满意。

如果你是一个优秀的C程序员,为什么不继续简单地用C代码? 使用不同的编程语言是有正当理由的,但仅仅因为您要为网络编码不是其中之一。 有两种流行的方法可以使用C进行Web开发:

  • (F)CGI,其中数据在环境和命令行中传递
  • 编写自己的迷你网络服务器,可以与端口80或更高端口进行通信,并使用mod_proxy或nginx

我和几位在C和/或JAVA之后学过PHP的同事一起工作过。 他们真的很高兴。 如果你想成为一个.net人并且对这些环境有所了解,你会发现C#很熟悉,但对我而言,它充满了艺术性的艺术品。

到目前为止,我会推荐C#。 其中的OOP非常棒,您可以轻松地使用Design Patterns。 它从头开始构建为OOP。 它也是一种{}语言。