Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Solar wrote:
In "the good ole days", a beginner started with a "hello world", followed up by a "POKE 53280,0" (comp trivia: Now what does that do on a C64?). A simple basic program. A simple assembler program. Oh, jolly, assembler. Now what can we do with this?
I guessed some pixel coloring, but it's the background to black (had to check , VICE emulator)
When the guys that started coding this way got to the point where they wanted to write something OS-ish (i.e., on their next machine...), they knew what a register is, they knew what a page pointer was and they could juggle bits and bytes without making stupid mistakes.
Today, people start with Visual Basic, then they get their first C compiler, look at the Windows API, chicken out and go for something "simple" like an OS for their first "real" programming project.
And we here then have to explain what a "static" declaration means, why a float variable doesn't make a good loop counter, what a "callback hook" is and why global variables are a bad idea for reentrant code...
I used to know the POKE(xxx,xxx) in former years, but now I rarely knew that it puts zero at that address. *gg* My only C64 I own is slightly broken. well.
regarding "os programming as a way to learn programming". Boah. that's a hard approach. I wouldn't do it this way. It's bad. You are smitten in shame ere you even reach basic printing "hello, Its me" in your average helloworld-pmode kernel without decent capabilities in Thinking in Algorithms, Solving a given set of problems, Having decent linked list algorithms at hands without thinking (dynamic data structures are a must!) and sorta. You gonna smite things in agony when attempting to write a kernel without programming knowledge. Think: I f. ex. do programming for about 15 years now - from beginner stages in c64 asm and basic to c, c++, java, php and sorta NOW. It took a special education to gain at least decent basic knowledge in ordered development of programs (I admit I knew very little about structured programming before thou I have got the Idea of functions already. I've produced spagetti basic code 'til then)
Hands away from learning programming by doing the os thing.
Stand small, keep the head low and learn BASICS before venturing for OS dev. As Solar says.
OH, and know what (solar, I hope this doesn't twist your pants tooo painfully *sfg*winkwink*):
BASIC, as simple and straight forward it is, it is sufficient to train algorithmic thinking - even dynamic data structures can be trained, if using a language like visual basic - and solving of a given set of problems.
Pls, lads, don't come with biases. I've self-learned programming hands-on-c64 with a clever book by my side.
beyond infinity wrote:
BASIC, as simple and straight forward it is, it is sufficient to train algorithmic thinking - even dynamic data structures can be trained, if using a language like visual basic - and solving of a given set of problems.
Pls, lads, don't come with biases. I've self-learned programming hands-on-c64 with a clever book by my side.
May I add to this?
I learned basic programming on a C64 too, without a decent book but with a number of non-copyprotected games. I did have some basic books, but they were aimed at people that had at least finished primary school, so kind of unfit for me. I then continued with GWbasic, QBasic and VBasic (4/5) until I thought I'd learn c++ (which is kind of a big step and I accidentally learned C in the process of getting there). Right now I haven't used basic in years, but I will still advise anybody learning programming to first try to get decent stuff running in basic before heading to "more powerful" languages, even if you can do more in them. If you can't use a simple language to its limits, how can you hope to use a complex language to any good and efficient use?
And yes, I did make a program that hit QBasics limits. It ran in 1280*1024 32-bit color with a translucent mousecursor and nice routines. However, since I only did small bits asm, it was dog slow and too big for QBasic to load (after the last addition). It's probably been lost forever, but I did submit it online as WOW3.BAS. You might be lucky.
Solar wrote:
Again, no offense intended. But all I have for people who attempt to learn C while writing their kernel (or better yet, learning C++ while writing their bootloader), is a hearty get real.
oh, i did not say that an OS is a good way to begin learnin a programming language.
personaly, I began developping my OS after doing advanced network and system programming in C.
what i mean is that an OS is a good idea to learn advanced programming, coz while developping a kernel, u have to understand how each piece of ur computer works, moreover u have to read lot of documentation and standards specification, which is not allways done where u r coding a "Hello World"
i totally agree with u that developping an OS to learn a certain language is a bad idea
Solar wrote:
An OS is about the most complex software you can write at all.
Ehhh... I'm not so sure about that. Implementation-wise, maybe. In terms of concurrency, maybe. I think things like natural language processing, speech recognition, and query optimizers are pretty complex beasts though. OS development requires a very good grasp of the details (and there are a lot of them), but it seems to me that you don't need to have a particularly advanced understanding of algorithms or high-level design techniques. You still need these things, but not to the extent you would for some of the more complex stuff mentioned above IMO.
Top three reasons why my OS project died:
Too much overtime at work
Got married
My brain got stuck in an infinite loop while trying to design the memory manager
I find that standard is:
1 user, 1 job = 1
x users, 1 job = (1) * 2
1 user, x jobs = ((1) * 2) * 2
x users, x jobs = (((1) * 2) * 2) * 1.5
Graphics = * 3 bonus