-
Notifications
You must be signed in to change notification settings - Fork 32
/
glossary.tex
777 lines (603 loc) · 33.2 KB
/
glossary.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
\chapter{Glossary}\label{s:gloss}
\begin{description}
\gitem{g:absolute-path}{absolute path}
A path that points to the same location in the filesystem regardless of where
it's evaluated. An absolute path is the equivalent of latitude and longitude
in geography. See also \grefcross{g:relative-path}{relative path}.
\gitem{g:aggregation-function}{aggregation function}
A function that combines many values into one, such as \texttt{sum} or \texttt{max}.
\gitem{g:alias}{alias}
A second or subsequent name referring to the same data or function.
\gitem{g:anonymous-function}{anonymous function}
A function that is defined without giving it a name, such as a callback
defined where it is used. Anonymous functions are sometimes called \emph{lambda
functions} because the Greek letter lambda is used for them in mathematics.
\gitem{g:api}{Application Programming Interface (API)}
the set of functions that a library or web service makes available for other code to use.
\gitem{g:argument}{argument}
see \grefcross{g:parameter}{parameter}.
\gitem{g:array}{array}
A collection of values stored in a particular order and indexed numerically.
Arrays are written as comma-separated values in square brackets, such as
\texttt{['a',\ 'b',\ 'c']}. The term \grefcross{g:list}{list} is often used synonymously.
\gitem{g:ascii}{ASCII}
A widely-used set of numeric codes for representing characters from the Latin
alphabet and common punctuation symbols, now superseded by
\grefcross{g:unicode}{Unicode}.
\gitem{g:assertion}{assertion}
A statement that something is true at a certain point in a program.
Assertions are often used to define tests,
but are also used in \grefcross{g:production-code}{production
code} to check that software is behaving as it should.
\gitem{g:attribute}{attribute}
A named property attached to an HTML \grefcross{g:element}{element}.
\gitem{g:backward-compatible}{backward-compatible}
Able to work consistently with older systems.
\gitem{g:body-http}{body (of an HTTP message)}
any optional data sent after the message's headers.
\gitem{g:body-statement}{body (of a statement)}
The statements in a program that are nested within or controlled by another statement,
such as those making up a function or those that are only executed
if the \grefcross{g:condition}{condition} of an \texttt{if} is true.
\gitem{g:boolean}{Boolean}
A value that can be either true or false,
named after the English mathematician George Boole (deceased).
\gitem{g:bundler}{bundler}
A tool that combines JavaScript files, web pages, images, and other assets
into a single bundle for deployment.
\gitem{g:cache}{cache}
A place where copies of recently-used values are stored for quicker access.
\gitem{g:call-stack}{call stack}
A data structure that stores information about function calls that are
currently in progress. Each function call adds another table of
variable-value pairs to the top of the stack; when the function completes,
that table is discarded. See also \grefcross{g:closure}{closure}.
\gitem{g:callback-function}{callback function}
A function A that is passed to another function B for B to call at a later
time. Callback functions are used to implement delayed actions, such as what
to do when data arrives in response to a network request.
\gitem{g:css}{Cascading Style Sheets (CSS)}
A way to describe how HTML should be rendered.
\gitem{g:catch}{catch}
To take responsibility for handling an \grefcross{g:exception}{exception}.
Catch is the counterpart of \grefcross{g:throw}{throw}.
\gitem{g:cc-by}{Creative Commons--Attribution License (CC-BY)}
A license that allows people to re-use work as long as they cite its
original source.
\gitem{g:character-encoding}{character encoding}
A specification of how characters are stored as bytes. The most commonly-used
encoding today is \grefcross{g:utf-8}{UTF-8}.
\gitem{g:child-class}{child class}
A new \grefcross{g:class}{class} that \grefcross{g:extend}{extends} an existing class (called
the \grefcross{g:parent-class}{parent class}).
\gitem{g:child-node}{child node}
A \grefcross{g:node}{node} in a \grefcross{g:tree}{tree} that is below some other node (which is
called the child node's \grefcross{g:parent-node}{parent}).
\gitem{g:class}{class}
A programming structure that defines the properties and behavior of a family
of related \grefcross{g:object}{objects}. Classes can \grefcross{g:inherit}{inherit} from other
classes to specify or change behavior incrementally.
\gitem{g:client}{client}
A program such as a browser that sends requests to a \grefcross{g:server}{server} and
does something with the response. It is sometimes helpful to think of clients
as sorcerers petitioning ancient gods for favors. Sometimes.
\gitem{g:client-page-gen}{client-side page generation}
To create an HTML page within a \grefcross{g:client}{client} using data provided by a
\grefcross{g:server}{server}. See also \grefcross{g:server-page-gen}{server-side page
generation}.
\gitem{g:closure}{closure}
A set of variables defined in the same \grefcross{g:scope}{scope} whose existence has
been preserved after that scope has ended. Closures are one of the trickiest
ideas in programming.
\gitem{g:component}{component (in React)}
A user-defined ``tag'' associated with a call to a function that generates HTML.
\gitem{g:condition}{condition}
The logical test that controls whether or not the \grefcross{g:body-statement}{body}
of an \texttt{if} statement executes or not.
\gitem{g:constructor}{constructor}
A ``method'' that is automatically called to initialize an object when it is created.
\gitem{g:csv}{Comma-Separated Values (CSV)}
A text format for tabular data in which each record is one row and fields are
separated by commas. There are many minor variations, particularly around
quoting of strings.
\gitem{g:connection-manager}{connection manager}
An object that maintains a connection to a database. When the code is
finished working with the database, the connection manager ensures that the
connection is closed gracefully, which helps to avoid the corruption of data.
\gitem{g:cdn}{Content Delivery Network (CDN)}
A geographically distributed set of servers that store commonly-used or
recently-used data such as web pages so that they can be served more quickly.
\gitem{g:constant}{constant}
a variable whose value cannot be changed. Note that the value itself might be
changed: for example, after the statement \texttt{const\ v\ =\ ['a',\ 'b']}, the name \texttt{v}
will always refer to the same array, but the array's contents can be changed.
See also \grefcross{g:variable}{variable}.
\gitem{g:cors}{Cross-Origin Resource Sharing (CORS)}
A way to control requests made for data and other resources that aren't served
by the site that gave the browser the original page.
\gitem{g:dataframe}{dataframe}
A data structure designed to store tabular data.
A dataframe has zero or more named columns
and zero or more rows,
each of which has exactly one value for each column.
\gitem{g:declarative}{declarative programming}
A style of programming in which the user specifies what they want, and the
computer figures out how to deliver it.
\gitem{g:deployment}{deployment}
The act of making software available for others to use.
\gitem{g:destructuring}{destructuring}
a form of assignment that unpacks a data structure in one step,
such as \texttt{[a,\ b] = [1,\ 2]} or \texttt{\{left,\ right\} = \{left:\ 1,\ right:\ 2\}}.
\gitem{g:dns}{Domain Name System (DNS)}
A decentralized naming system for computers that translates logical names such
as \texttt{third-bit.com} into the addresses of particular computers.
\gitem{g:document}{document}
An entire HTML page.
\gitem{g:dom}{Document Object Model (DOM)}
A standard way to represent HTML in memory. The \grefcross{g:element}{elements} and
\grefcross{g:attribute}{attributes} of the page, along with its text, are stored as
\grefcross{g:node}{nodes} organized in a tree.
\gitem{g:dotted-notation}{dotted notation}
A common way to refer to the parts of structures in programming languages.
\texttt{whole.part} means ``the thing called \texttt{part} belonging to \texttt{whole}''.
\gitem{g:driver}{driver}
A program that provides a standard interface through which to communicate with
another piece of hardware or software. Every graphics card has a driver that
translates generic drawing commands into card-specific operations; every
database comes with drivers that (theoretically) allow other programs to talk
to them all in the same way.
\gitem{g:element}{element}
An individual component of a web page. In HTML, elements are enclosed in
matching \texttt{\htmltag{tag}} and \texttt{\htmltag{/tag}} pairs,
or written as \texttt{\htmltag{tag/}} if they contain no content.
Elements are represented as \grefcross{g:node}{nodes} in the \grefcross{g:dom}{DOM}.
\gitem{g:entry-point}{entry point}
A function with a known name and \grefcross{g:signature}{signature} that a framework
requires every plugin or other dynamically-loaded content to have. The entry
point is (as the name suggests) how the framework gets into the plugin.
\gitem{g:escape-sequence}{escape sequence}
A sequence of characters used to represent some other character that would
otherwise have a special meaning. For example, the escape sequence \texttt{\textbackslash{}"} is
used to represent a double-quote character inside a double-quoted string.
\gitem{g:event-handler}{event handler}
A \grefcross{g:callback-function}{callback function} that does something in response to
a particular interaction with a browser, such as a key being pressed or a link
being clicked.
\gitem{g:event-listener}{event listener}
see \grefcross{g:event-handler}{event handler}.
\gitem{g:event-loop}{event loop}
The fundamental processing cycle in JavaScript that takes the next task from a
list and runs it, possibly adding more tasks to the list as it does so.
\gitem{g:event-object}{event object}
An \grefcross{g:object}{object} that the system passes to an \grefcross{g:event-handler}{event
handler} that contains information about the event, such as
which key was pressed.
\gitem{g:exception}{exception}
An object that stores information about an error or other unusual event in a
program. One part of a program will create and \grefcross{g:throw}{throw} an exception
to signal that something unexpected has happened; another part will
\grefcross{g:catch}{catch} it.
\gitem{g:extend}{extend}
To create a new class from an existing class. We say that the new class
\grefcross{g:inherit}{inherits} from the old one.
\gitem{g:external-style-sheet}{external style sheet}
A set of \grefcross{g:css}{CSS} definitions placed in an external file
rather than inside a web page.
See also \grefcross{g:internal-style-sheet}{internal style sheet}.
\gitem{g:falsy}{falsy}
A horrible neologism meaning ``equivalent to false''. See also the equally
horrible \grefcross{g:truthy}{truthy}.
\gitem{g:fat-arrow}{fat arrow function}
A function defined using \texttt{(\emph{parameters})\ ={\textgreater}\ \{\emph{body}\}}.
Fat arrow functions treat the special value \texttt{this} in a less
inconsistent way than their older equivalents.
\gitem{g:field}{field}
A named part of a \grefcross{g:record}{record} in a \grefcross{g:relational-database}{relational
database}. Fields are typically shown as columns in a
\grefcross{g:table}{table}.
\gitem{g:fixture}{fixture}
The data on which a \grefcross{g:unit-test}{unit test} is run.
\gitem{g:functional-programming}{functional programming}
A style of programming in which data is transformed through successive
application of functions, rather than by using control structures such as
loops. Functional programming in JavaScript relies heavily on
\grefcross{g:callback-function}{callbacks} and \grefcross{g:higher-order-function}{higher-order
functions}.
\gitem{g:global-installation}{global installation}
A JavaScript library placed in a location where it can be accessed by all
users and projects. See also \grefcross{g:local-installation}{local installation}.
\gitem{g:global-variable}{global variable}
A variable defined outside any particular function, which is therefore visible
to all functions. See also \grefcross{g:local-variable}{local variable}.
\gitem{g:gpl}{GNU Public License (GPL)}
A license that allows people to re-use software as long as they distribute
the source of their changes.
\gitem{g:header-row}{header row}
If present, the first of a \grefcross{g:csv}{CSV} file that defines column names (but
tragically, not their data types or units).
\gitem{g:heterogeneous}{heterogeneous}
Having mixed type. For example, an \grefcross{g:array}{array} is said to be
heterogeneous if it contains a mix of numbers, character strings, and values
of other types. See also \grefcross{g:homogeneous}{homogeneous}.
\gitem{g:higher-order-function}{higher-order function}
A function that operates on other functions. For example, the higher-order
function \texttt{forEach} executes a given function once on each value in an
\grefcross{g:array}{array}.
Higher-order functions are heavily used in \grefcross{g:functional-programming}{functional programming}.
\gitem{g:homogeneous}{homogeneous}
Having a single type. For example, an \grefcross{g:array}{array} is said to be
homogeneous if it contains only numbers or only character strings, but not a
mix of the two.
\gitem{g:hostname}{hostname}
The part of a URL that specifies the computer to talk to. In the URL
\texttt{http://example.com/something/}, the hostname is \texttt{example.com};
in the URL \texttt{http://localhost:1234/}, it is \texttt{localhost}.
\gitem{g:http}{HyperText Transfer Protocol (HTTP)}
The HyperText Transfer Protocol used to exchange information between browsers
and websites, and more generally between other \grefcross{g:client}{clients} and
\grefcross{g:server}{servers}. HTTP is a \grefcross{g:stateless}{stateless} protocol in which
communication consists of \grefcross{g:http-request}{requests} and
\grefcross{g:http-response}{responses}.
\gitem{g:http-header}{HTTP header}
A name-value pair at the start of an HTTP \grefcross{g:http-request}{request} or
\grefcross{g:http-response}{response}. Headers are used to specify what data formats
the sender can handle, the date and time the message was sent, and so on.
\gitem{g:http-method}{HTTP method}
The verb in an \grefcross{g:http-request}{HTTP request} that defines what the client
wants to do. Common methods are \texttt{GET} (to get data) and \texttt{POST} (to submit
data).
\gitem{g:http-request}{HTTP request}
A precisely-formatted block of text sent from a \grefcross{g:client}{client} (such as a
browser) to a \grefcross{g:server}{server} that specifies what resource is being
requested, what data formats the client will accept, and so on.
\gitem{g:http-response}{HTTP response}
A precisely-formatted block of text sent from a \grefcross{g:server}{server} back to a
\grefcross{g:client}{client} in reply to a \grefcross{g:http-request}{request}.
\gitem{g:http-status-code}{HTTP status code}
A numerical code that indicates what happened when an \grefcross{g:http-request}{HTTP
request} was processed, such as 200 (OK), 404 (not found), or
500 (internal server error).
\gitem{g:immutable}{immutable}
Data that cannot be changed after being created.
\gitem{g:in-memory-database}{in-memory database}
A database that is stored in memory rather than in permanent storage.
In-memory databases are often used for testing.
\gitem{g:inherit}{inherit}
To acquire properties and methods from a parent class. See also
\grefcross{g:extend}{extend}.
\gitem{g:inner-loop}{inner loop}
A loop contained in the \grefcross{g:body-statement}{body} of another loop.
See also \grefcross{g:nested-loop}{nested loop}.
\gitem{g:instance}{instance}
If an object \texttt{obj} is of a particular class \texttt{cls},
we say that \texttt{obj} is an instance of \texttt{cls}.
\gitem{g:instance-method}{instance method}
A method that is called using, and operates on, a particular object.
See also \grefcross{g:static-method}{static method}.
\gitem{g:internal-style-sheet}{internal style sheet}
A set of \grefcross{g:css}{CSS} definitions placed inside a web page rather than in an
external file.
See also \grefcross{g:external-style-sheet}{external style sheet}.
\gitem{g:json}{JavaScript Object Notation (JSON)}
A way to represent data by combining basic values like numbers and character
strings in \grefcross{g:array}{arrays} and name/value structures. The acronym stands
for ``JavaScript Object Notation''; unlike better-defined standards like
\grefcross{g:xml}{XML}, it is unencumbered by a syntax for comments or ways to define
\grefcross{g:schema}{schemas}.
\gitem{g:library}{library}
see \grefcross{g:module}{module}.
\gitem{g:list}{list}
see \grefcross{g:array}{array}.
\gitem{g:local-installation}{local installation}
A JavaScript library placed inside a particular project, and only accessible
within that project. See also \grefcross{g:global-installation}{global installation}.
\gitem{g:local-server}{local server}
A \grefcross{g:server}{server} run on the user's own computer, usually for testing
purposes during development.
\gitem{g:local-variable}{local variable}
A variable defined inside a function which is only visible within that
function. See also \grefcross{g:global-variable}{global variable} and
\grefcross{g:closure}{closure}.
\gitem{g:logging}{logging}
To record information about a program's execution in a structured way.
\gitem{g:logging-transport}{logging transport}
A channel through which \grefcross{g:logging}{logging} messages are sent, such as
standard output (for the user's screen) or a database connection.
\gitem{g:member-variable}{member variable}
see \grefcross{g:property}{property}.
\gitem{g:memory-diagram}{memory diagram}
A picture showing the variables a program contains and the data they refer to.
\gitem{g:method}{method}
A function attached to an \grefcross{g:object}{object}, typically called using \grefcross{g:dotted-notation}{dotted
notation}. In JavaScript and many other languages, a
special variable called \texttt{this} is provided to methods to refer to the
particular object for which the method is being called.
\gitem{g:method-chaining}{method chaining}
A style of programming in which each method call returns either the original object or a newly-constructed object
so that other method calls can be appended to create long chains of calculations.
Method chaining produces code that looks like \texttt{obj.a().b().c()}.
\gitem{g:minimization}{minimization}
To remove spaces and other extraneous characters from source files (and
possibly even rename variables). This makes those files smaller and faster to
deploy at the expense of readability.
\gitem{g:mit-license}{MIT License}
A license that allows people to re-use software with no restrictions.
\gitem{g:model}{model (of data)}
How data is stored.
See also \grefcross{g:view}{view}.
\gitem{g:module}{module}
A set of variables, functions, and/or classes grouped together for easier
management (typically but not always in a single file). Modules are sometimes
also called \grefcross{g:library}{libraries}.
\gitem{g:module-variable}{module variable}
A variable that is visible within a module but not outside it.
See also \grefcross{g:scope}{scope}.
\gitem{g:mutation}{mutation}
Changing data in place, such as modifying an element of an array or adding a
record to a database.
\gitem{g:name-collision}{name collision}
The ambiguity that arises when two or more things in a program that have the
same name are active at the same time. The \grefcross{g:call-stack}{call stack} was
invented in part to address this problem.
\gitem{g:nested-loop}{nested loop}
A loop that is contained in another loop. The \grefcross{g:inner-loop}{inner loop}
can run many times for each iteration of the \grefcross{g:outer-loop}{outer loop}.
\gitem{g:node-js}{Node}
An open source implementation of JavaScript for use outside the browser.
\gitem{g:node}{node}
An in-memory representation of an element in an HTML page
(not to be confused with \grefcross{g:node-js}{Node.js}).
See also \grefcross{g:dom}{DOM}.
\gitem{g:nosql-database}{NoSQL database}
Any database that doesn't use the \grefcross{g:relational-database}{relational} model.
The awkward name comes from the fact that such databases don't use
\grefcross{g:sql}{SQL} as a query language.
\gitem{g:nan}{Not a Number (NaN)}
A special value used to represent an invalid number,
such as the result of dividing zero by zero.
\gitem{g:object}{object}
A clump of variables and/or \grefcross{g:method}{methods} grouped together in a
program. In most languages, objects can only be created as instances of
\grefcross{g:class}{classes}, but JavaScript calls anything created using \texttt{\{...\}} an
object. Do not seek to walk in the footsteps of the sages; seek rather what
they sought.
\gitem{g:oop}{object-oriented programming (OOP)}
A style of programming centered around constructing self-contained objects
that communicate through well-defined (or at least ``defined'') interfaces.
\gitem{g:observer-observable}{observer-observable}
A widely-used programming pattern in which some \grefcross{g:object}{objects} are
notified and take action when other objects change state or take action.
\gitem{g:outer-loop}{outer loop}
A loop that contains another loop.
See also \grefcross{g:nested-loop}{nested loop}.
\gitem{g:override-method}{override}
to replace a definition of a \grefcross{g:method}{method} in a \grefcross{g:parent-class}{parent-class}
with a new definition in a \grefcross{g:child-class}{child class}.
\gitem{g:query-parameter}{query parameter}
A placeholder in an \grefcross{g:sql}{SQL} query that must be filled in with an actual
value in order for the query to run.
\gitem{g:package-manager}{package manager}
A program that does its best to keep track of the bits and bobs of software
installed on a computer. The most widely used package manager for JavaScript
is called NPM; it does its best, but really, without proper discipline on the
part of programmers, it's like Boromir trying to hold back the orcs or a
kindergarten teacher trying to keep everyone's shirt clean during
finger-painting.
\gitem{g:parameter}{parameter}
A variable whose value is passed into a function when the function is called.
Some writers distinguish parameters (the variables) from
\grefcross{g:argument}{arguments} (the values passed in), but others use the terms in
the opposite sense. It's all very confusing.
\gitem{g:parent-class}{parent class}
An existing \grefcross{g:class}{class} that has been \grefcross{g:extend}{extended} to create a
new class. (The new class is called the \grefcross{g:child-class}{child class}.)
\gitem{g:parent-node}{parent node}
The \grefcross{g:node}{node} in a \grefcross{g:tree}{tree} that is above some other node. Every
node has a parent except the \grefcross{g:root-node}{root node}.
\gitem{g:parse}{parsing}
To translate the text of a program or web page into a data structure in memory
that the program can then manipulate.
\gitem{g:polymorphism}{polymorphism}
Literally, ``having many forms''. The term refers to the way in which
\grefcross{g:object}{objects} whose \grefcross{g:method}{methods} have the same names and
\grefcross{g:parameter}{parameters} can be used interchangeably.
\gitem{g:port}{port}
A logical endpoint for communication, like a phone number in an office
building. In the URL \texttt{http://example.com:8081/something}, the port is \texttt{8081}.
Only one program may use a port at any time.
\gitem{g:production-code}{production code}
Software that is delivered to an end user. The term is used to distinguish
such code from test code, deployment infrastructure, and everything else that
programmers write along the way.
\gitem{g:promise}{promise}
A way to handle delayed computations in JavaScript. Promises were supposed to
make programmers' lives simpler.
\gitem{g:prototype}{prototype}
An idiosyncratic mechanism used in the original definition of JavaScript for
sharing properties between objects that we unfortunately still have to cope
with.
\gitem{g:property}{property}
A variable associated with an \grefcross{g:object}{object}. The term is used to
distinguish an object's passive data from its executable \grefcross{g:method}{methods}.
Properties are sometimes called \grefcross{g:member-variable}{member variables}.
\gitem{g:pseudo-random-number}{pseudo-random number}
A value generated in a repeatable way that has the properties of being truly
random.
\gitem{g:prng}{pseudo-random number generator}
A function that can generate a series of \grefcross{g:pseudo-random-number}{pseudo-random
numbers} after being initialized with a
\grefcross{g:seed}{seed}.
\gitem{g:cc-0}{public domain license (CC-0)}
A license that allows people to re-use material however they want
with no restrictions and no requirement of attribution.
\gitem{g:race-condition}{race condition}
A situation in which the result of a computation can vary due to operations
being performed in different orders.
\gitem{g:raise}{raise}
see \grefcross{g:throw}{throw}.
\gitem{g:refactor}{refactor}
To reorganize or clean up code in a way that doesn't change its behavior.
\gitem{g:repl}{read-evaluate-print loop (REPL)}
An interactive program that reads a command typed in by a user, executes it,
prints the result, and then waits patiently for the next command. REPLs are
often used to explore new ideas or for debugging.
\gitem{g:record}{record}
A set of related values. In a \grefcross{g:relational-database}{relational database},
a record is typically shown as a single row in a \grefcross{g:table}{table}.
See also \grefcross{g:field}{field}.
\gitem{g:regular-expression}{regular expression}
A pattern for matching text, written as text itself. Regular expressions
are sometimes called ``regexp'', ``regex'', or ``RE'', and are as powerful as
they are cryptic.
\gitem{g:relational-database}{relational database}
A database that organizes information into \grefcross{g:table}{tables}, each of which
has a fixed set of named \grefcross{g:field}{fields} (shown as columns) and a variable
number of \grefcross{g:record}{records} (shown as rows). See also \grefcross{g:sql}{SQL}.
\gitem{g:relative-path}{relative path}
A path whose destination is interpreted relative to some other location, such
as the current directory. A relative path is the equivalent of giving
directions using terms like ``straight'' and ``left''. See also \grefcross{g:absolute-path}{absolute
path}.
\gitem{g:responsive-design}{responsive design}
An approach to building web pages and other applications that resizes and
reorganizes things smoothly for different sizes of screens.
\gitem{g:rgb}{RGB}
A way to represent colors as triples of red, green, and blue intensities, each
of which ranges from 0 to 255. RGB is often augmented in modern systems to
create RGBA, where the fourth component is the pixel's transparency.
\gitem{g:root-node}{root}
The only node in a \grefcross{g:tree}{tree} that \emph{doesn't} have a \grefcross{g:parent-node}{parent}.
\gitem{g:root-directory}{root directory}
The directory that contains everything else, directly or indirectly. The root
directory is written \texttt{/} (a bare forward slash).
\gitem{g:root-element}{root element}
The \grefcross{g:element}{element} in a document that contains every other element.
The root element of a web page is the \texttt{html} element.
\gitem{g:schema}{schema}
A specification of the ``shape'' of data, such as the \grefcross{g:field}{fields} making
up a database table or the ways in which structures can be nested in
\grefcross{g:json}{JSON}.
\gitem{g:scope}{scope}
The portion of a program within which a definition can be seen and used.
See also \grefcross{g:global-variable}{global-variable},
\grefcross{g:local-variable}{local-variable},
\grefcross{g:module-variable}{module-variable}, and (if you are brave)
\grefcross{g:closure}{closure}.
\gitem{g:seed}{seed}
A value used to initialize a \grefcross{g:prng}{pseudo-random number generator}.
\gitem{g:selector}{selector}
A way to identify elements within an HTML document. The selector
\texttt{h2\#contents}, for example, means ``the \texttt{h2} element with the ID \texttt{contents}''.
\gitem{g:server}{server}
A program that waits for requests from \grefcross{g:client}{clients} and sends them
data in response. It is sometimes helpful to think of servers as harassed
parents trying to babysit a room full of unruly children.
\gitem{g:server-page-gen}{server-side page generation}
To create an HTML page on a server. That HTML is then delivered as-is to a
browser for display. See also \grefcross{g:client-page-gen}{client-side page
generation}.
\gitem{g:spread-syntax}{spread syntax}
The \texttt{...} in \texttt{...some\_array},
which means ``interpolate the values of the array in place''.
\gitem{g:sql}{SQL}
The language used for writing queries for \grefcross{g:relational-database}{relational
databases}. The term was originally an acronym for
Structured Query Language.
\gitem{g:signature}{signature}
The ordered list of argument data types required by a function or
\grefcross{g:method}{method}. If two functions or methods have the same signature,
they can be called in the same way.
\gitem{g:stateful}{stateful}
To retain information from one operation to the next.
\gitem{g:stateless}{stateless}
To \emph{not} retain information from one operation to the next.
\gitem{g:static-method}{static method}
one that belongs to the class as a whole rather than to objects of that class.
Static methods are often used to implement helper methods for classes.
See also \grefcross{g:instance-method}{instance method}.
\gitem{g:string}{string}
A block of text in a program. The term is short for ``character string''.
\gitem{g:string-interpolation}{string interpolation}
The process of inserting text corresponding to specified values into a string,
usually to make output human-readable.
\gitem{g:table}{table}
A set of uniformly-formatted \grefcross{g:record}{records} in a \grefcross{g:relational-database}{relational
database}. Tables are usually drawn with rows (each
of which represents one record) and columns (each of which represents a
\grefcross{g:field}{field}).
\gitem{g:tag}{tag}
A short textual label identifying a kind of element in an HTML page.
Commonly-used tags include \texttt{p} (for a paragraph) and \texttt{h1} (for a level-1
heading).
\gitem{g:template}{template}
A document with some placeholders that can be filled in with specific values.
Templates are often used to create personalized email messages and web pages,
though their efficacy is predicated upon relentless commercialization and
devaluation of modern society's sense of what constitutes ``personal''.
\gitem{g:test-runner}{test runner}
A program that finds and runs \grefcross{g:unit-test}{unit tests} and reports their
results.
\gitem{g:test-suite}{test suite}
A set of \grefcross{g:unit-test}{unit tests}, usually stored in files that follow a
prescribed naming convention.
\gitem{g:throw}{throw}
To signal that something unexpected or unusual has happened in a program by
creating an \grefcross{g:exception}{exception} and handing it to the error-handling
system, which then tries to find a point in the program that will
\grefcross{g:catch}{catch} it. (Some languages call this \emph{\grefcross{g:raise}{raising}} an
exception.)
\gitem{g:tidy-data}{tidy data}
Tabular data that satisfies four conditions:
\begin{itemize}
\item
Each column contains one statistical variable
(i.e., one property that was measured or observed).
\item
Each different observation is in a different row.
\item
There is one table for each set of observations.
\item
If there are multiple tables,
each table has a column containing a unique key
so that related data can be linked.
\end{itemize}
\gitem{g:tree}{tree}
A data structure containing strictly-nested \grefcross{g:node}{nodes}. Every node
except the \grefcross{g:root-node}{root node} must have exactly one \grefcross{g:parent-node}{parent
node}, but each node may have zero or more
\grefcross{g:child-node}{children}.
\gitem{g:truthy}{truthy}
A truly Orwellian neologism meaning ``not equivalent to false''. See also
\grefcross{g:falsy}{falsy}, but only if you are able to set aside your respect for the
English language.
\gitem{g:unicode}{Unicode}
A standard that defines numeric codes for many thousands of characters and
symbols. Unicode does \emph{not} define how those numbers are stored; that is done
by standards like \grefcross{g:utf-8}{UTF-8}.
\gitem{g:unit-test}{unit test}
A test that exercises one property or expected behavior of a system.
\gitem{g:url}{URL}
A multi-part identifier that specifies something on a computer network. A URL
may contain a protocol (such as \texttt{http}), a hostname (such as \texttt{example.com}),
a port (such as \texttt{80}),
a path (such as \texttt{/homepage.html}),
and \grefcross{g:query-parameter}{query parameters}.
\gitem{g:utf-8}{UTF-8}
A way to store the numeric codes representing Unicode characters in memory
that is \grefcross{g:backward-compatible}{backward-compatible} with the older
\grefcross{g:ascii}{ASCII} standard.
\gitem{g:variable}{variable}
A name in a program that has some data associated with it. A variable's value
can be changed after definition. See also \grefcross{g:constant}{constant}.
\gitem{g:view}{view (of data)}
How data is presented.
See also \grefcross{g:model}{model}.
\gitem{g:whitespace}{whitespace}
The space, newline, carriage return, and horizontal and vertical tab characters
that take up space but don't create a visible mark. The name comes from their
appearance on a printed page in the era of typewriters.
\gitem{g:xml}{XML}
A set of rules for defining HTML-like tags and using them to format documents
(typically data). XML achieved license plate popularity in the early 2000s,
but its complexity led many programmers to adopt \grefcross{g:json}{JSON} instead.
\end{description}