Appendix C

Glossary

Abstract

Lacking a definition. A val, var, def, or type declaration in a class or trait can be left without a definition, making it abstract. If a class contains any members that are abstract, then it must be declared to be abstract. Abstract types, whether class or trait, can not be instantiated. Only subtypes that have defined all the abstract members can be instantiated.

Abstraction

The concept of writing code so that certain parts of what happens are not concrete until the usage point. Functionality can be abstracted by passing in functions. Types can be abstracted through subtyping or type parameters.

Actor

An actor is an object that receives messages and acts on them. It should be able to process those messages in a manner that is independent of what thread is doing the work.

Affine Transform

This is a term from graphics that is defined as any transformation of the space where parallel lines are preserved. The basic affine transforms are translation, rotation, scale, and shear. Any combination of these is also an affine transform.

Argument

A value that is passed into a function of method.

Array

A basic collection of values that is a sequence represented by a single block of memory. Arrays have efficient direct access, but do not easily grow or shrink.

Class

A construct that works as the blueprint for objects.

CPU

The term Central Processing Unit is used to describe the primary computing element in a computer. This is where most of the work for the programs you are writing takes place.

Concrete

This is a term used to describe a type in which all members are defined and that can be instantiated. Non-abstract classes are concrete.

Concurrent

Concurrent execution is when two parts of a program as executing in a manner that appears to be simultaneous to the user and where the programmer has limited control over what is happening at any given time. A concurrent program does not have to be parallel. Concurrent programs include those where two threads of control swap between one another, but are never active at the same time.

Conditional

An expression of the Boolean type that is used to determine if code is executed.

Embarrassingly Parallel

This is a term used to describe a problem that breaks into problems that are completely independent. Such problems can be easily parallelized because the different pieces don’t really have to communicate with one another.

Enumeration

A type which can only take on one value from a small set of options. These are implemented in Scala by making an object that extends the scala.Enumeration type.

Event Thread

This is a special thread created by a GUI to handle events, including the repainting of the screen.

Expression

A sequence of tokens that has a value and a type.

File

An independent grouping of information in the static storage of a computer.

Function

This is a concept from mathematics of something that maps from values in a certain domain to values in a certain range. In programming, functions can serve this same purpose, but they also more generally group statements together under a particular name to allow you to break code into pieces and give it meaningful names.

Grammar

A formal specification for a set of languages. Chomsky grammars are composed of sets of terminal and non-terminal tokens, a non-terminal start token, and a set of productions. There are other types of grammars, including L-systems, that follow slightly different rules.

GUI

Short for Graphical User Interface. This is an interface that includes graphical elements that the user interacts with using a pointing device possibly in addition to keyboard input.

Higher-Order Function

This is a term used to describe a function whose inputs or outputs include function types.

if

A simple conditional construct that picks between one of two options based on whether or not a Boolean expression is true. In Scala, the if is a valid expression, but can also be used as statements.

Instantiation

The act of creating an object that is an instance of a particular type.

Iteration

The act of running through steps or elements one at a time.

Linked List

A manner of storing data where the data items are in nodes and the nodes know about one another, but nothing knows where everything is. This form of storage makes random insertion and removal efficient, but requires walking the list for random access.

List

An abstract data type that stores items by a numeric index and allows random access, insertion, and removal.

Loop

A construct designed to execute code repeatedly.

Map

This is an abstract data type that associates values with unique keys. In an ideal implementation, it should be efficient to store or retrieve values based on their keys. The critical aspect of a Map is that keys can be whatever type you want to use and they do not have to be contiguous.

Multithreading

The act of having a program that allows more than one thread of control to be active at a time. This effectively allows multiple instructions to execute simultaneously. This is a form of shared-memory parallelism.

Parallel

In the context of programming, this is when two or mote things are executing at the same time. This generally requires multiple computational elements such as cores, processors, or even full computers.

Parameter

This is a placeholder for a value that will be passed into a function.

Polymorphism

The ability of a piece of code to work with more than one type.

Priority Queue

An abstract data type where items can be added or removed. The order of removal depends both on a priority and the order of arrival such that higher-priority items always come off first and items that have been on the priority queue win ties in priority.

Profiling

The act of running a program to see how resources are used. Often this is done to see how many times different methods are called and what parts of the code the it spends the most time in.

Queue

An abstract data type where items can be added and removed. They are removed in the same order they are added. This is often called " first-in, first-out" or FIFO.

Recursion

When a function or method calls itself. In mathematical terms, this is when a function is defined in terms of itself.

Refactor

The act of changing code to improve some aspect of it, such as how it does something, without changing what it does.

Regular Expression

A formal specification for describing fairly simple sequences of characters. These are largely based on the regular grammars of the Chomsky hierarchy.

Search

The process of looking for a particular element or its position in a collection.

Sequence (Seq)

A type of collection characterized by items having a particular order and being referred to by an integer index.

Set

A collection of unique items. The ideal implementation of a Set allows for efficient checking to see if an element belongs to it, to add elements to it, or to remove elements from it.

Signature

The signature of a method/function includes the name along with the parameter types and the return type. From the signature you can see how a method/function should be called. The return type also lets you know what you can do with the result of the call.

Socket

A construct in computer software that is used to support communication between machines.

Sort

The act of putting the items in a sequence into the appropriate order according to some comparison function.

Stack

An abstract data type with the ability to add and remove items. It is characterized by the fact that items are removed in the inverse order in which they were added. This is often called "last-in, first-out" or LIFO.

Statement

A set of tokens that represents a complete command to a language. In Scala, any expression can be used as a statement.

Stream

A data source or sink that does not allow random access. The name should invoke the image of water flowing past. Once a certain time has passed, it can not be returned to.

Syntax Error

This is an error you are notified of during the compile stage which exists because you wrote code that violates the syntax of the language. These are typically the easiest errors to deal with because the compiler can give you an informative message with a line number. If you are working in an IDE, syntax errors will often be shown with a red underscore, much like spelling errors in a word processor.

Thread

A single unit of control in a program that shares memory with other threads.

Tree

A linked data structure that forms a hierarchy where nodes at higher levels know about a subset of the nodes in the level below them. Each node in a tree can only be reached from a single node in the level above it.

Token

The smallest element of a programming language that has meaning on its own and which changes meaning if altered or broken apart with whitespace.

Type

A construct that specifies a set of values and the operations that can be performed on them.

Variable

A construct that associates a name to a reference to a value.

XML

This is short for eXtensible Markup Language. XML is a standard, plain text format that can be used to represent various forms of data in a tree-like structure. It is called extensible because users are allowed to develop their own tags to represent data in the manner they want.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset