Chapter 4: Linguistic Realization of Algorithms: Low-Level Programming Languages

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall with Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/90

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No study sessions yet.

91 Terms

1
New cards

abstract model

technique that derives simpler high-level conceptual models for a computer while exploring the science of what new algorithms can or cannot do

2
New cards

allocated memory

memory region set aside to hold a value

3
New cards

archive file

.a file that contains a static library

4
New cards

Arduino

hardware platform intended for creating simple, low-cost hardware for educational or hobbyist purposes

5
New cards

assembler

program that translates assembly language source code into machine code

6
New cards

assembly language

low-level language in which every statement corresponds directly to a machine instruction

7
New cards

BASIC

early high-level programming language

8
New cards

binary code

program in the native format that is understood by a CPU, which is a long series of 0s and 1s

9
New cards

C

middle-level language that has been in wide use since the 1970s

10
New cards

C++

middle-level object-oriented language based upon C

11
New cards

central processing unit (CPU)

computer chip capable of executing machine code programs

12
New cards

child thread

thread that is started by the parent thread, and only runs for a limited period in a parallel section

13
New cards

Church-Turing Thesis

scientific theory stating that an algorithm can be converted from any reasonable computational model to another

14
New cards

Clang

open-source C compiler developed by the LLVM project

15
New cards

code relocation

merges separate code and data sections into single sections (one for code and one for data)

16
New cards

compiler

(also: interpreter) program that translates source code from a middle-level or high-level language into something a computer can read

17
New cards

computational model

system for defining what an algorithm does and how to run it

18
New cards

concurrent programming

situation where multiple programs or tasks are running at the same time, regardless of whether they are using multiple processors or sharing one processor

19
New cards

core

individual processor built into a CPU chip

20
New cards

declarative programming

paradigm in which code dictates a desired outcome without specifying how that outcome is achieved

21
New cards

device driver

piece of code that is responsible for connecting to a hardware component such as a video card or keyboard

22
New cards

distributed computing

specific form of parallel programming where processors are working together in parallel, but the processors are in multiple connected computers, not a single computer

23
New cards

executable and linkable format (ELF)

standard binary format for object code

24
New cards

external reference

symbol that is used in a module, but not defined in that module, so is expected to be defined in some other module

25
New cards

firmware

very low-level code that communicates directly with hardware, providing a convenient interface for other software

26
New cards

freed memory

memory that is given back to be reused when a value is no longer needed

27
New cards

functional programming

paradigm in which algorithms are written as mathematical functions

28
New cards

GCC

open-source C compiler developed by the GNU Project

29
New cards

Git

widely-used version control system

30
New cards

GitHub

website that allows free storage of public git repositories

31
New cards

GOTO

non-structured operation that instructs a computer to jump to an entirely different part of the program

32
New cards

graphics processing unit (GPU)

massively-parallel processor that supplements a CPU; GPUs were originally designed for rendering real-time graphics in video games

33
New cards

hardware model

design for a how a specific physical computer executes algorithms

34
New cards

high-level programming language

programming language that operates at a high level of abstraction, meaning that low-level details such as the management of memory are automated

35
New cards

imperative programming

paradigm in which the programmer writes a series of steps that must be followed in order

36
New cards

instruction set architecture (ISA)

type of hardware model that defines a list of operations that a CPU can execute

37
New cards

integrated development environment (IDE)

program with a graphical user interface that includes a text editor, compiler, and other tools, all in one application

38
New cards

interpreter

(also: compiler) program that translates source code from a middle-level or high-level language into something a computer can read

39
New cards

invalid pointer

pointer that does not hold a valid location

40
New cards

kernel

core part of an operating system that is responsible for managing and interfacing with hardware components

41
New cards

Lambda calculus

abstract computational model defined by Alonzo Church that inspired the functional programming paradigm

42
New cards

level of abstraction

degree to which a computational model, programming language, or piece of software relates to computer hardware

43
New cards

