Why did Quora choose Python for its development?

Dotan Cohen dotancohen at gmail.com
Fri May 20 16:47:15 EDT 2011


On Fri, May 20, 2011 at 19:39, Beliavsky <beliavsky at aol.com> wrote:
> I thought this essay on why one startup chose Python was interesting.
>
> http://www.quora.com/Why-did-Quora-choose-Python-for-its-development
>
> PHP was out of the question. Facebook is stuck on that for legacy
> reasons, not because it's the best choice right now.[1] Our main
> takeaway from that experience is that programming language choice is
> very important and is extremely costly to change.
>
> Python was a language that Charlie and I both knew reasonably well
> (though I know it a lot better now than I did when we started). We
> also briefly considered C#, Java, and Scala. The biggest issues with
> Python are speed and the lack of typechecking.
>
> C# seemed pretty promising. As a programming language, it's great,
> but:
>
> •We didn't want to be on the Microsoft stack. We were up for learning
> something new, and MS SQL Server actually seemed pretty good, but we
> knew we'd need to integrate with lots of open source code that has
> only second-class support for .NET, if it supports it at all. Also,
> most of the best engineers these days are used to open source stuff.
> •We didn't want to take the risk of being on Mono (an open source
> implementation of C#/.NET). It's not clear how long funding will be
> around for that project, and I'd heard of various performance
> problems. Plus, it seemed like everything else in the C# ecosystem
> would assume we were on the Microsoft stack.
>
> For a lot of little reasons, Java programs end up being longer and
> more painful to write than the equivalent Python programs. It's also
> harder to interoperate with non-Java stuff. Scala had a lot of the
> downsides of Java and the JVM, although it wasn't quite as bad. The
> language seemed a little too new and like it would bring some
> unnecessary risk (for example, who knows how good will support be in
> 10 years).
>
> Two other languages we very briefly thought about were OCaml and
> Haskell (neither had big enough ecosystems or good enough standard
> libraries, and both were potentially too hard for some designers/data
> analysts/non-engineers who might need to write code).
>
> We decided that Python was fast enough for most of what we need to do
> (since we push our performance-critical code to backend servers
> written in C++ whenever possible). As far as typechecking, we ended up
> writing very thorough unit tests which are worth writing anyway, and
> achieve most of the same goals. We also had a lot of confidence that
> Python would continue to evolve in a direction that would be good for
> the life of our codebase, having watched it evolve over the last 5
> years.
>
> So far, we've been pretty happy with the choice. There's a small
> selection bias, but all of the employees who'd been working with other
> languages in the past have been happy to transition to Python,
> especially those coming from PHP. Since starting the following things
> have happened:
>
>
> •Python 2.6 got to the point where enough of the libraries we used
> were compatible with it, and we made a very easy transition to it.
> •Tornado (web framework) was released as open source, and we moved our
> live updating web service to that.
> •PyPy got to the point where it looks like it will eventually be
> usable and will give us a significant speedup.
>
> All together, these give us confidence that the language and ecosystem
> is moving in a good direction.
>
> [1] What are the horrors of PHP? and Do Facebook engineers enjoy
> programming in PHP? and Why hasn't Facebook migrated away from PHP?
> and What are some of the advantages of PHP over other programming
> languages? for more on that.
> Via Nizameddin Haşim Ordulu and JR Ignacio.
> --
> http://mail.python.org/mailman/listinfo/python-list
>

They considered Haskell and OCaml and not a single mention of Perl?

-- 
Dotan Cohen

http://gibberish.co.il
http://what-is-what.com



More information about the Python-list mailing list