JETZT ONLINE BESTELLEN
Add to Cart
Beautiful Code
Leading Programmers Explain How They Think

First Edition Juli 2007
ISBN 978-0-596-51004-6
618 Seiten
EUR37.00


Weitere Informationen zu diesem Buch

Inhaltsverzeichnis | Index | Probekapitel | Rezensionen |
Leseprobe in dt. Sprache (PDF) |


Index

	
[ Symbols ], [ Numbers ], [ A ], [ B ], [ C ], [ D ], [ E ], [ F ], [ G ], [ H ], [ I ], [ J ], [ K ], [ L ], [ M ], [ N ], [ O ], [ P ], [ Q ], [ R ], [ S ], [ T ], [ U ], [ V ], [ W ], [ X ], [ Y ], [ Z ],

Symbols[ Top ]
$ (dollar sign)
      end of line matching in regular expressions, 3, 5
      in Perl variable names, 195
% (percent sign), Perl variable names, 195
& (ampersand), && operator in JavaScript, 136
( ) (parentheses)
      invoking functions, 144
      type in Haskell, 389
* (asterisk)
      JavaScript operator, 135
      matching zero or more occurrences in regular expressions, 3, 4
+ (plus sign)
      JavaScript infix operator, 134
      matching one or more instances in regular expressions, 43
. (period)
      . operator in JavaScript, 136
      matching any single character in regular expressions, 3
= (equals sign), === (exact-equality comparison) operator in JavaScript, 135
-> (arrow), indicating object-oriented method call in Perl, 195
? (question mark), ?: ternary operator in JavaScript, 135
@ (at-sign) in Perl variable names, 195
[ ] (square brackets)
      [ ] operator in JavaScript, 136
      [^ .], matching any character not a space or period, 43
      array literals in JavaScript, 144
^ (caret), beginning of line matching in regular expressions, 3
{ } (curly braces)
      delimiting code blocks in Ruby, 48
      enclosing function body in JavaScript, 143
      object literals in JavaScript, 145
      statement blocks in JavaScript, 141
