Kentucky Senate President Pro Tem David Givens has filed a bill that would allow students to get foreign language credit for studying a computer programming language.
This is an incredibly bad idea.
I learned a foreign language before I learned English and then went on to study three more foreign languages in high school, college and graduate school so I know the differences between learning a language as a native speaker and learning it in a school setting.
Furthermore, as a computer scientist for over 30 years, I have studied, used and taught a wide variety of programming languages. Though both kinds are "languages," they are very different. Our children need to study both.
Now, it is true that programming languages have a syntax which is often described by a grammar and the various constructs in the language have a well-defined semantics or meaning. Indeed, it was the use of context-free grammars to specify a programming language that made it possible to write the compilers which translate programmer commands into the zeros and ones of computer language.
But the similarity ends there.
Foreign languages are meant to communicate with people and they include a host of nuances like idioms and cultural conventions. A good introductory course will introduce students to the culture of the native speakers and more advanced study will also allow students to sample the literature of their finest writers.
When you study the grammar of a foreign language, you often come away with a clearer understanding of English grammar as well. My years of tutoring Latin confirmed that students who struggled with the tenses and cases of a foreign language were usually weak in those areas of English, as well.
Computer languages, on the other hand, are meant to communicate with machines — very dumb machines. The words recognized by the language, except for variable names, are very limited to favor easy translation. The grammar rules are strictly enforced as anyone who has tried to program will readily attest.
However, programming languages are perfectly designed to express the steps that must be executed in order to solve a wide array of problems.
Those who study a programming language do so not to learn about a culture or to communicate with others, but to harness the speed and accuracy of a machine which will relentlessly carry out the instructions it is given in precisely the ways they are stated.
The language is merely a tool for specifying the algorithm — the set of very clear and logical steps that must be carried out in order to solve a problem efficiently and correctly. This algorithmic thinking is a highly creative and desirable skill in a world that must deal with increasingly complex problems. Programming languages give us a vehicle for expressing the algorithms and for communicating their steps to a machine. A good programming course should focus on problem solving not the language or the machine.
In this 21st century, students should be able to use both kinds of languages, and one is not a substitute for the other.