Most of us think of Java or C++ or Basic when we think of programming languages, but a language is any sequence of symbols -- assume for this discussion, the keyboard characters you can type -- that communicates a message -- again, for this discussion, the message is from a human to tell the computer what to do. Java and all other compiled or interpreted languages obviously qualify, but I'm going to tell you about some very different languages.
The original programming language was Machine Language, the 1s and 0s that the computer understands without translation. It's very hard to program without making excessive mistakes, and very hard to find and fix those errors. That's why "high-level programming languages" like Fortran (and Basic and C as derivatives of Fortran) were invented. The higher the level, the farther from the native machine language the text that humans write is, and the more it resembles the way you actually think about your problem. Fortran (short for "Formula Translator") was designed for scientists solving mathematical problems.
The first very high level (VHL) programming language was probably VisiCalc (Bricklin's original spreadsheet), which described the things the computer should do in terms accountants would understand. And they did! It revolutionized the accounting business. It did not eliminate programmers, it only made it possible for them to think about and write programs much larger and more complex than was possible in Basic or some other traditional language. When it first came out, Fortran was supposed to eliminate programmers, but instead it created the market for a vast number of new programmers able to do far more than previously possible.
The ubiquitous and not-quite "portable" PDF files are actually text files embodying a computer program in the language "Postscript" which is optimized for specifying how to arrange ink on paper.
I first encountered the concept of a VHL language in my first job out of college. I was part of a pool of programmers working in a government research lab, and one of the other programmers -- I remember his name: Drexel Heater -- pointed out that the library of Fortran subroutines I was building constituted a programming language, the sentences of which were subroutine calls. The concept was enlightening.
With this insight, it is now easy to see that neural nets (NNs) are programmed by computer programmers just like any other computer program, only that the programming language they use is not C or Python, but rather the collection of training data that they have assembled to feed the NN. Give it the wrong data and the NN will learn sexist or racist lies instead of the Politically Correct bias they were looking for. Your choice of the training data programs the computer. It is voluminous, ambiguous, noisy, and unreliable, but that's what the AI people are betting their farm on.
Closer to home, I am recommending that the images our AVP image team
must process should be recognized by finite state machines (FSMs), because
the processing time per pixel is very fast (on the order of ten nanoseconds
per pixel, only four lines of Java code). All the programming effort is
not in the Java code, but in the FSM, which we can think of directly in
terms of which sequence of colored pixels constitute a valid column of
pixels in a recognizable track boundary wall. The sample I wrote had four
numbers per line: the state the FSM is in when it does this transition,
the color it sees to make that transition, the next state it goes to, and
optionally one of a small number of actions, such as recognizing that this
is a tube wall or a room wall or a landmark. It is a much more natural
language to think in when solving problems like this, which makes this
FSM approach a VHL language, and therefore the fastest way to solve these
problems. A more recent (and perhaps more accurate) term is "domain-specific
language" (DSL).
Tom Pittman
Rev. 2019 August 31