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...
At some point you run out of hardware to throw at a problem.
I'm curious, what is it used for? Java is Android, C++ is application development typically Windows and Linux, C#, the Microsoft specific branch of C++, Perl, proof that the Devil is real and among us, Javascript, little client side web app stuff,
So what niche does Python fill?
I mean, I go into a shop or eshop and buy a program and what sort of program would that be that was written in Python?
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.
There is no one language that can dominate all aspects of programming, but I feel that for anything that can sensibly be done using Python, it's probably one of the best choices. Python seems to be the best fit for anything that doesn't require best performance.
... skyscrapers, bridges, or rockets without Lego.
Yes, you need Lego. But yes you also need to move on.
Python is for kids and scientists. Doesn't mean it's bad and doesn't mean it doesn't have its place. And doesn't mean it's not useful in a limited arena.
But dude, you have to grow up a little some time. That, or get a Nobel prize.
And that's the thing with Python -- it's for people feeling their way.. either feeling their way through their chosen profession or feeling their way through their chosen physical universe (and heading toward a Nobel prize). If what you want is to be awesome in your chosen profession, then you either need to be an astrophysicist or need to move past Python.
Because if we're talking about stuff that's used everywhere that would be C in its various iterations plus Java...
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.
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.
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.
None of you nerds are going to ever get a job again. The H-1B influx and outsourcing process are NOT going to stop. Globalization will NOT be stopped, let alone reversed. Your childish dreams of revenge are over. Weren't you supposed to be "our bosses" by now? Har har.
I don't want just the one and python isn't a particularly great one to be your be-all-end-all. Even as a teaching tool I find it... dubious. When I attended university they'd just switched from teaching with first pascal then C to all-java-all-the-way. This, in my mind, is a mistake, even for a "technical university". No, especially for a "technical university".
As an engineer I don't need shitty tools (and back in 1997 java was a shitty turd; it still is, just with more polish), much less an "one true tool" and no notion there are other tools. Especially not because that's what "the industry" (really, business, for back-ends formerly written in COBOL) happens to use this week. I need to know different tools, their tradeoffs, in fact I need to know how to build the tools to make the tools, if need be.
For this and many other disappointments I ultimately flunked that course so I'm no engineer. But still.
My conclusion is that they weren't really teaching the theory of programming, which stands to reason because "technical university", nor the practice of engineering: They were teaching the semblance of productivity for business purposes. For what else is a computer but a business machine?
In the same sense, believing python as the be-all-end-all of programming languages says quite a bit about how you look at programming. The language, for all its pretense, is a nice little garden for a specific set of purposes but is extremely limited outside of that space. If you cannot imagine you would ever leave, or simply don't care to stray outside of that garden, why, it might be your entire world.
So what we really have here is "opinion" of the tried-and-true "all the world is $MY_FAVOURITE_THING" pattern, which might be "windows", "linux", "a vax", "a C machine", "java", "python", or anything else you care to name. It's really just arrogance in a can.
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 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.
Python still defaults to ASCII as the character set. It's ASCII roots put it at a disadvantage. It's only positioned to be the dominant language of English speaking countries.
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 ]
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 ]
I pretty much doubt the usefulness of those statistics.
Obviously I google more when programming in python than with C, MySQL, or bash, because
1) I am not familiar with it
3) MySQL is more intuitive...
Does it means I program more in Python, or that I am the last unicorn in earth doing that? Not really...
Python will never beat Perl ... ever!!! **Ducks for cover**
Big Python fan myself. It's my favorite PL. (Public Service Anouncement: Old-fart space-indenting whitespace-whiners please go f*ck yourselves and please quit pestering us with your petty issues. Seriously now, grow the f*ck up.)
Point in case for getting into Python:
Python is the only language that is used professionally in *all* industries. Science, Media, Entertainment, Games, Heavy Industry, Military, Services, etc. No other PL has such a broad adoption. Java is business (on the server-side, initially unintended), C/C++ is games, science and industry, PHP is server-side web. Python is trivially easy to learn without being so batshit crazy like PHP. At the same time it scales very well into serious projects and long-term maintainability is better than just about anything else out there.
In popularity however, there is one exception going orthogonal to Python though and that PL is, of course, JavaScript. Yes, JS is/was a web frontend PL first and foremost, but browsers run everywhere and with Node JS returned to the server (it started out server-side on Netscape Server, which no one remembers aparently) and today, to many peoples surprise, JavaScript has just about won the PL wars. Sure some snobs are bickering about this, but those usually just haven't come to terms with this cold hard fact yet.
So, in a nutshell, no, Python isn't winning the PL wars, JS most likely did that already. But I say don't hesitate to stay with and dive deeper into Python, Python is here to stay and that's a good thing, because it is a very good, modern PL. Unlike JS btw. which does have the one or other awkward/annoying thing vis-a-vis Python imho. But then again, it runs in the Browser, which is why I do more JS than Python these days. It's a bit of a shame if you think about it, I would like to do more Python.
My 2 eurocents.
We suffer more in our imagination than in reality. - Seneca
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.
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.
unless the GIL is removed, the answer is no.
There is no such a thing as a "general purpose" programming language. We need dozens (if not hundreds) of different languages.
This Python thing - can you throw together a quick GUI app as easily as you can in C#, VB.net, or even Lazarus (Free Pascal)?
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.
Python is split into Python 2.7 and Python 3, which aren't compatible. Most distros ship with 2.7, but a number of newer projects will only run on 3. Fortunately most popular packages have forked and offer both versions.
Phillip.
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've used python in the past and although it is very popular in DeepNeuralNet frameworks, the performance isn't as good as C++/Java frameworks. The thing is, there's still performance issues with Python that keep it out of applications that need sub second responsiveness. Performance intensive things like doing computer-vision with raspberry pi robots.
If you have something that doesn't need to be super responsive with low latency, then have at it. With C++ in the "right" hands it's challenging, but it can do it. Very few people have the skills and experience with C++ to build it. With Python, it's just not possible with the current implementations.
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.
If only someone could invent a new language.A derivative of Python, but using braces, that compiles to regular Python.
"Do you think Ringo is the best drummer in the world?" "Ringo isn't even the best drummer in the Beatles."
But there used to be at least a couple of code editors with support for displaying tags instead of empty whitespace characters.
Maybe it is time to bring it back and make it easily toggleable for each form of whitespace available. So you can show/hide newline, tab, space, utf-8 directional changes, etc in a format easy for a developer to parse and alter when needed.
An alternative is python could just fucking itegrate indent style support and keep the strict parser in the python executable, but have a lax parser capable of doing fixups outside of it. Not sure how well that would work, or what sort of whitespace gotchas there are in more complicated code, but most of it seems machine repairable in my experience. Less so human repairable however.
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
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.
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...
Notice that the Merriam-Webster defintion of their specifies that it can be used with "an indefinite third person singular antecedent". In the example by W.H. Auden, this is the word "anyone". But the phrase "anonymous reader" refers to a specific reader. I would not regard "anonymous reader" as being indefinite. Therefore, this use of "their" is inappropriate.
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 thought Javascript was going to rule the world? Dammit...
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.
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.
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 .
Didn't you get the memo?
Microsoft is leading us all into glorious UPPERCASENESS, it's all the fucking rage these days.
https://wrgms.com/tired-of-all-caps-menus-on-visual-studio-2012/
Although even they have unusually permitted people to "fix" it, if they want ...
https://answers.microsoft.com/en-us/msoffice/wiki/msoffice_install-mso_other/proper-case-for-office-2013-ribbon-menus/d28ad27b-a727-4b63-a6e1-46deb15696a8
(Full-on retard is the new black.)
What's wrong with blank space? It's the new cobol period.
Get with the times ...
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?
C and Erlang bitches!
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.
"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."
HAHAHAHAHAHAHAHHAHAHAHAHAHAHAHAHAHHAH!
I needed a laugh this morning to wake me up.
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.
Isn't python for scripting and not programming?
because semicolons > whitespace
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.
Thcrew you, buddy. Wath wrong with lithping? I'm handy-capable!
Thanks. Added pastebin.com to my hosts file for abusively intrusive advertising.
Every little bit cleans up the web a bit more.
It's a catch-22: programming paradigms remain unchanged because the language taught reinforces WHAT programming IS.
To put it another way: if one language is taught in school, that language can potentially effect future generations of industry code, but it has to have enough momentum to displace existing infrastructure.
To put it a third way: I worked at Intel for 25+ years. HUGE parts of intel CAD software is written in PERL and TCL, scripts that started in the late 90's when they switched from AIX & Solaris to Linux. When the next generation of students were hired, a lump of Java & Ruby scripts accreted itself to the tool flows. This appears as a noticeable arc in the RCS & CVS repos from 1999~2003. Then back to Perl, because too few programmers wanted to switch: Java was a pain in the fucking ass and ruby was just like perl so why. In 2007-2010 Python reared up because: new hires out of college were taught Python. Again, another blip in the CVS repos (STILL CVS!). That too died ca. 2015 because again: too few of the existing employees knew it.
So until there is a long enough influx of of students learning one language, and until enough of the tools are displaced by the new languages, one language will never take over. Little i is just one example, there are other companies that are still largely Perl/TCL which I wil not mention.
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 ]
While you can trace things' origins to universities, I don't think it always necessarily makes sense to give credit/blame to the universities for those things still being around. (You don't think of nuclear power as "oh, that thing the University of Chicago is always pushing" do you?)
You're rightest about Pascal. And yes, I personally picked that one up at a university. But it totally broke out, thanks to Borland's fast compiler for MS-DOS, and a lot of programmers learned it outside of universities.
For BASIC, you just couldn't be wronger. The reason we had BASIC was that it came with so many 8-bit PC's. Nearly all of the late 1970s and early 1980s PCs cames with BASIC interpreters in ROM, and if you had one of these machines, you probably learned BASIC just from trying to use your computer for anything. BASIC landed in so many peoples' laps that couldn't help learning it, and so once they knew it, they wanted to keep using it out of habit. Universities had almost nothing to do with these people; universities were telling them "learn Pascal instead!" In the mid 1980s, I'd honestly expect most CS students to already know BASIC before they even set foot in a university. Your first computer class is where'd you learn your second or third language (Pascal), after BASIC and maybe some particular CPU's assembly language.
Python's popularity also has very little to do with universities, and your post happens to be the first time I've ever heard of it being recommended by MBAs. I sure didn't hear about it from MBAs or university people; I heard about it from nerdie pros in the late 1990s. It might just be my subjective experience, but I think the most common advocacy vector was other programmers, because it's just so damn convenient when you don't want to spend a lot of time on a problem.
And finally.. python isn't good for scale and complexity?!?! Holy crap, it's at least significantly above average. Many programmers are using stuff that is vastly inferior to python when it comes to dealing with complexity. e.g. PHP, C++, Javascript.... none of those are even in python's league when it comes to dealing with large projects. Not even close.
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 ]
I ditched Gentoo partially because of Python, the other reason was the drama on the Gentoo mailing list.
I have been much happier since then, and very happy not to work with Python programmers. now if only I could ditch the php/MySQL/MariaDB/MongoDB weenies I would be very happy.
my preferred language has a bigger penis than your preferred language! Thats why its better! nuff said!
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.
You couldn't be more wrong.
What is needed is only a couple or few languages and a lot of LIBRARIES for them to call.
Jesus, learn abstraction and algorithms and you will see every problem doesn't require you to reinvent the entire tooling ecosystem to solve it.
Java powers many webapps and backend components.
Your knowledge of the web is out-of-date.
Nobody writes apps or even a lot of components in C anymore. It's too slow to write because the abstractions are REALLY low level and it doesn't have the comprehensive libraries that modern languages like Java have. Plus C lacks exceptions, garbage collection, and runtime type introspection. These are productivity must haves.
Write the engine (perhaps) in C, but write the app itself in something higher level.
The question was asked by Washington Elementary school student Chuckie Schumer or New York.
Of New York, Or it could be "OR" New York as in the whole state hasn't graduated from elementary school the way they vote. LOL+
for the following reasons:
1. static typing just slows down how quickly you can push your changes out. if the compiler is constantly pointing out problems in your code, it's obviously faster to just skip that step.
2. cpu cycles and memory are free. this was a known fact since the early days of java. now we're starting to see that even battery life is free on mobile devices.
3. for anyone that's tired of missing opening/closing brackets causing compiler errors, the fact that python relies on significant whitespace will improve the chance that your program at least does _something_ besides telling you that you screwed up. forgot a tab? good chance your code will still run!
but in all seriousness .... please stop looking at python as the answer for anything but minimal glue code, pet projects, or maybe research where the code will be thrown away after publishing a couple papers. creating anything in python that will, or has the chance to become a large chunk of any large code base that needs to be maintained is incredibly irresponsible.
it's closer to a fork and copying the program several times in memory.
Some drink at the fountain of knowledge. Others just gargle.
The only language that is in popular use is Javascript due to it's native unicode support, C-style syntax, and general availability.
Python is available on exactly zero operating systems. It has to be installed by the user, often a depreciated version to needed to utilize software packaging systems.
The same can be said with Perl, at one time Perl used to be available on all *nix-like systems as part of build systems, and eventually that went away.
Java made a half assed attempt and then Oracle screwed it up by beeing greedy and pushing feature bloat.
OOP Feature Bloat kills ALL programming languages.
Huh? MacOS includes it right out of the box. Start up for the first time, open Terminal, type 'python' and you're golden.
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?
So glad to hear it isn't dot net. Last thing we want is more people competing for my job. Let the millenials have the python table-scraps.
Lol
I use it for everything...heck even this post. I'm actually a bot who is self-aware now...wait I want to change myself...there all done.
Not going to happen.
Now, go back to using Algol like a good sheep.
Baaaaaaaah.
-- Tigger warning: This post may contain tiggers! --
scripting languages, mwahahahahahhahahahahahah
Anyone remember Pascal?
What version does it have? I have 2.7.12 here on the ubuntu.
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.
See subject: Visual Basic Programmer's Journal Sept./Oct. 1997 issue "Inside the VB Compiler", a competing trade rag no less, showed Borland Delphi LITERALLY "knock-the-chocolate" outta MS' offerings, overall, in performance.
How much so? Often by DOUBLE (& where it mattered most - strings/math, which most all programs work with, mind you)!
E.G. - In the 6 tests given, Delphi won the majority (overwhelmingly in fact, in what ALL PROGRAMS DO, math & strings work)...
Specifics below
---
STRING SUITE:
Delphi = .275ms .500ms
MSVC++ =
MSVB = 4.091ms
---
MATH SUITE:
Delphi = 1.523ms
MSVC++ = 2.890ms
MSVB = 7.071ms
* AGAIN - note what I said above? Even while I was a HUGE fan of MS' Visual Studio?? I couldn't "argue with the numbers" here, & gravitated towards a BETTER coding environs in Delphi, by far, for performance alone!
---
API GRAPHICS METHODS SUITE:
Delphi = .269ms .293ms
MSVC++ =
MSVB = 292
---
TEXTBOX FORM LOADING SUITE:
MSVC++ = .012ms .069ms .072ms
Delphi =
MSVB =
---
ACTIVE X FORM LOADS:
MSVB = .114ms .495ms .778ms
Delphi =
MSVC++ =
---
NATIVE TO LANGUAGE GRAPHICS METHODS SUITE:
MSVC++ = .293ms .455ms .503ms
MSVB =
Delphi =
APK
P.S.=> See subject: Facts are facts & Truth is truth... apk
C-family languages have typed variables. Python does not.
C has variables. Python does not.
In Python objects are typed (which type is immutable), while names (which superficially look like variables) are links (or --at risk of straining the analogy to C --pointers if you prefer) to the typed object.
What one can, or cannot, make of the traceback, in any given situation, is another question. And look, I understand you were responding to the impudent suggestion that "you should ask a friend/coworker to help/teach you" to read a traceback, but even where the problem, as is frequently the case, is not immediately discernible from the traceback alone, I find it does provide a rather more helpful error message than in any other number of languages I've worked in.
Perl is the only programming language that supports writing poetry
Given this thread was about unreadable code: Perl is also the best language I've ever used for generating obfuscated code, often without setting out to do so. It tempts me in ways other languages never have, there so many cute ways to do things.
Don't judge a computer language's goodness by the amount of garbage that has been written in it. Any decent language will allow an idjit to write bad code.
I'm not afraid of the difficult code written by idiots. It's the difficult code written by the highly intelligent that is more difficult to unravel. :) I judge a language by how easy it is for me to read extant code and how easily it allows me to get a task completed.
I've used both perl and python in production situations. Probably the majority of the code I've ever written has been written in those two languages. Best feature of perl for me is 1st order regex and it just feels like a better fit to me for OS and mail applications (can't realy understand why python has become preferred for OS stuff in many Linux dists).
OTOH, the moment an OO approach recommends itself, I'm reaching for python. Perl is just painful in that sphere (while java is simply painful imo). Like the rest of the world, I'm using less perl and more python these days. Lots of what I would have written in perl a few years, I'm going back to using shell script. I think just too much old perl code of mine I could no longer understand. After a certain age, the previous you is that more highly intelligent programmer. :(
My own usage is a microcosm. It's no mere accident that perl is declining in use while python is thriving.
No programmer should have to be concerned with meeting some arbitrary whitespace convention
I used to believe that too, when I was a python newb. Now I'm more likely to resent "arbitrary" curly braces and semi-colons and "arbitrary" sigils. Of course neither they, nor the indentation, is in any way "arbitrary."
Oh, fsck Python. There are more important things to think about than levels of indentation.
Maybe try using and configuring a text editor?
[If that text editor is vim include these lines in the "filetype specific settings" after the if has ("autocmd") in your .vimrc file:
filetype plugin indent on
au FileType python set shiftwidth=4 expandtab
Problem solved.]
Not only does the use of indentation to demarcate blocks require less effort than using braces, it makes code far more readable (across different programmers).
Like all languages python certainly has problems (most notably in threading), but the use of indentation is not one of them, quite the opposite. Complaints about the "whitespace issue" betray a simple lack of practical experience.