为什么Quora选择了Python?| 编程派 | Coding Python



为什么Quora选择了Python?| 编程派 | Coding Python

Quora是国外知名的问答社区,性质与知乎类似。它的创始人Adam D'Angelo曾是Facebook的员工,众所周知,Facebook大量地使用了PHP,而Adam在开发Quora时,使用的却是Python。这到底是为什么呢?有人在Quora上提出了这个问题,而那个最佳答案自然就是来自Adam本人的了,对于那些犹豫要不要使用Python建站的开发者应该有一定的参考意义。

Adam在回答中很明确地表明了不希望使用PHP,提到Facebook由于历史遗留原因而不得不使用PHP,并不是因为PHP是目前最好的选择。他从自己在Facebook供职的那段经历中,明白了一个道理:选择哪个编程语言是非常重要的,变更的成本极其高昂。

Quora创始人Adam D'Angelo

Adam和另外一名创始人当时对Python语言都比较熟悉。但还是考察了C#、Java和Scala等其他语言。

C#

在Adam看来,C#当时是非常值得考虑的对象。作为编程语言来说,C#非常优秀,但是选择了C#,就意味着要被捆绑在微软的技术栈上。而他们心里更倾向于尝试新的技术方案。另外,虽然微软的SQL服务器也很好,但是考虑到他们要集成许多开源代码,而这些代码对于.NET平台的支持较差。而且,当时大部分最有优秀的工程师都已经习惯于使用开源的产品。除此之外,他们还不愿意冒险使用Mono(C#/.NET的开源实现),因为不知道这个项目能持续多长时间,还存在一些性能问题。

Java和Scala

由于许多原因,Java程序比相同功能的Python代码写起来更加冗长、更加痛苦,而且很难与非Java的代码进行交互。另外,虽然Scala并没有Java那么差,但是也有许多Java和JVM的缺点。Scala语言当时也有点太新潮了,可能会带来一些不必要的风险,因为谁也不知道10年后对这个语言的支持会如何。

Ocaml和Haskell

他们还考虑过OCaml和Haskell,但是二者都没有足够大的生态体系或是足够优秀的标准库,而且对可能要写一些代码的设计师、分析师来说太难了。

Python

Python最大的缺点是速度和类型检查。经过比较和分析,两位创始人认为Python对他们而言已经足够快,而对性能有关键影响的部分都用C++写了;对于类型检查,他们最后编写了非常完善的单元测试,确保不会出现类型错误。既然除去了这2个缺点,他们就很乐意选择Python了。另外,通过过去5年的观察,他们确信Python将继续朝着对他们有利的方向发展。

Adam在回答中指出,Quora的员工目前对选择的这门编程语言还是十分满意的。虽然当初在选择时有一些倾向性,但是公司的所有早期员工对于转型到Python并没有怨言,尤其是之前的PHP程序员。最后他还提到了当时Python语言的几个好的发展趋势。

  • Python 2.6发布后,Quora使用的大部分库都对该版本兼容,因此很快就迁移到了新版本Python
  • Tornado Web开发框架正式开源,Quora则将实时更新网络服务迁移到了Tornado上
  • PyPy发展迅速,最终应该可以正式用于生产,相信以后会大幅提高性能

回答的最后,Adam表示自己对Python语言和Python生态系统的未来充满了信心。


Read full article from 为什么Quora选择了Python?| 编程派 | Coding Python


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts