hectic wrote:What am I using for resources? Well, obviously the internet is one of the resources I am using - only a fool would disregard it as a learning tool. But, I am principally working my way through two books:- Learn C Now and Learn C Through Exercises. I find them really quite accessible. In terms of my IDE I am using CodeBlocks, which I find to be perfect for my needs, though I find the debugging tool to be very vague. Throwing up an error when compiling and giving a nonsensical statement telling me what is wrong isn't particularly helpful.
I haven't used that IDE. A debugger would be used to find bugs in code that compiles and executes but does not function as you intended (which implies an error in the design of the program as opposed to a syntax error -- incorrectly written code -- that the compiler would choke on and catch). The debugger should allow you to step through the code, displaying the corresponding line in your source code currently being executed, one line at a time. Have you tried using the debugger in this way?
I think for absolute beginners, some sort of visual execution of the code, stepping through line and by line and indicating which variables are being modified (and how) in each step would be a potentially useful tool. When people first encounter concepts like the stack (ie. how can a function be executed multiple times, even calling itself, and never get the local variables mixed up), I think they sometimes don't 'get it' because it's inherently a low-level concept. These things can be visualized.
I'm asking all this (and I may fork this into a separate thread) because there's been a lot of interest in online learning. It's an area ripe for innovation. There are some sites out there now like codeacademy.com which teach people how to program in web-based languages one step at a time. There's also a really cool site called
PlayMyCode. Pretty nifty and they've generated a lot of buzz. I had a very similar idea last summer before I became aware of these existing sites. I still think there's space to compete.
I'm a total newb when it comes to web stuff (and quite frankly, I absolutely hate it and think it's incredibly stupid that people are getting excited about web applications that ran faster as native apps on 20 year old computers -- but that's how it's going to be so I need to make my peace with it).
My friend and I are working on something using Ruby. I'm not a fan of it personally but people seem to dig it. I'm much more comfortable with C and C++ and would rather create an environment focusing on those but I think demand is very low because a) it's not easy to develop a full application in these languages quickly and b) they aren't generally used for web-based projects.
The one problem I have with learning C - and it's not really related to the language per se, is that in learning solus, it is difficult to find somewhere to bounce ideas or problems around in a non-threatening environment. I live with my partner and while she is supportive of my hobbies, she can't really help with some of the queries I have. I suppose therefore, I lack an environment simply to ask questions. I post here and try and help users regarding specs and stuff, but bothering some of you emulation big boys with - what you would consider to be fairly trivial - questions, I feel a bit, I dunno, cheeky/daft/like an annoyance! Perhaps setting up a separate forum folder for general programming assistance may be worth considering if you weren't averse to proletariat scum like me asking daft questions?!
Proletariat scum? Oh, come on. I don't mind answering programming questions here. If we had a lot of traffic on the topic, I would create a special forum for it but for now, The Dark Room is the appropriate place.
The reason I attach myself to the emulation scene in learning C, as opposed to a programming-centric site, is that emulation is something I understand the concept of, and I can use real-life problems, rather than the strict environment of textbook examples. If I can apply principles (such as the sound chip question I posed earlier) to my learning, I find it easier to understand textbook examples in my books.
Of course. Everyone has some end goal in mind and yours happens to be related to emulation. Unfortunately for me and my online learning idea, this is too esoteric of a domain to focus on. I think a lot of people are curious about game development, so that's a potential topic to focus on. Older folks hoping to pick up some new skills are (I imagine) interested in building web sites, perhaps to start their own business or to earn money picking up contract programming work. Addressing the latter topic is something I'd like to do but it's diffcult to build that out piecemeal. A complete -- and complex -- solution would be required almost from the get-go.
Learning how to make games might be a more fun way to learn how to code, and might draw a lot of interest. PlayMyCode is exactly what I had once envisioned -- write games and then share them as an embeddable applet. I can think of some small ways to readily improve on PlayMyCode. I would probably use Ruby directly rather than a custom, derivative language. A Version 2.0 could introduce C/C++, which is more germaine to people who really want to write games and learn how computers actually work.