Hello,
Since I learn c++ by myself I would like to know more about how computers exactly work. I was searching for some books, videos, but mostly found just "Introduction to Computer Science", "Basics of how computers work" etc. I would like to learn some advanced stuff like, how exactly CPU cache works, what does exactly mean "listening to port" (is there some code constantly running in CPU which sends signal to port XY and wait for something to happen?), how exactly interupting works etc.. Can you recomend me some books, youtube channels, webpages etc that could help my self study?
Thank you
Re: About Computer Science
Posted: Tue Sep 15, 2020 11:30 am
by SoShootMe
As a first year undergraduate (some years ago...), I learned a lot from "Computer Organization & Design: The Harware/Software Interface" by Patterson and Hennessy. There may well be better alternatives, but it sounds like that's the sort of thing you're after. Look up the authors!
Computer Graphics and Games from Scratch ( in Console but u can also find 3D Games ( 3D in console ) )
Mostly math and some other Computer Science ( everything in C++ )
https://www.youtube.com/watch?v=QZwneRb-zqA
In this Video You can see Logic Gates and how they work, im not sure but in this video u maybe can see how Computer Count and Save result
but it might be different Video... idk i dont remember ...
Ofc. on Sebastian Channel u can also find Some Game Programming and its made rly rly cool <3
I think if u want to know how Computer Work... C++ is not rly great pick ...
How about ASM?... but also... what do u mean by "I learn c++ by myself"?...
Anywaa... those two channels should be interesting for You ...
+ You can make working Computer in Factorio
tbh. i have almost 0 knowledge about "How Computers work" so i can't "teach" you or help u
but even with almost 0 knowledge i made my own little computer in Factorio ...
Idk if i can call it like this but my Factorio PC had "4 cores on CPU" xD
and by 4 cores i mean 4 clocks that can read and calculate different location of memory at same time ...
Anywaa... Look at Channels i linked 4 u <3
Re: About Computer Science
Posted: Mon Jan 11, 2021 8:41 am
by KeepResearchinSpoons
IF you google it then a lot comes by. Like this for example.
please read the security-related part first. It is important
TL;DR: which entity you are opposing matters, you are a human after all.
But what I really want of you is NOT to be ignorant of the world you are living in. While the "code" is a tool it can be misused and even abused in a lot of ways.
While not being a all-through guide, here you can see what a "hacking" generally means for the "good side". The CTF is not the shortest way up the hill but the link has even some job-related details would you need them.
The dumbest part (and the easiest to break part) in all the tech we have is a HUMAN. Be it a maintainer, an operator or the lead designer or even an average user. All the tools are usually stiff and tough and are designed to be tough. But the humans aren't tough. And even a small group of focused humans is usually stronger then a lone human at a certain single-point-of-failure.
All the things are designed with at least 2+ or 3+ goals to achieve. Like being eco-friendly among else.
And most of your daily things have a purpose you don't really want to know or would rather avoid speaking of.
It's like automation robing of workplaces thing but way more serious.
So be sure of what you design and create (or even allow to exist in our mind lol).
Not every thing human makes is very human. Albeit has its purpose, justifications and such.
And a word of warning: the world is actually a very complex thing so (for some countries) don't even google about heavy "bad" tools to walk the baddie path unless you REALLY are sure of what are you doing and WHY are you doing it (at least 2 legit valid reasons If you were to be asked).
You cant know everything and the theory exists to be applied
Besides that it really depends on what you want. Short after this list the science went wild and wide. You _can't_ really study all the things in one life anymore. And even further on that, you can't even have a general knowledge on all the science the same way you can't read all of ArXiv each day (and well you don't need to?). (this is what say a redis, elastic or memcached are known for though (google each+wiki if needed))
Being more specific, most theory is to be APPLIED. Same as with functional thing (imo you should _really_ look THIS youtube vid from the beginning as for functional short-intro AND to find things mentioned that you feel uneasy about) you need a way to USE the skills for good. Be it game-design, systems integration, industry level design or even a full stack app creation as well as some AI stat data science with your big data in a huge heavy loaded scale (c.f. buzzword shuffle bingo).
you want to know what a web-service is
In general nowadays you want to know what a _web-service_ is. And maybe how it works inside if you are that curious.
I'm not telling you to study web-assembly Rust for that or even to get all the Node modules readme's to be read till next morning... But well knowing what an API is and what a compiler-transpiler-linker-makefile/docker-container/git-version_control/script/UI-vs-cli/OS-platform is - is a must. Not exactly exp for working with it wanted too often but at least a knowledge of its existence is a must. If ANYTHING can be scripted (and it is cost-efficient to do so) then a service that allows just that and solves just this task hits the market and emerges.
Speaking of games in that regard the simulation-type games are said to be pretty popular to play with on German market (according to a seasoned steam-spy report). Well he same goes for industrial-trance music... so no wonders.
Code related
Companies like SalesForce have a nice platform that allows you to make "big" things like accounting quite easy (with a _lot_ of simple and dumb code that is) (akin to some of gui-based game creators or even some industrial firmware design apps).
In general any "[*]aaS" is about giving you some "modern conveniences" as-a-(taxable?)-service.
Hosting wise, we have aws and lots of other options to get your fleet of servers (controlled with ansible/puppet/etc).
We have a ton of office suits and CRM-related or ERP-related products that have the market shares.
In most cases if you need some not-so-cutting-edge code (like the most of the code is) you either:
* do it in-house with your team (or hire some new pros or newbs)
or
* buy the service to do the job and maintenance for you
or
* outsource anything (and everything : > ) of it to (say) India or Russia where the labor costs are cheaper per hour/per task (like IBM or Google did back in the day).
Speaking of Quality_Assurance... Well it sucks that way a bit. But bruh you won't even believe what level of law-enforcing gov code was "online" a year-or-two ago being written with cobol or old-java. So LEGACY is a solid term in this area. Simply ask database this, process it so it is that, filter out those and boom the script goes making tons of reports on a daily basis. For all the law abiding citizens and denizens and law offending criminals and moo'ers. And yup it does not even support tabs and empty lines lol so there's a stripping tool geared up with all the incoming data pipe.
In my opinion you should have gotten all this from last year in school but bruh it depends as I can confirm seeing newbs. Not giving you a commercial here but well the list at https://everythingcomputerscience.com/ (liek the first google answer on `general info computer science` + some names + some pre-seed) is quite good in each of its parts.
speaking of hardware...
On the hardware side of it, you may want to start with looking through this list of things first. It is when you want to have some embedded device or a controller so to say. The IoT is a very crude way of doing it, but well what works works.
Almost all nowadays hardware is all around this idea but having very different implementations to suite every kind of arising tasks. Why do you need to know details depends on what you need to do. For example you may need some Automata theory to get into algo details and optimisations or you may need some memory tainting related memory management for the vm you are working with. And while it is hard to be a pro without the finite-state thing, the latter thing (and memory management in general as well) are VERY specific to language/task/environment/tooling-stack. So you may _never_ need a java-pattern, a js-framework, any pointer arithmetics and a lot of math things in your whole coding life and still be a valued professional.
And liek find a field you won't be all dull and crazy to dump about in 2-3 years at least. Liek, coding is fun! Every one at Programmer's hangout knows that. But meh there are a lot of roads that differ veeeery much.
If you are into "coding" because of the idea that it is popular... Think on where to use it first. Really makes you being more efficient waay better then all those raw Time managementappsalltogether.
Compare QML, GraphQL, SQL(postgress), NoSQL(not a sql apparently), json5. Consider ELF, Consistency model, Endianness for further reading and even IBM PC along with ZX Spectrum for a history tour. Among all the other aforementioned links.
Re: About Computer Science
Posted: Tue Feb 09, 2021 1:54 pm
by Challenger007
Thanks for the collection of useful videos. Good to look at for general development. I am currently studying Python and I think understanding how my instrument (i.e., computer) works will be very helpful.
Yes. FPGA's are good for that. fpgacpu.org (not an https site) has good info on this subject.
I originally learned to program a cpu with a development board. I read a lot of tech manuals. IBM used to publish the source code for the original IBM PC so reading and understanding the source code is helpful. The original Intel processor manuals can be helpful even now. From the 8008 to the first Pentium.
One of my first computers was a KIM1. And then a Heathkit H8. I couldn't afford an assembler at the time so I handcoded my assembler to machine code and entered it manually a byte at a time. (Both hex and octal.)
With all the years experience I have, it is difficult to say exactly where you should start. What I did then was to go to the library and read every magazine and book I could find on the subject. That was in high school in the 70's when Personal Computers were just being introduced. The smartest machine we had in school was a copy machine in the main office or maybe a calculator.
Copies of Byte and Kilobaud Microcomputing should be available somewhere and have many good tutorials on various subjects.
So go to the library, or internet. And read, and read some more.
Edit. I originally learned much about operating systems and hardware when I purchased the original source and textbooks for Minix. Looking at modern Linux distro source code will be helpful as well. Depending on how well the author of each piece of code commented things.
Disassembling the Bios source code on an older pc or clone is very good at learning how the cpu works as well. IDA-Pro is good for that.
And a good book for inspiration. "The Soul of A New Machine" by Tracy Kidder. (On Amazon)