Movatterモバイル変換


[0]ホーム

URL:


Spring til indhold
WikipediaDen frie encyklopædi
Søg

Computerprogram

Fra Wikipedia, den frie encyklopædi
For alternative betydninger, seProgram.
Denne artikel bør gennemlæses af en person med fagkendskab for at sikre den faglige korrekthed.
Et diagram, der viser hvordanbrugeren (engelskUser) interagerer medapplikationssoftware, på en typiskcomputer. Applikationssoftwarens lag deler grænseflade medstyresystemet (engelskOperating System), som igen kommunikerer med hardware. Pilene indikerer datastrømme.

Et stykkecomputersoftware eller korteresoftware også kaldetprogrammel, udgøres af et eller flerecomputerprogrammer.[1] Et computerprogram eller kortereprogram er en samlingprocessorinstruktioner[2] som sættercomputeren i stand til at løse en bestemt opgave.[3] Dette er i kontrast tilfysisk hardware, af hvilken systemet er bygget og faktisk udfører arbejdet. Indenfordatalogi ogsoftwareudvikling omfatter software computerprogrammer,systemprogrammer,hjælpeprogrammer,programbiblioteker og relaterede ikke-udførbare data, såsomonline dokumentation ellerdigitale lagringsmedier. Computerhardware og software forudsætter hinanden og ingen af dem kan realistisk set anvendes alene.

det laveste programmeringsniveau haves udførbar kode bestående afmaskinsprogsinstruktioner, derafvikles af en individuelprocessor — typisk encentral processing unit (CPU) eller engraphics processing unit (GPU). Et maskinsprog består af grupper afbinære værdier, som indikerer processorinstruktioner, der under afvikling ændrer computerens tilstand fra den forgående tilstand. Fx kan en instruktion ændre værdien lagret i et bestemt lagerposition i en computer — en effekt som ikke direkte kan observeres af en bruger. En instruktionkan også udføre et kald; fx en af de mangeinput- eller output-operationer, fx udlæse nogettekst på en computervisningsenhed; hvilket viser en tilstand som er synlig forbrugeren. Processorenafvikler instruktionerne i den rækkefølge de modtages, medmindre processoren instrueres i at"hoppe" til en anden instruktion, eller bliverinterruptet afstyresystemet.Pr. 2015 har de flestePCere,smartphone enheder ogservereprocessorer med flere processorkerner.

Det meste software skrives ihøjniveauprogrammeringssprog. Højniveauprogrammeringssprog er lettere og mere effektive forprogrammører ogsoftwareudviklere, fordi de er tættere pånaturlige sprog end maskinsprog.[4]Højniveauprogrammeringssprog oversættes til maskinsprog ved at anvende encompiler eller enfortolker - eller en kombination af begge. Software kan også skrives i et lavniveauassemblersprog, som har en stærk korrespondance til computerens maskinsprogsinstruktioner og bliver oversat til maskinsprog ved at anvende enassembler.

Historie

[redigér |rediger kildetekst]

En skitse (algoritme) for hvad som kunne have været det første stykke skrevne software, blev skrevet afAda Lovelace i det19. århundrede, for den planlagteAnalytical Engine.[5] Ada Lovelace lavedematematiske beviser for at vise hvordan maskinen ville beregneBernoulli-tal.[5] Grundet beviserne og algoritmen, betragtes Ada Lovelace som den første computerprogrammør.[6][7]

Den første teori om software — før skabelsen af computere som vi kender dem i dag — blev foreslået afAlan Turing i hans 1935 artikelOn Computable Numbers, with an Application to the Entscheidungsproblem (decision problem).

Alan Turing teori ledte senere til oprettelsen af det akademiske områdedatalogi ogsoftwareudvikling; begge områder udforsker software og dens tilblivelse.

Før 1946 var software ikke endnu programmer lagret idigital hukommelse, som vi kender det i dag. De første elektroniske computerenheder blev hardwired og om-hardwired for at "omprogrammere" dem.

Typer

[redigér |rediger kildetekst]

På stort set alle computerplatforme kan software grupperes i nogle få brede kategorier.

Formål eller domænebrug

[redigér |rediger kildetekst]

Baseret på målet, kan computersoftware inddeles i:

  • Applikationssoftware - som er software, der anvender computersystemet til at yde specielle funktioner eller ydeunderholdningsfunktioner udover de computerens grundlæggende operationer. Der er mange forskellige typer af applikationssoftware, fordi arbejdsopgaveområdet, en moderne computer kan yde er så stor.
  • Systemsoftware - som er software til at forvaltecomputerhardware opførsel, som at tilbyde grundlæggende funktionaliteter, der er ønsket af brugere, eller for andet software for at køre ordentligt, hvis overhovedet. Systemsoftware bliver også designet til at yde en platform til at køre applikationssoftware[8] og inkluderer følgende:
    • Styresystemer - som er vigtige samlinger af software til at håndtere resurser og yde fælles services for andet software som kører "ovenpå" dem.Overvågningsprogrammer,bootloadere,shells ogskrivebordsmiljøer er dele af styresystemets kernekomponenter. I praksis er et styresystem udstyret med yderligereforinstalleret software (inklusiv applikationssoftware) så en bruger har mulighed for at arbejde på en computer, der kun har et styresystem.
    • Device drivere - som betjener eller styrer en bestemt type enhed, som er koblet til en computer. Hver enhed behøver mindst én korresponderende device driver; fordi en computer typisk har minimum en input-enhed og mindst en output-enhed, behøver en computer typisk mere end en device driver.
    • Hjælpesoftware - hvilket er software designet til at assistere brugere med vedligeholdelse af deres computere.
  • Skadelig software ellermalware - hvilket er software, der er udviklet til at skade og forstyrre computere. Derfor er malware uønsket. Malware er tæt associeret med computer-relaterede forbrydelser, selvom nogle skadelige programmer kan være designet til at værepractical jokes.

Naturlig kørsel eller kørselsdomæne

[redigér |rediger kildetekst]
  • Skrivebordsapplikationer såsomwebbrowsere ogMicrosoft Office, såvel somsmartphone ogtablet applikationer (kaldet "mobilapps"). (Der er en vinkling i nogle dele af softwareindustrien, i en vis udstrækning, til at sammenflette skrivebordsapplikationer med mobilapps.Windows 8 og senereUbuntu Touch, prøvede at tillade den samme applikation layout grænseflade til at blive anvendt på desktops, laptops og mobiler.)
  • JavaScript-scripts er stykker af software som traditionelt bliver indlejret iwebsider, der køres direkte indeniwebbrowseren, når en webside hentes uden behovet for en webbrowserudvidelse. Software skrevet i andre programmeringssprog, kan også køres indeni webbrowser, hvis software er enten oversat til JavaScript eller hvis en webbrowserudvidelse, der understøtter sproget er installeret; det mest almindelige eksempel på det sidste erActionScript-scripts, som understøttes afAdobe Flash-udvidelsen.
  • Serversoftware, inklusiv:
  • Plugins og udvidelser er software som udvider eller modificerer funktionaliteten af andre stykker af software, og forudsætter at softwaren anvendes for at fungere;
  • Indlejret software opholder sig somfirmware iindlejrede systemer, enheder dedikeret til en specielt brug eller nogle få anvendelser såsombiler ogfjernsyn (selvom nogle indlejrede enheder såsom trådløsechipsetsselv kan være del af en ordinær, ikke-indlejret computersystem såsom en PC eller smartphone).[9] I indlejrede system sammenhænge er der nogle gange ikke en klar forskel mellem systemsoftware og applikationssoftware. Men nogle indlejrede systemer kørerindlejrede styresystemer og disse systemer bibeholder faktisk forskellen mellem systemsoftware og applikationssoftware (selvom der typisk kun er én fast applikation som altid kører).
  • Mikrokode er en speciel, relativ uigennemskuelig type af indlejret software som instruerer processorselv hvordan maskinkode skal køres, såmikrokode er faktisk på et lavere niveau end maskinkode.

