Glossary

abstract

Hiding details. When a language is more abstract, you can write programs using a smaller number of (individually more powerful) operations.

Ada

An object-oriented language designed by a committee for the DoD in the late 1970s. Turned out about like you would expect.

AI, artificial intelligence

A general term for several kinds of work that attempt to make machines think. The more mathematical have had some success (e.g. in computer vision).

Algol

A programming language initially designed in 1958 by a committee (bad) of very smart (good) people. Rarely used to write programs, but had a great influence on succeeding languages.

algorithm

A method for doing something. Recipes are examples of algorithms.

alphanumeric characters

Letters and digits.

API

Application Program Interface. The list of commands an operating system or library will accept from applications.

APL

An extremely succinct language designed in the early 1960s by Ken Iverson. Used especially in numerical applications. Its modern descendant is J.

application

A program that is not infrastructure. E.g. a word processor, but not an operating system. Not a precise term.

Arc

A vaporware Lisp dialect.

array

What in school you called a matrix: an n-dimensional collection of numbered pigeonholes for storing data.

ASP

Application Service Provider. A company that lets you use software on their computers via a network, as opposed to installing and running the software on your own computer.

assembly language

A more programmer-friendly form of machine language. The commands are the same but you can use more convenient names.

B&D language

Bondage & discipline language. A language that makes the programmer follow strict rules.

bandwidth

The rate at which a connection can transmit data.

Bayesian

Using Bayes’s Rule, which says how to combine statistical evidence.

binary

When used with an article (e.g. “a binary”), object code. When used without an article, a way of representing numbers in base 2 instead of the more familiar base 10. Successive digits (starting from the right) represent powers of two instead of powers of ten. So 101, in binary, represents the number we write as 5 in decimal. Most computers represent data in binary, because it’s easier to design circuits with two states (on or off) than ten.

bit manipulation

Performing simple transformations to large areas of a computer’s memory. For example, moving a window on the screen.

bloatcode

A programmer who makes programs longer than they should be.

block-structured

Describes a language in which programs have subsidiary parts instead of simply being a list of commands.

Blub Paradox

The inability to understand the power of programming languages more powerful than the ones you’re used to thinking in.

bottom-up programming

A style of programming that works from the other direction than the earlier top-down style. Instead of subdividing a task down into smaller units, you build a “language” of ideas up toward your task. The two techniques can be combined.

bound

Constrained by a particular resource. E.g. I/O-bound, memory-bound, CPU-bound.

branch

A machine language goto command.

Brooks’s Hypothesis

That the number of lines of code programmers can produce per day is constant, regardless of the of the language they’re using.

bug

A mistake in a program. Predates computers; in the early twentieth century it was common to speak of “ironing out the bugs” in a Broadway play.

buffer

A segment of memory used to hold a sequence of data the program expects as input, or is accumulating for output.

buffer overflow attack

See Notes.

byte code

Any language like machine language, but not of any specific computer. Because byte code is like machine language, it is easy to write a byte code interpreter, which reads byte code programs and executes the corresponding machine language commands.

C

A beautifully simple language developed by Dennis Ritchie in the early 1970s. Widely used in infrastructure like operating systems and routers.

C++

An attempt to add object-oriented capabilities to C, designed by Bjarne Stroustrup in 1983. Popular because its syntax is like C’s, and it can be intermixed with C programs.

CGI script

Common Gateway Interface script. A program that a web server runs when it needs to compute something (e.g. search results) rather than just sending you a pre-existing web page. The key limitation of CGI scripts is that they generate only one page before terminating, rather than remaining in memory and having an ongoing conversation with the user, like desktop software.

checksum

A way of summing up all the information in a file to get one number that can be used to identify it. One (not very good) way to calculate a checksum, for example, would be to use the number of characters.

circular definition

See infinite loop.

class

In object-oriented programming, a data type.

click trail

The series of HTTP requests sent to a web server by one specific user. Usually equates to the series of web pages they visited.

client

A computer or device that submits requests to a server.

Cobol

A primitive language designed in the early 1960s for use in business applications. Only recently succeeded by Java as the most popular language.

code

When unqualified, source code.

collocated

Located, especially at an ISP.

comment

Part of a program that is ignored by the computer. Usually inserted as an annotation for human readers.

Common Lisp

A popular dialect of Lisp designed by a committee in the 1980s.

compiler

A program that translates programs written in a more powerful, succinct language (a high-level language) into the simpler commands (machine language) that the computer hardware understands. See also: interpreter.

complexity

The time complexity of an algorithm is how fast the time required to complete it grows as the size of the input grows. For example, if you have to search a room for a specific person by looking at each in turn, the time required to find him will be proportionate to the number of people. Such an algorithm is called O (n), meaning it takes time proportionate to n, the size of the data. Whereas if you wanted to find the two people in the room who looked most like siblings, you’d probably take time proportionate to the square of the number of people, because you might have to compare every pair, and the number of pairs is the square of the number of people. Such an algorithm is O (n 2).

conditional

A high-level language expression (or statement) in which different code is executed depending on whether or not some condition is true. For example: if it is sunny, then go for a walk, otherwise stay inside and read.

content-based filtering

Filtering email based on what it says, rather than, for example, where on the Internet it came from.

CPU

Central Processing Unit. The part of a computer, usually now a single chip, where computations are carried out. The concept is growing blurred, because there are now processors within e.g. graphics cards and hard disks.

crash

When a bug causes an operating system or application to stop working. Or, when applied to hard disks, a hardware malfunction.

cruft

Debris.

cycle

The minimum time required to execute a machine instruction. A computer with a clock speed of 1 GHz has a billion cycles per second, meaning it can execute up to a billion machine instructions per second.

DARPA

Defense Advanced Research Projects Agency. Has funded much of the computer research in the United States.

data structure

A format for data with multiple parts. For example, you could use one consisting of a pair of numbers to represent points on a graph.

data type

A category of data that a language can deal with. Typical data types include integers (1), floating-point numbers, which in school you called decimals (1.234), and character strings (”monster“).

dynamic typing

The opposite of static typing.

debugging

Finding and fixing mistakes in a program.

declaration

An element of a program that is more of a description than a command. The most common are type declarations, where you say what type of values a variable may have.

deprecated

Said of practices supported by a standard whose authors now wish they had not allowed them.

design war

A competition where the best design wins, rather than e.g. marketing or control of sales outlets.

device driver

Component of an operating system that knows how to talk to a specific device, like a printer.

diff

An unselective and microscopically thorough comparison between two versions of something. From the Unix diff utility, which compares files.

embedded language

A language defined within another language, usually for a specific kind of problem. For example, if you define a series of commands for manipulating images, you can start to think of them as a language for manipulating images. See bottom-up programming.

end user

Euphemism for unsophisticated user.

environment

Software to help in writing programs, e.g. editors and profilers.

expression

A quantum of code that when executed yields a value. E.g. the expression 2+3 will yield 5.

field

One of the parts of a data structure.

file

A sequence of characters or binary digits, usually stored on disk.

Fortran

A programming language widely used for numerical applications. Originally designed by a group at IBM in 1956, it has evolved greatly since.

FreeBSD

An open source dialect of Unix.

freeware

Software distributed for free.

function

A subroutine that, when called, yields a value, which becomes the value of the call. In some languages, functions are a data type.

garbage collection

Recovering memory that is no longer needed by a program automatically, instead of requiring the programmer to explicitly (and often mistakenly) declare when he is finished using it.

glue program

A program to sequence or move data between applications.

goto

A command that transfers control to another part of a program. Because there is no mechanism for returning to a goto, as there is to a subroutine call, programs that use gotos tend to become spaghetti. Rare now.

Greenspun’s Tenth Rule

“Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp."

hack

A solution that somehow breaks the rules. Can be either good or bad.

hacker

(1) A good programmer. (2) Someone who breaks into computers.

hash table

A data structure like a database in which you can store chunks of data under individual keys and later retrieve the data stored under a given key.

headers

The part at the top of an email containing information about it. The average user sees only the From, To, Date, Subject, and Cc lines, but there are others describing e.g. the path the email took.

