Datalogi er videnskaben om data og dataprocesser. Den opstod efter fremkomsten af den digitale computer i midten af 1940'erne.

Faktaboks

Etymologi
Ordet datalogi kommer af data og -logi.

Ordet datalogi, defineret som "læren om data, deres væsen og brug", blev indført af professor Peter Naur i 1966 som et alternativ til den amerikanske betegnelse "computer science", der ikke i samme grad udtrykker, at faget rummer videnskabelige problemer, der rækker ud over den blotte udnyttelse af computeren.

Datalogiens forskningsobjekt er data, repræsentationer af objekter eller idéer. Det er ikke objekterne eller idéerne i sig selv, der har interesse i en datalogisk sammenhæng, men de måder, de kan repræsenteres på, og disse måders egenskaber i forbindelse med den ønskede databehandling. Fx kan tal repræsenteres på mange måder, men hvis man ønsker at multiplicere dem med hinanden, så er arabertal en bedre repræsentation end romertal, og særligt binære tal er nemme for en computer at arbejde med.

Datalogien handler således om datastrukturer og dataprocesser samt om karakterisering af sådanne strukturers og processers egenskaber og begrænsninger. Computeren er et centralt redskab i datalogien. Med den kan den datalogiske forsknings hypoteser afprøves i praksis, og megen datalogisk forskning omhandler principper for programmering og metoder til effektiv udnyttelse af computeren. Endvidere er anvendelse af computere i forskellige fagområder og dennes indflydelse på samfund, privatliv, arbejdsliv m.m. et område, der studeres i faget datalogi.

Metoder og fagområder

En af de vigtigste hjælpediscipliner for datalogien er matematikken; ikke den kontinuerte matematik, som fx fysik benytter sig af, men diskret matematik (mængdelære, kombinatorik, induktion, sandsynlighedsregning etc.). Også logik finder anvendelse i datalogien.

Datalogiens opgave er at afdække generelle principper for databehandling. Herved kommer datalogien til at interessere sig for mange problemstillinger, der også kendes i andre discipliner. Interessen for konstruktion af automatiske systemer til bestemte anvendelser kan man fx også finde i ingeniørfagene.

De systemer, datalogien beskæftiger sig med, er ofte så komplekse, at deres overordnede design bliver afgørende for brugsværdien. Derfor har de problemer, man arbejder med i fx arkitektur og psykologi, også relevans for datalogien.

Arbejdet med programmeringssprog har relation til lingvistiske problemstillinger, og problemerne i forbindelse med lagring og genfinding af store datamængder ligner dem, man beskæftiger sig med inden for fx biblioteksvæsenet. Endelig spiller organisationsteori en rolle ved udvikling af store administrative datasystemer.

Datalogi er således en vidtfavnende tværvidenskabelig disciplin, og den følgende beskrivelse af delområder tager sigte på at vise spændvidden i de emner, der dyrkes, snarere end at give en udtømmende beskrivelse af faget.

Algoritmer

Her udforskes egenskaber ved forskellige former for datarepræsentation for at finde fællestræk, der dækker et bredt spektrum af anvendelser. For en given opgavetype undersøges, hvilke algoritmer og datastrukturer der er de bedste, hvor stort tids- og lagerforbruget er — i gennemsnit og i det værst tænkelige tilfælde — og hvilke andre opgavetyper der kan løses med lignende algoritmer. I reglen formuleres algoritmer på abstrakte datastrukturer såsom sekvenser, træstrukturer og grafer (knuder forbundet med kanter), og når en algoritme skal anvendes til at løse et konkret problem bliver de abstrakte datastrukturer konkretiseret ved at tilføje de detaljer, der er relevante for det konkrete problem.

Spørgsmålet om grænserne for, hvad der overhovedet lader sig beregne, kan også henregnes til dette delområde.

Som eksempler på opgavetyper kan nævnes sortering og søgning, beregning af korteste veje, pakningsproblemer, grafisk billedbehandling samt numeriske beregninger, hvor et af problemerne er afrundingsfejl i lange kæder af talberegninger.

Programmeringssprog

Dette delområde handler om notationsformer for algoritmer og data samt om oversættelse fra programmeringssprog på højt niveau til maskinsprog. Sproglige begreber som grammatik og syntaks spiller en stor rolle, men der sættes også fokus på semantik, på hvad elementerne i et sprog betyder, og på hvordan denne betydning kan specificeres utvetydigt.

Computere bruger internt maskinsprog, men maskinsprog er meget omstændeligt at programmere i, da man skal holde styr på, hvor i lageret data findes, hvordan datastrukturer repræsenteres som en samling binære tal, osv. Programmeringssprog er udviklet med det formål at gøre det nemmere for mennesker at programmere en computer end ved brug af maskinsprog. Dette gøres ved at tilbyde datastrukturer og andre strukturerede begreber på en måde, hvor den konkrete repræsentation som binære tal og maskinsprog er skjult for programmøren, så denne ikke skal tænke over dette. Endvidere er programmeringssprog i reglen maskinuafhængige, så det samme program kan oversættes eller fortolkes til at kunne køre effektivt på mange forskellige processorarkitekturer.

Udvikling af programmeringssprog kombinerer psykologi for, hvordan mennesker forståeligt og utvetydigt kan beskrive beregninger, med metoder til at få disse beskrivelser afviklet effektivt på konkrete computere.

Operativsystemer

Her studeres styringsmekanismer, der egner sig til koordinering af computerens resurser, så disse kan deles mellem flere mennesker og flere programmer. Resurser er i denne kontekst computerens lager, beregningsenheder og forbindelser til omverdenen, fx netværk, printer, tastatur, skærm og mus.

