

Why did Quora choose Python (over PHP and others) for its development? - rxin
http://www.quora.com/Why-did-Quora-choose-Python-for-its-development

======
cageface
The python/ruby thing seems to be at an interesting point. Python as a
language has a bigger mindshare but none of the python web stacks has close to
the adoption that rails does.

As far as I can tell there seems to be a lot more peripheral innovation in the
ruby camp though, particularly in testing tools. Are there python equivalents
to rspec, cucumber, factory_girl/machinist, shoulda, passenger, haml, webrat
etc?

~~~
edanm
I'm not sure about the framework adoption thing, Django seems to be the major
Python framework. I'm not saying there aren't others, but most newcomers to
Python web dev quickly realize that Django is the name of the game.

~~~
cageface
Yeah Django is definitely the big player. It's interesting though that python
is bigger than ruby but rails is bigger than django.

~~~
devonrt
Django is arguably the most used Python web stack, but it's also a much more
controversial choice than Rails is in the Ruby world. I hear "you'll outgrow
Django really quickly" a lot; whether that's true or not I can't say since
I've never used it. Also, there seems to be a lot more choices for web
frameworks in the Python world: Django, Pylons, web.py, Tornado, Flask,
CherryPy, Zope etc. I'm not sure if this is the case in the Ruby world. All I
ever hear about are Rails and Sinatra.

~~~
epochwolf
> All I ever hear about are Rails and Sinatra.

I got two theories.

First theory.

Ruby allows developers to make really nice DSLs. (Domain Specific Languages)
It makes sense to me that there would only be two major frameworks. Rails
fills the need for a batteries-included framework and Sinatra is the a light
weigh, nothing included framework. Both have expressive enough implementations
that the community doesn't build their own frameworks.

Python doesn't make as pretty code for a DSL which makes it more likely to hit
pain points in expressing what you want. Then you end up with a fragmented
community around these different pain points.

Second theory.

People start using ruby because of rails. If rails is too heavy, they move to
sinatra. Most of the people using ruby can't be bothered to write their own
framework.

Most people using python learned python before web development. They are more
experienced in the language and used to doing their own stuff. They try out
different frameworks and if they get disgusted enough with them they create
their own.

Disclaimer:

I'm a ruby guy. I used python for two years before learning ruby and then
rails. These are only theories. I probably look at ruby more nicely than I
should but I tried to be somewhat objective.

~~~
lenni
Can you explaint to me what all these little DSLs are useful for? I have heard
this being presented as an advantage for Ruby before, but can't really think
of many use cases for DSLs (apart from business rules).

~~~
masklinn
> Can you explaint to me what all these little DSLs are useful for?

Writeability and readability. The ability to bring in domain experts which
have no knowledge whatsoever in programming as well.

> but can't really think of many use cases for DSLs (apart from business
> rules).

Any domain-specific knowledge/data may be encoded as a DSL, and benefit from
it. The rules of your business, the URL mapping of your framework, the GUI
layout of your application, the steps of your tests, ... In fact, they often
are (in WPF, XAML is used as a GUI definition DSL; Ant is a domain-specific
language for building applications, so is Make).

The great advantages of the likes of Ruby, however, is that you can build DSLs
in the language itself (you don't have to build your own compiler and
translator from DSL to language), which rids you of most of the complexity and
limitations of usual DSLs, and lets power users realize that there is a full-
blown general-purpose language under the DSL (and use that power when they
need it).

------
agentultra
_The biggest issues with Python are speed and the lack of typechecking._

Interesting that they took this bit of wisdom away from programming in _PHP_.

I say this because I've never heard anyone consider a lack of type-checking as
an issue when considering Python. It's a feature. You either need type-
checking or you don't. I suspect that the Quorum engineers didn't need type-
checking, so I don't understand why the felt the need to consider it an
"issue" with choosing Python.

Spare yourself this yammering rant. They chose Python because that's what
everyone else at the company was cool with. End of story.

~~~
masklinn
> You either need type-checking or you don't.

That's not really correct. In general, nobody _needs_ type checking (it's not
like there's any actually done where it would be needed the most), but it's
"free" error checking. Always nice to have.

But it is a feature to balance against others.

Anyway, considering how weak the type systems of "industry standard" languages
are as opposed to Ada, or MLs, or Haskell, the common type-checking trope is
mostly a huge joke.

~~~
agentultra
Type checking has many benefits other than making assertions about value
types. It can provide hints to the compiler and has proven useful in some
models of parallel computation. It isn't simply "free error checking." One
should be able to discriminate from problems that require type-checking.

It just seems that in most cases it isn't actually required.

------
paulsmith
"We didn't want to take the risk of being on Mono [...] It's not clear how
long funding will be around for that project"

Can anyone elaborate on that or point to some reading?

~~~
texasrgr453
I guess they're implying that Mono ins't a money maker at Novell? Mono is
great and all, but maintaining an entire development platform, along with IDE
and and myriad of docs, strictly for internal use may be a bit too much for a
company of their size.

------
rxin
My biggest problem with Django is that the entire data model layer is designed
with relational database in mind (i.e. normalization and JOINs). Many of the
new data stores (RDF stores, Google Data Store for App Engine, etc) are
inheritantly non-relational.

~~~
mkramlich
start with web.py

then incrementally add code as you need it, how/where you need it, including
how to persist

~~~
146
How have your experiences with web.py been? The disadvantages I saw with it
are that it just doesn't have a really large community, plus there are
features I just don't want to build myself. Django's built-in admin/ app, for
example, or Pylon's error page.

~~~
mkramlich
I like starting web apps with web.py, and I like building what may end up
being merely demoware or a narrow tech prototype using web.py. I think it
excels at whipping up a dynamic Hello World web app in just a few lines of
code, with no boilerplate directory tree or scriptage, and no messing around
with external servers, and no external code dependencies. Add sqlite when need
persistence. Add memcached when need caching. Grow and refactor as you go.

But if I'm _very_ confident it's going to become part of a long-lived dynamic
web service with enough of the features Django provides anyway -- especially
that awesome built-in admin UI -- then yes I start with Django. The
mindshare/community factor is helpful too. I know there are other web
frameworks which are decent but going with a big framework other than Django
in the Python space today is a bit like going with FreeBSD rather than Linux
when all you really need is some sort of free Unix. To pick Linux is to get a
bigger ecosystem today and therefore probably also a longer supported future.

------
andrewtj
Charlie Cheever's comment "Python data structures map well to JavaScript data
structures" resonates with me. I'm building something in Erlang right now and
having come from Python, it's just plain grating.

------
code_duck
Wait, you mean this was a serious question? Not a comedy routine?

~~~
crystalis
Wait, you mean this was a serious comment? Not a comedy routine?

~~~
code_duck
No, it was actually my idea of a comedy routine. Around here, attempts at
being the forum comedy act are frowned upon and thus end up somewhat similar
to masochism, but it's therapeutic in the end.

~~~
mkramlich
lately i'm trying to exercise my desire for humor over on Reddit rather than
here, for the reasons you stated. Goes down better over there. Plus they have
narwhales.

~~~
code_duck
I'd give anything for a friendly narwhal right now.

~~~
code_duck
Christ, some people here are fucking uptight. Quality comments are one thing,
and HN has done a good job of keeping a quality community, but having a stick
up your ass is a different matter.

~~~
mkramlich
yep I've been getting sick of it lately. I'm on to better things.