| (vertical bar), || operator in JavaScript, 136
` (single quote) transposition operator, 233

Numbers[ Top ]
1-bits in a word, counting (see population count)
32-bit word, 147
      adapting HAKMEM population count for 36-bit word, 151
8086 assembly language (Windows 1.0), 111

A[ Top ]
A,G,C,T (nucleotides), 188
Acceptor wrapper facade, 437
accidental complexities encountered by developers, 429
ACE wrapper facades, 436
      socket wrapper facade, 442
ACE_Handle_Set member variables, 441
ACSS (Aural CSS), 511-516
      adding auditory icons, 512
      basic HTML using Emacs W3 and ACSS, 517
      data structure encapsulating ACSS settings, 512
      enhancing spoken output with context-sensitive semantics, 514-516
      mappings to TTS engines, 508
      producing auditory icons while speaking content, 514
ActionFixture class (Java), 77
actions (Haskell), 389
      important characteristics of, 404
      IO actions, 398
      main, 390
      STM actions, 392
      treated as first-class values, 391
      type system preventing IO actions running inside STM actions, 394
Adapter or Facade pattern, 8
additional levels of indirection, 279-291
      FreeBSD using indirection to abstract read function arguments, 282-285
      layering and, 290
      multiplexing and demultiplexing, 289
      operating system supporting different filesystems, 279
            filesystem layers, 285-287
            FreeBSD implementation of read system call, 280
advFilter method (Gene Sorter columns), 224
advice (Emacs LISP), 505
      auditory icons confirming user actions, 513
      definitions attached to calendar navigation functions, 515
      put-text-property function implementation, 508
      tutorial, 507
adviced function (LISP), 507
AFL (Audio Formatting Language), 511
after advice (Emacs LISP), 507
      auditory icons confirming user actions, 513
Ajax Generic Genome Browser, 211
alarm function (Perl), 171
ALGOL-like syntax for LISP, 130
algorithms
      customizing on the fly in Intermediate Language, 127
      data structures as frozen algorithms, 37
      for dense or sparse matrices, 230
      detailed in routine's description, 258
      search algorithms, 52
Amdahl's Law, 231
analysis of programs, 40
annotation, 188
      large number of genome annotation types, 190
anonymous subroutines (Perl), 207
Apache Commons HttpClient, 457
Apache Log4J Java package, 329
application level, science captured in mathematical models, 229
application-specific control structures, defining using Haskell actions, 404
area of a triangle, measuring, 548
around advice (Emacs LISP), 507
array descriptors, 246
array literals (JavaScript), 131, 144
arrays
      binary search
            boundary value testing, 92-94
            testing, 96
      bitmap pixels stored in, 115
      digital filter
            generating elements, 122
            storing byte in destination array, 126
            zero byte stored in destination array, 126
      digital image filters, 112
      JavaScript, selecting member with [ ] operator, 136
      N-dimensional, 303
      one-, two-, and three-dimensional, 303
      one-dimensional array and digital filter algorithm in C#, 116
      Perl variable names beginning with @, 195
      population count, 154-159
            CSA circuits, 154-159
            direct indexed access to moderately sparse array, 159
      in PyArrayIterObject, 312
      Python, free-dicts array of disused dictionary structures, 300
      Ruby implementation, 52
      (see also NumPy)
Art of Computer Programming, The, 37
assembly language, computation-intensive routines in, 266
assertions verifying the state of locks, 288
assignment operators (JavaScript), 137
association lists, 415
      assq procedure for lookups, 419
associations (Gene Sorter columns), 224
associative stores, 46-49
      using in dynamically typed languages, 47
AsTeR (Audio System For Technical Readings), 503
asynchronous event demultiplexer in reactive logging server, 442
Atom feeds, 522
atomically function (Haskell), 392
atomicity (Haskell transactions), 392
audio desktop (see Emacspeak audio desktop)
audio formatting codes, converting personality property to (Emacspeak), 510
Audio Formatting Language (AFL), 511
audio formatting using voice-lock (Emacspeak), 508
auditory icons, 512
      producing while speaking content, 514
      user interactions producing, 512
Aural CSS (see ACSS)
aural display lists
      audio-formatted output from, 510
      augmenting Emacs to create, 508-510
automata, regular expressions translated into, 45
automated debugging, 468
      further reading, 476
awk programming language, 50
      creations from FreeBSD read system call specification, 288

B[ Top ]
backtick function (Cryptonite), 181
backup tasks, MapReduce implementation, 380
Backus-Naur Form (BNF) grammar, checking XML names, 61, 63
balance in beautiful code, 481
bank accounts (concurrent programming example), 386-388
      using locks, 386
base categories (ERP5)
      predecessor, 349
      source_project and destination_project, 347
      source_project, retrieving tasks of a project, 348
base category objects (Portal Categories), 346
base pairs (bp), 188
      handling scale in genomic feature representation, 191
bases of DNA (A, C, G, or T), 218
Basic Linear Algebra Subprograms (see BLAS)
baton (Subversion), 17
beautiful code
      characteristics of, 266
      CIP (Collaborative Information Portal), 319
      CIP system architecture, 322-325
      code that works accurately and efficiently, 253
      lack of type checking in Linux kernel, 272
      NumPy iterators, 307
      object-oriented framework-based design, 443
      object-oriented networked software, 431
      parallel programs, simple, elegant, and mistake-free, 385
      scalability, 259
      test and example programs, 260
before advice (Emacs LISP), 507
Bell, Gordon, 31
Bentley, Jon, 29-40, 87
Berkeley Fast Filesystem (ffs), 283
binary MIME message composition, 179
binary search, 52, 87
      advantages and disadvantages, 54
      escaping the loop, 54
      "On the Goodness of Binary Search", 52
      postings, 55
      testing, 90-102
            boundary value tests, 92-95
            performance, 101
            random testing, 95-100
            smoke test, 91
binary search tree (Quicksort), cost of inserting an element, 38
binary-ness, testing, 101
binding interaction, DNA/protein, 206
binding powers (JavaScript tokens), 134
      + operator, 134
bindings, 415
      determining binding associated with an identifier, 418
      mapping to labels with environments, 418
      variable, capture of a variable reference by, 408-411
binomially distributed random integers, 160
Bio::Graphics module (Perl), 188-215
      design process, 192-209
            developer interaction with the module, 192-195
            dynamic options, 206-209
            object classes, choosing, 198-200
            option processing, 200-205
            options, setting, 196-198
            script that uses (example), 205-206
      design requirements, 190
      examples of output, 189
            typical image, 189
Bio::Graphics module (Perl) (continued)
      extending, 210-214
            adding new glyphs, 212
            supporting publication-quality images, 211
            supporting web developers, 210
Bio::Graphics::Glyph class, 198-200
      factory( ) and option( ) methods, 204
      option( ) method, changing for dynamic options, 208
      subclasses, 204
Bio::Graphics::Glyph::Factory class, 201-205
      dynamic option processing, 207
      methods, 202
Bio::Graphics::Panel class, 192, 198
      configuration options, 197
      image_and_map( ) method, 210
      png( ) method, 212
      SVG images, 212
Bio::Graphics::Track class, 198
Bio::SeqFeature::CollectionI interface, 193
Bio::SeqFeature::Generic class, 206
Bio::SeqFeatureI interface, 214
bioinformatics, 187
      genome annotation types, 190
      SOAP-style web service architectures, 453
BioMoby project, 453
BioPerl
      annotation databases, 193
      Bio::Graphics module and, 188-192
      Bio::SeqFeatureI interface, 214
      (see also Bio::Graphics module)
bison, generating C code implementing high-level domain-specific language, 288
bit flags (binary lookup table), 70
bit shift operators (Java), 88
bit shifts for collisions in Python dictionaries, 299
BitBlt (bit block transfer) function (Windows 1.0), 106
      8086 machine code instructions as subroutine, 111
      C code implementing, 110
      raster operations, 108
bitmaps
      code dealing with, 110
      digital filter applied to, 112
      digital filter transforming source into destination bitmap, 113
      ImageFilterTest program, 115
BLACS (Basic Linear Algebra Communication Subprograms), 243
Blandy, Jim, 16, 17
BLAS (Basic Linear Algebra Subprograms), 230, 237
      Level-1 BLAS, 235
      Parallel BLAS (PBLAS), 245-247
      resources for further reading, 252
      ScaLAPACK library, 243
blessed reference, 174
block size (NB), 239
block statement (JavaScript), 141
blocking
      bank account transactions (example), 387
      lack of modularity, 388
      threads in Solaris, 354
blocking chain, 356
      iterating over it coherently, 358
      unblocking of thread blocked on synchronization primitive, 358
block-partitioned algorithms, 230
blocks of code (JavaScript), 141
blur filter, 113
BNF (Backus-Naur Form) grammar, checking XML names, 61, 63
Bonwick, Jeff, 355
boundary value tests, 91
      binary search, 92-95
            array, 92-94
            target item location, 94
bound-identifier=? predicate, 424
bp (base pairs), 188
      handling scale in genomic feature representation, 191
branch instructions (Intermediate Language), 120
      Blt (branch if less than) and S (short branch), 123
      labels, 121
Bray, Tim, 41-57
break statement (JavaScript), 142
breaking the code (beautiful tests), 95
brevity in code, 261, 478
      elimination of redundancy, 479
      leaving out unnecessary information, 478
broadcasting (in NumPy), 316, 317
BSD (see FreeBSD operating system)
BT (business template), 346
buffering, 290
_ _builtin_ _ module (Python), 294
business partners, integrating using REST, 451-462
      exchanging data with e-business protocols, 457-462
            assembling XML response, 462
            parsing XML using XPath, 458-462
      exposing services to external clients, 452-455
      routing services using factory pattern, 456-457
business processes, representing in ERP5, 341
business template (BT), 346

C[ Top ]
c (character), matching in regular expressions, 3
C language
      code for applying a digital filter, 113
      code implementing filesystem layers, 288
      code packing function arguments into a single structure, 288
      compilation from specialized high-level domain-specific language to, 288
      do-while loop, 4
      early Windows applications, 111
      hexadecimals, 150
      N-dimensional arrays, looping over, 304
      object-oriented model of code in Linux driver model, 277
      object-oriented programming and, 8
      operating system (OS) APIs, 429
      Perl interface to libraries, 168
      pointers, 5, 271
            compact code in regular expression matcher, 9
      polymorphic object, creating, 221
      population count for 36-bit word, adapting to 32-bit word, 151
      population count, counting 1-bits in a word x, 148
      PyDict_SetItem( ) function, 300
      Python implementation (see CPython)
      special-purpose syntactic constructs, 407
      structures
            inheriting and manipulating in Linux kernel, 272
            PyDictObject, 295
            reference counting, 273-276
      syntactic abstraction mechanism, preprocessor macros, 408
C#, 112
      code to implement digital image filters, 112
      code written for best performance, examining with IL Disassembler, 115
      digital filter algorithm, 116
      image processing code, 114
      indirection in, 290
      Intermediate Language, generating and then executing, 118
C++
      cfront preprocessor, compiling C++ code into C, 288
      implementation of MapReduce word frequency counting example, 382
      inheritance and overloading, 261
      parameterized types, 432
C. elegans genome, 189
caching
      in eLocutor, 486, 495
            SaveReverse subroutine, 495
      namespace URIs after verification, 72
Calendar (Emacs), speech-enabling, 515
calendar-forward-week function, advice definition for, 515
callbacks in Bio::Graphics
      usefulness of, 209
      using for each option passed to add_track( ), 207
cancellations, handling in Subversion delta editor, 25
Cantrill, Bryan, 353-369
capture of a variable reference by a variable binding, 408-411
carry-save adder (CSA) circuits, 154-159
cart object (Gene Sorter), 220
cart variables (Gene Sorter)
      avoiding name conflicts, 221
      communication between column filtering methods, 224
CAs (Certification Authorities), 164
causalities, 347
CD-ROMs, ISO-9660 filesystem, 279, 281
CERN library, 254
      inner beauty of code, 261-266
            beauty in flow, 265
            brevity and simplicity, 261
            frugality, 262-265
      outer beauty of code, 255-260
Certification Authorities (CAs), 164
CGI scripts
      advantages and disadvantages, 219
      Gene Sorter, 219
      lifetime, 220
      long-term data storage, 220
      short lifetime, advantages of, 221
chain of blocked threads, 356
chaining, 298
      in vector machines, 231
character classes (in regular expressions), 7
children with disabilities, communication in classroom via software, 501
choose function (Haskell), 402
CIP (Collaborative Information Portal), 319-338
      Mars Exploration Rover (MER) mission and, 320
            mission needs, 321
      Middleware Monitor Utility, 335
      robustness, 336-337
            dynamic reconfiguration, 337
            hot swapping, 337
CIP (Collaborative Information Portal) (continued)
      streamer service case study, 325-328
            functionality, 325
            reliability, 328-336
            service architecture, 326
      system architecture, code beauty of, 322-325
CISC computers, fundamental instructions, 147
class libraries, 433
client/server software
      Emacspeak speech servers and Emacspeak client, 504
      integrating RPG legacy systems with, 460
clipboard, 498
CMF (Content Management Framework), 340
      implementation of structural part of applications with CMF Types, 342
      overview, 342
CMF Types, 342
code and data, interplay between, 105
      becoming mirror images of each other, 127
code complexity, managing over time, 523
code examples from this book, using, xx
code generation, on the fly, 105-127
      FilterMethodCS, 116-118
      FilterMethodIL, 119-127
      graphics functions in Microsoft Windows 1.0, 106-112
code reuse, 228
      ERP5, 351
      promoted by good design and clear, concise code, 261
Collaborative Information Portal (see CIP)
collinearity problem (see computational geometry)
collision control
      for overlapping genomic features, 191
      for tracks in Bio::Graphics module, 195
collisions in Python dictionaries, 298
columnDb.ra files, containing column metadata, 222
column-oriented algorithms (LINPACK), 235
columns (Gene Sorter), 223
      filtering, 224
command dispatcher in Cryptonite::Mail::Server, 170
comments
      Haskell, 389
      presenting full documentation for purpose of a routine, 258
commercial off-the-shelf (COTS) software, 322
commits, transaction log, 394
Common LISP macros, 408
common words (in eLocutor), 496
commonality/variability analysis, 434
      logging server framework, 434
comparison count function (Quicksort), 33
comparison operators, Python data types providing versions of, 298
comparisons, counting for binary search, 101
compilation phase, regular expression processing, 7
compilers optimizing away indirection, 291
complexity of code, using simpler tools for complex problems, 481
computational geometry, 540-551
      collinearity problem, 541-543
      collinearity, testing by comparing slopes, 544-545
      LISP, using, 540
      river meandering model, 547
      testing collinearity by triangle inequality, 545
computed solutions vs. mathematical equations, 253
computer architecture, effects on matrix algorithms, 230
concurrency, 385-405
      bank accounts (example), 386-388
            using locks, 386
      different models, 432
      locks, problems with, 387
      sequential concurrency models in logging servers implementation, 439-444
      STM (Software Transactional Memory), 388-405
            implementing transactional memory, 394
            Santa Claus problem (example program), 396-403
            side effects and I/O in Haskell, 388-391
            summary of basic STM operations, 396
            transactions in Haskell, 392-393
condition variables
      blocking in bank account transactions, 387
      coordinating concurrent programs, 386
      no support for modular programming, 388
connection/data event handling, Reactive_Logging_Server, 442
constants
      hexadecimals in C, 150
      JavaScript, 138
constructors (methods), checking for correctness in XML verifier, 66
container_of macro, 271
      casting back from core kobject to main struct device, 274
Content Management Framework (see CMF)
content-addressable memory, 46-49
context-sensitive menu selection in eLocutor long click, 489-491
context-sensitive semantics, enhancing spoken output, 514-516
continuous testing, 467
conversions between s-expressions and syntax objects, 424
cookies
      CGI script data storage, 220
      key into user table for Gene Sorter, stored in persistent cookie, 220
core dump, analyzing for Solaris user-level priority inheritance bug, 360-366
COTS (commercial off-the-shelf) software, 322
CPython, 294, 301
      selecting storage function dynamically, 297
critical path, 248
Crockford, Douglas, 129-145
Crypt::GPG module (Perl), 173
      security audit, 180-182
Crypt::PGP5 module (Perl), 173
cryptographic software, 185
Cryptonite (mail system), 162-184
      basic design, 169
      code cleanup, Perl modules for jump to scalable product, 173
      decrypted messages, persistence of, 176
      design goals and decisions, 168
      functioning prototype, 172
      insights from development process, 162
      integrated interface for key management, 177
      Mail Daemon (cmaild), 171
      mail store, modifying to use IMAP as backend, 182
      revamping the mail store, 174
      securing the code, 178
      test suite, 172
      usability considerations, 166
Cryptonite::Mail::Config module (Perl), 179
Cryptonite::Mail::HTML package, 173
Cryptonite::Mail::Server, command dispatcher, 170
Cryptonite::Mail::Service class, 170
CSA (carry-save adder) circuits, 154-159
CSS (Cascading Style Sheets)
      CSS2, Aural CSS, 511
      early implementation by Emacs W3 browser, 517
      (see also ACSS)
Cunningham, Ward, 75
Cypherpunks, 185

D[ Top ]
\d, matching any digit in regular expressions, 43
data display debugger (ddd), 464
data management (MER Mission), 322
data movement through the memory hierarchy, 230, 239
data representation, 290
data structures as frozen algorithms, 37
data types
      C++ parameterized types, 432
      Haskell
            declaring, 398
            distinguishing actions from pure values, 404
      skipping declarations when unnecessary, 478
database code, prototyping in Perl, 173
database schemes, independence of Bio::Graphics from, 192
databases
      annotation, supported by BioPerl, 193
      ERP5 relational database, 341
      in operating system kernel for device naming, 268
      ZODB, 340
datum->syntax procedure (syntax-case), 412, 413
      converting s-expression to syntax object, 424
DBD::Recall module (Perl), 175
DBD::SQLite module (Perl), 173
DCWorkflow, 340
ddchange plug-in for Eclipse, 475
ddd (data display debugger), 464
de Carvalho, Rogerio Atem, 339-351
deadlock
      explicit locking code in bank account program, 387
      single-thread deadlock, 366
Dean, Jeffrey, 371-384
debugging, 463-476
      a debugger, 464
      delta debugging, 470-472
      finding failure cause automatically, 468
      hunting the defect, 473-475
            finding failure causes in program state, 473
            tracing failure-causing variables back to statements causing them, 475
      minimizing input, 472
            automated testing and splitting input into smaller pieces, 473
      prototype problem with fragile approach, 475
debugging (continued)
      search problem, 467
            determining if one change depends on another, 468
            divide and conquer strategy, using, 468
      systematic process of, 466
            backward traversal of cause-and-effect chain for failure, 466
            consistent, disciplined use of scientific method, 466
      user-level priority inheritance bug in Solaris, 360-366
      (see also testing)
declarations, skipping when unnecessary, 478
decompositional approach to solutions for dense linear systems, 232
decrypted email messages, persistence, 176
DECTalk Express, 504
define-syntax form, 411
defining new variables in a scope (JavaScript parser), 138
Delivery class, 347
DeliveryLine class, 343
delta debugging, 470-472
      current implementations, 475
      further reading, 476
      minimizing program code, 473
      on program states, 473
      searching for failure causes in program input, 472
            minimizing input, 472
delta editor (Subversion), 11-28
      benefits of, 27
      interface, 17-22
dense linear systems, decompositional approach to solutions, 232
dense matrix problem, 230
      decompositional approach to solutions, 232
      error analysis and operation count, 250
dentry structure (Linux), 276
depot, 356
design defects manifesting as bugs, 354
destination_project base category, 347
devfs filesystem, 268
device structure (Linux), 268
      memory usage, 276
      pointers to, 271
      reference counting, 273
devices (on Linux), 267
      no proper handling in persistent manner, 268
      shutting down/powering up properly, 268
      struct device as base class, 268
DGEMM routine, 239
DGETF2 routine, 239
      bottleneck in computers with faster processors, 240
dictionaries, Python, 293-301
      basic operations on, 293
      C implementation of Python, 294
      collisions, 298
      iterations and dynamic changes, 300
      keys and values of different data types in single dictionary, 294
      keys not ordered, 294
      passing keyword arguments to a function, 294
      PyDictObject structure, 295
      representing module contents, 294
      resizing, 299
            determining new table size, 299
      special-case optimization for small hashes, 297
      special-casing, when it's worthwhile, 297
diff tool, 465
digital filters, 112
      algorithm in C#, 116
      fast digital filter algorithm, 117
      generating code for elements, 122
digital image filters
      blur filter, 113
      C code to apply digital filter (example), 113
      sharpness filter, 113
direction (genomic features), 190
directory trees
      differences, expressing, 16
      version control and tree transformation, 12-15
disabled persons, software for
      eLocutor, 483-500
      Emacspeak audio desktop, 503-525
      future directions, 500
dispatcher state of threads in Solaris, 358
distance procedure (Lisp), 546
distributed programming with MapReduce, 371-384
      distributed grep, 375
      distributed implementation (example), 377-380
            execution overview, 377
      distributed sort, 376
      extensions to the model, 380
      inverted index, 376
      programming model, 374
      reverse web-link graph, 376
      term vector per host, 376
      word count program (example), 371-374
divide and conquer strategy
      debugging, finding cause of failure in gdb, 468
      logical subdivision of tasks into subroutines, 265
      population count, 149-151
      recursive LU algorithm, 240
DNA sequences, 188
DNA/protein binding site, 206
do notation (Haskell), 389
      composing STM actions, 393
documentation, 227
      full documentation of routine's usage in the code, 258
document-centric paradigm (ERP5), 339
Don't Repeat Yourself (DRY principle), 479
Dongarra, Jack, 229-252
double-precision IEEE floating-point arithmetic, 546
do-while loop, 4
driver program for Map and Reduce functions (example), 374
driver routines, 261
DRY principle (Don't Repeat Yourself), 479
DTRSM routine, 239
Duff's Device, 11
duplication of information in code, eliminating, 479
Dybvig, R. Kent, 407-428
dynamic dispatch, 289
dynamic programming, 34
dynamic tree repopulation in eLocutor, 491
dynamically typed languages, using associative stores, 47
DynamicMethod class, 119
      Invoke method, 126

E[ Top ]
e-business protocols
      exchanging data with, 457-462
            assembling XML response, 462
            parsing XML using XPath, 458-462
      Rosettanet, 453
edge conditions, focusing on, 369
editing text in eLocutor, 497
editor operated with a single button, designing, 483-501
educating children with disabilities, communication software for, 501
egrep, 2
EJBs (Enterprise JavaBeans), 322
elegant code, evolution with hardware, 229-252
      effects of computer architectures on matrix algorithms, 230
      further reading, 252
      future directions for research, 251
      LAPACK DGETRF subroutine, 237-240
      LINPACK DGEFA subroutine, 235-237
      multithreading for multi-core systems, 247-250
      recursive LU, 240-243
      ScaLAPACK PDGETRF, 243-247
element names (XML 1.0), checking, 61
eLocutor, 483-500
      basic design model, 484-487
      efficiency of user interface, 500
      input interface, 487-499
            cache implementation, 495
            clipboard, 498
            common words and favorites, 496
            dynamic tree repopulation, 491
            long click, 489-491
            macros, 499
            retracing paths, 497
            searching, 499
            Templates and Replace, 494
            tree structure presenting options, 488
            typing buffer, editing, and scrolling, 497
            typing, simple, 493
      niche market for wider community, 484
      search function, 499
      web sites for download and discussion list, 500
Emacs
      Emacspeak, 500
      extension for one-button tree navigation, 501
      IDE for development of secure mail system, 168
      W3 web browser, 517, 525
Emacspeak audio desktop, 503-525
      Aural CSS (ACSS), using to style speech output, 511-516
      insights gained from implementing and using, 524
      managing code complexity over time, 523
      online information access, 516-522
            basic HTML with Emacs W3 and ACSS, 517
            feed readers, 522
            Web command line and URL templates, 520
            websearch module for task-oriented search, 517-520
      producing spoken output, 504
      speech-enabling Emacs, 505-516
            advice tutorial, 507
            first-cut implementation, 505
            generating rich auditory output, 507-511
            implementing event queue in speech server, 505
emacspeak-auditory-icon property, 514
emacspeak-calendar module, 515
emacspeak-calendar-entry-marked-p function, 515
emacspeak-calendar-speak-date function, 515
emacspeak-minibuffer-setup-hook function, 513
emacspeak-personality-voiceify-faces variable, 509
emacspeak-speak-line function, 505
emacspeak-url-template module, 520
emacspeak-url-template-fetch command, 521
emacspeak-w3 module, 517
emacspeak-w3-extract-table-by-match function, 519
emacspeak-websearch tool for accessing directions from Yahoo! Maps, 518
emacspeak-websearch-yahoo-map-directions-get-locations function, 518
email client, full-featured (Cryptonite), 167
encrypted mail client, persistence of decryption, 176
encrypted or signed messages, information about MIME structures, 175
encryption of email, 165
end position (genomic features), 190
Enterprise JavaBeans (EJBs), 322
enterprise resource planning systems, 339
      goals of, 340
      (see also ERP5)
enterprise system architecture, beauty of, 322
enterprise system for NASA Mars Rover (see CIP)
environments (syntax-case expansion algorithm), 418
      meta environment and runtime environment, exp procedure, 419
Equalizer, 483
ERP (enterprise resource planning), goals of, 340
ERP5, 339-351
      code in its raw state, web site, 351
      concepts that lay the basis for representing business processes, 341
      features to enhance programming productivity, 345
      object-to-relational mapping scheme, 341
      Portal Categories portal service, 345
      Project, 346-351
            coding, 347-351
      UBM (Unified Business Model), 341
      XML technologies, use of, 341
      Zope components used by, 340
      Zope platform, 342-346
            four-level structure representing system classes, 345
error analysis, 250
error bounds, 250
error-correcting codes, 159
errors
      communication mechanism in LAPACK SGBSV routine, 260
      recovery problems with locks, 388
essay, treating code as, 477-481
Euclid
      advice to student, 540
      algorithm for calculating greatest common divisor of two numbers, 540
      formula for area of a triangle, 549
European Organization for Nuclear Research (see CERN library)
evaluation stack (virtual) in IL, 120
event queue, implementing inside speech server, 505
example programs, importance of, 260
execution phase, regular expression processing, 7
exp procedure, 419
expansion algorithms
      hygienic macro expansion algorithm (KFFD), 410
      syntax-case, 413-425
            comparing identifiers, 423
            conversions, 424
            core transformers, 421-423
            creating wraps, 417
            expander, 419-421
            expander example, 425-427
            identifier resolution, 418
            manipulating environments, 418
            parsing and constructing syntax objects, 423
            producing expander output, 415
            representations, 414
            starting expansion, 424
            stripping syntax objects, 415
            structural predicates, 416
            syntax errors, 416
exp-core procedure, 421
Expect module (Perl), 180
exp-exprs procedure, 421
exp-if procedure, 421
exp-lambda procedure, 421
exp-let procedure, 422
exp-letrec-syntax procedure, 422
explicit formulation of hypothesis (in debugging), 466
exp-macro procedure, 420
exp-quote procedure (syntax-case), 421
expression function, 134
expression-based LISP macros, 408
expressions
      datum->syntax procedure used for arbitrary expressions in syntax-case, 413
      statements vs., 140
extend-wrap helper, 423
extensibility of software, 83
extension points, discovering, 513
external clients, exposing services to, 452-455

F[ Top ]
Factory class (Bio::Graphics::Glyph), 201-205
      dynamic option processing, 207
      make_glyph( ) method, 202
      option( ) method, 202
factory pattern, routing services with, 456-457
familiarity (of beautiful code), 479
FAT-32 filesystem for the USB stick, 279
fault tolerance, MapReduce implementation, 379
favorites in eLocutor (frequently used words), 496
Feathers, Michael, 75-84
features (genomic), 190
      density of, 191
      handling scale in visual representations, 191
feed reading software, 522
ffs (Berkeley Fast Filesystem), 283
fgrep, 2
file readers and file writers (CIP streamer service), 326
filesystems, operating systems supporting different, 279
      code to access filesystems, 280
      filesystem layers, 285-287
      FreeBSD use of indirection to abstract read function arguments, 282-285
Filter class, ApplyFilter( ) method, 116
filterControls method (Gene Sorter columns), 224
FilterMethodCS, 116
      optimizing, 117
FilterMethodIL, 119-127
      DynamicMethod instance, invoking, 126
filters, Gene Sorter, 224
finding the definition of a name (JavaScript parser), 139
finite automata, regular expressions translated into, 45
first-class values, Haskell actions as, 404
FIT (Framework for Integrated Test), 75-84
      challenge of framework design, 78
      classes, 76
            relationships among, 77
      documents serving as tests, 76
      HTML parsing, 80-83
      open framework, 79
      open style of development, benefits of, 83
Fixture class (Java), 77, 79
flex, generating C code implementing high-level domain-specific language, 288
flexibility of beautiful code, 481
floating-point arithmetic, IEEE double precision, 546
flow in beautiful code, 265
Fogel, Karl, 11-28
for loops
      looping over N-dimensional arrays, 304
      Python iterators as predicates, 305
forkIO function (Haskell), 390, 401
fork-join model of computation, 247
Fortran, 234
      BLAS (Basic Linear Algebra Subprograms), 252
      LINPACK package, 235
      required use of Fortran 90 with recursive LU, 240
forward web link graph, 376
frameworks
      applied to networked software, 430
      Framework for Integrated Test (see FIT)
      object-oriented, key concepts, 433
free_dicts array (Python), 300
FreeBSD operating system
      high-level I/O abstraction independence, 289
      implementation of read system call, 280
            filesystem-independent part, 281
      interface functions and data structures, language written in, 287
      read system call, functions to avoid code duplication, 290
      supporting different filesystems, abstracting read function arguments, 282-285
freedom from enforcement from tools (flexibility), 481
free-identifier=? predicate, 424
frequently used words in eLocutor, 496
frugality in beautiful code, 262-265
full-text searches, 55
fullword immediate, 152
function arguments abstracted to argument pointers, 282-285
function calls, keyword arguments in (Python dictionaries), 300
function pointers, used to dispatch a request to different functions, 289
functional decomposition of nontrivial software, problems created by, 430
functions
      JavaScript, 131, 143
      naming, understanding purpose from the name, 226
      reentrant, 227
      reusable, 228
fundamental instructions on RISC and CISC computers, 147

G[ Top ]
Gaussian elimination, 229-252
      MATLAB tool, 233
GBrowse, 211
GD::SVG module (Perl), 212
gdb (GNU debugger), 464
      debugging
            running diff on source code, 465
            search problem, 467
            splitting changes into four or more subsets, 469
      failure caused by changes in new release, 464
      searching program states for failure cause, 473
gene expression columns (Gene Sorter)
      filtering, 224
Gene Sorter, 217-228
      beautiful code, 225-228
            function filtering associations that handles wildcards, 226
      dialog with user over the Web, 219
      filtering down to relevant genes, 224
      genome.ucsc.edu implementation, 221
      polymorphism, 221-224
      user interface, 218
Generic class (Bio::SeqFeature), 206
genes, 218
genome browsers, web-based, 211
genome map rendering module (see Bio::Graphics module)
genome, annotation of, 188
genome.ucsc.edu implementation of Gene Sorter, 221
gen-var helper, 415
GET and POST requests over HTTP, services exposed through, 452
GFS (Google File System), 377
      management of input data, 379
      paper about design and implementation, 381
GHC (Glasgow Haskell Compiler), 403
Ghemawat, Sanjay, 371-384
Glasgow Haskell Compiler (GHC), 403
Glyph class (Bio::Graphics)
      dynamic option processing, 208
      factory( ) and option( ) methods, 204
      subclasses, 204
glyphs (Bio::Graphics module), 196
      adding new, 212
      box model, 215
      dynamic creation of, 200-205
      Glyph class, 198-200
      subglyph generation, 214
GNU debugger (see gdb)
GnuPG, 173
Google
      high-quality search results, 56
      MapReduce programs, number of, 376
      MapReduce, development for large-scale computations, 371
      (see also MapReduce)
Google Maps, Emacspeak tool with similar functionality, 519
Google News searches via Atom feeds, Emacspeak URL template for, 522
goto instruction, 120
GPG, security audit of Crypt::GPG module, 180-182
graphic formats, independence of Bio::Graphics from, 191
graphics function in Windows 1.0 (see BitBlt function)
grep, 2
      distributed, 375
groupings of words (eLocutor), 486
Gulhati, Ashish, 161-186

H[ Top ]
HAKMEM memo, 151
Hamming distance between two bit vectors, 159
hardcoded parameter values, avoiding, 337
hardware interfaces, 290
hardware speech synthesizer (DECTalk Express), 504
hardware, evolution of elegant code with, 229-252
      effects of computer architecture on matrix algorithms, 230
            LAPACK DGEFR subroutine, 237-240
            LINPACK DGEFA subroutine, 235-237
      further reading, 252
      future directions for research, 251
      multithreading for multi-core systems, 247-250
      recursive LU, 240-243
      ScaLAPACK PDGETRF, 243-247
Harold, Elliotte Rusty, 59-74
hash tables, 46
      binary search vs., 54
      bitmask representing size in PyDictObject structure, 296
      keys hashing to same slot, 298
      loading a big hash, 50
      resizing for Python dictionaries, 299
hashes
      constructed by code reading columnDb, 223
      filtered genes in Gene Sorter, 225
      Ruby, 47
      unordered hash in Perl, 195
Haskell, 386, 388-405
      Glasgow Haskell Compiler (GHC), 403
      side effects and I/O
            functional nature of Haskell, 391
      side effects and input/output, 388-391
            actions, 389
      summary of basic STM Haskell operations, 396
Hawking, Stephen, 483
Hayes, Brian, 539-551
hidden CGI variables, 220
      key into session table for Gene Sorter, 220
Hoare, C. A. R., 30, 31, 37
hook methods, 435
      in Logging_Server run( ) template method, 439, 443
      use in reactive logging server implementation, 442
host infrastructure middleware, 430
hot swapping, 337
HotkeyAdaptor interface (example), 456
HotkeyAdaptorFactory class (example), 456
hourglass glyph (example), 213
HTML
      FIT (Framework for Integrated Test), 76
      rendered by speech-enabled Emacs W3 and ACSS, 517
HTTP exchanges, managing with Apache Commons HttpClient, 457
HTTP POST method, sending/receiving XML documents, 453
human genome sequence, 188
human memory, limiting factor in programming, 225
hygiene condition for macro expansion, 409
hygienic macro expansion
      KFFD algorithm, 410
      lexical scoping implemented for source code, 410
      solving variable capture problems, 409

I[ Top ]
I/O abstraction independence on FreeBSD, 289
I/O in Haskell, 389-391
      forkIO function, 390
IBM Java function library to integrate RPG systems with client/server software, 460
IBM WebSphere application server, Java Servlet running on, 453
icons, auditory (see auditory icons)
ideal partitioning method (Quicksort), 38
identifier? predicate, 416
identifiers
      comparing, 423
      determining binding associated with, 418
      mapping to bindings with substitutions, 414
      Python, built-in, 294
      unintended variable captures
            introduced bindings and references, 409
            scoping in output instead of input, 408
id-label procedure, 418
if form, 421
if statement (JavaScript), 142
IL (see Intermediate Language)
IL Disassembler, 115
ILGenerator class, 119
      Emit method, 120
image filters, 112
image maps for Bio::Graphics output, 210
image processing code, generating on the fly, 105-127
      FilterMethodCS, 116-118
      FilterMethodIL, 119-127
      graphics functions in Microsoft Windows 1.0, 106-112
ImageFilter class, 115
images held in NumPy array, cropping and shrinking, 304
IMAP
      modifying Cryptonite mail store to use, 182
      performance bottlenecks in Cryptonite mail store after implementing, 184
IMAP server as a mail store (Cryptonite), 175
in situ debugging, 360
inaudible (Emacspeak personality), 511
include form, defining in syntax-case, 413
indexing feature, VB TreeView control, 492
indexing, matrix, 233
indirection, levels of (see additional levels of indirection)
individual rights in the digital age, 161
      protection with communications privacy, 185
infix function (JavaScript), 135
infix operators (JavaScript), 134-136
inheritance structure, complicating code, 261
inheritance, JavaScript objects, 131
inode structure (Linux), 276
<INPUT> tags (HTML) of type hidden, 220
input interface (eLocutor), 487-499
      cache implementation, 495
      clipboard, 498
      common words and favorites, 496
      dynamic tree repopulation, 491
input interface (eLocutor) (continued)
      long click, 489-491
            context-sensitive menu selection, implementing, 489-491
      macros, 499
      retracing paths, 497
      searching, 499
      simple typing, 493
      Templates and Replace, 494
      tree structure presenting options, 488
      typing buffer, editing, and scrolling, 497
input validation (Cryptonite mail system), 179
instance method calls in Java, 290
instructions (fundamental), RISC and CISC computers, 147
integrating business partners (see business partners, integrating using REST)
integration as key to success in large applications, 324
intended variable captures, 411
interactive web applications, use of Bio::Graphics output, 191, 210
Intermediate Language (IL), 112
      algorithm customization on the fly, 127
      assignment and operational logic based on virtual evaluation stack, 120
      dynamic generation of, 119
      function optimization for fast digital filter, 117
      generated by C# compiler, 115
      jump or branch instruction (goto), 120
interrupts, reasons for, 159
intersections of segments, 547
intonation in speech, 506
inventor's paradox, 33
inversion of control in runtime architecture of OO framework, 434
inverted index, constructing with MapReduce, 376
IO actions (Haskell), 398
      list comprehension, used to create list of IO actions, 400
      situations where use is essential, 400
      STM (IO ( )) action type, 403
      STM actions vs. as function types, 400
IPC (interprocess communication) mechanisms, 431
      ACE wrapper facades, 436
      associating concurrency strategy with, 437
IPC::Run module (Perl), 181
ISO-9660 filesystem, initializing vop_vector structure, 280
isolation (Haskell transactions), 392
isXMLDigit( ) method, 64
items (ERP5), 341
iterating over entire blocking chain coherently (in Solaris), 357
iteration, use by NumPy for N-dimensional algorithms, 305
iterations through Python dictionaries, 300
Iterative_Logging_Server, 440
      evaluating, 443
Iterator pattern, instance implemented for socket handle sets, 442
iterators
      designing in NumPy, 307-313
            iterator counter tracking, 310
            iterator progression, 308
            iterator setup, 309
            iterator structure, 312
            iterator termination, 309
      iterator interface in NumPy, 313
      NumPy, origins of, 307
      use in NumPy, 314-318
            anecdotes, 317
            iteration over all but one dimension, 315
            multiple iterations, 316-317

J[ Top ]
J2EE (Java 2 Enterprise Edition), 322
      reliability, 325
      scalability, 325
      SOA based on, in CIP, 323
Java
      Apache Log4J package, 329
      API to access functions running on AS/400 server, 453
      arrays, 52
      binary search algorithm bug, 88
      binary search implementation, 52
      binary search program (example), 52
      class libraries for network programming, 430
      client and data tier of CIP, 322
      conversion of regular expression matcher to, 8
      Framework for Integrated Test (see FIT)
      Hello World program, 478
      indirection in, 290
      library for integrating RPG legacy systems with client/server software, 460
      Python implementation (Jython), 297
      random-number generator and Arrays utilities, 96
      Session class, 78
      Store class, 79
      table lookup, implementation with switch statement, 68
      (see also CIP)
Java Servlet running on IBM WebSphere application server, 453
JavaScript, 130-145
      array and object literals, 144
      assignment operators, 137
      constants, 138
      expressions, 134
      functions, 143
      infix operators, 134-136
      precedence, 133
      prefix operators, 136
      scope, 138-140
      Simplified, 130
      statements, 140-143
      symbol table, 131
      tokens, 132
      web sites creating smart client-side interaction via, 520
JDOM, 60
      bad package designs, 66
      name character verification, first version, 62
Jones, Simon Peyton, 385-406
JSLint, parsing technique (example), 145
jump or branch instruction (Intermediate Language), 120
JUnit, 89
Jython, 297

K[ Top ]
Kent, Jim, 217-228
kernel synchronization primitives, priority inheritance (Solaris), 356
Kernighan, Brian, 1-9
key authentication
      PKI vs. web of trust, 186
      public-key cryptography, 164
key management, integrated interface in Cryptonite, 177
key/expression pair (in JavaScript object literals), 145
key/value pairs, 46
      Python dictionaries, 293
keys
      Python dictionaries
            collisions, 298
            different data types in single dictionary, 294
            looking up, 297
            not ordered, 294
keyword arguments in function calls (Python dictionaries), 300
keyword bindings, 415
keywords
      keyword binding, associating the keyword or with a transformer, 411
      reserving the names of, 409
KFFD (hygienic macro expansion algorithm), 410
Kleene, Stephen, 1
Knuth, D. E., 37
kobject structure (Linux), 274
      changed to use struct kref, 275
Kolawa, Adam, 253-266
kref structure (Linux), 275
Kroah-Hartman, Greg, 267-277
Kuchling, Andrew, 293-301

L[ Top ]
labels, 415
      determined by marks and substitutions in an identifier's wrap, 418
      in Intermediate Language, 121
      mapping to bindings with environments, 418
lambda expressions
      in define-syntax form, 411
      exp-lambda procedure, 421
Lampson, Butler, 279
language independence in CIP, 324
LAPACK, 237-240
      LU factorization, 238
      resources for further reading, 252
      SGBSV routine, 255-260
            implementation details, 261
      SGBTRF routine, 262-265
      (see also ScaLAPACK)
large applications, beauty in, 338
large-scale data processing problems, programming system for (see MapReduce)
layering and indirection, 290
layering of filesystems, 285-287
      on FreeBSD, 282
led (left denotation) method, 134
let form, 422
letrec-syntax forms
      exp-letrec-syntax transformer, 422
letrec-syntax, binding macros within a single expression, 412
let-syntax form, 422
Level-1 BLAS, 235
      use in LINPACK factorization, 236
Level-2 BLAS, 230, 243
Level-3 BLAS, 230, 243
levels of indirection (see additional levels of indirection)
lex (lexical analyzer generator), mapping regular expressions into actions, 288
lexical scoping, implementation by hygienic macro expansion, 410
lexical variable bindings, 415
libgd, 211
likeliest causes first, examining in debugging, 467
linear algebra
      algorithms recast as matrix-matrix operations, 231
      core of scientific computing calculations, 229
      dense linear systems, decompositional approach to solutions, 232
      software for advanced-architecture computers, 229
            motivation for development, 230
linear probing, 298
line-segment intersection algorithms, 547
link counting (PageRank), 56
LINPACK, 235-237
      column-oriented algorithms, use of, 235
      implementation of factorization, 235
      resources for further reading, 252
Linux
      desktop environment for secure mail system, 168
      native filesystem, 279
Linux kernel, 267-277
      development process, how it works, 277
      devfs, problems with race conditions, 268
      device handling in persistent manner, lack of, 268
      devices, physical and virtual portions, 267
      power management for devices, 268
      unified driver and device model, 268
            object reference counting in virtual filesystem layer, 273-276
            pointers to struct device, passing around, 271
            runtime type checking, lack of, 272
            scaling up to thousands of devices, 276
            small objects loosely joined, 277
            struct device as base class for all devices, 268
            sysfs virtual filesystem, 269
LISP
      advice, 505
            extension points, discovery of, 513
            tutorial, 507
      ALGOL-like syntax, attempts at, 130
      macros, 408
      parsing techniques, 130
      procedure definition, 540
list comprehension (Haskell), 400
literals (in JavaScript), 131, 144
      literal symbol in JavaScript parser, 132
load balancing, MapReduce implementation, 379
loadable parameters for services, 337
locality, MapReduce implementation, 379
locking, 287
      bank accounts using locks, 386
      handling of locking assertions, 288
      Mutex wrapper facade for acquiring/releasing locks, 437
      problems with locks, 387
            error recovery, 388
            lost wakeups and erroneous retries, 388
            no support for modular programming, 388
            taking in wrong order, 388
            taking the wrong locks, 388
            taking too few, 387
            taking too many, 387
      Solaris user-level priority inheritance bug, 354-368
      strategies for, 432
Log_Handler class, 438
logging
      CIP streamer service, 329-334
      concurrent logging servers, implementing, 444-450
      log record formats, 432
      networked logging service (example application), 431
      Sawzall language for logs analysis, 382
      sequential logging servers, implementing, 439-444
logging server framework, OO design for, 432, 433-439
      associating concurrency strategy with IPC and synchronization, 437
      commonalities, understanding, 434
      key concepts about OO frameworks, 433
      variation, accommodating, 435
Logging_Server abstract base class, 432, 437
      open( ) and request( ) methods, 438
      run( ) method, 439
logical index into an array, translating to physical index, 160
logical operators (short-circuiting), in JavaScript, 136
longest match, 5
      leftmost longest matching, matchstar function, 6
look-ahead computations, 248
lookdict( ) and lookdict_string search functions, 300
lookup table
      binary format, 70
            loading, 70
            using to check a name, 71
      Java instance method calls dispatched through, 290
lookup type (Gene Sorter columns), 223
loops, escaping in binary search, 54
loose coupling of client applications and middleware services, 324
LU factorization, 230
      error analysis and operation count, 250
      LAPACK SGBTRF routine, 262-265
      LAPACK solution, 238
      multithreaded, 247-250
      recursive, 240-243
      ScaLAPACK solution, 243-245
      simple implementation, 233
Luszczek, Piotr, 229-252

M[ Top ]
m4 macro expander, 408
Mac OS X, development platform for secure mail system, 168
macros
      eLocutor, 499
      offsetof macro, 271
      for syntactic abstraction, types of, 408
      syntax-case macro definition, 411
      (see also syntactic abstraction)
magazines, 356
Mail Daemon (cmaild), Cryptonite, 171
      test suite, 172
mail system (Cryptonite), 162-184
      insights from development process, 162
      mail store, 173
            modifying to use IMAP as backend, 182
            performance bottlenecks with IMAP, 184
            replication, 175, 183
            revamping, 174
Mail::Cclient module (Perl), 184
Mail::Folder module (Perl), 175
Mail::Folder::Shadow module (Perl), 176
Mail::IMAPClient module (Perl), 184
main (I/O action in Haskell), 390
main action (Haskell), 401
Mak, Ronald, 319-338
managed code, 112
mapping (Python), 296
MapReduce, 371-384
      computations easily expressed as MapReduce, 375
      distributed implementation (example), 377-380
            execution overview, 377
      extensions to the model, 380
      programming model, 374
      resources for further reading, 381
      word count program (example)
            C++ implementation, 382
mark-object auditory icon, 514
marks, 413
      appearing in an identifier's wrap, determining associated label, 418
Mars Exploration Rover mission (MER), enterprise system for (see CIP)
match function, 4
matchhere function, 4
      longest matching implementation, 6
matchstar function, 5
      leftmost longest matching, 6
mathematical equations vs. computed solutions, 253
mathematical models, science at the application level, 229
MATLAB, 233
matrix algorithms, 230
      computer architecture effects on, 230
      development with MATLAB, 233
      expressing as vector-vector operations, 231
matrix computations through decomposition, 232
matrix functions built into MATLAB, 233
matrix-matrix operations
      Level-3 BLAS, 230
      linear algebra algorithms recast as, 231
      modularity for performance and transportability, 239
matrix-vector operations
      Level-2 BLAS, 230
      recasting linear algebra algorithms as, 237
      recasting linear algebra in terms of, 231
Matsumoto, Yukihiro, 477-481
mbox files, Cryptonite, 173
Mehta, Arun, 483-501
memory
      check looking at problem size and memory of computer, 265
      conservation of, 258
      content-addressable, 46-49
      usage by binary search, 54
      use of (LAPACK SGBSV routine), 260
memory models for N-dimensional array, 305
menu selection (context-sensitive), in eLocutor long click, 489-491
messenger RNA (mRNA), 218
Meta Classes (ERP5), 343
meta environment (exp procedure), 419
metacharacters (regular expressions), 1, 7
metadata in filesystem layering, 287
method form (syntax-case), 413
Microsoft Intermediate Language (MSIL) (see Intermediate Language)
Microsoft Windows (version 1.0), on-the-fly code generation, 106-112
middleware
      host infrastructure, 430
      in multitiered service-oriented architecture, 320
      services loosely coupled with client applications, 324
      stateless session beans as service providers, 323
Middleware Monitor Utility (CIP), 335
middleware.properties file, 337
midpoint calculation, binary search, 92
      calculateMidpoint( ) method, boundary test for, 94
MIME structure of Cryptonite mail messages, 175, 183
modular programming
      concurrent programming using STM, 404
      not supported by locks and condition variables, 388
      parallel programs less modular, 385
modularity in CIP, 324
modules (Python), contents represented as a dictionary, 294
modulus function, unsigned, 152
Monnerat, Rafael, 339-351
monotone voice with no inflection (Emacspeak), 512
motor disabilities, software designed to accommodate, 483-501
Movement class (ERP5), 342
      representing cash withdrawal and material transfer, 345
movements (ERP5), 341
mRNA (messenger RNA), 218
MSIL (Microsoft Intermediate Language) (see Intermediate Language)
multi-core systems, 231
      effects on matrix algorithms, 231
      multithreading for, 247-250
multidimensional iterators (see NumPy)
multithreaded programs in C, reference counting for structures, 273-276
multithreaded, multi-core processors, data consistency through locking, 287
multitiered service-oriented architecture, 320
mutable variables, reading/writing (Haskell side effect), 390
Mutex wrapper facade, 437

N[ Top ]
naïve-collinear function, 542
names
      single style convention, importance of, 227
      validation in XML, 60
      well-chosen, importance in making code understandable, 226
namespace URIs, caching after verification, 73
NASA's Mars Rover mission, enterprise system for (see CIP)
navigation in eLocutor, 497
NB (block size), 239
N-dimensional arrays, 303
      key challenges in operations, 304
      memory models for, 305
      (see also NumPy)
Neomailbox secure email service, 177
.NET Common Language Runtime, 112
.NET Intermediate Language, 117
networked software, object-oriented framework for, 429-450
      design of logging server framework, 433-439
            commonalities, 434
            key concepts about OO frameworks, 433
            tying it all together, 437
            variations, 435
      implementing concurrent logging servers, 444-450
      implementing sequential logging servers, 439-444
      logging service application, 431
next word (in eLocutor), 493
NFS (Network File System), interposing umapfs over, 285
nodes (ERP5), 341
noncontiguous arrays, 306
notation, regular expression, 2
NPR programs, URL template for (Emacspeak), 521
nucleotides (A,G,C,T), 188
nud (null denotation) method, 134
null match, 4
Null Mutex, 443
Null Object pattern, 437
Null_Mutex facade, 440
nullfs filesystem, implementing the bypass function, 284
NumPy (Python), 303-318
      accessing any region of an array using slicing, 304
      iterator design, 307-313
            counter tracking, 310
            progression, 308
            setup, 309
            structure, 312
            termination, 309
      iterator interface, 313
      iterator origins, 307
      iterator use, 314-318
            anecdotes, 317
            iteration over all but one dimension, 315
            multiple iterations, 316-317
      memory models for N-dimensional array, 305
      N-dimensional array operations, key challenges in, 304
      use of iteration for N-dimensional algorithms, 305

O[ Top ]
object classes (Bio::Graphics), 192
      choosing, 198-200
object literals (JavaScript), 131, 145
object reference counting in Linux kernel virtual filesystem layer, 273-276
object-caching allocator, 356
object-oriented (OO) programming languages
      dynamic dispatch to various subclass methods, 289
      frameworks for networked software, 430
object-oriented framework for networked software, 429-450
      design of logging server framework, 433-439
            commonalities, 434
            key concepts about OO frameworks, 433
            tying it all together, 437
            variations, 435
      implementing concurrent logging servers, 444-450
      implementing sequential logging servers, 439-444
      logging service application, 431
object-oriented programming
      C language and, 8
      method call in Perl, 195
objects
      dynamic, with prototypal inheritance (JavaScript), 131
      polymorphic, in Gene Sorter, 221-224
Objects/dictnotes.txt file, 301
Objects/dictobject.c source file, 301
Observer pattern, 434
offsetof macro, 271
Oliphant, Travis E., 303-318
one-dimensional arrays, 303
online information access with Emacspeak (see web-oriented tools in Emacspeak)
OpCodes class, 120
open addressing, 298
OpenBSD, development platform for secure mail system, 168
OpenPGP, 164
      communicating with in Cryptonite mail system, 181
      key operations made available to users, 166
      MIME-aware mail store, 175
      security embedded in Cryptonite, 165
operating systems
      C language APIs, 429
      database or devfs to handle device naming, 268
      locks for critical operating system structures, 287
      supporting different filesystems, 279
            code to access filesystems, 280
            filesystem layers, 285-287
            FreeBSD using indirection to abstract read function arguments, 282-285
      synchronous event demultiplexing APIs, using with reactive logging server, 441
operation count, 251
operator precedence, 129-145
      JavaScript, 130-145
            array and object literals, 144
            assignment operators, 137
            constants, 138
            expressions, 134
            functions, 143
            infix operators, 134-136
            precedence, 133
            prefix operators, 136
            scope, 138-140
            statements, 140-143
            symbol table, 131
            tokens, 132
      top down, 129
optimistic execution, 394
optimization
      base-case optimization for recursive code, 305
      XML verifier
            caching namespace URIs after verification, 72
            digit character verification, 65
            lookup table, 68-72
            parser-based digit character verification, 66
Order class (ERP5), 347
      source base category, 346
order_validateData script, 349
ordering guarantees (MapReduce), 380
OS X, development platform for secure mail system, 168
Otte, William R., 429-450
overloading, leading to complicated code, 261
ownership of locks, tracking for user-level locks, 363

P[ Top ]
package designs, Java, 66
PageRank, 56
pairs
      key/expression, in JavaScript object literals, 145
Panel class (Bio::Graphics), 192, 198
      configuration options, 197
      image_and_map( ) method, 210
      png( ) method, 212
      SVG images, 212
Parallel BLAS (PBLAS), 245-247
      array descriptors, 246
parallel programs, 385
parallel systems with distributed memory, 231
      effects on matrix algorithms, 231
parallelism
      application in web searches, 56
      (see also concurrency)
parallelized word count program (example), 372
      with partitioned processors, 373
      with partitioned storage, 372
Params::Validate module (Perl), 179
Parse class (Java), 77, 80-83
      doCells( ) method, 80
      doRows( ) method, 80
      doTables( ) method, 79
      ignore method, 80
      last( ) and more( ) methods, 83
      parsing code, 81
      representation of entire HTML document, 82
parser-based digit character verification for XML, 66
parsers
      JavaScript, 130-145
            array and object literals, 144
            assignment operators, 137
            constants, 138
            expressions, 134
            functions, 143
            infix operators, 134-136
            precedence, 133
            prefix operators, 136
            scope, 138-140
            statements, 140-143
            tokens, 132
      top-down operator, 129
      XML, checking for correctness in XML input, 66
parsing techniques in LISP, 130
partitioned processors for parallelized program, 373
partitioned storage for parallelized program, 372
partitioning an index based on binary search in arrays of postings, 56
partitioning function (MapReduce), 380
partitioning in Quicksort, ideal method, 38
paths
      ERP5, 341
      retracing in eLocutor tree structure, 497
Pattern and Matcher classes (Java), 8
pattern matching
      in regular expressions (see regular expressions)
      syntax form in syntax-case, 411
pattern or brush (graphical object), 108
patterns
      applied to networked software, 430
      event-dispatching, 434
      frequently encountered in computer programming, 407
      used in OO logging server framework, 432
Patzer, Andrew, 451-462
PBLAS (Parallel BLAS), 245-247
      array descriptors, 246
PCI and USB devices in Linux sysfs, 269
performance
      indirection and, 291
      poor design as root cause of problems, 259
      Python dictionary implementation and, 294
      recursion and, 305
      regular expression matcher, 6
      testing for binary search, 101
      XML verifiers, correct design vs., 74
Perl, 50
      alarm function, 171
      anonymous subroutines, 207
      AUTOLOAD feature, 176
      BioPerl, Bio::Graphics module and, 188-192
      Crypt::PGP5 module, 173
      Cryptonite mail system, 168
      Emacs's cperl mode, 168
      GD library, 211
      GD::SVG module, 212
      prototype-to-production path, DBD::SQLite module, 173
      summary of quirkier parts of syntax, 195
      Text::Template module, 173
      Tie interface, used to tie Postgres' large objects (BLOBs) to filehandles, 174
Persistence::Database::SQL class, 173
Persistence::Object::Postgres class, 173
Persistence::Object::Simple class, 173
personality text properties (Emacspeak), 508
      converting into audio formatting codes, 510
personnel management (MER mission), 322
Petzold, Charles, 105-127
PGP, 164
      encryption backend for Cryptonite mail, 173
physical index into an array, translating logical index to, 160
pitch setting for flat voice (Emacspeak), 512
pitch-range setting (Emacspeak), 512
pivots, 232
PKI (Public Key Infrastructure)
      reimposition of authoritarian cultural tendencies, 186
      shortcomings of, 164
pointers, 5
      contribution to compact code in regular expression matcher, 9
      function arguments to argument pointers, 282-285
      function pointers dispatching a request to different functions, 289
      function pointers, isolating filesystem implementation from code accessing its contents, 282
      PyDictEntry structures, 296
      runtime type checking lacking on Linux kernel, 272
      to a struct device (on Linux), 271
      to vop_vector structure, 280
polymorphism in Gene Sorter, 221-224
pop method, closing a scope in JavaScript parser, 139
population count, 147-160
      basic methods, 148
      comparing for two words, 153
      counting 1-bits in an array, 154-159
      divide and conquer strategy, 149-151
      HAKMEM memo, 151
      sum and difference of two words, 152
      uses of, 158
      uses of population count instruction, 158
portal (CMF), 340
Portal classes, 344
portal_types service, 342
POST and GET requests over HTTP, services exposed through, 452
Postgres database, object persistence, 173
postings, searching with, 55
postmortem debugging, 360
Practice of Programming, The, 2
Pratt, Vaughan, 129
pre-action and post-action hooks, 517
precedence, 133
      (see also operator precedence)
precedence levels (see binding powers)
predecessor base category, 349
prediction
      in eLocutor dynamic tree repopulation, 491
      evaluating efficiency of for typing in eLocutor, 500
      word completion and next word in eLocutor, 493
prefix operators (in JavaScript), 136
preprocessor macros (C), 408
priority inheritance, 356-368
      getting it correct, 357
      implementing for user-level locks, 363
      user-level locks
            waiving, 366
      user-level, debugging, 360-366
priority inversion, 355
privacy in communications, protecting individual rights, 185
private keys, user identify tied to in Cryptonite, 167
processor-independent Intermediate Language (see Intermediate Language)
product-line architecture, 432
programming languages, syntactic abstraction mechanisms, 407
Programming Pearls, 30, 87
Programming Windows with C#, 114
programs generating code while running, 106
progress report for large programs, 51
Project (ERP5), 346-351
      coding, 347-351
            typical project domain attributes and behavior, 348
      relations with Trade, 346
project management, 346
project, defined, 346
pronunciation rules (text preprocessing in Emacspeak), 510
property sheets, 343
      DeliveryLine class, 344
protein-coding genes, 188
prototypal nature, JavaScript, 131
public key cryptography, 186
Public Key Infrastructure (PKI)
      reimposition of authoritarian cultural tendencies, 186
      shortcomings of, 164
public keys tied to contacts in the user's address book (Cryptonite), 167
public-key cryptography, 163
      key authentication, 164
punctuation characters, repeated strings (text preprocessing in Emacspeak), 510
punctuations setting (Emacspeak), 512
put-text-property function, advice implementation, 508
PyArrayIterObject structure, 312
PyDict_SetItem( ) function, 300
PyDictEntry structure, pointers in, 296
PyDictObject structure, 295
      ma_lookup field, pointer to function for looking up keys, 297
      special-case optimization for small hashes, 297
PyIntObject type, 298
PyObject structure, 298
PyStringMap class (Jython), 297
PyStringObject type, 298
Python
      delta debugging algorithm implementation, 471
      dictionaries, 293-301
            basic operations on, 293
            C implementation of Python, 294
            collisions, 298
            iterations and dynamic changes, 300
            keys and values of different data types in single dictionary, 294
            keys not ordered, 294
            passing keyword arguments to a function, 294
            PyDictObject structure, 295
            representing module contents, 294
            resizing, 299
            special-case optimization for small hashes, 297
            special-casing, when it's worthwhile, 297
      download site, 293
      ERP5, 339
            document structure is implemented as portal class, 340
      iterators, 305
      NumPy, 303-318
            iterator design, 307-313
            iterator interface, 313
            iterator origins, 307
            iterator use, 314-318
            key challenges in N-dimensional array operations, 304
            memory models for N-dimensional array, 305
python command (Mac OS and Linux), 293

Q[ Top ]
Quicksort program, 29-40
      aphorisms about beauty, 39
      ideas for refining code, 39
      paring down code while increasing function, 31-36
            average comparisons as pseudocode, 33
            calculation with code moved out of loop, 34
            calculation with dynamic programming, 34
            calculation with inner loop removed, 35
            calculation with symmetry, 34
            counting comparisons used in array sort, 31
            final version of calculation, 36
            increment moved out of loop, 32
            inserting element into binary search tree, 38
            skeleton implemented as a function, 33
            skeleton reduced to counting, 32
            skeleton with single size argument, 33
            techniques used, mathematical analysis of, 37
            techniques used, summary of, 37
      quicksort( ) function, 30
quote form (syntax-case), 415
      exp-quote procedure, 421

R[ Top ]
Rails, pursuit of brevity and DRY, 479
Rake (build tool), 480
Rakefile (example), simplicity of Ruby code, 480
Raman, T. V., 503-525
random numbers
      generating binomially distributed random integers, 160
random-number generator facility of NumPy, 317
ranking search results, 56
raster operations, 107-112
      BitBlt and StretchBlt functions, Windows 1.0, 108
Reactive_Logging_Server
      evaluating, 443
      main program that uses the socket API, 442
Reactive_Logging_Server class, 441
Reactor pattern, 434
readability of code, 477-481
Recall replication framework, 175
records (faulty), skipping in MapReduce implementation, 380
recursion, 6
      contribution to small, clean, elegant code, 9
      for loops looping over N-dimensional arrays, 304
      LU factorization, 240-243
Recursive Descent, 129
Recursive LU Algorithm, basic steps, 242
redundancy, eliminating in code, 479
reentrant functions, 227
re-execution (transactions in STM), 394
re-expression and symmetry in programming, 34, 37
ref( ) function (Perl), 208
references (variable), capture by a variable binding, 408-411
regexps (see regular expressions)
regular expression matcher
      implementation, 3
      reasons for compactness of code, 8
      termination conditions, 6
regular expressions, 1-9, 43-46
      for input validity in Cryptonite mail system, 179
      mapping into actions with lex, 288
      notation, 2
      program for printing article-fetch lines (example), 43-46
regulatory DNA, 188
regulatory protein bound to specific site of the DNA, 206
relational databases
      in eLocutor, 486
            predictor databases, 493
      ERP5, 341
      Gene Sorter and, 223
relationship managers (ERP5), 345
reliability of CIP, 325
      streamer service, 328-336
            logging, 329-334
Replace feature (eLocutor), 494
replication, Cryptonite mail store, 175, 183
Replication::Recall module (Perl), 175
Representational State Transfer (see REST)
representations (syntax-case expansion algorithm), 414
reserved words, 139
resources (ERP5), 341
REST (Representational State Transfer), 452-462
      exchanging data using e-business protocols, 457-462
      exposing services to external clients, 452-455
            defining service interface, 453-455
      routing the service using factory pattern, 456-457
restrictions built into code, causing difficult-to-find errors, 259
retrieval of data, 230
return statement (JavaScript), 143
reuse of code
      ERP5, 351
      promoted by good design and clear, concise code, 261
reusing data to reduce memory traffic, 239
reverse web link graph, constructing with MapReduce, 376
revision number, 12
right associative operators (JavaScript), 136
right mouse button as single binary input for eLocutor, 487
RISC computers
      with cache hierarchies, 230
            effects on matrix algorithms, 231
      fundamental instructions, 147
      population count
            basic methods, 148
river meandering, model of, 547
RNA sequences, 188
RNA, messenger RNA (mRNA), 218
robustness
      CIP (Collaborative Information Portal), 336-337
            dynamic reconfiguration, 337
            hot swapping, 337
      (see also debugging; testing)
Rosettanet e-business protocol, 453
      exchanging requests and responses using, 457-462
      web site, 457
RowFixture class (Java), 77
RPG legacy systems, integrating with modern client/server software, 460
RSS and Atom feeds, 522
rsync's rolling checksum algorithm, 11
Ruby programming language, 43-49
      array implementation, 52
      beautiful code support
            brevity (Hello World example), 478
            brevity and DRY, 479
            familiarity, 479
            simplicity, 480
      counting article fetches, 47
      delimiting code blocks, 48
      optimizing program that reports most popular articles, 49
      stripped-down design, 46
runtime environment (exp procedure), 419

S[ Top ]
same-marks? predicate, 418
Santa Claus problem (concurrent program using STM), 396-403
Savoia, Alberto, 85-103
Sawzall language for logs analysis, 382
scalability
      of beautiful code, 259
      CIP, 325
Scalable Vector Graphics (SVG) images, 212
ScaLAPACK
      LU factorization, 243-245
      PBLAS (Parallel BLAS), 245-247
Scheme language
      expanding expressions containing macros into expressions in the core language, 424
      primitives for converting strings to and from symbols, 415
      quasiquote syntax for creating list structure, 415
      syntax-case, 411
      transformation of or form into let and if, 408
Schmidt, Douglas C., 429-450
scientific method, applied to program failures, 466
scope, 138-140
      functions, 143
      new scope for a function or a block, 140
      OO framework, 434
scripting language (MATLAB), 233
scrolling in eLocutor, 498
searches, 41-57
      binary search, 52
            advantages and disadvantages, 54
      content-addressable storage, 46-49
      emacspeak-websearch module for task-oriented search, 517-520
      escaping the loop, 54
      optimizing program that reports most popular articles, 49
      postings, 55
      ranking results, 56
      regular expressions, 43-46
            using in program that prints article-fetch lines, 43-46
      time involved in running and programming, 41
      web searches, 56
      weblog data, 42
      writing search algorithm, 50
secure communications, 161-186
      complexity of secure messaging, untangling, 163
      Cryptonite mail system, 162-184
      hacking the civilization, 185
      privacy protection for individual rights, 185
Seiwald, Christopher, 527-537
self-evaluating? predicate, 417
sequential concurrency models, implemented in logging servers, 439-444
serialization, Cryptonite messages, 170
Service class (Cryptonite), 170
Service class (example), 454
service-oriented architecture (see SOA)
services
      exposing to external clients, 452-455
      in multitiered service-oriented architecture, 320
Session class (Java), 78
session key, Gene Sorter, 220
sets, computing size for sets represented by bit strings, 158
s-expression, 412
      conversion to/from syntax object using datum->syntax, 424
      representing a quote form, 421
      representing an if form, 421
SGBSV routine (LAPACK library), 255-260
      implementation details, 261
shadow folder for mailbox messages, 176
shadowed folder for mailbox messages, 176
shards, 56
sharpness filter, 113
shift right immediates instruction, 151
short-circuiting logical operators (JavaScript), 136
shortest match, 5
side effects
      in Haskell, 389-391
            being explicit about, 391
      minimizing, 227
sideways sum (see population count)
Simple Object Access Protocol (SOAP), 452
SimpleItem property sheet, 343
simplicity in code, 261
      Ruby programming language, 480
Simplified JavaScript, 130
single binary input for eLocutor, 487
single-binding let forms, transforming with exp-let procedure, 422
single-binding letrec-syntax forms, 422
single-chip multi-core machines, 231
skipping bad records (MapReduce), 380
slicing, 304
slopes
      calculating, 542
      comparing to test collinearity, 544-545
      measurement with respect to the y-axis, 543
small pieces of code, practicing with, 40
smoke tests, 91
SMP (symmetric multiprocessing) machines, 231
SOA (service-oriented architecture)
      loose coupling of services with client applications, 324
      three-tiered, CIP implementation, 322
SOAP, using REST over, 452
SOCK_Acceptor type, 443
software
      bugs as "spoonful of sewage in the barrel of wine", 353
      correctness and purity of, 353
      operated with a single button, 483-501
software engineering principles, 368
software systems, 40
Software Transactional Memory (see STM)
Solaris
      development of critical kernel subsystem, 354
      interaction between kernel memory allocator and Zettabyte Filesystem (ZFS), 356
      priority inheritance for kernel synchronization primitives, 356
      user-level priority inheritance, debugging, 360-366
sorting
      distributed, performing with MapReduce, 376
      MapReduce, ordering guarantees, 380
      sort function, 31
      (see also Quicksort program)
source_project base category, 347
      retrieving tasks of a project, 348
sparse matrices, 230
specifications for code, incompleteness of, 260
speech delivery in eLocutor, 499
speech output, styling with Aural CSS (ACSS), 511-516
speech servers, 504
speech-enabling Emacs, 505-516
      advice tutorial, 507
      first-cut implementation, 505
      generating rich auditory output, 507-511
      implementing event queue in speech server, 505
spin lock (thread lock) in Solaris, 358
Spinellis, Diomidis, 279-291
splitting text into appropriate clauses (Emacspeak), 510
spoken output, producing, 504
"spoonful of sewage in the barrel of wine," software bugs as, 353
SQL
      code to fetch data for Gene Sorter association columns, 224
      mail storage backend (Cryptonite), 175
SQL database, integration with cookie and hidden variable mechanisms, 220
sqrt returning an irrational result, 546
standards-based applications, beauty of, 324
start position (genomic features), 190
stateful session beans, 323
      CIP streamer service, 326
stateless session beans, 323
      CIP streamer service provider, 326
statements (JavaScript), 140-143
std (statement denotation) method (JavaScript tokens), 140
Stein, Lincoln, 187-215
STM (Software Transactional Memory), 386, 388-405
      implementing transactional memory, 394
      Santa Claus problem (example program), 396-403
      side effects and I/O in Haskell, 388-391
      summary of basic operations, 396
      transactions in Haskell, 392-393
STM actions, 392
      forming a list and combining with orElse, 403
      giving functions STM types wherever possible, 400
storage and retrieval of data, 230
Store class (Java), 79
Strategy pattern, 437
streamer service (CIP), 325-336
      functionality, 325
      reliability, 328-336
            logging, 329-334
      service architecture, 326
streaminess (Subversion interface), 23
stress tests, 369
StretchBlt function (Windows 1.0), 106
      raster operations, 108
string-specialized dictionary type, 297
strip procedure, 415
structures
      base structure field defining pointer type, 272
      dictionary structures no longer in use, 300
      holding packed function arguments, 288
      inheritance and manipulation on Linux kernel, 269-272
      in multithreaded programs, reference counting, 273-276
      NumPy iterator, 312
      PyDictObject, 295
      PyObject, 298
      struct_inode and struct_dentry, putting in kernel caches, 277
subfeatures and sub-subfeatures (genomic features), 190
subroutines, logical division of tasks into, 265
substitutions, 413
      appearing in an identifier's wrap, determining associated label, 418
      mapping a symbolic name and list of marks to a label, 415
subsystem, same design assumptions for memory usage as main system, 261
subtracts instruction, 151
Subversion, delta editor, 11-28
summing factor technique, 37
SVG (Scalable Vector Graphics) images, 212
svn_delta_editor_t (see delta editor)
svn_error_t (Subversion error type), 17
svnsync functionality (Subversion), 27
switch statements (Java), 68
      problems with larger groups of cases, 70
symbol table (JavaScript parser), 131
symmetric multiprocessing (SMP) machines, 231
symmetry, exploiting in tuning Quicksort loop, 34
synchronization mechanisms
      ACE wrapper facades, 436
      associating concurrency strategy with, 437
synchronized methods, 386
synchronous event demultiplexing APIs (operating systems), 441
SyncML protocol, 341
syntactic abstraction, 407-428
syntax form, 411
      use by expander, 420
syntax objects, 414
      conversion of s-expressions to/from, using datum->syntax, 424
      nonatomic structure, determining, 416
      parsing and constructing, 423
      stripping, 415
syntax->datum procedure, 413
syntax-car operator, 423
syntax-case
      expander example, 425-427
      expansion algorithm, 413-425
            comparing identifiers, 423
            conversions, 424
            core transformers, 421-423
            creating wraps, 417
            expander, 419-421
            identifier resolution, 418
            manipulating environments, 418
            parsing and constructing syntax objects, 423
            producing expander output, 415
            representations, 414
            starting expansion, 424
            stripping syntax objects, 415
            structural predicates, 416
            syntax errors, 416
      introduction to, 411-413
            datum->syntax procedure, 413
            hygiene, bending or breaking, 412
            input or output form followed by ellipsis, 412
            macro definition, 411
            method form, 413
            with-syntax form, 413
syntax-case form, 411
      use by expander, 420
syntax-case system, 411
syntax-cdr operator, 423
syntax-error, 416
syntax-pair? operator, 423
syntax-rules system, 410
sysfs (Linux), 269
      excessive memory usage, 276
      rewriting code to put struct inode and struct dentry structures in kernel caches, 277
systematic debugging, 466
      further reading, 476

T[ Top ]
table lookup, 68
      using in population count, 149
tallying, history of, 50
Task Report workflow, 350
task reports (ERP5), 347
taskReport_notifyAssignee script, 350
tasks (ERP5), 347
      associated with a project, 347
            retrieving, 348
      task predecessors, 349
      Task workflow, 349
TCL language, implementation of Emacspeak speech servers, 504
template identifier, 412
Template Method pattern, 432
      in Logging_Server base class run( ) method, 450
      structure and application to logging server, 435
template specifying output in define-syntax form, 412
Templates (in eLocutor), 494
term vector per host, constructing with MapReduce, 376
termination conditions (regular expression matcher), 6
ternary operator (?:) in JavaScript, 135
ternary raster operation, 108
testing, 85-103
      beauty in tests, 86
      binary search, 87, 90-102
            boundary value tests, 92-95
            performance, 101
            random testing, 95-100
            smoke test, 91
      continuous, 467
      Cryptonite mail system, 172
      FIT (Framework for Integrated Test), 75-84
      importance of test programs, 260
      JUnit testing framework, 89
text delta (Subversion), 17
text preprocessing before sending to speech server (Emacspeak tts-speak), 510
text searches, 55
text, splitting into clauses for speech synthesis, 506
Text::Template module (Perl), 173
Thompson, Ken, 1
thread lock, 358
three-dimensional arrays, 303
time management (MER mission), 321
tokens
      JavaScript, 132
            arity, 132
            precedence decisions, 133
            std method, 140
      token-based C preprocessor macros, 408
Top Down Operator Precedence, 129
top mark, 416
Track class (Bio::Graphics), 198
tracks (Bio::Graphics module), 193-195
      configuration options, 196
      positions and relative strengths of DNA/protein binding site, 206
      subclass of Glyph, 199
Trade BT, 346
trailing 0s in a word, computing number of, 159
transaction log, 394
transactional memory, 386, 405
      (see also STM)
transactions (in Haskell), 392-393
transformers, 411
      core, 421-423
transposition operator ('), 233
transposons, 218
tree delta (Subversion editor), processing each piece upon creation, 23
tree structure presenting options in eLocutor, 487, 488
      dynamic repopulation, 491
tree transformation, version control and, 12-15
triangle inequality, testing collinearity by, 545
triangle-collinear function, 546
tts-format-text-and-speak function (Emacspeak), 510
tts-speak function, 507
tts-speak module (Emacspeak), 510
tts-speak-using-voice function, 511
turnstile_block( ) function, 354
turnstile_pi_waive( ) function, 366
turnstiles (Solaris), 354
      priority inversion, 355
two-dimensional arrays, 303
type (bindings), 415
type checking for pointers, 272
type signature (Haskell), 389
TypeAdapter class (Java), 77
typing in eLocutor, 493, 497
      speeding up, 485

U[ Top ]
UBM (Unified Business Model), 341
udev tool (Linux), 272
ufs filesystem (BSD 4.2), 283
umapfs filesystem, 282
      interposing over NFS implementation, 285
understandable code, keys to, 225-228
      brevity and simplicity of code, 261
      documentation, 227
      effect of indirection on comprehension of code, 291
      limits of human memory, 225
      minimizing side effects, 227
      single, consistent style for names, 227
      using scope as local as possible, 227
      well-chosen names, 226
unhygienic macro expansion, 410
Unicode code points in XML, 60
Unified Business Model (UBM), 341
Unix operating system
      input and output sources, uniform treatment of, 289
      read system call variants, 289
      socket API, 429
Unix-related operating systems, use of function pointers, 282
unordered hash (Perl), 195
unsigned modulus instruction, 152
URIs (Uniform Resource Identifiers), caching after verifying for XML input, 73
URL templates (Emacspeak), 520
      Google News searches via Atom feeds, 522
      retrieving weather for a city or state, 522
usability considerations in public-key cryptosystems, 166
USB devices in Linux sysfs, 269
USB sticks, FAT-32 filesystem, 279
usb_interface structure (Linux), 271
      pointer, getting with container_of macro, 272
      structures embedded within other structures, 276
user key for Gene Sorter, 220
user-defined control structures (in Haskell), 391
user-level priority inheritance bug, Solaris, 354-368

V[ Top ]
validation
      transaction log, 394
      user input, Cryptonite mail system, 179
      XML, 59
validity (XML), 60
value (bindings), 415
values
      Python dictionaries
            different data types in a single dictionary, 294
      searching for, 46
var statement (JavaScript), 141
variabilities in OO framework analysis, 434
variable capture problems, 408-411
      solving with hygienic macro expansion, 409
variable names, Perl, 195
variables
      CGI, 220
      defining in current block (JavaScript), 141
      naming, understanding purpose from the name, 226
      reading/writing a mutable variable, side effect in Haskell, 390
      scope in JavaScript, 138-140
VB (Visual Basic), 485
      TreeView control, 488
            indexing feature speeding up retrieval, 492
vector machines, 230
      vectorization of linear algebra algorithms, 237
vector of I/O requests, Unix read system calls, 289
vectorization and parallelism, algorithmic approach for exploiting, 230
vector-vector operations
      denoted by Level-1, 235
      expressing matrix algorithms as, 231
verifiers, XML (see XML verifiers)
version-control system (see Subversion, delta editor)
vertical line, y-intercept, 542
virtual evaluation stack (in IL), 120
virtual machines, 290
vnode call interface, FreeBSD version 6.1 implementation, 288
vnodeop_desc structure, 286
voice overlays (Emacspeak), 512
voice-lock (Emacspeak), 508
voice-monotone, ACSS setting corresponding to, 512
vop_generic_args structure (FreeBSD), 286
vop_vector structure (FreeBSD), 280
      filesystem layering support, 282
      pointer to a bypass function, 284
      pointer to vop_vector structure of underlying filesystem layer, 284
      populating bypass and default fields, filesystem choices resulting from, 284

W[ Top ]
waking up threads in Solaris, 354
Warren, Henry S., Jr., 147-160
web applications, use of Bio::Graphics output, 191, 210
web link graphs, constructing with MapReduce, 376
web of trust
      key authentication stronger than PKI, 186
      key management interface in Cryptonite, 177
      visibility of information in Cryptonite Key Ring view, 166
web page for this book, xxi
web searches, 55, 56
web services
      communication between client applications and middleware services, 324
      use by CIP streamer service for client requests and responses, 326
Web Services architecture, decision points for choosing, 452
web site for this book, 382
web.xml file for servlet providing user interface, 454
web-based genome browsers based on Bio::Graphics, 211
weblogs, searching, 42
web-oriented tools in Emacspeak, 516-522
      basic HTML with Emacs W3 and ACSS, 517
      feed readers, 522
      Web command line and URL templates, 520
      websearch module for task-oriented search, 517-520
webs of trust, 164
well-formedness (XML), 60
Wheeler, David, 290
while loop, 4
while statement (JavaScript), 142
wildcards
      in regular expressions, 1
      shell, modifying regular expressions to resemble, 8
window handler (Subversion), 17
Windows Forms code (ImageClip program), 114
Windows operating systems
      native filesystem, 279
      threading API, 429
Wingerd, Laura, 527-537
with-syntax form, 413
word completion in eLocutor, 485, 493
word count program (example), 371-374
      C++ implementation, 382
      division of problem into Map and Reduce functions, 374
      parallelized, 372
      parallelized word count program
            with partitioned processors, 373
            with partitioned storage, 372
word groupings in eLocutor, 486
words, common (eLocutor), 496
workflows (ERP5)
      implementing task behavior, 349
      Task Report, 350
working copy (Subversion), 15
Wrapper Facade pattern, 432, 436
wrapper facades, use in sequential logging server implementation, 444
wraps, 413
      creating, 417
      stripping, 415

X[ Top ]
XML
      assembling XML response, 462
      parsing data using XPath, 458-462
      request/response data via HTTP POST, 453
      Version 1.0 specification, 61
XML technologies, ERP5 reliance on, 341
XML verifiers, 59-74
      first optimization, Version 3, 64
      fourth optimization, caching namespace URIs after verification, 72
      name character verification, version 1, 62
      role of validation, 59
      second optimization, Version 4, 66
      third optimization, lookup table, 68-72
      XML-based named character verification, Version 2, 63
XMLObject class, 343

Y[ Top ]
yacc (parser generator), input of language grammar and production rules, 288
Yahoo! Maps, accessing directions with emacspeak-websearch tool, 518
y-intercept of a vertical line, 542

Z[ Top ]
Zeller, Andreas, 463-476
ZFS (Zettabyte Filesystem), 356
Zimmermann, Phil, 164
ZODB, 340
Zope platform, 339, 342-346
      CMF (Content Management Framework), 340, 342
      key components used by ERP5, 340
ZPT (Zope Page Templates), 340

	

Zurück zu Beautiful Code


Themen

Buchreihen

Special Interest

International Sites

O'Reilly China O'Reilly USA O'Reilly Japan O'Reilly Taiwan