heuristic

Rule of thumb.

high-level

Substantially more abstract than machine language.

HTML

HyperText Markup Language. The notation used to express web pages.

HTTP

HyperText Transfer Protocol. The protocol that web browsers and servers use to communicate with one another.

indented

Like an outline, source code is indented to show its structure. When code says to do a list of things n times, for example, the list of things is usually indented to show that it’s within a loop. In most languages indentation is something you add to make programs easier to read, but in some (e.g. Python) it is significant, meaning it affects the behavior of the program.

infinite loop

See circular definition.

interpreter

Like a compiler, an interpreter accepts programs written in a high-level language, but instead of translating the whole program into machine language and then running that, the interpreter examines the program one piece at a time and executes the corresponding machine language commands.

inner loop

Part of a program that gets executed particularly often.

instrument

To modify a program to keep track of everything it does, so that if it’s slow or uses too much memory, you can find out why.

Intel box

A computer with an Intel processor.

I/O

Input and output. Usually, printing and reading characters or binary data.

IT

Information Technology. Computer infrastructure, or the people in charge of maintaining it. Term used mainly in big or non technical companies.

Java

An attempt at a better C++ by James Gosling. Originally called Oak, it was renamed Java by Sun when they adopted it in the hope of inserting a Sun-controlled layer between operating systems and applications. That didn’t work, but Java is popular anyway, partly due to Sun’s huge marketing effort, and partly because there is demand for a better C++.

Javascript

A scripting language for web browsers designed by Brendan Eich. It has no intrinsic connection to Java, which is in most ways inferior. Unduly maligned because it is used mainly to do cheesy things on web sites.

kludge

A bad hack. (Rhymes with stooge.)

larval startup

A startup in the earliest phase, when the potential founders are not sure they want to start a company.

legacy software

Software an organization still needs, which is not written the way they wish it were, and which they can’t afford to or don’t dare to rewrite.

lexical closure

A function that refers to a variable defined not within it, but in the surrounding code. The accumulator generators on Section 13.7 yield closures.

LFSP

Language for Smart People. A language that puts power over safety.

library

A collection of existing code for performing a specific task.

Linux

An open source dialect of Unix. Called GNU Linux by the fastidious, because while the kernel (the innermost part) was written by Linus Torvalds, more of the code comes from Richard Stallman’s GNU Project.

Lisp

A family of languages deriving from one John McCarthy discovered in the late 1950s. The two best known dialects are Common Lisp and Scheme. Recent open source languages contain increasing amounts of Lisp DNA.

list

A series of pieces of data, often of varying types, which can be joined together like trains to make bigger lists.

literal representation

A way of referring directly to data in a high-level language. In most languages, the literal representation of five is 5. (The expression 2+3 has the same value, but is not a literal representation.)

low-level

Less abstract; allowing only simple commands, like machine language.

machine instruction

One machine language command.

machine language

The list of commands a processor knows how to obey. Also, a sequence of such commands.

macro

A program that generates programs. The means for doing this vary between languages, so a “macro” in one language may mean something much more powerful than in another.

mainframe

A big computer based on designs from the 1960s and 70s.

math envy

The worry that one is not as smart as mathematicians, especially when manifested in work with a gratuitously mathematical flavor.

metacircular

When the interpreter of a language is written in that language. More a technique for describing languages than implementing them.

method

In object-oriented programming, a subroutine considered as a property of some class of things. For example, the area method of the circle class might be a subroutine for calculating the areas of circles.

module

A group of subroutines and variables considered as a unit. Generally only specifically noted ones are accessible to code outside the module.

Moore’s Law

The official version of Moore’s Lawis that the number of transistors on a chip doubles every two years. But most people use the term to mean that processors get twice as fast every 18 months. Arguably more business plan than law, because Gordon Moore was a founder of Intel.

number crunching

Performing straightforward operations on large amounts of numerical data.

object

A term with many meanings. In the most general sense, an instance of a data type. E.g. a particular string, or a particular integer.

object code

Machine language, as the output of a compiler.

OO, object-oriented

