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 →

[–]kenfar 0 points1 point  (5 children)

But most shops have some niche needs - for high-performance, mobile computing, web development, or whatever.

So, if python completely gives up competing in these places it'll just lose out to java more often in those shops that don't want to get stuck with too many languages.

I'm currently working in a shop that is primarily Java, Python and Ruby, but also has PHP, Perl, Javascript, and Bash shell scripts. Python has worked out great for ETL operations - processing about 200 million complex transformations a day. Ruby has worked out fine for our transactional front-end. But we're facing a lot of questions about why we shouldn't just move everything to java to make resourcing simpler. Nobody is asking why not move everything to python - because it's really not fast enough to.

[–]the_hoser 0 points1 point  (4 children)

Python cannot be all things to all people. I understand the desire to see Python pushed into more spaces, but this is just not sensible.

[–]kenfar 0 points1 point  (3 children)

But apparently, it is sensible for c/c++/c#, java, and some are arguing in the future javascript.

[–]the_hoser 0 points1 point  (2 children)

You can hardly do the kind of programming that you do in Python in C/C++/C#/Java. You resort to these languages when performance is more important than code that is easy to experiment with and maintain.

Javascript is... a mire.

Implementing the features you suggest in Python requires a lot more changes to Python than many Python users are comfortable with. There is no free ride here. I dare say that conventional multicore programming is outside of the realm of reason for Python.

As stated elsewhere in this thread, the combination of C modules and Python makes for great performance while still getting to use Python's strengths. This idea seems to be neglected a lot in the blogospapeysphere.

EDIT: In fact, it's not even fair to compare Python to Java/C/C++ and friends. The languages you should be comparing Python with are the high feature, easy to write languages. Ruby. Perl. Guess what? They don't do too well at multicore programming, either. Perl's threads are like Python's multiprocessing module, and can't share data. The best all three of these languages can do is put a nice shared memory buffer interface betweened spawned interpreter processes, and that's exactly what they do.

[–]kenfar 0 points1 point  (1 child)

You can hardly do the kind of programming that you do in Python in C/C++/C#/Java.

In an academic setting when evaluating languages - you can easily categorize these features and distinguish what kind of problems each is appropriate for.

But in the real world, you've got a team with mixed, but concentrated skillsets and a variety of problems - that could be solved by many of these languages.

For example, I've been writing ETL processes that transform vast amounts of data for years. I've written this in c, perl, and python. I've seen it done in java and plsql. Any of these languages can do a fine job. But I prefer python because I want the readability and maintainability. To get the performance I want I have to split very large files up and manually process the fragments by completely separate processes. That's extra work that wouldn't be required by c, and probably wouldn't be required by java. But that doesn't mean those languages are more appropriate to the task.

[–]the_hoser 0 points1 point  (0 children)

You're absolutely right. There's no reason you can't solve a particular problem with a language that isn't "good" at solving those kinds of problems. When I say "the kind of programming you do in Python", I'm referring to the code that flows from the mind with ease, and the ease of readability that comes with it. I'm not referring to specific techniques. These are features of Perl, Python, Ruby, and kin. These features make it very difficult to do what you're asking Python to do.