Jump to content

Hi there, I recently decided that I wanted to learn about programming and I'm looking for suggestions on where to begin. I have started looking into different topics but the vast scope and numerous languages are somewhat terrifying. I have been using Apple computers for several years now. I gave up Windows because I couldn't stand them any longer but my growing impatience with Apple inspired me to take some time to learn about computers. I recently ordered a new MacBook and was going to recycle the old one but now I'm thinking to hold onto it while I play with programming to run bootcamp if need be. 

 

My goals are:

1. Understand how the OS works

2. Learn the difference between languages and what each are used best for

3. Apply simple coding and design

 

I guess the "shoot for the stars" question is how do I create my own operating system and programs for consumers? I Don't have the time to go to school for several years so I'm looking for a way I can learn this in the evenings and weekend. 

Link to comment
https://linustechtips.com/topic/776469-programming-os/
Share on other sites

Link to post
Share on other sites

3 minutes ago, Alexander James said:

Hi there, I recently decided that I wanted to learn about programming and I'm looking for suggestions on where to begin. I have started looking into different topics but the vast scope and numerous languages are somewhat terrifying. I have been using Apple computers for several years now. I gave up Windows because I couldn't stand them any longer but my growing impatience with Apple inspired me to take some time to learn about computers. I recently ordered a new MacBook and was going to recycle the old one but now I'm thinking to hold onto it while I play with programming to run bootcamp if need be. 

 

My goals are:

1. Understand how the OS works

2. Learn the difference between languages and what each are used best for

3. Apply simple coding and design

 

I guess the "shoot for the stars" question is how do I create my own operating system and programs for consumers? I Don't have the time to go to school for several years so I'm looking for a way I can learn this in the evenings and weekend. 

 

I would take a read of this thread regarding the operating system side.

If you just want to know how an operating system works take a look at this: https://www.dropbox.com/s/0q66q0sqxfax9ue/0. Modern Operating Systems - 4th Edition.pdf?dl=0

As for programming, there are plenty of tutorials online but if you want to do some more advanced stuff you'll want to find a good textbook

CPU: Intel i7-4790K @ stock for now --- RAM: Corsair Vengeance 16Gb --- MOBO: Asus Maximus VII Formula --- GPU: MSI Gaming GTX 980ti --- PSU: Corsair AX860i  ---  Storage: Samsung 850 250gb(OS), 3x Western Digital Blue 3tb (one for game and programs, two for media), 3tb WD Green(somewhat backup) and a Crucial M550 120gb SSD (caching games and programs drive)  --- Case: Fractal Define R5 --- Cooler: Corsair H100i with Noctua 2000rpm, Industrial Fans --- OS: Windows 10 --- Monitor: Asus PB298q + AOC l2260SWD --- Mouse: Logitech G502 Spectrum --- Keyboard: Corsair K70 (Cherry MX Red) Red LED's --- Audio: Audio Engine A2's (yes the originals), Sennheiser HD 58x Jubilee Audio-Technica ATH-AD900x, Audio-Technica ATH-M50x, Ant Lion Mod Mic V4 --- Laptop: Dell XPS 9750 

 

 

Link to comment
https://linustechtips.com/topic/776469-programming-os/#findComment-9793475
Share on other sites

Link to post
Share on other sites

While making a feature-rich OS like Windows, Linux, or macOS is way beyond the scope of one person, there are other things you could look at, depending on what you're looking for.

 

For example, I've worked with a software development framework known as QP (http://www.state-machine.com/). This I would argue contains the most basic facilities of an OS to be considered, for all intents and purposes, an OS. Albeit on a very basic level. It does provide very basic memory management, interprocess communication, and pre-emptive scheduling.

 

If you want a more featured OS that was built as a teaching aid, MINIX 3 is a good one for that (http://www.minix3.org/). It's a UNIX-like OS similar to Linux, though it has a different design philosophy that separates it from Linux. That is, the source is meant to be as minimal as possible.

 

And if you want to look at something used in the real-world, you can have a look at the XNU kernel, which is the basis of macOS, iOS, and all that (https://github.com/opensource-apple/xnu)

 

If properly designed, most of the assembly stuff in any of the OSes have to deal with high performance or very low level stuff. So you can get away with not touching assembly, but you should be familiar with it any way in case you have to look at it.

 

Though it might be better to just get a book. Modern Operating Systems by Andrew Tanenbaum is a good one.

Link to comment
https://linustechtips.com/topic/776469-programming-os/#findComment-9797867
Share on other sites

Link to post
Share on other sites

realisticly you're not going to one man a kernel then the rest of the OS. I would start on the Linux kernel then build on that. 

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
https://linustechtips.com/topic/776469-programming-os/#findComment-9817924
Share on other sites

Link to post
Share on other sites

Quote

2. Learn the difference between languages and what each are used best for

This makes me wonder, do you even know how to code? I feel like you'd know the differences if you knew a langauge or two...

 

Anyway I suggest you start with something along these lines first: http://www.valvers.com/open-software/raspberry-pi/step01-bare-metal-programming-in-cpt1/ and if you feel like it's not a total waste of time then add more OS like features ontop of it. Personally though I'll just make my kernel do only one thing. Let the user play some kind of 2D game.

 

 

Edit: I should probably mention that if you don't know any code then I strongly suggest you start by learning how to code in Python first. Unless you think you'll be better motivated if you pick some other langauge in which case pick that one but understand that it may be harder than Python would have been.

Link to comment
https://linustechtips.com/topic/776469-programming-os/#findComment-9819057
Share on other sites

Link to post
Share on other sites

If you don't know how to code yet and you want to go in the OS direction, I'd recommend learning C or C++ first. There are many resources for this. I'd highly recommend the video series on TheNewboston: https://thenewboston.com/videos.php?cat=14

This will at least get you started on the syntax and basics of C programming. Building an operating system isn't something I know a ton about, but starting out with just the basics of programming will get you going in the right direction.

Link to comment
https://linustechtips.com/topic/776469-programming-os/#findComment-9830738
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×