DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Wang WCS documentation floppies

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Wang WCS documentation floppies

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦589bffd90⟧ Wang Wps File

    Length: 13517 (0x34cd)
    Types: Wang Wps File
    Notes: tjg forel`sningsnoter     
    Names: »4600A «

Derivation

└─⟦ea7a1ecf3⟧ Bits:30006190 8" Wang WCS floppy, CR 0437A
    └─ ⟦this⟧ »4600A « 

WangText



FORM  MINIDATAMATSYSTEM
          
          
        SIDE
 ###
TOMOGRAFISYSTEM
          
          
          
          TJG
 84/02/08

KURSUSOPL@G




 S̲Y̲S̲T̲E̲M̲O̲P̲L̲@̲G̲:̲ ̲(̲T̲O̲M̲O̲G̲R̲A̲F̲I̲S̲K̲)̲ ̲B̲I̲L̲L̲E̲D̲B̲E̲H̲A̲N̲D̲L̲I̲N̲G̲S̲S̲Y̲S̲T̲E̲M̲.̲

     …02…Det samlede projekt kan opfattes som et fors]g p> at
     implementere et billedbehandlingssystem, specielt med
     hen- blik p> behandling af tomografiske billeder, dvs.
     digitali- serede billeder. Der skal tages hensyn til
     at systemet skal v`re forberedt til behandling af 3-dimensionelle
     data. Dette system t`nkes at best> af 

     …02…*     en brugergr`nseflade, der integrerer systemets
           samtlige funktioner til en konsistent helhed,

           *     forskellige delsystemer, der udf]rer, set
                 fra brugerens synspunkt, nyttige funktioner.

     De delsystemer, som man p> naturlig m>de kan integrere
     til et billedbehandlingssystem kan v`re

           *     billedog alfanumerisk database,
           *     grafiske funktioner,
           *     aritmetiske/statistiske funktioner, der
                 opererer p> billeder og tal.

     I et "rigtigt" tomografisk system ville der ogs> v`re
     en gruppe tomografiske funktioner. Denne gruppe af
     funktioner kan vi dog af naturlige grunde udelade.
     De delsystemer, som forventes implemeneteret beskrives
     mere detaljeret i f]lgende afsnit. 

     For at skaffe et f`lles udgangspunkt beskrives der
     i det n`ste afsnit "et ideopl`g", en ganske uformel
     beskrivelse af hvad der sker en mandag morgen, n>r
     en tilf`ldig "bruger" kommer forbi et "laboratorium",
     hvor det f`rdige system er opstillet. Det er alts>
     mandag morgen, den 1 april >r 1986.


     I̲d̲e̲o̲p̲l̲`̲g̲.̲

     …02…Brugeren Y ankommer til sit laboratorium, hvor hans
     nye billedbehandlingssystem "INTERIM" er opstillet.
     Y t`nder for systemet og n>r "Use me, I…08…m ready" st>r
     p> terminalen g>r han i gang med sit arbejde. Sidste
     uge har Y foretaget en hel r`kke unders]gelser, der
     har resulteret i over 200 billeder, en del alfanumeriske
     data og en m`ngde tal. Y er nemlig en l`ge, der foretager
     patient- unders]gelser.
     (Bem`rkning: Y kunne ogs> v`re en ingeni]r, eller en
     geolog der arbejder med satellitbilleder)
     Y er ikke ene om at bruge "INTERIM". Hans kollega X
     bruger ogs> maskinen. Det f]rste Y g]r er at >bne sin
     egen database

           open ̲database(Y ̲data, my ̲private ̲key)

     og udskrive en liste over sidste uges unders]gelser

           list ̲pt

     Men han har glemt parametre! "INTERIM" sp]rger da ham

                 start ̲date=860324
                 last ̲date=860331

     En patientliste kommer til syne p> terminalen. Det
     vil nu v`re rart at f> denne liste p> et stykke papir.
     Y skriver derfor

           list ̲pt(860324, 860331) -- printer

     "list ̲pt" er en funktion som Y selv har lavet ud fra
     nogen mere simple funktioner. For at opbygge "list
     ̲pt" har Y brugt en simpel linieorienteret editor. Teksten
     er dern`st blevet oversat af en makrofunktiongenerator
     til en slags pseudokode. Under overs`ttelsesprocessen
     har makro- generatoren bedt Y om at indtaste parameternavne,
     der skrives ud n>r man har glemt at definere en >ben
     parameter. Makrogeneratoren har ogs> bedt (tvunget
     er m>ske et bedre udtryk) Y til at definere en kort
     beskrivelse af "list ̲pt" som man f>r udskrevet n>r
     man aktiverer "help" funktionen ved

           help(list ̲pt, short).

     Skriver man "long" i stedet for "short" f>r man ogs>
     be- skrivelser af parametre med. Y har ogs> defineret
     para- meterbeskrivelser n>r han k]rte makrogeneratoren.
     Makro- generatoren arbejder med 3 slags funktionsparametre

           *     >̲b̲n̲e̲ ̲p̲a̲r̲a̲m̲e̲t̲r̲e̲, der ikke er tillagt nogen
                 v`rdi
                 - brugeren skal angive en v`rdi n>r han
                 aktiverer funktionen,


           *     p̲r̲`̲d̲e̲f̲i̲n̲e̲r̲e̲d̲e̲ ̲p̲a̲r̲a̲m̲e̲t̲r̲e̲, der har en "default"
                 v`rdi, men hvis brugeren indtaster
                 parameterv`rdien s> omdefinerer han
                 midlertidigt parameterv`rdien,

           *     l̲u̲k̲k̲e̲d̲e̲ ̲p̲a̲r̲a̲m̲e̲t̲r̲e̲, der en gang for alle
                 har
                 f>et tillagt en v`rdi.

     Standardfunktionerne kan kun have >bne og pr`definerede
     parametre. Makrofunktionerne kan ogs> have lukkede
     para- metre. Y kan p> ethvert tidspunkt k]re makrogeneratoren
     p> en tidligere defineret makrofunktion for at `ndre
     p> para- metertyper (f.eks. >ben til pr`defineret),
     funktions og parameterbeskrivelser. 

     Lad os vende tilbage til Y. Hans kald af "list ̲pt"
     har resulteret i udskriften af flg. tabel:

           -----------------------------------------------
           ! pt                                        
            !
           !---------------------------------------------!
           ! navn             ! dato   ! s ̲1 ! s ̲2 ! s ̲3
           !
           !---------------------------------------------!
          1! Hansen           !860322  !  *  !  *  !  *
      !
          2! Andersen         !860327  !  *  !  *  !  *
      !
          3! K. Jensen        !860327  !  *  !  *  !  *
      !

           ...

     Tegnet "*" indikerer at s]jlen (attributten) s ̲1 ikke
     er en simpel type, som tilf`ldet er i almindelige relations-
     databaser, men en 1, 2 eller 3 dimensionel array..
     Y kan f> at vide hvordan s ̲1 er opbygget ved at kalde

           type(pt.s ̲1)

     Svaret kan se s>ledes ud

           relation = pt
           attribute= s ̲1 is array (1..64, 1..64) of real.

     Y har nu t`nkt sig at arbejde med data h]rende til
     anden r`kke i tabellen. Han kan udpege data i billedet
     s ̲2 p> forskellige m>der:

           *     pt(2).s ̲2 udpeger hele billedet,
           *     pt(2).s ̲2(7,9) udpeger et enkelt billedelement,
           *     pt(2).s ̲2(7..10, 8..30) udpeger et delbillede,
           *     pt(2).s ̲2($,20..40) udpeger ogs> et delbillede.



     Tegnet $ er e̲t̲ ̲"̲d̲e̲f̲a̲u̲l̲t̲"̲ ̲t̲e̲g̲n̲, der indikerer, at man
     ]nsker at bruge en pr`defineret v`rdi. Tegnet kan bruges
     i stedet for en parameterv`rdi. Y har t`nkt sig at
     arbejde et stykke tid med data h]rende til anden r`kke
     i tabellen. For at slippe for at skrive pt(2) foran
     hver datareference kalder Y funktionen "use"

           use(pt(2)).

     Fra nu af refererer Y til data i pt(2) indtil han kalder
     funktionen deuse, eller indtil han kalder "use" med
     en anden parameter. Begreber "pt(first)", "pt(last)"
     "pt(next)" og count(pt) har ogs> en veldefineret mening.

     Foruden et databegreb benytter Y sig af systemets f̲u̲n̲k̲t̲i̲o̲n̲s̲b̲e̲g̲r̲e̲b̲.
     Det er ikke altid, at han er klar over, at han egentlig
     aktiverer funktioner. Det er kun mere komplicerede
     funktioner der kendes ved navn. Det fundamentale funktioner
     er i̲m̲p̲l̲i̲c̲i̲t̲e̲ ̲f̲u̲n̲k̲t̲i̲o̲n̲e̲r̲, der er fuldst`ndigt integreret
     med gr`nsefladen. Den vigtigste implicite funktion
     er "̲f̲l̲y̲t̲ ̲d̲a̲t̲a̲"̲ funktion, der aktiveres af tegnet "st]rre
     end" (af typografiske grunde skriver jeg det tegn som
     dobbelt minus --). For at skrive indholdet af en datapost
     ud p> terminalen beh]ver Y end ikke at angive funktionen.
     Han kan n]jes med at skrive 

           s ̲2(10..15, 7..50)

     med det resultat, at en formatteret udskrift af tabellen
     bliver skrevet ud p> terminalen. Alternativt kunne
     Y have skrevet

           s ̲2(10..15, 7..50) -- terminal.

     Nedenfor er der angivet flere eksempler p> "flyt data"
     funktion:

           *     s ̲2 -- tv.colour(7,30) viser billedet p>
                 den grafiske terminal
           *     min(s ̲2) -- matrix(7,8) minimumsv`rdien
                 af billedet gemmes i elementet (7,8) i
                 en todimensional tabel
           *     s ̲2 -- s ̲3 fuldst`ndig kopiering
           *     s ̲2+s ̲3 -- s ̲4 billedaddition og kopiering
           *     s ̲2(7..14, 9..50) -- temp(5..12, 20..61)
                 flytning af en del af et billede over i
                 et del- billede
           *     99 -- v40 initialisering af en vektor
           *     "K. Andersen" -- pt(2).navn initialisering
                 af data i databasen.


     Almindelige aritmetiske funktioner og g`ngse database-
     funktioner er integreret i gr`nsefladen. Eksempler
     er an- givet nedenunder:

           *     count(pt)
           *     min(pt.dato), max(s ̲2)
           *     avg(s ̲2), avg(0, 10,14, 16, 17)
           *     any(pt)
           *     pt(2).s ̲2(10..15, 20..30)*2.3 -- temp(10..15,
                 40..50)
           *     pt(2).s ̲2(10..15,20..30)*4.5 -- printer
           *     min(s ̲2)+7.5*(34+max(s ̲3)) -- terminal

     Det ses at kombinationen af "flyt data" funktionen
     og almindelige aritmetiske regneudtryk giver muligheder
     for at udf]re komplicerede operationer. 

     Y kender ogs> en anden slags funktioner, nemlig e̲k̲s̲p̲l̲i̲c̲i̲t̲
     n̲a̲v̲n̲g̲i̲v̲n̲e̲ funktioner. S>danne funktioner udf]rer typisk
     komplicerede transformationer af data. Til denne gruppe
     funktioner h]rer ogs> Y…08…s egne makrofunktioner. Funktionerne
     i denne gruppe aktiveres p> flere forskellige m>der:

           *     funktion   parameterl]s funktionskald,
                 der ikke
                 resulterer i nogen uddata,
           *     funktion -- out ̲data    parameterl]s
                 funktionskald der resulterer i uddata,
           *     funktion(in ̲data) -- out ̲data
           *     funktion(in ̲data1, in ̲data2,... out ̲data1,...).

     Foruden databegreb og funktionsbegreb kender Y ogs>
     y̲d̲r̲e̲ e̲n̲h̲e̲d̲e̲r̲. For at brugergr`nsefladen skal v`re simpel
     og konsistent kan man t`nke sig at f.eks. en linieskriver
     og en terminal opfattes som ustrukturerede datavariable
     (af typen text ̲file?) som man kun kan sende data til.
     Det er lidt mere kompliceret at opstille en model for
     en grafisk terminal, men det er ikke umuligt.


     D̲e̲ ̲g̲r̲a̲f̲i̲s̲k̲e̲ ̲f̲u̲n̲k̲t̲i̲o̲n̲e̲r̲ som Y kan kalde producerer data
     af en speciel type, lad os kalde typen "image". S>danne
     data kan flyttes med den s`dvanlige "flyt data" funktion
     ud p> den grafiske terminal. Y kan vise en linie p>
     2 forskellige m>der:

           *     line(from ̲x, from ̲y, to ̲x, to ̲y, colour,
                 style)
                 -- temp   hvor temp er "image" variabel,
                 frem- visning af linien sker ved
                 temp -- tv.colour

           *     line(from ̲x,from ̲y, to ̲x, to ̲y, colour,
                 style)
                 -- tv.colour.

     De basale grafiske funktioner som Y benytter sig af
     i sit daglige arbejde er

           *     function(y ̲values,from ̲x, x ̲inc, x ̲origo,
                 y ̲
                 origo, x ̲scale, y ̲scale)
           *     curve(x ̲values, y ̲values,...)
           *     line(...)
           *     rectangel(x1,y1,x2,y2,colour)
           *     axis(...) 

     (Skal der v`re eksplicite funktioner der viser tekst
     og to- dimensionalle tabeller som farvekort ?).

     Y er is`r glad for systemets i̲n̲t̲e̲r̲a̲k̲t̲i̲v̲e̲ ̲g̲r̲a̲f̲i̲s̲k̲e̲ ̲e̲d̲i̲t̲o̲r̲,
     der ved hj`lp af sp]rgsm>l/svar dialog opbygger en
     en ny "image" variabel, der kan vises p> den grafiske
     terminal. Den grafiske editor opbygger efterh>nden
     billedet p> sk`rmen og retter man noget i "image" datastrukturen
     s> f>r man rettelsen ]jeblikkeligt at se p> den grafiske
     terminal. De enkelte elementer i en "image" datastruktur
     kan igen v`re tidligere definerede "image" datastrukturer
     - s>ledes kan man opbygge komplekse billeder ud fra
     tidligere de- finerede simplere billeder.


     D̲e̲l̲s̲y̲s̲t̲e̲m̲ ̲1̲ ̲:̲ ̲b̲r̲u̲g̲e̲r̲g̲r̲`̲n̲s̲e̲f̲l̲a̲d̲e̲.̲

     …02…Dette delsystem har en central rolle i forhold til
     de andre delsystemer. Systemets funktioner fastl`gges
     af gr`nsefladen - derfor kan hverken det grafiske delprojekt
     eller databasedelen rigtigt komme i gang f]r gr`nsefladen
     er fastlagt. En liste over delprojekter og problemer
     der skal tages stilling til:

     definition af brugerens begrebsverden:
     …02…hvad er data og datatype ?
           hvordan sammensmelter man database med almindelige
           "variable" ?
           skal man have permanente og tempor`re variable
           ?

           hvordan kalder man funktioner ?
           procedurekald: f(x, y)   ? 
           ligesom i FORTH: x y f   ?

           hvordan skal brugeren opfatte ydre enheder ?

           hvordan skal brugeren opfatte den grafiske terminal
           s>ledes at man undg>r at indf]re et nyt og kompliceret
           begreb ?

     hvor g>r gr`nsefladen mellem brugergr`nsefladen og
     de andre delsystemer:
           hvilke dele af "flyt data" funktionen er med
           i brugergr`nsefladen ?
           aritmetiske udtryk er givet med i brugergr`nsefladen
           !

     syntax og semantik for kommandosproget:
           skal der ogs> v`re menuer ?

     format for makrofunktion, intern repr`sentation af
     funktionsbeskrivelser, indl`ggelse og sletning af basis-
     funktioner

     makroeditor, makrogenerator

     hvordan repr`senterer man det "milj]" som brugeren
     k]rer i ?

     "name resolution" - hvordan finder man ud hvad "s ̲2"
     betyder ?

     parameteroverf]rsel til andre delsystemer



     D̲e̲l̲s̲y̲s̲t̲e̲m̲ ̲2̲ ̲:̲ ̲d̲a̲t̲a̲b̲a̲s̲e̲.̲

     …02…Navnet "database" er tildels misvisende idet "open
     ̲database" bringer Y ind i et "milj]", der indeholder

           database
           variable
           typer

     og muligvis nogle f> andre datastrukturer, f.eks.

           text ̲filer
           image ̲filer.

     Det er en kunst at f> en database og de andre data-
     strukturer til at fremtr`de som en helhed. En liste
     over delprojekter og problemer, der skal tages stilling
     til:

     interne datastrukturer !!!

     databasefunktioner

     skal man opfinde en "relation" type for at definere
     relationer ? Noget i stil med

           type pt ̲type = relation
                             navn : s20;
                             dato : integer;
                             s ̲1  : array (1..64, 1..64)
                             of real;
                             ...
                          end;

     hvordan indf]rer brugeren nye typer, variable, relationer
     ?
           vi har ingen "compiler" - t`nk p> dialog formen
           !

     filstrukturer

     overf]rsel af parametre

     overf]rsel af data til/fra databasedelen

     (Fotokopier af overheads fra databaseforel`sning er
     vedlagt)


     D̲e̲l̲s̲y̲s̲t̲e̲m̲ ̲3̲ ̲:̲ ̲g̲r̲a̲f̲i̲k̲.̲

     …02…Dette delprojekt g>r is`r ud p> at udvikle nogle f>
     begreber, der g]r det nemt for brugeren at arbejde
     med den grafiske terminal:
           den grafiske terminal som en speciel datastruktur
           opbygning af billeder, billedfiler, datastrukturer.

     Opgaven g>r dog is`r ud p> at opbygge brugerfunktioner
     (som f.eks. "line"), diskutere hvad der skal med og
     hvad der ikke skal med. Den interaktive grafiske editor
     er dette delprojekts flagskib. 

     En liste over delprojekter og problemer:

     brugerens opfattelse af den grafiske sk`rm - koordinater,
     adressering

     grafiske funktioner

     den grafiske editor

     "image" datastruktur.

     parameteroverf]rsel