Programmeringsværktøjer

[redigér |rediger kildetekst]

Programmeringsværktøjer er også software i form af programmer eller applikationer somsoftwareudviklere (også kendt somprogrammører, kodere,hackere ellersoftwareingeniører) anvendes til at skabe,debug,vedligeholde (fx forbedre eller rette) eller andensupport software.

Software skrives i et eller flere programmeringssprog; der eksisterer mange programmeringssprog, og hver har mindst en implementering, hver består af sit egne mængder af programmeringsværktøjer. Disse programmeringsværktøjer kan være relativt selvtilstrækkelige programmer såsomoversættere,debuggere,fortolkere,linkere ogteksteditorer, som kan kombineres sammen til at være et job; eller de kan udgøre etintegreret softwareudviklingsmiljø (IDE), som kombinerer meget eller al funktionalitet af sådanne selvtilstrækkelige programmeringsværktøjer. IDEs kan gøre dette ved at kalde de relevante individuelle værktøjer eller ved at genimplementere deres funktionalitet på en ny måde. En IDE kan gøre det lettere at gøre specifikke opgaver, såsom søgning i filer i et bestemt programmeringsprojekt. Mange implementeringer af programmeringssprog tilbyder denne mulighed ved at anvende både individuelle programmeringsværktøjer eller en IDE.

Emner

[redigér |rediger kildetekst]

Brugere ser ofte ting på en anden måde end programmører. Mennesker, som anvender moderneuniverselle computere (i modsætning tilindlejrede systemer,analoge computere ogsupercomputere), ser typisk tre softwarelag som udfører forskellige former for opgaver: platform, applikation og brugersoftware.

  • Platformssoftware -platformen omfatterfirmware,device drivere, etstyresystem og typisk etgrafisk brugergrænseflade som, samlet, tillader en bruger at interagere med computeren og densydre enheder. Platformssoftware er ofte forindstalleret på computer. På enPC vil man typisk have muligheden for at ændre platformssoftware.
  • Applikationssoftware -applikationssoftware eller applikationer er hvad de fleste mennesker tænker på når de tænker på software. Typiske eksempler omfatter kontorpakker og videospil. Applikationssoftware købes ofte separat fra computerhardwaren. Nogle gange er applikationer solgt med computer, men det ændrer ikke ved det faktum at applikationer kører som uafhængige applikationer. Applikationer er sædvanligvis uafhængige programmer fra styresystemet, selvom de ofte skræddersys til specifikke platforme. De fleste brugere tænker på compilere, databaser og andet "systemsoftware" som applikationer.
  • Brugerskreven software -slutbrugerudvikling skræddersyr systemer til at opfylde brugernes specifikke behov. Brugersoftware omfatterregnearkskabeloner ogtekstbehandlingsskabeloner. Selvemail-filtre er en form for brugersoftware. Brugere skaber selv denne software og glemmer ofte hvor vigtig det er. Afhængig af hvor kompetent brugerskreven software er blevet integreret i standard applikationspakker, vil mange brugere ikke være opmærksom på hvad der den oprindelige applikationspakker og hvad som er blevet tilføjet af fxkollegaer,superbrugere ellerit-folk.
UddybendeUddybende artikel:Kørsel (datalogi)

Computersoftware skal "lægges" ind icomputerens datalager (såsomharddisken ellerhukommelsen). Når softwaren én gang er lagt på datalageret, er computeren i stand til atkøre ellerudføre softwaren. Dette omfatter at mediereprocessorinstruktioner fra applikationssoftware, gennem systemsoftware, til hardwaren som i sidste ende modtager instruktioner sommaskinkode.

