How Do You Teach Yourself Programming?

Whatever is on your mind, whether Lisp related or not.
Jasper
Posts: 209
Joined: Fri Oct 10, 2008 8:22 am
Location: Eindhoven, The Netherlands
Contact:

Re: How Do You Teach Yourself Programming?

Post by Jasper » Wed Jul 08, 2009 5:11 pm

About cl-opengl: glut has some limitations regarding keyboard/mouse input. (And maybe some other stuff too) It might be better to use lispbuilder-sdl. I don't know what cl-opengl has, but lb-sdl has handy macros such as with-init, with-events, with-primitive.

You also might want to learn C or assembler to learn how the machine and pointers work a little. Make your own little singly linked list or something with it.

ebie
Posts: 14
Joined: Thu Jun 11, 2009 11:11 pm

Re: How Do You Teach Yourself Programming?

Post by ebie » Thu Oct 08, 2009 10:53 am

I really appreciate all the helpful suggestions. I hit a wall and had to put my head down and push through it, so I've been slow to respond to your posts. Up to that point I found lisp fairly simple and easy to learn. All of a sudden, I got overwhelmed by....I'm not sure....I just couldn't wrap my mind around some of the implications.

I finished Touretzky's text and, following Speech Impediment's advice, started on PAIP. I'm finding it a perfect a followup. It's filling in the gaps and answering a lot of the lingering questions I've been having.

I downloaded some of the simple libraries that were suggested in your posts. A lot of the code is slightly beyond me, but I'm slowly able to figure it out. It's helpful to see 'real' programs as opposed to those with just a purely instructional aim.

On a slightly different topic, something surprising happened to me recently. I was looking at a simple algorithm implemented in C, and I actually understood it! I've never seen any C code before. I sat down and, using it as a reference, was able to write it in lisp. It actually worked! I'm chalking it up to beginners luck.

Duke
Posts: 38
Joined: Sat Oct 17, 2009 10:40 pm
Contact:

Re: How Do You Teach Yourself Programming?

Post by Duke » Sun Oct 18, 2009 4:05 am

I don't remember how I taught myself programming... probably a good thing, since I almost certainly did it completely ass-backwards. Here are the blundier blunders I wish I could undo:

1) Learn the science ASAP. It's not hard to get a list of the important algos and data structures, and look them up on Wikipedia. Implementing them in the language of your choice is good practice.

"Practice makes permanent, but perfect practice makes perfect." The sooner you grok the science, the less time you'll spend writing bad code. Ideally.

2) Get involved in FOSS. Writing documentation is a good place to start because it requires you to read someone else's code, and understand what it does. On top of that, it gives you a chance to network and learn from more experienced developers.

If you're going to be involved in FOSS, then learning some sourcecode management systems is essential. The learning curve tends to be steep at first, but even if you only want to work on personal projects, you'll be glad to have access to the project at earlier points in its development. Learning the GNU tools— grep, sed, awk, diff, etc— are great for productivity and go hand in hand with SCM.


For Lisp in particular, I'm enjoying Paul Graham's On Lisp. I'd already read halfway through Peter Seibel's Practical Common Lisp, and they're both good books, but On Lisp was the one that got me excited about this language, and rekindled my mania for programming. In fact, this:
eble wrote:All of a sudden, I got overwhelmed by....I'm not sure....I just couldn't wrap my mind around some of the implications.
...happened for me around chapter 6. ;)
"If you want to improve, be content to be thought foolish and stupid." -Epictetus

Jesdisciple
Posts: 26
Joined: Thu Feb 04, 2010 5:56 pm

Re: How Do You Teach Yourself Programming?

Post by Jesdisciple » Fri Feb 12, 2010 8:16 pm

I never really analyzed the process before, but first I should explain why I'm not sure how much programming I've taught myself. I took a Webmastering class in high school which introduced me to HTML, CSS, and maybe a little inline JavaScript. It wasn't a great class; everything was laid out with tables and W3Schools was the supplemental reference. Around the beginning of it one of the other students showed me *real* JavaScript and I started writing it, and enjoying it a lot more than CSS or HTML. I'm not sure when I started asking questions on the W3Schools forum (which is a lot better than the site itself), but I think I immediately found some questions I could answer. That forum is where I ironed out just about all my JavaScript misconceptions.

The next year I took Computer Science, which used Java. I was still a novice programmer at this time, as this paragraph started somewhere in the middle of the last one. By the end of the year I had placed 5th in the state CS competition, but unfortunately it was my senior year. I didn't know it at the time, but I thus started out with two traditions in my head, along with two methods of learning. And I think I'm glad it worked out that way, because I was introduced to very different concepts but basically the same syntax. The two methods of learning have since maintained their priorities, because I'm generally able to learn something online much sooner and more easily than I can register for a class.

Over that summer I read a C++ tutorial and then received online certificates from the local community college for learning PHP/MySQL and C++. At first I didn't see much use for PHP; I thought I could do it all with JavaScript. Boy was I wrong. After a while of answering questions on forums for JavaScript, PHP, and HTML, and then asking questions on a C forum, I enrolled in a physical C# game-programming class at the community college. I did learn C# then, but we were going to program Xbox 360s which didn't work out because the book used an old DirectX version. I think the next semester and summer are when I learned Python from the official tutorial. One more semester later I'm now taking Python game-programming, C# XNA game-programming (better this time), and AI programming for games. I'm really not particularly interested in games, but those are the classes they offered and I don't care very much what I program. (And I know these classes probably won't transfer to a university, but oh well.)

So all in all, standard education has a claim to teaching me at least part of every language I know. And yet, in about every language except Java and C# (which are about the same thing - C# never really felt like a new language), most of my education has come by independent means. But to answer the question, it's really about the projects you're interested in building - as stated above. I obviously use forums heavily to complement and direct that motivation toward best practices, but I''ve spent much more time reading language references (and specifications) than asking questions on forums. Although many of my ideas for what to program have started as questions asked by others.
I'm off my grokker.
- Chris

Post Reply