Does Linguistic Aptitude = Programming Potential?
Icephreak asks: "
I've been studying a foreign language for quite some time now and have been recently researching the more effective ways to approach learning the nuances of it in both spoken and written form. Not so surprisingly the same advice comes up again and again. More still, I remember being given the same dead ringer advice by a few programmer
friends about learning programming languages. I find this lends a good hand to the observation presented in the famous Thomas Scoville article, "The Elements Of Style: UNIX As Literature," about a surprising number of linguistically capable people gravitating to text-based operating environments and programming careers.
What are your thoughts about a possible parallel between human and computer-based linguistics? Does a good command of one's spoken language loan leverage to becoming an effective programmer or computer operator in general?
"
No programming language is a human language. They are absolutely not the same. A human language has to be the sole language used by a people. There are some linguist who doubt that humans could even create a human language. Esperanto which is the best example of an artifical human language is not the first language of any human. It can be learned as a second language only. Some doubt its even possible to learn it as a first language. The brain may not be wired to learn an unnatural language. Some argue that languages can only be evolved because the human brain is designed for language not the other way around. There are linguist working on a sort of grand unified theroy of language which could someday solve this problem but that's not its goal and this is only my conjecture. See Noam Chomsky and Transformational Grammar. (He is also a prominent political dissident.) Think of it this way, you can't teach your child to speak C as his/her first language. There is no "pick me up" keyword or syntax to express an incomplete thought which is much of natural conversation. Here's an experiment: Tape record a conversation, play it back and carefully transcribe every utterance. You will quickly see that natural conversations are a mess of false starts, re-phrasings, meta conversation i.e. "Do you know what I mean?" or "uh...ummm..." and other garbage that make up perfectly good normal conversation. Human language also requires infinite discrete processing (IDP). IDP is the abilty of a speaker of any human language to create sentences that are infinitly long collections of discrete clauses.
Ex. "I threw the ball over the fence by the tree by the lake by the house by the car by the other tree by the other car by the driveway..." Ad infinitum.
This sentence is poor style and perhaps a little confusing but any english speaker can understand it. Human languages could require a structure that allows this kind of infinite structure. For one every human language can create these types of sentences and they can each be understood by the speakers of the language.
You could try to teach your child C as his/her only language but before the government took away your parental rights for abusing your child you would realize what a failure the experiment was. And your child would hate you.
Doesn't everyone on slashdot know programers that can hardly hold a conversation but can write good code? (May not comment so well, but oh well.)
No, should be
PUSH Linguistic_Aptitude
PUSH Programming_Potential
EQUAL
It is important to note, however, that an understanding of grammar alone doesn't translate to a complete understanding of a language, human or computer, and here, I think, is where the notion of linguistic skill as a predictor of programming skill begins to look less certain. At least in my own experience, developing elegant written prose requires a fundamentally different mode of thinking from developing elegant code. Understanding grammatical rules does not translate to an understanding of the nuances and subtleties of how to express oneself well in the semantics of a language. Unfortunately, the nature of such skill remains, by far, an intangible.
---- I'm going to lead you kicking and screaming, giggling and laughing into the future.
I personally think there is a definite correllation between human and programming languages. I first learned to program 5 years ago at age 11, all self-taught. Sure it was only VB but i think that's pretty good for having no prior computer experience at all. A couple years after that (and after learning some more languages, C++, Perl) I took German in Freshman year HS. It came so easily. I easily whizzed through the class w/o much effort really, it all just came naturally. This is while everyone else in the class was lucky to pull off a B, very hard teacher. The same thing keeps happenning every year in every level.
Not sure if this has much validity to it as in factual information. Just my personal experience. (btw: 2 of my friends who are really good at german also picked up some programming languages easily, coincidence? i think not)
Two wrongs don't make a right, three lefts do!
Programming is also more than memorization. It's all about logic, and thinking about problems in terms outside a specific language. The only difference between a human language and a programming language is that with programming, you are speaking to a compiler/interpreter, rather than to a person. You can memorize the syntax of C, Perl, Java, but you will never know how to program if you approach problems in terms of the language rather than the fundamental patterns or rules to solve problems. The best programmers understand how to use algorithms to solve problems. They can hop from one language to another with ease. In the same way, people who understand the basic structure of all human languages can move easily from language to language easier than those who do nothing but memorization.
I notice that no matter what language or os you play with, the basic math, algebra and other advanced maths come into play.
I really think a strongpoint in maths helps people understand more about programming languages.
Consider yourself blessed if you are sneezed on by a dragon and only get wet, it could have been a fireball.
They must be using some BASIC variant.
Of course this is anecdotal evidence, but my mother, who has an English degree could definately be considered linguistically adept, could never program. Not a computer, and most likely not even a VCR.
The logic of saying that linguistically gifted persons could be good programmers because many programmers are above average linguists is flawed. It is similar to saying that since most apples are red, something red is probably an apple.
Fundamentals of programming are problem solving, organizational ability, semantics, and attention to detail. I have to take issue with those saying that "higher math" has anything to do with the majority of programmers' daily lives... Last time I checked, "decrease inventory by 1 and bill the customer" was NOT higher math. But I guess that really depends on what work you're doing...
In any case, I'd say those in fields other than linguistics would be far better suited to programming... Any engineering field, most likely... Problem solving is the common need amongst those fields. It's not a major stretch.
I like pizza.
Some computer languages explicitly make use of the relationship with human languages. For example, opening a window in Smalltalk might be written: "someWindow open." - subject, verb, period.
I think the claim that programming aptitude indicates or leads to linguistic aptitude is belied by the appalling grammar, syntax, and spelling that plagues slashdot and much of the technical material on the web.
That said, it does seem plausible (as others in this discussion have pointed out) that linguistic competence and programming competence draw on the same--or at least closely-related--analytical capabilities.
You'll find increasing numbers of erstwhile humanities majors in technical professions these days, and I think that the convergence of linguistic and technical interests and skills is a truly beneficial development.
If you're doing something like business programming, I think the order of aptitudes that predict your skill well are linguistic (structure and symbolism), accounting (detail oriention and business knowledge), and lastly mathematical (abstract reasoning).
The best programmers of any type, however, will be those that exhibit the highest level of aptitude in both higher math and linguistics. I think that the aptitude for any "mind skill" is going to be highest among those with the greatest skill in both disciplines.
In my opinion, skill in both disciplines suggests a brain that reasons well as a whole.
on one hand.. "computer languges" are really human languages and the compiler translates them into real machine language right? so in essence learning basic or c is really learning another human language...
but just because you are good at learning the grammar and vocabulary doesn't mena you can make use of it... because computer languages make use of alot of math and logic skills that are not present in regular languages... i'm guessing this is because the computer/compilers need very exact rules to follow.. for example if i forget to put the period at the end of this sentence, you will still understand me if i forget to put a ; at the end of a c statement the compiler will bomb...
so in essence linguistic aptidude might help in learnign programing, but is hardly the only factor
I believe sex is highly over rated... unless it involves me
I pre-apologize for the use of stereotypes here, but here goes...
I would have to say that having the skills of a good programmer does enable one to have certain skills in traditional languages. I would not say that it works the other way around, though. Being a connoisseur (sp?) of programming languages entails being a master of syntax and semantics. That is, programmers must be intimate with the rules of how to form statements of the language together into programs and with the meanings of each thing that can be expressed in the language. When dealing with traditional languages, the same rules exist, though they are usually a bit more vague and irregular (read: inelegant). So programmers typically are masters of the mechanics of traditional languages. Of course, there is much more to being a linguistically talented than just knowing the mechanical aspects.
Use me for an example. I am a skilled programmer. I took four EASY years of Spanish in high school. My English grades were most likely a school record. However, I have trouble writing things; it takes a really long time and I'm never satisfied with what comes out. I also did very poorly on those "reading comprehension" types of questions where you read something and answer questions about the artistry or hidden meaning of the work. I hate pretty much all classic literature; I read nothing except for a few sci-fi books and programming books.
Anyway, my point is that the artistic side of the study of traditional languages will probably get you nowhere in the programming language world. It's the mastery of the syntax and semantics of language that makes you have the right thought processes for programming.
Of course, all of this is my humble opinion!
--
SecretAsianMan (54.5% Slashdot pure)
Washington, DC: It's like Hollywood for ugly people.
The correlation is indeed present, but should be understood this way: Programming potential and linguistic aptitude both come from (a more fundamental) aptitude at reasoning. Why? Because using a language (natural or computer) is a problem-solving task in itself. You need to organize and structure your thoughts in order to communicate them efficiently. If someone's good at reasoning, it means they will likely be good at programming, and they will generally express themselves better than average. Of course, there are exceptions, caused by many factors, such as personal interests, motivation, etc.
...Does Linguistic Aptitude == Programming Potential?
Bleh!
Whilst someone may write in perfect syntax, that does not mean they have used the correct algorithms, or that the program has good construction. Form vs. substance.
For an extreme example, look to politicians, who say nothing perfectly.