How do I learn about computers?

Computers and cars, those are the two things I need to learn about this year. Let’s say you literally knew nothing about computers (which I don’t), how would you learn about them? What’s a hard drive? What are all those parts? Can people really put computers together from scratch? Also, what exactly is “programming”? How does the computer know what to do with the code?

Best way to learn more about these things?

Attached: 034D7816-9E18-487F-9F7C-1C15E93DFAE5.png (960x738, 246K)

Other urls found in this thread:

youtube.com/watch?v=HyznrdDSSGM&list=PLowKtXNTBypGqImE405J2565dvjafglHU
dipmat.univpm.it/~demeio/public/the_c_programming_language_2.pdf
eleccompengineering.files.wordpress.com/2014/07/structured_computer_organization_5th_edition_801_pages_2007_.pdf
twitter.com/NSFWRedditGif

install gentoo
unironically best way to learn

Pick a topic, read about it, put what you read into practice. How else do you think it would happen?

Just be interested and research this stuff. If you're not interested, don't bother. Do a bunch of research on building computers and the various parts, and when you feel confident buy an old desktop for cheap on ebay or something and tinker with it. If you break it, it doesn't matter, but just disassembling it and reassembling it is a great way to learn.

There’s not like a textbook or something? Surely all this information about computer hardware isn’t just scattered all over the place is it? I just want to pick up the basics so I can understand what people are saying.

fpbp
/thread
Seriously this is one of the few times installing gentoo is not a meme

I don't go with a book, generally just youtube what I want to know about and then google.

The problem is that your question is too vague. What do you want to know? How your pc is built? How to build one yourself? How the internet works?

You got some nice numbers so I'll try my best to answer your questions. I don't know shit about cars but I know a lot about computers.

>how would you learn about them?
Start by buying one. There are lots of different computers you can get. Not just laptops, desktops, phones, etc. There are also embedded computers and micro controllers, which are simple and small and they don't use a lot of juice. Pick up a Raspberry Pi 3B+ Cannakit on Amazon for $50 and start playing with it.

>What’s a hard drive?
A type of storage media. The two most common types are mechanical drives and flash storage. Mechanical drives have moving parts and flash storage doesn't. Mechanical hard disks have magnetic platters that spin around inside, and a little magnetic arm will move over the disk to either read or write data. This is how floppy disks work as well. Flash storage is like what's in your phone, or an SD card. There are solid state drives that can replace a normal hard drive in your computer, which use very similar technologies. The major differences are just speed, longevity, and form factor.

>Can people really put computers together from scratch?
Yep, of course you can. You can also buy pre-built PCs and upgrade them later. It all depends on what you want from your machine. I'm using a pre-built Core2 Quad machine right now. See the PC building general that's up on Jow Forums.

1/2

Attached: 1546282026008.png (911x911, 706K)

Build your own pc
install gentoo on it

2/2

>Also, what exactly is “programming”?
Programming in binary (machine code) would be nearly impossible. So programming languages were developed to abstract software into something that's readable by humans. Programming langauges use a certain syntax to define certain actions or other things a computer should do. When you write a C program for example, you're writing a list of commands for the computer to follow. When you run the program, you're giving that list to the computer to follow.
>How does the computer know what to do with the code?
For compiled languages like C, you first need to compile the code. The compiler is a program or set of programs designed to translate your programming language into something the computer is able to read. The compiler will take a text file containing your code and then read through it, and it'll remove things that aren't needed like comments. It leaves you with a binary, or executable, which the computer can then use. For interpreted languages like Bash, you're also using a programming language and you're still going to save your code in a type of text file. The difference is that the interpreter will read straight from that file. So Bash itself is a binary that can then read the programs you give it. Interpreters are slower for most things than compiled code, but it's often a fiar tradeoff for the convenience and ease of use that comes with something like Bash scripting. Scripting is still the same as programming. You're still feeding the interpreter a list of commands to carry out. There are also assemblers which are a little different but you don't need to worry about that right away.

Study the CompTIA A+ certification. You don't actually have to get the cert but it's basically "how computers work", basic intro to IT.

For programming, YouTube has shit loads of tutorials. Maybe lookup python since it's easy to get into.

If a compiler is a program, it must have been compiled. It might have compiled itself. But how did it start out?

I’ll check it out. I’ll try and build my own PC when I graduate later this year and start making more money. Just doing things is probably the best way to learn.

How did you get this smart/knowledgeable? You’re a good man for actually taking the time to answer and now I’ve got tons of other questions but you’ve given me a good starting point to branch out from. Thank you, and if I had this much knowledge and could type this well I’d try and make money teaching others if I were you.

This was also one of my questions upon reading his response. How does the compiler “read” things initially? At some point you go from hardware to software, but how? Is it just a bunch of little mechanical/electrical systems?

> Also, what exactly is “programming”? How does the computer know what to do with the code?

I suggest you read on the history of computing to get an overview of how we got here.

The first compilers were written in assembly, i.e raw machine instructions.

It started out as assembly code that was used to compile itself, basically. And the assembler started as binary. You can still compile compilers when porting newer versions to a specific platform for an example. It's called bootstrapping.

