最适合照片共享网站的语言:PHP、Python、Ruby 还是其他? [关闭]

Posted

技术标签:

【中文标题】最适合照片共享网站的语言:PHP、Python、Ruby 还是其他? [关闭]【英文标题】:Language best for a Photo-sharing site: PHP, Python, Ruby or something else? [closed] 【发布时间】:2011-12-24 11:09:12 【问题描述】:

我计划为摄影师建立一个像 Flickr/Picasa 这样的照片共享网站,其功能最适合他们。如您所知,如果该项目成功,那么每天都会发生许多 GB 到 TB 的数据传输。

这个问题不仅与我的应用程序在增长过程中的可扩展性有关,还与性能有关。我想做出明智的决定。我想我会使用 mysql 数据库、用于客户端脚本的 javascript/jQuery,但问题是使用什么服务器端语言 - php、Python、Ruby 或其他什么?

在开发需要在一段时间内扩展的应用程序(即可扩展编码)时,肯定有一些事情需要牢记。如果有任何你想推荐的,它们是什么?

注意:我指定“照片共享站点”是为了让您了解我的使命。否则,这个问题看起来不会那么主观。请这样吧。

【问题讨论】:

没关系。 YouTube 完全用 Python 编写,flickr 完全用 PHP 编写。选择你喜欢的任何语言。 @Sven Marnach - 如果我选择任何语言,性能是否会相同(至少差不多)? 老实说,学习如何编程。一些特定的语法规则并不重要。 @BadLearner:正如 nightcracker 所说,性能将取决于您的代码,而不是语言。最终,它还取决于您的硬件。 【参考方案1】:

任何。语言无所谓。 Ruby ***者(尤其是 RubyOnRails 之类的)会尝试告诉您,他们的语言只需 10 行即可完成所有操作并且它会让您吃晚饭并接孩子放学。其他人会告诉你他们的语言是最安全、最快、最快的开发等等。忽略他们。

我喜欢 Python,我很乐意推荐它 - 但说真的,它不会有什么不同。只需选择您最了解的语言并开始写作。因此,如果那是 Java,请开始编写 Java。如果那是 C++,见鬼,开始写 C++。

我不相信那些说 [在此处插入语言] 发展最快的人。这完全取决于您觉得舒服。一些语言提供了额外的功能,但您始终可以编写一个库,在需要时提供该功能 - 不会花费太长时间,而且很可能有人已经这样做了。

记住:Facebook 是用 PHP 编写的(尽管他们现在将很多 PHP 编译成 C++ 以提高速度),MySpace 是用 C#/ColdFusion 编写的(我相信),Twitter 使用 Ruby On Rails(尽管他们打算放弃它显然),谷歌使用 Java/Go(我认为)和 LinkedIn 使用 ASP.net 或我认为的东西。我的观点是 - 大量的服务,大量的语言,他们都做得很好。现在,任何语言都可以。

我最喜欢的小短语是“just build it”。虽然拥有一个好的架构并考虑性能和可伸缩性是个好主意——如果这些事情会让你在项目中途放弃,那么麻烦有什么意义呢?此外,假设项目增长,您可能需要在以后重新编码其中的大部分内容。真的认为 Facebook 使用的代码与一开始时相同吗?

因此,总而言之,选择您想要的任何语言。会好的。

【讨论】:

出于兴趣,有没有像样的 C++ Web 框架?我不知道有多少用 C++ 编写的网站,我知道的唯一网站是 OkCupid。 这里是最受欢迎的,我认为:webtoolkit.eu/wt 没用过,但我听说它应该很好。 但老实说,您不认为像 C++ 这样的低级语言比像 C# 这样的内存管理具有更高的性能 @BadLearner:我个人会选择 PHP 或 Python,因为它们是我最熟悉的语言。 @BadLearner:视情况而定。就个人而言,我会选择一种语言并在其中编码所有内容。然后,寻找性能问题。假设您正在 PHP 中调整图像的大小并且需要一段时间,也许您可​​以使用 C++ 使用 cronjob 开始执行此操作。但不要过早优化!只需编写代码。当然,请注意性能,但在至少发布版本之前,不要担心每毫秒都减少。【参考方案2】:

PHP 可以做得很好。 Python 也可以使用 Django 或 turbogears 等 Web 框架来实现。 话虽如此,只要语言具有您的帖子似乎规定的网络功能,语言就不是问题

【讨论】:

【参考方案3】:

我用各种框架用 PHP、ColdFusion、Java 和 Ruby 完成了 Web 应用程序。我发现 Rails 是我用过的最强大的 Web 框架。没有什么能比得上它,因为强大的力量来自 Ruby 语言,没有其他语言(可能除了 Smalltalk)能真正与之匹敌。也就是说,只要您使用适当的开发实践,您应该能够用几乎任何语言完成它。

但是,您确实想将 MySQL 用作数据库。 PostgreSQL 更加强大和可扩展,并且没有 MySQL 的愚蠢限制和陷阱。

【讨论】:

那么为什么 Twitter 会从 Ruby 切换呢? 因为 Twitter 搞砸了他们最初的设计并最终得到了一些非常低效的东西。 (他们是最早在 Rails 上托管的大型网站之一,所以当时没有人知道我们现在知道的很多事情。但我知道他们的数据库设计只是 愚蠢。)而不是改进他们的 Rails 站点为了获得他们需要的性能(这本来是可能的),他们决定用 Scala 替换很多 Rails 的东西。 OTOH 的 Ravelry 使用 Rails 构建了一个大的、高流量的站点,并且做得很好。 另外,请记住这一点:您可能无法满足 Twitter 的性能要求。尤其是在您进行照片共享时:既然 Twitpic 和 Flickr 已经做得很好,为什么还有人使用您的网站? 如果这是开发人员的想法,那么在雅虎当时表现出色的时候就没有 Google,在 Orkut 和 MySpace 统治社交网络世界的今天也没有 Facebook。恕我直言。感谢您对 Twitter 的澄清。 AFAIK,Postgres 是最好的。它无疑是最好的开源 SQL 数据库。如果您想要快速,您还可以查看 MongoDB(它具有与 SQL 数据库不同的一组限制)。

以上是关于最适合照片共享网站的语言:PHP、Python、Ruby 还是其他? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

分析了上千张照片发现:R语言程序员最快乐,Java开发者最年轻

共享照片网站的数据库设计?

部署社交网站-SVN 与 LNMP架构

搭建社交网站

部署社交网站

社交网站部署——MFS分布式文件系统