zoukankan      html  css  js  c++  java
  • 听创始人讲Quora为什么选择Python


      我最近去注册了quora,并在上面阅读了不少有趣的文章。作为一个不用FQ就能完美体验的国外顶级社交网站之一,特别还是一个知识问答社区,Quora真的是一个非常值得去国人去体验的网站。尽管国内像知乎这样的知识社区已经发展得很不错,但在某些方面(比如计算机编程、经济、心理学等一些专门领域的发展还很滞后,国外有overstackvanilla等专业社区)。


      回归正题,最近阅读的文章是Quora创始人Adam D`Angelo回答为什么选择Python来开发的缘由。(以下翻译是Adam第一人称)


      尽管Facebook因为一些历史遗留原因还在使用PHP,但PHP放到现在来看肯定不是最佳选择,因此我们先排除了PHP.从我们过去的经验可以知道编程语言的选择是至关重要的,因为去改变企业的编程语言的成本是极大的。
      Charlie和我都认为Python是一门非常了解的语言(尽管我可能比他了解得更透彻一点)。我们也曾有段时间考虑过选择C#、Java或Scala来开发语言。Python最大的问题是其运行速度不高和缺乏类型检查。


      1. C#似乎是很有发展前景的,单独来看,它一门很强大的语言,但是:
    (1)我们不想在微软平台上开发。因为我们当时学一些使用大量开源代码的新技术,尽管MSSQL Server很不错,但我们需要整合只为.NET提供二级支持的开源代码。而且,大多数顶级工程师都使用开源技术。
    (2)我们不想冒使用Mono(一个C#/.NET的开源项目)的风险,并且当时我还不清楚支持Mono项目的资金能维持多久,也了解到Mono的各种性能问题,并且它将带来类似C#生态依赖微软平台的问题。


      2.与Python相比,相同的问题使用Java编写,代码更长,Java的众多小问题使编写过程也更痛苦。并且Java与其他语言互操作也更难。尽管有Java和JVM带来的负面因素但Scala比Java更好用,但使用Scala这种过新语言可能带来一些不必要的风险(谁知道在未来10年对它的支持会怎么样呢?)


      3.我们也短暂考虑过OCaml和Haskell(既没有足够大的生态也没有足够好的标准库,而且对于一些设计人员、数据分析人员以及非工程师来说编写这些语言的代码太难)这两种语言。

      
      4.我们决定选择Python主要还是因为它足够快,且能够胜任绝大部分工作(因为我们尽可能将关键性能代码推送到后台服务器端用C++来编写)。至于类型检查问题,我们可以通过详细的单元测试来弥补,这同样能非常有效地完成大多数目标。通过观察最近5年来的发展,我们对Python接下来的有利于我们编码库的演进方向非常有信心。
      到目前为止,我们为当初的选择感到非常高兴。尽管存在一些小的偏见,但我们所有早期的员工都分厂高兴从其他语言转到Python上来,特别是那些原来使用PHP的。值得高兴的还有:
    (1)Python 2.6发布时,我们用到的绝大部分库都保持了兼容,这是我们非常容易的完成升级。
    (2)Tornado(web framework)开源了,我们马上把实时更新部分的web service迁移到Tornado实现。
    (3) PyPy 看上去终于具有可用性了。这将给我们带来极大的性能提升。
      所有这一切,都让我们相信Python及其生态系统在向好的方向发展。

    Quora创始人给我的几点启示:
    1.正如他所说:对于企业来说,选择开发语言很重要,改变开发语言成本还很高。对于开发人员来说,选择开发语言同样重要,但去学习其他开发语言的成本并不高,程序员因该去多尝试新的技术。
    2.拥抱开源,微软的技术栈很先进但Adam排斥C#的原因很大程度上就是不开源,对于程序员说开源必须是首选。
    3.C和C++仍然很重要,尽管JavaScript(因为nodejs)号称Overstack全栈开发语言,Python除了前台后台的开发以外也在大数据方面优势尽显,但C/C++在核心代码编写上的地位仍然不可动摇。

  • 相关阅读:
    java短信验证和注册
    java两个对象属性比较
    mysql像通讯录一样把中文按字母排序的sql
    开发APP必须知道的API集合,来源http://www.cnblogs.com/wikiki/p/7232388.html
    第三方短信接口使用测试
    Guava google缓存机制
    Integer 使用==判断127和超过128的数据的区别
    js加密后台加密解密以及验证码
    sqlserver system object type
    为RadComboBox添加SelectionChanging事件
  • 原文地址:https://www.cnblogs.com/feleventh/p/4794644.html
Copyright © 2011-2022 走看看