A way of organizing programs so that the code for performing a certain task on different classes of data is broken up into separate pieces (methods) for each. See Section 10.7.

Occam’s Razor

That one should prefer the simpler of two theories.

open source

Software whose source code is freely distributed and can be modified by anyone, usually on the condition that the modifications also be made freely available. Linux and FreeBSD are well-known open source operating systems.

orthogonal

Independent of one another and therefore combinable in many ways. Classic Lego is more orthogonal than a plastic model kit.

OS, operating system

The program that controls the running of other programs. Unix, FreeBSD, Linux, OSX, and the Windows family are operating systems.

optimization

Changing a program to make it more efficient.

parallel computer

A computer whose hardware can perform multiple computations simultaneously. Not a sharply delineated category, because all modern processors use some amount of parallelism to increase speed.

Parkinson’s Law

That the resources required to complete a task will expand to consume the resources available.

parser

A program that reads input and produces a parse tree.

parse tree

The data structure into which a compiler translates the characters that make up your program, as the first stage of translating it into machine language.

Pascal

Algol derivative designed in the early 1970s by Niklaus Wirth.

patch

A piece of code released to fix a flaw in an earlier program.

PDA

Personal Digital Assistant. A small computer you carry with you. Usually has an easier but more limited interface than a regular computer.

Perl

An open source language developed by Larry Wall. Initially intended for manipulating strings of characters, it became popular because this is a large part of what programmers do. Famous for its complex (but concise) syntax, and its rapid and promiscuous evolution.

pipe

A way of joining operating system commands so that the output of one becomes the input of another.

pointer

A piece of data whose value is the location in memory of another.

pointer arithmetic

Finding things in memory by adding certain amounts to already known locations. A low-level technique.

pointy-haired boss

Character in the cartoon strip Dilbert by Scott Adams. Generically, an inept and overbearing middle manager.

polynomial

When applied to growth, means that y grows as a power of x, e.g. as the square or cube of x. The resulting curve gets steeper over time.

portable

Able to be moved to new hardware. Programs written in high-level languages are (more) portable than machine language programs, because they assume (almost) nothing about the hardware.

portal

Web site.

premature design

Deciding too early what a program should do.

premature optimization

Tuning a program for performance before you’re finished writing it. The software equivalent of marrying young.

process

In an operating system that can control multiple programs at once (as all modern OSes can), one of those programs.

programming language

A high-level language is what the compiler uses as input to generate object code. (Just kidding; see Chapter 10.)

profiler

A program that watches your program while it’s running and tells you which parts consume most resources. See inner loop.

pseudocode

A language for expressing algorithms “on paper” rather than to computers. Arguably, this whole concept is an artifact of using languages that are too low-level.

Python

An open source language developed by Guido van Rossum. Strongly object-oriented in flavor, it is seen by fans as a cleaner alternative to Perl.

QA

Quality Assurance. In software, people who detect and catalog bugs.

recursive

An algorithm that refers to itself. A policeman’s algorithm for interrogating people is recursive: ask the person if they know about the crime, or if they know anyone who does, and if they do, interrogate them too.

RAID

Redundant Array of Independent Disks. A piece of hardware that uses multiple hard disks to simulate one hard disk that (in theory) never crashes.

read-eval-print loop

A toplevel.

regular expression

A pattern used like a sieve to retrieve elements of strings.

RISC

Reduced Instruction Set Computer. A computer whose machine language commands do little, but run fast. The aim is to make a better target for compilers, in the same way fine granularity film yields sharper images.

Ruby

A newer open source competitor for Perl and Python developed by Yukihiro “matz” Matsumoto.

scan

To look at a series of characters and divide it up into tokens.

Scheme

An elegant but prim dialect of Lisp designed by Guy Steele and Gerry Sussman in 1975.

scripting language

A language used to customize a program. Sometimes open source languages like Perl and Python are called scripting languages, but this usage is meaningless.

server

A computer on a net work that responds to requests from other computers.

SETI@home

Search for Extra-Terrestrial Intelligence etc. A project to search the electromagnetic background for signals from other life forms, using the spare cycles of desktop computers connected to the Internet.

s-expression

