Friday, April 30, 2010

2 am on friday night

2 am friday night and I'm finally towards the end of section 1.2.

Section 1.1 seemed "not too bad" so I thought section one in a week would be pretty ok.

It hasn't been.

But it has been most interesting. Despite having been excellent at math in high school, including all the pure math, so much of it is long forgotten. From the depths of my mind gradually proof by induction crawls back out. Ancient methods from 7 years ago(ha! ancient my ass).

Scheme itself is ok, apart from the fact that nothing ever works because of the strict parsing.
(+a b)? Ooops.

If someone is going to learn scheme, it should probably be their first language. A lot of stuff makes plenty of sense, it's just that to someone that normally programs c, it has some nasty gotchas. Just gotta do exercise 1.28 and then onward to section 1.3! So exciting!

Wednesday, April 28, 2010

Non-programming things to do in the near future

Take an introductory course in microeconomics.
Take a course in creative writing.

But where? That is something to answer once I'm done with sicp

Tuesday, April 27, 2010

Ackermann's function funtime

So this weeks assignment, to get through section 1, seems like a chunky enough piece of work.

Especially when doing the exercises.

First contact with scheme has not been friendly. Lisp is an ugly language, and all those brackets are throwing me for more of a spin than pointers ever did.

But that aside, I got horribly side-tracked by the MIT definition of the ackermann function and the wikipedia one.
edit: they don't give the same results, and thank god for that because my expensions seemed to be all wrong.

MIT:


(define (A x y)
(cond ((= y 0) 0)
((= x 0) (* 2 y))
((= y 1) 2)
(else (A (- x 1)
(A x (- y 1))))))


The wikipedia method(converted to lisp for comparison)

(define (A m n)
(cond ((= m 0) (+ n 1))
((= n 0) (A (- m 1) 1))
(else (A (- m 1)
(A m (- n 1)))))
Should someone happen to be reading this that can offer some insight on this, please do let me know what's changed

Monday, April 26, 2010

Week 1: Back to basics

I mentioned in my first post the perils of java schools as a source of inspiration. So really, what better way to get started on this than the book mentioned in it, "Structure and Interpretation of Computer Programs"
So without further ado, it is there I shall start, week 1, Section 1, see how that goes and work out future pacing from there.

A beginning.

I'm happy with my abilities as a programmer. I'm not arrogant to think of myself as one of the best programmers to grace this earth, but I think all things told, that I'm pretty good. I've been doing it as a hobby since I was young, and now I do it at work.
But that can't be enough. Why settle at that when there is far more to do? There's certainly no harm in trying to be as good as possible

So while this quest doesn't exactly begin here, here I shall begin my chronicle thereof. I'll be keeping track of my personal objectives, and posting musings.

This blog is primarily something I'm starting for myself, but should someone else be doing something similar, I'd love to hear their experiences and exchange stories. Perhaps the objectives I set for myself may give others ideas. Perhaps others have good ideas for objectives. Perhaps 5 years from now it will have grown into something entirely different.

A couple of rules that I intend to play by:
1) No work stuff. It's (mostly) proprietary... unfortunately.
2) No personal stuff. This is about programming.
3) No holy wars. Because really, most sides have some valid points.

Finally, the inspiration to start this blog came from http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html . I've learnt C, understand pointers and recursion. But there is so much I haven't learned. There are hundreds of good volumes out there, and there is a lot I hope to learn while writing this blog.