I love Python; that's the first language I've learnt and I can't really live without its REPL. I only think that the industry has a tendency to excessively obsess towards certain languages, even when they are not the best tool for the job. For instance, I strongly believe that the academia's morbid obsession with Java has crippled a whole generation of new programmers, which are now unable to think and code in no other way but the Java™ Way. I won't say that python is as bad as Java in this regard (it isn't even close), but it annoys me to death when it looks like we're heading once again towards a language monoculture; at least this time the language isn't utter crap.
Isn't that's only true for data science?
What about the JavaScript monoculture :(
And academia still has courses for C java C++ etc. No respectable University teaches a single language!
Not like it solves anything -- just that there's this side of the argument too..
> I've seen horrible stuff, such as C89 still being thought like it's the only standard available, or gets()...
Youre absolutely right -- although one could argue that the curious will have the decency to look this stuff up (like myself)
The teaching system is still pretty rekt on the python side of things. Its not like you'll find people who actually code teaching at Universities anyway :(
Like now we're just going into how bad the teaching system is. The original argument that python is reaching is a monoculture seems weird to me, when I can't even run the damn thing on a browser..
At the end any new technology trend only has only 2 - 3 years, before people flood it and dilute both quality and wages.
The education system is another mess, which no one can clean up because the education system is designed to address literacy skills at scale(quantity), not quality.
Other big problem in the Indian system is endless optimization towards exams/interviews. Go to any OJ site on the internet and you see people even from Ivy Leagues(IITs etc) and NIT's flooding the site all day doing interview related algo work instead of focussing on their day jobs.
Its not just Python, tomorrow some thing else could be famous and you can see thousands, may be even tens of thousands of people learning it in India in a few months/years. This is regardless of the merit of the technology.
People really do need to be taught how to make out buzzwords from real tech; and the major responsibility falls in the hands of universities.
Maybe it's just because most people are just trying make their way out of poverty, and this kind of work _looks_ like a sure shot, get out of slum ticket.
Maybe it's because most people are led to believe that money is the only thing that matters..
It is much easier to decouple something in a dynamic language. The re-factoring needs in a dynamic language is thus entirely different.
Also, the de-coupling and modularization of functionality has been a thing long before dynamic languages became so popular. You simply need an FFI, and then the compiler makes sure that everything is straight before you get anywhere near deployment.
Refactoring a python project is usually one man's job.
Refactoring a Java project takes a whole department and process management crew.
- rename/move class (and autoupdate all references)
- change method signature
most of it is just stating what you want and the tool does it for you. I don't see that level of support from python IDEs.Sorry but you are wrong. Just plain wrong. There are benefits for both languages. But to say python is easier to refactor is like saying Java is more concise. It isn't.
>Refactoring a Java project takes a whole department and process management crew.
Has nothing to do with the language, but the company. A small company will refactor and have an update out same day in Java. An enterprise using some python will be as you say
I've always found C++ much easier to work with, if not to actually write.
I think that the real problem is not having a good test coverage, and I agree that bad programs written in Python may be harder to work with than bad programs written in a statically typed language (but in a good codebase, even if large, I'd rather be working with Python).
-- although note that in the latest incarnation of Python you can try to use Mypy (http://mypy-lang.org/) along with https://github.com/Instagram/MonkeyType or https://github.com/dropbox/pyannotate to add types to you and go from there if you really miss types too much and this could make a bad codebase bearable (I'm personally waiting for PEP 544 before adding any types though as I'm not a fan of the type system implemented in PEP 484 very much).
Refactoring in a non statically typed language cant be as straightforward - many refactors in statically typed language can be automated and guaranteed safe.