Summary
Highlights
Ang Central Processing Unit (CPU) ay gawa sa silicon na may bilyun-bilyong microscopic switch na tinatawag na transistors. Ang mga ito ay maaaring 'on' o 'off', na kumakatawan sa 1 at 0. Tinatawag na 'bit' ang halaga sa bawat switch. Ang grupo ng 8 bits ay tinatawag na 'byte' at maaaring magkaroon ng 256 iba't ibang kombinasyon ng 0s at 1s, na ginagamit sa binary system para mag-imbak ng impormasyon. Ang bawat bit ay kumakatawan sa isang power of 2. Ang hexadecimal, na gumagamit ng 0-9 at a-f, ay isang mas madaling basahing format kaysa sa binary.
Ang logic gates ay mga electronic circuit na gumagamit ng transistors para sa logical statements. Sa pamamagitan ng pagkokombina ng logic gates, maaaring bumuo ng mga circuit na nagsasagawa ng mga kalkulasyon ayon sa Boolean algebra. Bukod pa rito, ang character encoding tulad ng ASCII ay nagtatalaga ng binary number sa bawat character, na nagpapahintulot sa computer na maunawaan at ipakita ang teksto. Ang operating system kernel, tulad ng Windows o Linux, ang namamahala sa pagkakabit ng mga device, tulad ng input devices na nagbibigay ng instructions sa computer.
Ang computer ay nauunawaan lamang ang machine code, o binary code, na nagsasabi sa CPU kung ano ang gagawin. Ginagampanan ng CPU ang mga instruction ngunit hindi ito makapag-imbak ng data nang matagal; kaya, kailangan nito ang Random Access Memory (RAM). Ang RAM ay tulad ng isang grid kung saan ang bawat box ay naglalaman ng isang byte ng impormasyon at may address, na nagbibigay-daan sa CPU na ma-access ito sa apat na hakbang: pagkuha mula sa memorya, pag-decode ng instructions at data, paglalabas at pag-iimbak ng resulta. Ito ang isang machine cycle. Ang modernong CPU ay maaaring gumawa ng bilyun-bilyong cycle bawat segundo, na sini-synchronize ng isang clock generator. Ang CPU ay mayroon ding maraming cores na maaaring magsagawa ng iba't ibang instruction nang sabay-sabay.
Sa halip na direktang mag-type ng machine code, ang mga programming language ay ginagamit para isulat ang mga instruction sa mas madaling maunawaan na paraan. Ang ilang wika tulad ng Python ay gumagamit ng interpreter, habang ang iba tulad ng C ay gumagamit ng compiler. Ang mga programming language ay may mga variable para sa pag-iimbak ng data. May iba't ibang data type ang mga variable, tulad ng single characters, strings, integers, at floating point numbers para sa decimal values. Ang mga floating point numbers ay maaaring magkaroon ng rounding errors dahil sa limitadong memorya. Ang 'long' at 'double' ay gumagamit ng dobleng memorya para doblehin ang range ng ints at floats.
Ang mga pointer ay mga variable na naglalaman ng memory address ng ibang variable, na nagbibigay-daan sa 'pointer arithmetic' para makapag-navigate sa memorya. Sa ilang low-level languages, kinakailangan ang manual memory allocation, ngunit sa high-level languages tulad ng Python, mayroong mga 'garbage collector' para sa automatic memory management. Ang mga data structure ay ginagamit para mag-organisa ng data. Ang arrays ay listahan ng mga item na may parehong data type na nakaayos sa contiguous memory. Ang linked lists naman ay gumagamit ng nodes na may halaga at pointer sa susunod na node, na nagpapahintulot na maging hiwalay sa memorya at dynamic na lumago. Ang stacks at queues ay batay sa arrays at linked lists, sumusunod sa 'last in, first out' at 'first in, first out' na prinsipyo ayon sa pagkabuo.
Ang hash map ay koleksyon ng key-value pairs na gumagamit ng hash function para i-assign ang isang key sa isang index kung saan naka-imbak ang value nito. Maaaring mangyari ang 'collision' kung saan dalawang magkaibang key ang nag-mamap sa parehong index, na maaaring masolusyunan sa pamamagitan ng paglikha ng linked list sa posisyong iyon. Ang graphs ay data structure na nagrerepresenta ng relasyon sa pagitan ng iba't ibang datapoints. Binubuo ito ng nodes na konektado ng edges, na maaaring directed, undirected, at may 'weight'. Ang graphs ay ginagamit sa pag-aanalisa ng mga network at paghahanap ng pinakamaikling path. May dalawang pangunahing paraan para maghanap sa graph: breadth first search at depth first search.
Ang tree ay isang graph kung saan ang anumang dalawang node ay konektado ng eksaktong isang path, na nagrerepresenta ng hierarchy (hal. file system). Nag-uumpisa ito sa 'root' at nagba-branch out sa 'subtrees' na nagtatapos sa 'leaf nodes'. Ang 'binary search tree' ay isang uri ng binary tree kung saan ang lahat ng values sa kaliwa ng isang node ay mas maliit, at ang lahat ng values sa kanan ay mas malaki, na nagpapabilis sa paghahanap ng mga specific value. Ang algorithms ay set ng instructions na sumosolve ng problema. Maaaring isulat ang algorithms sa anyo ng function, na tumatanggap ng inputs, nagsasagawa ng aksyon, at nagbabalik ng output. Ang mga function call ay inilalagay sa 'call stack'.
Ginagamit ang mga operator at logical expression para maghambing ng values at magsulat ng 'conditional statements' at 'loops' (while loop, for loop). Ang 'recursion' ay kapag ang isang function ay tinatawag ang sarili nito, na kapaki-pakinabang sa mga problema na maaaring hatiin sa mas maliliit na problema. Kinakailangan ng 'base condition' para hindi mag-crash ang programa dahil sa 'stack overflow'. Para sa pagpapabuti ng performance, ang 'memoization' ay ginagamit para i-save ang mga nakaraang resulta sa isang cache. Ang 'time and space complexity' ng isang algorithm ay sinusukat sa 'Big O notation', na naglalarawan ng relasyon sa pagitan ng input size at bilang ng operations na kailangan.
Mayroong maraming paraan para masolusyonan ang isang problema gamit ang code, na tinatawag na 'programming paradigms'. Ang 'Declarative programming' ay naglalarawan kung ano ang ginagawa ng code, habang ang 'Imperative programming' ay detalyadong naglalarawan kung paano ito gagawin. Ang 'Object-oriented programming' ay isang extension ng imperative programming, kung saan ang mga 'class' ay nagbibigay ng blueprint para sa mga 'object' na naglalaman ng data (properties) at behavior (methods). Ang mga classes ay maaaring magkaroon ng 'subclasses' na nagmamana ng properties at behaviors mula sa 'superclass', na nagpapakita ng 'polymorphism'.
Kapag hindi gumagana ang traditional programming paradigms, ginagamit ang 'machine learning' para turuan ang computer na gumawa ng isang gawain nang hindi direktang pinoprograma. Ito ay nagsisimula sa maraming data, na hinahati sa training at test data. Pumipili ng algorithm na maaaring baguhin ang mga parameter nito sa paglipas ng panahon, tulad ng 'neural network'. Sa pamamagitan ng pagbibigay ng training data, nabubuo ang model, at ang accuracy nito ay sinusuri gamit ang test data. Ang model ay nagpapabuti sa paglipas ng panahon sa pamamagitan ng paghahambing ng output sa kung ano ang dapat na, na nagtatala ng pagkakaiba sa isang 'error function', at pag-aayos ng mga parameter.
Ang internet ay isang pandaigdigang network ng mga computer na konektado sa pamamagitan ng mga wire. Ang mga computer ay nakikipag-ugnayan gamit ang 'Internet Protocol Suite', kung saan ang bawat computer ay may unique na 'IP address'. Ang 'transmission control protocol' (TCP) ay naghahati ng mga mensahe sa 'packets' na ipinapadala sa network. Ang web ay ang software na ginagamit sa pamamagitan ng browser. Kapag nagta-type ka ng 'URL', hinahanap ng browser ang IP address ng server sa pamamagitan ng 'domain name system'. Pagkatapos makakonekta sa TCP, ginagamit ng browser ang 'hypertext transfer protocol' (HTTP) para magpadala ng 'http request' sa server, na nagbibigay ng 'response' na naglalaman ng webpage.
Ang website ay karaniwang binubuo ng tatlong bahagi: Ang 'HTML file' ay naglalaman ng lahat ng content, ang 'CSS file' ay kumokontrol sa visuals, at ang 'JavaScript' ay nagdaragdag ng functionality. Ang bawat HTTP response ay may 'response code' na nagbibigay impormasyon tungkol sa status ng response (hal. 200 para sa 'OK', 404 para sa 'page not found'). Ang HTTP requests ay maaaring magtaglay ng iba't ibang methods tulad ng GET, POST, PUT, at DELETE. Ang 'Application Programming Interfaces' (APIs) ay nagkokonekta sa dalawang application at nagpapahintulot sa kanila na makipag-ugnayan, halimbawa para mag-imbak at magkuha ng data mula sa isang database.
Ang 'relational database' ay ang pinakakaraniwang uri, na gumagamit ng mga table para mag-imbak ng data. Ang mga column ay naglalaman ng iba't ibang attributes, at ang mga row ay kumakatawan sa individual datapoints. Bawat table ay may 'primary key', at ang 'foreign key' ay ang primary key ng ibang table, na nagtatatag ng relasyon sa pagitan ng dalawa. Sa pamamagitan ng 'SQL', maaaring magsulat ng statements para gumana sa data mula sa mga table. Ang 'SQL injection attack' ay isang paraan para makapasok ang mga hacker sa pamamagitan ng pagbabago ng SQL query, halimbawa sa login page, na nagbibigay ng access sa mga hindi otorisadong user.