Advice

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.
Post Reply
chris

Advice

Post by chris »

Hmm, well, as you might know already, I'm not a very experience programmer. I know that OS dev is probably the hardest type of programming, and I havn't done many large projects in my life, so I was wondering if developing an OS right away would be quite hard, and a waste of time until i'm more experienced.
Tim

Re:Advice

Post by Tim »

As a cynical old-timer, I would recommend learning to program really well on 'easier' projects before getting too deep into OS development. OS development requires pretty good programming skills anyway; there's a lot to specialist stuff learn before you can do anything useful; and you can't use most of the tools you're used to using with other types of programs.

In the end it's up to you. Do you have the patience to see your code crashing again and again and not know why; to then learn why it's crashing; and then realise all your code is wrong and you should start from the beginning? (I've had at least 3 rewrites of the Mobius kernel up until now, and it's pretty demoralising. However the rewards for getting something useful running are far greater, and in any case I've learned a lot along the way.)
mystran

Re:Advice

Post by mystran »

Probably the hardest part of os programming is really (like Tim mentioned) that most of the tools that make normal programming easier, can't easily be used for os devel. You either have to get along with a C compiler and assembler, or write all the other stuff you need yourself. If you want to use some C++ stuff, you need to write C++ runtime. If you want garbage collection, you have to write that.

The other thing I've found somewhat frustrating is the constant supply of new chicken-egg-problems. You can't have something, until you have something else, and you can't have that something else, unless you first have at least some of the first.
There's ofcourse a solution, but sometimes it seems to require writing slightly different code several times, just so you can use the first version of something to start something else needed by the second version. In the mean while you have to make sense..

I've personally considering a new HLL, which I could then compile to something that doesn't need any runtime. Could write the compiler with my own Lisp dialect, and use the new language to write a kernel and necessary amounts of runtime for this Lisp to run. But then again, I'm not that interested in getting something "useful" done but more about "doing personal research on different possibilities". Have to finish the Scheme version of this Lisp's interpreter first though. It still lacks usable string manipulation, borrows Schemes parser and some other stuff..
Post Reply