Python Finally Ties With Java In RedMonk's New Programming Language Rankings (zdnet.com) 90
An anonymous reader quotes ZDNet:
Python is tying with Java as the second most popular programming language behind JavaScript, according to developer analyst RedMonk's latest ranking.
The second spot for Python is the highest position it's ever attained in RedMonk's list of top programming languages, which is based on an analysis of GitHub and Stack Overflow data. Historically, Python has been steady in fourth position but it rose to third spot three years ago in RedMonk's tables... Python has been rising across several programming language popularity indexes, including Tiobe and IEEE Spectrum.
Microsoft-maintained TypeScript for large-scale JavaScript projects has also risen one place to ninth position along with C... Rust is a popular language among developers who discuss technical challenges on StackOverflow, but it hasn't moved from its spot at 21.
The second spot for Python is the highest position it's ever attained in RedMonk's list of top programming languages, which is based on an analysis of GitHub and Stack Overflow data. Historically, Python has been steady in fourth position but it rose to third spot three years ago in RedMonk's tables... Python has been rising across several programming language popularity indexes, including Tiobe and IEEE Spectrum.
Microsoft-maintained TypeScript for large-scale JavaScript projects has also risen one place to ninth position along with C... Rust is a popular language among developers who discuss technical challenges on StackOverflow, but it hasn't moved from its spot at 21.
Rather program with magnetic tape (Score:5, Insightful)
Java: the COBOL of a new generation.
Python: the BASIC of a new generation.
Re: (Score:3)
Java and Python. Both popular for the same reason: not because they are good, but because they were used in school to teach new programmers. Java: the COBOL of a new generation. Python: the BASIC of a new generation.
I'm not disagreeing with you, but I'm curious: what language(s) DO you like?
Re: (Score:1)
Re:Rather program with magnetic tape (Score:5, Funny)
Re:Rather program with magnetic tape (Score:4, Interesting)
Most languages these days are actually acceptable (I still hate them), we've moved beyond the pains of SNOBOL or BASIC where the only control structures were "if" and "goto".
The real thing we are lacking is a language that has really good organizational primitives (you could say LISP has them, but that's because LISP is just a syntax tree and a preprocessor. It has anything, the challenge is finding what's good). OOP is ok, but you can tell it's not right because it leads people to implementing all kinds of strange design patterns.
Re: (Score:2)
Re: (Score:3)
I knew I forgot one: APL. Great language, well-designed, elegant.
A necessary, but not sufficient, condition for being a great language is being useful for software development.
The best measure of that is to see how many projects are actually implemented in the language.
APL fails that test. It doesn't scale beyond about 10 lines.
Re: (Score:2)
The best measure of that is to see how many projects are actually implemented in the language.
What on earth made you think that is a good metric?
Re: (Score:2)
What on earth made you think that is a good metric?
I don't know. I just think a good programming language should be useful for writing programs.
Re: (Score:2)
Re: (Score:2)
APL fails that test. It doesn't scale beyond about 10 lines.
btw, this is wrong, APL is clear if you write it well, just like any language.
The best way to conceptualize APL is basically like R but it can handle more dimensions. R and APL cover the same use case, but APL does it better.
Re: (Score:1)
Re: Rather program with magnetic tape (Score:5, Insightful)
I'm a C coder by trade but I love Python because I can bang out what would be time consuming to code in C in a matter of minutes. Sometimes it's about doing what needs to be done - not how you get there.
Re: Rather program with magnetic tape (Score:4, Insightful)
Re: (Score:2)
C doesn't have near the number of libraries that Python has. It can't even be on the same order of magnitude.
I shudder to think at how much slower doing Notebooks/Pandas/Matplotlib data exploration would be in C.
Re: (Score:2)
I shudder to think at how much slower doing Notebooks/Pandas/Matplotlib data exploration would be in C.
It would be about the same, with the right libraries.
Re: (Score:3)
It would be about the same, with the right libraries.
Ok, what are said libraries, if they exist.
If the libraries don't exist yet then it's a non-starter.
Re: (Score:2)
Re: Rather program with magnetic tape (Score:1)
Language ecosystem
Re: (Score:2)
C doesn't have near the number of libraries that Python has. It can't even be on the same order of magnitude.
s/Python/Perl/
s/C/Python/
Everything is somewhere on the curve...
Re: (Score:2)
How are Perl's TensorFlow bindings?
Re: (Score:2)
You always seem to get stuck on specifics, but the original post was about quantity.
In any case, a quick Google search found at least one Perl package for TensorFlow client mappings ... https://metacpan.org/pod/AI::P... [metacpan.org] but, in general, who cares. If it's important to you and you find what you need with Python, enjoy, but Python is still younger and has fewer libraries -- in general -- than Perl. It's not a contest, both languages have value.
Re: (Score:2)
Huh, are you kidding? There exist millions of C libraries. Also data exploration works just fine in C. But I agree that the bare language does not come with a sufficient set useful functionality, and it therefore takes more effort to find the libraries you need. But installing is then usually as easy as 'apt-get install libfoo-dev'.
But anyway, the proof of the pudding is in the eating, as long as most applications I rely on daily are written in C and not in python, I would say python still has to show its m
Re: (Score:2)
Re: (Score:3)
That's about libraries, not about the language. Notice the difference, please. With good libraries, you can be just as efficient in C as in Python, and it's arguably easier to keep your code clean since C actually has real types.
The language and the libraries are usually not separable.
With a standard Python installation, you get an incredible array of useful libraries, all installed and ready to go.
With C, you get to use dangerous string manipulation routines that haven't been improved since the 1970s, and you get to write almost any other nontrivial container yourself from scratch. (Unless you decide go down some reference counting hellhole like Glib.) Any higher-level library functionality you've got to track down on your own and
Re: (Score:2)
The language and the libraries are usually not separable.
That's a pretty dumb statement.
Oh, and C is significantly less strongly typed than Python
And that's an extremely misleading statement, leading me to believe that you can't see clearly for some reason or another, and are purposely presenting facts in a misleading way.
Re: (Score:2)
Are you some kind of weirdo who enjoys downloading, installing, compiling and linking development libraries? Then repeating the process in an incompatible way for each platform you use?
My typing statement was not misleading. Python is dynamically typed and strongly typed. C is statically typed and not-at-all strongly typed. It is trivial to completely subvert its typing system, and in many common usage cases (printf, qsort, any variadic function at all, and any scheme to implement polymorphism), that is the
Re: (Score:2)
Re: (Score:2)
So whhat?
It's better than a segfault at runtime.
Re: (Score:2)
Re: (Score:3)
You forgot to finish with: "Na-na Na Na-na!"
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Python doesn't fail to catch type errors at runtime. If you try an operation invalid for that type, it throws a well-defined exception. It does not result in "undefined behavior" like a huge number of error cases in C.
Re: (Score:2)
It's actually both. If you haven't programmed a real project in Python (or another language that is similarly much higher level than C), I really recommend you try it - take a weekend and put together a meaningful but complete project and you'll really see some huge differences in productivity that come from the language itself.
There are many similarities to the jump from asm to C - you give up some things and get other things - such as a productivity boost - in return.
Re: (Score:1)
Re: (Score:2)
I program in Python several days a week. It's my job. But you are too dumb to recognize the difference between a language and the libraries.
Actually, no, that's not the case at all. Here's a small but real world example from just yesterday; a little snippet of code I wrote in the middle of a larger project, but essentially here's what the requirements were:
Input:
- a text file with up to ~100k email addresses, one per line
- emails are in whatever mixed case users entered them as (they were stripped out of email 'To:' headers)
- emails are known to be valid, but some are of the form 'user@host.com' while others are of the form 'Some Name <user@
Re: (Score:2)
You'll also notice that these few lines of code required no additional libraries (third party or otherwise) and that the entire problem was easy to solve because of the language itself, not because of libraries.
Libraries included with the language are still libraries you dimwit.
Re: (Score:2)
You'll also notice that these few lines of code required no additional libraries (third party or otherwise) and that the entire problem was easy to solve because of the language itself, not because of libraries.
Libraries included with the language are still libraries
So? Who said otherwise? My code used builtin language features, and not any builtin libraries. Why is this relevant? Because earlier you (wrongly) asserted that the productivity gains someone was getting were due to libraries and "not the language".
you dimwit.
Just a heads up: when you behave this way (silly and over the top hostility), to everyone else you come across like this guy: https://screenrant.com/parks-r... [screenrant.com]
(if that's your goal, you're pulling it off marvelously; if not, just a friendly FYI that you might want
Re: (Score:2)
Re: (Score:2)
Cool, thanks for taking the time to make a meaningful reply. I also appreciate that you were able to communicate without resorting to name calling - thank you.
For what it's worth, though, I think that example proved my points - more than 3x the code, relatively much more complex implementation, probably took much longer to implement (the Python version, including testing, was about 5 minutes), and likely at least one bug (depending on the behavior of ehash_iter*) and maybe memory leaks (depending on what so
Re: (Score:2)
Yes, the libraries are very important and I agree the "batteries included" concept is a major part of Pythons success. But, it is more than just the libraries.
I could perhaps write the first buggy version of the same code in C++ (I haven't done any real C stuff for a very long time) in about the same time as in Python, but testing and getting it bug-free and "right" takes much much longer.
The edit-compile-test cycle is MUCH faster in Python (IMHO). By default, the compilation units are small (one pyc per py
Re: (Score:3)
Java never caught on for scientific computing and I'd claim it is because it makes low level interaction hard (not impossible, just hard and messy).
My sense, talking with scientists who use Python and R for data science, is that they just don't 'get' OOP. And that's understandable. Because OOP is an attempt to make organizing large programs easier (Java especially optimizes for that), and because data scientists are essentially just writing long batch scripts (but with math), they just have no use for it.
Java isn't really designed for the use case of scientific computing, but Python, as a scripting language, is entirely perfect for writing scripts.
Re: (Score:2)
I'll state the contrary. You can't be as efficient in C as you can be in Python, because there is a lot more housekeeping and boilerplate involved in C, even when using libraries.
Re: (Score:2)
Memory management has two ways of being simplified in C: one is to use a garbage collector (there are a bunch of them), and the other is to use memory pools, cleaning up after every event loop. Actually almost every problem with memory management can be solved using memory pools of some kind, except problems that would also exist in python (and by "pro
Re: (Score:2)
No amount of libraries can make dealing with strings in C as simple as it is in Python.
Re: (Score:2)
Re: (Score:2)
Python has dynamically allocated, garbage-collected strings, with easy concatenation and formatting. That alone means that something as trivial as a+b+c in Python can translate to several lines of C.
Re: (Score:2)
Re: (Score:2)
I wrote plenty of C. There's no way to get around tedious manual memory management there. Nor is it unique to strings - it's just that it's particularly glaring in that case compared to, well, pretty much anything else.
End result is, so much C code uses fixed-size buffers to keep things simple, and then users wonder why there are arbitrary limits on text length. Or worst case, there aren't enough checks, and then invalid inputs overflow the buffer.
Re: (Score:1)
Not really, Java is popular because it's statically typed, memory managed, and JIT compiled which hits the sweet spot of performance and quality.
Native compilation is largely outdone by JIT compilation now because JIT compilation can optimise for a specific machine rather than a generic platform - given compilers have been better than hand optimisation for all of like 99.9999% of developers for a long time now then that means there's no performance benefit to native now for the bulk of development. Garbage
Re: (Score:2, Flamebait)
Native compilation is largely outdone by JIT compilation now because JIT compilation can optimise for a specific machine rather than a generic platform
Keep drinking the cool-aid boy, keep drinking it.
Re: (Score:2)
Re: (Score:1)
Native compilation is not _always_ outdone by JIT, as I pointed out someone who is good at handcrafting optimised code, the 0.0001% of developers left who can do will indeed be able to produce more performant code.
But in the general case, yes it is, they were almost level around 10 years ago, and the gap has only widened since. It's not clear why you would believe that native will always be faster when JIT has the significant advantage of being able to optimise at runtime based on real world usage, somethin
Re: (Score:2)
If think you need to educate yourself on modern JIT compilation technology, as it sounds like your knowledge is somewhere between 10 and 20 years out of date. There's a reason literally everyone has jumped on the JIT bandwagon from JavaScript to PHP; because those runtime optimisations open up significant areas for further optimisation, whilst AOT compilation optimisation is largely stuck in a rut.
It sounds like you should read what I wrote again as I largely agreed with you but you just assumed my "knowledge is somewhere between 10 and 20 years out of date". In most situations today, native compilation does not gain a significant advantage over JIT. The term is "most" but not all.
You will never be able to automatically optimise for the details of an unknown execution platform better than something that's actually running on that platform and that can analyse the execution path ways in real world usage can in the long run without making your native code do pretty much the same thing and act as a defacto JIT in the first place.
You do realize that there are applications in this world that have known execution platforms right? For things like supercomputers which are built using exact hardware, it does matter if you use Native vs JIT as you need ev
Re: (Score:1)
Re: (Score:2)
I want to learn the new language Rankings! (Score:2)
No mention of Fortran or Pascal? How did that comment get an Insightful mod?
When I first saw this story I misinterpreted the headline. I thought it was about a new language named Rankings that finally ties the virtues of Python to Java's strengths. Must be named after that famous programmer? Jeff Rankings, wasn't it? Apple guy?
I still think it qualifies as a clickbait headline. Programming language wars!
Re: (Score:2)
Re: (Score:1)
Re: (Score:1)
Java: the COBOL of a new generation.
Python: the BASIC of a new generation.
i tend to say python developed for autists who would throw a fit at a perl oneliner on stackoverlords but i have issues ofc ... , yea, i don't know what's so great about it other than the fact that it forces you to do stuff in a certain way, which, to me, makes it absolutely awful , its like the program-police , and also heavy
and well , ofc. people should use what they're comfortable with but said people should also not try to shove it up or crawl up my arse , its they who are the triffids - if moore's la
Disappointed again (Score:1)
Might make sense to divide by type of application (Score:4, Interesting)
Different languages are good for doing different things. You don't want Python on an embedded micro-controller where resources are scarce, or in a high reliability application (space, life safety etc). Its horrible at low level hardware interface. OTOH, designing graphical applications from scratch in C is crazy.
(I know that there are people who will disagree with all of the above)
There is also a question of whether a language is being used for (often very valid) legacy reasons. If you have a large application suite in Fortran, it may make sense to keep using fortran to develop new components
Re: (Score:2)
Micropython pretty good for prototyping. You can save a lot of C-boiler plate by re-doing it in just Python.
For example to probe my ODB on my car this is as much code as is needed:
from pyb import CAN
can = CAN(1, CAN.LOOPBACK)
can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126)) # set a filter to receive messages with id=123, 124, 125 and 126
can.send('message!', 123) # send a message with id 123
can.recv(0) # receive message on FIFO 0
I wouldn't be doing ASIL-D hard RTOS timings with it, but
Re: (Score:2)
I think its possible to write reliable applications in Python, although I have to admit that I'm never actually seen one ;-)
More seriously I think a good software engineer can write reliable applications in python, the problem is that python makes it very easy for an unskilled person to write extremely buggy and insecure applications.
Just...why? (Score:4)
Why is it important to have a popularity contest with programming languages? Whose interests does this serve? Does this even make the slightest amount of sense?
There's such a thing as the right tool for a job, and while that decision *might* not be straightforward in all cases, and people in that line of work may have strong opinions, the different number of ways programming languages are used, and by the different demographics and levels of competence and acumen make a broad poll of popularity entirely worthless.
Also, and this is really important, you can learn new computer languages in a few months, but the industry and technology you are using them FOR is usually more involved. I would start with the line of work, then figure out the options within that line of work and gauge popularity and trends within that line of work next.
Re: (Score:3)
Why is it important to have a popularity contest with programming languages?
it isn't
Whose interests does this serve?
dumb ctos, click baiters and language evangelists, to whom it provides valuable moments of joy, dismay and excitement in varying proportion.
Does this even make the slightest amount of sense?
further than providing income/attention/entertainment to those above, no. not really :D ... \o/
it's called 'content' nowadays
I love Python. (Score:2, Interesting)
And I can't wait for the "Well when I tied an onion to my belt" stories from the gray beards that haven't done anything new in 30 years.
First off, No one is going to take your toys away. FORTRAN and COBOL still exist, so you can ride off into the sunset with whatever language you picked up when you were young.
Python's become our lingua franca at work for anything from data analytics to batch processing 'glue'.
Re: (Score:2, Insightful)
Pythons indentation-based syntax is brilliant. I'll even forgive the artificially limited expression syntax and the lack of a real case statement. ... but Python has no useful static typing, which disqualifies it from serious projects. Runtime exceptions are not OK. The big problem with Python that it's so easy to use it for a quick hack or a prototype that people are seduced into using it for serious projects anyway.
Re: (Score:2)
The big problem with Python that it's so easy to use it for a quick hack or a prototype that people are seduced into using it for serious projects anyway.
It's better than VBA, which is what you end up with if the only 'programming' environment you give some people is Excel.
but Python has no useful static typing
Why does mypy not work for you?
Re: I love Python. (Score:2)
"Why does mypy not work for you?"
Have you actually _used_ mypy? If so, I can't believe you're asking that question. Mypy is a pitiful, tacked on, half assed excuse for static typing.
Re:I love Python. (Score:4, Interesting)
Well, the guys who tied onions to their belt laugh at the kids with their toy projects exclaiming "language X is the greatest thing ever". One criticism of Java I saw was that "you need to read a book to understand it" - I laughed all afternoon. Your facial recognition example is classic - you called a library in three lines. I could do the same thing in Java or C with a few more lines of code. If I want to bang something out that works this afternoon, Python is a great choice. Now, go write that facial recognition library. Python is not going to be your first choice.
Re: (Score:1)
I could do the same thing in Java or C with a few more lines of code.
Ok, do it. If there was as easy a library to use then there should be a trivial example from that library you could just copy and paste.
Now, go write that facial recognition library. Python is not going to be your first choice.
Why would it be? A hammer makes a terrible screwdriver. Not everything has to be a 'low level' project.
If I want to bang something out that works this afternoon,
You're starting to get it. Now imagine a scenario where peoples jobs are to 'bang out' those things in the morning to get work done in the afternoon. Quick dirty data analysis scripts to clean up some logged data. Not every software project has to turn itself into Apache.
Re: I love Python. (Score:4, Insightful)
"gray beards that haven't done anything new in 30 years"
I first programmed in Python 20 years ago. It's hardly the new shiny. Trust me, when you get to a large application developed over time by many programmers - Python sucks ass. Dynamic typing is a curse.
Re: (Score:2)
It's a shame no one has developed any useful libraries in those 20 years.
Python sucks ass.
A large application developed by many programmers is only specific development methodology. Not everything is a huge project. Not every project needs a dozen people.
Re: (Score:3)
And are all your libraries that you're calling written in Python? If not you've not managed to make any coherent point about the language itself. I can call library code from assembler, C, Forth, C++, Rust, whatever. I can probably even do it from Smalltalk and have a proper functional OO language to work in when I get the results back instead of some hacked-together bastard scripting language that doesn't even have proper boolean objects. But then, it's also opted for a "any old shite in any old order" cla
Re: JAVA is trash (Score:2)
"Who the fuck wouldn't use Python?"
* People who like knowing the type signature of a function. Especially when that function is undocumented and written by someone else.
* People who use better languages like (but not limited to) Go and Kotlin.
Re: JAVA is trash (Score:2)
Amateur
Python = Plumbing work (Score:4, Insightful)
Re: (Score:1)
Python and Rust - perspective (Score:2)
I've been coding in either C or PHP for most of my life, though I know everything from Assembler to COBOL and have used it at times.
I recently picked up both Rust and Python and like them both - for different reasons. I like that Python has the PHP ability to run interpreted, which makes it just so much easier to come up with a quick script. The syntax is relatively easy after getting a bit used to tabs being meaningful, but that's not a big hurdle. And there seems to be a library for everything.
I like Rust