L11: Understanding Programming Flashcards
a machine that can carry out a complex series of actions through a computer program
robot
a versatile tool capable of performing various activities
computers
a sequence of instructions that tell a computer how to do a task
computer program
a set of written symbols that instructs the computer hardware to do specific tasks
programming language
what is a programming language usually composed of?
vocabulary, set of rules, or syntax
similar to machine code & is more suitable for programs like device drivers, or very high performance programs that need access to hardware
low-level language
focuses more on concepts that are easy to understand by the human mind, like objects or mathematical functions
high-level language
translated to the target machine’s native language by a program called a compiler
compiled languages
read by a program called an interpreter & are executed by that program, have no long long compile times, slower than a compiled program
interpreted languages
languages that are quickly compiled when programs written in then need to run, offers balance between performance & portability
JIT-compiled/Just-in-time compiled languages
puts restrictions on how different types of variables can be converted to each other without converting statements
type strength: strong typing system
tries to find some way to make the cast work
type strength: weak typing system
deals with how the compiler/interpreter for a language infers the types of variables
type expression: manifest/inferred
refers to the rules that the different types of variables of a language have to follow
type system
when the compiler/interpreter does the type checking once before the program runs/is compiled
type checking: static (statically typed)
the types are checked at run-time
type checking: dynamic (dynamically type checked)
refer to the degree to which a language will prohibit operations on typed variables that might lead to undefined behavior/errors
type safety: safe or unsafe
a methodology or way of programming that a programming language supports
programming paradigm
focuses more on specifying what a language is supposed to accomplish, might not be used to avoid undesired effects
declarative
a sub-set of declarative programming, tries to express problems in terms of mathematical equations/functions, avoids concepts of states & mutable variables
functional
focuses on writing skeleton algorithms in terms of types that will be specified when the algorithm is used, allows leniency to programmers
generic
can be a powerful paradigm if well-implemented
generic
allows programmers to give the computer ordered lists of instructions without necessarily having to state the task
imperative
sounds like an opposite of declarative programming
imperative