[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Here it is.



A veritable stampeeeeed of interest.  So here goes.
Doug Johnson's Paper in postscript follows.

-- Rob.

=============================================================================
%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: language.dvi
%%Pages: 13 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 37 125 df<0001C0000001800000018000000180
000003800000030000000300000003000000070000000600000006000000060000FFFFFFC0FFFF
FFC0000C0000000C0000001C000000180000001800000018000000380000003000000030000000
30000000700000006000001A1A7B9620>43 D<1C3C3C3C3C0C1C18387070E0C0060D7D840D>I<
FFC0FFC0FFC00A037D890F>I<70F8F8F0F005057B840D>I<007C00FE0387030306030E030C031C
031C031807380738073807700E700E700E700E601CE01CE018E038E030E070606071C03F801E00
101B7B9A15>48 D<0006000E001C003C007C07FC07B80038007800780070007000F000F000E000
E001E001E001C001C003C003C0038003800780FFF8FFF80F1B7C9A15>I<007C01FE03C707070E
030E031C031C031C073C073807380F380F381E1C3E1FFE0FFE021C001C00387038F070F0E0F1C0
E780FF007C00101B7B9A15>57 D<01FFFF0001FFFF80003E03C0003C01E0003C01E0003C00E000
7C00E0007801E0007801E0007803C000F8078000F00F0000FFFE0000FFFC0001F03E0001E00F00
01E0078001E0078003E0078003C0078003C0078003C0078007C00F0007801E0007803E000F807C
00FFFFF000FFFFC0001B1C7E9B1D>66 D<0007F060003FFCE0007E1FE001F007C003E007C00780
03C00F0003C01F0003801E0001803C0003803C000380780000007800000078000000F8000000F0
000000F0000000F0000000F0000C00F0000C00F0001C0070001800780038007C0070003E00E000
1F83C0000FFF000003FC00001B1C7A9B1E>I<01FFFFF001FFFFF0003E01F0003C00F0003C0060
003C0060007C006000781860007818600078386000F8300000F0700000FFF00000FFF00001F0E0
0001E0600001E0600001E0E1C003E0C18003C0038003C0030003C0070007C0070007800E000780
1E000F807C00FFFFFC00FFFFF8001C1C7E9B1C>69 D<01FFFE0001FFFF80003E03C0003C01E000
3C01E0007C01E0007C01E0007801E0007801E000F801C000F803C000F0038000F0070001F01E00
01FFFC0001FFF00001E0000003E0000003E0000003C0000003C0000007C0000007C00000078000
00078000000F800000FFF00000FFF000001B1C7E9B1C>80 D<001F8C007FFC00F0FC01C07803C0
3803803807803807003007000007800007C00007F80007FF0003FF8001FFC0003FC00007C00003
C00001C00001C03001C03003C0700380700780780F007E1E00FFFC00C7F000161C7D9B17>83
D<1FFFFFC03FFFFFC03E0F87C0380F01C0700F0180600F0180601F0180E01E0180C01E0180C01E
0180003E0000003C0000003C0000003C0000007C000000780000007800000078000000F8000000
F0000000F0000000F0000001F0000001E0000001E0000003E000007FFF00007FFF00001A1C799B
1E>I<FFE3FF8FF8FFE3FF0FF81F007803E01E007801801E007803001F00F803000F00F806000F
01F806000F01F80C000F03780C000F037818000F067838000F067830000F0C7860000F0C786000
0F1878C0000F3878C0000F307980000F607980000F607B00000FC07B00000FC07E00000F807E00
000F807C00000F003C00000F003800000E003800000E00300000251C789B29>87
D<03DC000FFC001E7C001C3C00383C00783800703800707800F07800E07000E07000E0F380E0F3
80E1E300E1E300F7E6007FFE003C7C0011127B9115>97 D<3F007F000F000F000E000E000E001E
001C001C001C003FE03FF03E703C307838703870387078F070E070E070E0F0E0E0E1E0E1C0F780
7F003E000D1D7B9C13>I<01F007F80F3C1C3C387C783870007000F000E000E000E000E000E018
E03870F07FE01F800E127B9113>I<001F80003F80000780000780000700000700000F00000F00
000E00000E00001E0003DE000FFC001E7C001C3C00383C00783800703800707800F07800E07000
E07000E0F380E0F380E1E300E1E300F7E6007FFE003C7C00111D7B9C15>I<03F007F81F383C18
3818781870787FF0FF80E000E000E000E000E018E03870F03FE01F800D127B9113>I<0003E000
0FE0000FF0001DF0001CE0001C00003C0000380000380000380000380003FF8007FF8000700000
700000700000F00000E00000E00000E00000E00001E00001C00001C00001C00001C00003C00003
8000038000038000038000070000F70000F70000FE0000FC00007800001425819C0D>I<007B80
01FF8003CF800387800707800F07000E07000E0F001E0F001C0E001C0E001C1E001C1E001C3C00
1C3C001EFC000FFC0007B800003800007800007800F07000F0F000F1E000FFC0007F0000111A7E
9113>I<0FC0001FC00003C00003C0000380000380000780000780000700000700000F00000FFC
000FFE000FCE001F0E001E0E001E0E001C0E003C1E003C1C00381C00383C007838E07838E07078
C07071C0F07B80F03F00E03E00131D7D9C15>I<01C001E001E001C00000000000000000000000
001F003F0077806380E780C7000F000E000E001E001C001CE03CE038C039C03B803F801E000B1C
7D9B0D>I<000E001E001E001E00000000000000000000000001F003F8073806380E380C380038
007800780070007000F000F000E000E001E001E001C001C003C003C0F380F780FF00FE00F8000F
24819B0D>I<1F803F8007800780070007000F000F000E000E001E001E001C001C003C003C0038
0038007800780070007000F700F700E600E600EE00FC007C00091D7C9C0B>108
D<1E1F87E03F7FDFF077F1FC7067C1F070E7C1F070C781E0700701C0700F03C0F00F03C0E00E03
80E00E0381E01E0781C71E0781C71C0703C61C07038E3C0F03DC3C0F01F8380E01F020127D9122
>I<1E3F003F7F8077F38067C380E78380C783800703800F07800F07000E07000E0F001E0E381E
0E381C1E301C1C703C1EE03C0FC0380F8015127D9117>I<01F007F80F3C1C1C380C780E700E70
1EF01CE01CE01CE03CE038E070E0F071E07FC01F000F127B9115>I<078F800FDFC01DF9C019F0
C039E0E031C0E001C0E003C1E003C1C00381C00381C00783C00783800787800787000FDE000FFC
000EF8000E00001E00001E00001C00001C00003C0000FF8000FF8000131A7F9115>I<1E3E3F7F
77E767C7E78FC78F070F0F000F000E000E001E001E001C001C003C003C00380010127D9112>
114 D<03F007F80F3C0E3C1E7C1E381F001FE00FF00FF000F82078F070F070F0F0E1E07FC03F80
0E127D9111>I<01C001C001C003C003C0038003800780FFE0FFE007000F000F000E000E001E00
1E001C001C003C703C70386038E039C03F801F000C1A7D990E>I<1F03803F8380738380638780
E38780C78700070700070F000F0F000E0E000E0E000E1E701E1E701C1C601E3C600E7CC00FFFC0
07CF8014127D9116>I<1F073F8773876383E383C783070307070F060E060E060E0E1E0C1E1C0E
180E380FF007E010127D9113>I<1F01C3803F81C3807381C3806383C180E3838180C783818007
038180070783800F0703000E0703000E0703000E0707000E0F06000E0F0E000E1F0C000F3F1C00
07FFF80003F3F00019127D911C>I<1F03803F8380738380638780E38700C78700070700070F00
0F0E000E0E000E0E000E1E001E1C001C1C001E3C000E7C000FF80007F800003800007800387000
78F00079E00073C0007F80003E0000111A7D9114>121 D<FFFFFFFFF8FFFFFFFFF825027B8B2A>
124 D E /Fb 39 122 df<7CFEFEFEFEFE7C07077D860D>46 D<00600001E0000FE000FFE000F3
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E0007FFF807FFF80111B7D9A18>49
D<07F8003FFF00787F80F81FC0FC0FC0FC0FE0FC0FE0FC07E07807E0000FE0000FE0000FC0001F
80003F00003E00007C0000F00001E00003C0600780600F00601C00E03FFFC07FFFC0FFFFC0FFFF
C0FFFFC0131B7E9A18>I<07F8001FFF003C3F807C1FC07C0FC07E0FC07C0FC03C1FC0001F8000
3F80007F0003FC0003F800003F00001F80000FC0000FE0000FE0780FE0FC0FE0FC0FE0FC0FE0FC
0FC0F81FC0783F803FFF000FF800131B7E9A18>I<000380000780000F80001F80001F80003F80
007F8000EF8001CF80038F80070F80060F800C0F801C0F80380F80700F80E00F80FFFFF8FFFFF8
000F80000F80000F80000F80000F80000F8001FFF801FFF8151B7F9A18>I<1C03801FFF801FFF
801FFF001FFC001FF8001FC0001800001800001800001BFC001FFF001E1F801C0FC01807C00007
E00007E00007E07807E0F807E0F807E0F807E0F80FC0700FC07C3F803FFE0007F800131B7E9A18
>I<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF00000
1BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF00
03FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E
9B24>65 D<FFFFF800FFFFFF000FC01F800FC00FC00FC00FC00FC00FE00FC00FE00FC00FE00FC0
0FE00FC00FE00FC00FC00FC01F800FFFFF000FFFFE000FC03F800FC00FC00FC007E00FC007E00F
C007F00FC007F00FC007F00FC007F00FC007F00FC007E00FC00FE00FC01FC0FFFFFF80FFFFFC00
1C1C7E9B22>I<001FF06000FFFCE003FC1FE00FE007E01FC003E01F8001E03F0000E07F0000E0
7F0000E07E000060FE000060FE000000FE000000FE000000FE000000FE000000FE000000FE0000
007E0000607F0000607F0000603F0000E01F8000C01FC001C00FE0078003FC1F0000FFFC00001F
F0001B1C7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00FC003F00FC001F80FC001F80FC0
00FC0FC000FC0FC000FC0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0F
C000FE0FC000FC0FC000FC0FC000FC0FC001F80FC001F80FC003F00FC007E00FC01FC0FFFFFF00
FFFFF8001F1C7E9B25>I<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC00380
0FC181800FC181800FC181800FC180000FC380000FFF80000FFF80000FC380000FC180000FC180
000FC180600FC180600FC000E00FC000C00FC000C00FC001C00FC001C00FC003C00FC00F80FFFF
FF80FFFFFF801B1C7E9B1F>I<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF101C7F9B12>73
D<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC0060FC00E0FC01E0FC0
7EFFFFFEFFFFFE181C7E9B1D>76 D<FFFFF800FFFFFE000FC03F800FC01F800FC00FC00FC00FE0
0FC00FE00FC00FE00FC00FE00FC00FE00FC00FE00FC00FC00FC01F800FC03F800FFFFE000FFFF8
000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0
0000FFFC0000FFFC00001B1C7E9B21>80 D<003FE00001FFFC0003F07E000FC01F801F800FC01F
800FC03F0007E07F0007F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8
FE0003F8FE0003F8FE0003F87E0003F07E0003F07F0007F03F0F87E03FBFCFE01FB8EFC00FF07F
8003F87E0001FFFC00003FFC0800003E1800003FF800003FF800001FF800001FF000000FF00000
0FE0000007C01D247D9B24>I<07F8601FFFE03E0FE07803E07001E0F000E0F00060F80060F800
00FE0000FFF0007FFE007FFF803FFFC01FFFE007FFE0007FF00007F00001F00001F0C000F0C000
F0E000F0E001E0F001E0FE07C0FFFF80C3FE00141C7D9B1B>83 D<7FFFFFE07FFFFFE0781F81E0
701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000001F80
00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21>I<FFFC03FFFFFC03FF0FC0
00300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300F
C000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC00070
07E0006007E000E003F001C001FC0F80007FFF00000FF800201C7E9B25>I<0FFC003FFF003E1F
803E0FC03E07C01C07C00007C003FFC01FFFC07F87C07F07C0FE07C0FC07C0FC07C0FE0FC07E3F
E03FFBF80FE1F815127F9117>97 D<FF0000FF00001F00001F00001F00001F00001F00001F0000
1F00001F00001F00001F3FC01FFFF01FE1F81F80FC1F007C1F007E1F007E1F007E1F007E1F007E
1F007E1F007E1F007E1F00FC1F80FC1FE1F81CFFF0183FC0171D7F9C1B>I<03FC001FFF003F1F
007E1F007E1F00FC0E00FC0000FC0000FC0000FC0000FC0000FC0000FC00007E01807F03803F87
001FFE0003F80011127E9115>I<000FF0000FF00001F00001F00001F00001F00001F00001F000
01F00001F00001F007F9F01FFFF03F0FF07E03F07E01F0FC01F0FC01F0FC01F0FC01F0FC01F0FC
01F0FC01F0FC01F07C01F07E03F03F0FF01FFFFE07F1FE171D7E9C1B>I<03FC000FFF003F0F80
3E07C07E03C07C03E0FC03E0FFFFE0FFFFE0FC0000FC0000FC00007C00007E00603F00E01FC3C0
0FFF8003FE0013127F9116>I<007F0001FFC003E7C007C7C00FC7C00F83800F80000F80000F80
000F80000F8000FFF800FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80
000F80000F80000F80000F80000F80007FF8007FF800121D809C0F>I<07F9F01FFFF83E1F787C
0FB87C0F807C0F807C0F807C0F807C0F803E1F003FFE0037F8007000007000007800003FFF803F
FFE01FFFF07FFFF0F801F8F000F8F00078F00078F800F87E03F03FFFE007FF00151B7F9118>I<
FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F1FE01F7FF0
1FF1F81FC0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
1F00F8FFE7FFFFE7FF181D7F9C1B>I<3E007F007F007F007F007F003E00000000000000000000
00FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E
7F9D0E>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
0FF81F0FF81F03801F0F001F1E001F3C001F78001FF8001FFC001FFE001F3E001F1F001F1F801F
0F801F07C01F03E0FFC7FCFFC7FC161D7F9C19>107 D<FF00FF001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FF
E0FFE00B1D7F9C0E>I<FF1FE0FF00FF7FF3FF801FF1FF8FC01FC0FE07C01F80FC07C01F00F807
C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F8
07C01F00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF1FE0FF7FF01FF1F81F
C0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FF
E7FFFFE7FF18127F911B>I<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8FC01F8
FC01F8FC01F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC0015127F9118>I<FF3FC0FFFF
F01FE3F81F80FC1F00FC1F00FE1F007E1F007E1F007E1F007E1F007E1F007E1F00FE1F00FC1F81
FC1FE3F81FFFF01F3FC01F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B
>I<FE3E00FEFF801EEF801FCF801F8F801F87001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F0000FFF000FFF00011127F9114>114 D<1FF87FF87078E018E018F000FF
80FFF07FF83FF80FFC007CC03CE01CE01CF878FFF8CFE00E127E9113>I<030003000300070007
000F000F003F00FFFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C1F9C
0FF803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F01F81F01F81F87F80FFFFF03FCFF18127F911B>I<FFC1FCFFC1FC
1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC00
00780000780000300016127F9119>I<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C1
8003E30003E30001F60001F60001FE0000FC0000FC000078000078000030000030000060007060
00F8E000C0C000E380007F00003E0000161A7F9119>121 D E /Fc 1 16
df<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010107E9115>
15 D E /Fd 1 59 df<70F8F8F87005057D840C>58 D E /Fe 33 118 df<0000700000000070
000000007000000000700000000070000000007000000000700000000070000000007000000000
7000000000700000000070000000007000000000700000000070000000007000000000700000FF
FFFFFFF8FFFFFFFFF8FFFFFFFFF800007000000000700000000070000000007000000000700000
000070000000007000000000700000000070000000007000000000700000000070000000007000
00000070000000007000000000700000000070000025257D9E2C>43 D<7CFEFEFEFEFE7C07077C
8610>46 D<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001
F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>49
D<03FC001FFF803C1FC0700FE0FC07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003
F00007F00007E0000FC0000F80001F00003E00007C0000F80001F01801C0180380180700180E00
381FFFF03FFFF07FFFF0FFFFF0FFFFF0FFFFF015207D9F1C>I<01FF0007FFC01F07E01E03F03F
03F83F01F83F81F83F01F83F03F80E03F80003F00007F0000FE0001F8001FF0001FF000007E000
03F80001FC0000FC0000FE0000FE7C00FEFE00FEFE00FEFE00FEFE00FCFE01FC7803F83E07F01F
FFE003FF0017207E9F1C>I<000070000000007000000000F800000000F800000000F800000001
FC00000001FC00000003FE00000003FE00000003FE00000006FF000000067F0000000E7F800000
0C3F8000000C3F800000183FC00000181FC00000381FE00000300FE00000300FE00000600FF000
006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE00030000FE
00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65
D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F0007F0007F000
7F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007F003F80007FF
FFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0001F8007F0001FC007
F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0003F8007F0007F00
07F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0007FE0180003FFFC38000FF01E78003FC
007F8007F0001F800FE0000F801FC0000F801F800007803F800003807F000003807F000003807F
00000180FE00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
FE00000000FE00000000FE000000007F000001807F000001807F000001803F800003801F800003
001FC00007000FE0000E0007F0001C0003FC00380000FF01F000003FFFC0000007FF000021227D
A128>I<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE013227FA115>73
D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0001807F0001807F0001807F0001807F0003807F0003807F0007007F00070
07F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76 D<0007FC0000003FFF800000
FC07E00003F001F80007E000FC000FC0007E001F80003F001F80003F003F00001F803F00001F80
7F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F
E0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F0000
1F803F80003F801F80003F000FC0007E0007E000FC0003F001F80000FC07E000003FFF80000007
FC000023227DA12A>79 D<03FE0C0FFF9C1F03FC3E00FC7C007C78003CF8001CF8001CF8000CFC
000CFE0000FF0000FFF0007FFF007FFFE03FFFF01FFFF80FFFFC03FFFE007FFE0003FF0000FF00
007F00003FC0001FC0001FC0001FE0001FE0001EF0003EFC007CFF80F8E7FFF0C0FFC018227DA1
1F>83 D<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801C0
E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F800000003F800
000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003
F800000003F8000003FFFFF80003FFFFF80022227EA127>I<07FE001FFF803F0FC03F07E03F07
F03F03F01E03F00003F00003F001FFF00FFFF03FE3F07F03F07E03F0FE03F0FC03F0FC03F0FC07
F0FE0FF07F1FF83FFDFF0FF0FF18167E951B>97 D<FF800000FF8000001F8000001F8000001F80
00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8FE0001F
BFFC001FF07E001FC03F001F801F801F801F801F800F801F800FC01F800FC01F800FC01F800FC0
1F800FC01F800FC01F800FC01F800FC01F800F801F801F801F801F001FC03F001FF0FE001E7FF8
001C1FE0001A237EA21F>I<01FF8007FFE01FC3F03F03F03E03F07E03F07C01E0FC0000FC0000
FC0000FC0000FC0000FC0000FC0000FC00007E00007E00003F00303F80701FE1E007FFC001FF00
14167E9519>I<0003FE000003FE0000007E0000007E0000007E0000007E0000007E0000007E00
00007E0000007E0000007E0000007E0000007E0001FE7E0007FFFE001FC3FE003F00FE003E007E
007E007E007C007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC00
7E007C007E007E007E003E00FE003F01FE001F83FE000FFF7FC001FC7FC01A237EA21F>I<01FE
0007FF801F87E03F03E03E01F07E00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00
00FC00007E00007E00003F00181F80380FE0F007FFE000FF8015167E951A>I<003F8001FFC003
F7E007E7E007E7E00FC7E00FC3C00FC0000FC0000FC0000FC0000FC0000FC000FFFC00FFFC000F
C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
C0000FC0000FC0000FC0000FC0007FFC007FFC0013237FA211>I<01FE1F0007FFFF800F87F780
1F03E7803E01F3003E01F0003E01F0003E01F0003E01F0003E01F0003E01F0001F03E0000F87C0
001FFF80001DFE0000180000001C0000001E0000001FFFE0001FFFFC001FFFFE000FFFFF003FFF
FF007E007F80FC001F80F8000F80F8000F80F8000F80FC001F807E003F003F80FE000FFFF80001
FFC00019217F951C>I<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F
8000001F8000001F8000001F8000001F8000001F8000001F87F0001F9FFC001FF8FC001FF07E00
1FE07E001FC07E001FC07E001F807E001F807E001F807E001F807E001F807E001F807E001F807E
001F807E001F807E001F807E001F807E001F807E001F807E00FFF1FFC0FFF1FFC01A237EA21F>
I<1F003F803F803F803F803F801F000000000000000000000000000000FF80FF801F801F801F80
1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF00C247FA30F
>I<003E007F007F007F007F007F003E000000000000000000000000000003FF03FF003F003F00
3F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F
003F783FFC3FFC7FFC7EFCFC7FF81FC0102E83A311>I<FF800000FF8000001F8000001F800000
1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80FF
801F80FF801F8078001F80F0001F81E0001F83C0001F8700001F8E00001FBE00001FFF00001FFF
00001FFF80001F9FC0001F8FE0001F87E0001F87F0001F83F8001F81F8001F80FC001F80FE00FF
F1FFC0FFF1FFC01A237EA21E>I<FF80FF801F801F801F801F801F801F801F801F801F801F801F
801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
1F80FFF0FFF00C237FA20F>I<FF87F80FF000FF9FFC3FF8001FBC7E78FC001FF07FE0FE001FE0
3FC07E001FC03F807E001FC03F807E001F803F007E001F803F007E001F803F007E001F803F007E
001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F80
3F007E001F803F007E001F803F007E00FFF1FFE3FFC0FFF1FFE3FFC02A167E952F>I<FF87F000
FF9FFC001FF8FC001FF07E001FE07E001FC07E001FC07E001F807E001F807E001F807E001F807E
001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E00FFF1
FFC0FFF1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC00
7EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE
0017167E951C>I<FF8FE000FFBFFC001FF0FE001FC03F001F803F801F801F801F801F801F800F
C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F801F801F801F801F80
3F001FC07F001FF0FE001FFFF8001F9FE0001F8000001F8000001F8000001F8000001F8000001F
8000001F8000001F800000FFF00000FFF000001A207E951F>I<FF1F80FF7FC01F77E01FE7E01F
C7E01FC7E01F83C01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F
80001F80001F8000FFF800FFF80013167E9517>114 D<0FFB003FFF007C1F00780700F00300F0
0300F80000FF0000FFF8007FFC007FFE001FFF000FFF80007F80C00F80C00F80E00780F00780F8
0F00FC1F00FFFE00C7F80011167E9516>I<00C00000C00000C00000C00001C00001C00003C000
07C0000FC0001FC000FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
0FC0000FC0000FC0000FC1800FC1800FC1800FC1800FC1800FE38007E70003FF0000FC0011207F
9F16>I<FF83FE00FF83FE001F807E001F807E001F807E001F807E001F807E001F807E001F807E
001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80FE001F80FE001F81
FE000FC3FE000FFF7FC003FC7FC01A167E951F>I E /Ff 1 14 df<000FF80000007FFF000001
F80FC00003C001E00007000070000E000038001C00001C003800000E0030000006007000000700
60000003006000000300E000000380C000000180C000000180C000000180C000000180C0000001
80C000000180C000000180E0000003806000000300600000030070000007003000000600380000
0E001C00001C000E00003800070000700003C001E00001F80FC000007FFF0000000FF800002121
7E9926>13 D E /Fg 20 122 df<07801FE03870303070386018E01CE01CE01CE01CE01CE01CE0
1CE01CE01CE01CE01CE01C60187038703838701FE007800E187E9713>48
D<03000700FF00FF00070007000700070007000700070007000700070007000700070007000700
070007000700FFF0FFF00C187D9713>I<0FC01FE038707038F038E018E01CE01CE01CE01CE03C
703C707C3FFC1FDC061C001C00387838787078F079E03FC01F000E187E9713>57
D<007F0601FFE607E0FE0F803E1E001E3C001E3C000E78000E780006F00006F00000F00000F000
00F00000F00000F00000F000067800067800063C000E3C000C1E001C0F803807E0F001FFE0007F
80171A7E991C>67 D<FFFF8000FFFFE0000F00F0000F0038000F001C000F000E000F000E000F00
0F000F0007000F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F
0007000F0007000F000F000F000E000F001C000F003C000F00F800FFFFE000FFFF8000191A7F99
1D>I<0FFF0FFF0078007800780078007800780078007800780078007800780078007800780078
00787078F878F878F8F8F9F07FE01F80101A7F9914>74 D<7F80FFE0F1F0F0F0607000F01FF03F
F07870F070E070E073E0F3F1F37FFE3F3C10107E8F13>97 D<07F81FFC3C3C783C7018E000E000
E000E000E000F0007000780C3E1C1FF807E00E107F8F11>99 D<0FDF1FFF387770387038703870
38703838703FE07FC0700070007FF83FFC7FFEF01FE00FE007E007F00F7C3E3FFC0FF010187F8F
13>103 D<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001F
FC001F1E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF
9FC0FF9FC0121A7F9915>I<3C003C003C003C00000000000000000000000000FC00FC001C001C
001C001C001C001C001C001C001C001C001C001C00FF80FF80091A80990A>I<FC00FC001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C00FF80FF80091A80990A>108 D<FCF800FFFC001F1E001E0E001C0E001C0E001C0E001C0E00
1C0E001C0E001C0E001C0E001C0E001C0E00FF9FC0FF9FC012107F8F15>110
D<07E01FF8381C700E6006E007E007E007E007E007E007700E700E3C3C1FF807E010107F8F13>
I<FCFC00FFFE001F0F001E07801C03801C03C01C01C01C01C01C01C01C01C01C03C01C03801E07
801F1F001FFE001DF8001C00001C00001C00001C00001C0000FF8000FF800012177F8F15>I<FD
E0FFF01F701E701E001C001C001C001C001C001C001C001C001C00FFC0FFC00C107F8F0F>114
D<3FE07FE0F0E0E060E060F000FF807FC01FE001F0C0F0E070E070F0F0FFE0DF800C107F8F0F>
I<0C000C000C000C001C001C003C00FFC0FFC01C001C001C001C001C001C001C001C601C601C60
1C601EE00FC007800B177F960F>I<FC7E00FC7E001C0E001C0E001C0E001C0E001C0E001C0E00
1C0E001C0E001C0E001C0E001C1E001E3E000FFFC007EFC012107F8F15>I<FF3F80FF3F803C0E
001C0C001C0C000E18000E18000E380007300007300007F00003E00003E00001C00001C00001C0
00018000018000618000F30000C70000FE000078000011177F8F14>121
D E /Fh 59 123 df<00FEF803FFFC0F87DC1E079C1C07001C07001C07001C07001C0700FFFFE0
FFFFE01C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0FF1FE0
1617809615>11 D<00FE0003FF000F87001E07001C07001C00001C00001C00001C0000FFFF00FF
FF001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0FF1FE013
17809614>I<E1C0F1E0F1E0F1E03060306070E060C0E1C0C1800B0A7F9612>34
D<E0F0F0F030307060E0C0040A7D960A>39 D<038007000F000E001C0038003800380070007000
7000E000E000E000E000E000E000E000E000E000E000E000E0007000700070003800380038001C
000E000F000700038009227E980E>I<E0007000780038001C000E000E000E0007000700070003
80038003800380038003800380038003800380038003800700070007000E000E000E001C003800
78007000E00009227E980E>I<0030000030000030000030000030000030000030000030000030
00003000003000FFFFFCFFFFFC0030000030000030000030000030000030000030000030000030
0000300000300016187E931B>43 D<E0F0F0F030307060E0C0040A7D830A>I<FF80FF80FF8009
0380870C>I<F0F0F0F004047D830A>I<07C01FF03838701C600C600CE00EE00EE00EE00EE00EE0
0EE00EE00EE00E600C701C701C38381FF007C00F157F9412>48 D<03000F00FF00F70007000700
07000700070007000700070007000700070007000700070007007FF07FF00C157E9412>I<0070
00F000F001F003F0077006700E701C70187030707070E070FFFEFFFE007000700070007003FE03
FE0F157F9412>52 D<70307FF07FE07FC060006000600060006FC07FE078F06070003800380038
E038E038E070F0F07FE01F800D157E9412>I<0FE03FF83C7C783C701C701C783C3E783FF00FE0
1FF03DFC787CF01EE01EE00EE00EF01E7C3C3FF80FE00F157F9412>56 D<003800003800003800
007C00007C00007C0000CE0000CE0000CE0001870001870001870003038003038003FF8007FFC0
0601C00601C00C00E00C00E01C00E0FF03FEFF03FE17177F961A>65 D<FFFE00FFFF801C03E01C
01E01C00F01C00F01C00F01C00F01C01E01C03C01FFF801FFFC01C01E01C00F01C00781C00781C
00781C00781C00781C00F01C01E0FFFFC0FFFF0015177F9619>I<00FE3007FF700FC3F01F01F0
3C00F07C0070780070780030F00030F00000F00000F00000F00000F00000F00030780030780030
7C00703C00601F00E00FC3C007FF8000FE0014177E9619>I<FFFF00FFFFC01C03E01C00F01C00
781C00381C003C1C001C1C001E1C001E1C001E1C001E1C001E1C001E1C001E1C001C1C001C1C00
3C1C00781C00F01C01E0FFFFC0FFFF0017177F961B>I<FFFFE0FFFFE01C01E01C00601C00701C
00301C0C301C0C301C0C001C1C001FFC001FFC001C1C001C0C001C0C001C0C001C00001C00001C
00001C00001C0000FFC000FFC00014177F9617>70 D<FF83FEFF83FE1C00701C00701C00701C00
701C00701C00701C00701C00701FFFF01FFFF01C00701C00701C00701C00701C00701C00701C00
701C00701C0070FF83FEFF83FE17177F961A>72 D<FFE0FFE00E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B177F960D>I<FFC000FF
C0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00601C
00601C00601C00601C00E01C00C01C01C01C07C0FFFFC0FFFFC013177F9616>76
D<FE0003F8FF0007F81F0007C01F0007C01B800DC01B800DC019C019C019C019C019C019C018E0
31C018E031C018F061C0187061C0187061C01838C1C01838C1C01838C1C0181D81C0181D81C018
0F01C0180F01C0FF0F0FF8FF060FF81D177F9620>I<FC01FEFE01FE1F00301F00301F80301BC0
3019C03019E03018F030187030187830183C30181E30180E30180F301807B01803B01803F01801
F01800F01800F0FF0070FF003017177F961A>I<00FC0003FF000F03C01E01E03C00F038007078
0078700038F0003CF0003CF0003CF0003CF0003CF0003CF0003C7800787800783800703C00F01E
01E00F87C003FF0000FC0016177E961B>I<FFFE00FFFF801C03C01C01E01C00F01C00F01C00F0
1C00F01C00F01C01E01C03C01FFF801FFE001C00001C00001C00001C00001C00001C00001C0000
1C0000FF8000FF800014177F9618>I<0FCC3FFC787CF03CE01CE00CE00CF000F8007F003FF01F
F801FC003C001E000EC00EC00EE00EF01CF83CFFF8CFE00F177E9614>83
D<7FFFF87FFFF8703838603818E0381CC0380CC0380CC0380C0038000038000038000038000038
0000380000380000380000380000380000380000380000380007FFC007FFC016177F9619>I<FF
81FEFF81FE1C00301C00301C00301C00301C00301C00301C00301C00301C00301C00301C00301C
00301C00301C00301C00301C00700E00600F00E00783C003FF8000FE0017177F961A>I<FF07FC
7F80FF07FC7F801C01E00E001C01E00C001C03E00C000E037018000E037018000E037018000E06
38380007063830000706383000070C1C3000038C1C6000038C1C6000039C1E600001D80EC00001
D80EC00001D80EC00001F007C00000F007800000F007800000E0038000006003000021177F9624
>87 D<FF87FCFF87FC0E01C007018007830003870001C60001EE0000EC00007800007800003800
007C0000FE0000CE000187000387800303800601C00E01E01E00E0FF03FEFF03FE17177F961A>
I<306070E060C0E1C0C180C180F1E0F1E0F1E070E00B0A7B9612>92 D<1FC03FF038F810380078
1FF87FF8F838F038E03BE03BF8FB7FFE3F9C100E7F8D12>97 D<FC0000FC00001C00001C00001C
00001C00001C00001C00001C00001DFE001FFF001F0F801C03801C03C01C01C01C01C01C01C01C
01C01C03C01E03801F0F801BFF0018FC001217809614>I<0FF01FF87C387010F000E000E000E0
00E000F00078187C381FF00FE00D0E7F8D10>I<007E00007E00000E00000E00000E00000E0000
0E00000E00000E000FEE003FFE007C3E00700E00F00E00E00E00E00E00E00E00E00E00F00E0070
1E007C3E003FFFC00FCFC012177F9614>I<0FC03FF078707038FFF8FFF8E000E000E000F00070
187C381FF00FE00D0E7F8D10>I<03E007F00F701E701C001C001C001C001C00FF80FF801C001C
001C001C001C001C001C001C001C001C00FF80FF800C1780960B>I<0FBF3FFF38E37070707070
70707038E03FE07F8070007FF03FFC7FFCF03EE00EE00EF01E783C3FF80FE010157F8D12>I<FC
0000FC00001C00001C00001C00001C00001C00001C00001C00001CFC001FFE001F0F001E07001C
07001C07001C07001C07001C07001C07001C07001C0700FF9FE0FF9FE01317809614>I<3C3C3C
3C00000000007C7C1C1C1C1C1C1C1C1C1C1CFFFF081780960A>I<078007800780078000000000
0000000000001F801F8003800380038003800380038003800380038003800380038003800380E3
80E780FF007C00091D82960B>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C
00001C7F801C7F801C7C001CF0001DE0001FC0001FE0001EF0001CF8001C78001C3C001C1E00FF
3FC0FF3FC01217809613>I<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C00FF80FF80091780960A>I<FCFC3F00FFFEFF801F0FC3C01E
0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F8
FF9FE7F81D0E808D1E>I<FCFC00FFFE001F0F001E07001C07001C07001C07001C07001C07001C
07001C07001C0700FF9FE0FF9FE0130E808D14>I<07C01FF03838701C600CE00EE00EE00EE00E
E00E701C38381FF007C00F0E7F8D12>I<FDFE00FFFF001F0F801C07801C03C01C01C01C01C01C
01C01C01C01C03C01E07801F0F801FFF001CFC001C00001C00001C00001C0000FF8000FF800012
14808D14>I<0FC6003FF6007C3E00781E00F00E00E00E00E00E00E00E00E00E00F00E00781E00
7C7E003FFE000FCE00000E00000E00000E00000E00007FC0007FC012147F8D13>I<FDF0FFF81F
381E101E001C001C001C001C001C001C001C00FF80FF800D0E808D0E>I<3FC07FC0F1C0E0C0F0
00FF007FC03FE003E0C0E0E0E0F1E0FFC0DF800B0E7F8D0E>I<180018001800180038007800FF
80FF8038003800380038003800380038C038C038C03DC03F801F000A147F930E>I<FC3F00FC3F
001C07001C07001C07001C07001C07001C07001C07001C07001C0F001E1F001FFFE007E7E0130E
808D14>I<FE3FFE3F381C1C181C180E300E300E700760076003C003C003C00180100E7F8D13>I<
FCFCFCFCFCFC3878703878701C7C601CFC601CCC600ECEC00ECEC00F86C0078780078780070380
030300160E7F8D19>I<FE7FFE7F1C780E7007E007C0038003C007E006F00C703C38FC7FFC7F10
0E7F8D13>I<FE3FFE3F381C1C181C180E300E300E700760076003C003C003C0018001800300E3
00E600FE00780010147F8D13>I<FFF0FFF0E1E0C1E0C3C0C780CF000F181E183C1878307870FF
F0FFF00D0E7F8D10>I E /Fi 10 58 df<1F003F8060C04040C060C060C060C060C060C060C060
C06060C060C03F801F000B107F8F0F>48 D<18007800F800980018001800180018001800180018
00180018001800FF80FF8009107E8F0F>I<3F00FFC0F3E0F0E0F0E000E000E001E001C007800F
001C0038607060FFC0FFC00B107F8F0F>I<1F007F8071C079C071C003C00F800F8001C000E060
E0F0E0F0E0F1C07FC03F000B107F8F0F>I<070007000F001F001B003B0033006300E300FFE0FF
E00300030003001FE01FE00B107F8F0F>I<61807F807F007C00600060006F807FC079E070E000
E0E0E0E0E0E1C0FFC03F000B107F8F0F>I<0F801FC039C071C06000C200FFC0FFC0E0E0C060C0
60C06060E071C03FC01F000B107F8F0F>I<60007FE07FE0C0E0C1C00380070006000E000E000C
001C001C001C001C001C001C000B117E900F>I<1F003F8071C060C070C07DC03F803F807FC0E3
E0C0E0C060C060F1E07FC01F000B107F8F0F>I<1F007F8071C0E0C0C060C060C060E0E07FE07F
E0086000C071C073807F803E000B107F8F0F>I E /Fj 10 58 df<0FC01FE0387070386018E01C
E01CE01CE01CE01CE01CE01CE01CE01C6018703838701FE00FC00E137F9211>48
D<06001E00FE00EE000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE0
0B137D9211>I<1F807FC0E1E0E0F0E070E0700070007000E001E003C007800F001E303C307870
FFE0FFE0FFE00C137E9211>I<1FC07FF07078703870380038007800F00FE00FE00078003C001C
E01CE01CE03CF0787FF01FC00E137F9211>I<00E001E001E003E007E00EE01CE018E030E070E0
E0E0FFFCFFFC00E000E000E000E007FC07FC0E137F9211>I<60607FE07FC07E00600060006000
7F807FC071E060F000700070E070E070E0F0F1E07FC03F000C137E9211>I<03F00FF81E383838
70007000E080EFF0FFF8F838F01CE01CE01CE01C701C703C38783FF00FC00E137F9211>I<6000
7FFC7FFC7FFCE038C070C0E001C00180038003000700070006000E000E000E000E000E000E000E
147E9311>I<0FC03FF078F87038703878387E783FF01FC03FF07DF8F0FCF03CE01CE01CF03C78
783FF01FC00E137F9211>I<0FC03FF07870F038E038E01CE01CE01CE03C707C7FFC3FDC041C00
380038707070F07FC03F800E137F9211>I E /Fk 84 125 df<003F1F8001FFFFC003C3F3C007
83E3C00F03E3C00E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00FFFFFC00
0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C0000E01C0007F87FC007F87FC001A1D809C18>11
D<003F0001FF8003C3C00783C00F03C00E03C00E00000E00000E00000E00000E0000FFFFC0FFFF
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C07F87F87F87F8151D809C17>I<003FC001FFC003C3C00783C00F03C00E01C00E01C00E
01C00E01C00E01C00E01C0FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF87FCFF8151D809C17>I<003F83F00001
FFDFF80003E1FC3C000781F83C000F01F03C000E01E03C000E00E000000E00E000000E00E00000
0E00E000000E00E00000FFFFFFFC00FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C
000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E0
1C000E00E01C000E00E01C007FC7FCFF807FC7FCFF80211D809C23>I<7070F8F8FCFCFCFC7C7C
0C0C0C0C1C1C181838387070F0F060600E0D7F9C15>34 D<0F8000C03FC001C039E0038070F80F
80707FFF00E07FFE00E0300E00E0301C00E0301800E0303800E0303000E07070007060E00070E0
C00039E1C0003FC380000F8303E000070FF0000E0E78000C1C38001C1C180038381C0030380C00
70380C0060380C00E0380C01C0380C0180381C03801C1807001C3806000E780E000FF00C0003E0
1E217E9E23>37 D<70F8FCFC7C0C0C1C183870F060060D7D9C0C>39 D<01C00380038007000E00
0C001C001800380038007000700070007000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E00070007000700070003800380018001C000C000E0007000380038001C00A2A7D9E
10>I<E0007000700038001C000C000E00060007000700038003800380038001C001C001C001C0
01C001C001C001C001C001C001C001C001C001C003800380038003800700070006000E000C001C
00380070007000E0000A2A7E9E10>I<0006000000060000000600000006000000060000000600
0000060000000600000006000000060000000600000006000000060000FFFFFFE0FFFFFFE00006
000000060000000600000006000000060000000600000006000000060000000600000006000000
06000000060000000600001B1C7E9720>43 D<70F8F8F878181818383070E060050D7D840C>I<
FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<00030003000700060006000E000C00
1C0018001800380030003000700060006000E000C000C001C00180038003000300070006000600
0E000C000C001C001800180038003000700060006000E000C000C00010297E9E15>I<07E00FF0
1C38381C781E700E700EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F700E70
0E781E381C1C380FF007E0101B7E9A15>I<030007003F00FF00C7000700070007000700070007
0007000700070007000700070007000700070007000700070007000700FFF8FFF80D1B7C9A15>
I<0FE03FF878FC603EF01EF81FF80FF80F700F000F001F001E003E003C007800F001E001C00380
07000E031C0338037006FFFEFFFEFFFE101B7E9A15>I<0FE03FF8387C783E7C1E781E781E001E
003C003C00F807F007E00078003C001E000F000F000F700FF80FF80FF81EF01E787C3FF80FE010
1B7E9A15>I<001C00001C00003C00007C00007C0000DC0001DC00039C00031C00071C000E1C00
0C1C00181C00381C00301C00601C00E01C00FFFFC0FFFFC0001C00001C00001C00001C00001C00
001C0001FFC001FFC0121B7F9A15>I<301C3FFC3FF83FE030003000300030003000300037E03F
F83C3C381E301E000F000F000F000FF00FF00FF00FF01E703E787C3FF80FE0101B7E9A15>I<01
F807FC0F8E1E1E3C1E381E781E78007000F080F7F8FFFCFC1CF81EF80FF00FF00FF00FF00FF00F
700F700F781E381E1E3C0FF807E0101B7E9A15>I<6000007FFF807FFF807FFF80600700C00600
C00E00C01C0000380000300000700000600000E00000C00001C00001C00003C000038000038000
038000078000078000078000078000078000078000078000078000111C7E9B15>I<07E01FF83C
3C381E701E700E700E780E7C1E7F3C3FF81FF00FF01FFC3DFC787E703FF00FE00FE007E007E007
F00E781E3C3C1FF807E0101B7E9A15>I<07E01FF83C38781C781EF00EF00EF00FF00FF00FF00F
F00FF01F781F383F3FFF1FEF010F000E001E781E781C783C787878F03FE01F80101B7E9A15>I<
70F8F8F870000000000000000070F8F8F87005127D910C>I<70F8F8F870000000000000000070
F8F8F878181818383070E060051A7D910C>I<1FE03FF8787CE01EF01EF01EF01E603E007C00F8
01F001E003C00380030003000300030003000300000000000000000007000F800F800F8007000F
1D7E9C14>63 D<00060000000F0000000F0000000F0000001F8000001F8000001F8000003FC000
0033C0000033C0000073E0000061E0000061E00000E1F00000C0F00000C0F00001C0F800018078
0001FFF80003FFFC0003003C0003003C0007003E0006001E0006001E001F001F00FFC0FFF0FFC0
FFF01C1C7F9B1F>65 D<FFFFC0FFFFF00F00F80F003C0F001C0F001E0F001E0F001E0F001E0F00
1C0F003C0F00780FFFF00FFFE00F00F80F003C0F001E0F001E0F000F0F000F0F000F0F000F0F00
0F0F001E0F003E0F007CFFFFF8FFFFC0181C7E9B1D>I<003FC18001FFF18003F07B800FC01F80
1F000F801E0007803C0003807C0003807800038078000180F0000180F0000000F0000000F00000
00F0000000F0000000F0000000F000000078000180780001807C0001803C0003801E0003001F00
07000FC00E0003F03C0001FFF000003FC000191C7E9B1E>I<FFFFC000FFFFF0000F007C000F00
1E000F000F000F0007000F0003800F0003C00F0003C00F0001C00F0001E00F0001E00F0001E00F
0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F000780
0F000F000F001E000F007C00FFFFF000FFFFC0001B1C7E9B20>I<FFFFFCFFFFFC0F007C0F001C
0F000C0F000E0F00060F03060F03060F03060F03000F07000FFF000FFF000F07000F03000F0300
0F03030F03030F00030F00060F00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E9B1C>
I<FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F000C0F030C0F030C0F03000F03000F07
000FFF000FFF000F07000F03000F03000F03000F03000F00000F00000F00000F00000F00000F00
00FFF800FFF800161C7E9B1B>I<003FC18001FFF18003F07B800FC01F801F000F801E0007803C
0003807C0003807800038078000180F0000180F0000000F0000000F0000000F0000000F0000000
F000FFF0F000FFF078000780780007807C0007803C0007801E0007801F0007800FC00F8003F03F
8001FFFB80003FE1801C1C7E9B21>I<FFF3FFC0FFF3FFC00F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000FFFFC000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F
003C00FFF3FFC0FFF3FFC01A1C7E9B1F>I<FFF0FFF00F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C7F9B
0F>I<1FFF1FFF0078007800780078007800780078007800780078007800780078007800780078
007800780078F878F878F878F8F8F1F07FE01F80101C7F9B15>I<FFF07FE0FFF07FE00F003E00
0F003C000F0078000F0070000F00E0000F01C0000F0380000F0700000F0E00000F1E00000F3F00
000F7F80000FFF80000FE7C0000FC3C0000F83E0000F01F0000F00F0000F00F8000F007C000F00
7C000F003E000F001E000F001F00FFF07FF0FFF07FF01C1C7E9B20>I<FFF800FFF8000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00180F00180F00180F00180F00380F00300F00700F00F00F01F0FFFFF0FFFFF0151C7E9B
1A>I<FF8000FF80FFC001FF800FC001F8000FC001F8000DE00378000DE00378000DE00378000C
F00678000CF00678000CF00678000C780C78000C780C78000C780C78000C3C1878000C3C187800
0C3C1878000C1E3078000C1E3078000C1E3078000C0F6078000C0F6078000C0F6078000C07C078
000C07C078000C07C078001E03807800FFC387FF80FFC387FF80211C7E9B26>I<FF00FFC0FF80
FFC00FC01E000FC00C000FE00C000DE00C000DF00C000CF80C000CF80C000C7C0C000C3C0C000C
3E0C000C1E0C000C1F0C000C0F8C000C078C000C07CC000C03CC000C03EC000C01FC000C00FC00
0C00FC000C007C000C007C000C003C001E001C00FFC01C00FFC00C001A1C7E9B1F>I<003F8000
01FFF00003E0F80007001C000E000E001C0007003C00078038000380780003C0700001C0F00001
E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0780003C0780003C03800
03803C0007801E000F000E000E0007803C0003E0F80001FFF000003F80001B1C7E9B20>I<FFFF
80FFFFE00F00F00F00380F003C0F001E0F001E0F001E0F001E0F001E0F001E0F003C0F00380F00
F00FFFE00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF0
00FFF000171C7E9B1C>I<003F800001FFF00003E0F80007803C000E000E001C0007003C000780
38000380780003C0780003C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
E0F00001E0780003C0780003C0380003803C1F07801C3F87000E39CE0007B0FC0003F8F80001FF
F000003FE0200000E0200000702000007060000078E000007FC000003FC000001FC000000F001B
247E9B20>I<FFFF0000FFFFE0000F00F0000F0038000F003C000F001E000F001E000F001E000F
001E000F001E000F003C000F0038000F00F0000FFFE0000FFFC0000F03F0000F00F0000F00F800
0F0078000F0078000F0078000F0078000F0078000F0078000F007C300F007E70FFF03FE0FFF00F
C01C1C7E9B1F>I<07F1801FFD803C1F80700780700380E00380E00180E00180F00000F80000FE
00007FE0003FFC001FFE000FFF0000FF80000F800007C00003C00001C0C001C0C001C0E001C0E0
0380F00780FE0F00DFFE00C7F800121C7E9B17>I<7FFFFFC07FFFFFC0780F03C0700F01C0600F
00C0E00F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F000003FFFC0003FFFC001B1C7F9B1E>I<FFF0FFC0FFF0FFC00F001E000F000C00
0F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C
000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F001C00078018000780
380003C0700001F0F00000FFC000003F80001A1C7E9B1F>I<FFE01FF0FFE01FF01F0007800F00
03000F800700078006000780060007C00E0003C00C0003C00C0001E0180001E0180001E0180000
F0300000F0300000F870000078600000786000007CE000003CC000003CC000001F8000001F8000
001F8000000F0000000F0000000F0000000600001C1C7F9B1F>I<FFE0FFE1FFFFE0FFE1FF1F00
1E007C0F001E00380F003F00300F003F003007803F00600780678060078067806007C06780E003
C0C3C0C003C0C3C0C003C0C3C0C001E1C3E18001E181E18001E181E18000F181E30000F300F300
00F300F30000FB00F700007E007E00007E007E00007E007E00003E007C00003C003C00003C003C
00001C0038000018001800281C7F9B2B>I<7FF0FFC07FF0FFC007C07E0003C0380003E0300001
E0700001F0600000F0C0000079C000007D8000003F0000001F0000001F0000000F0000000F8000
001F8000003BC0000033E0000071E0000061F00000C0F80001C0780001807C0003003C0007001E
000F801F00FFE0FFF0FFE0FFF01C1C7F9B1F>I<FFF00FFCFFF00FFC0FC003C007C0038003C003
0003E0060001F0060000F00C0000F81C0000781800007C3800003C3000001E6000001F6000000F
C000000FC000000780000007800000078000000780000007800000078000000780000007800000
07800000078000007FF800007FF8001E1C809B1F>I<7FFFF07FFFF07E01F07803E07007C07007
C0600F80600F00601F00603E00003E00007C0000F80000F80001F00001F00003E03007C03007C0
300F80300F00701F00703E00603E00E07C01E0F807E0FFFFE0FFFFE0141C7E9B19>I<FEFEC0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE0729
7C9E0C>I<18183C3C383870706060E0E0C0C0C0C0F8F8FCFCFCFC7C7C38380E0D7B9C15>I<FEFE
06060606060606060606060606060606060606060606060606060606060606060606060606FEFE
0729809E0C>I<183C387060E0C0C0F8FCFC7C38060D7E9C0C>96 D<1FE0003FF8003C3C003C1E
00180E00000E00001E0007FE003FFE007E0E00F80E00F80E00F00E60F00E60F81E607C7E607FFF
C01FC78013127F9115>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001CFE001FFF801F87C01E03E01C01E01C00F01C00F01C00F01C00F01C00F01C00F01C
00F01C01E01E01E01E03C01F87C01BFF8018FE00141D7F9C17>I<07F80FFC3E3C3C3C78187800
F000F000F000F000F000F000780078063C0E3F1C0FF807F00F127F9112>I<001F80001F800003
8000038000038000038000038000038000038000038000038007F3801FFF803E1F807C07807803
80F80380F00380F00380F00380F00380F00380F00380F003807807807C0F803E1F801FFBF007E3
F0141D7F9C17>I<07E01FF83E7C781C781EF01EFFFEFFFEF000F000F000F000780078063C0E3F
1C0FF807F00F127F9112>I<00FC03FE079E071E0F1E0E000E000E000E000E000E00FFE0FFE00E
000E000E000E000E000E000E000E000E000E000E000E000E000E007FE07FE00F1D809C0D>I<07
E7C01FFFC03C3DC0781E00781E00781E00781E00781E00781E003C3C003FF80037E00070000070
00007800003FFC003FFF007FFF807807C0F003C0E001C0E001C0F003C0F807C07C0F801FFE0007
F800121B7F9115>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001CFE001DFF001F8F801F07801E03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C0380FF9FF0FF9FF0141D7F9C17>I<38007C007C007C00380000000000
0000000000000000FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C
00FF80FF80091D7F9C0C>I<01C003E003E003E001C00000000000000000000000000FE00FE000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0F0E0
F1E0F3C0FF807E000B25839C0D>I<FC0000FC00001C00001C00001C00001C00001C00001C0000
1C00001C00001C00001C7FC01C7FC01C3E001C3C001C78001CF0001DE0001FE0001FF0001FF000
1E78001C7C001C3C001C1E001C1E001C0F00FF9FE0FF9FE0131D7F9C16>I<FC00FC001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C00FF80FF80091D7F9C0C>I<FC7F07F000FDFF9FF8001F87F87C001F03F03C001E
01E01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF80FF8FF8FF8021127F9124>I<FCFE
00FDFF001F8F801F07801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C0380FF9FF0FF9FF014127F9117>I<03F0000FFC001E1E00380700780780700380F0
03C0F003C0F003C0F003C0F003C0F003C07003807807803807001E1E000FFC0003F00012127F91
15>I<FCFE00FFFF801F87C01E03E01C01E01C01F01C00F01C00F01C00F01C00F01C00F01C00F0
1C01E01E01E01E03C01F8FC01FFF801CFE001C00001C00001C00001C00001C00001C0000FF8000
FF8000141A7F9117>I<07F1801FF9803F1F803C0F80780780780380F00380F00380F00380F003
80F00380F00380F803807807807C0F803E1F801FFB8007E3800003800003800003800003800003
80000380001FF0001FF0141A7F9116>I<FDF0FFF81F781E781E301C001C001C001C001C001C00
1C001C001C001C001C00FFC0FFC00D127F9110>I<1FB07FF0F0F0E070E030F030F8007FC07FE0
1FF000F8C078C038E038F078F8F0FFF0CFC00D127F9110>I<0C000C000C000C000C001C001C00
3C00FFE0FFE01C001C001C001C001C001C001C001C001C301C301C301C301C301E700FE007C00C
1A7F9910>I<FC1F80FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C07801C0F801E1F800FFFF007F3F014127F9117>I<FF0FE0FF0FE01C07801C07
000E06000E06000E0600070C00070C00071C0003980003980003F80001F00001F00000E00000E0
0000E00013127F9116>I<FF3FCFE0FF3FCFE03C0F07801C0F03001C1F03000E1B06000E1B8600
0E1B86000E318E000731CC000731CC000760CC0003E0F80003E0F80003E0F80001C0700001C070
0001C070001B127F911E>I<7F8FF07F8FF00F0F80070F00038E0001DC0001D80000F000007000
00780000F80001DC00038E00030E000707001F0780FF8FF8FF8FF81512809116>I<FF0FE0FF0F
E01C07801C07000E06000E06000E0600070C00070C00071C0003980003980003F80001F00001F0
0000E00000E00000E00000C00000C00000C000F18000F18000C700007E00003C0000131A7F9116
>I<7FFC7FFC783C707860F061E061E063C00780078C0F0C1E0C1E1C3C187818F078FFF8FFF80E
127F9112>I<FFFFFFFFFF80FFFFFFFFFF802902808B2A>124 D E /Fl 33
122 df<000700000F00007F0007FF00FFFF00FFFF00F8FF0000FF0000FF0000FF0000FF0000FF
0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF007FFFFE7FFF
FE7FFFFE17277BA622>49 D<00FFC00007FFF8001FFFFE003F03FF007E00FF807F007FC0FF807F
C0FF803FE0FF803FE0FF803FE0FF801FE07F001FE03E003FE000003FE000003FC000003FC00000
7F8000007F800000FF000001FE000001FC000003F8000007E000000FC000001F8000003E00E000
7C00E0007800E000F001C001E001C0038001C007FFFFC00FFFFFC01FFFFFC03FFFFFC07FFFFF80
FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007FC00003FFF00007FFFC000FC1FE001F80FF00
3FC0FF003FE07F803FE07F803FE07F803FE07F803FE07F801FC0FF800F80FF000000FF000001FE
000003FC000007F00000FFC00000FFF8000001FE000000FF0000007F8000007FC000003FC00000
3FE01E003FE07F803FE07F803FE0FFC03FE0FFC03FE0FFC03FE0FFC03FC0FFC07FC07F807F807F
00FF803F81FF001FFFFC0007FFF80000FFC0001B277DA622>I<0000070000000F0000001F0000
003F0000007F000000FF000000FF000001FF000003FF0000077F00000F7F00000E7F00001C7F00
00387F0000707F0000F07F0000E07F0001C07F0003807F0007007F000F007F000E007F001C007F
0038007F0070007F00E0007F00FFFFFFF8FFFFFFF8FFFFFFF80000FF000000FF000000FF000000
FF000000FF000000FF000000FF00007FFFF8007FFFF8007FFFF81D277EA622>I<000003800000
000007C00000000007C0000000000FE0000000000FE0000000000FE0000000001FF0000000001F
F0000000003FF8000000003FF8000000003FF8000000007FFC0000000077FC00000000F7FE0000
0000E3FE00000000E3FE00000001C1FF00000001C1FF00000003C1FF8000000380FF8000000780
FFC0000007007FC0000007007FC000000E007FE000000E003FE000001E003FF000001C001FF000
001FFFFFF000003FFFFFF800003FFFFFF8000078000FFC0000700007FC0000700007FC0000E000
07FE0000E00003FE0001E00003FF0001C00001FF0001C00001FF00FFFE003FFFFEFFFE003FFFFE
FFFE003FFFFE2F297EA834>65 D<FFFFFFFC0000FFFFFFFF8000FFFFFFFFE00003FC001FF00003
FC0007F80003FC0007FC0003FC0003FC0003FC0003FC0003FC0003FE0003FC0001FE0003FC0001
FE0003FC0001FE0003FC0003FE0003FC0003FC0003FC0003FC0003FC0007F80003FC000FF00003
FC001FE00003FC007FC00003FFFFFF000003FFFFFFE00003FC0007F00003FC0003FC0003FC0001
FE0003FC0001FE0003FC0000FF0003FC0000FF0003FC0000FF8003FC0000FF8003FC0000FF8003
FC0000FF8003FC0000FF8003FC0000FF8003FC0000FF0003FC0001FF0003FC0003FE0003FC0007
FE0003FC000FFC00FFFFFFFFF000FFFFFFFFC000FFFFFFFE000029297DA831>I<00007FF80180
0007FFFE0780001FFFFF8F80007FF80FFF8000FF8001FF8003FE00007F8007FC00003F8007F800
001F800FF000000F801FE000000F803FE0000007803FC0000007807FC0000003807FC000000380
7FC000000380FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000
000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007FC000000000
7FC0000003807FC0000003803FC0000003803FE0000003801FE0000007800FF00000070007F800
000F0007FC00001E0003FE00003C0000FF8000F800007FF807F000001FFFFFC0000007FFFF0000
00007FF8000029297CA832>I<FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FE001FF80003FE
0007FC0003FE0001FE0003FE0000FF0003FE00007F8003FE00003FC003FE00001FC003FE00001F
E003FE00001FE003FE00000FF003FE00000FF003FE00000FF003FE00000FF003FE00000FF803FE
00000FF803FE00000FF803FE00000FF803FE00000FF803FE00000FF803FE00000FF803FE00000F
F803FE00000FF803FE00000FF803FE00000FF003FE00000FF003FE00000FF003FE00001FE003FE
00001FE003FE00001FC003FE00003FC003FE00007F8003FE00007F0003FE0001FE0003FE0003FC
0003FE001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC00002D297DA835>I<FFFFFEFFFFFEFF
FFFE01FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001
FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001
FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF00FFFFFEFFFFFEFFFFFE17
297FA81A>73 D<FFFFFE0000FFFFFE0000FFFFFE000003FE00000003FE00000003FE00000003FE
00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003
FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000000
03FE00000003FE00000003FE0001C003FE0001C003FE0001C003FE0001C003FE0003C003FE0003
8003FE00038003FE00078003FE00078003FE000F8003FE000F8003FE001F8003FE007F8003FE01
FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297DA829>76 D<0000FFE000000007FFFC0000003F
C07F8000007F001FC00001FC0007F00003F80003F80007F00001FC000FF00001FE001FE00000FF
001FE00000FF003FC000007F803FC000007F807FC000007FC07F8000003FC07F8000003FC07F80
00003FC0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F
E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC0
00007FC03FC000007F803FC000007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC
0003F80003F80001FC0007F00000FF001FE000003FC07F8000000FFFFE00000000FFE000002B29
7CA834>79 D<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FE007FE00003FE000FF00003FE00
07F80003FE0007FC0003FE0003FC0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
03FE0003FE0003FE0003FE0003FE0003FC0003FE0007F80003FE0007F80003FE001FE00003FE00
7FC00003FFFFFE000003FFFFFC000003FE01FF000003FE007FC00003FE007FE00003FE003FE000
03FE003FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE00
1FF00003FE001FF00003FE001FF00003FE001FF00703FE001FF00703FE000FF80703FE000FF80F
FFFFF807FE1EFFFFF801FFFCFFFFF8003FF030297DA834>82 D<00FF806003FFF0E00FFFFFE01F
C0FFE03F001FE03E0007E07E0003E07C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FF0000E0
FF800000FFF80000FFFFC0007FFFF8007FFFFE003FFFFF801FFFFFC00FFFFFC007FFFFE001FFFF
F0003FFFF00003FFF800001FF800000FF8000007F8E00003F8E00001F8E00001F8E00001F8F000
01F8F00001F0F80003F0FC0003E0FF0007E0FFE01FC0FFFFFF80E1FFFE00C03FF8001D297CA826
>I<FFFFF87FFFF807FFF0FFFFF87FFFF807FFF0FFFFF87FFFF807FFF003FE0001FF00001C0003
FE0001FF00001C0001FF0001FF8000380001FF0000FF8000380001FF8000FF8000780000FF8000
FFC000700000FF8000FFC000700000FFC000FFE000F000007FC001FFE000E000007FE001FFE000
E000003FE003FFF001C000003FE0039FF001C000003FF0039FF003C000001FF0070FF803800000
1FF0070FF8038000001FF80F0FFC078000000FF80E07FC070000000FFC0E07FC0700000007FC1E
07FE0E00000007FC1C03FE0E00000007FE1C03FE1E00000003FE3801FF1C00000003FE3801FF1C
00000001FF7801FFB800000001FF7000FFB800000001FFF000FFB800000000FFF000FFF0000000
00FFE0007FF000000000FFE0007FF0000000007FC0003FE0000000007FC0003FE0000000003FC0
003FC0000000003F80001FC0000000003F80001FC0000000001F80001F80000000001F00000F80
000000001F00000F80000000000E00000700000044297FA847>87 D<03FFC0000FFFF0001F81FC
003FC0FE003FC07F003FC07F003FC03F803FC03F801F803F8000003F8000003F80001FFF8001FF
FF8007FE3F801FE03F803FC03F807F803F807F003F80FE003F80FE003F80FE003F80FE007F80FF
007F807F00FFC03FC3DFFC1FFF8FFC03FE07FC1E1B7E9A21>97 D<FFE0000000FFE0000000FFE0
0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
E00000000FE00000000FE00000000FE00000000FE00000000FE3FE00000FEFFFC0000FFF07F000
0FFC03F8000FF001FC000FE000FE000FE000FE000FE0007F000FE0007F000FE0007F800FE0007F
800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE000
7F000FE000FF000FE000FE000FF000FE000FF001FC000FF803F8000F9E0FE0000F0FFFC0000E03
FE0000212A7EA926>I<003FF80001FFFE0007F83F000FE07F801FC07F803F807F803F807F807F
807F807F003F00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF0000007F0000007F8000003F8001C03FC001C01FC003C00FE0078007F83F0001FFFC00003FF0
001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F800003FE3F80001FFFBF80003F83FF8000FE00FF8001FC007F8003F8003F8003F8003F8
007F8003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003
F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8003F8003F8003F8007F8001FC0
0FF8000FE01FF80007F07FFF8001FFFBFF80003FC3FF80212A7EA926>I<003FE00001FFFC0007
F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007E0FF0007E0FF0007E0FF0007E0
FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF0000007F0000007F8000003F8000E03F8001
E01FC001C00FE007C003F81F8001FFFE00003FF8001B1B7E9A20>I<00FF81F007FFF7FC0FE3FF
7C1F80FCFC3F80FE7C3F007E787F007F007F007F007F007F007F007F007F007F007F007F003F00
7E003F80FE001F80FC000FE3F8001FFFF00018FF8000380000003C0000003C0000003E0000003F
FFFC003FFFFF001FFFFFC00FFFFFE007FFFFF03FFFFFF07E000FF87C0001F8F80001F8F80000F8
F80000F8F80000F8FC0001F87E0003F03F0007E01FE03FC007FFFF0000FFF8001E287E9A22>
103 D<0F801FC03FE03FE03FE03FE03FE01FC00F800000000000000000000000000000FFE0FFE0
FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE0FFFEFFFEFFFE0F2B7DAA14>105 D<0007C0000FE0001FF0001FF0001FF0001FF000
1FF0000FE00007C000000000000000000000000000000000000000000000FFF000FFF000FFF000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F07E07F0FF07F0FF07F0FF0FE0FF0FE0FF1FC07E3F803FFE000FF800143785AA15>I<FFE0FF
E0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFF
FEFFFE0F2A7DA914>108 D<FFC07F800FF000FFC1FFE03FFC00FFC7C3F0F87E000FCF03F9E07F
000FDC01FB803F000FF801FF003F800FF001FE003F800FF001FE003F800FF001FE003F800FE001
FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80
0FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC
003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FF
FE1FFFC3FFF8351B7D9A3A>I<FFC0FF0000FFC3FFC000FFC787E0000FCE07F0000FDC03F8000F
F803F8000FF003F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A26>I<00
3FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0
FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007
F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE3FE
0000FFEFFFC000FFFF0FF0000FFC03F8000FF001FC000FE001FE000FE000FE000FE000FF000FE0
00FF000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800F
E0007F800FE0007F800FE000FF000FE000FF000FE000FE000FF001FE000FF003FC000FF807F800
0FFE0FE0000FEFFFC0000FE3FE00000FE00000000FE00000000FE00000000FE00000000FE00000
000FE00000000FE00000000FE00000000FE0000000FFFE000000FFFE000000FFFE00000021277E
9A26>I<003FE0380001FFF8780003F87CF8000FF01FF8001FE00FF8003FC007F8003F8007F800
7F8003F8007F8003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8
00FF0003F800FF0003F800FF0003F8007F8003F8007F8003F8003F8003F8003FC007F8001FC00F
F8000FE01FF80007F87FF80001FFF3F800003FC3F800000003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F80000003FFF8000003FFF8000
003FFF8021277E9A24>I<FFC7F0FFCFFCFFDC7E0FD8FF0FF8FF0FF0FF0FF0FF0FF0FF0FE07E0F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE000FFFF00FFFF00FFFF00181B7E9A1C>I<03FE701FFFF03E03F07801F07000F0F00070
F00070F80070FE0000FFF000FFFF007FFFC03FFFE01FFFF007FFF800FFFC0007FC0000FCE0007C
E0003CF0003CF0003CF80078FC0078FF01F0FFFFC0E1FF00161B7E9A1B>I<0070000070000070
0000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F0
3807F03807F03807F03807F03807F03803F87001FCF000FFE0003FC015267FA51B>I<FFE03FF8
00FFE03FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE007F8000FE007F8000FE00FF80007E01FF80003
F83BFF8001FFF3FF80007FE3FF80211B7D9A26>I<FFFE03FF80FFFE03FF80FFFE03FF8007F000
700007F000700007F800F00003F800E00003FC01E00001FC01C00001FC01C00000FE03800000FE
038000007F070000007F070000007F8F0000003F8E0000003FDE0000001FDC0000001FDC000000
0FF80000000FF80000000FF800000007F000000007F000000003E000000003E000000001C00000
0001C000000003800000000380000038078000007C07000000FE0F000000FE0E000000FE1E0000
00FE3C0000007C780000003FE00000000FC000000021277F9A24>121 D
E /Fm 15 122 df<70F8FCFC7C0C0C0C1C18183870E0E0060F7C840E>44
D<01F00007FC000E0E001C07003803803803807803C07001C07001C07001C0F001E0F001E0F001
E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001
C07001C07803C03803803803801C07000E0E0007FC0001F00013227EA018>48
D<018003800F80FF80F38003800380038003800380038003800380038003800380038003800380
038003800380038003800380038003800380038003800380FFFEFFFE0F217CA018>I<007E0001
FF8003C3C00703C00E03C01E03C03C03C0380000780000780000780000702000F3FC00F7FF00FE
0F80FC0780F803C0F803C0F801E0F001E0F001E0F001E0F001E0F001E07001E07001E07801E078
01C03803C03C03801E07800F1F0007FE0003F80013227EA018>54 D<03F8000FFC001F1E003C07
003807807803807003C0F003C0F001C0F001C0F001E0F001E0F001E0F001E0F001E0F003E07803
E07803E03C07E03E0FE01FFDE007F9E00081E00001C00003C00003C0000380780780780700780F
00781E00787C003FF8000FE00013227EA018>57 D<FFFFF000FFFFFE0007801F00078007C00780
03C0078001E0078000F0078000F8078000780780007C0780003C0780003C0780003C0780003E07
80003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C
0780007C0780007807800078078000F0078001E0078003E0078007C007801F00FFFFFE00FFFFF8
001F227EA125>68 D<03FFF003FFF0000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00F80F00F80F00F80F00F81F00F01E00703E00787C003FF8000FE00014237E
A119>74 D<0000F003FBF807FFB80F1F381E0F003C07803C07803C07803C07803C07803C07803C
07801E0F001F1E001FFC001BF8001800001800001C00001FFF000FFFC03FFFF07C01F0700078F0
0078E00038E00038E00038F000787800F03F07E01FFFC003FE0015217F9518>103
D<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E3F800EFFE00FE1E00F80F00F00700F00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E00700E0070FFE7FFFFE7FF18237FA21B>I<0E00FE00
FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B237FA20E>108
D<0E3F80FEFFE0FFE1E01F80F00F00700F00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E0070FFE7FFFFE7FF18157F941B>110
D<01FC0007FF000F07801C01C03800E07800F0700070F00078F00078F00078F00078F00078F000
78F000787000707800F03800E01C01C00F078007FF0001FC0015157F9418>I<1FD83FF87878F0
38E018E018F018F8007F807FE01FF003F8007CC03CC01CE01CE01CF03CF878FFF0CFE00E157E94
13>115 D<0E0070FE07F0FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00F00E00F00E01F00787F807FF7F01FC7F18157F941B>117
D<FFC3FEFFC3FE1E00F80E00700E00E00700C00700C00700C003818003818003C38001C30001C3
0000E60000E60000E600007C00007C00007C000038000038000030000030000070000060000060
00F0C000F1C000F380007F00003E0000171F7F941A>121 D E /Fn 23 122
df<FFFF807FFFC0FFFF807FFFC007F00003F80003E00001F00003E00001F00003E00001F00003
E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001
F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003
E00001F00003E00001F00003E00001F00003E00001F00003FFFFFFF00003FFFFFFF00003E00001
F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003
E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001
F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003
E00001F00007F00003F800FFFF807FFFC0FFFF807FFFC02A317CB032>72
D<FFFFC00000FFFFC0000007F000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E00000C003E00000C003E00000C003E00000C003E000018003E000018003E000018003E00001
8003E000038003E000038003E000038003E000078003E0000F8003E0001F0003E0003F0007E001
FF00FFFFFFFF00FFFFFFFF0022317CB029>76 D<FFF00000007FF8FFF8000000FFF807F8000000
FF0003F8000000FE00037C000001BE00037C000001BE00037C000001BE00033E0000033E00033E
0000033E00033E0000033E00031F0000063E00031F0000063E00031F0000063E00030F80000C3E
00030F80000C3E00030F80000C3E000307C000183E000307C000183E000307C000183E000303E0
00303E000303E000303E000303E000303E000301F000603E000301F000603E000301F000C03E00
0300F800C03E000300F800C03E0003007C01803E0003007C01803E0003007C01803E0003003E03
003E0003003E03003E0003003E03003E0003001F06003E0003001F06003E0003001F06003E0003
000F8C003E0003000F8C003E0003000F8C003E00030007D8003E00030007D8003E00030007D800
3E00030003F0003E00030003F0003E00030003F0003E00078001E0003E000FC001E0007F00FFFC
01E00FFFF8FFFC00C00FFFF835317CB03D>I<00003FC000000001FFF800000007C03E0000001F
000F8000003C0003C00000F80001F00001F00000F80003E000007C0003C000003C0007C000003E
000F8000001F000F8000001F001F0000000F801F0000000F803E00000007C03E00000007C07E00
000007E07E00000007E07C00000003E07C00000003E0FC00000003F0FC00000003F0FC00000003
F0FC00000003F0FC00000003F0FC00000003F0FC00000003F0FC00000003F0FC00000003F0FC00
000003F0FC00000003F07E00000007E07E00000007E07E00000007E07E00000007E03E00000007
C03F0000000FC01F0000000F801F0000000F800F8000001F000F8000001F0007C000003E0003E0
00007C0003E000007C0001F00000F80000F80001F000003E0007C000001F000F80000007E07E00
000001FFF8000000003FC000002C337CB134>79 D<FFFFFFC000FFFFFFF80007E000FE0003E000
1F0003E0000F8003E00007C003E00003E003E00003F003E00001F003E00001F003E00001F803E0
0001F803E00001F803E00001F803E00001F803E00001F803E00001F003E00001F003E00003F003
E00003E003E00007C003E0000F8003E0001F0003E000FE0003FFFFF80003FFFFC00003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000007F0000000FFFF800000FFFF80000025317CB02D>I<
007F806003FFF06007C0F8E00F003CE01E000FE03C0007E03C0003E0780003E0780001E0F00001
E0F00000E0F00000E0F00000E0F0000060F8000060F8000060F80000007C0000007E0000007F00
00003FC000001FFC00001FFFC0000FFFF80003FFFE0000FFFF00001FFF800001FFC000001FE000
0007E0000003F0000001F0000001F8000000F8000000F8C0000078C0000078C0000078C0000078
E0000078E0000078E0000070F00000F0F00000F0F80001E0FC0001E0FF0003C0E7800F80E3F01F
00C0FFFC00C01FF0001D337CB125>83 D<7FFFFFFFFFE07FFFFFFFFFE07F000F800FE07C000F80
03E078000F8000E070000F8000E060000F80006060000F800060E0000F800070E0000F800070C0
000F800030C0000F800030C0000F800030C0000F800030C0000F800030C0000F80003000000F80
000000000F80000000000F80000000000F80000000000F80000000000F80000000000F80000000
000F80000000000F80000000000F80000000000F80000000000F80000000000F80000000000F80
000000000F80000000000F80000000000F80000000000F80000000000F80000000000F80000000
000F80000000000F80000000000F80000000000F80000000000F80000000000F80000000000F80
000000000F80000000000F80000000000F80000000001FC00000000FFFFF8000000FFFFF80002C
317EB030>I<FFFE003FFF8007FFC0FFFE003FFF8007FFC00FE00003F80000FE0007E00001F800
007C0007C00001F00000380003E00000F80000380003E00000F80000300003E00000F800003000
01F00001FC0000600001F00001FC0000600001F00001FC0000600001F80001FC0000E00000F800
033E0000C00000F800033E0000C00000F800033E0000C000007C00061F00018000007C00061F00
018000007C00061F00018000003E000E1F80030000003E000C0F80030000003E000C0F80030000
003F000C0F80070000001F001807C0060000001F001807C0060000001F001807C0060000000F80
3003E00C0000000F803003E00C0000000F803003E00C00000007C07003F01800000007C06001F0
1800000007C06001F01800000007E06001F03800000003E0C000F83000000003E0C000F8300000
0003E0C000F83000000001F180007C6000000001F180007C6000000001F180007C6000000000FB
80007EC000000000FB00003EC000000000FB00003EC000000000FF00003FC0000000007E00001F
80000000007E00001F80000000007E00001F80000000003C00000F00000000003C00000F000000
00003C00000F00000000001C00000E00000000001800000600000042327FB044>87
D<03FF00000FFFC0001E03F0003E00F8003E007C003E003C003E003E001C001E0000001E000000
1E0000001E0000001E000003FE00007FFE0003FF1E0007F01E001FC01E003F001E007E001E007C
001E00FC001E00F8001E0CF8001E0CF8001E0CF8003E0CFC007E0C7C007E0C7E01FF1C3F87CFB8
1FFF07F003FC03C01E1F7D9E21>97 D<003FE001FFF803E03C07C03E0F003E1F003E3E003E3C00
1C7C00007C0000780000F80000F80000F80000F80000F80000F80000F80000F80000F800007C00
007C00007C00003E00033E00071F00060F800E07C01C03F07801FFF0003F80181F7D9E1D>99
D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E0000001E00000
01E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000
3F81E001FFF1E003F079E007C01FE00F800FE01F0007E03E0003E03C0001E07C0001E07C0001E0
780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001
E0780001E07C0001E07C0001E03C0003E03E0003E01E0007E01F000FE00FC03DE007E0F9F001FF
E1FF007F81FF20327DB125>I<003F800001FFF00003E1F80007807C000F003E001E001E003E00
1F003C000F007C000F807C000F8078000F80F8000780FFFFFF80FFFFFF80F8000000F8000000F8
000000F8000000F8000000F80000007C0000007C0000007C0000003E0001803E0003801F000300
0F80070007E00E0003F83C0000FFF800003FC000191F7E9E1D>I<0007F0001FF8007C3C00F87C
00F07C01E07C01E03803E00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C000FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<000001F8007F07FC01FFCF
1C07E3FC3C0F80F81C0F0078001F007C001E003C003E003E003E003E003E003E003E003E003E00
3E003E003E003E003E001E003C001F007C000F0078000F80F8000FE3F0000DFFC0001C7F00001C
0000001C0000001C0000001E0000001F0000000FFFF8000FFFFF0007FFFFC00FFFFFE03E000FF0
7C0001F0780000F0F0000078E0000038E0000038E0000038E0000038F000007870000070780000
F03C0001E01F0007C00FE03F8003FFFE00007FF0001E2F7E9F21>I<0F001F801F801F801F800F
00000000000000000000000000000000000000000000000780FF80FF800F800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800FC0FFF8FFF80D307EAF12>105 D<0780FF80FF800F80078007800780078007800780078007
800780078007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800780078007800FC0FFFCFFFC0E
327EB112>108 D<0781FE0000FF87FF8000FF9E0FC0000FB803E00007F001E00007E001F00007
E000F00007C000F00007C000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1F
FF80FFFC1FFF80211F7E9E25>110 D<001FC00000FFF80001E03C0007800F000F0007801E0003
C01E0003C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F800
00F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E
0003C00F00078007C01F0001F07C0000FFF800001FC0001D1F7E9E21>I<0787F0FF8FF8FFBC7C
0FB87C07F07C07E07C07E00007C00007C00007C000078000078000078000078000078000078000
0780000780000780000780000780000780000780000780000780000780000780000780000FC000
FFFE00FFFE00161F7E9E19>114 D<03FE300FFFF03E07F07801F07000F0E00070E00070E00030
E00030F00030F800007F00007FF0003FFF000FFFC003FFE0003FF00003F80000F8C0007CC0003C
E0001CE0001CE0001CF0001CF80038F80038FC00F0EF03F0C7FFC0C1FF00161F7E9E1A>I<00C0
0000C00000C00000C00000C00001C00001C00001C00003C00003C00007C0000FC0001FC000FFFF
E0FFFFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C03003C03003C03003C03003C03003C03003C03003C07001E0
6001E0E000F9C000FFC0003F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F0
00078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078001F000078001F000078001F000078003F00003C007F00003
C00EF00001F03CF80000FFF8FF80003FC0FF80211F7E9E25>I<FFF803FF80FFF803FF800FC000
FC000780007800078000700003C000700003C000600003E000E00001E000C00001E000C00000F0
01800000F001800000F801800000780300000078030000007C070000003C060000003C06000000
1E0C0000001E0C0000001F1C0000000F180000000F1800000007B000000007B000000007B00000
0003E000000003E000000003E000000001C000000001C000000001800000000180000000038000
000003000000000300000000060000000006000000700E000000F80C000000F81C000000F83800
000070700000003FE00000001F80000000212D7F9E23>121 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin 
%%EndSetup
%%Page: 1 1
bop 462 440 a Fn(On)21 b(Holy)g(W)-6 b(ars)22 b(and)f(a)g(Plea)h(for)g(P)n
(eace)586 531 y(MMST)f(Language)g(Selection)824 652 y Fm(Doug)c(Johnson)834
749 y(July)e(16,)i(1990)125 904 y Fl(Abstract)125 996 y Fk(The)i(purp)q(ose)h
(of)e(this)h(do)q(cumen)o(t)g(is)g(to)f(start)i(to)125 1046
y(rationalize)315 1031 y Fj(1)346 1046 y Fk(the)15 b(c)o(hoice)f(of)g
(language)f(for)h(MMST)125 1096 y(dev)o(elopmen)o(t.)j(It)d(will)f(discuss)i
(selection)g(criteria,)125 1146 y(issues)j(related)g(to)f(those)h(criteria,)g
(and)f(ho)o(w)f(w)o(ell)125 1195 y(the)e(v)n(arious)f(languages)h(meet)f
(them.)166 1246 y(The)18 b(issues)h(and)f(languages)f(are)h(discussed)i(on)
125 1296 y(a)d(qualitativ)o(e,)g(rather)i(quan)o(titativ)o(e)e(basis.)30
b(Key)125 1345 y(quan)o(titativ)o(e)19 b(issues)j(will)e(b)q(e)h(addressed)i
(b)o(y)d(the)125 1395 y(system)27 b(design)i(team)e(o)o(v)o(er)h(the)h(next)f
(sev)o(eral)125 1445 y(mon)o(ths.)k(The)20 b(in)o(ten)o(t)f(of)g(this)g(do)q
(cumen)o(ts)g(is)g(to)125 1495 y(pro)o(vide)11 b(a)g(concrete)j(basis)e(for)f
(further)i(discussion,)125 1545 y(leading)e(to)i(general)g(agreemen)o(t)g(on)
f(just)h(what)g(the)125 1594 y(k)o(ey)g(issues)i(are.)125 1734
y Fl(1)69 b(In)n(tro)r(duction)125 1826 y Fk(The)15 b(discussion)h(of)e(the)i
(MMST)f(implemen)o(tation)125 1876 y(language)9 b(has)i(b)q(een)h(one)f(of)f
(the)h(most)f(emotionally)125 1926 y(c)o(harged)j(issues)h(I)f(ha)o(v)o(e)f
(ev)o(er)i(b)q(een)g(in)o(v)o(olv)o(ed)d(in.)18 b(It)125 1976
y(is)d(an)g(imp)q(ortan)o(t)f(decision)i(and)f(should)h(b)q(e)g(made)125
2025 y(in)e(a)h(rational)f(manner,)g(but)i(the)g(participan)o(ts)f(all)125
2075 y(seem)j(to)h(b)q(e)g(op)q(erating)g(with)f(di\013eren)o(t)i(assump-)125
2125 y(tions)10 b(and)h(priorities.)17 b(A)11 b(summary)e(to)h(date)i(migh)o
(t)125 2175 y(consist)j(of:)k(\\C++,)14 b(of)g(course.")22
b(and)14 b(\\I)g(lo)o(v)o(e)g(m)o(y)125 2225 y(Smalltal)o(k/Lisp".)j(I)e
(think)f(it's)h(imp)q(ortan)o(t)e(to)h(es-)125 2274 y(tablish)k(a)h(set)g(of)
g(selection)g(criteria)h(that)f(w)o(e)g(all)125 2324 y(can)f(agree)g(on)g
(and)f(then)i(apply)e(them)g(as)h(ob)r(jec-)125 2374 y(tiv)o(ely)d(as)g(p)q
(ossible.)24 b(As)16 b(a)g(starting)g(p)q(oin)o(ting,)e(I'll)p
125 2411 333 2 v 171 2437 a Fi(1)188 2449 y Fh(In)d(the)g(sense)f(of)i
(taking)d(the)i(emotion)e(out.)996 904 y Fk(outline)k(the)h(criteria)g(that)f
(are)h(b)q(eing)f(used)i(b)o(y)e(the)996 954 y(CIP)20 b(system)f(design)h
(team.)34 b(W)m(e)20 b(are)g(op)q(erating)996 1004 y(on)g(the)g(assumption)e
(that)i(a)f(single)h(language)f(is)996 1054 y(preferred)d(to)d(m)o(ultiple)e
(languages.)17 b(Ho)o(w)o(ev)o(er,)d(the)996 1104 y(CIP)19
b(system)e(requiremen)o(ts)i(are)f(div)o(erse)h(enough)996
1153 y(that)13 b(w)o(e)g(ma)o(y)e(ha)o(v)o(e)i(to)g(use)h(more)d(than)i(one)g
(in)g(it's)996 1203 y(dev)o(elopmen)o(t.)1038 1378 y(The)23
b(selection)g(criteria)g(ha)o(v)o(e)f(few)g(absolutes,)996
1428 y(they)15 b(are)f(mostly)e(shades)i(of)g(grey)m(.)j(Must)e(w)o(e)f(ha)o
(v)o(e)996 1478 y(the)g(most)f(p)q(opular)g(language?)k(Of)d(course)g(not,)f
(or)996 1527 y(w)o(e)f(w)o(ould)e(use)i(COBOL.)f(Must)h(w)o(e)f(ha)o(v)o(e)g
(the)h(most)996 1577 y(e\016cien)o(t?)35 b(No,)19 b(or)h(w)o(e)f(w)o(ould)f
(b)q(e)i(co)q(ding)f(in)g(as-)996 1627 y(sem)o(bly)13 b(language.)19
b(I)c(b)q(eliev)o(e)g(there)g(are)g(only)f(t)o(w)o(o)996 1677
y(absolute)i(requiremen)o(ts:)23 b(it)15 b(m)o(ust)g(b)q(e)h(ob)r(ject)h
(ori-)996 1727 y(en)o(ted)11 b(and)e(it)g(m)o(ust)f(ha)o(v)o(e)h(an)h(exp)q
(ected)h(lifetime)c(ex-)996 1776 y(ceeding)13 b(that)f(of)g(the)h(CIP)f
(system)g(\(15)g(y)o(ear)g(goal\).)1038 1951 y(There)k(is)f(a)g(wide)g(range)
g(of)f(desirable)i(features,)996 2001 y(b)q(oth)25 b(tec)o(hnical)g(and)g
(business,)j(that)d(m)o(ust)f(b)q(e)996 2051 y(traded)e(o\013)e(against)g
(eac)o(h)h(other.)39 b(No)20 b(language)996 2100 y(optimizes)f(all)h(of)f
(them.)37 b(I)20 b(b)q(eliev)o(e)h(the)g(discus-)996 2150 y(sion)14
b(m)o(ust)g(fo)q(cus)h(on)f(the)h(problem)e(w)o(e)i(are)g(trying)996
2200 y(to)e(solv)o(e|dev)o(elopmen)o(t)e(of)h(the)h(MMST)f(CIP)h(sys-)996
2250 y(tem.)k(It)11 b(is)g(p)q(oin)o(tless)g(to)g(talk)f(ab)q(out)h(the)h
(virtues)g(of)996 2300 y(a)i(language)e(outside)i(some)f(problem)f(con)o
(text.)19 b(In-)996 2350 y(dividual)11 b(features)j(of)d(a)h(language)g(can)g
(b)q(e)h(either)h(a)996 2399 y(strength)e(or)f(a)f(w)o(eakness)i(dep)q
(ending)f(on)f(the)i(prob-)996 2449 y(lem.)135 2573 y Fg(c)125
2574 y Ff(\015)h Fg(Cop)o(yrigh)o(t)h(1990)g(Douglas)h(Johnson)1077
b Fk(1)p eop
%%Page: 2 2
bop 125 307 a Fl(2)69 b(Absolute)22 b(Requiremen)n(ts)125 402
y Fk(As)g(men)o(tioned,)g(I)g(b)q(eliev)o(e)g(there)i(are)e(only)f(t)o(w)o(o)
125 452 y(\\drop)13 b(dead")h(requiremen)o(ts)h(for)e(a)h(language:)j(ob-)125
502 y(ject)f(orien)o(ted)g(and)g(an)g(exp)q(ected)i(life)d(of)g(15)g(y)o
(ears)125 552 y(or)g(more.)22 b(I)16 b(don't)f(exp)q(ect)i(m)o(uc)o(h)e(con)o
(tro)o(v)o(ersy)h(on)125 602 y(these,)22 b(so)f(w)o(on't)f(defend)h(them)e
(in)h(detail.)37 b(But)125 652 y(they)14 b(do)g(narro)o(w)f(the)i(\014eld)f
(tremendously)m(.)125 780 y Fe(2.1)55 b(Ob)s(ject)19 b(Orien)n(ted)125
861 y Fk(F)m(or)k(man)o(y)f(sound)i(reasons,)i(\\ob)r(ject)e(orien)o(ted")125
911 y(has)c(b)q(een)i(selected)g(as)e(the)h(unifying)e(theme)h(for)125
961 y(the)15 b(CIP)f(dev)o(elopmen)o(t.)19 b(W)m(e`v)o(e)14
b(done)h(ob)r(ject)g(ori-)125 1011 y(en)o(ted)20 b(analysis,)g(w)o(e)f(are)h
(doing)f(ob)r(ject)h(orien)o(ted)125 1060 y(design,)29 b(w)o(e)d(will)f(do)i
(an)f(ob)r(ject)h(orien)o(ted)g(im-)125 1110 y(plemen)o(tation.)41
b(It)22 b(just)h(mak)o(es)e(go)q(o)q(d)h(sense)i(to)125 1160
y(c)o(ho)q(ose)12 b(an)g(ob)r(ject)g(orien)o(ted)h(language)e(to)g(aid)h
(that)125 1210 y(implem)o(en)o(tation)410 1195 y Fj(2)426 1210
y Fk(.)166 1262 y(No)o(w,)32 b(if)c(y)o(ou)h(start)h(lo)q(oking)d(at)i
(languages)125 1312 y(to)22 b(see)i(if)d(they)i(are)g(ob)r(ject)g(orien)o
(ted,)i(y)o(ou)d(dis-)125 1362 y(co)o(v)o(er)g(a)g(gra)o(y)g(scale)g(here,)j
(to)q(o.)43 b(Some)21 b(clearly)125 1412 y(are)g(\(e.g.)g(Smalltalk,)f
(E\016el,)j(Actor,)g(CLU,)p Fd(:)7 b(:)g(:)e Fk(\).)125 1461
y(Some)19 b(clearly)h(aren't)g(\(e.g.)g(COBOL)755 1446 y Fj(3)775
1461 y Fk(,)f(F)m(ortran,)125 1511 y(BASIC)p Fd(:)7 b(:)g(:)e
Fk(\).)29 b(In)17 b(the)h(middle)e(is)h(a)g(range)h(of)f(lan-)125
1561 y(guages)10 b(that)g(mix)e(ob)r(ject)i(orien)o(ted)h(and)f(functional)
125 1611 y(concepts.)21 b(Ada)15 b(lies)f(at)g(the)h(\\mostly)e(functional")
125 1661 y(end)j(of)f(the)i(sp)q(ectrum)f(with)f(a)h(few)g(features)h(that)
125 1710 y(p)q(ermit)h(a)i(v)o(ersion)g(of)f(OO.)h(C++)g(and)g(Lisp)f(are)125
1760 y(near)9 b(the)h(other)h(end)e(with)h(strong)f(supp)q(ort)i(for)e(OO,)
125 1810 y(but)14 b(still)f(preserving)i(their)f(functional)f(heritage.)125
1939 y Fe(2.2)55 b(Long)19 b(Life)125 2020 y Fk(It)12 b(w)o(ould)f(b)q(e)i
(an)f(exp)q(ensiv)o(e)h(tragedy)f(for)g(us)h(to)f(im-)125 2070
y(plemen)o(t)19 b(the)i(CIP)f(system)g(in)g(a)f(language)h(that)125
2119 y(will)14 b(b)q(e)i(an)f(orphan)h(in)f(ten)h(y)o(ears.)24
b(W)m(e)15 b(w)o(ould)g(b)q(e)125 2169 y(faced)d(with)g(either)h(supp)q
(orting)g(the)g(language)e(and)p 125 2213 333 2 v 171 2240
a Fi(2)188 2252 y Fh(It)i(is)f(p)q(ossible)g(to)g(use)g(ob)r(ject)g(orien)o
(ted)e(tec)o(hniques)g(in)125 2291 y(an)o(y)i(language.)17
b(In)c(fact,)f(once)g(man)o(y)g(go)q(o)q(d)g(programm)o(ers)125
2331 y(understand)i(OO,)k(they)e(sa)o(y)h(\\I'v)o(e)f(b)q(een)g(doing)f(that)
i(for)125 2370 y(y)o(ears.")c(Ho)o(w)o(ev)o(er,)e(OO)i(languages)c(mak)o(e)h
(it)h(m)o(uc)o(h)f(easier.)171 2398 y Fi(3)188 2410 y Fh(Although)j(there)g
(is)h(a)g(committee)d(forming)i(to)h(de\014ne)125 2449 y(an)d(ob)r(ject)e
(orien)o(ted)h(COBOL.)996 307 y Fk(to)q(ols)j(ourselv)o(es)i(or)e(totally)f
(rewriting)i(the)g(system)996 357 y(in)g(some)f(new)h(language.)1038
407 y(While)f(it)g(is)g(imp)q(ossible)f(to)i(predict)g(the)g(future,)996
457 y(there)e(are)g(man)o(y)d(things)h(that)h(can)g(giv)o(e)g(con\014dence)
996 506 y(that)17 b(the)f(language)g(will)e(p)q(ersist.)27
b(These)17 b(are)g(the)996 556 y(ones)e(w)o(e'v)o(e)f(used)g(to)g(narro)o(w)g
(the)g(\014eld:)1038 639 y Fc(\017)20 b Fk(Curren)o(t)e(Age.)28
b(A)17 b(language)f(that)h(has)g(b)q(een)1079 688 y(around)f(for)f(a)h(n)o
(um)o(b)q(er)f(of)g(y)o(ears)h(is)g(lik)o(ely)f(to)1079 738
y(sta)o(y)m(.)1038 821 y Fc(\017)20 b Fk(An)14 b(activ)o(e)g(formal)e
(standards)i(b)q(o)q(dy)m(.)1038 904 y Fc(\017)20 b Fk(Supp)q(ort)28
b(from)e(m)o(ultiple)f(viable)i(v)o(endors,)1079 954 y(including)c
(compilers,)h(dev)o(elopmen)o(t)f(to)q(ols,)1079 1003 y(user)15
b(in)o(terface)g(builders,)e(databases,)i(etc.)1038 1086 y
Fc(\017)20 b Fk(A)d(large,)e(div)o(erse)i(user)h(comm)o(unit)o(y)13
b(in)i(b)q(oth)1079 1136 y(industry)g(and)e(academia)1495 1121
y Fj(4)1512 1136 y Fk(.)1038 1218 y(Bey)o(ond)20 b(the)g(absolute)f(criteria)
h(of)f(just)g(b)q(eing)996 1268 y(viable)e(for)g(15)f(y)o(ears,)i(is)f(a)g
(desireable)h(criteria)g(of)996 1318 y(ha)o(ving)g(a)h(broad)f(use)i(and)f
(acceptance)i(o)o(v)o(er)e(the)996 1368 y(pro)r(ject)c(life.)j(This)c(is)g
(mostly)e(what)i(p)q(eople)h(mean)996 1418 y(when)k(they)g(talk)e(ab)q(out)h
(\\standard")h(and)f(is)g(ad-)996 1467 y(dressed)e(in)e(section)g(3.1.1.)996
1583 y Fe(2.3)56 b(Candidates)996 1660 y Fk(When)12 b(y)o(ou)f(\014lter)h
(the)g(w)o(orld's)e(languages)h(through)996 1710 y(the)31 b(absolute)g
(criteria,)j(only)c(three)h(are)g(left.)996 1760 y(Most)23
b(existing)f(languages)g(are)h(not)f(ob)r(ject)h(ori-)996 1809
y(en)o(ted)13 b(enough.)18 b(Most)12 b(ob)r(ject)h(orien)o(ted)g(languages)
996 1859 y(are)20 b(to)q(o)f(new)h(to)f(ha)o(v)o(e)g(an)o(y)g(con\014dence)i
(in)e(their)996 1909 y(longevit)o(y)m(.)38 b(The)21 b(three)i(candidates)e
(are)h(CLOS,)996 1959 y(C++,)17 b(and)e(Smalltalk.)21 b(The)16
b(only)f(marginal)e(call)996 2009 y(is)f(Ada,)g(whic)o(h)g(w)o(as)g(omitted)f
(b)q(ecause)j(of)d(its)i(w)o(eak)996 2059 y(OO)i(supp)q(ort.)1038
2108 y(In)23 b(terms)g(of)f(longevit)o(y)m(,)h(the)h(star)f(candidate)996
2158 y(is)c(Lisp.)32 b(It)19 b(meets)g(all)e(four)i(criteria)g(men)o(tioned)
996 2208 y(ab)q(o)o(v)o(e,)i(it's)f(o)o(v)o(er)g(thirt)o(y)f(y)o(ears)i(old,)
f(has)g(a)g(v)o(ery)996 2258 y(activ)o(e)d(standards)g(committee)1502
2243 y Fj(5)1518 2258 y Fk(,)g(four)f(ma)r(jor)f(and)p 996
2292 V 1042 2319 a Fi(4)1060 2331 y Fh(I)j(view)g(this)f(a)h(threshold)d
(requiremen)o(t.)32 b(Once)17 b(the)996 2370 y(user)f(comm)o(unit)o(y)e(reac)
o(hes)h(a)i(certain)e(critical)g(mass,)i(the)996 2410 y(language)9
b(will)j(b)q(e)f(viable)f(for)h(some)f(time)h(to)g(come.)1042
2437 y Fi(5)1060 2449 y Fh(With)g(sev)o(eral)f(TI)i(participan)o(t)o(s.)135
2573 y Fg(c)125 2574 y Ff(\015)h Fg(Cop)o(yrigh)o(t)h(1990)g(Douglas)h
(Johnson)1077 b Fk(2)p eop
%%Page: 3 3
bop 125 307 a Fk(man)o(y)15 b(minor)g(v)o(endors,)k(and)e(a)g(broad)g(user)h
(com-)125 357 y(m)o(unit)o(y)m(.)166 408 y(C++)g(is)f(somewhat)g(w)o(eak)o
(er.)29 b(It's)17 b(only)g(a)g(few)125 458 y(y)o(ears)23 b(old)296
443 y Fj(6)314 458 y Fk(,)h(the)f(X3J16)f(standards)i(committee)125
508 y(has)d(just)g(formed,)g(v)o(endors)h(are)f(still)f(emerging,)125
557 y(and)14 b(there)h(is)f(a)g(v)o(ery)h(rapidly)e(gro)o(wing)g(user)i(com-)
125 607 y(m)o(unit)o(y)m(.)44 b(Ho)o(w)o(ev)o(er,)26 b(there)f(seems)f(to)f
(b)q(e)h(little)125 657 y(doubt)13 b(of)h(its)g(longevit)o(y)m(.)166
708 y(Smalltalk)c(is)j(the)h(w)o(eak)o(est)g(of)f(the)h(three)h(in)e(this)125
758 y(area.)33 b(It's)19 b(ab)q(out)g(15)f(y)o(ears)i(old,)f(has)g(no)g
(activ)o(e)125 808 y(standards)j(b)q(o)q(dy)m(,)g(is)f(supp)q(orted)i(b)o(y)e
(t)o(w)o(o)g(ma)r(jor)125 857 y(v)o(endors)10 b(and)g(man)o(y)f(smaller)f
(ones,)j(and)f(has)h(a)e(sub-)125 907 y(stan)o(tial)k(\(and)g(gro)o(wing\))g
(user)i(comm)o(unit)o(y)m(.)125 1050 y Fl(3)69 b(Desirable)21
b(Criteria)125 1143 y Fk(No)o(w)12 b(w)o(e)h(get)g(to)g(the)g(hard)g(issues.)
19 b(Eac)o(h)13 b(language)125 1193 y(is)j(b)q(est)i(at)e(something.)25
b(No)17 b(language)f(is)g(b)q(est)i(at)125 1243 y(ev)o(erything.)f(W)m(e)9
b(m)o(ust)g(w)o(eigh)h(these)h(desirable)g(cri-)125 1293 y(teria)g(against)g
(eac)o(h)h(other)h(to)e(ac)o(hiev)o(e)h(the)g(b)q(est)h(so-)125
1343 y(lution)g(for)h(our)h(problem.)k(Sev)o(eral)14 b(of)g(these)i(areas)125
1392 y(ha)o(v)o(e)9 b(a)g(sharp)h(threshold.)17 b(It)10 b(is)f(a)g(ma)r(jor)f
(limitation)125 1442 y(if)g(there)k(are)e(no)f(go)q(o)q(d)h(dev)o(elopmen)o
(t)e(en)o(vironmen)o(ts)125 1492 y(for)13 b(a)g(language,)g(but)h(only)e
(minor)g(adv)n(an)o(tage)h(if)g(it)125 1542 y(has)h(t)o(w)o(en)o(t)o(y)m(.)
166 1593 y(The)20 b(criteria)f(are)h(divided)e(in)o(to)h(business)h(and)125
1643 y(tec)o(hnical)g(categories.)36 b(The)20 b(tec)o(hnical)g(category)125
1692 y(fo)q(cuses)12 b(on)g(the)g(issues)h(in)o(v)o(olv)o(ed)d(in)h(the)h
(actual)f(de-)125 1742 y(sign)k(and)g(writing)g(of)g(the)h(system.)23
b(The)15 b(business)125 1792 y(category)d(deals)g(with)f(the)h(broader)h
(issues)f(of)g(man-)125 1842 y(agemen)o(t)g(and)i(mark)o(eting)e(the)j
(system.)125 1964 y Fe(3.1)55 b(Business)19 b(Criteria)125
2043 y Fb(3.1.1)47 b(Standards)125 2121 y Fk(The)20 b(b)q(ene\014ts)h(of)e(a)
g(standard)h(language)f(include)125 2171 y(long)8 b(life,)i(con)o(trolled)f
(ev)o(olution,)h(wide)f(a)o(v)n(ailabilit)o(y)125 2221 y(of)16
b(supp)q(ort)j(pac)o(k)n(ages)e(of)g(all)g(kinds,)g(and)h(ease)g(of)125
2271 y(hiring)13 b(and)g(training)g(sta\013.)166 2322 y(The)g(term)f
(\\standards")h(is)f(used)i(in)e(sev)o(eral)h(dif-)125 2371
y(feren)o(t)h(w)o(a)o(ys.)k(In)c(the)h(strictest)h(sense,)f(a)f(language)p
125 2411 333 2 v 171 2437 a Fi(6)188 2449 y Fh(15)d(y)o(ears)f(if)i(y)o(ou)e
(grandfather)f(C)996 307 y Fk(is)24 b(standard)g(if)f(a)g(recognized)i
(standards)f(b)q(o)q(dy)996 357 y(\(usually)14 b(ANSI)g(in)g(this)g(coun)o
(try\),)g(has)g(published)996 407 y(sp)q(eci\014cations)21
b(for)e(the)h(language.)34 b(While)19 b(there)996 457 y(are)13
b(a)f(n)o(um)o(b)q(er)f(of)g(b)q(ene\014ts)j(of)e(ha)o(ving)f(a)g(published)
996 506 y(standard,)g(I)e(don't)g(think)g(this)h(is)f(an)g(o)o(v)o
(erwhelming)996 556 y(consideration)18 b(for)f(us.)30 b(Of)18
b(our)f(candidate)h(lan)o(u-)996 606 y(gages,)i(only)e(Lisp)h(is)g(a)g
(standard)h(in)e(this)h(sense.)996 656 y(The)13 b(ANSI)f(X3J16)g(committee)e
(for)i(standardizing)996 706 y(C++)20 b(has)g(just)g(formed)f(and)g(it)g
(will)g(b)q(e)h(sev)o(eral)996 756 y(y)o(ears)15 b(b)q(efore)f(they)h
(publish)e(a)h(standard.)1038 807 y(When)23 b(most)f(p)q(eople)h(talk)f(ab)q
(out)h(standards,)996 857 y(they)c(are)f(usually)f(meaning)e(\\widely)i
(accepted",)996 907 y(\\the)c(leader)g(in)f(the)h(\014eld.")18
b(This)12 b(is)h(a)f(more)f(useful)996 956 y(meaning,)f(but)j(no)o(w)e(y)o
(ou)h(ha)o(v)o(e)g(to)g(de\014ne)h(the)g(\014eld.)996 1006
y(In)d(business)h(programming,)c(COBOL)k(is)f(king,)f(but)996
1056 y(RPG,)g(PL/1,)h(and)g(ev)o(en)g(C)g(ha)o(v)o(e)g(wide)g(acceptance.)996
1106 y(In)21 b(scien)o(ti\014c)g(computing,)g(F)m(ortran)f(is)h(the)g(clear)
996 1156 y(leader,)c(with)f(some)f(C)h(and)g(other)h(languages.)24
b(In)996 1205 y(the)14 b(ob)r(ject)g(orien)o(ted)g(comm)o(uni)o(t)o(y)m(,)c
(Smalltalk)g(and)996 1255 y(C++)18 b(are)f(the)g(leaders,)h(with)e(Lisp)h
(and)f(E\016el)h(in)996 1305 y(the)f(second)g(tier.)21 b(In)15
b(the)h(CIM)f(mark)o(et,)f(COBOL)996 1355 y(is)e(the)g(leader)g(for)f(pro)q
(duction)h(systems,)g(nearly)g(all)996 1405 y(the)18 b(academic)e(systems)h
(are)g(in)g(Lisp.)27 b(In)17 b(the)g(AI)996 1454 y(\014eld,)22
b(Lisp)f(is)f(the)h(clear)g(leader)h(with)e(Prolog)g(a)996
1504 y(p)q(opular)c(nic)o(he.)24 b(In)16 b(the)h(hard)f(realtime)e(\014eld,)j
(as-)996 1554 y(sem)o(bly)e(language)g(is)h(still)f(the)i(premier)e(language)
996 1604 y(with)i(some)e(C)i(and)f(P)o(ascal)h(in)f(use.)27
b(The)17 b(MMST)996 1654 y(CIP)e(is)f(a)h(ob)r(ject)g(orien)o(ted)g(CIM)g
(system)f(with)g(AI)996 1704 y(and)d(realtime)e(comp)q(onen)o(ts.)16
b(Whic)o(h)10 b(\014eld's)h(leader)996 1753 y(should)j(w)o(e)g(pic)o(k?)1038
1805 y(What)h(is)h(absolutely)f(critical)h(is)g(that)g(there)h(b)q(e)996
1855 y(enough)11 b(of)g(a)g(user)h(comm)o(unit)o(y)c(\(in)i(some)h(\014eld\))
g(for)996 1904 y(language)16 b(to)h(b)q(e)h(viable.)26 b(Bey)o(ond)17
b(that,)g(there)i(is)996 1954 y(considerable)h(b)q(ene\014t)f(in)g(tec)o
(hnology)f(transfer)h(if)996 2004 y(y)o(ou)14 b(are)g(using)f(the)i(same)d
(language)h(as)h(the)g(\014eld's)996 2054 y(researc)o(hers)j(and)d(ma)r(jor)e
(dev)o(elop)q(ers.)996 2170 y Fb(3.1.2)48 b(Ev)o(olution)996
2250 y Fk(The)16 b(CIP)f(system)h(is)f(going)f(to)h(ha)o(v)o(e)g(b)q(oth)g(a)
g(long)996 2300 y(dev)o(elopmen)o(t)i(cycle)h(and)f(a)g(long)g(life.)28
b(In)17 b(select-)996 2350 y(ing)d(a)g(language,)g(w)o(e)h(m)o(ust)e
(understand)j(b)q(oth)f(the)996 2399 y(curren)o(t)d(state)f(and)e(the)i(exp)q
(ected)h(ev)o(olution.)k(Ev)o(o-)996 2449 y(lution)d(can)h(b)q(oth)g(help)g
(and)g(h)o(urt.)135 2573 y Fg(c)125 2574 y Ff(\015)f Fg(Cop)o(yrigh)o(t)h
(1990)g(Douglas)h(Johnson)1077 b Fk(3)p eop
%%Page: 4 4
bop 166 307 a Fk(It)16 b(helps)g(when)g(the)g(ev)o(olution)f(is)g(timely)m(,)
e(com-)125 357 y(patible,)27 b(or)e(\\addable".)52 b(An)26
b(example)e(of)h(an)125 407 y(addable)10 b(ev)o(olution)g(migh)o(t)f(b)q(e)j
(a)e(new)i(pro)q(cess)g(sim-)125 457 y(ulator)e(or)i(h)o(yp)q(ertext)g(pac)o
(k)n(age)f(that)h(can)f(b)q(e)h(added)125 506 y(on)j(top)g(of)g(CIP)g(to)h
(giv)o(e)f(new)g(capabilit)o(y)m(.)21 b(An)16 b(ex-)125 556
y(ample)h(of)h(a)h(compatible)e(ev)o(olution)h(w)o(ould)g(b)q(e)i(a)125
606 y(p)q(erformance)e(impro)o(v)o(emen)o(t)d(or)k(a)f(more)f(reliable)125
656 y(release)k(of)e(a)g(database.)36 b(Other)21 b(forms)e(of)g(help-)125
706 y(ful)e(ev)o(olution)f(include)i(ric)o(her)h(and)f(more)f(p)q(o)o(w)o
(er-)125 756 y(ful)e(to)q(ols,)h(b)q(etter)h(supp)q(ort)g(pac)o(k)n(ages,)f
(and)g(ric)o(her)125 805 y(class)c(libraries.)18 b(In)12 b(all)f(cases,)j
(the)f(ev)o(olution)f(m)o(ust)125 855 y(b)q(e)i(there)h(when)g(w)o(e)f(need)h
(it.)166 905 y(Ev)o(olution)20 b(can)i(h)o(urt)g(when)g(it)g(is)f(incompati-)
125 955 y(ble)e(ev)o(olution)f(\(esp)q(ecially)h(of)g(things)g(em)o(b)q
(edded)125 1005 y(deeply)13 b(in)f(the)h(system\))f(or)h(ev)o(olution)f(that)
g(o)q(ccurs)125 1054 y(to)q(o)h(late.)166 1104 y(F)m(or)g(example,)f(the)i
(ANSI)g(Common)d(Lisp)i(com-)125 1154 y(mittee)j(rede\014ned)i(c)o(haracter)h
(handling)c(in)i(a)f(w)o(a)o(y)125 1204 y(that)d(w)o(as)g(b)q(oth)h(fundamen)
o(tal)d(and)i(incompatible.)125 1254 y(The)d(ANSI)g(C)f(committee)f(did)h
(similar)e(things)j(with)125 1303 y(argumen)o(t)f(passing.)17
b(Multiple)10 b(inheritance)i(w)o(as)e(in)125 1353 y(Smalltal)o(k)f(release)k
(2.3)d(and)i(remo)o(v)o(ed)f(from)e(2.5.)17 b(It)125 1403 y(is)j(to)q(o)g(m)o
(uc)o(h)f(to)i(exp)q(ect)h(that)e(the)h(ANSI)g(C++)125 1453
y(commi)o(ttee)g(will)g(refrain.)44 b(In)23 b(all)e(fairness,)k(the)125
1503 y(ANSI)d(c)o(hanges)h(are)f(long)f(term)h(impro)o(v)o(em)o(en)o(ts.)125
1553 y(Both)9 b(ANSI)h(C)f(and)g(ANSI)h(Common)c(Lisp)j(are)h(b)q(et-)125
1602 y(ter)h(languages)g(than)g(the)h(de)f(facto)g(standards)h(they)125
1652 y(started)j(with.)166 1702 y(In)e(some)g(cases,)h(where)g(the)g(ev)o
(olving)e(feature)i(is)125 1752 y(not)h(engineered)j(in)o(to)d(the)h(CIP)m(,)
f(w)o(e)h(can)g(tak)o(e)g(ad-)125 1802 y(v)n(an)o(tage)f(of)h(c)o(hanges)h
(as)f(so)q(on)h(as)f(they)h(are)g(a)o(v)n(ail-)125 1851 y(able.)g(W)m(e)11
b(can)h(shift)g(to)g(a)g(new)g(dev)o(elopmen)o(t)f(en)o(vi-)125
1901 y(ronmen)o(t)16 b(whenev)o(er)k(the)e(pro)q(ductivit)o(y)g(impro)o(v)o
(e-)125 1951 y(men)o(ts)13 b(justify)g(the)i(training)d(costs.)166
2001 y(The)18 b(timing)e(is)h(v)o(ery)h(imp)q(ortan)o(t)e(to)i(us.)30
b(Con-)125 2051 y(sider)18 b(execption)h(handling.)29 b(W)m(e)18
b(need)h(to)f(de\014ne)125 2100 y(an)h(exception)g(handling)f(sc)o(heme)i(b)q
(efore)g(w)o(e)f(b)q(e-)125 2150 y(gin)12 b(co)q(ding)h(CIP)h(and)f(that)g
(sc)o(heme)h(will)e(get)h(built)125 2200 y(in)o(to)f(CIP)h(p)q(erv)n(asiv)o
(ely)m(.)k(If)12 b(the)h(language)f(do)q(es)i(not)125 2250
y(pro)o(vide)h(exception)i(handling,)e(w)o(e)i(need)g(to)f(build)125
2300 y(it.)23 b(Later)16 b(ev)o(olution)f(do)q(es)h(us)g(no)g(go)q(o)q(d)f
(and)h(ma)o(y)125 2350 y(h)o(urt)e(if)f(our)h(sc)o(heme)g(is)g(non-standard.)
k(All)13 b(of)g(the)125 2399 y(k)o(ey)i(primitiv)o(es)e(m)o(ust)i(b)q(e)h
(stable)f(b)q(efore)h(w)o(e)g(start)125 2449 y(co)q(ding)d(in)h(Jan)o(uary)f
(of)h('91.)1038 307 y(In)i(one)g(area)g(w)o(e)g(are)h(coun)o(ting)e(on)h
(compatible)996 357 y(ev)o(olution,)10 b(i.e.)g(impro)o(v)o(emen)o(ts)f(b)o
(y)i(a)g(selected)h(v)o(en-)996 407 y(dor.)17 b(This)11 b(will)e(b)q(e)j(v)o
(ery)f(imp)q(ortan)o(t)e(to)i(us)g(if)f(w)o(e)h(se-)996 457
y(lect)j(an)f(ob)r(ject)h(orien)o(ted)g(database)f(b)q(ecause)i(their)996
506 y(curren)o(t)h(bac)o(k)o(end)f(database)f(services)i(are)f(not)f(y)o(et)
996 556 y(robust)h(enough.)1038 606 y(The)g(rate)h(of)e(ev)o(olution)g(is)h
(driv)o(en)g(b)o(y)g(b)q(oth)g(the)996 656 y(size)i(of)e(the)h(mark)o(et)e
(and)i(the)g(di\016cult)o(y)e(of)h(dev)o(el-)996 706 y(opmen)o(t.)40
b(The)22 b(larger)f(the)i(mark)o(et,)e(the)h(larger)996 756
y(the)13 b(incen)o(tiv)o(e)f(to)g(dev)o(elop)g(an)f(impro)o(v)o(emen)o(t.)k
(The)996 805 y(harder)j(it)f(is)g(to)h(dev)o(elop)f(the)h(impro)o(v)o(emen)o
(t,)d(the)996 855 y(more)e(the)i(cost)f(\(see)h(section)g(3.1.4\).)1038
905 y(While)h(this)h(can)h(b)q(e)g(view)o(ed)f(as)g(a)g(simple)f(R)o(OI)996
955 y(problem,)k(the)g(dynamics)e(of)h(ev)o(olution)g(seem)h(to)996
1005 y(b)q(e)c(more)e(complex)g(than)h(that.)22 b(If)15 b(the)h(ev)o
(olution-)996 1054 y(ary)k(pro)q(cess)i(w)o(ere)f(dominated)d(b)o(y)i(mark)o
(et)f(size,)996 1104 y(then)10 b(the)h(COBOL/IBM)f(en)o(vironmen)o(ts)f(w)o
(ould)g(b)q(e)996 1154 y(ev)o(olving)k(ten)h(times)f(faster)h(than)g(an)o(y)f
(other)i(en)o(vi-)996 1204 y(ronmen)o(t.)i(That's)d(not)g(what's)g(going)e
(on.)1038 1254 y(F)m(or)g(eac)o(h)h(of)f(the)h(tec)o(hnical)f(criteria,)h
(I'll)e(b)q(e)i(dis-)996 1303 y(cussing)i(the)f(exp)q(ected)i(ev)o(olution)d
(and)g(its)h(impact)996 1353 y(on)g(us.)996 1460 y Fb(3.1.3)48
b(Customer)15 b(Demand)996 1537 y Fk(This)k(is)g(an)g(imp)q(ortan)o(t)e
(issue.)35 b(If)19 b(the)g(customer)996 1586 y(needs)g(a)e(particular)g
(language,)g(w)o(e)g(m)o(ust)f(do)h(our)996 1636 y(b)q(est)g(to)f(meet)f
(that)h(need.)25 b(Ho)o(w)o(ev)o(er,)16 b(that)g(raises)996
1686 y(the)22 b(issue)f(of)f(what)h(w)o(e)g(are)g(building,)g(who)f(our)996
1736 y(customer)d(is,)g(and)g(what)g(that)g(customer's)g(needs)996
1786 y(are.)g(Our)10 b(o\016cial)e(customer)h(do)q(esn't)h(seem)f(to)h(ha)o
(v)o(e)996 1836 y(strong)17 b(preferences.)28 b(The)17 b(only)f(languages)g
(men-)996 1885 y(tioned)10 b(in)f(the)i(con)o(tract)f(are)g(C)g(and)g(Lisp.)
16 b(W)m(e)9 b(need)996 1935 y(to)k(tak)o(e)f(a)g(broader)h(view)g(of)f
(\\customer")g(for)g(help.)1038 1985 y(I)h(susp)q(ect)j(this)e(is)g(one)g
(area)f(where)i(ev)o(ery)o(one)g(in)996 2035 y(the)c(language)f(debate)h(is)g
(op)q(erating)f(with)g(di\013eren)o(t)996 2085 y(assumptions.)24
b(Let's)16 b(try)g(out)g(the)h(v)n(arious)e(p)q(ossi-)996 2134
y(bilities:)1026 2219 y(1.)20 b(If)d(w)o(e)g(are)h(building)d(turn)j(k)o(ey)f
(systems,)h(the)1079 2269 y(customer)24 b(cares)g(ab)q(out)f(what)h(the)g
(system)1079 2319 y(do)q(es,)14 b(language)f(is)h(secondary)m(.)1026
2399 y(2.)20 b(If)g(w)o(e)h(are)g(building)e(an)h(exp)q(erimen)o(tal)g(sys-)
1079 2449 y(tem)f(to)g(test)i(concepts)g(and)e(ideas,)i(it's)e(the)135
2573 y Fg(c)125 2574 y Ff(\015)13 b Fg(Cop)o(yrigh)o(t)h(1990)g(Douglas)h
(Johnson)1077 b Fk(4)p eop
%%Page: 5 5
bop 208 307 a Fk(ideas)15 b(and)g(exp)q(erience)i(that)e(are)h(imp)q(ortan)o
(t.)208 357 y(The)h(system)f(will)f(probably)h(need)i(to)e(b)q(e)h(re-)208
407 y(engineered)e(for)e(pro)q(duction)i(an)o(yw)o(a)o(y)m(.)155
499 y(3.)20 b(If)15 b(w)o(e)h(are)h(building)d(a)i(collection)g(of)f(comp)q
(o-)208 548 y(nen)o(ts)20 b(to)g(b)q(e)h(used)f(in)g(other)g(systems,)i(lan-)
208 598 y(guage)c(is)g(crucial)g(when)h(those)g(comp)q(onen)o(ts)208
648 y(are)i(to)g(b)q(e)h(compiled)d(and)i(link)o(ed)g(in)o(to)f(the)208
698 y(existing)f(system)g(or)h(when)g(they)g(are)h(to)e(b)q(e)208
748 y(main)o(tained)11 b(as)j(part)g(of)f(that)h(system)825
733 y Fj(7)155 840 y Fk(4.)20 b(If)d(w)o(e)h(are)h(building)d(a)i(framew)o
(ork)e(for)i(CIM)208 889 y(that)25 b(is)h(to)g(in)o(tegrate)g(a)g(v)n(ariet)o
(y)f(of)g(com-)208 939 y(p)q(onen)o(ts)20 b(from)e(man)o(y)g(sources,)23
b(it's)c(the)h(in-)208 989 y(terfaces)f(\(particularly)f(the)h(database\))g
(that)208 1039 y(matters.)43 b(The)23 b(framew)o(ork)e(m)o(ust)g(b)q(e)j
(lan-)208 1089 y(guage)13 b(indep)q(enden)o(t.)166 1189 y(As)i(part)g(of)e
(this)i(discussion,)f(w)o(e)h(need)h(to)e(iden-)125 1239 y(tify)f(whic)o(h)g
(of)h(these)h(w)o(e)f(are)h(doing.)i(My)d(assump-)125 1288
y(tion)c(is)i(that)f(w)o(e)h(are)g(primarily)d(doing)i(item)f(2)h(with)125
1338 y(hop)q(es)j(that)g(w)o(e)g(will)f(accomplish)f(items)h(4)h(and)f(1.)166
1390 y(If)f(this)h(isn't)f(correct,)i(w)o(e'll)e(need)h(to)f(adjust)h(pri-)
125 1440 y(orities)g(in)g(sev)o(eral)h(areas.)k(While)13 b(all)f(of)h(the)h
(ab)q(o)o(v)o(e)125 1490 y(w)o(ould)8 b(b)q(e)j(desirable)f(outcomes,)f(w)o
(e)h(can't)f(attempt)125 1540 y(to)j(do)h(them)f(all)g(without)h(a)g(risk)g
(that,)f(in)h(the)h(end,)125 1590 y(w)o(e)g(will)e(ha)o(v)o(e)i(done)g(none)g
(of)f(them.)125 1709 y Fb(3.1.4)47 b(Pro)q(ductivit)o(y)125
1790 y Fk(I)13 b(w)o(asn't)g(sure)i(whether)f(this)g(should)f(b)q(e)h(a)f
(tec)o(hni-)125 1840 y(cal)c(issue)i(or)f(a)f(business)i(issue.)18
b(Pro)q(ductivit)o(y)10 b(is)f(of-)125 1890 y(ten)i(cited)g(as)f(a)g(reason)h
(for)f(selecting)i(a)e(language.)16 b(I)125 1939 y(think)11
b(ev)o(ery)o(one)h(agrees)h(that)f(some)e(languages)h(are)125
1989 y(more)16 b(pro)q(ductiv)o(e)h(than)g(others.)29 b(Unfortunately)m(,)125
2039 y(no)15 b(one)h(can)f(agree)i(on)e(ho)o(w)g(m)o(uc)o(h)g(more)f(pro)q
(duc-)125 2089 y(tiv)o(e,)f(th)o(us)i(no)e(one)i(can)f(agree)h(on)f(ho)o(w)f
(imp)q(ortan)o(t)125 2139 y(that)g(is.)p 125 2174 333 2 v 171
2201 a Fi(7)188 2213 y Fh(\\Language")5 b(in)j(this)g(case)f(means)g(more)g
(than)g(just)g(Lisp)125 2252 y(or)13 b(C++.)25 b(Unless)14
b(the)f(class)h(libraries)e(are)h(also)g(compati-)125 2291
y(ble,)k(the)f(comp)q(onen)o(t)e(ma)o(y)i(b)q(e)g(as)h(hard)e(to)i(in)o
(tegrate)d(or)125 2331 y(main)o(tain)9 b(as)j(if)f(it)h(w)o(as)g(written)f
(in)h(Sw)o(ahilli.)j(I)d(can't)e(o)o(v)o(er-)125 2370 y(emphasize)k(this.)31
b(Prop)q(erly)15 b(designed)g(OO)j(applications)125 2410 y(are)8
b(primarily)f(written)i(in)g(the)f(class)h(libraries,)f(not)g(the)h(lan-)125
2449 y(guage)h(primitiv)o(es.)1038 307 y Fk(F)m(or)19 b(one)i(example,)e
(consider)i(t)o(w)o(o)f(debuggers.)996 357 y(The)14 b(GDB)f(debugger)i(is)e
(written)h(in)f(C)h(for)f(C)g(run-)996 407 y(ning)21 b(on)h(Unix.)41
b(It)22 b(is)g(p)q(o)o(w)o(erful,)h(widely)e(used,)996 457
y(and)14 b(written)h(in)f(36,953)f(lines)h(for)g(the)h(curren)o(t)h(re-)996
506 y(lease.)j(The)14 b(equiv)n(alen)o(t)f(functionalit)o(y)g(in)g(Lisp)h
(for)996 556 y(Lisp)j(running)g(on)g(the)g(Explorer)h(is)f(10,396)e(lines.)
996 606 y(Neither)d(system)f(is)g(particularly)f(ob)r(ject)i(orien)o(ted)1807
591 y Fj(8)996 656 y Fk(Since)i(lines-p)q(er-man-da)o(y)e(are)i(roughly)e
(constan)o(t,)996 706 y(it's)j(reasonable)h(to)g(think)f(the)h(Lisp)g(implem)
o(en)o(ta-)996 756 y(tion)j(w)o(ould)f(b)q(e)i(ab)q(out)f(a)g(third)g(the)h
(cost)g(of)f(the)996 805 y(C.)1038 858 y(W)m(e)h(can)h(build)f(CIP)g(in)h(an)
o(y)f(language.)37 b(The)996 908 y(pressure)17 b(p)q(oin)o(t)d(will)f(b)q(e)j
(the)f(functionalit)o(y)e(of)h(the)996 958 y(system.)j(As)11
b(part)g(of)f(the)h(detailed)g(ev)n(alutions)e(o)o(v)o(er)996
1008 y(the)19 b(next)g(sev)o(eral)g(mon)o(ths,)e(w)o(e)i(will)e(try)h(to)g
(esti-)996 1057 y(mate)d(the)i(tradeo\013)g(of)e(language)h(vs.)25
b(functional-)996 1107 y(it)o(y)m(.)996 1231 y Fb(3.1.5)48
b(T)l(raining)996 1314 y Fk(T)m(raining)10 b(considerations)i(m)o(ust)f
(include)h(b)q(oth)g(ini-)996 1363 y(tial)i(dev)o(elopmen)o(t)h(and)g(long)f
(term)h(main)o(tenance.)996 1413 y(No)o(w,)i(and)g(for)g(at)g(least)g(the)h
(next)g(sev)o(eral)f(y)o(ears,)996 1463 y(the)e(ma)r(jor)d(issue)i(will)f(b)q
(e)h(\014nding)f(or)h(training)f(ob-)996 1513 y(ject)i(orien)o(ted)f
(programmers.)i(The)e(language)f(will)996 1563 y(b)q(e)20 b(secondary)m(.)35
b(Y)m(ou)19 b(can't)g(just)h(tak)o(e)f(a)g(C)h(pro-)996 1612
y(grammer)13 b(and)i(hand)g(him)e(a)i(C++)h(en)o(vironmen)o(t.)996
1662 y(What)e(y)o(ou)f(get)h(will)f(b)q(e)h(C.)1038 1715 y(When)f(a)g
(skilled)g(OO)h(programmer)d(is)i(found)f(or)996 1765 y(trained,)g(the)h
(next)g(ma)r(jor)d(training)h(issue)i(is)f(learn-)996 1815
y(ing)17 b(the)i(ob)r(jects)g(used)f(in)g(the)g(en)o(vironmen)o(t)f(and)996
1865 y(application.)f(The)d(syn)o(tax)f(of)g(the)h(language)f(is)g(the)996
1914 y(least)i(of)g(the)g(problems)1377 1899 y Fj(9)1395 1914
y Fk(.)1038 1967 y(This)32 b(is)h(considerably)f(di\013eren)o(t)i(from)d(the)
996 2017 y(\\go)q(o)q(d)16 b(old)g(da)o(ys")g(when)h(programmers)d(built)i
(di-)996 2067 y(rectly)f(using)e(the)h(lo)o(w)o(est)g(lev)o(els)f(on)h(the)g
(language.)996 2117 y(Then)20 b(learning)f(the)g(language)g(w)o(as)g(a)g
(dominan)o(t)996 2166 y(part)h(of)f(the)h(training)e(problem.)34
b(With)19 b(the)h(ad-)p 996 2213 V 1042 2240 a Fi(8)1060 2252
y Fh(I)12 b(c)o(hose)f(this)g(example)f(largely)g(b)q(ecause)g(it)i(w)o(as)h
(a)f(rea-)996 2291 y(sonably)j(comparable,)g(\\real")g(and)h(complex)f(one)h
(that)g(I)996 2331 y(could)7 b(get)h(line)g(coun)o(ts)f(on.)14
b(I'll)7 b(b)q(e)i(happ)o(y)d(to)j(collect)d(others.)1042 2359
y Fi(9)1060 2370 y Fh(Lisp)20 b(and)f(Smalltalk)f(b)q(oth)h(ha)o(v)o(e)g
(trivial)g(syn)o(taxes.)996 2410 y(C++'s)c(is)f(more)f(complex,)f(but)h(can)g
(b)q(e)g(understo)q(o)q(d)e(in)j(a)996 2449 y(w)o(eek)e(or)f(so.)135
2573 y Fg(c)125 2574 y Ff(\015)i Fg(Cop)o(yrigh)o(t)h(1990)g(Douglas)h
(Johnson)1077 b Fk(5)p eop
%%Page: 6 6
bop 125 307 a Fk(v)o(en)o(t)18 b(of)g(ob)r(ject)i(orien)o(ted)f(tec)o
(hniques,)h(program-)125 357 y(mers)25 b(build)g(with)g(m)o(uc)o(h)f(more)h
(abstract)i(\(and)125 407 y(more)12 b(p)q(o)o(w)o(erful\))i(lev)o(els.)166
457 y(F)m(or)j(the)h(initial)e(dev)o(elopmen)o(t,)g(a)i(surv)o(ey)g(indi-)125
507 y(cates)j(that)g(Smalltalk)d(is)i(the)h(b)q(est)h(kno)o(wn)f(lan-)125
557 y(guage)e(in)g(the)h(CIP)g(team)563 542 y Fj(10)597 557
y Fk(.)36 b(Lisp)19 b(is)h(next)g(and)125 606 y(there)f(is)e(v)o(ery)h
(little)f(exp)q(erience)j(with)e(C++,)h(al-)125 656 y(though)13
b(a)h(lot)f(with)h(C.)166 706 y(Long)h(term,)f(let's)h(assume)g(the)h
(program)e(has)h(a)125 756 y(20\045)e(ann)o(ual)h(turno)o(v)o(er)h(rate)g
(and)g(a)f(\\bad")g(c)o(hoice)125 806 y(of)e(language)g(adds)i(three)g(mon)o
(ths)e(to)h(the)h(training)125 856 y(time.)h(That)10 b(will)e(increase)k(the)
e(main)o(tenance)g(costs)125 906 y(b)o(y)j(5\045.)18 b(This)13
b(do)q(es)i(not)f(app)q(ear)g(signi\014can)o(t.)125 1024 y
Fe(3.2)55 b(T)-5 b(ec)n(hnical)21 b(Issues)125 1101 y Fb(3.2.1)47
b(Supp)q(ort)14 b(P)o(ac)o(k)m(ages)125 1179 y Fk(One)c(of)g(the)h(primary)d
(issues)j(in)f(language)f(selection)125 1228 y(is)h(the)i(supp)q(ort)f(pac)o
(k)n(ages)g(a)o(v)n(ailable)e(for)h(it.)17 b(This)11 b(is)125
1278 y(\\o\013)g(the)i(shelf)s(")g(soft)o(w)o(are)f(that)g(w)o(e)h(will)d
(include)j(as)125 1328 y(part)18 b(of)f(the)i(application)e(p)q(erforming)g
(some)g(ser-)125 1378 y(vice)f(for)g(the)h(application.)24
b(Basically)m(,)15 b(they)i(let)f(a)125 1428 y(programmer)d(fo)q(cus)j(on)g
(the)g(p)q(ositiv)o(e)g(di\013eren)o(tia-)125 1477 y(tors)h(in)g(the)h
(application)e(while)h(letting)g(the)h(sup-)125 1527 y(p)q(ort)i(pac)o(k)n
(ages)g(handle)g(the)g(necessary)m(,)j(but)d(p)q(e-)125 1577
y(ripheral)13 b(issues.)125 1687 y Fb(Databases)40 b Fk(In)52
b(most)f(applications,)60 b(the)125 1737 y(database)18 b(w)o(ould)e(not)i(b)q
(e)g(as)g(closely)g(tied)g(to)f(the)125 1787 y(language)f(as)i(it)f(is)g(for)
g(us.)29 b(Our)19 b(ob)r(ject-orien)o(ted)125 1836 y(approac)o(h)j(means)g
(that)h(w)o(e)g(m)o(ust)f(ha)o(v)o(e)h(a)f(v)o(ery)125 1886
y(close)17 b(tie)h(b)q(et)o(w)o(een)h(the)f(in-memory)c(ob)r(jects)19
b(and)125 1936 y(the)c(underlying)f(data)g(store.)21 b(F)m(or)14
b(example,)f(Zeit-)125 1986 y(geist)k(only)g(w)o(orks)h(with)f(C++)i(and)e
(Lisp.)29 b(Gem-)125 2036 y(stone)13 b(only)f(w)o(orks)h(w)o(ell)f(with)h
(Smalltalk,)c(Itasca)919 2021 y Fj(11)125 2085 y Fk(with)15
b(Lisp.)23 b(F)m(urthermore,)16 b(eac)o(h)g(database)g(has)g(a)125
2135 y(di\013eren)o(t)i(set)g(of)f(features)i(and)e(none)h(has)g(all)e(the)
125 2185 y(features)f(w)o(e)f(require.)166 2235 y(Getting)h(the)g(righ)o(t)g
(database)g(and)g(data)f(mo)q(del)125 2285 y(is)j(crucial)g(to)g(success)j
(of)d(the)h(program.)26 b(W)m(e)17 b(are)125 2335 y(activ)o(ely)e(in)o(v)o
(estigating)g(it)h(and)h(the)g(issues)g(are)g(at)p 125 2371
333 2 v 156 2398 a Fi(10)188 2410 y Fh(This)12 b(is)f(a)g(result)g(of)g(the)g
(protot)o(ypin)o(g)e(e\013ort.)156 2437 y Fi(11)188 2449 y
Fh(The)j(commercia)o(l)d(v)o(ersion)h(of)h(Orion)g(from)f(MCC.)996
307 y Fk(least)17 b(as)g(complex)e(as)h(the)h(language)f(issues.)27
b(But)996 357 y(for)12 b(no)o(w,)f(I)h(b)q(eliev)o(e)g(database)h
(considerations)f(w)o(ell)996 407 y(migh)o(t)e(driv)o(e)i(the)g(language)f
(selection)h(rather)g(than)996 457 y(the)j(other)f(w)o(a)o(y)f(around.)1038
569 y Fb(Ev)o(olution)38 b Fk(The)28 b(ev)o(olution)f(here)h(is)g(fairly)996
618 y(clear.)37 b(The)20 b(relational)f(databases)h(will)f(b)q(ecome)996
668 y(more)d(ob)r(ject)h(orien)o(ted)g(and)f(the)i(ob)r(ject)f(orien)o(ted)
996 718 y(databases)22 b(will)e(mature)h(in)o(to)g(usable)h(pro)q(ducts.)996
768 y(The)d(rate)g(of)f(ev)o(olution)f(is)h(an)g(in)o(teresting)h(issue.)996
818 y(It)d(to)q(ok)g(ten)h(y)o(ears)f(for)g(the)h(relations)f(to)g(mature,)
996 867 y(it)c(will)e(probably)h(tak)o(e)g(the)i(same)d(for)i(the)g(OODBs.)
996 917 y(In)h(the)h(mean)e(time,)f(there)k(will)c(b)q(e)j(a)f(lot)f(of)g
(uncer-)996 967 y(tain)o(t)o(y)17 b(in)g(the)g(mark)o(et)g(as)g(companies)f
(come)h(and)996 1017 y(go.)29 b(If)18 b(w)o(e)g(c)o(ho)q(ose)g(an)g(OODB,)g
(w)o(e)g(will)e(need)j(to)996 1067 y(protect)c(ourselv)o(es)g(against)d
(this.)18 b(Approac)o(hes)d(in-)996 1116 y(clude)k(qualifying)e(m)o(ultiple)f
(v)o(endors)j(and)g(a)o(v)o(oid-)996 1166 y(ance)c(of)e(v)o(endor)h(sp)q
(eci\014c)i(features.)996 1278 y Fb(User)22 b(In)o(terface)f(Builders)38
b Fk(These)22 b(are)e(to)q(ols)996 1328 y(that)c(sp)q(eed)i(the)e(dev)o
(elopmen)o(t)f(of)g(graphical)g(user)996 1378 y(in)o(terfaces.)27
b(This)16 b(will)f(b)q(e)i(v)o(ery)f(imp)q(ortan)o(t)f(to)h(us)996
1428 y(b)q(ecause)j(of)d(the)h(h)o(uge)f(n)o(um)o(b)q(er)g(of)g(in)o
(terfaces)i(the)996 1477 y(CIP)c(will)f(require.)1038 1589
y Fb(Ev)o(olution)38 b Fk(This)15 b(is)g(an)g(area)h(where)g(there)h(is)996
1639 y(a)g(great)g(deal)g(of)f(activit)o(y)h(in)f(b)q(oth)h(industry)h(and)
996 1689 y(univ)o(ersities.)25 b(While)15 b(there)i(are)g(wider)f(v)n(ariet)o
(y)f(of)996 1739 y(to)q(ols)c(for)f(C++,)h(the)h(ones)f(for)g(Lisp)f(and)h
(Smalltalk)996 1789 y(are)k(m)o(uc)o(h)d(more)h(adv)n(anced.)996
1900 y Fb(Class)24 b(Libraries)38 b Fk(Class)21 b(libraries)f(are)h(collec-)
996 1950 y(tions)e(of)f(prede\014ned)j(ob)r(jects)f(that)f(can)g(b)q(e)h
(used)996 2000 y(either)c(to)f(build)f(application)g(ob)r(jects)i(or)f(just)h
(\\as)996 2050 y(is".)39 b(They)21 b(range)g(from)f(simple,)g(lo)o(w)g(lev)o
(el)h(ob-)996 2100 y(jects)d(suc)o(h)f(as)g(hash)g(tables,)g(lists,)g(or)g
(time)e(k)o(eep-)996 2150 y(ing)10 b(services,)i(through)e(graphics)g(pac)o
(k)n(ages)g(lik)o(e)g(In-)996 2199 y(terviews)18 b(or)e(CLX/CLUE/CLIO,)h(to)f
(full)f(blo)o(wn)996 2249 y(spreadsheets,)32 b(h)o(yp)q(ertext,)f(or)26
b(exp)q(ert)i(systems)996 2299 y(shells.)j(The)18 b(ric)o(her)h(class)f
(libraries)g(often)g(repre-)996 2349 y(sen)o(t)d(man)o(y)d(man-y)o(ears)h(of)
g(w)o(ork.)1038 2399 y(This)h(is)h(one)g(area)g(where)h(more)e(is)h(b)q
(etter.)22 b(The)996 2449 y(ric)o(her)11 b(the)h(class)e(library)g(a)o(v)n
(ailable,)e(the)k(less)f(\\scaf-)135 2573 y Fg(c)125 2574 y
Ff(\015)i Fg(Cop)o(yrigh)o(t)h(1990)g(Douglas)h(Johnson)1077
b Fk(6)p eop
%%Page: 7 7
bop 125 307 a Fk(folding")11 b(w)o(e)i(will)f(ha)o(v)o(e)h(to)g(build)f(to)h
(supp)q(ort)h(CIP)m(.)125 357 y(Ma)o(yb)q(e)19 b(a)h(b)q(etter)h(analogy)d
(is)i(hardw)o(are)g(design.)125 407 y(The)12 b(more)e(standard)j(parts)f(a)o
(v)n(ailable)d(in)j(the)g(TTL)125 457 y(datab)q(o)q(ok,)j(the)i(b)q(etter)h
(the)f(c)o(hance)g(the)g(designer)125 506 y(will)9 b(b)q(e)i(able)f(to)g
(\014nd)h(exactly)g(the)g(part)f(to)h(meet)f(his)125 556 y(needs.)29
b(F)m(urthermore,)18 b(a)f(designer)h(with)f(a)g(VLSI)125 606
y(parts)12 b(catalog)g(will)f(b)q(e)i(far)e(more)h(pro)q(ductiv)o(e)h(than)
125 656 y(one)e(with)g(only)f(SSI.)h(I)g(view)g(this)g(as)g(a)g(ma)r(jor)e
(issue.)166 706 y(In)k(this)h(one)g(area,)f(Smalltalk)d(stands)k(head)g(and)
125 756 y(shoulders)i(ab)q(o)o(v)o(e)g(the)h(other)g(t)o(w)o(o)e(candidate)i
(lan-)125 805 y(guages.)29 b(Ov)o(er)18 b(its)g(\014fteen)g(y)o(ear)g
(existance,)h(class)125 855 y(libraries)25 b(ha)o(v)o(e)g(b)q(een)i(written)f
(for)f(almost)e(an)o(y)125 905 y(imaginabl)o(e)17 b(purp)q(ose.)34
b(These)20 b(include)f(ric)o(h)g(sets)125 955 y(of)i(basic)g(data)h(t)o(yp)q
(es)g(and)f(structures,)26 b(extensi-)125 1005 y(ble)c(user)h(in)o(terface)g
(to)q(ols)f(suc)o(h)h(as)f(editors)h(and)125 1054 y(bro)o(wsers,)d(database)f
(in)o(terfaces,)h(and)e(high)g(lev)o(el)125 1104 y(pac)o(k)n(ages)12
b(suc)o(h)i(as)f(h)o(yp)q(ertext,)h(spreadsheets,)h(and)125
1154 y(h)o(yp)q(ertext.)29 b(F)m(urthermore,)17 b(b)q(ecause)i(of)e(the)h
(con-)125 1204 y(sisten)o(t)j(nature)h(of)e(Smalltalk')o(s)f(ob)r(ject)i
(orien)o(ted)125 1254 y(paradigm,)12 b(the)k(pac)o(k)n(ages)f(tend)h(to)g(w)o
(ork)e(w)o(ell)h(to-)125 1303 y(gether.)166 1353 y(Lisp)h(also)g(has)h(a)f
(broad)g(set)h(of)f(libraries)g(a)o(v)n(ail-)125 1403 y(able.)23
b(The)17 b(basic)f(datat)o(yp)q(es)g(and)g(structures)i(are)125
1453 y(somewhat)g(b)q(etter)j(than)f(Smalltalk.)32 b(Commeri-)125
1503 y(cal)15 b(Lisp)h(en)o(vironmen)o(ts)f(include)h(extensible)h(user)125
1553 y(in)o(terface)j(to)q(ols,)g(Harlequin)f(Common)d(Lisp)k(has)125
1602 y(database)i(in)o(terfaces)h(and)g(h)o(yp)q(ertext)g(pac)o(k)n(ages.)125
1652 y(The)18 b(only)f(problem)g(is)g(that)h(the)h(di\013eren)o(t)g(pac)o(k-)
125 1702 y(ages)14 b(don't)g(tend)i(to)e(b)q(e)h(as)g(easy)g(to)f(in)o
(tegrate)h(b)q(e-)125 1752 y(cause)e(of)e(the)i(broader)f(range)g(of)g
(implemen)o(tatio)o(ns)125 1802 y(p)q(ossible.)166 1851 y(Libraries)20
b(for)f(C++)h(are)f(just)h(no)o(w)f(b)q(ecoming)125 1901 y(a)o(v)n(ailable.)
37 b(The)22 b(National)d(Institute)j(of)f(Health)125 1951 y(has)12
b(a)h(pac)o(k)n(age)f(that)h(duplicates)g(m)o(uc)o(h)e(of)h(the)i(lo)o(w)125
2001 y(lev)o(el)c(Smalltalk)d(data)j(structures)j(and)d(t)o(yp)q(es.)18
b(TI's)125 2051 y(COOL)k(library)f(tends)i(to)f(duplicate)g(the)h(Com-)125
2100 y(mon)17 b(Lisp)i(basic)g(t)o(yp)q(es)h(and)f(structures)j(as)d(w)o(ell)
125 2150 y(as)9 b(adding)g(exception)i(handling)d(and)i(macros.)15
b(The)125 2200 y(In)o(terviews)c(library)f(pro)o(vides)h(basic)g(user)h(in)o
(terface)125 2250 y(features,)18 b(but)f(nothing)g(as)g(high)f(lev)o(el)h(as)
g(editors)125 2300 y(and)22 b(bro)o(wsers.)44 b(Most)23 b(of)e(the)i(ob)r
(ject)g(orien)o(ted)125 2350 y(databases)d(ha)o(v)o(e)g(C++)g(in)o(terfaces)h
(and)f(most)e(of)125 2399 y(the)12 b(relational)f(databases)i(ha)o(v)o(e)f(C)
g(or)g(C++)h(in)o(ter-)125 2449 y(faces.)21 b(I)15 b(don't)f(kno)o(w)h(of)f
(an)o(y)g(high)g(lev)o(el)h(libraries)996 307 y(pro)o(viding)e(things)h(lik)o
(e)f(h)o(yp)q(ertext.)1038 358 y(Unfortunately)m(,)d(the)i(C++)g(libraries)f
(tend)h(to)f(b)q(e)996 407 y(incompatible)19 b(and)j(hard)f(to)g(in)o
(tegrate.)41 b(As)22 b(an)996 457 y(example,)14 b(COOL)h(and)g(Zeitgeist)g(w)
o(on't)f(w)o(ork)h(to-)996 507 y(gether)j(and)f(they)h(w)o(ere)f(dev)o(elop)q
(ed)h(b)o(y)f(the)g(same)996 557 y(compan)o(y)m(.)1038 668
y Fb(Ev)o(olution)38 b Fk(This)14 b(is)f(an)g(area)g(where)i(the)f(ev)o(o-)
996 717 y(lution)c(is)g(less)g(clear.)18 b(F)m(or)9 b(all)g(the)i(in)o
(terest)h(in)d(C++,)996 767 y(there)16 b(are)e(surprisingly)g(few)g(class)g
(libraries)g(a)o(v)n(ail-)996 817 y(able)d(for)g(it)g(and)h(those)g(are)f
(still)g(w)o(orking)f(on)h(dupli-)996 867 y(cating)17 b(functionalit)o(y)e
(already)i(in)f(the)i(other)f(lan-)996 917 y(guages,)k(while)d(there)j(are)f
(v)o(ery)f(high)g(lev)o(el)g(class)996 966 y(libraries)k(\(h)o(yp)q(ertext,)k
(inference)d(engines,)i(etc.\))996 1016 y(a)o(v)n(ailable)12
b(for)h(Lisp)h(and)g(Smalltalk)1577 1001 y Fj(1)o(2)1623 1016
y Fk(.)996 1127 y Fb(Distribu)o(ted)44 b(Pro)q(cessing)39 b
Fk(Since)j(w)o(e)f(are)996 1177 y(building)23 b(an)h(application)e(that)i
(runs)h(on)f(a)g(set)996 1227 y(of)17 b(distributed)h(w)o(orkstations,)g(w)o
(e)f(need)i(supp)q(ort)996 1277 y(for)k(building)f(the)h(application)f(and)h
(con)o(trolling)996 1326 y(its)i(execution)g(on)f(those)i(distributed)f(w)o
(orksta-)996 1376 y(tions.)30 b(There)19 b(seems)f(to)g(b)q(e)g(v)o(ery)g
(little)f(\\o\013)h(the)996 1426 y(shelf)s(")11 b(supp)q(ort)g(a)o(v)n
(ailable)d(to)j(date.)17 b(Most)11 b(existing)996 1476 y(commercial)18
b(soft)o(w)o(are)i(\(e.g.)g(Sun's)h(remote)f(pro-)996 1526
y(cedure)h(call)e(and)g(y)o(ello)o(w)f(pages)i(naming\))d(is)j(to)q(o)996
1575 y(lo)o(w)13 b(lev)o(el)g(for)h(our)f(problem.)k(While)c(it)g(pro)o
(vides)h(a)996 1625 y(base)i(to)f(build)g(on,)g(it)g(lea)o(v)o(es)g(t)o(w)o
(o)g(hard)g(problems)996 1675 y(unsolv)o(ed|replication)d(for)g(reliablit)o
(y)f(and)i(ob)r(ject)996 1725 y(orien)o(ted)i(in)o(terfaces)f(to)g(remote)g
(services.)1038 1775 y(W)m(e)j(ha)o(v)o(e)h(iden)o(ti\014ed)g(only)f(t)o(w)o
(o)g(pac)o(k)n(ages)h(that)996 1825 y(address)29 b(these)g(issues:)46
b(MetaCourier)28 b(from)e(a)996 1875 y(small)16 b(Cam)o(bridge)g(startup,)j
(and)f(ISIS,)f(whic)o(h)h(is)996 1925 y(a)f(surprisingly)g(stable)h(and)f
(mature)f(researc)o(h)k(ef-)996 1974 y(fort)14 b(from)e(Cornell.)18
b(ISIS)c(supp)q(orts)h(C++,)f(C)g(and)996 2024 y(Lisp.)j(MetaCourier)11
b(supp)q(orts)h(C)f(and)f(Lisp.)17 b(They)996 2074 y(can)f(b)q(e)h(adapted)f
(to)f(supp)q(ort)i(Smalltalk,)12 b(but)k(w)o(e)996 2124 y(w)o(ould)d(need)i
(to)f(do)g(it.)1038 2235 y Fb(Ev)o(olution)38 b Fk(Ov)o(er)21
b(the)f(next)f(few)h(y)o(ears,)h(the)996 2285 y(kind)d(of)g(distributed)g
(application)f(w)o(e)i(are)f(build-)996 2334 y(ing)10 b(will)e(b)q(ecome)i
(routine)h(and)f(broadly)f(supp)q(orted)p 996 2371 333 2 v
1027 2398 a Fi(12)1060 2410 y Fh(Bjarne)f(Stroustrup)e(claims)i(it)g(is)i
(harder)d(to)i(write)g(class)996 2449 y(libraries)e(for)i(static)f(languages)
f(lik)o(e)h(C++,)j(see)e(app)q(endix)e(B)135 2573 y Fg(c)125
2574 y Ff(\015)13 b Fg(Cop)o(yrigh)o(t)h(1990)g(Douglas)h(Johnson)1077
b Fk(7)p eop
%%Page: 8 8
bop 125 307 a Fk(with)17 b(standard)h(soft)o(w)o(are.)29 b(The)18
b(recen)o(t)h(OSF)f(se-)125 357 y(lection)c(of)f(DEcorum)h(pro)o(vides)g(a)g
(solid)g(core)h(that)125 407 y(will)e(allo)o(w)h(construction)i(of)e(the)i
(higher)f(lev)o(el)g(ab-)125 457 y(stractions)20 b(w)o(e)g(require.)36
b(OSF)20 b(in)o(tends)g(to)g(issue)125 506 y(a)14 b(Request)h(F)m(or)g(T)m
(ec)o(hnology)e(\(RFT\))i(in)f(this)h(area)125 556 y(so)q(on.)24
b(If)15 b(previous)h(OSF)h(selections)f(are)h(a)e(guide,)125
606 y(it)i(should)h(b)q(e)g(commercially)d(a)o(v)n(ailable)g(in)j(ab)q(out)
125 656 y(t)o(w)o(o)13 b(y)o(ears.)125 763 y Fb(3.2.2)47 b(Dev)o(elopmen)o(t)
13 b(En)o(vironmen)o(t)o(s)125 840 y Fk(I'm)25 b(using)i(the)g(term)g(\\dev)o
(elopmen)o(t)f(en)o(viron-)125 890 y(men)o(ts")14 b(to)i(mean)e(all)g(the)i
(to)q(ols)g(that)f(are)h(needed)125 939 y(for)9 b(actual)g(dev)o(elopmen)o(t)
g(and)g(main)o(tenance)g(of)g(the)125 989 y(system.)43 b(Unlik)o(e)22
b(the)h(supp)q(ort)g(pac)o(k)n(ages)g(men-)125 1039 y(tioned)13
b(ab)q(o)o(v)o(e,)g(these)i(are)f(not)g(normally)d(included)125
1089 y(as)i(part)i(of)e(the)h(deliv)o(ered)h(soft)o(w)o(are.)125
1196 y Fb(Dev)o(elopmen)n(t)26 b(T)l(o)q(ols)41 b Fk(These)26
b(are)g(the)g(clas-)125 1246 y(sic)13 b(editors,)g(compilers,)f(debuggers,)i
(bro)o(wsers)p Fd(:)7 b(:)g(:)f Fk(.)125 1296 y(The)k(k)o(ey)h(issues)g(here)
g(are)g(that)f(to)q(ols)g(should)g(b)q(e)h(in-)125 1346 y(tegrated,)16
b(in)o(teractiv)o(e,)g(and)f(incremen)o(tal.)22 b(When)125
1395 y(programmers)j(are)i(actually)f(dev)o(eloping)g(co)q(de,)125
1445 y(their)11 b(pro)q(ductivit)o(y)g(is)g(largely)g(determined)g(b)o(y)g
(the)125 1495 y(\\inner)i(lo)q(op")g(of)h(edit-compile-test.)166
1545 y(The)21 b(to)q(ols)f(should)g(b)q(e)h(in)o(tegrated)g(with)f(b)q(oth)
125 1595 y(the)c(application)f(b)q(eing)i(dev)o(elop)q(ed)g(\(so)f(the)h(to)q
(ols)125 1644 y(ha)o(v)o(e)j(go)q(o)q(d)h(visibilit)o(y)e(and)i(con)o(trol)g
(of)f(the)i(pro-)125 1694 y(gram)c(b)q(eing)i(tested\))i(and)e(with)f(eac)o
(h)i(other)f(\(so)125 1744 y(a)f(programmer)f(do)q(es)i(not)g(ha)o(v)o(e)g
(to)f(switc)o(h)i(con-)125 1794 y(texts)e(among)e(the)j(to)q(ols)e(and)h(the)
g(to)q(ols)g(pro)o(vide)125 1844 y(a)e(uniform)e(in)o(terface\).)30
b(Incremen)o(tal)17 b(to)q(ols)g(let)h(a)125 1894 y(programmer)7
b(mak)o(e)i(small)f(c)o(hanges)j(without)f(large)125 1943 y(time)g(costs)j
(\(e.g.)f(without)f(recompiling)f(the)j(en)o(tire)125 1993
y(application\).)i(They)c(m)o(ust)e(b)q(e)i(in)o(teractiv)o(e)g(to)f(k)o(eep)
125 2043 y(the)k(inner)g(lo)q(op)f(as)h(short)h(a)e(p)q(ossible.)166
2093 y(Curren)o(tly)m(,)27 b(Lisp)e(and)g(Smalltalk)d(ha)o(v)o(e)j(suc)o(h)
125 2143 y(to)q(ols)c(as)g(a)h(natural)f(part)g(of)g(the)h(en)o(vironmen)o
(t.)125 2192 y(The)c(C++)g(equiv)n(alen)o(ts)g(are)g(still)f(in)h(the)g(exp)q
(eri-)125 2242 y(men)o(tal)f(stage.)35 b(None)20 b(that)f(w)o(e)h(ha)o(v)o(e)
f(lo)q(ok)o(ed)g(at)125 2292 y(are)14 b(mature)f(enough)h(for)f(daily)g(use.)
166 2399 y Fb(Ev)o(olution)39 b Fk(There)23 b(is)f(no)g(doubt)g(that)g(ade-)
125 2449 y(quate)9 b(C++)i(dev)o(elopmen)o(t)d(to)q(ols)i(will)e(b)q(e)i(a)o
(v)n(ailable)996 307 y(within)18 b(the)i(next)f(y)o(ear)g(to)g(18)f(mon)o
(ths,)h(p)q(ossibly)996 357 y(so)q(oner.)996 472 y Fb(T)l(o)q(ols)30
b(for)f(Programming)f(in)h(the)g(Large)996 522 y Fk(Once)11
b(a)e(pro)r(ject)h(gro)o(ws)f(past)h(a)f(couple)h(of)e(program-)996
572 y(mers,)13 b(to)q(ols)g(for)g(managing)d(and)k(con)o(trolling)e(m)o(ul-)
996 622 y(tiple)18 b(dev)o(elopmen)o(t)f(start)h(b)q(ecoming)f(imp)q(ortan)o
(t.)996 672 y(The)f(curren)o(t)h(state-of-the-art)f(in)f(these)i(to)q(ols)e
(in-)996 721 y(clude)h(con\014guration)f(managemen)o(t,)e(source)k(co)q(de)
996 771 y(con)o(trol,)k(c)o(hange)e(histories,)i(problem)e(rep)q(orting,)996
821 y(etc.)57 b(T)m(raditionally)m(,)26 b(this)g(has)h(b)q(een)g(an)f(area)
996 871 y(that)11 b(has)g(lagged)f(b)q(ehind)h(programming)c(language)996
921 y(tec)o(hnology)m(.)22 b(Ob)r(ject)16 b(orien)o(ted)g(languages)f(are)h
(no)996 970 y(exception.)1038 1022 y(The)11 b(existing)f(to)q(ols)g(are)h
(largely)e(text)i(based)h(and)996 1071 y(language)23 b(indep)q(enden)o(t.)49
b(F)m(or)23 b(ob)r(ject)i(orien)o(ted)996 1121 y(programming,)8
b(y)o(ou'd)i(lik)o(e)h(the)h(to)q(ols)f(to)g(b)q(e)h(ob)r(ject)996
1171 y(based)h(and)e(tigh)o(tly)g(coupled)h(to)g(the)h(language)e(and)996
1221 y(en)o(vironmen)o(t.)37 b(A)20 b(particularly)g(imp)q(ortan)o(t)e(to)q
(ol)996 1271 y(w)o(ould)13 b(b)q(e)i(an)f(ob)r(ject)g(library)m(.)j(Since)e
(a)f(large)f(part)996 1321 y(of)18 b(ob)r(ject)h(orien)o(ted)g(programming)c
(is)j(sp)q(ecialliz-)996 1370 y(ing)d(existing)h(ob)r(jects,)h(the)f(dev)o
(elop)q(er)h(m)o(ust)e(ha)o(v)o(e)996 1420 y(an)c(easy)g(w)o(a)o(y)f(of)g
(\014nding)h(suitable)f(ob)r(jects.)19 b(That's)996 1470 y(the)c(purp)q(ose)g
(of)e(the)i(ob)r(ject)f(library)m(.)1038 1585 y Fb(Ev)o(olution)38
b Fk(I)19 b(presume)g(suc)o(h)g(to)q(ols)g(will)e(b)q(e-)996
1635 y(come)e(a)o(v)n(ailable)f(ev)o(en)o(tually)m(.)23 b(In)16
b(the)h(mean)d(time,)996 1685 y(w)o(e)20 b(can)h(use)f(the)h(existing)f(to)q
(ols)f(on)h(an)o(y)f(of)h(the)996 1735 y(candidate)14 b(languages.)996
1850 y Fb(T)l(esting)j(and)g(SQA)41 b Fk(SQA)17 b(and)f(testing)g(is)g(an-)
996 1900 y(other)k(area)g(that)f(lags)g(the)g(rest)i(of)d(the)i(tec)o(hnol-)
996 1950 y(ogy)m(.)d(There)c(is)f(a)g(debate)h(raging)f(on)g(the)h(to)q(ols)f
(and)996 1999 y(tec)o(hniques)j(needed)g(to)e(test)h(ob)r(ject)h(orien)o(ted)
f(pro-)996 2049 y(grams.)19 b(Man)o(y)c(of)f(the)h(existing)f(metho)q(ds)g
(of)h(test-)996 2099 y(ing)f(functional)g(programs)f(do)i(not)f(seem)g(to)h
(mak)o(e)996 2149 y(m)o(uc)o(h)e(sense)j(in)d(an)h(ob)r(ject)g(orien)o(ted)h
(w)o(orld.)1038 2200 y(F)m(or)i(example,)h(to)q(ols)g(for)f(functional)h
(test)h(co)o(v-)996 2250 y(erage)c(mak)o(e)e(sure)i(that)f(the)h(test)g(co)o
(v)o(ers)g(all)e(paths)996 2300 y(through)k(a)f(function.)26
b(P)o(erhaps)18 b(the)f(OO)g(equiv)n(a-)996 2350 y(len)o(t)c(migh)o(t)f(b)q
(e)h(to)q(ols)g(that)h(ensure)g(co)o(v)o(erage)g(of)f(all)996
2399 y(metho)q(ds.)k(But)12 b(do)q(es)g(that)f(include)g(metho)q(ds)g(from)
996 2449 y(sup)q(erclasses?)20 b(If)12 b(this)g(class)h(is)f(a)f(sp)q
(ecialization)h(of)135 2573 y Fg(c)125 2574 y Ff(\015)h Fg(Cop)o(yrigh)o(t)h
(1990)g(Douglas)h(Johnson)1077 b Fk(8)p eop
%%Page: 9 9
bop 125 307 a Fk(a)17 b(w)o(ell)g(tested)i(class,)f(do)f(just)h(the)g(new)g
(metho)q(ds)125 357 y(need)c(testing?)166 524 y Fb(Ev)o(olution)39
b Fk(Ob)r(ject)18 b(orien)o(ted)f(programming)125 574 y(is)9
b(just)g(no)o(w)g(mo)o(ving)e(in)o(to)i(mainstream)d(computing)125
624 y(where)11 b(issues)g(suc)o(h)h(as)e(formal)e(testing)j(metho)q(dolo-)125
674 y(gies)16 b(are)g(a)g(concern)453 659 y Fj(13)490 674 y
Fk(.)25 b(I)16 b(susp)q(ect)i(it)e(will)e(b)q(e)j(t)o(w)o(o)125
724 y(or)d(three)i(y)o(ears)f(b)q(efore)g(to)q(ols)f(and)g(metho)q(dologies)
125 774 y(are)20 b(a)o(v)n(ailable)e(for)i(an)o(y)g(language.)36
b(F)m(or)20 b(no)o(w,)h(it)125 823 y(do)q(es)14 b(not)f(app)q(ear)h(that)g
(one)g(language)e(has)i(an)f(ad-)125 873 y(v)n(an)o(tage)g(o)o(v)o(er)h(an)o
(y)f(other.)125 1041 y Fb(3.2.3)47 b(P)o(erformance)125 1138
y Fk(P)o(erformance)13 b(is)g(often)h(discussed)h(as)f(a)f(reason)h(for)125
1188 y(c)o(ho)q(osing)g(a)g(language,)g(partly)g(b)q(ecause)i(it)e(can)h(b)q
(e)125 1238 y(easy)k(to)g(measure)g(and)g(partly)f(b)q(ecause)j(it)e(often)
125 1288 y(is)j(crucial.)45 b(Ho)o(w)o(ev)o(er,)25 b(in)e(the)g(particular)g
(case)125 1337 y(of)16 b(CIP)m(,)h(I)g(b)q(eliev)o(e)h(that)g(ra)o(w)f(CPU)h
(p)q(erformance)125 1387 y(\(the)f(primary)e(p)q(erformance)i(e\013ect)h(of)e
(language\))125 1437 y(is)k(the)g(least)h(of)e(our)h(w)o(orries.)37
b(The)21 b(distributed)125 1487 y(nature)f(of)f(CIP)h(and)f(rapid)h(decline)g
(of)f(the)h(cost)125 1537 y(of)d(MIPS)g(tend)i(to)e(con\014rm)g(this.)29
b(I'm)16 b(curren)o(tly)125 1587 y(assuming)g(\(this)i(will)f(b)q(e)h(v)o
(eri\014ed)h(as)f(system)f(de-)125 1636 y(sign)h(progresses\))i(that)f(our)f
(ma)r(jor)f(p)q(erformance)125 1686 y(limitati)o(on)10 b(will)h(b)q(e)i
(database)g(access,)h(follo)o(w)o(ed)d(b)o(y)125 1736 y(net)o(w)o(ork)k
(latency)m(,)f(memory)e(use,)j(then)h(CPU)f(p)q(er-)125 1786
y(formance.)h(One)e(area)e(where)i(this)f(ma)o(y)e(not)h(apply)125
1836 y(is)18 b(an)o(y)g(soft)o(w)o(are)g(w)o(e)h(write)g(for)f(the)h(MPS)g
(whic)o(h)125 1885 y(ma)o(y)11 b(b)q(e)k(more)e(memory)e(and)j(CPU)g
(limited.)166 2053 y Fb(Ev)o(olution)39 b Fk(Ab)q(out)17 b(the)h(only)f(area)
h(I)f(exp)q(ect)125 2103 y(m)o(uc)o(h)12 b(p)q(erformance)h(ev)o(olution)g
(is)h(in)f(Lisp.)18 b(There)125 2153 y(will)d(incremen)o(tal)h(impro)o(v)o
(emen)o(ts)e(in)j(CLOS)g(p)q(er-)125 2202 y(formance)c(as)i(the)g(required)h
(compiler)d(tec)o(hnology)125 2252 y(matures.)k(I)d(don't)f(think)h(it)f
(will)g(b)q(e)h(signi\014can)o(t.)p 125 2332 333 2 v 156 2359
a Fi(13)188 2370 y Fh(A)h(session)e(on)g(OO)i(testing)e(at)g(a)h(recen)o(t)f
(testing)f(con-)125 2410 y(ference)f(had)i(8)h(p)q(eople)e(attending)f
(\(including)g(t)o(w)o(o)i(TIers\))125 2449 y(out)d(of)h(450)g(at)g(the)g
(conference.)996 307 y Fl(4)69 b(Summary)996 398 y Fk(It)12
b(is)g(m)o(y)e(hop)q(e)i(this)f(will)g(form)f(the)i(basis)g(for)f(a)g(lan-)
996 448 y(guage)j(selection)g(that)g(is)g(righ)o(t)f(for)g(all)g(concerned.)
996 498 y(As)j(de\014ned,)g(the)f(absolute)g(requiremen)o(ts)h(narro)o(w)996
548 y(the)g(selection)h(do)o(wn)e(to)h(three)g(languages:)21
b(C++,)996 597 y(Lisp,)14 b(and)f(Smalltalk.)1038 647 y(No)o(w)g(w)o(e)h
(need)g(to)f(apply)g(the)h(desirable)g(criteria)996 697 y(to)j(narro)o(w)g
(the)g(selection)h(to)f(the)g(\014nal)g(c)o(hoice.)27 b(I)996
747 y(curren)o(tly)12 b(b)q(eliev)o(e)f(that)f(the)h(\014rst)h(order)f(terms)
f(are:)1038 823 y Fc(\017)20 b Fk(The)15 b(data)e(mo)q(del)g(and)g(database)h
(in)o(terfaces.)1038 901 y Fc(\017)20 b Fk(The)15 b(a)o(v)n(ailabili)o(t)o(y)
c(and)j(useabilit)o(y)f(of)g(class)i(li-)1079 950 y(braries.)1038
1028 y Fc(\017)20 b Fk(Customer)26 b(requiremen)o(ts)h(\(as)g(I)g(curren)o
(tly)1079 1077 y(understand)12 b(them,)e(they)h(pro)o(vide)g(little)e(basis)
1079 1127 y(to)14 b(select)h(one)f(candidate)g(o)o(v)o(er)g(another\).)1038
1204 y(While)f(still)h(imp)q(ortan)o(t,)e(the)j(follo)o(wing)d(criteria)996
1254 y(seem)e(to)g(b)q(e)h(less)g(signi\014can)o(t)f(than)g(the)h(ones)g(ab)q
(o)o(v)o(e:)1038 1330 y Fc(\017)20 b Fk(Standards.)1038 1408
y Fc(\017)g Fk(Dev)o(elopmen)o(t)13 b(to)q(ols.)1038 1485 y
Fc(\017)20 b Fk(Distributed)14 b(Pro)q(cessing.)1038 1562 y
Fc(\017)20 b Fk(Programmer)h(pro)q(ductivit)o(y)h(\(P)o(erhaps)i(this)1079
1612 y(should)16 b(b)q(e)h(a)f(\014rst)i(order)f(term,)f(but)g(it)g(is)g(so)
1079 1661 y(hard)e(to)g(quan)o(tify\).)1038 1738 y(Finally)m(,)e(these)k
(criteria)f(seem)f(to)h(pro)o(vide)f(little)996 1788 y(basis)g(for)g
(selecting)g(one)g(language)f(o)o(v)o(er)h(another:)1038 1865
y Fc(\017)20 b Fk(User)15 b(In)o(terface)g(Builders)1038 1942
y Fc(\017)20 b Fk(T)m(raining)1038 2019 y Fc(\017)g Fk(SQA)15
b(and)e(testing)i(to)q(ols)1038 2096 y Fc(\017)20 b Fk(T)m(o)q(ols)13
b(for)h(programmi)o(ng)d(in)i(the)i(large.)1038 2173 y Fc(\017)20
b Fk(P)o(erformance)1038 2250 y(There)11 b(is)f(a)f(broad)h(sp)q(ectrum)g(of)
g(issues)h(in)e(select-)996 2300 y(ing)i(a)g(language)g(for)g(MMST.)g(I'v)o
(e)h(tried)g(to)f(outline)996 2350 y(them)j(here.)20 b(If)14
b(there)i(is)e(something)f(y)o(ou'd)g(lik)o(e)h(to)996 2399
y(add)i(or)g(y)o(ou)g(ha)o(v)o(e)f(an)o(y)h(questions,)h(please)f(let)g(me)
996 2449 y(kno)o(w.)135 2573 y Fg(c)125 2574 y Ff(\015)d Fg(Cop)o(yrigh)o(t)h
(1990)g(Douglas)h(Johnson)1077 b Fk(9)p eop
%%Page: 10 10
bop 125 307 a Fl(A)68 b(Language)25 b(Discussion)125 398 y
Fk(In)18 b(this)h(section,)h(I'm)d(going)g(to)i(do)f(something)g(I)125
448 y(said)12 b(w)o(e)h(shouldn't:)k(discuss)c(the)h(three)f(candidate)125
498 y(languages)19 b(in)g(abstract.)36 b(F)m(or)19 b(eac)o(h)h(language,)g(I)
125 548 y(w)o(ould)12 b(lik)o(e)g(to)h(presen)o(t)i(something)d(of)g(the)i
(history)125 598 y(and)e(philosophies)g(b)q(ehind)h(them.)k(Eac)o(h)c
(language)125 647 y(is)i(unique)h(and)g(is)f(what)h(it)f(is)h(for)f(sound)h
(reasons.)125 697 y(P)o(erhaps)g(this)f(will)e(giv)o(e)i(some)f(insigh)o(t)h
(in)o(to)f(those)125 747 y(reasons.)125 864 y Fe(A.1)55 b(C++)125
941 y Fk(C++)17 b(is)h(a)f(reasonable)h(and)f(recen)o(t)i(ev)o(olution)d(of)
125 991 y(C.)11 b(F)m(or)h(that)h(reason,)f(it's)g(probably)g(b)q(est)i(to)e
(b)q(egin)125 1041 y(with)f(a)h(discussion)g(of)f(C.)h(C)f(w)o(as)h(dev)o
(elop)q(ed)h(in)e(the)125 1090 y(early)e('70's)f(at)i(Bell)f(Lab)q
(oratories.)17 b(It's)9 b(prime)g(pur-)125 1140 y(p)q(ose)16
b(w)o(as)g(to)f(replace)i(assem)o(bly)d(language)h(in)g(de-)125
1190 y(v)o(eloping)10 b(op)q(erating)h(systems,)h(particularly)f(Unix.)125
1240 y(Because)k(of)f(this,)f(p)q(erformance)h(w)o(as)g(paramoun)o(t.)166
1290 y(Unix)k(itself)g(w)o(as)h(dev)o(elop)q(ed)g(as)g(a)f(reaction)h(to)125
1340 y(Dennis)g(Ric)o(hie's)g(p)q(erception)i(that)f(Multics)g(suf-)125
1389 y(fered)j(from)f(\\soft)o(w)o(are)g(bloat".)45 b(Unix)22
b(w)o(as)h(in-)125 1439 y(tended)13 b(to)e(b)q(e)i(a)e(lean)h(and)g(mean)657
1424 y Fj(14)703 1439 y Fk(op)q(erating)f(sys-)125 1489 y(tem.)25
b(Key)18 b(researc)o(h)g(concepts)h(included)d(writing)125
1539 y(the)f(OS)g(in)g(a)f(high)g(lev)o(el)h(language)f(and)h(p)q(ortabil-)
125 1589 y(it)o(y)m(.)32 b(Up)20 b(to)f(then,)h(op)q(erating)f(systems)h(w)o
(ere)g(al-)125 1638 y(w)o(a)o(ys)c(proprietary)h(and)f(v)o(ery)h(tigh)o(tly)f
(coupled)h(to)125 1688 y(the)d(hardw)o(are.)166 1738 y(C)i(re\015ects)i
(those)f(goals.)24 b(C)17 b(features)g(are)f(ideal)125 1788
y(for)21 b(op)q(erating)h(system)g(dev)o(elopmen)o(t,)h(There)g(is)125
1838 y(outstanding)11 b(supp)q(ort)h(for)f(p)q(oin)o(ter)g(manipulation.)125
1888 y(The)21 b(data)f(t)o(yp)q(es)h(and)g(structures)i(are)e(similarly)125
1937 y(w)o(ell)10 b(suited.)17 b(The)12 b(syn)o(tax)f(of)f(the)i(language)e
(is)g(v)o(ery)125 1987 y(terse,)k(using)e(one)h(or)g(t)o(w)o(o)g(c)o
(haracters)h(where)g(other)125 2037 y(languages)h(used)h(w)o(ords)g(or)f
(phrases.)25 b(Ev)o(erything)125 2087 y(that)14 b(can)g(done)h(at)f(compile)f
(time)f(is.)19 b(There)d(is)e(no)125 2137 y(run)9 b(time)f(t)o(yp)q(e)i(or)f
(error)i(c)o(hec)o(king.)16 b(Ev)o(en)10 b(the)g(com-)125 2187
y(piler)16 b(do)q(es)i(little)f(error)h(c)o(hec)o(king,)f(relying)g(on)g(an)
125 2236 y(auxiliary)11 b(program)g(called)i(LINT)g(to)g(c)o(hec)o(k)i(man)o
(y)125 2286 y(classes)k(of)f(errors.)33 b(The)19 b(dev)o(elop)q(ers)h(of)e
(the)h(lan-)125 2336 y(guage)13 b(to)q(ok)h(justi\014able)f(pride)h(in)g(the)
g(fact)g(that)g(C)p 125 2371 333 2 v 156 2398 a Fi(14)188 2410
y Fh(Ov)o(er)c(the)g(y)o(ears,)f(Unix)i(has)e(bloated)g(far)h(b)q(ey)o(ond)e
(what)125 2449 y(Multics)i(ev)o(er)h(managed.)996 307 y Fk(co)q(de)21
b(w)o(as)f(only)f(20\045)h(slo)o(w)o(er)g(than)g(hand)g(co)q(ded)996
357 y(assem)o(bly)13 b(language.)1038 411 y(The)g(p)q(opularit)o(y)f(of)h(C)g
(spread)h(with)f(Unix.)k(The)996 461 y(language)g(has)h(c)o(hanged)g(remark)n
(ably)e(little)h(since)996 511 y(the)22 b(original)c(b)q(o)q(ok)j(b)o(y)f
(Kernighan)h(and)g(Ric)o(hie.)996 560 y(The)12 b(ANSI)f(C)h(commi)o(ttee)e
(dev)o(elop)q(ed)i(a)f(more)f(pre-)996 610 y(cise)16 b(sp)q(eci\014cation,)g
(cleaned)g(up)f(some)f(lo)q(ose)i(ends)996 660 y(and)e(revised)h(argumen)o(t)
e(passing.)1038 714 y(C++)d(can)g(b)q(e)h(view)o(ed)f(as)g(the)g(second)h
(signi\014can)o(t)996 764 y(revison.)17 b(It)11 b(remains)e(v)o(ery)i
(faithful)d(to)i(the)h(original)996 814 y(goals.)22 b(P)o(erformance)15
b(is)g(still)g(paramoun)o(t.)20 b(There)996 864 y(is)14 b(no)f(run)o(time)f
(t)o(yp)q(e)i(or)g(error)g(c)o(hec)o(king,)f(all)g(t)o(yp)q(es)996
913 y(are)k(declared)g(b)o(y)f(the)g(programmer)e(and)i(c)o(hec)o(k)o(ed)996
963 y(b)o(y)c(the)g(compiler)1277 948 y Fj(15)1310 963 y Fk(.)18
b(C++)12 b(\(or)f(C\))h(are)g(an)f(ob)o(vious)996 1013 y(c)o(hoice)17
b(for)e(an)h(application)f(with)g(tigh)o(t)h(time)f(and)996
1063 y(space)g(constrain)o(ts.)996 1201 y Fe(A.2)56 b(Smalltalk)996
1286 y Fk(While)25 b(C)g(w)o(as)g(b)q(eing)h(dev)o(elop)q(ed)g(on)f(the)h
(east)996 1336 y(coast,)11 b(a)f(group)g(of)f(researc)o(hers)14
b(on)9 b(the)i(other)g(coast)996 1385 y(at)23 b(Xero)o(x)g(P)m(AR)o(C)f(w)o
(ere)i(dev)o(eloping)e(Smalltalk.)996 1435 y(It)32 b(w)o(as)g(b)q(eing)g(dev)
o(elop)q(ed)h(as)f(part)h(of)e(their)996 1485 y(wide-ranging)19
b(researc)o(h)j(in)o(to)d(p)q(ersonal)h(comput-)996 1535 y(ers.)47
b(Nearly)22 b(ev)o(erything)i(in)e(to)q(da)o(y's)h(w)o(orksta-)996
1585 y(tions)11 b(had)g(it's)f(origins)g(in)h(that)g(researc)o(h)h(including)
996 1634 y(bit)i(mapp)q(ed)f(graphics,)h(lo)q(cal)f(area)h(net)o(w)o(orks,)g
(the)996 1684 y(mouse,)d(and)f(the)i(\(then)g(radical\))e(idea)h(of)g(one)g
(com-)996 1734 y(puter)k(p)q(er)g(p)q(erson.)1038 1788 y(The)d(researc)o(h)h
(goals)e(of)f(Smalltalk)f(included)i(ex-)996 1838 y(ploration)k(of)h(ob)r
(ject)h(orien)o(ted)g(concepts)h(and)e(de-)996 1888 y(v)o(elopmen)o(t)e(of)h
(a)g(fully)f(in)o(tegrated,)i(highly)e(coher-)996 1938 y(en)o(t,)g(en)o
(vironmen)o(t)f(for)g(soft)o(w)o(are)h(dev)o(elopmen)o(t.)1038
1992 y(Again,)h(the)h(language)f(is)g(a)h(re\015ection)h(of)e(those)996
2041 y(goals.)j(Smalltal)o(k)11 b(is)j(a)g(deligh)o(t)f(to)h(the)g(ob)r(ject)
h(ori-)996 2091 y(en)o(ted)21 b(purist.)37 b Fa(Everything)24
b Fk(in)c(the)g(language)g(is)996 2141 y(an)15 b(ob)r(ject.)21
b Fa(Every)d Fk(op)q(eration)c(is)h(a)f(message)h(send)996
2191 y(to)g(an)f(ob)r(ject)1217 2176 y Fj(16)1253 2191 y Fk(.)20
b(Because)c(the)f(language)f(has)g(one)996 2241 y(and)h(only)f(one)h(w)o(a)o
(y)g(to)f(do)h(something,)f(Smalltalk)p 996 2292 V 1027 2319
a Fi(15)1060 2331 y Fh(This)d(is)h(what)f(they)f(mean)h(b)o(y)g(static)f(t)o
(yping.)1027 2359 y Fi(16)1060 2370 y Fh(In)o(ternal)k(implemen)o(ta)o(tio)o
(ns)g(\\c)o(heat")g(on)i(this)f(for)h(ef-)996 2410 y(\014ciency's)f(sak)o(e,)
i(but)f(it's)h(true)f(from)f(the)h(programmer's)996 2449 y(p)q(oin)o(t)10
b(of)i(view.)135 2573 y Fg(c)125 2574 y Ff(\015)h Fg(Cop)o(yrigh)o(t)h(1990)g
(Douglas)h(Johnson)1056 b Fk(10)p eop
%%Page: 11 11
bop 125 307 a Fk(soft)o(w)o(are)16 b(tends)i(to)e(b)q(e)h(easy)g(to)f(in)o
(tegrate.)26 b(Inde-)125 357 y(p)q(enden)o(tly)12 b(written)g(pac)o(k)n(ages)
g(can)g(come)f(together)125 407 y(with)i(minim)o(al)e(problems.)166
459 y(This)34 b(same)g(conceptual)h(simplicit)o(y)d(mak)o(es)125
509 y(learning)22 b(the)h(basic)h(language)e(trivial,)h(b)q(ecause)125
559 y(there)18 b(is)g(only)e(one)i(op)q(eration|the)f(ob)r(ject)i(mes-)125
608 y(sage)g(send.)33 b(The)19 b(learning)g(e\013ort)g(comes)f(in)h(un-)125
658 y(derstanding)d(general)g(ob)r(ject)h(orien)o(ted)f(program-)125
708 y(ming)h(and)i(learning)g(to)g(use)h(the)h(ob)r(jects)f(in)f(the)125
758 y(Smalltal)o(k)11 b(en)o(vironmen)o(t.)166 810 y(Graphical)e(user)i(in)o
(terfaces)g(ha)o(v)o(e)f(b)q(een)h(a)e(part)h(of)125 860 y(Smalltal)o(k)h
(righ)o(t)i(from)f(the)i(start.)19 b(In)13 b(fact,)h(all)e(the)125
910 y(windo)o(wing)18 b(en)o(vironmen)o(ts)g(in)h(broad)h(use)g(to)q(da)o(y)
125 959 y(ha)o(v)o(e)9 b(at)h(least)g(philosophic)f(ro)q(ots)i(in)e(the)i
(Smalltalk)125 1009 y(researc)o(h)270 994 y Fj(17)307 1009
y Fk(.)125 1138 y Fe(A.3)55 b(Lisp)125 1218 y Fk(Lisp)16 b(is)h(the)g(second)
h(oldest)f(computer)f(language,)125 1268 y(only)f(F)m(ortran)h(is)g(older.)24
b(Lisp)16 b(w)o(as)g(dev)o(elop)q(ed)h(b)o(y)125 1318 y(John)12
b(McCarth)o(y)g(at)g(MIT)f(in)h(1959.)k(The)d(k)o(ey)f(pur-)125
1368 y(p)q(ose)22 b(w)o(as)g(to)g(dev)o(elop)f(a)h(language)f(for)g(writing)
125 1418 y(non-mathm)o(atical)9 b(programs)j(\(i.e.)g(sym)o(b)q(olic)f(pro-)
125 1467 y(cessing\).)20 b(As)15 b(suc)o(h,)g(the)g(primary)d(data)j
(structure)125 1517 y(w)o(as)e(a)h(list,)f(hence)i(the)g(name)d
Fb(LIS)p Fk(t)i Fb(P)p Fk(ro)q(cessing.)166 1569 y(There)24
b(has)f(b)q(een)h(a)e(tremendous)h(amoun)o(t)e(of)125 1619
y(ev)o(olution)g(o)o(v)o(er)i(the)h(y)o(ears.)46 b(An)23 b(original)e(Lisp)
125 1669 y(programmer)d(w)o(ould)h(hardly)h(recognize)h(mo)q(dern)125
1719 y(Comm)o(on)13 b(Lisp.)23 b(The)16 b(list)g(is)f(no)h(longer)f(the)h
(only)125 1769 y(data)10 b(structure,)j(it)e(is)f(just)h(one)g(of)f(man)o(y)f
(a)o(v)n(ailable.)125 1818 y(One)14 b(of)f(the)h(most)e(recen)o(t)j(ev)o
(olutions)e(is)g(the)i(addi-)125 1868 y(tion)g(of)h(a)f(standard)i(ob)r(ject)
g(system,)f(CLOS)g(\(the)125 1918 y(Comm)o(on)11 b(Lisp)i(Ob)r(ject)i
(System\).)j(While)13 b(ob)r(jects)125 1968 y(are)18 b(not)h(new)g(to)f(Lisp)
499 1953 y Fj(18)534 1968 y Fk(,)h(CLOS)g(w)o(as)f(a)g(distilla-)125
2018 y(tion)d(of)g(earlier)i(systems)f(and)g(is)f(the)i(\014rst)g(that)f(is)
125 2068 y(completely)c(in)o(tegrated)j(in)o(to)e(the)h(language.)166
2120 y(In)j(con)o(trast)h(to)f(Smalltalk,)d(whic)o(h)j(has)h(only)e(a)125
2169 y(single)22 b(w)o(a)o(y)f(of)h(doing)g(things,)i(Lisp)e(has)h(man)o(y)m
(.)p 125 2213 333 2 v 156 2240 a Fi(17)188 2252 y Fh(W)m(e)9
b(are)g(all)f(a)o(w)o(are)h(of)g(Apple's)f("lo)q(ok)g(and)g(feel")g(la)o
(wsuit)125 2291 y(alleging)d(Microsoft)i(stole)f(the)i(Mac's)f(user)g(in)o
(terface.)12 b(Xero)o(x)125 2331 y(has)g(recen)o(tly)f(sued)h(Apple)h
(accusing)e(Apple)h(of)h(stealing)e(it)125 2370 y(from)f(them.)156
2398 y Fi(18)188 2410 y Fh(Fla)o(v)o(ors)g(w)o(as)i(an)f(early)f(OO)i(system)
e(in)h(Lisp)g(and)g(used)125 2449 y(extensiv)o(ely)d(in)j(Lisp)g(mac)o(hines)
996 307 y Fk(F)m(or)16 b(this)h(reason,)g(Lisp)g(is)f(most)f(commonly)f(used)
996 357 y(for)j(applications)f(that)h(require)g(a)g(language)f(with)996
407 y(great)21 b(expressiv)o(e)g(p)q(o)o(w)o(er,)h(complex)c(data)i(repre-)
996 457 y(sen)o(tations,)30 b(and)c(\015exible)g(op)q(erations)g(on)g(that)
996 506 y(data.)33 b(This)19 b(is)g(exactly)g(what)f(AI)h(requires,)i(but)996
556 y(is)13 b(also)f(true)i(of)e(man)o(y)f(other)j(problems,)d(including)996
606 y(CAD)1089 591 y Fj(19)1124 606 y Fk(,)j(CASE,)f(sc)o(heduling,)h(etc.)
1038 658 y(The)h(culture)i(of)d(Lisp)h(dev)o(elopmen)o(t)f(sa)o(ys)i(that,)
996 708 y(when)g(a)f(Lisp)g(dev)o(elop)q(er)h(tac)o(kles)f(a)g(problem,)f
(the)996 758 y(\014rst)e(thing)f(done)g(is)g(to)g(build)f(an)o(y)h(necessary)
i(to)q(ols.)996 808 y(This)h(means)e(that)i(Lisp)f(also)g(has)g(a)g(v)o(ery)h
(ric)o(h)g(and)996 857 y(p)q(o)o(w)o(erful)e(set)g(of)g(supp)q(ort)g(to)q
(ols)g(and)f(dev)o(elopmen)o(t)996 907 y(en)o(vironmen)o(ts.)36
b(These)22 b(to)q(ols)e(ha)o(v)o(e)g(gro)o(wn)f(o)o(v)o(er)996
957 y(the)c(y)o(ears)g(and)g(k)o(ept)f(pace)h(with)f(the)h(ev)o(olution)f(in)
996 1007 y(computer)h(hardw)o(are.)22 b(Lisp)15 b(w)o(as)g(one)g(of)g(the)h
(\014rst)996 1057 y(languages)c(to)g(b)q(e)g(run)h(in)o(teractiv)o(ely)e(and)
h(graphics)996 1107 y(in)o(terfaces)i(w)o(ere)f(added)g(as)g(so)q(on)f(as)h
(the)g(hardw)o(are)996 1156 y(b)q(ecame)h(a)o(v)n(ailable.)1038
1208 y(Go)q(o)q(d)21 b(Lisp)h(en)o(vironmen)o(ts)f(for)g(Unix)h(are)g(of-)996
1258 y(fered)16 b(b)o(y)f(four)g(ma)r(jor)e(v)o(endors)j(and)f(a)g(n)o(um)o
(b)q(er)f(of)996 1308 y(smaller)k(pla)o(y)o(ers.)34 b(There)20
b(are)g(a)e(couple)i(of)e(pub-)996 1358 y(lic)13 b(domain)e(v)o(ersions)i
(that)g(lac)o(k)g(the)h(stabilit)o(y)e(and)996 1408 y(rapid)19
b(ev)o(olution)f(of)h(the)h(ma)r(jor)e(pac)o(k)n(ages.)34 b(The)996
1458 y(ev)o(olution)11 b(is)h(c)o(hie\015y)h(in)e(the)i(area)f(of)g(impro)o
(v)o(ed)e(de-)996 1507 y(v)o(elopmen)o(t)g(to)q(ols)i(and)f(supp)q(ort)h(pac)
o(k)n(ages.)18 b(A)11 b(cou-)996 1557 y(ple)i(of)f(v)o(endors)h(still)e(ha)o
(v)o(en't)i(caugh)o(t)f(up)h(with)f(the)996 1607 y(\014nal)f(ANSI)h
(de\014nition,)f(although)g(they)h(should)g(b)q(e)996 1657
y(there)j(this)f(summer.)996 1806 y Fl(B)69 b(On)92 b(Language)h(W)-6
b(ars)1114 1881 y(Bjarne)23 b(Stroustrup)996 1976 y Fk([)p
Fa(The)15 b(fol)r(lowing)f(c)n(omments)h(fr)n(om)f(Bjarne)h(Str)n(ous-)996
2026 y(trup)j(original)r(ly)g(app)n(e)n(ar)n(e)n(d)h(on)g(the)f(net)h(and)g
(wer)n(e)996 2076 y(r)n(eprinte)n(d)12 b(in)g(the)g(Par)n(cPlac)n(e)g
(Systems)h(newsletter,)996 2126 y Fk(P)o(arcNotices)p Fa(,)19
b(Winter)f(1990.)27 b(Bjarne)18 b(is)f(the)g(de-)996 2176 y(velop)n(er)j(of)h
(C++.)35 b(They)21 b(may)g(help)f(she)n(d)h(some)996 2225 y(light)15
b(on)g(the)g(issues.)k(|)c(daj)6 b Fk(])1038 2277 y(There)25
b(seems)g(to)f(b)q(e)h(a)f(misconception)f(that)996 2327 y(C++)j(is)g(supp)q
(osed)g(to)g(b)q(e)g(Smalltalk)c(or)j(that)p 996 2371 V 1027
2398 a Fi(19)1060 2410 y Fh(Not)15 b(only)e(is)i(Droid)f(in)g(Lisp,)h(but)f
(so)h(is)g(the)f(p)q(opular)996 2449 y(PC)f(CAD)f(program,)d(AutoCAD.)135
2573 y Fg(c)125 2574 y Ff(\015)k Fg(Cop)o(yrigh)o(t)h(1990)g(Douglas)h
(Johnson)1056 b Fk(11)p eop
%%Page: 12 12
bop 125 307 a Fk(Smalltal)o(k)9 b(and)i(C++)i(are)f(in)f(some)f(w)o(a)o(y)h
(supp)q(osed)125 357 y(to)17 b(b)q(e)i(the)f(same.)30 b(Some)16
b(migh)o(t)g(summarize)g(the)125 407 y(misconception)d(in)g(a)h(\\sillygism)o
(":)191 454 y(C++)g(is)g(Ob)r(ject-Orien)o(ted)191 504 y(Smalltalk)d(is)i(Ob)
r(ject-Orien)o(ted)p 166 520 573 2 v 191 555 a(C++)h(is)g(Smalltalk)166
603 y(It)e(follo)o(ws)e(from)f(that)j(view)f(that)h(y)o(ou)f(should)g(b)q(e)
125 653 y(able)g(to)h(w)o(ork)g(in)g(exactly)g(the)h(same)e(w)o(a)o(y)h(with)
g(im-)125 703 y(plemen)o(tations)i(of)h(the)h(t)o(w)o(o)f(languages,)g(that)h
(y)o(ou)125 753 y(should)h(b)q(e)h(able)f(to)g(accomplish)f(the)i(same)e
(tasks)125 802 y(with)e(b)q(oth)g(languages,)f(and)i(that)f(when)h(y)o(ou)f
(can-)125 852 y(not,)f(someone)g(has)h(go)q(ofed.)166 902 y(I)g(disagree)g
(with)g(this)g(premise.)166 952 y(P)o(eople)29 b(who)f(naiv)o(ely)f(approac)o
(h)h(C++)h(and)125 1002 y(Smalltal)o(k)17 b(with)j(this)g(premise)g(are)g
(going)f(to)h(b)q(e)125 1051 y(disapp)q(oin)o(ted.)166 1101
y(C++)28 b(w)o(as)f Fa(not)32 b Fk(designed)c(as)g(an)f(imitation)125
1151 y(Smalltal)o(k.)43 b(Had)23 b(I)h(tried)f(that,)i(I)f(w)o(ould)e(nat-)
125 1201 y(urally)k(pro)q(duced)j(something)d(m)o(uc)o(h)h(closer)h(to)125
1251 y(Smalltal)o(k.)g(Actually)m(,)18 b(I)g(do)g(not)g(see)h(a)f(need)h(for)
125 1300 y(imitation-)o(Sm)o(al)o(ltal)o(ks.)49 b(Smalltalk)21
b(is)k(still)f(the)125 1350 y(b)q(est)18 b(Smalltalk)c(around.)27
b(It)17 b(is)g(a)g(v)o(ery)g(nice)h(lan-)125 1400 y(guage/system)d(and)h(its)
g(ev)o(olution)f(is)h(in)f(v)o(ery)i(ca-)125 1450 y(pable)c(hands.)166
1500 y(So,)19 b(C++)h(is)f(not)f(a)h(v)o(ery)g(go)q(o)q(d)f(Smalltalk;)g(it)
125 1550 y(w)o(as)f(not)f(mean)o(t)g(to)h(b)q(e.)28 b(Similarly)m(,)14
b(Smalltalk)g(is)125 1599 y(not)e(a)g(v)o(ery)g(go)q(o)q(d)g(C++;)h(it)e(w)o
(as)h(not)h(mean)o(t)e(to)h(b)q(e.)166 1649 y(There)20 b(are)e(t)o(w)o(o)g
(fundamen)o(tal)f(di\013erences)j(b)q(e-)125 1699 y(t)o(w)o(een)j(C++)f(and)h
(Smalltalk)o(:)32 b(C++)23 b(is)g(a)f(lan-)125 1749 y(guage;)d(Smalltalk)c
(is)j(a)g(system.)30 b(C++)19 b(is)f(stati-)125 1799 y(cally)13
b(t)o(yp)q(ed;)h(Smalltal)o(k)d(is)j(dynamically)d(t)o(yp)q(ed.)166
1848 y(These)24 b(\014rst)f(order)g(di\013erences)i(follo)o(w)20
b(partly)125 1898 y(from)12 b(needs)k(and)e(application)f(areas,)h(partly)g
(they)125 1948 y(represen)o(t)22 b(alternativ)o(e)f(strategies)g(for)f(attac)
o(king)125 1998 y(problems.)62 b(Man)o(y)28 b(di\013ernences)j(follo)o(w)c
(from)125 2048 y(them.)17 b(F)m(or)c(example,)f(in)i(general)166
2123 y Fc(\017)21 b Fk(it)9 b(is)g(harder)i(to)e(build)g(a)g(high-qualit)o(y)
m(,)e(\(\\mo)q(d-)208 2173 y(ern,")18 b(\\Smalltalk-l)o(ik)n(e"\))d
(programming)f(en-)208 2223 y(vironmen)o(t)9 b(for)h(a)h(statically)f(t)o(yp)
q(ed)h(language.)166 2300 y Fc(\017)21 b Fk(it)27 b(is)g(harder)h(to)f(pro)o
(vide)h(a)f(high-qualit)o(y)208 2350 y(programmi)o(ng)10 b(en)o(vironmen)o(t)
h(for)h(a)h(language)208 2399 y(used)e(on)g(a)g(div)o(erse)h(range)f(of)f
(systems)i(\(rather)208 2449 y(than)h(b)q(eing)h(a)g(system)g(in)f(itself)s
(\).)1038 307 y Fc(\017)20 b Fk(it)15 b(is)h(easier)g(to)g(design)f
(\\standard)h(libraries")1079 357 y(in)e(a)f(dynamically)e(t)o(yp)q(ed)k
(language.)1038 432 y Fc(\017)20 b Fk(it)13 b(is)g(harder)h(to)f(pro)q(duce)i
(e\016cien)o(tly)e(running)1079 482 y(co)q(de)i(for)f(a)f(dynamically)e(t)o
(yp)q(ed)k(langauge.)1038 558 y Fc(\017)20 b Fk(it)26 b(is)h(harder)g(to)f
(co)q(op)q(erate)i(with)e(\\tradi-)1079 608 y(tional")10 b(systems)h(from)f
(a)h(dynamically)d(t)o(yp)q(ed)1079 657 y(language)19 b(em)o(b)q(edded)h(in)f
(a)g(non-traditional)1079 707 y(standard)c(en)o(vironmen)o(t.)1038
783 y Fc(\017)20 b Fk(it)27 b(is)f(easier)h(to)g(manage)e(the)i(in)o
(tegration)1079 832 y(of)c(large)f(systems)h(written)h(b)o(y)f(man)o(y)e
(pro-)1079 882 y(grammers)8 b(if)i(statically)f(t)o(yp)q(ed)i(in)o(terfaces)g
(are)1079 932 y(used.)1038 1005 y(The)j(list)e(could)i(b)q(e)g(made)e(m)o(uc)
o(h)g(longer,)h(but)g(as)996 1054 y(it)g(b)q(ecomes)h(more)e(sp)q(eci\014c,)i
(the)g(sp)q(eci\014cs)i(b)q(ecome)996 1104 y(hard)c(to)g(understand)g(in)g
(isolation,)e(data)h(is)h(harder)996 1154 y(to)e(come)f(b)o(y)m(,)g(and)h
(the)g(issues)h(get)f(more)e(sensitiv)o(e)j(to)996 1204 y(matters)16
b(of)f(system)g(maturit)o(y)m(,)e(application)i(area,)996 1254
y(ecomonics,)e(and)h(the)g(bac)o(kground)g(of)f(the)i(users.)1038
1303 y(It)37 b(is)h(clear)g(that)g(b)q(oth)f(classes)i(of)e(lan-)996
1353 y(guages/systems)11 b(ev)o(olv)o(e)g(to)g(comp)q(ensate)g(for)g(their)
996 1403 y(w)o(eaknesses,)i(and)e(that)g(the)h(a)o(v)o(erage)f(prop)q(onen)o
(t)g(of)996 1453 y(one)17 b(language/system)e(kno)o(ws)h(his/her)h(o)o(wn)f
(lan-)996 1503 y(guage)22 b Fa(much)j Fk(b)q(etter)e(than)e(the)i(alternativ)
o(es)e(so)996 1553 y(that)d(m)o(uc)o(h)f(criticism)g(is)h(based)h(up)q(on)f
(ignorance)996 1602 y(ab)q(out)12 b(the)h(strengths)h(of)e(the)h(alternativ)o
(es)f(and)g(of-)996 1652 y(ten)j(lev)o(eled)f(against)f(obsolete)h(systems.)
1038 1702 y(The)e(st)o(yle)f(of)g(programming)d(and)j(the)h(approac)o(h)996
1752 y(to)h(design)g(is)f(\(and)h(I)f(think)h(ough)o(t)f(to)g(b)q(e\))i
(strongly)996 1802 y(in\015uenced)21 b(b)o(y)e(the)h(language/system)e(used.)
35 b(In)996 1851 y(particular,)15 b(C++)h(design)g(t)o(ypically)e(has)h(a)g
(larger)996 1901 y(\\up)e(fron)o(t")g(design)g(e\013ort)h(than)e(Smalltalk)e
(design)996 1951 y(and)17 b(the)h(sp)q(eci\014cation)g(of)e(strongly)h(t)o
(yp)q(ed)g(in)o(ter-)996 2001 y(faces)g(is)f(usually)f(the)h(k)o(ey)g(elemen)
o(t)g(of)f(C++)i(pro-)996 2051 y(gramming.)29 b(Ignoring)18
b(fundamen)o(tal)f(di\013erences)996 2100 y(in)g(one's)h(basic)f(to)q(ols)g
(leads)g(to)h(p)q(o)q(or)f(design)h(and)996 2150 y(to)c(insu\016cien)o(t)g
(and)g(p)q(o)q(orly)f(structured)j(co)q(de.)1038 2200 y(The)21
b(c)o(hoice)g(of)e(language/system)g(c)o(hosen)j(for)996 2250
y(a)g(particular)f(job)g(should)g(b)q(e)i(done)f(with)f(a)g(de-)996
2300 y(gree)h(of)d(understanding)i(of)f(b)q(oth)h(the)g(strengths)996
2350 y(and)26 b(the)g(w)o(eaknesses)h(of)e(the)h(alternativ)o(e)f(lan-)996
2399 y(guages/systems.)h(In)16 b(the)i(few)e(cases)i(where)f(gen-)996
2449 y(uine)f(data)f(can)h(b)q(e)g(obtained)g(it)f(should)g(b)q(e)h(tak)o(en)
135 2573 y Fg(c)125 2574 y Ff(\015)d Fg(Cop)o(yrigh)o(t)h(1990)g(Douglas)h
(Johnson)1056 b Fk(12)p eop
%%Page: 13 13
bop 125 307 a Fk(seriously)21 b(and)g(not)h(just)f(dismissed)g(in)g(fa)o(v)o
(or)f(of)125 357 y(philosophical)12 b(arguemen)o(ts.)166 407
y(There)23 b(is)e(no)h(reason)g(to)g(b)q(eliev)o(e)g(that)g(a)f(sin-)125
457 y(gle)f(language/system)g(will)g(b)q(e)h(the)h(b)q(est)g(c)o(hoice)125
506 y(for)16 b(all)g(applications|ev)o(en)g(if)g(a)g(particular)h(user)125
556 y(ma)o(y)9 b(ha)o(v)o(e)j(the)h(luxury)e(of)g(w)o(orking)g(exclusiv)o
(ely)h(on)125 606 y(pro)r(jects)h(where)g(a)f(single)g(language/system)f(has)
h(a)125 656 y(fairly)g(constan)o(t)i(o)o(v)o(erall)f(adv)n(an)o(tage.)393
697 y(.)393 714 y(.)393 731 y(.)166 781 y(There)23 b(is)f(no)g
(language/system)e(in)i(existence)125 831 y(that)12 b(can)h(serv)o(e)g(the)g
(range)g(of)f(applications/needs)125 880 y(that)27 b(is)g(curren)o(tly)h
(serv)o(ed)h(b)o(y)e(v)n(arious)f(\\OOP)125 930 y(languages"|let)12
b(alone)h(the)i(range)f(of)f(needs)i(they)125 980 y(could)e(serv)o(e.)19
b(C++)13 b(and)g(Smalltalk)d(w)o(ere)15 b Fa(delib)n(er-)125
1030 y(ately)k Fk(placed)e(at)f(the)g(extremes)h(of)e(the)i(sp)q(ectrum)125
1080 y(of)d(reasonable)i(design)g(c)o(hoices)g(for)f(practical)h(lan-)125
1130 y(guages)10 b(at)f(the)i(times)e(they)i(w)o(ere)f(dev)o(elop)q(ed.)18
b(That)125 1179 y(mak)o(es)d(comparisons)h(b)q(et)o(w)o(een)j(them)d(in)o
(teresting)125 1229 y(\(but)j(tric)o(ky\))g(and)g(they)h(supp)q(ort)f(eac)o
(h)h(other)g(as)125 1279 y(m)o(uc)o(h)d(as)j(they)f(comp)q(ete)h(for)e
(resources.)37 b(I)19 b(con-)125 1329 y(jecture)i(that)g(there)g(are)g(man)o
(y)e(more)g(Smalltalk)125 1379 y(programmers)9 b(no)o(w)j(than)g(there)h(w)o
(ould)e(ha)o(v)o(e)h(b)q(een)125 1428 y(had)h(C++)i(not)e(existed|and)i(vice)
f(v)o(ersa.)135 2573 y Fg(c)125 2574 y Ff(\015)f Fg(Cop)o(yrigh)o(t)h(1990)g
(Douglas)h(Johnson)1056 b Fk(13)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF