New learner!
New learner!
Hey everyone
New to the forums, and extremely new to the topic. I've always wanted to look into this subject, and thus found this site. I'm only 14, I have a fairly good knowledge of Computers, I have a dual boot Windows XP and Linux SuSE 9.2 on an x86 machine, and that's networked with my Apple eMac which is my favourite and most common. This site's great for people who actually know what they're doing, but not for people new to the subject. Basically I was wondering things like, what's the best language to work around etc. I currently know an awful language; Visual Basic and REALBasic, but I am deciding on whether to learn C or C++. Since I'd love to go on and study this topic. It's be great to have everyones thoughts on both languages. Thanks in advance to anyone who replies
Dan Walker
New to the forums, and extremely new to the topic. I've always wanted to look into this subject, and thus found this site. I'm only 14, I have a fairly good knowledge of Computers, I have a dual boot Windows XP and Linux SuSE 9.2 on an x86 machine, and that's networked with my Apple eMac which is my favourite and most common. This site's great for people who actually know what they're doing, but not for people new to the subject. Basically I was wondering things like, what's the best language to work around etc. I currently know an awful language; Visual Basic and REALBasic, but I am deciding on whether to learn C or C++. Since I'd love to go on and study this topic. It's be great to have everyones thoughts on both languages. Thanks in advance to anyone who replies
Dan Walker
Learn, learn, then eat and drink, then learn some more!
Re: New learner!
erl ofcourse theres a big advantge to learn C/C++, one reason is that you Can Not wite operative systems in Visual Basic, no mahter what anyone else said Unless ofcourse you'd write your own compiler...).
I'd recommend lerning C since that is the most common language to write OSs in, and since you will have it quite easy to find help on the internet!
I'd recommend lerning C since that is the most common language to write OSs in, and since you will have it quite easy to find help on the internet!
Re: New learner!
Yeah I've been looking into C, but I'd rather learn C++ as I have many C++ mates, who would be willing to teach me all they know. I'm pretty sure some of the Linux kernels are written in the C++ Language. I'm not sure it's in C/Console C though :S. If you could give me any links to a site with C/C++ Comparisons that'd be great. I need to know whether it'd be worth learning C++. If it'd be harder to develop Operating Systems in this language please point that. Thanks in advance
DanielWalker
DanielWalker
Learn, learn, then eat and drink, then learn some more!
Re: New learner!
I would strongly recommend learning C++ first, since it's a higher-level language with simpler concepts in the language. Once you have learned C++, you can go on to learn the less advanced idioms of C, which will lead you gently down the garden path to the dark and murky world of assembly.Demonix wrote:Yeah I've been looking into C, but I'd rather learn C++ as I have many C++ mates, who would be willing to teach me all they know. I'm pretty sure some of the Linux kernels are written in the C++ Language.
Assembly language programming is essential for OS development. Some people enjoy writing their OS purely in assembly as an end in itself, while others prefer a working OS. Writing an OS in C++ takes extra care and advanced understanding of the language runtime. Sticking to C is a middle ground most OS developers prefer.
The best place to go for an introduction to C++ is the book Accelerated C++ by Koenig and Moo.
The Linux kernel is written entirely in C, but it uses some GCC extensions so it can't be built using any other compiler. Efforts have been made to allow some C++ modules, but they're consistently rejected by the kernel maintainers.
Most Unixes are written in C. The Darwin (Mac OS X) core is written in a reduced subset of C++ that is indistinguishable from C with primitive classes tacked on.
Once Chase gets this site back in order (hint hint), the various howtos, the wiki, and the links will likely be your best resource for OS development.
I hope this is enough to get you started.
Re: New learner!
Thanks very much this has helped alot, and explained why the site isn't extremely helpful at the moment. So [hint hint] hopefully it'll be back up soon and I can get stuck in
Learn, learn, then eat and drink, then learn some more!
Re: New learner!
Why not get a book about Operating Systems first. There are a lot of very good books: Tanenbaum, Milankovic...
I think the Operating System theory is more important that which language to use. You are very young and have time to read about it.
I think the Operating System theory is more important that which language to use. You are very young and have time to read about it.
Pepito
Re: New learner!
I'm reading "Operating Systems: Design and Implementation Second Edition" which is turning out to be a slow read (I'm 14 to).
I know that this is a silly question, but could we use Visual C?
I know that this is a silly question, but could we use Visual C?
Re: New learner!
A bit of assembly is necessary for os development. On top of that you might want to learn full assembly (along with it's implications) or C or C++. This depens on what you like best, but it is a good idea to get an idea of every posssiblity.
*post*
Re: New learner!
Why start learning C++, when he will be using C which is basicly the same thing but without OOP?bregma wrote:I would strongly recommend learning C++ first, since it's a higher-level language with simpler concepts in the language.
Grrr...bregma wrote:...path to the dark and murky world of assembly.
More grrr...bregma wrote:Some people enjoy writing their OS purely in assembly as an end in itself, while others prefer a working OS.
I recommend that you start out by writing some simple programs in C, then start looking into the tutorials at http://osdever.net/.
/ Christoffer
Re: New learner!
I'm sorry - I can' agree!bregma wrote:, which will lead you gently down the garden path to the dark and murky world of assembly.
A beginner needs first of all to know, that there is a programcounter in a CPU, which adresses the opcode to execute in the next cycle. This is in fact the only concept to execute programs!
If You read an assembler program, You can accompany the programcounter, which points to the start of a line, where every name represents an adress - and nothing else confusing. You will never get to anything dark. But You will get the feeling for the machine and how to make sense out of transfers of values and adresses.
Those "higher-level" programmers have never learned or forgotten, that the meaning of a binary value isn't an attribute of this value but results out of adressing. Thus a beginner needs to know how to adress - and not how to cry mighty commands in C++.
Only then, when You know, what adressing really is and why it is important, that you can compose an adress of several parts (segment or page, base, index displacement, offset) - only then you can start to understand, what a class is. (And then you can see too, that this seemingly mathematical expressions are not higher level but higher nonsense, made once to sell new compilers at high costs - a "class" is only a new name for an old shoe).
Only then, when you got the idea of the problems, when you want to adress anything in a other program which is anywhere at runtime - only then you can understand, why an operating system is needed.
If you code at higher levels, you will never get an idea, why segments, pages, descriptors... are needed. In the bright world of C/C++ or even basic this is well hidden.
But an operating systems deals mainly with that parts of adresses.
Demonix! - I would advice You: learn assembler (it's very, very easy! / read the NASMdocs) and accompany the programcounter in examples. You could start then with the OS, I wrote for learning and testing purpose. There You can see, what at least has to be done after booting and before a keystroke results a sign on screen. Look at my homepage:
www.rcfriz.de
-
- Member
- Posts: 31
- Joined: Thu Apr 14, 2005 11:00 pm
- Location: Planet Earth
- Contact:
Re: New learner!
I strongly recommend learning C/C++, it will help you greatly. I also strongly recommend NOT writing your entire OS in ASM, as your code can get very messy and big. You will however need to learn assembler or you will be stuck big time. As for using Visual C++, go for it. I currently use v. 7.1 for my OS and it works just fine. You will need to figure out how to convert the exe to a flat binary image, or just add support for PE format in your OS.
- carbonBased
- Member
- Posts: 382
- Joined: Sat Nov 20, 2004 12:00 am
- Location: Wellesley, Ontario, Canada
- Contact:
Re: New learner!
Yes, definitly. If you're writting an OS, you should know about the underlying hardware. More to the point, you should understand interrupts, IO, IRQs, segmentation (possibly... not all platforms have it), paging, etc, etc, etc. None of things necessitate writting your OS in assembly language.frizzz wrote:I'm sorry - I can' agree!bregma wrote:, which will lead you gently down the garden path to the dark and murky world of assembly.
A beginner needs first of all to know, that there is a programcounter in a CPU, which adresses the opcode to execute in the next cycle. This is in fact the only concept to execute programs!
If You read an assembler program, You can accompany the programcounter, which points to the start of a line, where every name represents an adress - and nothing else confusing. You will never get to anything dark. But You will get the feeling for the machine and how to make sense out of transfers of values and adresses.
I don't want to start yet another war but, simply put, just because an OS is written in a high level language doesn't mean the developer wasn't meticulous about how those intructions effected the entire internal state of the machine. Your choice of language does NOT dictate your skill level.
It has always been my opinion that an OS is the exact WRONG "program" to develop just after learning a language, but people seem to do it, all the same, and wonder why their projects never get finished. Nothing is a substitute for a thorough understanding of your platform and language. That doesn't come overnight.
And, lastly, I'd just like to point out that you can get a very nice, clean, abstracted and Portable (!) OS/API using a high level language. While interacting directly with the hardware may be easier and more intuitive in assembly language, contructing such an OS/API as described above, is not.
Not true. My choice to use a high level language was an informed decision. Not only have I written assembly language on several different platforms, but I was also intimately close with each platform... yet again, a developer's choice in language does not reflect his/her skill/knowledge. Although, in this case, it was a product of my experience... I chose NOT to use assembly language.frizzz wrote: Those "higher-level" programmers have never learned or forgotten, that the meaning of a binary value isn't an attribute of this value but results out of adressing. Thus a beginner needs to know how to adress - and not how to cry mighty commands in C++.
Hardly. Reproducing the entire set of features provided by C++ in assembly langauge -- THAT is why compilers exist. A high level language, by definition, is short-hand for a lower-level language. No one will be surprised when you tell them that everything that can be done in C++ can be done in assembly... the point in question is how easily done it is.frizzz wrote: Only then, when You know, what adressing really is and why it is important, that you can compose an adress of several parts (segment or page, base, index displacement, offset) - only then you can start to understand, what a class is. (And then you can see too, that this seemingly mathematical expressions are not higher level but higher nonsense, made once to sell new compilers at high costs - a "class" is only a new name for an old shoe).
And again, the choice to use a high-level language should NOT be associated with not knowing your platform. Everyone here that will suggest a high level language will also suggest knowledge of the platform -- that's a given, no matter what language you use.
It's like an advertisement in every message...frizzz wrote: You could start then with the OS, I wrote for learning and testing purpose. There You can see, what at least has to be done after booting and before a keystroke results a sign on screen. Look at my homepage:
www.rcfriz.de
--Jeff
Re: New learner!
Too true!carbonBased wrote:It's like an advertisement in every message...frizzz wrote: You could start then with the OS, I wrote for learning and testing purpose. There You can see, what at least has to be done after booting and before a keystroke results a sign on screen. Look at my homepage:
www.rcfriz.de
--Jeff
*post*
Re: New learner!
I want to share my efforts and to help - what's wrong with that?
You will never find any advertising on my homepage - different to other homepages, which are mentioned here.
(Since I post here, I got a lot of advertising concerning the length of my penis and other ****...)
You will never find any advertising on my homepage - different to other homepages, which are mentioned here.
(Since I post here, I got a lot of advertising concerning the length of my penis and other ****...)
Last edited by frizzz on Wed Jun 01, 2005 11:00 pm, edited 1 time in total.
Re: New learner!
Instead of just answer the question you advert for your OS. And in case mentioned? Where are pages mentioned here really often (except in profiles)?
*post*