Tentaplugg PROG PDF
Document Details
Tags
Summary
Detta dokument ger en översikt av grundläggande begrepp inom programmering och datavetenskap, däribland primär- och sekundärminne, olika talsystem (decimal, binär, octal, hexadecimal), datarepresentation, och datakomprimering. Dessutom ingår konvertering mellan olika talsystem och en introduktion till datarepresentation.
Full Transcript
Tentaplugg PROG-kurs Primär/sekundärminne Primärminne: RAM-minne/Cache-minne. Rensas när datorn stängs av. Ganska litet förvaringsutrymme jämfört med en HDD/SDD. Snabbare än sekundärminne. Sekundärminne: HDD/SDD. Finns kvar när datorn stängts av. Tar lite mer tid att hämta data från Talsystem Talsy...
Tentaplugg PROG-kurs Primär/sekundärminne Primärminne: RAM-minne/Cache-minne. Rensas när datorn stängs av. Ganska litet förvaringsutrymme jämfört med en HDD/SDD. Snabbare än sekundärminne. Sekundärminne: HDD/SDD. Finns kvar när datorn stängts av. Tar lite mer tid att hämta data från Talsystem Talsystem = strukturerat sätt att presentera nummer genom siffror eller symboler Varje talsystem har en bas (eller radix) som definierar hur många symboler/siffror det använder. Decimal = 10 Binär = 2 Octal = 8 Hexa = 16 (0-9 sedan A,B,C,D,E,F) Typer av talsystem: Positionella = deci, binär Icke-positionell = romerska (symbolerna behåller sitt värde oavsett ordningen i numret) Vilket talsystem används var: Binär: digital elektronik och datorer. Används i processorer och minnesadressering. En dator lagrar nummer och tecken som binära tal. Octal: Unix system, för filhanteringssystem Decimal: varje dag, för att räkna och i finansiella system. Hexa: datorsystem och webbdesign. Används för att representera minnesadresser och färgkodningar i HTML t.ex. Positionsvärdering: Symbol/siffran längst till vänster är mest signifikant och har den högsta ”powern”. Varför konvertera mellan olika baser? Nödvändigt för att en dator och en människa ska kunna interagera. Genom att konvertera baser kan man skicka instruktioner till en dator i ett talsystem som man är bekväm med och datorn får instruktionen i det talsystem som den är bekväm med. Utan konverteringen hade vi inte kunnat använda datorer på ett effektivt sätt. Förstå binära dataenheter: En binär siffra = bit (1,0) 8 bit = en byte (förkortas B) 1 megabyte (MB) = 1 miljon byte (B) 1 gigabyte (GB) = 1 miljard byte (B) En bit kan vara antingen 1 eller 0 Två bit kan vara 00 01 10 11 alltså fyra varianter 3 bit kan vara åtta olika varianter 4 bit blir då 24 5 bit blir 25 Och så vidare Datarepresentation Datakomprimeringar Kompressionsratio = mäter hur effektivt data är komprimerat i förhållande till ursprungsstorleken. 2:1 betyder att den komprimerade filen är hälften så stor som den ursprungliga. Lossy = lite data har förbisetts, mindre storlek, sämre kvalitet. Lossless = all data har tagits vara på, större storlek, bättre kvalitet. Analog vs digital Analog info är kontinuerlig. Som att läsa på en termometer. Finns oändligt många möjliga värden mellan två givna punkter. För att en dator ska kunna processa analog data måste den konverteras till digital. Exempel: ljudvågor, ljusintensitet Ljudvågornas amplitud (volym) och frekvens varierar jämnt. Digital data är diskret, alltså visar specifika värden som binära siffror 1 eller 0. En digital termometer visar alltså temperaturen i definierade steg, kanske 0,5 grader. Digital system är mer noggranna och exakt – därför lagras modern data digitalt. ASCII ASCII är ett 7-bit system som används för att representera tecken som bokstäver, siffror, symboler i datorer. Har unika nummer 0-127 för varje tecken. Latin-1 Latin-1 är samma som ASCII bara vidareutvecklat. Man har 8 bitar (0-256). Unicode Den senaste vidareutvecklingen som använder 1-4 bytes (8-32 bit) per tecken. Kan man få i princip alla teckensystem som finns. Hur funkar teckenkodning? Användaren trycker på en knapp på tangentbordet, t.ex. ”T”. En elektronisk signal skickas till datorsystemet Signalen konverteras till ASCII binära kod, t.ex. ”T” = 01010100 Den binära koden processas och ”T” visas på skärmen Problem med teckenkodning Det tar för mycket plats om varje tecken ska kunna representeras. Finns olika effektiva metoderför att lösa problemet. Keyword encoding Run-length encoding Huffman coding Omvandla 7410 till binärt, oktalt och hexadecimalt. Visa dina tillvägagångssätt för uträkningarna och hur du kommer till svar. Ingen poäng om du bara ger svaret. 0100 10102, 1128, 4A16 7410 till binär: 74 / 2 = 37 rest 0 37 / 2 = 18 rest 1 18 / 2 = 9 rest 0 9 / 2 = 4 rest 1 4 / 2 = 2 rest 0 2 / 2 = 1 rest 0 1 / 2 = 0 rest 1 10010102 Jag tror att svaret är skrivet med en 0 i början för att demonstrera att det är 1 byte (8 bitar). Men det står ju inget om att det ska presenteras så i frågan. 7410 till oktalt: 74 / 8 = 9 rest 2 9 / 8 = 1 rest 1 1 / 8 = 0 rest 1 1128 7410 till hexadecimalt: 74 / 16 = 4 rest 10 (A) 4 / 16 = 0 rest 4 4A16 Logisk vs fysisk adress The basic difference between Logical and physical address is that Logical address is generated by CPU in perspective of a program. On the other hand, the physical address is a location that exists in the memory unit. / logical = It is the virtual address generated by CPU + Physical = The physical address is a location in a memory unit. Logisk address = CPUn genererar en address relativ till programmet som körs, men inte I förhållande till minnets verklighet. Fysisk address = En verklig address som finns I minnet. När programmet kompileras skapas en logisk address När programmet sedan laddas in I mnnet översätts den logiska adressen till en specific fysisk address. Mappningen mellan logisk och fysisk address kallas address binding. Fördel: Flexibilitet. Kan flytta runt program I minnet och ladda in det på olika ställen vid olika tidpunkter. Begrepp a) WWW- ett hypertext baserat informationssystem. görs tillgängligt genom internet enligt specifika regler i protokollet http. b) HTML – hypertext markup language. Ett uppmärkningsspråk som används för att skapa hemsidor. c) Websida – dokument skrivna i ett uppmärkningsspråk (HTML) som kan presenteras i en webbläsare d) URL – Uniform Resource Locator. Adress till en unik resurs inom ett nätverk. Används främst för att identifiera websidor. e) Java applet – Små applikationer som används för att göra websidor mer dynamiska och interaktiva. Abstraktion Det är svårt att tänka på flera nivåer på samma gång. Abstraktion är ett verktyg Abstraktion innebär att dölja detaljer. Datorer är så komplexa att vi behöver ”dela upp dem” för att förstå dem Vi delar upp dem i så kallade lager/skikt Detta kallas för abstraktion Egenskaper hos en bra abstraktion: Är enkel att förstå från utsidan Har ett enkelt och väl definierat gränssnitt Är fristående och oberoende Historia Högnivåspråk Om ett program skrivet i ett högnivåspråk kan köras på en viss dator är beroende av om det finns en kompilator eller interpretator för språket till den datorns processor. Högnivåspråken är mer likt det talade språket, eller åtminstone mer lättförståeligt... Onion Model Transistor Logiska grindar Logiska grindar är fundamentala för att datorers hårdvara ska fungera. De processar elektroniska signaler. Finns sex huvudtyper som kan kombineras till kretsar (CIRCUITS). Kan beskrivas på tre sätt. Boolska uttryck, logiska diagram, sanningstabeller. NOT, AND, OR, XOR, NAND and NOR Boolska uttryck: Logiska diagram: Sanningstabell: Multiplexer En digital krets (circuit) som väljer en input från ett antal inputs baserat på kontrollsignal och skickar sedan en output. Används för att hantera flera datakällor och effektivt styra det mot en output. Minneskretsar Minneskretsar är digitala kretsar som sparar data genom att underhålla en bit (1 eller 0) över tid. De är designade som sekventiella kretsar, deras output är beroende både av nuvarande input och tidigare input. De används till RAM och andra register. Integrerade kretsar (chip) Integrerade kretsar är små silikon chip som innehåller mängder med elektroniska komponenter som transistorer, grindar och resistorer. Dessa komponenter samarbetar för att genomföra specifika funktioner. Integrerade kretsar används i nästan all modern elektronisk utrustning och kan lödas på kretskort eller placeras i socklar för att anslutas till andra komponenter. Gör enheter mindre, snabbare och effektivare CPU (processor) Hjärtat i datorn. CPUn är den viktigaste integerade kretsen i en dator. Hanterar alla huvudsakliga operationer. CPUn har ett antal pins som är kommunikationsmöjligheten med andra komponenter. All data, instruktioner och kontrollsignaler passerar genom dessa pins. Mikrodator – liten dator som använder en mikroprocessor som dess CPU. Syftet är att kunna utföra generella datorfunktioner som dataprocessering, köra applikationer och hantera in/output. Finns ofta i datorer, laptops, tablets. 4 GHz = klockningshastighet. Kan utföra 4 miljarder cykler per sekund. En högre GHz = snabbare exekvering av instruktioner. 10 kärnor = Processorn har 10 fysiska kärnor, vilket innebär att den kan hantera 10 uppgifter på samma gång. Varje kärna hanterar sin oberende uppgift. Kan användas för multitasking 20 trådar = En virtuell variant av kärnor. Hyper-threading teknik. Varje fysisk kärna kan hantera 2 trådar. Vilket innebär att processorn kan hantera 20 uppgifter samtidigt. Aritmetiska/logiska enheten (ALU) Utför aritmetiska operationer (som t.ex. addition) och logiska operationer (som AND, OR, NOT). Moderna ALU:er innehåller ofta små lagringsenheter som kallas för register. Kontrollenhet (Control Unit) Organisatören i CPU:n. Styr flödet av data och instruktioner. Innehåller ett instruktionsregister (IR) som lagrar instruktionerna som exekveras. Programräknaren (PC) sparar adressen för nästkommande instruktion som ska exekveras. CPU Fetch-Execute Cycle FETCH = CPUns control unit hämtar instruktionen från minnet DECODE = Control uniten avkodar instruktionen EXECUTE = ALUn processar datan baserat på instruktionen Denna processen upprepas kontinuerligt under hela programmets exekvering. Data Flow (BUS) Dataflödet syftar på rörelsen av data mellan olika komponenter i ett datorsystem. I ett typisk datorsystem så flödar data enligt följande: 1. Inputenhet (tangentbord) till CPU 2. CPU processar datan, hämtar instruktioner/data från minnet 3. Resultatet av processen lagras i minnet eller skickas ut till outputenhet (bildskärm) BUS = den gemensamma ledningen som förbinder alla dessa komponenter och gör det möjligt för dem att kommunicera effektivt. Minnen (RAM / ROM) Minne = ett samlingsbegrepp för lagringsenheter. Varje enhet har en unik adress. Data sparas i enheten i binär form (1 eller 0). Adressen används för att hitta och hämta datan. RAM Volatilt minne – allt försvinner när strömmen bryts Används för tillfällig lagring när program exekveras Snabba läs och skrivhastigheter (datan läses lika snabbt oavsett dessa fysiska plats i minnet). ROM Icke-volatilt minne – sparas även när strömmen brutits Lagrar permanenta instruktioner, som t.ex. firmware till systemet Data kan bara läsas, svårt om man vill skriva/ändra. Bra för inofmration som sällan behöver uppdateras men som är kritisk för operationen. Sekundärminnen HDD Disk-schemaläggningsmetoder Tre sorters disk scheduling finns. Alla är algoritmer för att lösa disk scheduling. Läs/skrivhuvudet skrivs fortsatt som läshuvudet för att spara tid. FCFS ”First Come First Serve” - FCFS behandlar begäran i den ordningen de kommer in. Tar inte hänsyn till var läs/skrivhuvudet befinner sig. Exempel: läshuvudet är på cylinder 26. Får en begäran till cylinder 49. När begäran om cylinder 49 är behandlad får den två begäran, första begäran till cylinder 91 och andra till cylinder 48. Eftersom cylinder 91 kom in först så går läshuvudet dit först oavsett att cylinder 48 är betydligt närmare. SSTF ”Shortest seek time first”. Se bild till vänster SCAN ”ingen akronym” Se bild till höger Von Neumann Arkitekturen Beskriver en dator i sin enklaste form. Innehåller nyckelkomponenter som CPU, minne, in/output och en bus. CPUn hämtar instruktioner från minnet, utför dem och skickar tillbaka resultatet till minnet Instruktionsprocessing / parallella datorsystem Seriell processering = instruktioner sker i en kö en efter den andra. Hela A processas innan B påbörjas. Pipelining = Flera instruktioner processas i olika steg, innan det första är avslutat. Så medan A process avslutas på kan B process påbörjas Parallell processering = Flera instruktioner processas på samma gång, oberoende av status på varandra Finns flera olika nivåer för parallella datorsystem. 1. Bit-level = hantera operationer beroende på bit-storlek 8,16,32,64 En 8-bitars CPU processerar 8 bitar per gång. Har du en större operation (16 bitar) måste den delas upp. Med en CPU som kan hantera större bitar kan man processera större datamängder på en gång 2. Instruktions-level= oberoende instruktioner som processeras parallellt 3. Data-level = samma instruktioner exekveras på flera dataset på samma gång Samma typ av instruktion exekveras på en mängd antal data på samma gång. T.ex. genom att blurra en bild så ger man samma instruktion som sker på en mängd pixlar på samma gång. 4. Task-level = olika uppgifter processeras av separata processorer, genom att splitta dem. Antingen genom pipelining eller på olika dataset Algoritmer Maskinkod - De instruktioner som är inbyggda i hårdvaran. - Få till antalet - De enda instruktioner som datorn ”förstår” - Representeras med en binärkod. Assemblerspråk - Ett språk som använder bokstavskoder för att representera maskinspråksinstruktioner Assembler - Ett program som läser assemblerspråk och översätter det till maskinkod Algoritmer - En algoritm = noggrann plan som anger en följd av operationer för att lösa en specifik uppgift. Kan jämföras med ett recept. - Följa en algoritm = exekvera - Designa algoritm = problemlösningsaktivitet - Algoritmer för datorer uttrycks i ett högnivåspråk som kompileras till maskinkod Pseudokod - Ett sätt att beskriva algoritmer - Man använder en blandning av kortfattade instruktioner i naturligt språk (svenska/engelska) och formatering - Bygger på att man använder varianter av det som förekommer i högnivåspråk - Fördelar: - högre nivå än maskinkod/assemblerspråk - Tydligt - någorlunda språkoberoende Kontrollstrukturer Repetition (loop) - Används för att upprepa en eller flera instruktioner While (villkor) sedan satser som ska upprepas - Bra när man inte vet hur många gånger man behöver upprepa For loop bra när man vet på förhand hur många gånger man behöver upprepa (man har en lista som man söker igenom t.ex.) Selektion (val) Selektion används för att välja om ett antal satser ska exekveras. Till exempel en IF-sats. Problemlösning 1. Förstå problemet Vad vet jag om problemet? Vilken information behöver jag hantera för att hitta en lösning? Hur ser en lösning ut? Specialfall? Hur vet jag när jag hittat en lösning? 2. Utforma en plan 3. Utför planen 4. Reflektera Divide and Conquer En generell lösningsstrategi som delar upp ett stort problem i mindre delar och löser varje delproblem Ett tydligt exempel på abstraktion Divide-and-conquer kan appliceras upprepade gånger tills varje delproblem är så litet att det är trivialt att lösa Top-down Top-down design fokuserar på de uppgifter som skall utföras Analysera problemet Förstå problemet Välj en lösningsstrategi Lista de huvudsakliga uppgifterna (detta blir huvudmodulen, s.k. Main Module) Skriv om problemet som en sekvens av uppgifter (moduler) Ge varje uppgift ett namn Skriv återstående moduler Uttryck varje abstrakt modul som en sekvens av uppgifter Ge varje uppgift ett namn Revidera efter behov Processen är klar när alla steg (moduler) är konkreta Sammansatta datatyper - En variabel som kan lagra många värden - Poster (flera värden av olika typer till en enhet) - Vektorer (flera värden av samma typ till en enhet) – En lista i Python Sekventiell sökning Sekventiell (linjär) sökning kallas när man söker element för element från första elementet i listan. Jämför med att söka efter ett visst kort i en osorterad kortlek. Det värde man söker efter brukas kalla söknyckel. Om vektorn (listan) är sorterterad ligger elementen i ordning. Då går det fortare att söka. Binär sökning Har men en sorterad lista (vektor) kan man använda binär sökning som är snabbare än sekventiell (linjär) sökning. Man börjar söka från mitten av den sorterade listan. Om det man söker är mindre än elementet i i mitten då ska man söka på samma sätt fast i den vänstra delen av listan, annars om det är större ska man söka på samma sätt i den högra delen av listan. Är binärsökning alltid bättre? - Nej, men oftast. Exempel när det är sämre är när man söker efter första elementet i en lista, då går ju sekventiell sökning snabbare. Sortering Sortering är uppgiften för att ordna element i en vektor baserat på sorteringsnyckel. Finns olika sorteringsalgoritmer Selection sort Bubble sort Insertion sort (ingår inte i föreläsningarna) Quicksort (ingår inte i kursen) Selection sort Sorterar genom att hitta det minsta elementet och placera det först, sedan det näst minsta och placera det på plats 2 och så vidare. Den gör det genom att utnyttja den tomma plats som uppstår efter att ett element har flyttats till sin rätta plats och lägger det som blivit bortputtat där. Bubble sort Liknar selection sort. Arbetar med mindre steg i platsbyten. Det minsta elementet ”bubblar upp” genom att byta plats med det intilliggande element som har fel ordning Delprogram Ett delprogram är en funktion i ett program. De värden som skickas med kallas för argument (parametrar). Delprogrammet kan också returnera ett värde. - Värdeparameter = värdet på parametern kopieras till den procedur som anropas - Referensparameter = Det som skickas är en referens till parametern Algoritmdesign – abstraktion / inkapsling Handlar om att kunna skapa återanvändbarhet. Man kan återanvända kod till olika syften i programmet. Abstrakta datatyper Kan åstadkommas med abstrakta datatyper. En abstrakt datatyp = en datatyp där både tillåten data och operationer på data specifieras oberoende av implementation Fördelar: Förenklar utveckling: Användaren av en ADT behöver inte veta hur den är implementerad, vilket gör koden enklare att skriva och förstå Flexibilitet = Implementation kan ändras utan att ändra hur man använder ADT Återanvändbarhet = Kan användas på olika platser i ett program Terminologi: Sammansatt datatyp = en datatyp där man ger ett namn till en samling av datavärden. Exempel: Vektorer / poster (listor) Datastruktur = iplementering av en av de sammansatta delarna i en abstrakt datatyp Olika språk stödjer olika datastrukturer Containers = behållare som lagrar och manipulerar andra objekt Exempel: STACK = Linjär abstrakt datatyp. Åtkomst sker endast i ena änden. Elementen hanteras SIST IN FÖRST UT (LAST IN FIRST OUT = LIFO) KÖER = Linjär abstrakt datatyp. Element läggs in i den ena änden och tas ut i den andra. Elementen hanteras FÖRST IN FÖRST UT (FIRST IN FIRST OUT = FIFO) LISTOR = Containers (behållare). Håller element. F6 – operativsystem och filhantering Batchkörning Jobb organiseras från olika källor och körs i omgångar (batch) Kategorier av program Application software – program för specifika behov Systme software – program som hanterar datorsystem på grundläggande nivå Operating system – hanterar datorns resurser, tillhandahåller ett gränssnitt, tillåter application software att interagera med datorns resurser Tidsdelningsysstem Ett system som tillåter många användare att interagera med datorn samtidigt. Skapar illusionen av att varje användare har en egen dator och behöver inte tävla om resurser. Virtuella maskiner I ett tidsdelningssystem har varje användare en egen virtuell maskin där alla resurser är tillgänliga för användning. Minnesresurser strategier Enkelt sammanhängande minnesstrategi = Simple Contiguous Memory Management Minnet blir uppdelat i två sektioner. Ett för OS och ett för andra applikationers program. Hela applikationens program laddas in i minnet. Det medför att endast ett program utöver OS:et kan processas åt gången. Strategin tilldelar en logisk adress till programmet, utifrån den logiska adressen startar sedan den fysiska adressen. För att kunna köra flera program samtidigt kan man partionerna minnet i ett antal delar. Finns fasta (fixed) partioner där minnet delas upp i ett fast antal delar i vilka program kan laddas in. Dynamiska paritioner skapar minnets delar allt eftersom det laddas in program som behöver minnesresurser. I ett partitionerat minne uppstår det olika prioriteringsval. Därför finns det algoritmer som fördelar programmet efter olika strategier. First fit = tilldelar programmet den första tillgängliga partitionen som är tillräckligt stor för att hålla den Best fit = tilldelar programmet den minsta partitionen som är tillräckligt stor för att hålla den Worst fit = tilldelar programmet den största paritionen som är tillräckligt stor för att hålla den Sid-baserat minnesstrategi = Paged memory management. Processer delas upp i fasta (lika stora) sidor (pages) och lagras i minnesramar (frames) när de laddas in i minnet. När ett program körs, laddas processens sidor (pages) in i minnets oanvända frames (ramar). Det medför att sidorna (pages) kan bli utspridda, utan synlig ordning, och blandas ihop med andra programs processer. För att hålla reda på dessa pages (sidor) har OS:et en sidtabell (page-map table PMT) för varje process i minnet. Den mappar varje sida (page) till den minnesram (frame) som det laddats in i. Den logiska adressen till programmet får en ny logisk adress beroende på sidnummer (page) och offset. Sidnummer (page) = adressen / sidstorleken (page size) [Sidstorleken är x antal B] Offset = Resten som kvarstår efter att adressen / sidstorleken. Exempel: 2566 (logisk adress i programmet) / 1024 (sidstorleken) = 2 Rest = 518 Ny logisk adress Den nya logiska adressen mappas sedan till den fysiska adressen med en sidtabell (PMT). Hur ta fram den fysiska adressen? Fysisk adress = Ramnummer (frame) * ramstorlek (frame) + offset Exempel: Om process P1 (se bild ovan i PMT) är aktiv Logisk adress = Sidnummer = 1 Offset = 222 Ramstorlek = 1024 Fysisk adress = 12 (ramnummer) * 1024 (ramstorlek) + 222 (offset) Fysisk adress = 12510 Det finns lite begrepp som är viktiga inom Sid-baserad minnesstrategi - Demand paging = sidor laddas in beroende på efterfrågan. Alla delar av ett program behöver inte vara i minnet samtidigt. Sidorna laddas in i minnet på efterfrågan (demand) - Page swap (sidbyte) = En sida i det sekundära minnet (HDD/SDD) laddas in i primära minnet (RAM), vilket ofta orsakar att en annan sida lyfts ur primärminnet till sekundärminnet. - Virtual memory = genom demand paging idén skapas illusionen att det inte finns någon restriktion på minnesstorlek för programmet, eftersom programmets hela process inte behöver finnas i minnet hela tiden. Det medför att sidor konstant byts mellan primär och sekundärminnet. - Trashing = när det uppstår överflödigt antal page swappings vilket kan kraftiga påverka systemets prestanda. CPU schemaläggning Processhantering innebär att CPUn allokerar enskilda processer. Process = program som körs. PCB (Process Control Block) sparar all information om processen från början till slut. CPUn måste avgöra vilken process i ”READY” som ska flyttas till ”RUNNING”. Flera processer kan befinna sig samtidigt it ”READY” men endast en kan vara i ”RUNNING” PROBLEMET = Man kan bara köra en process åt gången. LÖSNING = Skapa ett schema som styr prioriteringen av process-körningen Nonpreemptive scheduling – Icke förtursschema - Pågående process lämnar CPU:n frivilligt Preemptive scheduling – Förtursschema - OS ger företräde till vissa processer före andra Turnaround time - Tiden från att en process anländer till redo-läget första gången, tills den lämnar kör- läget sista gången 3 olika principer för att lösa prioriteringarna = First Come First Served Processen körs i den ordning de kommer in Shortest Job First Väljer den process som har den kortaste kör-tiden. Round Robin Varje process körs under ett specifikt tidsintervall (quantum). Sedan körs en annan process i samma tidsintervall. Om första processen inte blev klar, körs den igen. F7 – Python - Högnivåspråk - Världens mest populära / använda språk - Dynamiskt typad (behöver inte ange datatyp för variabler) - Kodblock anges med indentering Utvecklingsmiljöer = IDE - Exempel är: PyCharm, Replit, VCS i = heltal f = float b = booelska uttryck (sant/falskt) s = strängar (text) # kommentarer Multipel tilldelning = tilldela flera värden till variabler samtidigt Sekvenstyper = listor. Enskilda värden i en lista = element Operatorn %kan användas för att formatera utskrifter Funktionsdefinitioner börjar med def, följt av funktionens namn, och parameterlista (). F8 – Tillämpningar AI introducerades av Jon McCarthy 1955. Definierades då som ”The science and engineering of making intelligent machines” Turingtestet Alan Turing 1950 Ett empiriskt test för att avgöra om en dator har uppnåt intelligens. Ingen dator har hittils klarat testet. Aspekter av AI Svaga AI hypotesen = att maskiner agerar intelligent (agerar som om de vore intelligenta) Starka AI hypotesen = att maskiner faktiskt tänker (och inte simulerar tankeverksamhet) En av de svåraste utmaningarna för AI är att representera den kunskap som datorn måste ha för att uppträda intelligent. Naturligt språk är bra för beskrivninga, men dåkigt för automatiserad processering. Inom AI används två ansatser för detta. Semantiska nätverk - En teknik för kunskapsrepresentation som fokuserar på samband mellan objekt. Presenterar kunskap med en riktad graf Sökträd - Ett sökträd representerar olika alternativa vägar för tillståndet i en problemlösningssituation - För komplicerade operationer, typ Schack, blir sökträdet ohanterligt stort. Det hanteras genom att endast generera en liten del av trädet. Kallas för att ”beskära” trädet (pruning). Man klipper bort grenar baserat på värdering av noderna. Depth / breadth first Expertsystem - Ett kunskapsbaserat system som använder en särskild informationsmängd, från vilken den tar fram och processar olika delar. - I ett expertsystem kommer informationsmängden från kunskap ifrån mänskliga experter. - Regelbaserat system. Artificiella Neurala Nätverk (ANN) - Representerar en imitiation av det neurala nätverket i en mänsklig hjärna - Fungerar ofta, inte alltid, genom att lära sig mönster/samband genom att observera output av speciella inputs - Brett användningsområde: - Självkörande bilar - Beslutssystem - Mönsterigenkänning - Data mining Neuron Neuronen i hjärnan skickar och tar emot kemiskt baserade elektriska signaler. Nervbanan består av sammankopplade neuroner i sekvens. Kopplingarna (synaps) har olika styrka. En neuron kan ta emot många input men synapsen viktar respektive input. Varje processerande enhet i ett ANN liknrar en neuron. Enheterna tar emot att antal input och producerar ett enda output. Varje input har en vikt. Träning av ANN Enheterna ligger i olika lager (oftast 3). Beroende på vilken input lär sig mittenlagret ett mönster som passar för outputen. Man anger input och output och då räknar mittenlagret ut hur man kartlägger värdena tillsammans. Man justerar vikten och tröskelvärden så får man önskad output. NLP – Natural Language Processing Hur maskiner ska hantera språk. Om vi vill kommunicera fritt med datorerna behövs: - Input (taligenkänning) Voice recognition - Process – förstå naturligt språk - Output – Talsyntes – skapa tal med dator Talsyntes – dynamisk eller inspelat tal Inspelat = vanligast för telefontjänster/anrop Använder inspelningar av ett stort antal ord som sätts ihop till meddelanden Dynamisk = datorn uttalar bokstäverna och försöker vokalisera Taligenkänning – problematiskt Varje människa låter unikt Lexikal tvetydighet = ord har flera betydelser Syntaktisk tvetydighet = meningar kan konstrueras på olika sätt Referens tvetydighet = pronomen kan referera till olika objekt Maskinöversättning – man får sammanhanget men inte alla nyanser Robotik Mobila robotar rör sig i förhållande till sin miljö. En tidig ansats för ”Sense-Plan-Act” SPA. Man delar upp robotens värld till olika delar. Varje del får en uppsättnings regler. Alla regler tillämpas med en viss prioritering. Prioriteringarna är grunden för att lösa konflikter. Simulering Simulering är utvecklingen av en modell av komplext system. Görs med system som är dynamiska, interkativa och komplicerade. En modell är en abstraktion (döljer komplexitet). Alltså gör en simulering en abstraktion av det verkliga systemet. BI / Data Mining BSS = Beslutsstödssystem. BI = ett typ av BSS. Data Mining skapar modeller som används för BI. F9 – Nätverk Klient/server-modellen Protokoll = Regler som definierar HUR data formateras och bearbetas på ett nätverk. Filserver = Dator som lagrar och hanterar filer för många användare på ett nätverk. Webbserver = Dator som svarar på förfrågningar från webbläsare eller webbsidor Peer 2 Peer P2P modell är decentraliserat sätt som delar resurser och ansvar mellan datorer Nätverkstyper (LAN, MAN,WAN) LAN = Samling av enheter som är anslutna tillsammans på en fysisk plats. Ringtopologi = Loopkoppling Stjärntopologi = Alla noder går genom en centrum-nod Busstopologi = Noderna är kopplade via en gemensam linje Ethernet = Busstopologi för LAN Gateway = Enhet som hanterar kommunikation mellan LAN och andra nätverk MAN = Infrastruktur för kommunikation runt stora städer WAN = Nätverk som kopplar ihop flera LAN över en större geografisk yta Ethernet Mest populära fysiska lagerteknik för LAN som används idag. Bra balans mellan kostnad och överföringshastighet Internet Internet = ett WAN som täcker hela världen Backbone = Internets ryggrad. Ett antal höghastighetsnätverk som bär internettrafik. ISP = internet Service Provider. Företag som tillhandahåller åtkomst till internet. Internatanslutningar Telefonmodem = Konverterar digitaldata till analog ljudsignal och skickas över telefonledningar. Modularisering – Demodularisering DSL = Använder också telefonledningar, men skickas på en annan frekvens än modemsignalerna. Kabelmodem = Använder samma kabel som kabel-tv. Bredband = Över 768 kbit/s. DSL och kabelmodem är bredband Packet switching Paket = en liten samling data som sänds på ett nätverk Router = nätverksenhet som styr paket mellan nätverk mot slutdestinationen Packet switching = meddelanden delas upp i numrerade paket med fasta storlek, paketen styrs individuellt mot sin destination, där dom plockas ihop igen Circuit switching = en dedikerad kommunikationsväg mellan två stationer (end-to-end) Open systems Proprietära system = system som använder en teknik som ett privat kommersiellt företag har Interoperabilitet = möjligheten att kommunicera mellan hård/mjukvara från olika leverantörer Öppna system = system baserade på en gemensam modell av nätverksarkiktektur (OSI) Protokollager / OSI modellen Applikationslager förbereder data som ska överföras. Flyttas ner i lagrena successivt. OSI-modellen OSI-modellen är framtagen av organisationen ISO. Används för att säkerställa att datorsystem av olika tillverkare kan kommunicera med varandra. OSI Reference Model består av 7 lager. Varje lager behandlar ett specifikt lager av nätverkskommunikation. Det högsta lagret hanterar problem närmast applikationsprogrammet. Det lägsta lagret hanterar det mest grundläggande elektriska och mekaniska aspekten, t.ex. kabeln. Alla lager däremellan fyller ut de övriga syftena. Nätverksprotokoll Nätverksprotokoll = liggger ovanpå varandra. Högre i hierarkin bygger på de underliggande protokollen. Kallas ibland för protokollstack TCP = Transfer Control Protocol - Delar upp data i paket - Hanterar överföringen av paket mellan datorer - Skickar med kontrollsumma för felspårning IP = Internet Protocol - Definierar HUR paket ska bildas - Innehåller destinationsadress ”unik” SMTP = Mailprotokoll FTP = Fildelningsprotokoll http = web-sidorprotokoll Port = Virtuell ingång till datorn. Protokoll har en definierad port som de kommunicerar via. UDP = Ett snabbt men inte lika tillförltiligt alternativ till TCP Ping = kan man se om en specifik dator är nåbar på ett nätverk Traceroute = visar vilken väg paket tar över internet Brandväggar Brandvägg = kan vara hård/mjukvara. Filtrerar datatrafiken. Policy för åtkomstkontroll = regler som org sätter upp, bestämmer vilken trafik som tillåts på nätverket. Packet Filtering Gateway = Varje paket kontrolleras och tillåts/blockeras beroende på regler Stateful Inspection Firewall = Paket analyseras i sitt sammanhang, inte specifikt varje paket Application Proxy = Övervakar kommandon genom att simulera deras effekt i en sandbox. Guard = sofistikerad brandvägg som sammanfattar saker ovanför Personal firewalls = programvara som fungerar som en Guard Nätverksadresser IP-adress – numerisk adress. Unik identifikation av en dator på internet. Består vanligtvis av 4 stycken 8-bitarstal med punkter. IPv4 – 32 bitar IPv6 – 128 bitar Nodnummer = den de av ip-adressen som pekar ut en specifik enhet på nätet Nätmask = anger hur stor del av ip-adressen som används för nätverket Webbadresser – URL http:// protokoll www.hb.se – www. är värddatornamn host name hb.se – domännamn.se toppdomän TLD /directory – sökväg till del av hemsidan Alltihopa = URL Domänadressen översätts till IP-adresser genom DNS. Finns DNS-servrar som omvandlar namn till IP-adress.