OSDev.org
https://forum.osdev.org/

I need to know more about computers
https://forum.osdev.org/viewtopic.php?f=13&t=28750
Page 3 of 3

Author:  Arto [ Sat Nov 22, 2014 2:07 pm ]
Post subject:  Re: I need to know more about computers

I'm surprised nobody has yet mentioned the plethora of free university courses available online these days. This is a huge leg up over us old-timers who had to learn this stuff by ourselves, mostly offline and from scant information sources, back in the day.

SeanMc wrote:
So I understand: The CPU retrieves data from memory (RAM) in a specific address or location with a sequence of numbers, breaks it down into instructions and performs the execution of the instructions. Operations performed are arithmetical and control operations. Is this right? Feel free to correct me or add.


Consider enrolling in Stanford's free, self-paced, online Computer Science 101 (CS101) class:

http://online.stanford.edu/course/compu ... self-paced

The course teaches computing from the ground up, with zero experience assumed. Several friends of mine have found it helpful.

In case you should find the course too basic, though, there is no shortage of more advanced courses. Look over on Coursera and edX in particular, or an aggregator such as Class Central. (Warning: in my experience, edX courses tend to be rather more demanding than Coursera, so don't enroll just on a whim.)

Author:  Schol-R-LEA [ Tue Nov 25, 2014 1:42 pm ]
Post subject:  Re: I need to know more about computers

I second what Arto says, though my usual go-to site for such things is MIT OpenCourseware. The material is tough, but still accessible and very well presented on the whole. The introductory EECS material can be found here.

(Of course, I am biased, as I personally like the older Abelson-Sussman Lectures, which teach a full course in programming in about 20 hours, using Scheme as the development language. Most people aren't as enthralled by this as I am, however.)

A few books you might want to look into include Think Python for basic programming, Assembly Language Step-by-Step for an introduction to low-level programming, C Primer Plus for the requisite C knowledge, Linkers and Loaders for the executable file format details, and Computer Organization and Design (which I would accompany with MIPS Assembly Language Programming as a reference) for the hardware concepts. That should keep you busy for a couple of years, and be enough to keep your interest going as well. Along the way, you should also learn about source control systems such as Git and how to use them, how to use a virtualizer such a VirtualBox, and how to use a basic debugger, among other things.

Author:  Arto [ Tue Nov 25, 2014 2:15 pm ]
Post subject:  Re: I need to know more about computers

Schol-R-LEA wrote:
I second what Arto says, though my usual go-to site for such things is MIT OpenCourseware. The material is tough, but still accessible and very well presented on the whole. The introductory EECS material can be found here.

(Of course, I am biased, as I personally like the older Abelson-Sussman Lectures, which teach a full course in programming in about 20 hours, using Scheme as the development language. Most people aren't as enthralled by this as I am, however.)


I, too, taught myself computer science from the Wizard Book and the OpenCourseWare materials, so I would second this notion.

That said, that's rather more advanced than the introductory Stanford course that I mentioned, and also (last I checked) doesn't have a MOOC-style classroom format (that would be edX, instead of OCW), just a lot of independent files to download and try and organize one's personal curriculum around. However, MIT's CS curriculum could be considered the gold standard, so can't go wrong there in case you're able to follow the materials.

Author:  embryo [ Fri Nov 28, 2014 4:45 am ]
Post subject:  Re: I need to know more about computers

SeanMc wrote:
I want to be able to learn how to write an OS

You can pick an OS project and join it. There are plenty of OSes, so you have a choice. There are even some OSes in different than C or asm languages.

After joining you can make little steps of enhancing existing code, making it better (and you can define what the "better" is). One advantage of such approach is almost instant result you can play with. After you have your "better" piece of OS you can run it and see what to do with it to make it even better. Next you can try to convince other developers to include your code in the OS sources, but do not expect a quick success here. Instead - you can expect some comments about your code and what the guys think the "better" is. If such comments will not kill you then you are on the way of making a really great OS :)

Author:  mathematician [ Sat Nov 29, 2014 4:36 am ]
Post subject:  Re: I need to know more about computers

SeanMc wrote:
C? Are you sure I should go straight to C?


There have been a lot of badly written C programming books in the past. But they don't have to be badly written. Kernighan & Ritchie's famous book got me started with C.

http://www.amazon.co.uk/The-Programming ... 0131103628

Author:  Arto [ Sat Nov 29, 2014 6:03 am ]
Post subject:  Re: I need to know more about computers

mathematician wrote:
SeanMc wrote:
C? Are you sure I should go straight to C?


There have been a lot of badly written C programming books in the past. But they don't have to be badly written. Kernighan & Ritchie's famous book got me started with C.

http://www.amazon.co.uk/The-Programming ... 0131103628


While a fine book, K&R does teach an outdated version of the language; so, anyone looking to pick up C from K&R would do well to follow that up with something like O'Reilly's 21st Century C that teaches modern practice.

Author:  alexfru [ Sat Nov 29, 2014 6:31 am ]
Post subject:  Re: I need to know more about computers

Arto wrote:
mathematician wrote:
SeanMc wrote:
C? Are you sure I should go straight to C?


There have been a lot of badly written C programming books in the past. But they don't have to be badly written. Kernighan & Ritchie's famous book got me started with C.

http://www.amazon.co.uk/The-Programming ... 0131103628


While a fine book, K&R does teach an outdated version of the language; so, anyone looking to pick up C from K&R would do well to follow that up with something like O'Reilly's 21st Century C that teaches modern practice.


It's funny you have to say that about ANSI C when gcc is still compiling by default with implied -std=gnu89 and magically turns what is long long in C99 into unsigned long per the rules of ANSI C. :)

Author:  Arto [ Sat Nov 29, 2014 6:42 am ]
Post subject:  Re: I need to know more about computers

alexfru wrote:
Arto wrote:
While a fine book, K&R does teach an outdated version of the language; so, anyone looking to pick up C from K&R would do well to follow that up with something like O'Reilly's 21st Century C that teaches modern practice.


It's funny you have to say that about ANSI C when gcc is still compiling by default with implied -std=gnu89 and magically turns what is long long in C99 into unsigned long per the rules of ANSI C. :)


One of the first modern practices a newbie ought to learn is specifying "-std=c99" or the like :wink:

Clang is rather more useful than GCC in this regard, defaulting to "-std=gnu11".

Author:  alexfru [ Sat Nov 29, 2014 6:57 am ]
Post subject:  Re: I need to know more about computers

Arto wrote:
One of the first modern practices a newbie ought to learn is specifying "-std=c99" or the like :wink:


They have to learn -Wall -Wextra -Werr -O2 first. :)

Author:  Arto [ Sun Nov 30, 2014 4:22 pm ]
Post subject:  Re: I need to know more about computers

Arto wrote:
alexfru wrote:
It's funny you have to say that about ANSI C when gcc is still compiling by default with implied -std=gnu89 and magically turns what is long long in C99 into unsigned long per the rules of ANSI C. :)


One of the first modern practices a newbie ought to learn is specifying "-std=c99" or the like :wink:

Clang is rather more useful than GCC in this regard, defaulting to "-std=gnu11".


Incidentally, I was glancing through the GCC 5.0 release notes today, and the very first listed item (under "Caveats") is:

https://gcc.gnu.org/gcc-5/changes.html wrote:
The default mode for C is now -std=gnu11 instead of -std=gnu89.


So, as of next year, Clang and GCC both will default to C11 with added GNU extensions. About time, I say. Certainly it will (and perhaps very subtly) break some builds of old crufty code bases, but really, it's overdue.

Author:  mac [ Sun Mar 08, 2015 8:25 pm ]
Post subject:  Re: I need to know more about computers

Thank you for all this advice. I will admit that I'm not as technical-minded as one may think, but one thing experimenting with Linux did teach me a lot about reading manuals and documentation, something Windows made me take for granted.

I want to understand it more, because I really crave having the ability to control my computer with code.

Author:  Catacombs [ Tue Jul 23, 2019 4:42 pm ]
Post subject:  Re: I need to know more about computers

It's been nearly five years since OP started the thread. I'm curious to know if he or she made any progress.

Author:  iansjack [ Wed Jul 24, 2019 12:01 am ]
Post subject:  Re: I need to know more about computers

Have you checked that person's other posts (after that thread)?

Author:  Catacombs [ Wed Jul 24, 2019 8:48 am ]
Post subject:  Re: I need to know more about computers

I didn't think to! I'll do that.

I was hoping for a quick summary :lol:

Page 3 of 3 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/