3 ms·
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
by agentultra 16y ago
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.
- prodigal_erik 16y agoPython tends to raise errors for type mismatches, which forces you to do the work to avoid them or handle them. PHP usually does something nonsensical instead, which probably screws you over--but you don't necessarily notice unless you are independently sanity-checking its results.
- masklinn 16y ago> 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 16y agoType 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.
- 146 16y ago> Spare yourself this yammering rant. They chose Python because that's what everyone else at the company was cool with. End of story. I don't think it's a bad idea to evaluate the alternatives, even if you are very comfortable with a specific language. Granted we were pretty cool with Python and that is definitely a major factor in the decision, but it can't be the only one. For example, we were all very comfortable using SVN (another technology Facebook uses and is now locked in with). But we didn't use Subversion; we decided to use Git, because the advantages of using a DVCS outweigh our personal sense of comfort.
- agentultra 16y agoEvaluating the alternatives is smart of course. I just don't understand why type-checking and speed were factors in choosing the language you were after. If they were, then why even bother looking at Python at all? It isn't a fast language and doesn't have type-checking. The rest of the article is spent telling me why these features aren't important. Both C# and Java have type-checking (though C# perhaps is a little more loose) and are pretty fast. Yet the article claims that Python is fast enough and that type-checking isn't a requirement because you're more concerned with value assertions (and unit-tests are good enough to validate them). So essentially the article sets up false premises and knocks them down one by one. Type-checking wasn't actually a requirement. Neither was speed. The only reason we are left with for why Quora chose Python was because that's what most people were familiar with. I'm not saying it's a bad choice or that your conclusions were incorrect. I just don't think it was a good article.
- 146 16y agoTrue, I honestly don't think C# or Java were even in the race. I think the only real alternatives I would've been happy with would've been either Scala or some flavor of ML or Haskell, all of which definitely satisfy the speed and type-checking factors that were mentioned. Let's put it this way: if any of those languages had half the library support that Python did, then it would've been a decent fight. But as it goes right now it's not even close. EDIT: Sorry, the library support only applies to ML and Haskell, and I forgot about Scala. I'll have to think about this one; I'm not sure the reasoning for that was entirely well fleshed out.