Kvalitet og pålidelighed

[redigér |rediger kildetekst]

Softwarekvalitet er meget vigtig, specielt forkommerciel software og systemsoftware som fxMicrosoft Office,Microsoft Windows ogLinux. Hvis softwaren er fejlbehæftet, kan den forårsage at en brugers arbejde mistes (slettes), software computernedbrud og have andre utilsigtede virkninger. De fleste af sådanne fejl findes via "softwareaflusning", og denne proces udføres underalfatestning ogbetatestning.

Ifølge USAsCISA-chef Jen Easterly er dårlig softwarekvalitet skyld i verdenscybersikkerhedsproblemer.[10][11] CISA anbefaler atsoftwareudviklere skriver deres programmer i hukommelsessikre programmeringssprog som fxRust,Python,C#,Go,Swift ellerJava - især Rust fremhæves som et godt hukommelsessikkert programmeringssprog.[12][13] USAsDARPA foreslår at konvertereC-kode til Rust-kode viamaskinlæring. Projektet kaldesTRanslating All C TO Rust - kort TRACTOR.[14]

UddybendeUddybende artikel:Softwarelicens

En softwarenslicens giver brugeren retten til at anvende softwaren i et licenseret miljø - og i tilfældet affrie software licenser, har man også andre rettigheder som fx at lave kopier.

Proprietær software kan inddeles i to typer:

  • freeware, hvilket omfatter kategorien af "fri prøve" software eller "freemium" software (tidligere blev termenshareware ofte anvendt for fri prøve/freemium software). Som navnet indikerer, kan freeware anvendes frit - og i tilfældet fri prøve eller freemium software, er det nogle gange kun sandt for en begrænset tidsperiode - eller med begrænset funktionalitet.
  • software tilgængelig for etgebyr, ofte ukorrekt navngivet "kommerciel software", kan kun legalt anvendes ved køb af en licens.

Open source software (det vil sige atkildekoden er frit tilgængelig) kommer i minimum to varianter:

UddybendeUddybende artikel:Softwarepatent

Softwarepatenters formål, er ligesom andre typer af patenter, teoretisk tænkt til at give opfinderen en eksklusiv, tidsbegrænset licens for endetaljeret idé (fx en algoritme) på hvordan noget implementeres et stykke software. Idéer for brugbare ting som software kangøre, og brugerkrav, er ikke tænkt til at være patentérbare og konkrete implementeringer (fx den aktuelle softwarepakke der implementerer patentet) er heller ikke ment til at være patentérbare - det sidste tilfælde er allerede typisk automatisk dækket afcopyright. Så softwarepatenter er ment til at dække området mellem krav og konkrete implementeringer.

Design og implementering

[redigér |rediger kildetekst]
UddybendeUddybende artikler:SoftwareudviklingogComputerprogrammering

Design og implementering af software er afhængig af kompleksiteten af softwaren. Fx, design og skabelse afMicrosoft Word tog meget længere tid end tiden for design og udvikling afMicrosoft Notepad, fordi det sidstnævnte har meget simplere funktionalitet.

Software er sædvandligvis designet og skabt (også kendt som kodet/skrevet/programmeret) iintegrerede softwareudviklingsmiljøer (IDE) som fxEclipse,IntelliJ ogMicrosoft Visual Studio, som kan simplificere processen ogcompilere softwaren (hvis muligt). Som tidligere nævnt, skabes software typisk ovenpå eksisterende software ogapplication programming interface (API) som det underliggende software tilbyder som fxGTK+, JavaBeans ellerSwing. Biblioteker (APIs) kan kategoriseres efter deres formål. Fx,Spring Framework anvendes til at implementereenterprise applikationer,Windows Forms biblioteket anvendes til at designe grafisk brugergrænseflade (GUI) applikationer som fxMicrosoft Word - ogWindows Communication Foundation anvendes til at designewebservices. Når et program er designet, støtter det sig APIen. Fx, en Microsoft Windows skrivebordsapplikation kan kalde API-funktioner i.NET Windows Forms library som fxForm1.Close() ogForm1.Show()[15] til at lukke eller åbne applikationen. Uden disse APIer, skal programmøren selv programmere alle disse funktionaliteter. Selskaber som fxOracle ogMicrosoft tilbyder deres egne APIer så mange applikationer bliver skrevet ved at anvende deresprogrambiblioteker som typisk har talrige APIer i sig.