library

file that contains object code for functions and global variables that are intended to be reused

44
New cards

linker

program that performs linking

45
New cards

linking

process of collecting and combining various pieces of object code into a single program file that can be loaded into memory and executed

46
New cards

Linux

open-source operating system kernel that is Unix-compatible

47
New cards

load time linking

when dynamic linking happens at the same time a program executable is first run

48
New cards

low-level programming language

programming language that operates at a low level of abstraction, meaning that code is similar to machine code

49
New cards

machine code

sequence of binary digits (bits) that can be understood and executed directly by a computer

50
New cards

memory leak

occurs when some memory is allocated but never freed

51
New cards

memory management

process of allocating and freeing memory

52
New cards

message passing

parallel programming approach where separate processes communicate only by sending messages, not sharing memory

53
New cards

Message Passing Interface (MPI)

message-passing interface that was first developed in the 1990s

54
New cards

middle-level programming language

programming language that is somewhat abstracted above low-level, but not as much as a high-level programming language; allows direct hardware access

55
New cards

modularity

property of code that allows it to be divided into a small, reusable piece

56
New cards

multicore

CPU chip that contains more than one core

57
New cards

object

a program value that has both data, or variables, and procedures that work together to represent a specific human concept

58
New cards

object-oriented programming

paradigm in which code is organized into objects, where each object has both data and procedures

59
New cards

OpenMP

library for parallel programming in the SMP model

60
New cards

operating system

software that provides a platform for applications and manages hardware components

61
New cards

operator

fundamental programming operation that combines values

62
New cards

parallel computer

multiple-processor system that supports parallel programming

63
New cards

parallel computing

practice of making productive use of parallel computers

64
New cards

parallel programming

computer programming technique that provides for executing code in parallel on multiple processors

65
New cards

parent thread

thread that runs from the program beginning through the end, and starts and manages child threads

66
New cards

pointer

variable that holds the memory address of another variable and points to that variable

67
New cards

procedural programming

paradigm in which code is organized into procedures

68
New cards

procedure

function in the context of programming

69
New cards

programming language paradigm

philosophy and approach for organizing code

70
New cards

programming model

design for humans to read and write

71
New cards

Random Access Machine

abstract computational model used to analyze the efficiency of algorithms

72
New cards

repository

container for files and related information stored in a version control tool

73
New cards

runtime linking

when linking occurs after a program has already started running

74
New cards

Rust

a relatively new middle-level programming language created by the Mozilla Foundation in the 2010s

75
New cards

segmentation fault

occurs if the subscript is very far out of range

76
New cards

semantic error

when code compiles and runs, but does not behave as it should

77
New cards

shared library

library file that can be shared by multiple programs at the same time

78
New cards

shared memory

programming model in which processes/tasks share a common address space, which they read and write to asynchronously

79
New cards

socket

Internet connection between two computers

80
New cards

source code

text of a program written in a programming language

81
New cards

static library

simple kind of library that that copies the contents of object files into a single file called an “archive”

82
New cards

structured programming

paradigm in which control flow is always controlled with conditionals (“if”) or loops (“while”) and never GOTO

83
New cards

symbol

identifier for a function or global variable

84
New cards

symbol resolution

during the symbol resolution step, the linker associates each symbol reference with exactly one symbol definition

85
New cards

symbol table

array of structures in which each entry includes name, size, and location of symbol

86
New cards

symmetric multiprocessor (SMP)

model in which there are multiple parallel processors that are practically identical

87
New cards

systems software

programs that provide infrastructure and platforms that other programs rely upon

88
New cards

thread

light-weight parallel execution path that shares memory with other threads

89
New cards

Unix

operating system that has been used widely, primarily in servers and software development since the 1970s

90
New cards

version control

tools that are used to store and improve multiple versions of project files and support team collaboration, and the ability to revert to an earlier versions

91
New cards

Visual C++

proprietary-license C and C++ compiler developed by Microsoft