プリンキピア

第4章アルゴリズムの言語による実現:低水準プログラミング言語

Chapter Review章の復習

Key Terms重要用語

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
新しいアルゴリズムで何ができ、何ができないかを科学的に探究しながら、コンピューターのより単純な高水準の概念モデルを導く技法。
allocated memory
割り当て済みメモリ
memory region set aside to hold a value
値を保持するために確保したメモリ領域。
archive file
アーカイブファイル
.a file that contains a static library
静的ライブラリーを含む.aファイル。
Arduino
Arduino
hardware platform intended for creating simple, low-cost hardware for educational or hobbyist purposes
教育や趣味のための、単純で安価なハードウェアを作ることを意図したハードウェアプラットフォーム。
assembler
アセンブラー
program that translates assembly language source code into machine code
アセンブリ言語のソースコードを機械語コードへ変換するプログラム。
assembly language
アセンブリ言語
low-level language in which every statement corresponds directly to a machine instruction
各文が機械命令へ直接対応する低水準言語。
BASIC
BASIC
early high-level programming language
初期の高水準プログラミング言語。
binary code
バイナリーコード
program in the native format that is understood by a CPU, which is a long series of 0s and 1s
CPUが理解する固有の形式のプログラムで、0と1の長い列である。
C
C
middle-level language that has been in wide use since the 1970s
1970年代以来、広く使われている中水準言語。
C++
C++
middle-level object-oriented language based upon C
Cを基にした、中水準のオブジェクト指向言語。
central processing unit (CPU)
中央処理装置(CPU)
computer chip capable of executing machine code programs
機械語コードのプログラムを実行できるコンピューターチップ。
child thread
子スレッド
thread that is started by the parent thread, and only runs for a limited period in a parallel section
親スレッドによって開始され、並列実行部分の限られた期間だけ動くスレッド。
Church-Turing Thesis
チャーチ=チューリングの提唱
scientific theory stating that an algorithm can be converted from any reasonable computational model to another
アルゴリズムは、妥当な計算モデルであれば、どのモデルからでも別のモデルへ変換できるとする科学的理論。
Clang
Clang
open-source C compiler developed by the LLVM project
LLVMプロジェクトが開発した、オープンソースのCコンパイラー。
code relocation
コードの再配置
merges separate code and data sections into single sections (one for code and one for data)
別々のコードセクションとデータセクションを、コード用とデータ用のそれぞれ1つのセクションへ統合すること。
compiler
コンパイラー
(also: interpreter) program that translates source code from a middle-level or high-level language into something a computer can read
インタープリターともいう。中水準または高水準言語のソースコードを、コンピューターが読めるものへ変換するプログラム。
computational model
計算モデル
system for defining what an algorithm does and how to run it
アルゴリズムが何を行い、どう実行するかを定義する体系。
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
複数のプロセッサーを使うか、1つのプロセッサーを共有するかにかかわらず、複数のプログラムやタスクが同時に動いている状況。
core
コア
individual processor built into a CPU chip
CPUチップに組み込まれた、個々のプロセッサー。
declarative programming
宣言型プログラミング
paradigm in which code dictates a desired outcome without specifying how that outcome is achieved
結果をどう実現するかを指定せず、コードで望む結果を指示するパラダイム。
device driver
デバイスドライバー
piece of code that is responsible for connecting to a hardware component such as a video card or keyboard
ビデオカードやキーボードなどのハードウェア部品との接続を担うコード。
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
プロセッサーが並列に連携するが、それらが1台でなく、接続された複数のコンピューター内にある、並列プログラミングの特定の形。
executable and linkable format (ELF)
Executable and Linkable Format(ELF)
standard binary format for object code
オブジェクトコードの標準バイナリー形式。
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
あるモジュールで使うが、そのモジュールでは定義されず、別のモジュールで定義されると想定するシンボル。
firmware
ファームウェア
very low-level code that communicates directly with hardware, providing a convenient interface for other software
ハードウェアと直接通信し、ほかのソフトウェアに便利なインターフェースを提供する、非常に低水準のコード。
freed memory
解放済みメモリ
memory that is given back to be reused when a value is no longer needed
値が不要になったときに、再利用できるよう返却されたメモリ。
functional programming
関数型プログラミング
paradigm in which algorithms are written as mathematical functions
アルゴリズムを数学的な関数として書くパラダイム。
GCC
GCC
open-source C compiler developed by the GNU Project
GNUプロジェクトが開発した、オープンソースのCコンパイラー。
Git
Git
widely-used version control system
広く使われているバージョン管理システム。
GitHub
GitHub
website that allows free storage of public git repositories
公開Gitリポジトリーを無料で保存できるWebサイト。
GOTO
GOTO
non-structured operation that instructs a computer to jump to an entirely different part of the program
プログラムのまったく別の部分へ飛ぶよう、コンピューターに指示する非構造化の操作。
graphics processing unit (GPU)
グラフィックス処理装置(GPU)
massively-parallel processor that supplements a CPU; GPUs were originally designed for rendering real-time graphics in video games
CPUを補う超並列プロセッサー。GPUは、もともとビデオゲームのリアルタイム画像を描画するために設計された。
hardware model
ハードウェアモデル
design for a how a specific physical computer executes algorithms
特定の物理的なコンピューターが、アルゴリズムをどう実行するかの設計。
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
高い抽象化水準で動作するプログラミング言語。つまり、メモリ管理のような低水準の細部は自動化される。
imperative programming
命令型プログラミング
paradigm in which the programmer writes a series of steps that must be followed in order
順番に従うべき一連の手順を、プログラマーが書くパラダイム。
instruction set architecture (ISA)
命令セットアーキテクチャ(ISA)
type of hardware model that defines a list of operations that a CPU can execute
CPUが実行できる操作の一覧を定義する、ハードウェアモデルの一種。
integrated development environment (IDE)
統合開発環境(IDE)
program with a graphical user interface that includes a text editor, compiler, and other tools, all in one application
グラフィカルユーザーインターフェースを持ち、テキストエディター、コンパイラー、その他のツールを1つのアプリケーションにまとめたプログラム。
interpreter
インタープリター
(also: compiler) program that translates source code from a middle-level or high-level language into something a computer can read
コンパイラーともいう。中水準または高水準言語のソースコードを、コンピューターが読めるものへ変換するプログラム。
invalid pointer
無効なポインター
pointer that does not hold a valid location
有効な場所を保持しないポインター。
kernel
カーネル
core part of an operating system that is responsible for managing and interfacing with hardware components
ハードウェア部品を管理し、それらとやり取りする、オペレーティングシステムの中核部分。
Lambda calculus
ラムダ計算
abstract computational model defined by Alonzo Church that inspired the functional programming paradigm
アロンゾ・チャーチが定義した抽象計算モデルで、関数型プログラミングのパラダイムの着想を与えた。
level of abstraction
抽象化の水準
degree to which a computational model, programming language, or piece of software relates to computer hardware
計算モデル、プログラミング言語、ソフトウェアが、コンピューターハードウェアにどれほど関わるかという度合い。
library
ライブラリー
file that contains object code for functions and global variables that are intended to be reused
再利用することを意図した関数やグローバル変数のオブジェクトコードを含むファイル。
linker
リンカー
program that performs linking
リンク処理を行うプログラム。
linking
リンク処理
process of collecting and combining various pieces of object code into a single program file that can be loaded into memory and executed
さまざまなオブジェクトコードを集めて結合し、メモリに読み込んで実行できる1つのプログラムファイルにする過程。
Linux
Linux
open-source operating system kernel that is Unix-compatible
Unixと互換性のある、オープンソースのオペレーティングシステムのカーネル。
load time linking
ロード時リンク
when dynamic linking happens at the same time a program executable is first run
プログラムの実行可能ファイルを初めて実行するとき、同時に動的リンクが起こること。
low-level programming language
低水準プログラミング言語
programming language that operates at a low level of abstraction, meaning that code is similar to machine code
低い抽象化水準で動作するプログラミング言語。つまり、コードは機械語コードに近い。
machine code
機械語コード
sequence of binary digits (bits) that can be understood and executed directly by a computer
コンピューターが直接理解し、実行できる、2進数字(ビット)の列。
memory leak
メモリリーク
occurs when some memory is allocated but never freed
メモリを割り当てたまま、解放しないときに起こるもの。
memory management
メモリ管理
process of allocating and freeing memory
メモリを割り当て、解放する過程。
message passing
メッセージパッシング
parallel programming approach where separate processes communicate only by sending messages, not sharing memory
別々のプロセスがメモリを共有せず、メッセージの送信だけで通信する、並列プログラミングの手法。
Message Passing Interface (MPI)
Message Passing Interface(MPI)
message-passing interface that was first developed in the 1990s
1990年代に初めて開発された、メッセージパッシングのインターフェース。
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
低水準よりはある程度抽象化されているが、高水準プログラミング言語ほどではない言語。ハードウェアへ直接アクセスできる。
modularity
モジュール性
property of code that allows it to be divided into a small, reusable piece
コードを、小さく再利用可能な部分へ分割できる性質。
multicore
マルチコア
CPU chip that contains more than one core
複数のコアを含むCPUチップ。
object
オブジェクト
a program value that has both data, or variables, and procedures that work together to represent a specific human concept
データ、つまり変数と、手続きの両方を持ち、それらが連携して人間の特定の概念を表す、プログラム内の値。
object-oriented programming
オブジェクト指向プログラミング
paradigm in which code is organized into objects, where each object has both data and procedures
コードをオブジェクトに整理し、それぞれのオブジェクトがデータと手続きの両方を持つパラダイム。
OpenMP
OpenMP
library for parallel programming in the SMP model
SMPモデルによる並列プログラミングのためのライブラリー。
operating system
オペレーティングシステム
software that provides a platform for applications and manages hardware components
アプリケーションのためのプラットフォームを提供し、ハードウェア部品を管理するソフトウェア。
operator
演算子
fundamental programming operation that combines values
値を組み合わせる、プログラミングの基本的な操作。
parallel computer
並列コンピューター
multiple-processor system that supports parallel programming
並列プログラミングに対応する、複数プロセッサーのシステム。
parallel computing
並列計算
practice of making productive use of parallel computers
並列コンピューターを生産的に活用する実践。
parallel programming
並列プログラミング
computer programming technique that provides for executing code in parallel on multiple processors
複数のプロセッサー上で、コードを並列に実行するためのコンピュータープログラミング技術。
parent thread
親スレッド
thread that runs from the program beginning through the end, and starts and manages child threads
プログラムの最初から最後まで動き、子スレッドを開始して管理するスレッド。
pointer
ポインター
variable that holds the memory address of another variable and points to that variable
別の変数のメモリアドレスを保持し、その変数を指す変数。
procedural programming
手続き型プログラミング
paradigm in which code is organized into procedures
コードを手続きに整理するパラダイム。
procedure
手続き
function in the context of programming
プログラミングの文脈における関数。
programming language paradigm
プログラミング言語のパラダイム
philosophy and approach for organizing code
コードを整理するための思想と手法。
programming model
プログラミングモデル
design for humans to read and write
人間が読み書きするための設計。
Random Access Machine
ランダムアクセスマシン
abstract computational model used to analyze the efficiency of algorithms
アルゴリズムの効率を解析するために使う、抽象計算モデル。
repository
リポジトリー
container for files and related information stored in a version control tool
バージョン管理ツールに保存された、ファイルと関連情報を入れる場所。
runtime linking
実行時リンク
when linking occurs after a program has already started running
プログラムがすでに実行を始めた後に、リンクが起こること。
Rust
Rust
a relatively new middle-level programming language created by the Mozilla Foundation in the 2010s
Mozilla Foundationが2010年代に作った、比較的新しい中水準プログラミング言語。
segmentation fault
セグメンテーション違反
occurs if the subscript is very far out of range
添字が範囲を大きく外れると起こるもの。
semantic error
意味上のエラー
when code compiles and runs, but does not behave as it should
コードがコンパイルでき、実行もできるものの、期待どおりに振る舞わないこと。
shared library
共有ライブラリー
library file that can be shared by multiple programs at the same time
複数のプログラムが同時に共有できるライブラリーファイル。
shared memory
共有メモリ
programming model in which processes/tasks share a common address space, which they read and write to asynchronously
プロセスやタスクが共通のアドレス空間を共有し、そこへ非同期に読書きするプログラミングモデル。
socket
ソケット
Internet connection between two computers
2台のコンピューター間のインターネット接続。
source code
ソースコード
text of a program written in a programming language
プログラミング言語で書かれたプログラムのテキスト。
static library
静的ライブラリー
simple kind of library that that copies the contents of object files into a single file called an “archive”
オブジェクトファイルの内容を、アーカイブという1つのファイルへコピーする、単純な種類のライブラリー。
structured programming
構造化プログラミング
paradigm in which control flow is always controlled with conditionals (“if”) or loops (“while”) and never GOTO
制御の流れを常に条件文(if)またはループ(while)で制御し、GOTOは決して使わないパラダイム。
symbol
シンボル
identifier for a function or global variable
関数またはグローバル変数を表す識別子。
symbol resolution
シンボル解決
during the symbol resolution step, the linker associates each symbol reference with exactly one symbol definition
リンカーが、各シンボル参照を、ちょうど1つのシンボル定義へ対応付ける段階。
symbol table
シンボル表
array of structures in which each entry includes name, size, and location of symbol
各項目がシンボルの名前、大きさ、場所を含む、構造体の配列。
symmetric multiprocessor (SMP)
対称型マルチプロセッサー(SMP)
model in which there are multiple parallel processors that are practically identical
実質的に同一の複数の並列プロセッサーを持つモデル。
systems software
システムソフトウェア
programs that provide infrastructure and platforms that other programs rely upon
ほかのプログラムが頼る基盤とプラットフォームを提供するプログラム。
thread
スレッド
light-weight parallel execution path that shares memory with other threads
ほかのスレッドとメモリを共有する、軽量な並列実行経路。
Unix
Unix
operating system that has been used widely, primarily in servers and software development since the 1970s
1970年代以来、主にサーバーとソフトウェア開発で広く使われてきたオペレーティングシステム。
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
プロジェクトのファイルの複数の版を保存・改善し、チームの共同作業と、以前の版へ戻す機能を支えるためのツール。
Visual C++
Visual C++
proprietary-license C and C++ compiler developed by Microsoft
Microsoftが開発した、独占的なライセンスのCおよびC++コンパイラー。