Datastrukturer såsomhashtabeller,tabeller ogbinære søgetræer ogalgoritmer såsomquicksort, kan være nyttige ved skabelsen af software.

Computersoftware har specielle økonomiske kendetegn som gør dets design, skabelse og distribution forskellig fra de fleste andre økonomiske varer.[16][17]

En person som skaber software kaldes for enprogrammør,softwareingeniør ellersoftwareudvikler, termer som alle har omtrent samme betydning. Mere uformelle termer for programmører eksisterer også såsom "koder" og "hacker" selvom brug af sidstnævnte term kan skabe forvirring, fordi det oftere anvendes til at betydenogen som illegalt bryder ind i computersystemer.

Industri og organisationer

[redigér |rediger kildetekst]

Der er en stor diversitet af softwarefirmaer og programmører i verden og de udgør ensoftwareindustri. Software kan faktisk være en meget profitabel industri:Bill Gates, medgrundlæggeren afMicrosoft var den rigeste person i verden i 2009, mest grundet hans ejerskab af mange aktier i Microsoft, selskabet som er ansvarlig forMicrosoft Windows ogMicrosoft Office softwareprodukterne - begge markedsledende i deres respektive produktkategorier.

Almennyttige softwareorganisationer omfatterFree Software Foundation,GNU Project ogMozilla Foundation. Softwarestandard organisationer som fxW3C,IETF udvikler anbefalede softwarestandarder såsomXML,HTTP ogHTML, så software kan haveinteroperabilitet ved at understøtte disse standarder.

Andre velkendte store softwareselskaber omfatter Facebook,Instagram,Apple,Google,IBM,HCL Technologies,Oracle,Novell,SAP,Symantec,Adobe Systems ogAmazon, mens små selskaber ofte yderinnovation.

Se også

[redigér |rediger kildetekst]
Søsterprojekter med yderligere information:

Kilder/referencer

