EDIT: To anyone coming here from a search engine, etc, I've now summarized everything I learned in this and a few related threads in the article "35-second Arduino language reference for expert programmers".
The below is just preserved for historical reasons.
--
[original title was "Nomenclature: is Arduino a language?". Original post:]
I am reviewing edits I might make to an article I wrote, based on feedback I received in our thread here. Someone suggested:
"There is no Arduino language! This is part of why some people hate Arduino, because they never took the time to actually understand what Arduino is and is not. If there really was an Arduino language that would be a good reason to hate it but instead we're using real, professional, programming languages. Sure, the IDE takes care of a bit of the less beginner friendly stuff but you can override any of that if you want."
I've reviewed (meaning read through) the linked post, "Embed with Elliot: there is no Arduino 'language'."
To give you my qualifications for talking about programming languages: in purely chronological terms, i.e. if you measure the time that I first wrote a single line of any programming language, I've been programming since I was a young teenager. This extends from basic scripting languages to compiled languages to things running on a browser.
The author of the "Embed with Elliot" piece writes:
There is no “Arduino language” and your “.ino” files are three lines away from being standard C++
In my opinion, something can be called a language even if even three lines are not involved. For example, on Windows you can rename a .docx word file to .zip, and open it with an archive program. You can see images in there and other assets. Does this mean that there is no such thing as a Word document, since inside it is actually a zip file? Surely not.
Three lines is quite a transition. It means that someone who has spent a whole year writing Arduino code cannot write a C++ program without looking up the C++ language. Since they have been writing in Arduino. How should they figure out "#include" lines? By definition then it's not the same language: only almost the same language. The Arduino language is very close to C/C++. I don't see the mistake in calling it a language. Further .ino files are not the same as .c[pp] files.
So, I would say that it is fair to say "the Arduino language is almost exactly the same as/very close to C/C++".
Therefore, I would like to reject the edit suggestion to remove the phrasing that Arduino "is a language". In my article I want to continue to use this phrasing. Would I be technically correct? (In light of my arguments above.) Bear in mind that Arduino has a language reference page. After reading it, you can begin to write in the Arduino language, without having to look up references that don't refer to that.
If in light of what I've written above, you judge that I am still confused, I would like your additional information. I do find the Elliot post to be interesting, and I would say it means that those who happen to know C or C++ can easily add it to Arduino projects, since the Arduino IDE can use them easily. Is this a fair way to rephrase the Elliot post?
Thanks for your information about these exact differences and your advice regarding my edit choice.