Recursion Part 3

I just read this by Brian Harvey, the author of berkeley Logo. I must confess that this is an eye opener of the ideas I had in my mind about the hierachy of computer abstractions. It turns out recursion is not abstract enough. Functions are more abstract. The idea is not the think what the machine is doing step by step but the have a vision of what you want to archive at top level. Functional programming as first announced by Backus in 1978 goes further than the recursion abstractions and uses APL ideas of dealing with arrays of data(or list) directly. Functions like map(called map-car in list), reduce, and filter are powerful tools in this functional approach. My next exercises will be to use recursion and try to convert the solutions into functional approach as much as I can.

I think this is good exercise in general. Many times we ask novices to practice programming exercises but we don't emphasize these programming abstractions and approaches that can help beginners solve many problems at a glance. Brian is a really a great teacher and so far I consider him a mentor with his use of Logo not only to teach but to do research.

Many people have the misconception that Logo is only good for children and not a mature language. This is mistaken view in my opinion. Brians books here are a testament to that. He truly shows you how to use Logo to do more. Besides Logo is a dilect of lisp, so technically anything that can be done in lisp can be written in Logo.

This is an exciting journey for me, as a lecturer and researcher I am interested in approaches that can enhance my teaching skills and my research skills as well. In logo we find this synthesis. And the programming paradigms can easily be explored from Logo especially since Logo is a lisp dilect. Lisp is easily ammendable to deal with objects. There are even some who ridicule oop in preference of functional approach.

I am not going to join the wars of computer paradigms, but I will use whatever helps me to solve a problems efficiently. I don't really even mind using assembly language especially if I want to optimise something. The key is knowing how to use a tool and abstracting away from that tool using ideas like Backus functional programming or even jackson structured programming ideas. I like jackson methods. And I think there not disimillar from maccarthy's list processing.

Comments

Popular posts from this blog

Recursion Part 1

Back to programming competitons

Debugging Part 3