Page 1 of 3
I need to know more about computers
Posted: Wed Nov 19, 2014 11:54 pm
by mac
Alright, hard to explain here. Some of you may be shocked, but after 15 years of my life being into computers, I realized that I don't understand as much how they work on a technical level.
Now, don't get this wrong, I tried experimenting with things before like the Windows registry but I didn't do that in a while and I forget very easily. Also, I want to begin to write my own programs (Java would be my go-to sort of language when I think of something that should be beginner-friendly) and I need some resources to learn more and the documentation terms so I have a few less bumps in the road. And I also take documentation for granted very easily, it's a very nasty habit of mine. Here's the biggest part, once I get that done, I want to be able to learn how to write an OS. Is my outlook doable? Also I'm not in a hurry or anything.
And I have tried to do programming before, but I gave up right after "Hello World" because I always had other distractions going on.
Re: I need to know more about computers
Posted: Wed Nov 19, 2014 11:58 pm
by no92
Usually, the path to OSdeving takes years. Good luck.
If you struggle with learning from resources on the Internet, get some printed books.
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 12:01 am
by mac
What about that kid in a thread I searched down a while ago who claimed it only took him a few years? He said he knew nothing about computers at age 12 when he started.
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 12:08 am
by no92
It took me 2.5 years to get to OSdeving. I have good knowledge of C and Assembly, but I started out with PHP and Ruby. For most people here, it longer, as you have to know a lot about computers. And that's just a matter of time. So, get a Linux Distro, sit down and write C. That's the only tip i can give.
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 12:16 am
by mac
C? Are you sure I should go straight to C?
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 12:20 am
by no92
It depends on whether you have programming experience yet. If you have it, go for C. If not, learn Ruby or Python first. But: you will have to learn C and Assembly at some point. It's not as scary as it looks though.
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 12:25 am
by alexfru
SeanMc wrote:C? Are you sure I should go straight to C?
Straight to asm is just fine as well. Or straight to Verilog or VHDL. Or to physics. I all depends on how low you want to go.
Or you could learn it almost all:
Digital Design and Computer Architecture, 2nd ed, Harris & Harris.
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 12:31 am
by mac
I just hope I'm not hopeless in my idea.
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 1:18 am
by alexfru
SeanMc wrote:I just hope I'm not hopeless in my idea.
You are if you think you are.
Otherwise, keep working. Perhaps, choosing 2 more or less independent areas to work on might be a good idea. If you get stuck in one, you can switch to the other for a while.
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 3:06 am
by Cjreek
alexfru wrote:SeanMc wrote:I just hope I'm not hopeless in my idea.
You are if you think you are.
I agree, BUT if you don't know much about computers and you can't really program anything but a hello world program you should probably just start learn a programming language of your choice. I think for your first language it's more important that you like the language (for whatever reason that may be) than the usefulness of this language (in certain situations).
As soon as you think that you're quite good and you are still interested in OSDev you should return and try to understand OSDev related things again.
When I first tried making an OS I didn't understand that much either and I didn't understand most of the (assembly) code in the tutorials altough I already had quite a bit experience with programming and even the WinAPI.
I gave up because the barrier just was too high at this point. I returned a view years later and I brought more patience and knowledge. This time I was successful and since then (with a huge break inbetween) I'm working on my own kernel.
What I'm trying to say is: You should really like (to learn) programming and you should be good at it. Otherwise OS development will most likely just be a frustrating experience for you which probably will make you not want to (ever) dive deeper into programming and OS development
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 8:38 am
by SpyderTL
Honestly, I think I would recommend reading through the Intel CPU documentation. This is about as low-level as you can get, as a software developer, and it will make everything else make sense. You might even start with the old 8086 CPU documentation.
Doing a little research on how computers "evolved" from calculators is also helpful. A light understanding about the CPU clock and how it makes the CPU work is also helpful.
You should be able to get through all of the information in a few days, so I'd say that it is well worth the time.
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 9:35 am
by Cjreek
@SpyderTL: Honestly I don't think this is a good idea. This is a pretty heavy lecture for someone with essentially no previous knowledge about programming and computers. I don't think he can get much out of it at this point.
And I have tried to do programming before, but I gave up right after "Hello World" because I always had other distractions going on.
What is your goal? Do you want to learn programming? Do you want to make your own operating system? (I assume because you are asking in this forum) or do you just want to know more about computers for no other reason than curiosity?
If one or more of the first 2 points apply to you than you MUST learn how to program. Nobody can keep you from getting distracted. You yourself have to make sure you don't get distracted and keep learning. Programming and especially OSDev require much patience and practice. You can't learn/do either of those things in just a few hours or days.
So if you can't get past "Hello World" without being distracted there's no chance you'll ever be able to programm anything (which means you won't be able to write your own OS at all). Either you really WANT to learn programming/make your own OS and you learn what you need to know or you can't do it.
This was a tough piece of text, I know.
But it's the truth. And I'm not sure if you even know what you want to do.
Your posts sound like: "I want to make an operating system. I don't know anything about programming and I don't want to learn it. How can I make an OS nonetheless?"
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 10:37 am
by AndrewAPrice
Cjreek wrote:Your posts sound like: "I want to make an operating system. I don't know anything about programming and I don't want to learn it. How can I make an OS nonetheless?"
Someone could make a 'Game Maker' for operating systems. Pick what features you want and how it should work, drag and drop GUI components. "Make an Operating System without any coding!"
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 11:05 am
by eryjus
SeanMc wrote:Also I'm not in a hurry or anything.
I think this will be your biggest benefit. If you are looking for instant gratification in development, OS development is not for you.
SeanMc wrote:C? Are you sure I should go straight to C?
Learn how to read C and really understand it. As you go through your development, you will reference other code. You will find much of what you reference is written in C. Really understand it to the bits and bytes -- i.e. what does that addition operation do to the flags register? How would that change if the integers are unsigned rather than signed?
I would pick another language and learn it as well. Pick a procedure oriented language and an object oriented language. Know the difference between the two and their strengths and weaknesses. Learn assembly -- and learn to read the compiled assembly output. You will be building a strong foundation upon which to build your OS development skills.
Also, OS development is in itself a large research project. Set your expectations properly on this. You will be reading -- A LOT. You will be reading documentation, some good and some bad. If you cannot get over you aversion to reading documentation, you will have a hard time with OS development.
This time is not lost in your OS development path. Ask questions, and then go find the answer. Think about what you want your OS to do. Develop a design. Revise the design. Put your design on paper.
SeanMc wrote:... I gave up right after "Hello World" because I always had other distractions going on.
Finally, you will not succeed in your first attempt at any task. Get used to it -- it's a fact of life. You will spend more time debugging than writing code.
ker2x wrote:my development process :
0x00) ok, what's next ?
0x01) OMGWTF!?
0x02) read documentation
0x03) OMGWTF!?
0x04) BBQ?
0x05) read documentation
0x06) OMGWTF!?
0x07) read documentation
0x08) Haaaaaaaaa
0x09) write some code
0x0A) OMGWTF!?
0x0B) read documentation
0x0C) write some code
0x0D) Mmmm....
0x0E) write some code
0x0F) Doh !
0x10) write some code
0x11) AWWWWW YEAH!
0x12) GOTO 0x00
I wish you luck!
Re: I need to know more about computers
Posted: Thu Nov 20, 2014 11:59 am
by no92
OSdeving is the most advanced and complicated thing you can do in computer science. Get into it with something else.