Ask Slashdot: Will Python Become The Dominant Programming Language?
An anonymous reader shares their thoughts on language popuarity:
In the PYPL index, which is based on Google searches and is supposed to be forward looking, the trend is unmistakable. Python is rising fast and Java and others are declining. Combine this with the fact that Python is now the most widely taught language in the universities. In fields such as data science and machine learning, Python is already dominating. "Python where you can, C++ where you must" enterprises are following suit too, especially in data science but for everything else from web development to general purpose computing...
People who complain that you can't build large scale systems without a compiler likely over-rely on the latter and are slaves to IDEs. If you write good unit tests and enforce Test Driven Development, the compiler becomes un-necessary and gets in the way. You are forced to provide too much information to it (also known as boilerplate) and can't quickly refactor code, which is necessary for quick iterations.
The original submission ends with a question: "Is Python going to dominate in the future?" Slashdot readers should have some interesting opinions on this. So leave your own thoughts in the comments. Will Python become the dominant programming language?
People who complain that you can't build large scale systems without a compiler likely over-rely on the latter and are slaves to IDEs. If you write good unit tests and enforce Test Driven Development, the compiler becomes un-necessary and gets in the way. You are forced to provide too much information to it (also known as boilerplate) and can't quickly refactor code, which is necessary for quick iterations.
The original submission ends with a question: "Is Python going to dominate in the future?" Slashdot readers should have some interesting opinions on this. So leave your own thoughts in the comments. Will Python become the dominant programming language?
But in all seriousness, is this even for real or just clickbait? Why would we want just one programming language?
Enough said. Whitespace which has meaning is just nasty.
Python is the fidget spinner of programming languages. Python devs are an uppidy bunch who have no idea of the benefits of other languages. Saying the "compiler gets in the way" shows their level of ignorance on this.
And is not an important project, so that you will never do branches or merges.
Because merges + significant whitespace = unholy mess you will spend ages debugging after each merge.
I should hope not. Ruby is much nicer.
My college taught had a course that went through every language to teach differences and focused on the fact that there were different tools for different tasks. The core classes however all used java to teach programming principles. I really felt it was the right approach. Learning different tools is necessary as a programmer, but even more important is the proper mindset, patterns, and approaches, regardless of our chosen language. A good programmer can pickup any language and work towards proficiency then mastery.
Sidestepping interminable arguments about the merits of language A vs language B, and ignoring the flat-out ignorant assertions in the 'anonymous reader's thoughts' about IDEs and compilers, the question is predicated on a culpably ignorant interpretation of the very data they cite.
So here's how PYPL works:
The PYPL PopularitY of Programming Language Index is created by analyzing how often language tutorials are searched on Google.
so... what the data actually show is that relatively more folks want to learn Python these days than C or Java or Haskell (or whatever) — which is scarcely surprising since more non-specialist programmers are learning to code than ever before, and Python is easy to learn and great to teach with for that demographic — what the data definitely do NOT show is that Python is replacing C or Java or Haskell (or whatever) in the production domains in which those languages shine. And it never will.
The prime weakness of BASIC was goto.
I'd say that the prime weakness was the lack of product types and named objects such as functions and procedures, but that's just me...
Ezekiel 23:20
Most of my time is spent working on an app with C++ at the low levels, Python at the high levels, and Perl/JS for web stuff. I am one of two developers who primarily does C++, we have two who primarily do Python, and one who primarily does the web bits. The Python code unsurprisingly does a lot of database operations and IPC, so many of its endpoint types are strings. I am always shocked how many of the Python-domain commits are only to add or remove type conversions that testing missed. That problem is almost entirely absent in C++, with its strong static typing, and in Perl and JS, with their mostly "DWIM" operators and types.
I do not bet on Python being much more than a glue language unless it gets strong compile-type type checking. That may be enough to make it a "dominant" language, because people ship more and more good libraries that can be simply picked up and used by higher-level code, but it will probably never displace other languages without stronger compile-time checks.
Python has completely stepped on it's own dick by making v3 scripts incompatible with v2. In all likelihood it will never get over that clusterfuck. For data science, R is the future, and for everything else, it's really a toss-up.
The prime weakness of BASIC was goto. I suspect you're just trying to conflated the two because both are popular as teaching languages. Besides that, the two aren't comparable in any way.
Except that python is ALSO useful in the real world.
You think Basic wasn't useful in the real world? You must have been asleep for the latter part of the nineties.
I'm a minority race. Save your vitriol for white people.
The clusterfuck was not that some stuff broke in version 3 but that the community wasted an inordinate amount of effort and time supporting version 2 and version 3 in parallel, backporting some things, writing shims, maintaining & building two code bases.
Version 3 should have come out and the community told that in 18 months version 2 was going to be mothballed. A clear timeline that would have focused minds and moved the language forwards.
That would have killed both versions. You underestimate the utility of backwards compatibility. Entire sub-optimal technology stacks currently owe their existence to being backwards compatible. The optimal ones with no backwards compatibility didn't make it.
I'm a minority race. Save your vitriol for white people.
Entire sub-optimal technology stacks currently owe their existence to being backwards compatible.
The x86 platform being a perfect example of that.
That, and the fact that python is horribly slow.
So was Java, once. Python has JIT-compiling these days, and thus, like Java, can potentially run faster than static-compiled programs.
What Python doesn't have is strong type enforcement. Unless you pre-compile the whole app, entire source files could be filled with monkey-typed gibberish and until the fateful day came that the defective modules were referenced (say, once a Leap Year), they'd be serpents in the grass.
Even pre-compiling won't help if there are insufficient cues to ensure that you won't be passing a dingus to a module that expects to use a wackdoodle.
People who complain that you can't build large scale systems without a compiler likely over-rely on the latter and are slaves to IDEs. If you write good unit tests and enforce Test Driven Development, the compiler becomes un-necessary and gets in the way.
Says the guy that never worked on a project with 100+ classes and 100k+ lines of code...
Don't get me wrong, I love python and it's become my main programming language. But hey, I'm a researcher and everything I code doesn't have to do more than producing a few results to put in a paper and then be thrown away and never looked at again.
You know why Java is the top language now? It's not only because it's so easy that many professional applications have been written 15 years ago by dumb interns, but also because it's so robust that these applications can still be maintained by even dumber interns today. You're never going to get that with python (or js, or ruby, or whatever new hype thing you believe is the new messiah).
Video of some good progressive thrash music
I'm going to say this is a case where Betteridge does NOT rule. Yes, python is not perfect: it is as slow as molasses in execution speed, and has terrible multithreading capability. So what. These imperfections are completely outweighed by its superb readability/understandability/clarity, and the ease with which it can be learned.
No one is going to write an OS or an office suite all in python. But for a large swathe of programming tasks it is ideal. It is a lot more than just a scripting tool like, for example, perl.
The two are very comparable. They're both dynamically typed interpreted languages that are commonly used for writing more complex scripts, and some basic things that might be called "applications". They both provide ease of programming, relatively human readable syntax, and both suffer from significant performance issues relative to more on-the-metal solutions.
I'd say the comparison is spot on.
What Python doesn't have is strong type enforcement.
Actually, it does - Python is a strongly typed language, what it isn't, is statically typed.
Which means that you have no idea that you passed a dingus instead of a wackadoodle until some codepath that exercises the difference... and then you only find out at run-time, when your production system crashes. Sure, you can argue that this just means your automated tests were deficient, but that's always going to be the case, even when you apply great effort to get to 100% coverage. And you can argue that static typing isn't a perfect solution either, and I would never claim otherwise.
But the combination of TDD and static typing catches more defects than TDD alone, and static typing often enables errors to be caught at the time when they're easiest to fix, compilation. Judicious use of strong static typing enables us to write code that cannot compile unless it's correct. It's unfortunate that the very best popular-language example of this comes from the most powerful footgun language, C++, but that doesn't make it any less true. The C++ templating system, combined with static typing, makes it fairly easy to build infrastructure that allows the compiler to catch huge classes of likely errors. Haskell is an even better example of the tremendous error-correction power of strong and thorough static typing, though it's not likely ever to become popular.
Python is great for rapid prototyping and small scripts, but for large, complex systems I want both TDD and strong typing. At present, Java is probably the best language for such systems, when you consider availability of experienced staff, tooling and native features.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
I dunno, I think Pascal was awesome and I would always love to use it. I see absolutely no downside to Pascal.
"The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
These imperfections are completely outweighed by its superb readability/understandability/clarity, and the ease with which it can be learned.
Those attributes, in any profession, are not the ones that career-folk care for. They are highly desired by amateurs in every field, but not by professionals in the same field. This applies to all professions, not just s/ware development.
I'm a minority race. Save your vitriol for white people.
, the typing is quite strongly enforced. Me's thinks you don't know what you're talking about.
The typing is strongly enforced at runtime. We'd like to catch those obvious errors before it runs.
I'm a minority race. Save your vitriol for white people.
The point of my earlier post got lost in the reverie.
Python is nothing like the Basic of the 1980s. Basic's development was strongly shaped by the limitations of the hardware it was run on. Python's development is shaped by the self-imposed limitations of the minds of its developers. Two very different things.