The almighty definitive work on design and analysis of algorithms, by Donald Knuth. One of the classic textbooks of computer science. I hope he can finish the first five volumes before he dies.

My philosophy has been that as there is no magic, there is no art either. In other words, all products of creativity can be called art.

Programming is, indeed, a noble art in which you have to exhibit a lot of creativity - Donald Knuth was right about that.

Obviously, the most current trend in programming could be called, in art terms, egoist-capitalist-functionalistic colossalism.

"This series of books is affectionately dedicated to the Type 650 computer once installed at Case Institute of Technology, in remembrance of many pleasant evenings."
-Dedication for The Art of Computer Programming, Vol. 1

Many things can be said about Donald Knuth, and even more about his books. None of these things could tell you as much about either as this dedication of a computer science book to a computer.

Learning to program on a computer is just like learning a language.

All the programming courses I have seen at colleges and universities etc. say that to take the course you must have X grade in Y level Maths. In other words, you must be sufficiently competent at maths to take the course because other wise there's obviously no way you could handle the programming language.

Note the key word here: Language

2a. A system of signs, symbols, gestures, or rules used in communicating.*

Now I'm only drawing from the courses I have actually done, but we didn't use much complex mathematics at all. Sure, there was a bunch of nested loops and things which took a wee bit of thinking, but when all you're asked to do is make a simple database or something you don't need high-level maths.

I've found that learning a programming language is a lot more like learning any other language.

Except it's easier. There's none of that irregular verb nonsense or strange pieces of dialect that only make sense in certain places.

To learn a programming language you have to learn the vocabulary, get your grammar (syntax) together and get creative. It's a lot more like French than Differentiation to me matey!

For example:
For loop:= 1 to 10 do
write('All work and no play makes gavmck a dull boy')
end; {loop}

Admittedly it's not the most complicated thing, but let's have a look at this bit of coding (Pascal). At a glance, you can probably tell what it does because it's in a simple third generation programming language based in English. So here we have another parallel with languages, passive use of a language is usually much better than active (You can understand more than you can use). Once we understand the basic vocabulary here, we just need to learn the grammar. Where do the accents go? When should we indent? Which bit goes on which line? Put it all together and you can proudly say, you spoke to your Pascal compiler and it understood, producing:

All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy
All work and no play makes gavmck a dull boy

Another school of thought is that programming requires a strict grasp of the syntax rules, which cannot be learnt inherently, unlike spoken languages. I still have fairly bad grasp of English grammar techniques, even though it is my first language. What if children were brought up on code? What if instead of amo amas amat, we had for repeat until? (Iteration in Pascal) Many people begin with something forgiving and simple like HTML (I know it's not real programming) and work their way up to complex object orientated things like Objective C or Python. This gives you a chance to learn the language of computers with basic techniques, like small children and their first lessons.

The cat sat on the mat.

But what about the fact that you need a logical mind to be able to work out the structure of a set of code? Sure, you need a vaguely logical mind, but it must be creative. You cannot create without a mind that seeks to create. I see the structure of the code in my head like an abstract painting, almost exactly as I would imagine the finished product of a piece of art I am producing or a writeup on everything.

So if you are good at programming, why not try learning a new language like Japanese? It might be easier than advanced mathematical equations.

I'm rubbish at maths, but I love programming. On the other hand you could say that Maths is a language.


Log in or register to write something here or to contact authors.