TIOBE Index - https://www.tiobe.com/tiobe-index/
6. Visual Basic .NET
9/10 C++ / TypeScript (varies between surveys)
11. Visual Basic / Typescript
12. Objective C / Ruby
Python always have massive stats, but around here 80% of the Python jobs aren’t for CS majors but rather for mathematicians and political scientists.
I wonder what these lists are even for. Some of the best paying programming jobs are for COBOL and it’s never in the top 10, if it’s even in the top 100.
† Institute of Electrical and Electronic Engineers
And if you look at Combine list, C and C++ seems to be doing extremely well, but scaling down to specially Web again, C and C++ isn't even Top 20.
Those then are more or less the same in all those sources!
Also, why are bash and Excel missing? They're clearly programming languages in precisely the way HTML is not, and they're clearly a lot more popular than some of the items on the list.
> Below the top 10, some items of note include Arduino at No. 11 and HTML/CSS at No. 12. In previous years, some readers have complained that neither should appear on a list of programming languages. In the case of Arduino, the argument is that there is no such language, that “Arduino” is actually the name of the family of hardware platforms on which the language runs, and that this language should be called Wiring (or sometimes C or C++ for historical reasons). In this, we are led by simple pragmatism: When faced with a programming question, the overwhelming majority of Arduino developers search Google using terms like “Arduino Code for…,” rather than any alternative. By choosing the de facto name, we avoid deeply discounting the popularity of programs written for the Arduino and similar microcontrollers.
>Pragmatism is also the name of the game when it comes to HTML, with the objection here that it is not a real programming language because it doesn’t have branching or loop constructs. But given the huge popularity of HTML and CSS among developers, and the fact that they are used to instruct billions of computers to do things daily, we feel any academic arguments about Turing completeness and so on are beside the point. A markup language is still a language.
Computerphile (popular computing channel on YouTube) made a video on whether HTML is a programming language or not. The professor in the video ((David Brailsford) argues yes (a restrictive declarative language). The commenters mostly disagree:
HTML IS a Programming Language (Imperative vs Declarative):
People don't care for semantics. If you write it and it causes a PC to do something (even if it's just to show a website), it's a programming language. Doesn't need to have branching, variables, etc... (not to mention that HTML includes JS and CSS) print "hello world", <b>hello world</b>, same difference.
Your proposed definition of programming languages includes, as I said, CSV, JPEG, Word, and URLs. Does that mean that anyone who snaps a photo on Instagram is a programmer? This does not seem to be in accordance with the usual meaning of the word "programmer". Is it "programming" to write a dunning letter in Word? It seems to me like a qualitatively different activity.
Programming languages are all more or less equivalent; although they have a variety of paradigms, and although they are supplied with a variety of I/O facilities, you can program more or less precisely the same set of computations in all of them.
Consider the differences between C, Forth, Smalltalk, Prolog, Fractran, Lisp, Brainfuck, Haskell, VHDL, amd64 machine code, and Malbolge: some of these do not even have branching or variables, but they are all programming languages; none of them can compute anything that any of the others cannot.
The exception might be things like Turner's "Total Functional Programming", which excludes nonterminating computations without, he hopes, excluding much of practical interest; Excel, excluding the macro language, also has this limitation, but in Excel it is more onerous.
By contrast, you can't compute so much as a polynomial or NAND in HTML. That is to say, you can't program at all in HTML. So HTML is not a programming language.
English does not include Latin, although, e.g.†, phrases like "inter alia" and "et cetera" can be used in English, and it's not uncommon for an English sentence to quote a Latin motto. Similarly, HTML does not include JS and CSS, just as it does not include the URL specification, and Python does not include SQL or HTML; they are six separate languages.
† exempli gratia
And yet people don't call them "programming languages", while they do call HTML that -- so that even if HTML is not a programming language, there's still a not formally expressed difference that people can intuitively grasp with those other things...
>By contrast, you can't compute so much as a polynomial or NAND in HTML. That is to say, you can't program at all in HTML. So HTML is not a programming language.
You can't program most things in SQL either (not without some modern extensions that make it turing complete), but it is still considered a programming language...
I understand your point that "tt's important to care for semantics in order to have a conversation that conveys information", but I'm of the (e.g. Wittgenstein-ian) school that what matters is not some original/holy definition, but the actual popular usage.
On somewhat of a tangent, it's fairly uncommon for people to call SQL a "programming language", but you actually can program quite a bit with SQL; even without the recursive common table expressions you allude to, you can do surprisingly complex computations with it, and even define functions in the form of views, as long as they are finite. Certainly neither NAND nor evaluating polynomials poses any difficulty for SQL. In fact, here's an example of arbitrary polynomial evaluation in SQL which works in MySQL, MariaDB, Postgres, Oracle, and SQL Server, in this case evaluating 5x⁴ + 2x + 5 at the points 0, 1, 2, and 3:
select x, sum(a * power(x, e))
from (select 3 as x union select 0 union select 1 union select 2) xt,
(select 4 as e, 5 as a union
select 0, 5 union
select 1, 2) t
group by x;
Returning to the subject at hand, I have occasionally heard people saying HTML is a programming language. But I think they're just mistaken. Presumably most people at some point thought the world was flat; we shouldn't attempt to explain away their error by saying that they meant something different by "world" or "flat" than we do. Some people think vaccines cause autism; this isn't actually because they're using the word "vaccine" or "autism" in a different sense than we are. They're just wrong. (As for the people who think organic food contains no chemicals, I'm not sure; I think some of them are just wrong, while others are in fact just using a nonstandard definition of "chemical", meaning something like "pure chemical" or "industrially produced chemical".)
In the same way, people are just wrong if they think HTML belongs to the set that includes C, Forth, Smalltalk, Prolog, Fractran, Lisp, Brainfuck, Haskell, VHDL, amd64 machine code, Malbolge, Scratch, Octave, Python, and R, rather than to the set that includes CSV, JPEG, Word, and URLs. Similarly, bash clearly belongs to the former set, and Excel (without macros) and SQL arguably do.
In a lot of cases, they seem to be reasoning based on shallow surface features like the use of plain ASCII text files. (You can see several examples of this even in the thread here, such as https://news.ycombinator.com/item?id=20906702.) This is similar to the neural network that learned to recognize photos of tanks based on whether the photos had been taken on a sunny day or a cloudy day, or the people who think I'm "hacking into systems" when they see me using a terminal emulator --- an understandable error from the ignorant and foolish, but not one we should allow to confuse our own thinking.
The things you mentioned are usually just data. They are the artifact. They are not generating anything distinct. There is only the data.
I suppose you don't think programs in Scratch, Flash, or Labview, or output from a compiler, are programs?
> HTML is a specialized language for describing the appearance and content of web pages, often extended using CSS
Hard to take the rest of the report seriously when they don't seem to know what they are talking about.
Also, the title of the report should probably replace "Top" with "Most Popular" as they seem to go by usage, not necessarily the "best" language (which I would have thought with the usage of "top")
Cuda and Lisp being listed as programming languages also further indicates the authors are missing something.
The description of HTML you quote seems fairly correct.
Lisp is definitely a programming language (though, like most, it has a variety of dialects with varying degrees of compatibility). CUDA is more debatable; to me it seems like a different programming language, but CUDA programmers tell me it's just C (or C++). But until 2010, it didn't even support recursion, which seems to me like a pretty basic feature of C. Maybe in 2019 the position that CUDA is a separate language is less reasonable than it was in 2009.
As far as I know, HTML is not extended by CSS but rather complemented by it. HTML for structure and CSS for styling.
Also as far as I know, Lisp is a family of languages, usually Common Lisp, Emacs Lisp, Clojure, Racket, Arc and others. Lisp (the language, not the family) died out and was replaced by others, so saying Lisp nowadays would refer to the family, not the language(s) (LISP 1 & 2)
† "Out of place" is a fairly precise synonym for "weird".
> Everything with including HTML in this report does indeed seem [out of place in a report that is trying to stay factual].
Note that writing a Word document is not programming, since people are not writing directly in the language, instead Word generates the code for them. What people see in Word is not a language since it doesn't have a textual representation, and people don¨t write word files directly in docx format.
> Note that writing a Word document is not programming, since people are not writing directly in the language, instead Word generates the code for them
By this argument, writing a program in C is not programming either. (This was the sales pitch for FORTRAN: you could fire all your programmers, because the FORTRAN compiler would generate the code for you.)
> What people see in Word is not a language since it doesn't have a textual representation
This is a particularly amusing error, quite aside from the fact that XML is a textual representation. I suppose programming in Scratch and Labview by this definition isn't "programming" --- while apparently writing HTML would be!
Plain ASCII text files have a variety of advantages and disadvantages; it's a standardized, very simple format with half a century of compatible history behind it (and more, if you consider plain text files in other encodings), without extreme limitations. So there are a lot of languages defined in terms of plain ASCII text files rather than OLE containers or whatever, including most popular programming languages, as well as XML, HTML, RFC-822 email, CSV, URLs, and so on. But, as should be obvious, the encoding of your program is entirely orthogonal to the expressivity of the programming language!
The ranking shown on the linked article shows a weighting that's deemed to be relevant to IEEE Spectrum readers, which have a focus on Electrical Engineering.
This has been a big problem for me in Dercuano; the notes in it about signal processing and circuits vary between impenetrable and handwavy (and, in the worst cases, both) in large part because I'm doing my prototypes in IPython with Numpy or in Falstad's circuit.js, and there's just no reasonable way to include that in Dercuano itself. So I'm trying to figure out how to make prototyping signal processing algorithms in JS a reasonable thing to do. I don't expect to have feature parity with Octave, but I feel like it should be possible to improve on the VT100-based user interface featured even by Octave and Rstudio, and offer equal or better performance and enough conveniently accessible features that it's practical for at least what I'm doing.
Virtuall all industrial control and systems engineering is written in matlab.
A big chunk of scientific and engineering code is written in matlab.
I do agree that people frequently overestimate the homogeneity of programming, and that this homogeneity makes such lists less useful. Still, I think it's a useful observation that in 1985 Paul Lansky was writing music in FORTRAN and electrical engineers were writing circuit simulators in FORTRAN, while today musicians tend to do their software development in PureData or something similar, while electrical engineers tend to use MATLAB, Octave, C++, or Python. And I think part of the nature of software development is that it's typically a highly collaborative activity --- a library written by an electrical engineer can be used by a musician, but usually only if they're using the same programming language.
Most engineering students use it, as well as some in math and physics. It is also popular in various aspects of industry (Ex: automotive and aerospace) for prototyping and simulations.
There top 10 is:
I got in touch with Python in the 90s but back then it did not convince me. Later in the 90s Perl was much more attraktive (because of Regexes and later because of CPAN).
In the early 2000s Python was a better alternative to Perl given all the basic data structures (Perl‘s nested lists were using pointers; how unintuitive for a high level language), Perl‘s module system wasn‘t intuitive amd beautiful either. Finally I could not write large systems in Perl because I of many reasons. So I tried Python, and it immediately replaced Perl for me.
Later Ruby seemed very attractive (for someone who was heavily influenced by Scheme and SICP). But Python seemed to have more momentum. So I played around with Ruby, but always stayed with Python for serious tasks.
Now, twenty years later I know there are many other programming languages who are more beautiful in my eyes (functional, for instance Elixir), but I absolutely love working with Python: its elegance, its ecosystem, community, resources. I can tackle all sorts of problems with it. And it seems it will be around in the next twenty years.
>>> x = [[3, 4], 5]
>>> y = [6, x]
>>> y = 7
[[3, 7], 5]
I like Python a lot (I edited the Weekly Python-URL for a while) but it took me longer to switch to it --- most of 2000 and 2001, really. I still occasionally reach for perl for quick command-line things.
Yes, there are even more efficient languages out there, that can do much more with less lines of code, but I feel that Python is just verbose and...well, pseudocode-ish that pretty much anyone with a certain level of coding can read it, and get working.
I've noticed that schools have started using Python more and more for entry-level programming classes, so I guess that means more time spent on problem solving, and less time fighting the language.
When I was student, the majority of CS classes I took were in plain C. I remember Data Structures and Algorithms being quite a hurdle, simply because much of the time went to tacking C.
If you select any single crosstab (under "create custom ranking"), you can see the data is mostly bogus.
Looking at "Google (trends)", PHP is at #48, below Perl (#37), Delphi (#40) and Fortran (#41) - here's the actual data: https://trends.google.com/trends/explore?q=perl,php
For "Github (active)" PHP places at #7 below Dart (#2) and Julia (#3) (which contradicts GitHub's own stats: https://octoverse.github.com/projects#languages).
For "Hacker News" it's at #51 (which makes little sense given the number of PHP-related articles posted here).
Also, Swift is still less popular than Objective C, but SwiftUI should soon change that.
For example, for web dev, the echo system of js make it the lang of choice. For cloud native/system prog , go lang. For ML - python.
Those ranks are meaningless.
For me, I use Python for dirty scripts, as well use C# for exploit development, it is very hard to conclude on a topic that is highly subjective.
That is the #1 language that all these others are built on, and it has remained #1 year in and year out for 80 years (it appeared on the list in the late 1600’s, rose to #1, and has sat there ever since).