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.
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.
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!
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
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.
Really? That's your response? Python is a great language with a major hole in the middle of it. Has nothing to do with retards, nor H1-Bs (many of whom I've worked with and they are not retards).
Python fails because it's bitch to import code from SomeUnknownD00d into yours, hoping SUD was kind enough to convert tabs to spaces. And to logical spaces. If my code has tabstops of 4, and SUD has tabstops of 2, all bets are off.
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
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.
Python fails because it's bitch to import code from SomeUnknownD00d into yours, hoping SUD was kind enough to convert tabs to spaces. And to logical spaces. If my code has tabstops of 4, and SUD has tabstops of 2, all bets are off.
This is wrong. SomeUnknownD00d can use whatever tab stop and mix of spaces/tabs that he wants and you can import from your code no problem, even if your tab stop is different or you use all spaces or whatever. Spacing only has to be consistent within a single block, there's no inter-module dependency there.
rage, rage against the dying of the light
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!
Kind of tells you whether you should use it now. And kind of makes checking all the fantastic statements made by the fanbois pretty hard. (Not that it is unclear that most are alternate facts....)
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
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.
You probably have not looked right. There are basically no "C coder" jobs, but there are a lot of "expert in xyz and can also code c". Jobs that primarily ask for coding skills in one language are just for code-monkeys that will go unemployed in the not-too-distant future when the next hype comes along.
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
> 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.
Visual Basic has (optional) static typing.
That alone makes it a much better language than Python for any significant code.
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
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.
My RPi does not have Python installed, but it does have Perl and Lua. (Arch Linux)
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.
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.
"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.
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.
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.
I'm just waiting for the upcoming release of Python v3...
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.
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.
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.
$ 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?
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