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.
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;
(In SQLite, you easily can evaluate a particular polynomial, or, with a bit more hassle, any polynomial up to some finite degree, but evaluating an arbitrary polynomial would seem to be out of reach without using recursive CTEs.)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!