A token, or zero or more s-expressions enclosed in parentheses.

Smalltalk

The canonical object-oriented language, designed by Alan Kay in 1972.

socket

In Unix, a channel through which processes can communicate across a network.

software engineer

A formal term for programmer.

spaghetti

Code whose structure has so many twists and turns that no one can understand it, including the author.

spam

Unsolicited mass email, usually advertising. From a Monty Python skit in which Vikings drown out conversation with choruses of “Spam, Spam, Spam.”

spec

Specification. An informal description of what a program should do.

SSH

Secure SHell. A program for connecting securely to a remote computer.

SSL

Secure Sockets Layer. A protocol for transmitting data securely over the Web.

state machine

A theoretical machine that can be in some set of possible states, with connections between states when certain conditions are true.

statement

A quantum of code that does not yield a value. To be any use it must thus have some effect, e.g. print something. Arguably, this whole concept is a mistake; in some languages there are only expressions.

static typing

A language is statically typed if the type of value that every variable can have has to be known at the time the program is written.

string

A sequence of characters, usually denoted "like this“.

subroutine

A distinct chunk of code. When at some point in a program you want to run this code, you call it, and when the subroutine is finished, control returns to the point where the call occurred. In a cookbook, a recipe for making icing might be a subroutine of a cake recipe, and the call might be “make icing using the recipe on page x.”

subset

A concept included in another. Baking is a subset of cooking.

suits

Nontechnical people, especially managers. Derives from the clothes they wore before they started dressing like hackers during the 1990s.

symbol

A data type whose instances are tokens. Like strings except (a) a symbol is a single unit, not a sequence of characters, and (b) there is generally only one symbol with a given name, whereas there might be several strings containing the same characters.

syntax

The form used to express the ideas in a program. To give x the value 10, different languages might say x=10, x<-10,or (=x 10).

system administrator

Someone who installs computer hardware and software and keeps networks running properly.

system administrator disease

The implicit belief by system administrators that the infrastructure they oversee is an end in itself, rather than a tool there for users. More generally, the attitude that customers are a nuisance, rather than the reason your job exists. Endemic in jobs not exposed to competition.

throwaway program

A program written to satisfy some temporary need.

token

A sequence of characters as one unit. A more general term for “word.”

toplevel

An interface to a programming language in which you have an ongoing conversation with the language, as you do with Unix, rather than simply compiling programs and then running them.

tree

A data structure each instance of which can refer to two or more other instances. For example, a family tree.

Turing-complete

A language is Turing-complete if any program written in it can be translated into a Turing machine program and vice versa. All programming languages are Turing-complete, meaning they are all (in a theoretical sense) equivalent in power. Aka Turing-equivalent.

Turing machine

A simple imaginary computer whose properties are used to prove theorems about computation. It is currently believed that you can’t get anything more powerful, in the sense that you can’t define a computer whose programs couldn’t be translated into Turing machine programs. But no one can say for sure, because “computer” isn’t formally defined.

type

Data type.

UDP

A protocol for broadcasting information on networks.

UI

User Interface.

Unix

The operating system from which most current ones derive. The term is used both generically and is a trademark of a company that ended up with the rights to an early variant. Originally developed at Bell Labs by Ken Thompson and Dennis Ritchie in the early 1970s.

vector

A one dimensional array; a sequence.

uptime

Percentage of time a computer, particularly a server, is doing what it is supposed to. Also, the time since a computer last crashed.

URL

Uniform Resource Locator. The address of a web page. More precisely, a request to a web server, usually for a web page, but possibly to run a program (e.g. a web search).

vaporware

Software that is talked about but not yet available.

VC, venture capitalist

One who supplies money to start or refinance a company in return for some of the stock.

version 1.0

The very first version of something, with the implication that it will be incomplete or broken.

VT100

A popular computer terminal in the 1980s.

web server

A server that responds to HTTP requests.

wedged

In an unresponsive state. Said especially of servers.

wysiwyg

“What you see is what you get.” (Pronounced whizzy wig.) E.g. a word processor where what you see on the screen looks like the page that will come out of your printer.

XML

A format for organizing data.

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

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