[redigér |rediger kildetekst]
  1. "ordnet.dk: software".Arkiveret fra originalen 16. februar 2021. Hentet 26. maj 2019.
  2. "læs mere hos Copenhagen Software".Arkiveret fra originalen 16. marts 2021. Hentet 11. marts 2021.
  3. "ordnet.dk: computerprogram".Arkiveret fra originalen 16. februar 2021. Hentet 26. maj 2019.
  4. "Compiler construction".Arkiveret fra originalen 2. november 2013. Hentet 24. maj 2019.
  5. 12Evans 2018, s. 21.
  6. Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage and the creation of the 1843 'notes'".Annals of the History of Computing.25 (4): 16-26.doi:10.1109/MAHC.2003.1253887.ISSN 1058-6180.
  7. "Ada Lovelace honoured by Google doodle".The Guardian. 10. december 2012.Arkiveret fra originalen 25. juni 2013. Hentet 25. november 2018.
  8. "System Software". The University of Mississippi. Arkiveret fraoriginalen 30. maj 2001. Hentet 24. maj 2019.
  9. "Embedded Software—Technologies and Trends". IEEE Computer Society. maj-juni 2009.Arkiveret fra originalen 28. oktober 2013. Hentet 6. november 2013.{{cite web}}: CS1-vedligeholdelse: Dato-format (link)
  10. 2024-09-20, version2.dk: USA’s cyberchef: Dårlige software-udviklere er den største trussel mod sikkerheden. CISA-chefen Jen Easterly skoser teknologileverandører for at levere produkter med indbyggede sikkerhedsproblemer, der åbner dørene for cyberangreb,backup Citat: "...»Vi har ikke et cybersikkerhedsproblem – vi har et softwarekvalitetsproblem. Vi har ikke brug for flere sikkerhedsprodukter – vi har brug for mere sikre produkter,« sagde chefen for den amerikanske cybersikkerhedsmyndighed CISA (Cybersecurity and Infrastructure Security Agency) Jen Easterly på en konference onsdag ifølge The Register. »Sandheden er: Teknologileverandører er de personer, der bygger problemer« ind i deres produkter, som derefter »åbner dørene for skurke, så de kan angribe deres ofre.«..."
  11. 2024-09-20, theregister.com: CISA boss: Makers of insecure software are the real cyber villains. Write better code, urges Jen Easterly. And while you're at it, give crime gangs horrible names like 'Evil Ferret',backup
  12. 28 Jun 2024, theregister.com: CISA looked at C/C++ projects and found a lot of C/C++ code. Wanna redo any of it in Rust? So, so many lines of memory-unsafe routines in crucial open source, and unsafe dependencies,backup Citat: "...Memory-safe languages, like C#, Go, Java, Python, Rust, and Swift, handle memory management for the developer, reducing the opportunity to make memory errors...The 2015 stable release of Rust, a language with strong memory-safety guarantees, gave tech firms a non-aligned systems language they could use to avoid the problems with memory-unsafe code. The competitive implications of adopting languages with strong corporate associations, like C# (Microsoft), Go (Google), Swift (Apple), or Java (Oracle) may have helped make Rust more appealing. But it took a few years for Rust to mature and catch on..."
  13. June 26, 2024, cisa.gov: Exploring Memory Safety in Critical Open Source Projects,backup Citat: "...We encourage others to build on this analysis to further expand our collective understanding of memory-unsafety risk in OSS, evaluate approaches—such as targeted rewrites of critical components in memory-safe languages—to reducing this risk, and to continue efforts to drive risk-reducing action by software manufacturers. For those considering further investment in memory safe programming practices, we recommend two references:The Case for Memory Safe Roadmaps and the December 2023 report on memory safety by theTechnical Advisory Council of CISA’s Cybersecurity Advisory Committee.37..."
  14. 3 Aug 2024, theregister.com: DARPA suggests turning old C code automatically into Rust – using AI, of course. Who wants to make a TRACTOR pull request?,backup Citat: "...The term stands for TRanslating All C TO Rust. It's a DARPA project that aims to develop machine-learning tools that can automate the conversion of legacy C code into Rust. The reason to do so is memory safety. Memory safety bugs, such buffer overflows, account for the majority of major vulnerabilities in large codebases. And DARPA's hope is that AI models can help with the programming language translation, in order to make software more secure..."I think all languages are about trade-offs, but certainly at the kernel-level it makes sense to move part of the code to Rust," he said..."
  15. "MSDN Library".Arkiveret fra originalen 11. juni 2010. Hentet14 juni 2010.
  16. v. Engelhardt, Sebastian (2008)."The Economic Properties of Software".Jena Economic Research Papers.2 (2008-045).Arkiveret fra originalen 5. januar 2016. Hentet 24. maj 2019.
  17. Kaminsky, Dan (1999)."Why Open Source Is The Optimum Economic Paradigm for Software".Arkiveret fra originalen 22. maj 2012. Hentet 24. maj 2019.

Eksterne henvisninger

[redigér |rediger kildetekst]
Autoritetsdata
Hentet fra "https://da.wikipedia.org/w/index.php?title=Computerprogram&oldid=12078177"
Kategorier:
Skjulte kategorier:

[8]ページ先頭

©2009-2025 Movatter.jp