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?
No.
But in all seriousness, is this even for real or just clickbait? Why would we want just one programming language?
No.
Can you just stop?
I will now end the discussion with the word Hitler.
Enough said. Whitespace which has meaning is just nasty.
And my teacher was wrong. There actually are stupid questions.
Signature deleted by lameness filter.
I could see it supplanting Java in some situations and utterly obliterating Ruby and PHP. That said, I like compilers, even if they're compiling to byte code. And I don't find refactoring to be a chore. Especially when your IDE does some of the more mundane tasks for you.
It fills the "smug hipster twat who can't grok lisp" niche perfectly.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
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.
Is that a parody?
"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"
Sure, who needs good tools when you can just do the work of the compiler yourself?
I'm pretty sure - the day will come where even the author will be bored of checking datatypes and constraints in unit tests that have to cover all possible runtime paths. For me the future will be a language with a really strong type system, that can be verified by the machine as much as possible. You can't have systems crash after 4 days of number crunching because it finally reached that stupid mistake in one path that was forgotten in the unit tests.
We have computers to do that work for us, not the other way round.
Oh and of course we'll use machine learning as much as possible to automate the automating.
False equivalence. It doesn't say "one" programming language, it says "dominant" programming language.
Is that still a thing in Python? I've been out of the loop for quite some time. But the last time I've been into it, this 'feature' was a big obstacle for modern hardware, considering the hardware trends of having more and more CPU cores.
The same reason we had languages such as Basic and Pascal as languages. Namely universities using them in intro classes because they are "easy". So people with no concept of the scale or complexity of commercial software think it is the be all and end all of programming. So you get MBAs mandating Python on their projects even though it is the wrong tool for the job.
putting the 'B' in LGBTQ+
Python is easy to pick up and can do anything (on high level) that C can. On the other side, its drawbacks include being an interpreted language, meaning both that whoever wants to run Python scripts has to have the relevant interpreter on his system, which is arguably easier and more likely to work in Linux than Windows and that it will run slower and need more resources than a comparable C program.
So whether Python will become the dominant language will mostly depend on
1) Whether enough people with little to no programming experience feel the urge to create code.
2) Whether enough people can be bothered to install the runtime to run said code.
3) Whether we continue to have no problem wasting resources on inefficient code or whether we move towards more virtualization/containerization where the individual VMs have to do with very little CPU time.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Java is mainly large enterprise back end systems, and some android, and quite a lot of embedded stuff (nominally what it was invented for), and, worryingly, quite a lot of client side GUI stuff.
C++ is used for legacy systems and where you need speed.
C is used where you need speed, have simple programs and memory constraints, and old fashioned unix software.
C# is for windows programming and .net
Javascript is for browser programming and Node, and some general scripting, where someone has used it as their system's internal scripting language (see also lua)
PHP is used for relatively simple web stuff, because it's easy and works and has wide library support
Python is used for what PHP is by better developers, and has brilliant maths libraries so is increasingly used for anything maths related where esoteric things like matlab and R and F# are unhelpfully niche.
Haskell is used for academic curiosity, and some maths stuff.
Perl is dying out, but is still used for unix automation a fair bit.
-----
I should hope not. Ruby is much nicer.
There are lots of good libraries for python that hand off the heavy lifting to c,c++ and fortran. Python works well for gluing these things together.
Python on its own though is quite slow and if you find yourself needing to chain together calls between low level libraries where each call is quite fast the cost of gluing them together can be extreme. However the parts of the code that are seriously CPU bound tend to be fairly small while all the rest of the stuff build no top takes up most of the time to write.
I would say for most software you could do a python wrapper around a C++ core and end up with more maintainable and faster code. In my case I use a python optimization framework around a c++ based simulator. Writing all the optimization code in C++ would be a pain in the neck and provide no real speedup since the current code is not speed bound in the python part anyways. I see the same things in cluster control software when the code that distributes my jobs to the nodes and then gathers the data back and then makes the decisions on the next set of jobs to run accounts for 1% of the total runtime.
I think this will result in better software overall with Python as the core language wrapping high speed libraries. In many cases those libraries already exist, where they don't exist you have to write them.
Computer modeling for biotech drug manufacturing is HARD!
No, dummy, the compiler is a large set of unit tests for you, ready to run, so you don't have to write them yourself. Why wouldn't you use a compiler so you can avoid runtime exceptions/errors? Why would you choose deliberately to postpone that to be checked at runtime or worse: that you have to write checks for all those cases yourself (and you'll miss a lot of them)
The compiler isn't something used by 'slaves of an IDE', but by developers who know a compiler will save them from writing tests for situations already checked by the compiler. Oh, and it generates fast code ahead of time too, so your users don't have to wait for an interpreter to come up with fast code.
Never underestimate the relief of true separation of Religion and State.
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.
So, you can see the attraction of Python for, say a scientist - there are modules for many specialised, mathematical areas, all of which are very difficult to code from scratch, and although there are similar packages for C, C++ and FORTRAN, they are less easy to just pick up and use.
Note that often, the Python modules *are bindings* to the C/C++ & FORTRAN packages.
Python is literally the glue code layer that makes these modules "easy to just pick up".
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
Python will never beat Perl ... ever!!! **Ducks for cover**
I admire Python for its toolchain and libraries but it's just way too slow. Even Racket is faster and it's probably still too slow for my current needs. ( I use it for making a prototype first.) By 'slow' I refer to lack of snappiness and long startup times, these bottlenecks cannot be eliminated by writing support libraries in C. The actual algorithms I use don't need much speed, but the user interface and support functions like searching, directory scanning etc. need to be fast. You can fake speed by using a lot of threading in the user interface, but that's complicated, error-prone, and the end result still feels somewhat sluggish.
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.
Don't get me wrong, I like Python and have done quite a few things with it, including performance-critical Python classes in C. But I think writing good Python code is something that requires a lot of experience, including with other languages. Python is a language that does not stand in your way to an extreme degree. That means in many cases you have to do things yourself that other languages do for you, for example type checks (yes, they are needed sometimes) and decisions when doing inheritance. Do them wrong or not do them at all and you end up with an unmaintainable mess. There is also quite a bit of stuff you have to test at run-time that compiled languages probably find at compile-time. That requires good testing and a design-by-contract approach helps a lot.
One the other hand, for actual experienced experts, glue-code and "business logic" does not get much better than what Python offers, and embedding C-code is easy once you have understood the idea. It definitely has a long-term future.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Interestingly, selecting countries on PYPL shows that Python is #1 in the US, France and UK. India and Germany have Java #1.
Not that it's an indication of anything, really. Right tool for the right job. The projects being worked on in Java probably don't lend themselves well to Python and vice versa.
Please elaborate. By number of lines written? The number of programs written? The number of fortune500 choices?
Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
If Python just disallowed mixing of tabs / spaces in files, it would already be a lot better. Just flag an error as soon as indentations are detected that are not the same style.
We're only going to reduce errors if it's a programming language that makes errors harder to make. I switch routinely between a number of different languages in my current job, and it's not the switching that has any affect on the reliability of the end result.
I can also pretty much guarantee that if the world did standardize on just one or two languages, it'd probably be the worst of them. For better or worse, the languages of the world wide web right now are Javascript, PHP, and C. The infrastructure is written in C. The applications are written in PHP. The front end is written in Javascript.
These are three awful, awful, programming languages to standardize on, and yet within one sector of the industry, that's exactly what we've done. Why have we done this?
- We standardized on C because we'd already standardized on it in the mid-1980s. It could have been Modula 2 or Oberon, but we ended up with C because at the time we were trying to squeeze functionality out of every byte of memory. Ironically, C is so clumsy we've ended up abstracting everything up the wazoo a million times and so it's far less efficient than it needs to be. There's no need for Apache to be written in C. But when Apache was written, that was what you wrote Unix servers in, so, 20-25 years later we're still stuck with it.
- We standardized on PHP because it's easy for non-developers to pick up, and it was there, and it was free, and it was kinda sorta marketed at them at a time when everyone wanted to build a website. And as a result critical frameworks like Wordpress are written in PHP. PHP is seductively convenient too, but almost everything that makes it convenient also is a bomb that just needs a detonator of ignorance to cause a problem.
- We standardized on Javascript (which is perhaps the better of the three languages) because it's built into every web browser because every web browser in the 1990s had to be compatible with Netscape, and Netscape introduced JS.
At no point were issues like reliability or security considered as criteria for the "market" to pick these three. The market didn't care. And so we're stuck with that as our technology stack.
The only way out of this mess is to be able to break out of "standards" and be able to use better languages as they come up. The market failed in terms of picking a sane winner. But as long as there's more than one stall at the market, better developers can at least get around that.
You are not alone. This is not normal. None of this is normal.
It seems like we could derive most of the benefits by extending more languages to be able to use... one another. So that if we have a code component written in one language, we can more easily use it in another language. Obviously there are mechanisms for doing this already in many if not most languages, and even some systems. It is (or was?) a standard feature of the AS/400 platform (whatever series they call that now, or did they finally kill it?) that you could link together code from multiple languages into a single binary. I'm not familiar enough with the architecture to know how their approach works, I just took a basic class and that stuck out.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
"Do you think Ringo is the best drummer in the world?" "Ringo isn't even the best drummer in the Beatles."
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
Grammar nazi fail:
: his or her : his, her, its —used with an indefinite third person singular antecedent
anyone in their senses — W. H. Auden
https://www.merriam-webster.co...
I don't want to write a genetic algorithm with automatic switchover to various gradient descent methods based on local properties in any kind of shell script. The python version of that code takes up 1% of the runtime for me and serves as a command and control system for my c++ simulator. The same is true for plotting the results afterwards and evaluating the quality of the results.
Almost all the command and control I am talking about using python for is not something I would EVER consider doing in shell script.
Computer modeling for biotech drug manufacturing is HARD!
IBM changed the name to "i series" in 2000 and replaced it with the Power series in 2008. They still offer the software platform (originally OS/400) to run on Power servers, calling it "IBM i"..
Non-issue. It's no different than agreeing on a nomenclature before starting any other software collaboration. If you don't, you'll get a big mess, regardless of language.
Incorrect - in non-python language I can run an indent program, turning the big mess into a non-existent one. In python your big mess has to be manually fixed by a human.
I'm a minority race. Save your vitriol for white people.
I thought Javascript was going to rule the world? Dammit...
But are there Kanji (to use the Japanese term) based programming languages?
My experience working with Japanese coders is that no major language supports arbitrary glyphs. If they did, it would probably be like the early specifications for perl6 with the "Yen" operator and whatnot. The language doesn't construct like Arabic languages.
They just program in ascii with variable names and functions which they sound out to their words. But they can put Kanji or Katakana into comments above lines, and they generally over-comment.
But I speak EXCLUSIVELY in "Personal Home Page"
Don't you want "Personal Home Page" for your business?
Crap I forgot <?php during some random error handling case and now it's printing all my source code....
die('A lonely, sad, death.');
It's a wart, but it shouldn't stop you from getting your parallel computing done. You fire up the multiprocessing module, create as many processes as you think you need, and start crunching. I write most of my longer-running programs this way so that I can take advantage of multiple cores. But that's the beauty of Python - it's easy to avoid premature optimization. Write the script the easiest way first, profile it, and then go after the low-hanging fruit. Worst case, you end up with working code written entirely in C that's been thoroughly prototyped in Python. :)
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
According to the linked PYPL rankings, Java is at the top with less than a quarter of the market at 22.7%, and other ranking methodologies return different results with lower percentages for everyone. I like Python, along with several other languages on the list, but the reality is that the language market is highly fragmented and, for obvious reasons, overwhelmingly likely to remain so. There is no dominant language now, and arguably hasn't been one since the early days when there were relatively few languages, so why would there be one in the foreseeable future? Could Python become the most popular of many languages by a few points? Sure. But does that matter in any meaningful way?
Proud member of the Weirdo-American community.
Frankly I would much rather use Perl, but its not cool and people will complain if I did.
So I use Python because no one complains about it.
-- Given enough time and money, Microsoft will eventualy invent UNIX.
Python's widespread adoption is not due to some magic programming language sauce but network effects. In a sense, Python has taken on a niche similar to Visual Basic. But that's also why Python has such a hard time evolving: you can't improve it much without breaking a lot of its libraries.
Python's biggest limitations, the way it represents objects and limited concurrency, actually already have been addressed in a number of Python re-implementations, but people aren't using those because many extensions and libraries don't quite run in those environments.
So, Python won't become "the" dominant programming language, it will just remain one of of a number of popular programming languages.
If there will be a single dominant programming language eventually, it will probably have to look more like Swif: near native speed, garbage collection, some systems programming features, and yet interactive execution via on-the-fly LLVM compilation.
You fire up the multiprocessing module, create as many processes as you think you need, and start crunching.
Then serialization and deserialization of objects to and from the manager process spawned by the multiprocessing module becomes the bottleneck.
Python 3 already goes much of the way toward this. Instead of treating tab as round up to the next multiple of 8 spaces, as Python 2 did, Python 3 requires the entire sequence of leading whitespace to match in order to include statements in a block. So if you mix tabs and spaces, you're much more likely to get IndentationError in Python 3 than before.
Here is my take on the situation, and much of this has essentially been said by others in one form or another.
Some of the debate here seems to be a repeat of prior debates between static and dynamic languages. Dynamic languages have a lot of perks. Usually the compile speeds are awesome, building small solutions quickly is likewise awesome. They also usually make it easier to write less lines of code and the code is usually more elegant and straightforward with less overhead and few or minimal boiler plate constructions.
But dynamic languages really fall over when the project you are working on reaches a certain level of size and complexity and really die when issues of scalability and performance become primary factors. In particular, the places where I have run into trouble are the following.
* Having to refactor an API used throughout an application because of a new feature (such as instrumenting with auditing number of calls to persistent storage and time take to make such calls).
* Using an IDE to investigate somebody else's not so great code (but a vital, complex, and deeply integrated component in much larger project) that was written two years ago that needs a serious refactoring and upgrade to continue its viability. Usually part of this investigation involves using a debugger. If the code had great documentation and unit tests, it probably would not be a problem. But assuming that you are always going to work with great code is nonsensical.
* Writing code that uses optimal algorithms and minimizes usage of persistent storage. It can sometimes be quite hard to predict the performance characteristics of a particularly complex piece of dynamic code (especially one that uses "code blocks" and other functional programming styles).
Coding in static languages is more laborious, has more up-front costs, and in general can be a large pain when compared to dynamic languages. But having an IDE and compiler enforcing sophisticated contracts between various modules in your code set are vital to the long term viability of large projects.
On a serious note, perl5 has some actual technical advantages over python (and most other languages), e.g. it's unicode support is excellent. Perl regular expressions can search for characters based on unicode properties, e.g. /\p{Greek}/ matches a character
Unicode considers Greek.
In practice what has happened is that "C style" interfaces have become the common point for interoperation between languages.
So you basically if you want to call code written in language A from language B you have to.
1. Wrap the code written in language A in a C style wrapper.
2. Wrap the C style wrapper in language B.
3. Work out how to build/link the resulting project.
This is doable but it's a sufficient PITA that a lot of the time rewriting the code seems more practical.
note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register