>How did you get this smart/knowledgeable?
Computers have been a hobby for me for years. It all started when I was 15 and I totally fucked my Windows XP installation somehow. Me being a broke teenager, I wasn't really interested in paying for a new copy of Windows. So I installed Ubuntu from a disc I got from a friend at school. Since I was never really into games or anything I found that Linux had pretty much everything I needed. I've been using Linux and doing hobbyist software development for about a decade.

On the hardware level you have silicon that's etched with chemicals and lasers to be able to hold an electrical charge which represents binary data. The smaller these transistors get the more of them can be packed into the same space, which is how processors get faster. The smaller the distance between these parts, the less time it takes to share data. These transistors are grouped together in unfathomably large numbers to do specific things. It really just boils down to the input and output of binary data. But this is all handled by the processor internally, and you can't really get any lower than an assembler.

Damn, this is a cozy wholesome thread for once on Jow Forums.

Start with the greeks

If you want to learn a good chunk about hardware then build your own pc. The building itself won't teach your anything, but researching what parts you need, what makes a part better, and so on will.

literally unironically build your own 8 bit processor from scratch in minecraft
its what I did and my brain is massive now

Attached: 1472371260061.jpg (528x444, 36K)

If you want to gain a comprehensive understanding of anything, buy a book.

or do the same thing with a breadboard, this guy has some nice videos:
youtube.com/watch?v=HyznrdDSSGM&list=PLowKtXNTBypGqImE405J2565dvjafglHU

this is way more involved and requires know-how thats not related to pure computer science

Minecraft redstone works just as well and the implementation mirrors real world except how you do memory, but the fetch read etc process is still the same, just the memory bank is different.

Attached: 1503562863244.png (278x297, 135K)

The key concept that allows computers to be programmed is layers of abstraction.
Not even the greatest programmer can look at a computer and fully understand how everything is working together at the exact moment, the whole system is far too complex. So we create abstracted layers.
The highest of this is the end user layer. You can for example use a word processing program without understanding anything deeper about the computer because all the details are abstracted away from you. You don't need to know how your computer keeps track of which text is underlined and which is bolded, all of this is abstracted away to a button that you click.
If you go down a level of abstraction, you get down to the level of the programmer that created the program. He will understand how to use a programming language to create the application and will have deeper knowledge about the workings of the computer, but many details are still abstracted away. For example, the compiler that he uses may as well be a black box. He doesn't need to understand how his code is compiled.
Then you can go down another level to the person who created the compiler. To do this he would have used low level assembly language (essentially a 'language' that is as close to binary as possible whilst still being understandable by humans). Whilst this person would need to have an extremely good low level understanding of the structure of the computer, he would not for example need to know the physics of how the electrons flow through each of the transistors.
You can then go down to the level of the engineers that designed the processor, then go down to the level of the person who invented the first transistor etc. etc.

That's a lot of text but I hope you get the idea I'm trying to convey.
The current state of programs has been achieved by creating many abstraction layers.
To create a compiler (or anything that creates a new abstraction layer) you start at the layer below and work up.

Attached: 1488419537078.jpg (1920x1080, 396K)

>Surely all this information about computer hardware isn’t just scattered all over the place is it?
There probably are books but I think for most people here the way we learned about all this stuff is just through spending most of our lives being fascinated by and tinkering around with computers.
I can't imagine much would stick if you just sat down and read a textbook.
Just set yourself a goal to have built a computer by the end of the month, it's not as difficult as it sounds and it teaches you a whole lot. Just search "how to build a pc" on youtube and watch some videos and then look up anything you don't understand, that's the way all of us here learnt. There's tons of online resources and forums dedicated to PC building where you can ask any questions.

Once you've done that you should have a pretty good understanding of hardware, so you can move on to understanding software. For this, just look up some basic programming tutorials, probably in a simple language like python. You don't need to actually get good at programming, but you need to gain 'computer sympathy' by understanding how basic programs are written. Once you have a basic idea of how programs are written and what computers are capable of processing, it should click in your head and you'll be able to look at any program and have some sort of understanding of how it must work under the hood, rather than it just being a magical black box.

Attached: 1487182567633.jpg (882x1024, 348K)

Ignore all other posts ITT and buy pic related then download this: dipmat.univpm.it/~demeio/public/the_c_programming_language_2.pdf
Whenever you don't understand something, look up a tutorial on youtube.

Attached: main-qimg-f96f4f7bb466772f3b2dbae21d443ae6.jpg (398x499, 74K)

this is a good textbook that covers a lot of the lower-level stuff.
eleccompengineering.files.wordpress.com/2014/07/structured_computer_organization_5th_edition_801_pages_2007_.pdf
It's written by the Minix professor.
If you want a much more accessible book that covers similar stuff, try
But How Do It Know?

Attached: 1510137937684.jpg (1314x2048, 338K)

also, fuck meant for

First, somebody put a bunch of switches together in a way that they could do certain math and logic operations.

Then somebody rearranged and added some switches so the inputs (series of 1s and 0s, or 'machine code') could tell the machine what operations to run, making the machine programmable.

Then somebody wrote some machine code that could convert simple words (or 'assembly code') into their corresponding machine codes.

Then somebody wrote some assembly code that could convert more sophisticated text (programming languages) into machine code. This is a compiler, and is capable of making other compilers, and even compilers for the language it was written in.