Also, was there a specific reason you chose Sinatra over Rails? I'm not familiar enough with either to make an informed decision so it would be interesting to hear others opinions.
Also, was there a specific reason you chose Sinatra over Rails? I'm not familiar enough with either to make an informed decision so it would be interesting to hear others opinions.
Coming from C++, Rails might drive you nuts. I like to be certain of what my code is doing. To achieve this with Rails, you either have to: 1 - write _loads_ of tests or 2 - dig through Rails source to ensure the DSL does precisely what you think it does. You don't want option 2 as Rails source is a nightmare. Option 1 may not fit your sensibilities if you're used to writing defensive code and writing too many tests seems a waste of time.
I can't speak for digging through Django source nor can I speak for how clearly documented the DSL-like things are.
If you want more control over your app behavior or simply see what's going on easier, the python world has webpy and cherrypy. The Ruby world has sinatra. Something in between Rails and sinatra is merb.
My understanding is that Rails has trended that way lately, but since I don't use it day-to-day I can't say whether that's the case.
I can't compare the Django source to Rails, having never really read the latter, but on its own it's pretty good. Like any large-enough pile of code, there are ups and downs, but whenever I've had to dig in and understand what's going on, it's been fairly straightforward to follow.
It sounds like you have enough python under your belt and like django well enough. I'd recommend going with that. Your not missing out on some other framework/language pair that is more powerful.
I use ruby/merb. I occasionally look around for something I like better but nothing is worth the switching costs at this point.
I like Sinatra partly since we were building apps on our own (non-SQL) database and partly because there just wasn't much to learn. I like things that I can work with progressively rather than having to invest a bit of time in up front to get started.
(My opinions on PHP, Python and Ruby were all formed relatively recently as I learned each of them to write the language bindings for our webservices API.)
Perl is horrible. It basically showed us that python/ruby languages were possible, but is horrible, and lots of legacy code it in is often horrible.
There is indeed a lot of terrible Perl in existence. But new Perl code is quite nice I can use two modules and reasonably assume that they don't both make conflicting changes to the global class hierarchy. In Ruby... not so much, at least if you are using Rails.
Did you know that Perl 5 looks like this now?
You are picking the people you're programming with when you pick a language. Lots of people do very dirty dirty things in perl, and while those exist in Ruby and Python as well, proportionately they are much fewer in number there.
Rails is the bomb, except when you need to scale, or something is wrong.
Python by far has more modules, and ties into C easiler (and C++ via weave).
...when you need to dig into the Rails source to figure out what's going on. You really need to fully master Ruby to be able to grok Rails source well.
I think both languages have easy enough C binding.