Thursday, June 26, 2014

`Why is it so hard to learn programming?'

Today I finished this essay for my Coursera class in Python.  If you've got absolutely nothing better to do, or if you're really ``into'' language, or both, then go ahead and read it.

The problem I have had is realizing that some of the code -- representations of computer language -- I've seen so far has perplexed me with what are, to me, hidden and obscure meanings. Learning code became easier when I realized it contains those meanings.
By hidden meanings, I mean what's ``behind" functions such as try/except, type/int, max/min, etc. Just looking at them gives me no clue about their purpose. Purpose is therefore hidden. It's a lot like a encountering for the first time a human-language word of whose meaning I have absolutely has no idea. Just because I don't know the meaning, it still has a meaning and serves a purpose. To uncover the meaning of the word, and to use it effectively, I have to learn and memorize its definition or definitions.

But one difference of course between human language and computer language is the nature of their origins. The meaning of human-language words are most often determined and changed over centuries through the loose consent of many thousands of people. Computer languages are invented over minuscule spans by either an individual or a team. So learning Python has been hard for me because it is a de jure  language; while human language is formed by a vast and democratic consensual process, in which I can have a part, making it a de facto language.

So for example when I encountered the Python term ``except'' it didn't make intuitive sense to me. As a speaker of a de facto language (English) I understand ``except'' when it's used as a preposition. "I read all the books in the series except that one.'' In try/except it's meant as a verb (I think...), as in to identify an exception such as a string of letters when the is called for. (Get it?.) So now I have to memorize the use of ``except'' as a verb (which isn't hard) if I'm going to use Python effectively. Until I know what the term try/except does, it's purpose is hidden.

(The main reason I had a hard time comprehending  "except" in the Python sense is that I find the conversion of non-verbs into verb form distasteful. As examples: the use ``to partner,'' as in one person partnering with another, is awful. There is also our friend ``to access.'' I still prefer to ``gain access to'' things.)

Also, I think that it would be easier for me to learn programming if I were still young. It is well known that children have a much easier time learning language than adults.

No comments: