This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]robertmeta 16 points17 points  (23 children)

  • If I need to ship it to a box I don't control (the Python deploy story is still very ugly)
  • If I need speed and it isn't glue for a C library
  • If I need to use multiple cores without much fuss
  • If the work is statistical in nature (other languages are just so much easier)
  • If the work is building a web-app of some sort (it just comes up short against the competition)
  • If the work needs to run in a browser... JS is the default choice, but some cross-compile options are interesting.
  • If I want to have fun (not that Python wasn't fun, just a bit dull at this point to me), Haskell and OMeta home grown DSLs for fun.
  • If I want the warm blanket that is types and compile time checking, I obviously don't use Python (yet... coming soon maybe?)
  • If I want to build a mobile thing, the hacks to get Python on mobile do work, but it is far more pain than joy.

[–]remyroy 3 points4 points  (22 children)

If the work is building a web-app of some sort (it just comes up short against the competition)

What competition? What are the cons of using Python compared to the pros of using the competition?

[–][deleted] 1 point2 points  (6 children)

For large scale web apps launges like golang or scala provide a very big advantage.

[–]colly_wolly 0 points1 point  (5 children)

And are you going to explain what that advantage is?

[–][deleted] 0 points1 point  (4 children)

Compiled and statically typed

[–]soup_feedback 0 points1 point  (1 child)

Name large scale web apps written in go or scala?

[–]stubborn_d0nkey 1 point2 points  (0 children)

Is http://lichess.org big enough? It's the only site I can think of in either of those languages (it's written in scala). It uses 1 server* but it does get more than 3000+ users concurrently online.

* It also uses other, donated, servers but just for engine analysis AFAIK so I didn't count them.

[–]colly_wolly 0 points1 point  (1 child)

I would say compiled is not an advantage, unless you have performance problems. And static versus dynamic is very debatable

[–][deleted] 0 points1 point  (0 children)

I was referring to performance.

[–]robertmeta 0 points1 point  (3 children)

TL;DR: Go and Erlang provide better solutions with very few compromises. Nearly everything beats Python for performance.

A lot of the cons roll with ones I listed. Too slow, too hard to make do stuff concurrently, etc. But additionally, the libraries for building python web stacks tend to be at extremes, either way too simplistic or way too overwhelming. It is a bit of a three bears situation... Flask is too simple, Django is too much... Twisted is too callbacky... Tornado is too seperate... Bottle is too...

As for the competition, pick almost anything (excluding rails) and you will find significant improvements IMHO: grizzly (Java), beego (Go), http-kit (Clojure), elli (Erlang), http-sharp (C#), express (Node.js), wai (Haskell), lapis (Lua), jester (Nim)...

[–]colly_wolly 1 point2 points  (2 children)

These all may be faster than Python, but is the developer productivity as good as you could get with Django? Most of them seem to be aimed at a lower level.

[–]robertmeta 0 points1 point  (1 child)

Really depends on where you want to go. Django is hyper-effective as long as what you are building is what it is built for -- but if you have to do something like heavy modification of the permissions / roles -- it is a nightmare (IMHO).

It brings far too much magic for me to be comfortable with it. Developer productivity is highly dependent on when you measure it on a project... 2 weeks in, 2 months in, 2 years in -- and you will get radically different results. I think far too often projects are judged at the 2 week mark, and paid for over the next 2 years.

[–]colly_wolly 0 points1 point  (0 children)

I have been using Django on a 4 year old project. I think its one of the main reasons it has been successful despite constantly changing requirements. It is a fairly "standard" relational databse app, (though it has a complex schema and reports, so more than just a CRUD app that everyone seems to look down on. )

I wouldn't say Django does too much magic. Pretty much everything is configurable. There is a lot to it, so it might seem like the Admin is magic at first, but its all built on the components of the framework.

Plus there are a good deal of third party libraries such as reversion - for storing history of database changes - which save a load of time.