According to various sources, there are several hundred programming languages, although only a couple dozen are widely used at any given time. The Online Historical Encyclopedia of Programming Languages claims nearly nine thousand have been created. See
programming language.
There Are Actually Millions!
Absurd you say. Not really. What many people do not realize is that every time programmers code programs, they make up their own language. Every subroutine in a program, also called a "function," is given a made-up name by the programmer (if a equals b, go to "xyz" routine). The "xyz" is made up. In large programs, there are dozens, even hundreds, of routines, and each one must be given a unique name.
For example, depending on the spoken language literacy and nerdiness of the programmer, a subroutine that is created to parse names from a list could be called "parseNames" or "prsNms" or "pNm" or any combination of digits and letters. Programmers who find typing tedious abbreviate all the time.
However, the clarity of these made-up names helps people in the future make changes after the original programmer is long gone. Although well-designed program logic, which is the order of processing actions that take place, is the most essential aspect of a well-written program, the careless naming of routines makes it harder to follow and one of the reasons it can take so long to update old information systems. This is the reason for the claim of "millions of programming languages." Perhaps, not as farfetched as it may first sound?
Don't Flowcharters Help?
When the source code is not available, there are flowcharting programs that take machine code and create a flowchart. They are extremely helpful in identifying a program's logic. However, because the charting program has no idea of the purpose of each routine, the routines are generally given sequential names such as 0001 and 0002 or perhaps A001, A002, etc. The logic flow is identified by the charting program, but the subroutine naming is only slightly less obtuse as programmers who pay little attention to the names they create in the first place. See
programming language.