IEEE Spectrum Declares Python The #1 Programming Language (ieee.org)
An anonymous reader quotes IEEE Spectrum's annual report on the top programming languages:
As with all attempts to rank the usage of different languages, we have to rely on various proxies for popularity. In our case, this means having data journalist Nick Diakopoulos mine and combine 12 metrics from 10 carefully chosen online sources to rank 48 languages. But where we really differ from other rankings is that our interactive allows you choose how those metrics are weighted when they are combined, letting you personalize the rankings to your needs. We have a few preset weightings -- a default setting that's designed with the typical Spectrum reader in mind, as well as settings that emphasize emerging languages, what employers are looking for, and what's hot in open source...
Python has continued its upward trajectory from last year and jumped two places to the No. 1 slot, though the top four -- Python, C, Java, and C++ -- all remain very close in popularity. Indeed, in Diakopoulos's analysis of what the underlying metrics have to say about the languages currently in demand by recruiting companies, C comes out ahead of Python by a good margin... Ruby has fallen all the way down to 12th position, but in doing so it has given Apple's Swift the chance to join Google's Go in the Top Ten... Outside the Top Ten, Apple's Objective-C mirrors the ascent of Swift, dropping down to 26th place. However, for the second year in a row, no new languages have entered the rankings. We seem to have entered a period of consolidation in coding as programmers digest the tools created to cater to the explosion of cloud, mobile, and big data applications.
"Speaking of stabilized programming tools and languages," the article concludes, "it's worth noting Fortran's continued presence right in the middle of the rankings (sitting still in 28th place), along with Lisp in 35th place and Cobol hanging in at 40th."
Python has continued its upward trajectory from last year and jumped two places to the No. 1 slot, though the top four -- Python, C, Java, and C++ -- all remain very close in popularity. Indeed, in Diakopoulos's analysis of what the underlying metrics have to say about the languages currently in demand by recruiting companies, C comes out ahead of Python by a good margin... Ruby has fallen all the way down to 12th position, but in doing so it has given Apple's Swift the chance to join Google's Go in the Top Ten... Outside the Top Ten, Apple's Objective-C mirrors the ascent of Swift, dropping down to 26th place. However, for the second year in a row, no new languages have entered the rankings. We seem to have entered a period of consolidation in coding as programmers digest the tools created to cater to the explosion of cloud, mobile, and big data applications.
"Speaking of stabilized programming tools and languages," the article concludes, "it's worth noting Fortran's continued presence right in the middle of the rankings (sitting still in 28th place), along with Lisp in 35th place and Cobol hanging in at 40th."
The number of spaces preceding a statement determines the scope of that statement? Wow. That seems totally nonsensical to me.
While I can rant on the whole whitespace thing like everyone else I'd rather take a moment to rant on a language that:
* Is dynamically typed. Is this useful? Sometimes. Should it be the default. Not really, IMHO. I like my types.
* A misspelling on the LHS of an '=' operator goes unnoticed? This snake sucks.
* There are __TOO__ __MANY__ __UNDERSCORES__. How about more proper namespacing?
* It's a scripting language. Get a grip folks. It's no different under the covers than any other imperative scripting language.
Most that work at IEEE Spectrum never had real jobs. This is a result of way too many IEEE staff parties in Amsterdam with Guido van Rossum.
Python has hit critical mass in both popularity and tools available. C, C++, Java, Perl and anything else the average /.er is going to complain about going anywhere just like FORTRAN and COLBOL haven't.
XKCD hit the nail on the head. It's something easy enough for middle schoolers to grock and powerful enough to use with TensorFlow. It's our office's go-to language for "I need this task done". It's basically BASIC where you can import math (numpy), plotting (matplotlib), neuralnetwork (TensorFlow) and other packages.
Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.".
You can knock out something in 30 minutes in Python that would take longer in anything else and the performance difference isn't worth doing it in something else.
Que the Rust fanboy brigade in 3....2....
Python is a nice language. So are C,C++,C#,Swift,PHP,Powershell,Java,JavaScript,Typescript, etc... heck I even like COBOL. But what is the relevance of rating what the most used language?
I think programming methodology is more interesting. Is purely functional, MVVM, object oriented, structural, etc... the best.
combine 12 metrics from 10 carefully chosen online sources to rank 48 languages
What metrics are they and which online sources were used? If you're going to make such an assertion then why not explain or link to the details?
To me, it sure sounds like a list of the most problematic languages combined with the number of people who use them.
Anons need not reply. Questions end with a question mark.
Why use what is essentially a giant abstraction layer for another language?
Eric Raymond’s 17 Unix Rules covers this:
Rule of Generation
Developers should avoid writing code by hand and instead write abstract high-level programs that generate code. This rule aims to reduce human errors and save time.
Rule of Economy
Developers should value developer time over machine time, because machine cycles today are relatively inexpensive compared to prices in the 1970s. This rule aims to reduce development costs of projects.
Rule of Optimization
Developers should prototype software before polishing it. This rule aims to prevent developers from spending too much time for marginal gains.
Python beats C in all 3.
How I miss thee.
OMG facts!
It's great for cobbling little toys together, but not for serious projects.
1. It does not catch entire classes of problems that compile time checked languages do.
2. It is dynamically typed.
3. It is slow as shit.
So cool, use it for small projects, but if people move more to building serious projects out of it that is going to lead to even MORE rubbish software as people fail to catch basic problems that a compiler would catch for you, and they also fail to run any of the analysis tools that might help.
It's a scripting language for god sake. Let's keep it in perspective.
There are no Python to machine code compilers out there.
Interestingly, you are incorrect. There is one: PyPy. It's Python written in Python. And it's fast!
http://pypy.org/
lf(1): it's like ls(1) but sorts filenames by extension, tersely
declares Rust The #1 Programming Language
it's not a bad language as Dickapulos pointed out. Not have to compile is one of its strength. And probably the academia use skews the popularity.
Python rocks. I love it. I've written 2-3 major apps in it over the last 15 years. That said, using spaces for block definition is brain dead. Seriously. I know I'm gonna get flamed for this but, whatever.
tldr; Python is a great language with one huge fucking hole. When tabs vs spaces change the way a program runs, something is wrong. Yeah, I know you can tell your editor to change tabs to some random spaces, but still.
When I find code for SomethingIReallyWouldLike, and it Doesn'tFuckingWork, and I find out FuckwitUsed2CharacterTabs, then something is broken. Broken hard. Broken bad.
Can it run gorilla.bas?
It's no wonder we need so many H-1B and other imports if that's the state of computer science in the US...
I know a few EE faculty who have moved from using Matlab to using Python. Some of the grad students think the department should take a more active role in encouraging students to do the same - or to eliminate Matlab from courses entirely.
#DeleteChrome
Who cares? Raspberry Pi uses Python, so its great
Sure, if you're writing printer drivers it's probably not for you, but for people who have to solve business problems, not technology problems, it's a good tool that allow them to do their job quickly. There's plenty of high quality math packages and it's one of the languages that is the easiest to use for database access.
lucm, indeed.
What does Python do for you that Java does not do better?
Java is the new COBOL? No, Java is the new Turbo Pascal. Yes, it is compiled, but it is incrementally compiled inside Eclipse or NetBeans so the compile step is nearly instantaneous. You say C++ IDEs point out your errors, but you have to run a time-consuming compile step to see all of your errors -- not so with Java.
Java is the new statically-typed bondage-and-discipline language like Pascal? No, Java has Reflection. You can call any method on any object provided you know its signature. Yeah, yeah, Reflection is clumsy, but you use it inside of a library. You know all those Java how-to books telling you about all of those ActionListener inner classes to intercept button pushes and menu selections cluttering up your code? Fuggedaboutit! Class java.beans.EventHandler uses Reflection to connect a button or menu selection to a method in any object you want, provided it has the correct signature. Yes this is "dynamic" and it bypasses the static type checking that your target method indeed has the correct signature, but it is exactly what Python does.
Java is the new FORTRAN? No, Java is the new Matlab with its enormous numerical library and Command and Figure windows for immediate execution, scripting, and plotting numerical results. Matlab is Java -- the Command and Figure windows are JFrames. Matlab is a Java shell -- from the Command Window or from M-files you can create instances of any Java object and poke at them (invoke their methods). If you don't want to pay serious coin for Matlab, there is a free software package called Mathnium, written entirely in Java and offering the same kind of Command and Figure window command-shell scripting goodness.
Beyond that, Java has proper Garbage Collection rather than reference-counted garbage. For numerical processing Java has proper arrays with optimized bounds checking instead of whatever the heck NumPy cobbles together. Java has real support for native threads running on different cores instead of whatever kind of wimpy simulation (green threads?) is offered on Python. Java has a standardized GUI library in Swing instead of what the heck are you supposed to use in Python?
I keep seeing these articles that proudly proclaim some shiny language as being #1, and the interpreter (or a large amount of the support libraries) are inevitably written in C or C++
...unless the language is Common Lisp, Chez Scheme, Pharo/Squeak, or any other mature environment that is written in itself? Well of course CPython is a joke, but let's not generalize unfairly. Not everyone made the big C mistake.
Ezekiel 23:20
1. It does not catch entire classes of problems that compile time checked languages do. 2. It is dynamically typed.
What I've actually noticed is that different classes of languages catch different entire classes of problems, not that one class of languages avoids one or more classes of problems while not introducing no other problems relative to some other class of languages. So it's always a trade-off with respect to what problems you perceive as the most painful and for what other problems you're willing to trade them. There's no programming environment at the moment that is superior at absolutely everything. For some big problems, even your "compile time checked languages" are not likely to be perfectly suitable (see AllegroGraph).
3. It is slow as shit.
Well, CPython is slow as shit. Python is a language and therefore it is neither fast nor slow.
Ezekiel 23:20
Does it make sense to compare Python to SQL to HTML? Completely different beasts. Seems more reasonable to zoom in on specific use cases and gauge popularity in those particular contexts. For instance, web applications. Results from Stack Overflow jobs:
node.js: 304
Spring: 180
Rails: 172
ASP.NET: 111
django: 80
In that particular context Python is more-or-less last place. Thing is, Python is used for plenty more than just web application back-ends. Much like Java. But there's a big difference from doing hard-core stats/science stuff with Python and doing Django dev. They both use Python, but they're completely different.
IMO, anyone considering which language to invest in should first ask him or herself: what kind of software development do I actually want to do? Then, within that context, evaluate the contenders.
The number of spaces preceding a statement determines the scope of that statement? Wow. That seems totally nonsensical to me.
Any more than the presence of a curly bracket 42 lines earlier determines the scope of a statement in C++? I agree it seems strange at first but it is actually really easy to adapt to and by forcing correct indentation it actually makes code easier to read.
VBScript is higher than Rust!!! 19 vs 22! YAHOOOOO!
I havent seen any advertisements for C jobs in this part of the world. Here it raining clould, automaton passed as AI, java and automation.
There are many other compiler projects too. Not to mention sub-python language compilers like cython.
That comment just shows you have no clue. Statically typed languages are not superior to dynamically typed ones ones. Statically typed is a bit better for beginners, but then it stands in your way. Static type safety is just an older hype from the "lets make a language that any moron can code in" crowd, and it basically never delivered on most of its promises.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Even the Python folks tell you to write your high performance code in C or C++.
True, but one of the smartest things Guido van Rossum did early on was to make it easy to interface C and C++ code to Python. It's why SciPy is winning so big in the sciences; it's the convenience of Python with the performance of Fortran. The libraries that do the work for SciPy are old numerical libraries that are very well optimized, very well debugged, very well understood, and very very useful. So, you can work in Fortran... or you can work in Python, enjoying the much friendlier interpreted language, and barely give up any performance vs. the pure Fortran. The hard work is done in Fortran, and the overhead of using Python to set up your calculations is trivial compared to the work of the calculations themselves.
https://www.scipy.org/
Python also provides a "lab notebook" environment through the Jupyter project. Nobody is going to try to use Fortran or C directly in the notebook.
http://jupyter.org/
https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook
And pretty much every library you might want to use has already been glued into Python by someone. Computer vision? Running code on a GPU? Signal processing? Solving equations? Whatever you need to do, you can do it conveniently in Python and it will be fast.
So yeah, if you write your own matrix multiply in pure Python it will be roughly 50x slower than compiled C. But nobody does that, and in the real world Python is fast enough to do real work.
lf(1): it's like ls(1) but sorts filenames by extension, tersely
... and Fortran also had a horrible indentation syntax issue.
If only they simply allowed braces to delimited sub-blocks and then Python would indeed conquer the world (perhaps/temporarily). Such a change would be perfectly compatible with the existing syntax and would only make Python more robust and better.
> the interpreter (or a large amount of the support libraries) are inevitably written in C or C++.
Whether a language bootstraps itself is super important when choosing a language for a project. /s
"Well, gee boss. I realize you want us to build a web API for this internal data, and yeah we have this team of node developers, but JAVASCRIPT ISN'T SELF-BOOTSTRAPPING!!!! We must do it in C."
> essentially a giant abstraction layer for another language?
All computer languages are giant abstraction layers for machine language. Even your beloved C.
Old people fall. Young people spring. Rich people summer and winter.
I accept much of this, and we have more than 40 yeras of philosophy and practice underpinning this.
However "developers should value developer time over machine time" is flat-out wrong. On large scale applications like I have to deal with, we are multiplying inefficiency across a 6 figure core count. This costs a lot more than I do.
Visual Basic has (optional) static typing.
That alone makes it a much better language than Python for any significant code.
Again, PyPy is written in Python.
You should use whatever language interests you. It may be that your interest is academic, hobby or for a career. For my career, I need to know C and assembler (a few different architectures). That's what pays all my bills. For my hobby interest, there are lots more good options and I dabble in FORTH, Go, Lua, and some obscure stuff. None of my needs or interest match up with Python, but that's OK, popularity doesn't translate into interest. And popularity alone isn't a great indicator of commercial value, as you can make very good pay in something obscure like Erlang versus something more mainstream like Ruby.
“Common sense is not so common.” — Voltaire
Why would C# come before Swift when it comes to mobile development?
Why would Python come before Javascript when it comes to web development?
Why is Java not even listed when it comes to embedded environment?
I does not.
It is faster and easier to generate C code with Python than with C.
Developers are faster in Python than in C.
And the third point is unimportant.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
There are multiple issues which make almost impossible to deliver accurate enough conclusions regarding the overall programming language popularity. Some examples: huge variety of environments (e.g., web, desktop, mobile, embedded systems, etc.), tasks (algorithm-focused development, GUI-focused developments, additions/extensions on existing software, automation of programming-related actions, etc.), etc. Additionally, such an outcome wouldn't make too much sense as far as all the (modern) programming languages are pretty similar. Their minor differences are only truly relevant under highly demanding conditions and when being used by experienced enough programmers, situations where generic samples of knowledge are pretty much useless (expecting experts to take seriously generic samples of knowledge while doing their work?!).
Kind-of-useful alternatives might be: comprehensive enough surveys asking experienced programmers about the pros/cons of different languages or benchmarks telling the objectively weak/strong points of some of languages under well-defined conditions. Even in these cases, the resulting information would be pretty meaningless; similarly to what happens with any attempt at coming up with dumbed-down explanations about the reasons for specialised actions happening without wanting to get a proper understanding about the whole situation. Experienced programmers should mainly trust in their opinion (+ the conditions under which they work more comfortably). Not-too-knowledgeable people shouldn’t try to make knowledge-based decisions without the input of experts. Everyone should focus on adequately analysing their specific conditions and not expecting generic-always-working solutions which rarely exist.
Custom Solvers 2.0 = Alvaro Carballo Garcia = varocarbas.
Trump is the most popular President. Hillary is a loser.
My religion asks me to use C.
When I'll reach the enlightenment, then I'll move to assembler.
Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
> There are no Python to machine code compilers out there.
There are: Pypy, shedskin, Jython, cython, IronPython.
IEEE Spectrum's annual report on the top programming languages
We get these articles once a month. Must be some other definition of "annual" than I'm used to.
"Popular" != "Best"
Also, one should choose the right language for the task. The right language for a small office task is not usually the right language for a scalable microservice. E.g., Google discovered long ago that if an app written in Ruby or Python requires 100 servers to meet demand, but the same app written in C++ or Go requires only ten servers, then there is a substantial cost difference. (Although Go is quite terrible for maintainability - do a Google search for "Go gotchas".)
Ignore popularity. Make your own choices.
I mean, its not like they are compatible...
Moooo. Follow the cow ahead of you.
Learn python to learn to code, but if you want to earn a better living, move on to some other language so you don't have to compete with someone happy to earn $5/day, not $50/hr.
Python is a great language. It it useful for all sorts of reasons.
It is also not-so great for many uses. It teaches some good habits, which can be carried over to other languages.
Lots of real applications are written in Python. I like a few of them. There are GUI tools, server tools, devops tools, and 10 line quick scripts.
None of this would alter the declaration or make someone who believes another language should be at the top.
I would just say this ... if 50% of the world speaks 1 language, how much money is there to be made if you specialize in that language? 25 yrs ago, someone who spoke both English AND Mandarin was not so easy to find. Now that English is taught in schools around the world, most young adults have enough skill with it not to need a translator.
Python is popular for the same reason McDonald's is, Python is convenient.
It's not the best language by most metrics but like VB it's good for quick and dirty.
Yes it's a pro. npm is a fantastic resource. The fact that there is a house of cards situation going with some packages is true, but then again the same shit happens with Python.
Been there just the other day. For some reason I had to write a quick & dirty utility to send faxes and to process incoming pdf sent by a fax reception service. At first I tried to do it with Python but I quickly got in the quicksands of old libraries that only work with Python 2, and weird libraries that required Cython and a endless stream of conflicting requirements.
After my 3rd virtualenv and who knows how many failed cython compile, I gave up and did a quick search on npm. I found what I needed immediately, and the whole thing (sending faxes + doing ocr on the pdf scans) required less than 15 lines of code. It's not pretty but the thing works and it will do the job for the business while they're transitioning to some other process that doesn't require faxes.
npm is awesome.
lucm, indeed.
Ironically, one of reasons for Python's popularity is because it is a language "any moron can code in".
And have fun maintaining code written 10 years where the objects have 0 type information about them. This may come as a shock to you, but people don't always properly document their code or write tests with adequate coverage either due to laziness or they've got a gun to their head to hurry up and get something done. That sort of thing happens all the time in The Real World. You should try spending some time in it.
VBA is about ten times faster than numpy for blas type numerical tasks. But I grant python is easy to use with nice syntax.
refactor the law, its bloated, confusing and unmaintainable.
Inquiring minds want to know.
They are basically two entirely different languages...
(a different AC than the GP)
The market has already overwhelmingly answered this question 10 years ago.
The browser.
Most "apps" are now browser-based. Nobody wants to deal with your language of choice's stupid GUI libraries.
And especially not with porting issues.
And don't get me started on Java Swing.
Yes, browser-based UIs suck, but they suck much less in 2017 than they did in 2007 and the trend seems to be continuing towards a more positive experience.
I'm just waiting for the upcoming release of Python v3...
On a project it might take only one moron, or one typo, to screw things up. Ideally you have processes including code review and testing to check that, but that is still not absolute certainty. Something that makes it hard for typos to screw things up helps a bit. But then C and C++ have = and == and it's possible to commit a multitude of sins in C++ with templates, although c++11 and 14 tidy up some of the syntax and make some less likely, and also to avoid RAII and deep copy errors. There's a lot of pre C++11 out there, of course.
The DEC VT52 (1975) and most other terminals and printers of the 1970s and 1980s, including the Epson MX-80, used tab stops at 9, 17, and every 8 thereafter. A relative few (VT100) had settable tab stops. The every-8 setting is still the default on HP Laserjets and practically any console or terminal emulator you can find. Emacs merely follows the standard.
Still works great
I should qualify that these results are with small matrix math in large quantities. I suspect the ffi overhead in numpy was eating me alive. VBA either pre or jit compiled I think. Probably cleaner c interfaces. Or just how numpy is optimized. Ublas in boost is horrible at small matrix stuff. Eigen is way better for that.
refactor the law, its bloated, confusing and unmaintainable.
I used to do web design and started learning JavaScript. Then along came React, Handlebars, Angular, Knockout, and a million other do-the-same-thing-in-a-slightly-different-way frameworks that made getting a job a nightmare, because employers only wanted someone with years of experience in the EXACT framework they were using, chosen years ago by a front-end developer who had long since moved on.
I gave up and went into web analytics. Bonus: most of the marketing/SEO people I work with are young women. :)
What, it's not Matlab? I would not have expected based on the number of Mathworks adds.
One of the key issues with python is its global interpreter lock, making multi-threading highly inefficient. And its performance is not more than half of that of perl. Though for the purpose it is mostly used for, I don't think it matters. I liked the "one way of doing things" rather than the perl's "many way of doing things". Hate the mandatory indentation.
And there is a lot of mistakes you can make in Java, JavaScript, etc. The point is that errors that the compiler can catch because of a type system violation turn out to be mostly inconveniences that then give you typically non-exploitable run-time errors (except for DoS). Sure, that is not true for all of them, but in the greater scheme of things, static type safety does not lead to more reliable or more secure code. The problem is, as so often, that the more help you give the coder, the less skilled they become and then they overlook more and more bad things that the compiler cannot catch. So any small gain in security and reliability tends to get offset by that, possibly making things worse overall. Or to put it differently: If you leave the training-wheels on the bike, the cyclist will never really learn how to drive that thing.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
How can this be correct ? Very few development if done in vhdl these days.. even in Europe. I like to see how these numbers were gathered.
$ ls -l
lrwxrwxrwx 1 root root 9 Jan 24 14:00
lrwxrwxrwx 1 root root 9 Jan 24 14:00
-rwxr-xr-x 1 root root 3783608 Jan 19 2017
lrwxrwxrwx 1 root root 9 Jan 20 2017
-rwxr-xr-x 2 root root 4747120 Jan 19 2017
-rwxr-xr-x 2 root root 4747120 Jan 19 2017
lrwxrwxrwx 1 root root 10 Jan 20 2017
Watch this Heartland Institute video
In '94, I was a member of the IEEE computer affiliate, and the Jan, '94 issue of Computer literally presented, including the front cover, OOP as the silver bullet answer to the programming backlog.
Oh, and OO won't ever have null pointer exceptions, etc.
Where's my 1lb box of salt?
IEEE doesn't list Python as a language for embedded systems or mobile, but I run Python scripts on my iPhone and iPad all the time (http://omz-software.com/pythonista/) and I use a micro-controller running a special version of Python (https://micropython.org/). Even the European Space Agency is funding Micropython for potential use in their space program (https://forum.micropython.org/viewtopic.php?f=8&t=744).
Read and cry:
http://hackaday.com/2010/10/02/decoding-mp3-in-python/
in a nutshell: a dude wrote a mp3 decoder in pure python, code was 34 time too slow to play it real time. GOD WHY.
Really, Python is one of rock programming language which gives great support to build various types of apps and software.
I explicitly mentioned "CPython", because that's what most people use, given PyPy's current limitations. It's not implausible that PyPy will replace CPython in the some moderately distant future, obviously.
Ezekiel 23:20