Page 3 of 3
Re: I need to know more about computers
Posted: Sat Nov 22, 2014 2:07 pm
by Arto
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.)
Re: I need to know more about computers
Posted: Tue Nov 25, 2014 1:42 pm
by Schol-R-LEA
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.
Re: I need to know more about computers
Posted: Tue Nov 25, 2014 2:15 pm
by Arto
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.
Re: I need to know more about computers
Posted: Fri Nov 28, 2014 4:45 am
by embryo
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
Re: I need to know more about computers
Posted: Sat Nov 29, 2014 4:36 am
by mathematician
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
Re: I need to know more about computers
Posted: Sat Nov 29, 2014 6:03 am
by Arto
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.
Re: I need to know more about computers
Posted: Sat Nov 29, 2014 6:31 am
by alexfru
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.
Re: I need to know more about computers
Posted: Sat Nov 29, 2014 6:42 am
by Arto
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
Clang is rather more useful than GCC in this regard,
defaulting to "-std=gnu11".
Re: I need to know more about computers
Posted: Sat Nov 29, 2014 6:57 am
by alexfru
Arto wrote:One of the first modern practices a newbie ought to learn is specifying "-std=c99" or the like
They have to learn -Wall -Wextra -Werr -O2 first.
Re: I need to know more about computers
Posted: Sun Nov 30, 2014 4:22 pm
by Arto
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
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:
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.
Re: I need to know more about computers
Posted: Sun Mar 08, 2015 8:25 pm
by mac
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.
Re: I need to know more about computers
Posted: Tue Jul 23, 2019 4:42 pm
by Catacombs
It's been nearly five years since OP started the thread. I'm curious to know if he or she made any progress.
Re: I need to know more about computers
Posted: Wed Jul 24, 2019 12:01 am
by iansjack
Have you checked that person's other posts (after that thread)?
Re: I need to know more about computers
Posted: Wed Jul 24, 2019 8:48 am
by Catacombs
I didn't think to! I'll do that.
I was hoping for a quick summary