Et operativsystem opstiller en grænseflade mellem programmer og hardware, så programmerne ser en forenklet model af denne. Endvidere isoleres samtidigt kørende programmer fra hinanden, så de hver for sig ser en model, hvor de kan lade som om, de er de eneste programmer på maskinen — undtagen når de eksplicit har behov for at kommunikere med hinanden.

De opgaver, et operativsystem skal løse, er i grove træk følgende: bestemmelse af rækkefølgen for afvikling af opgaver, administration af det indre lager og baggrundslagre, kommunikation over datanet, synkronisering af hændelsesforløb mellem forskellige programmer, der kommunikerer med hinanden, samt administration af, hvem der har adgang til computeren.

I ikke-teknisk sprogbrug bruges ordet "operativsystem" ofte til også at omfatte den grafiske brugergrænseflade (vinduer, menuer osv.), som en bruger af en computer bruger til at interagere med denne. Men teknisk set er den grafiske brugergrænseflade et lag, der ligger ovenpå operativsystemet.

Systemarbejde og programudvikling

Dette område (også kaldet systemudvikling) handler om metoder til udvikling af it-systemer, der opfylder visse på forhånd opstillede specifikationer. Opgaven kan være at analysere eksisterende manuelle systemer og processer i en organisation og derefter at designe og implementere it-systemer til erstatning for eller supplement til disse.

Dette vil som oftest give anledning til ændring af de administrative systemer og processer i organisationen som en konsekvens af de nye muligheder, it-systemerne stiller til rådighed. I mange tilfælde designes helt nye it-systemer, der ikke har en manuel parallel. Også design af generelle standardsystemer såsom tekstbehandling, regneark, databasesystemer osv. kan henregnes til dette delområde.

Forskningen forsøger at udforme principper for, hvordan man opstiller specifikationer, der kan analyseres for fuldstændighed og indre konsistens, og hvordan man undersøger, om et færdigt system lever op til alle krav i specifikationen. Endvidere for, hvordan man udvikler systemer, der kan forstås og anvendes hensigtsmæssigt af brugerne, og som kan ændres i takt med ændrede forudsætninger.

Specielt inden for databaseområdet studeres de problemer, der er forbundet med organiseringen af store datamængder, så det bliver let at udtrække oplysninger og ændre data.

Udover metoder til at sikre, at et it-system opfylder en kravspecifikation, omfatter feltet også styring af de organisatoriske systemer og processer, der bruges under udvikling af it-systemer, således at man kan estimere omkostninger og tidshorisont for projekter og håndtere ændringer af kravspecifikationen både under udvikling af systemet og efter dettes ibrugtagelse. Målet er at overholde de kontrakter, en it-leverandør har med sine kunder og sikre rettidig leverance af brugbare systemer. Dette er dog overordentligt svært, så det ses ofte, at it-projekter ikke overholder budget og tidsrammer eller ikke når i mål med brugbarheden.

Kunstig intelligens

Kunstig intelligens er forsøg på at konstruere systemer, der kan løse opgaver, som normalt henregnes til menneskelige egenskaber (logisk deduktion, læreprocesser, sprogforståelse osv.). Som et eksempel kan nævnes ekspertsystemer, der simulerer menneskelig beslutningstagning inden for et bestemt problemområde, fx fejldiagnosticering.

I det 21. århundrede er feltet domineret af neurale netværk, som trænes på et stort antal eksempler til at kunne generalisere fra disse eksempler til generel brug. For eksempel bruges dette i medicinsk billedbehandling til at hjælpe læger med at stille diagnoser ud fra fx røntgenbilleder: Det neurale netværk trænes på et stort antal billeder, hvor diagnosen er kendt, og meningen er, at netværket derefter kan diagnosticere ud fra nye billeder. Andre anvendelser er behandling (oversættelse, forståelse, analyse) af tekst og tale, analyse af finansiel data, og meget mere.

I computerspil styrer kunstig intelligens den måde ikke-spiller-elementer i spillet opfører sig, fx hvordan modstandere bevæger sig og angriber. Her bruges ofte regelbaserede metoder, da neurale netværk kræver for mange resurser. Endvidere er det nemmere at justere sværhedsgraden af et spil, når man bruger regelbaserede metoder.

I robotteknologi arbejder man med metoder til efterligning af de menneskelige sanser og med at forbinde sansestimuli med motorik, så man fx kan lære en robot at bevæge sig i terræn eller en selvkørende bil at navigere i trafik uden at forårsage ulykker.

Menneske-maskine-interaktion

Her studeres informationsstrukturer, der har relation til menneskers interaktion med maskiner, særligt computere.

Et eksempel er udformning af grafiske brugergrænseflader og skærmbilleder med maksimal forståelighed og udformning af inddateringsmetoder, der føles naturlige for mennesker. Formålet er dels at mindske muligheden for misforståelser og dermed undgå menneskelige fejldispositioner og dels at gøre brugen af computere behagelig for mennesker.

Multimediemaskiner og virtual reality er blandt resultaterne af forskningen på dette område, men også metoder til computerstøttet samarbejde mellem mennesker, fx via virtuelle møderum og delte dokumenter.

Læs mere i Den Store Danske

Kommentarer

Kommentarer til artiklen bliver synlige for alle. Undlad at skrive følsomme oplysninger, for eksempel sundhedsoplysninger. Fagansvarlig eller redaktør svarer, når de kan.

Du skal være logget ind for at kommentere.

eller registrer dig