1/30
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
high level of abstraction to low
software domain, digital domain, analog domain
Layers of abstraction in the software domain
- applications that you write and use
-programing languages that are used to write them
-libraries of useful functions that hide messy details
-operating systems that interface with the hardware
abstraction
a way of thinking about the computer without thinking about how it works
Digital domain abstraction levels
-architecture: instructions that software can send that the hardware will understand
-components: memory, processors, video cards that implement the architecture
-components are made out of integrated circuits (chips)
-integrated circuits are designed around logic gates: fundamental building blocks that implement Boolean functions (logic gates use 1's and 0's) and are made out of transitors
boolean functions
_ and _
_or_
not_
transistors
circuit component with in-between values
ex: "only 23% on"
analog vs digital
Digital and analog are opposites. Digital means information that is represented as ones and zeros. Analog means information that is represented by signals that vary continuously (that is, including in-between values).
data mining
computers can learn to combine information from different sources, to produce surprising results
-combining multiple sources of online info to send specialized ads
machine learning
Computers can be taught to generalize from the information they finds to patterns to predict the future.
-weather
-astronomy
spreadsheets impact
the application that made businesses take computers seriously
special-purpose languages
narrow purposes
-microsoft word - "word macros" -generating data and formatting in a document
general-purpose languages
if an algorithm can be expressed in one language, it can be expressed in all of them.
the only difference between these languages are the levels of abstractions
high level language
includes many built-in abstractions that make it easier to focus on the problem you want to solve rather than on how computer hardware works.
-can produce safer programs (less likely to have bugs)
-ex: snap
low-level language
has fewer abstractions, requiring you to know a lot about your computer's architecture to write a program.
-reason why programmers use this: to write operating systems (like Windows)
garbage collection technique
puts the computer in charge of knowing when a block of memory is no longer in use.
highest order functions
"map"
"keep"
"combine"
"for each"
machine language
A program written in the basic, simple instructions that the computer understands directly.
-ultra low-level language
-compilers and interpreters are used to translate human programming languages into machine language to be run by the computer.
compiler
a program that takes a high- or low-level language program (the source code) as input and produces a machine language program (the object code) as its output. Once produced, the machine language program can be run repeatedly without needing to be compiled again.
interpreter
a program that takes a high- or low-level program as input and carries out machine language instructions as needed to run the program. It does not produce a stand-alone machine language program as output and will have to repeat the process again next time.
parallel programs
programs that can use more than one processor at the same time.
functional programming languages
(languages in which programmers never change the value of a variable) are particularly well suited to parallelism because there's no danger of one processor changing the value of a variable that another processor is using.
library
is a piece of computer code written by another programmer that you can import into your code without having to know any of the details of how it works.
application program interface (API)
is the documentation of what the user of a library needs to know about its contents: a description of their purpose and their inputs and outputs, but not their algorithms. An API allows two software components to communicate.
operating system
the underlying programs that your apps interact with to communicate with the computer.
-phone: android or IOS
kernel
deals directly with hardware (keyboard, mouse, microphone, camera, hard drives, memory, printer, speakers, screen, etc.). It is generally written in a low level language so it can control that hardware.
-scheduling
-security
-input and output
These days, OS kernels are remarkably similar. Of the five systems listed earlier (Linux, macOS, Windows, Android, and iOS), four of them (all but Windows) are based on variants of a single kernel...
unix
hardware
The physical components of a computer.
babbage
gears
-difference engine: used gears to design a complex machine that would compute and print tables of numbers. But these gears needed to be so precise that each one had to be handmade.
analytical engine: based on difference engine but could carry out instructions
-created plans for modern computer
software
a program stored in the computer's memory
-abstraction is software allows computer to be used for multiple different things
architecture
an abstraction, a specification of the machine language. It also tells how the processor connects to the memory. It doesn't specify the circuitry; the same architecture can be built as circuitry in many different ways.
-width of the architecture is measured in bits (# of wires)
-wider computer cab process more data in one instruction
assembly language
a line-by-line equivalent to the actual numeric instruction codes but is slightly more readable.