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.
As soon as it runs in the browser.
Boys, start investing in octocore CPU and RAM manufacturers.
Python is pretty cool. The lack of a real type system makes me write a lot of assertions I don't want but ultimately protect me from stupid mistakes later on.
It has reasonable syntax and with map/filter/etc you get most of what you get out of LINQ... I think it's great.
I see my shadow changing, stretching up and over me...
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.
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."
Because if we're talking about stuff that's used everywhere that would be C in its various iterations plus Java...
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.
I think Python should be seen as a scripting language: a language whose purpose is to tie together the real applications, rather like bash and ksh. Python has a lot of packages or modules (or whatever they are called), many of which seem well suited for scientific or engineering purposes; it is my impression that most are written in C or C++ for speed. 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.
I think you are less likely to find applications in Python - it is quite possible to do, and I have seen some, but just like you wouldn't normally write applications for general consumption in bash (although you can), Python isn't really the obvious choice either, IMO. Perhaps it is exactly because scripting languages are so good for ad hoc work - you get to expect that everything must be equally easy to achieve, but many things are simply complicated by nature, so the advantages of using Python become less prominent.
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.
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.
I've only used the Pythons for slite scripting in Blender 3D, but the syntax feels too subtly error-prone for me to feel comfortable to deal with. At least the C-langwitches and Java/Script are easier to scan in that regard.
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.
-----
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.
What nonsense is that? someone who says something like that has never really done any real development and is just a hack..
Why the hell are you a slave to an IDE if you're using a compiler, how does the writer of the article do it's refactoring or test driven development. I don't buy for second he/she does everything by hand.
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.
I use Python along with Selenium for website automation and testing. I prefer it over Java in that regard as it is much faster to develop in and doesn't require as much "infrastructure". No compiling, no mandatory OOP, no need for an IDE, etc. Of all the things in that particular niche, I've found Python to be far and above the best.
The soylentnews experiment has been a dismal failure.
I code in Python these days more than I do my preferred language of C++.
Most of my work is creating libraries that are pipeline building blocks for facility code. It drives me nuts when I have to refactor Python.
In C or C++ the compiler would error wherever the types, arg count, and other things have changed. Python you literally need to know every line of code you have deployed that may be affected otherwise you won't know until code runs and throws up all over itself.
This is compounded with Python not having types esp for function args. Also if you have a lib that while it doesn't directly interact with another lib, instead it's passed objects via an intermediate lib then holy shit you really can't find code that is affected by a changes.
And that's just for trivial things like adding a new type, adding removing args, renaming functions, adjusting classes.
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.
I really like Python. I find it faster to develop in, more flexible, and more ubiquitous than just about any other language. However, maybe 20 years ago when the world was simpler, it would have had a better chance at some kind of dominance. These days though, there are just too many niches it doesn't work in. Can't make first class apps for iOS or Android, can't use it natively to manipulate the DOM in a web browser. It's not as easy to use server-side like PHP. And on and on. Yes, Python can be used in all those roles if you bend and twist it enough but in most cases, there is a better domain specific language that people just default to.
Personally I find Python to be peerless for system administration and automation. Even better than bash. I understand it's good for statistical and scientific programming too. That's it's place. Not "dominance".
The soylentnews experiment has been a dismal failure.
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 ]
All of them. Don't underestimate a Python programmer generating the code previously typed by a dozen code monkeys.
Any guest worker system is indistinguishable from indentured servitude.
or, in other words :
Congratulations, you've successfully re-invented Perl (and bash to some intent).
More seriously :
yes, Python seem to be the current popular "glue code" language.
Like Perl and shell-scripts before it.
(and some BASIC dialects at some point in time in the microsoft ecosystem).
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
Python will never beat Perl ... ever!!! **Ducks for cover**
It also fills the "People who wish they could get the job done in Common Lisp in reasonable time but there are simply not the right libraries available" niche pretty well. As much as it pains me to admit it: Libraries do matter to the extent that if I have to choose between a nice macro system and a healthy ecosystem of high quality libraries for my application domain, I always choose the latter. Hence, I choose Python over Common Lisp.
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.
I work as a software developer and I'v known a lot of other developers now. Whenever the conversation is about programming languages it will sooner or later turn into a flame war such as 'I hate language X' or 'Language Y is the best'. I've heard practically any programming language out there being criticized by experienced senior developers... with one exception: Python. No developer I've ever met criticized it. Anybody seems to love it. And rightfully so.
Besides Pascal it's one of my favourite programming languages: It's easy to learn, it's used in a lot of sectors and it seems to replace some of the older languages: In High Performance Computing it _seems_ to be slowly replacing Fortran and in systems administration it takes over the role of Perl as configuration language. Furthermore, it's used in Gaming as a scriping language (Blender Game Engine), it's used for Plug-Ins and configuration in many many Applications, in Web Development, in combination with R it's the de-facto standard in Data Science.
I sincerely hope, that Python will become more popular.
Sigs suck!
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.
Javascript is a web scripting language, that can be used as a general scripting language ...not really comparable
C/C++ is used in all these industries..and more ..
Your Python interpreter is written in C/C++
The operating system you are running your Python interpreter on is written in C/C++
Puteulanus fenestra mortis
Why would we want just one programming language?
It's reasonably obvious why we have multiple programming languages but your question has a serious answer. There would be HUGE advantages if it were practically possible to consolidate on one programming language. The economic benefits would be massive. Any time you can reduce the complexity of the tooling you use to make products it reduces cost, reduces errors, makes training easier, and has lots more knock on benefits. In many cases the benefits of minimizing tool complexity (less languages in this case) can be larger than the optimization benefits from using a specialized tool. To use a non-programming analogy, think about Alton Brown's "no uni-taskers" rule. Specialized tools or specialized languages have their time and place but one should avoid them if practically possible.
Now in the real world we're highly unlikely to ever see a single programming language dominate all forms of programming and for very good reasons. But that's a different question than why we would want such a state of affairs. Having multiple languages has advantages but having a single language makes life SO much easier in many important ways.
If you really like your indentation this much, give Nim, https://nim-lang.org/ ,a chance. It looks and feels like python but it is statically typed and compiled language at least.
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.
I'm a hobbyist programmer. 8 or 9 years ago, I decided to check out Python, working on a Windows box. I wrote a client-server Spades card game to play on a wifi network.
I enjoyed the coding. Having the right environment to run the code seemed to be a challenge. I set up all of my family members' laptops to run the game (including a 3rd party library). But, I never distributed it further, because it seemed impractical to expect the average computer user to have or to set up the environment... and not get into a support nightmare.
That experience led me to marvel as Python became even more popular. I suspect there's something I missed, or, maybe Python has evolved. This seems like a good opportunity to have someone set me straight. What am I not getting?
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.
I prefer to hone mastery for a specific set of tools. I could switch up, but the wideness of today's frameworks means it takes at least at couple of years to be an expert.
I am learning iSeries at a very low level, to help people get off of them. Both interesting and frustrating (regarding DB design and ancient programming practices).
BlameBillCosby.com
Being as the world seems to be heading toward "thousands of languages but when people need to communicate, they'll use English and/or Spanish and/or Mandarin" I'm not sure defaulting to ASCII is that big a deal. Of course, you can't really write East Asian languages very well in ASCII. But are there Kanji (to use the Japanese term) based programming languages?
(BTW, A few years ago, I was treated to the spectacle of two Chinese in a Chinese take out place in Vermont struggling to communicate in different Chinese dialects then finally giving up and switching to English -- which neither spoke all that well.)
You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
"Do you think Ringo is the best drummer in the world?" "Ringo isn't even the best drummer in the Beatles."
I can't believe the hate for Python. Many of you people talk like a large website could never be built it in when the fact is that many large websites have been and continue to be built with it.
Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
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
Yes, Tcl/Tk is built in and there are modules for other graphical libraries. GUI code is still tedious, annoying, buggy and a general PITA, but I think no more so than in other languages.
You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
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...
A lot of the responses have been disengenous. The author included C++ in the article to indicate there is a need for other languages in different scenarios. You don't write device drivers in Python, I'm sure. Also, the only people complaining about the whitespace are the ones who are comfortable with other languages and haven't tried Python sincerely. If you are trying to publish an article, are you going to ignore indentation? New people entering programming with Python don't have an issue. The indentation is natural to them.
We're only going to reduce errors if it's a programming language that makes errors harder to make.
Error reduction is multi-factorial. It's not merely language design though you are correct that that is a significant consideration. Factors like how well trained individuals are can play a major role. It is easier to teach best practices and how to avoid problems if all the teaching can be focused on the problems with a single tool. Asking people to generalize best practices across multiple languages makes training harder and errors more likely.
Of course this is all moot because we don't live in a world with just one programming language and probably never will. But there would be benefits to it if somehow we could make it happen.
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.
You can't make Python the dominant language because half of it has to be implemented in C in order to get it to work properly.
That and lack of clear program structure definition (braces) will make sure it will always be a scripting language like PHP.
Custom electronics and digital signage for your business: www.evcircuits.com
So the number of programmers in Lisp, Forth, and COBOL go down even more. Which will mean I can learn those and make a KILLING in $$$
The future is more likely to be server APIs while everyone turns into over glorified interface designers. Schools are teaching Python for calculations the same way they used to teach BASIC. But, there's no money it and quite literally because of its license. So, it will be C and Python on desktop and PHP and HTML5 on servers. I wish more people liked Python because it's a whole lot easier to modify. People complain about speed with Python, but imagine having to edit or add variables in C and then recompiling it just to run it every time; it would take longer. On top of which, Visual Basic and M$ want you to use C#, which then prevents or causes problems with cross platform compatibility. Blender is all Python and it works just fine and people use it for all kinds of things, including having a built-in game engine.
I've never had a problem merging anything since I stopped using subverison... and cvs... and copying files to NAME_DATE_STRING..... https://git-scm.com/
I thought Javascript was going to rule the world? Dammit...
For python2, if you don't set one in site.py (which you should). Python3 defaults to utf-8 (which again, can be changed with one line in a "config file")
But learning that all text isn't ASCII and that "encoded" vs "decoded" data are different is one of the BIG challenges for a lot of folks to learn python3, or change from 2 to 3.
Wasn't hard for me, having many years prior to learning python with other languages where I CHOOSE to blatantly ignore any non-ASCII encodings! bwahahaha!
F90 discarded white space significance in 1990.
F90 pretty much lost all significance. The only people I'm aware of using Fortran still in my field are older theorists who learnt F77 and still use it. If you are willing to update you programming language knowledge chances are you would not upgrade to F90 given the prevalence of C++ and Python.
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.
which can bypass GC and do C/C++-level
That's exactly what we need. A larger attack surface. Didn't we have an article the other day about having to click 3 times and hover over a link that you opened in an email from a stranger which executes powershell?
I fucking hope not
"The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
This is the stupidest statement I've seen on Slashdot in recent memory that didn't come from a Trump voter.
TDD is a crutch for catching duck typing errors, and test that verify you haven't fucked up your interfaces are far more useless boilerplate than even the most "enterprise" Java code that isn't also using TDD.
Yes. It already has in a large number of places.
If only someone could invent a new language.A derivative of Python, but using braces, that compiles to regular Python.
You already have it! Try this code out:
from __future__ import braces
If you're not aware, "__future__" contains future features and importing them changes how the file is processed.
IDEs allow this, usually much quicker than by hand.
Tired of my customary (Score:1)
Python threads have a global interpreter Lock which effectively means one thread can run at a time and they take turns. This is not threading in the real world .
When you reasonably can, totally. By all means, try to break your problem up into processes. I'm all for replacing multithreading with multiprocessing when you can, because not only does it mean you get to use python, but it means there's a whole bunch of synchronization problems that you're never going to have to deal with. Faster coding and fewer bugs. Who doesn't want that?
But when you can't, you can't. If you're creating and destroying lots of processes and having to pickle lots of stuff into several megabytes to move over pipes to depickle, that's expensive and ugly, too. Sometimes, threads are the correct answer. And cpython really does have a problem with that.
"Believe me!" -- Donald Trump
Java is a dominant language. Python needs to suck more to make it even into the top 10.
Maybe Php?
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.
His rule is only one single task item allowed in the kitchen: the fire extinguisher.
Not even that. He used the fire extinguisher to make a desert.
I don't actually agree with Alton on this as a hard and fast rule even though I used it as an example. It's a good principle but there are sometimes good reasons to own and use a special purpose tool. Special tools are indicated when they save substantial labor and/or do a substantially better job than a more general purpose tool. For example I own a mandoline in addition to my knives. My knives are more general purpose tools and can do everything the mandoline can do and then some, but for some tasks the mandoline is SO much faster and accurate that it easily justifies me owning one even though I don't use it often.
Same deal with programming languages. Use the best general purpose language you can get away with and only bring in specialty languages if the net benefit to doing so is substantial either in time saved or quality of results. Don't let perfect be the enemy of good in search of marginal improvements that will probably cost more than the benefit received.
I predict that Python, already popular, will become even more popular in the coming years. "Dominant"? Eh, you decide.
First of all, you guys moaning about white space? Just get over it, or go sulk in a corner or something. Python has always been the way it is, it's not going to change, and most people just don't care, or even like it. There are various "lint" tools for Python and any of them can complain about tabs (and most or all of them do by default). And I have been programming in Python for as long as Git has been around, and I have never had a "nightmare" merge caused by tabs and spaces. You're selling a problem I've never seen in the real world.
Those of you complaining about static typing? It's now available as an option. Python supports "type annotations" that have no meaning at runtime, but can be used by "lint" sort of tools to do static type checks. Large companies like Google and Microsoft were starting to require comments with type annotations and rolling their own static checking tools, so the Benevolent Dictator for Life ruled that Python should gain a built-in standardized way to do it.
"But both of the above suggest running a lint-like tool... it should be in the compiler." Well, sorry, but I am definitely willing to live with having the lint be optional. C used to be that way, you know, and your IDE or CI system can enforce use of the lint tools if you care.
"But the GIL! It's so awful!" Actually, spinning up multiple processes, or running code on a GPU, are both good solutions for many or most problems. Also, there is a serious project to remove the GIL, called "the GILectomy", being run by a Python core developer named Larry Hastings. Check YouTube for his lectures on it and how it's doing. He has made progress recently so there is hope. I'll say it again, multi-process is not bad at all in Python, and I have a bunch of production code that spins up about 30 processes at a time to do embarrassingly parallel tasks, so I personally don't care that much about the GIL, but you can't say nobody is working on it. It just turns out that the GIL is a really efficient way to solve a bunch of problems, and every attempt so far to remove it has made Python really slow.
With the major complaints mentioned, let me now mention some reasons for increased growth of the language.
The major growth area is in sciences. If you are studying astronomy, and probably most other sciences, Python is the single best language you can learn. SciPy is great: you can write pleasant Python code and it runs at FORTRAN speed, because the guts of SciPy are old (well-understood and well-debugged) FORTRAN libraries. I was able to go to the SciPy conference a few years ago and I learned that scientists who are abandoning wacky or proprietary languages are all converging on Python to gain the benefits of SciPy. For example, all the people working on the data from the Hubble space telescope all use Python now (instead of IDL, the original language when the Hubble first launched).
I would go so far as to say that for the sciences, Python will "dominate". It's achieved first-mover advantage, and it's still improving so it will be difficult to displace. (For example, a library called Pandas offers data frames, an idea copied from R. If Python successfully copies all the best parts of it's competition it will continue to dominate in science.)
Also, as a Python developer and as someone who has gone to the Python conference for years, I am seeing signs that the split between Python 2.x and Python 3.x is finally about to end, with most people finally moving to Python 3.x. The latest release of Python 3.x has much more excitement around it than any previous release. It now uses less memory, yet runs faster, than Python 2.x; and it has some nifty new features for async code, as well as a new language hook that PyCharm uses for debugging 50x faster than previous Python versions. My own company has started the switch to 3.x and we are far from alone.
So Python is a
lf(1): it's like ls(1) but sorts filenames by extension, tersely
Is Fortran faster than C99, when C gained the restrict pointer qualifier? A lot of Fortran optimizations that C used to lack are based around different aliasing rules, and the restrict qualifier hints to a C compiler that pointers passed as arguments do not point to overlapping memory.
My assessment of python is "you get what you pay for". And I don't mean that in a good way.
I've been a systems engineer for 25+ years with experience in many software languages including modern ones like C#. I do not have a high opinion of python for many reasons already stated.
I'll add that online references are a PITA, in that many are downright wrong. I actually ran into a simple code segment that our interpreter couldn't execute.
Eternity: will that be smoking, or non-smoking? I Corinthians 6:9-10
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.
Programmers will get bored and jump on some other fad. They need an exuse to re-write the standard libraries every few years, because they've got no ideas but they like to feel like they're doing something.
I mean-- in today's multiprocessor big dada cloudy future one must choose a language that optimizes the resource functionality-functionalism tradeoff to reduce downtime and maintenance costs while maximizing stock market confusion and venture capital infusion.
1960 question: "will COBOL become the dominant programming language"?
1965 question: "will RPG become the dominant programming language"?
1970 question: "will FORTRAN become the dominant programming language"?
1975 question: "will BASIC become the dominant programming language"?
1980 question: "will C become the dominant programming language"?
1985 question: "will Clipper become the dominant programming language"?
1990 question: "will Visual Basic become the dominant programming language"?
1995 question: "will ColdFusion become the dominant programming language"?
2000 question: "will C++ become the dominant programming language"?
2005 question: "will PHP become the dominant programming language"?
2010 question: "will Java become the dominant programming language"?
2015 question: "will Ruby become the dominant programming language"?
The answer is wait a while, and it will change......
are highly exaggerated.
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.
from source code files.
i.e. Should not parse.
Problem solved.
Where are we going and why are we in a handbasket?
I don't want to write a {...complex...} algorithm {...} in any kind of shell script.
Yup, that's why I put in parenthesis in my answer.
In your specific case - I suspected - you need at least some more advanced logic available.
(Whereas I've seen bioinformatics pipelines where all the "gluing" could be handled in bash, specially given its support for native regex, arrays, hashes, integer math and filtered expansion of variables [ NOTE: this monster even has a functionnal tcp/ip lite stack ]).
But over all, python just happens to be the current popular language to glue such things together. .NET, VisualBasic, Lisp, Lua, etc.
Move a few years back, and the exact same could be said of Perl, Java (though JNI seem to be a mess to get right in a portable manner),
Move a few years into the future, and maybe Ruby or Javascript will get popular traction. Or something else (Go or Rust - though the later is really more system-oriented and less likely).
Heavy lifting is done with a low level language (C/C++ mostly. Or FORTRAN in your situation as for other engineer and physicists. Or assembler a couple decades back),
and the higher level language "du jour" is used for the glue and control.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
But if there is anything other than trivial logic involved, shell scripting is the road to eternal damnation.
Meanwhile, somewhere, some devil is abusing bash' "/dev/tcp/" virtual device to implement a fully functionning web server...
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
Python just isn't rusty enough for my taste...
Actually, I've only played with Rust so far, but what I've experienced already really makes me want it to take off...
Python is becoming the dominant "Academic" language. It's clear as it adheres to how a human most ideally likes to model his/her designed processes. However, Python suffers the same ills as Java. It's really just Java 2.0 -- conventional Object-Orientation has failed in its goals. The wikipedia criticisms are very high level summary (https://en.wikipedia.org/wiki/Object-oriented_programming#Criticism) -- there is plenty else well documented.
However we are faced with a dilemma: we now have a generation of programmers trained and habituated in that one method of framing problems: OO. Most of them struggle (usually cannot) frame problems or design solutions in non-OO ways. This hinders their ability to think differently or to see solutions or more efficient design potential. They often don't understand or even think much about OO modeling for its fundamental limitations to size and performance. I am speaking from experience working with so many people over the decades and also having been an OO evangelist in the early 2000s.
I like the string and array functions in Python and the clear readability is nice. It does hit some of my pet peeves with its less conventional use of certain characters and terms, worse than Pascal did back in the 1980s but those are superficial things.
That said--Javascript's object model is true to the machine and I predict it will be (and is already becoming) the new C language. Python cannot be a systems language--it is functionally incapable for the same reasons as for Java. Javascript is much closer.
Python's standard documentation is incomplete and could be greatly improved. For example, it doesn't explain how to extract and translate text in strings but just finding patterns (or at least it didn't last time I tried to use them). This doesn't matter to most python developers because they focus on broad high level logic using libraries built for them and just accepting the limitations perpetually found within those libraries. This is the problem with C# and .Net. Regular expressions not only reduce hundreds of lines of code for pattern identification, extraction, and replacements/reogranizations, but also enable dynamic pattern building. To do this without regular expressions requires that you practically reinvent regular expressions. Regular expressions are one example of a computationally complete tool (Turing Complete for idol worshipers). Nearly all OO library objects or systems of objects I've come across have clearly not taking computational completion into account or even show any awareness of its importance.... they just ad hoc for a select set of use cases that its builders thought most useful or likely.
I think UnIx small tools and pipes are a more promising start for a solution to the problems for which OO was envisioned and the problems OO created. I've put a fair amount of thought to this over the years. It seems to me that providing a singular stream through each for data and control would be the best improvement, instead of data and error. Data would be pure data on which operations occur. Control would be a sectioned stream with parameters, history, and results (including errors). If one tool in a chain recognizes an error from a prior tool then it can try to intelligently accommodate... or use parameters to know how to behave on such contingencies. Intelligent behaviors could include seeking other tools to cure the problem or even computing process flows between sets of tools to cure problems. Intent could be issued.
Used to be you needed 20 years of daily use to be an expert. What is that in "IT Years"?
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
Real programmers don't even need input tools like keyboards. I'm typing this post right now with nothing but my tongue, a couple wires, and a 9 volt battery.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
...as soon as they finish rolling out Python3.
it's closer to a fork and copying the program several times in memory.
Some drink at the fountain of knowledge. Others just gargle.
It's not an attack surface to any greater extent that rented VM instances on hypervisors are in data centers already are.
Ezekiel 23:20
Your Python interpreter is written in C/C++ ..
Unless he's a PyPy user...
Ezekiel 23:20
Would it be enough to build said executable with MinGW and test it in Wine? Or are a Windows license and a PC with enough RAM to run Windows in VirtualBox in Linux required?
Not going to happen.
Now, go back to using Algol like a good sheep.
Baaaaaaaah.
-- Tigger warning: This post may contain tiggers! --
Look, python is a hybrid of a scripting language and a programming language. It is a scripting language first. No scripting language has ever become highly used and stayed highly used except one. Javascript.
Why? Not because it is an awesome scripting language. JavaScript is about the worst language out there. Javascript is only popular because it happens to have a monopoly. There is no other option for coding in the browser today. Even TypeScript compiles to JavaScript.
However, that is about to change. With WebAssembly, JavaScript will no longer have a monopoly and you will see TypeScript compile to WebAssembly instead of JavaScript, then you will see Java and C# and other languages soon be able to compile to JavaScript. Even Silverlight could make a return by compiling to WebAssembly. By I digress, this isn't about JavaScript.
The top programming language is Java. It won the Android App market. The next are C#, PHP, and C/C++ (not really in that order, just as a group). Python, Ruby, etc, isn't even in the ballpark. In Enterprise, the top two options Java and C#.
But Tiobe says python is getting huge? OK. Tiobe's algorithm is quite complex, but that doesn't mean it isn't extremely naive.
Java, C#, PHP, and others have very advanced documentation. Also, they have tools that help developers get word done with less Google searches. For example, Java and C# users Google search far less that devs for other languages. For example, the initial search might be on Google but from then on, the search is on MSDN or we are browsing the docs. Also Visual Studio's tools and add-ons allow for looking at a library, its methods, and what it does without a google search. Some VS tools will decompile dlls, so we don't even need to google what a library does, we just read it. Also, NuGet packages are searched for in Visual Studio.
Python only the other hand, is primary being used in academia, especially by students in their early college years. The early college years are the highest peak of google searching a language will get. That makes its supposed popularity extremely skewed. It only looks popular because it used by new students that have to Google search for every little step. Also, the tooling for python is sub par, which causes more google searches than Java or C#.
Also, WordPress alone leads to more PHP development than Python will ever see.
As soon as Academia moves on from it's current favorite language, and Academia always moves on, Python's inflated hype will be long forgotten.