Datorprogram

Från Wikipedia, den fria encyklopedin
Hoppa till navigation Hoppa till sökning

Ett datorprogram eller program för korta, är en sekvens av instruktioner (som består av deklarationer och instruktioner ) som överensstämmer med reglerna för ett visst programmeringsspråk i syfte att bearbeta eller lösa vissa funktioner eller uppgifter eller problem med hjälp av en dator . [1]

Översikt

'Datorprogram', sammanhang av termer och synonymer som används vid språkligt bruk

Ett datorprogram tillhör en dators programvara . Det är vanligtvis på en databärare som en körbar programfil , ofta i den så kallade maskinkoden , som laddas in i datorns huvudminne för körning. Programmet bearbetas som en sekvens av maskinkommandon, dvs processorkommandon, av datorns processor (er) och körs således. Datorprogram förstås också som källkoden för programmet från vilket den körbara koden skapas under programutveckling .

En programfil, som består av maskinkod, innehåller kommandon från processorns ordförråd, det vill säga kommandon som är "begripliga" för processorn och därför kan köras. Skapandet av ett sådant program kallas i allmänhet för programmering eller implementering . Under de första dagarna av programmeringen - fram till utvecklingen av programmeringsspråk - utfördes programmeringen uteslutande i maskinkod. Programmet eller källtexten som programmeraren har skrivit på ett programmeringsspråk består av en sekvens av instruktioner (mestadels hämtade från engelska språket) som i allmänhet är lättare för programmeraren att förstå (t.ex. ADD, SUB, AND, OR) än maskinen koda. Senare kompletterade loopar, abstraktion och modulstruktur de högre programmeringsspråken .

Filer där programkoden är lagrad identifieras vanligtvis med ett filtillägg. Källtextfiler indikerar alltså det högnivåspråk som används ( <program> .c : ett program formulerat i C ). Det kan generellt redigeras med en enkel textredigerare. En fil som innehåller maskinkod har däremot ingen förlängning eller en som är specifik för operativsystemet och bara anger att den kan köras ( <program>. Exe för MS-DOS och Windows ; <program> för Unix system). Det kan ofta kallas upp som ett kommando i en terminal ( kommandotolk ). Se även programbibliotek .

För att ett program skrivet på ett högnivåspråk ska köras på en processor måste det översättas till maskinkod. En instruktion i ett programmeringsspråk på hög nivå översätts i allmänhet till flera maskininstruktioner. Översättningsprocessen kallas kompilering . En assembler , kompilator eller tolk krävs för att generera maskinkoden från källtexten. Detta översätter instruktionerna för programmeringsspråket, som ska vara begripligt och redigerbart för mänskliga användare, till de semantiskt motsvarande kommandona för maskinspråket på den dator som används.

Instruktionerna som (som en del av program) representerar en konkret lösning kallas algoritmer ; Exempel: Beräkning av moms.

I parlance, är ett datorprogram vanligtvis förkortat till program eller termen programvara används. Datorprogram är dock inte en synonym för programvara ; 'Programvara' är snarare en samlad it -term för icke -hårdvara, till exempel för ett operativsystem , databas eller för en komplett IT -applikation som är klar för användaren - som kan innehålla komponenter som grafik och ljudfiler , teckensnitt , hjälptexter, etc.

Ett större datorprogram består vanligtvis av flera moduler - som antingen tillhör själva programmet eller som används som byggstenar ( delprogram ) från befintliga programbibliotek när programmet körs. I motsatt fall kan datorprogram vara en del av ett applikationssystem på högre nivå som täcker ett större ansvarsområde; Exempel: lönehantering, ekonomisk redovisning, rapportering .

Utvecklingen av datorprogram är programteknikens område . Beroende på komplexiteten hos de datorprogram som ska utvecklas görs detta i samband med projekt . Parternas aktiviteter använder därmed vanligtvis processmodeller , speciella metoder och verktyg som är utformade för mjukvaruutveckling.

Klassificeringsalternativ

Förutom de särdrag som i allmänhet gäller för programvara kan datorprogram (som en undervariant av programvara) differentieras enligt följande kriterier, ges som exempel:

  • Källprogram (i ett visst programmeringsspråk ) eller maskinprogram (körbara under vissa operativsystem ) eller program i en mellanliggande kod
  • Huvudprogram (kallas via operativsystemkommandon) eller underprogram (kallas av andra program). Särskilda former uppstår när program t.ex. B. kan anropas via tekniska kontrollkomponenter, z. B. via serviceinriktade arkitekturer , automatiserad arbetsflödeshantering .
  • Batchprogram (bearbeta 'batchar' med data) eller dialogprogram (interagera med användare)
  • Beroende på plats för lagring och programkörning kan program sparas och köras lokalt (på en arbetsstationsdator) eller installeras på en server och fortfarande köras lokalt (efter laddning via en online -anslutning) eller bara sparas på servern och det finns också avrättade. När det gäller distribuerade applikationer körs delar av programmet på olika datorer, t.ex. B. affärslogik och datalagring i servern, funktioner i användargränssnittet på den lokala datorn. I rent teknisk mening är olika program kopplade till varandra.

berättelse

Ada Lovelaces första datorprogram

Världens första datorprogram är en regel för beräkningen av Bernoulli -tal , som Ada Lovelace skapade åren 1842/1843 för den mekaniska analysmotorn av Charles Babbage . På den tiden kunde programmet bara utföras för hand, eftersom det inte fanns någon fungerande maskin som kunde göra detta på 1800 -talet.

Första program på hålband

Mellan 1936 och 1941 konstruerade Konrad Zuse datorerna Z1 och Z3 , som bearbetade långa kommandosekvenser på ett hålband , de första datorprogrammen som kunde köras på riktiga maskiner. Datorerna behärskade de fyra grundläggande aritmetiska operationerna och kvadratrotsberäkningarna på binära flytande punktnummer ; det hålade bandet innehöll var och en en aritmetisk operation och en minnesadress.

Det första programmeringsspråket Plankalkül på hög nivå går också tillbaka till Zuse. Detta gör att problem kan formuleras oberoende av maskinen och senare konverteras till en maskinläsbar form.

Program i minnet

EDVAC -datorn , som är baserad på en design av John von Neumann från 1945, hade ett kvicksilverfördröjningsminne för 1024 fasta eller flytande punktnummer med 44 bitar vardera. Varje minnescell kan också acceptera en instruktion istället för ett nummer. Med detta datorkoncept var det möjligt att först överföra kommandon för ett datorprogram till huvudminnet före körning. Detta är fortfarande vanligt idag. EDVAC slutfördes dock inte delvis förrän 1951. Manchester SSE -demonstrationsdatorn och EDSAC -datorn baserad på EDVAC hade redan kört program från huvudminnet.

Programmeringsspråk och kompilatorer på hög nivå

I slutet av 1950-talet blev datorer så kraftfulla att speciella program som kallas kompilatorer automatiskt kunde översätta källtexter i programmeringsspråk på hög nivå till maskininstruktioner, det vill säga körbara program . Precis som med EDVAC kan körbara program sedan laddas in i minnet och bearbetas.

Med Fortran , COBOL , ALGOL och LISP uppstod de första standardiserade programmeringsspråken på hög nivå i slutet av 1950-talet. Program på dessa språk, översatta av en lämplig kompilator, körs på olika datorer. Några av dem kan fortfarande användas på moderna datorer.

Från algoritmen till programmet

Beräknar den största gemensamma divisorn

Ett program ska skapas för att bestämma den största gemensamma delaren (GCF) av två nummer. Först måste en lämplig algoritm hittas.

Den euklidiska algoritmen , som går tillbaka till 300 f.Kr. BC, bestämmer den största gemensamma divisorn (GCF) av två naturliga tal a och b :

  1. Låt a vara den största av de två talen a och b.
    Om a är mindre än b, byt siffror.
  2. Ställ in a till värdet a - b.
  3. Om a och b inte är desamma, gå till steg 1.
    Om a och b är desamma är algoritmen klar.
    Detta nummer är den största gemensamma faktorn.

Användning av ett programmeringsspråk

Så snart en formell beskrivning av en algoritm, dvs. en exakt definierad behandlingsregel, är tillgänglig, kan algoritmen implementeras . Ett lämpligt programmeringsspråk väljs för detta.

Idag används vanligtvis ett programmeringsspråk på hög nivå för implementering, som kanske inte kan köras direkt av en dator, utan först måste sammanställas eller tolkas.

På språk som Pascal används variabler, uttryck, jämförelser, tilldelningar och kontrollstrukturer för att implementera GCD -algoritmen:

 medan a <> b gör // Steg 3: så länge a inte är lika med b
Börja
    om b > a  // Steg 1: om b är större än a
    Börja
        temp : = a ; // byt a och b
        a : = b ;
        b : = temp ;
    slut ;

    a : = a - b ; // Steg 2: ersätt a med a - b
slut ;

Hänsyn till alla specialfall

Implementeringen börjar med undersökningen av steg 3. Den ursprungliga algoritmen tar inte hänsyn till att a och b redan kan vara desamma i början. Om uppgiften skulle hitta den största delaren av 103 och 103 skulle en person omedelbart namnge resultatet 103, han skulle inte ens bry sig om algoritmen. Den ursprungliga algoritmen skulle dock resultera i noll. Implementeringen på en dator måste också ta hänsyn till alla specialfall. Genom att föra fram steg 3, hanteras specialfallet korrekt här.

Elementära steg

Pascal och andra programmeringsspråk har ingen funktion för att byta nummer. Detta måste därför genomföras i mer elementära steg. Den extra variabeln temp , en så kallad hjälpvariabel, tillåter utbyte med hjälp av tre tilldelningar:

 temp : = a ; // Spara värdet på a i hjälpvariabeln temp
a : = b ; // skriv över a med värdet b
b : = temp ; // skriv över b med värdet på temp

Detta är också en liten algoritm.

Ett komplett program

För att det ska bli ett korrekt program måste algoritmen kompletteras med input- och output -instruktioner, men ofta också med variabler och en programstruktur. Dessa är inte en del av den verkliga algoritmen:

 program Ggt ; // programrubrik
    var a , b , temp : heltal ; // variabel definition
Börja
    ReadLn ( a , b ) ; // Ange a och b

    medan a <> b gör // Euklidisk algoritm
    Börja
        om b > a 
        Börja
            temp : = a ;
            a : = b ;
            b : = temp ;
        slut ;

        a : = a - b ;
    slut ;

    WriteLn ( a ) ; // utmatning från a
slut . // slutet av programmet

Översättning och utförande

Ett sådant program skapas med hjälp av en textredigerare och lagras som källkod i en fil eller ett programbibliotek (för källkod ). Källkoden kan sedan 'översättas' till en fast sekvensinstruktion för datorn. Detta kräver en kompilator som översätter koden från respektive programmeringsspråk till maskinspråket och skapar ett körbart program som ett resultat som lagras som en fil eller i ett programbibliotek (för körbara program). Detta program kan sedan startas som en process via ett operativsystem , och så ofta som krävs (utan ny översättning). En sådan enda körprocess för ett program kallas också en programinstans. [2]

Vissa programmeringsspråk använder inte en kompilator utan en tolk som översätter program till maskinspråk endast vid körning .

En annan möjlighet är att använda mellanliggande kod ( bytekod ) som genereras av kompilatorn istället för maskinkoden. Ett exempel på detta är Java : Java-kompilatorn genererar bytecode , som sedan körs på den så kallade virtuella maskinen . Den virtuella maskinen tolkar eller översätter sedan bytekoden för det underliggande operativsystemet.

På samma sätt måste i vissa datormiljöer, vanligtvis med stordatorer , maskinkoden som skapats av kompilatorn omarbetas med ett systemprogram ('Linkage Editor' eller liknande), där ytterligare subrutiner och systemrutiner kan 'integreras' om det behövs. Endast på detta sätt kan det resulterande programmet köras .

Med hjälp av specialprogram, så kallade dekompilatorer , är det i begränsad utsträckning möjligt att generera en källtext som kan läsas på högnivåspråk från maskinkoden.

Livets faser

Program har minst två tydligt separerade livsfaser: Perioden fram till kompileringstiden (inklusive) kallas kompileringstid , vilket står i kontrast till körtiden . I kompileringstiden har programmet statiska egenskaper , som endast ges av den fasta källkoden. Efter sammanställning och körning har det binära programmet dynamiska egenskaper och beteende som också beror på respektive körtidsmiljö (varierande hårdvara, användarinteraktion, etc.).

I en mer detaljerad mening kan programmens livsfaser också förstås som mjukvarans livscykel . Följaktligen innehåller den exakta definitionen av programinnehållet projektets faser problemdefinition, analys och design , följt av det tekniska genomförandet , där programmet skapas i form av källtext . Det är då i introduktionsfasen . Efter dessa utvecklingsfaser av program följer deras produktiva användning ; vid behov görs justeringar och utbyggnader ( underhållsfas ).

Ur affärssynpunkt kan datorprogram också klassificeras enligt produktens allmänna livscykel .

Upphovsrättsskydd

Ett datorprogram skyddas av upphovsrätten om det är det individuella resultatet av författarens eget intellektuella skapande ( avsnitt 69a (3) UrhG). Med genomförandet av upphovsrättsdirektivet från 2001 harmoniserades skyddströskeln för datorprogram i EG: s medlemsstater. Ett minimum av individualitet är tillräckligt för skydd ( litet mynt ). Det antas att författarens individualitet återspeglades i programmet, om det fanns utrymme. Andligt innehåll antas om programmet skapades av en mänsklig skapare.

utveckling

I Förbundsrepubliken Tyskland skedde det juridiska erkännandet av upphovsrättsskyddet 1985; [3] rättspraxis ansåg det redan möjligt på förhand. [4]

År 1991 följde direktiv 91/250 / EEG om det rättsliga skyddet av datorprogram, 1993 års lagar i Österrike [5] och Schweiz [6] och 1996 i Liechtenstein. [7]

I DDR hade domstolen 1979 förnekat upphovsrätten, [8] men ingick i ekonomiska överenskommelser om vetenskapliga och tekniska prestationer som tilldelning av programvara blockeras av andra partner när affärsenheten utarbetas. [9]

Se även

litteratur

webb-länkar

Wiktionary: Datorprogram - förklaringar av betydelser, ordets ursprung, synonymer, översättningar

Individuella bevis

  1. ISO / IEC 2382-1: 1993 definierar "datorprogram": "En syntaktisk enhet som överensstämmer med reglerna för ett visst programmeringsspråk och som består av deklarationer och uttalanden eller instruktioner som behövs för att lösa en viss funktion, uppgift eller problem . ”Fram till 2001 definierade DIN 44300“ Informationsbehandlingsvillkor ”identiskt.
  2. Roland Hellmann: Datorarkitektur: Introduktion till strukturen hos moderna datorer . Walter de Gruyter, 2013, ISBN 978-3-486-72002-0 , sid.   271 ( google.de [nås den 16 november 2020]).
  3. Lag om ändring av bestämmelser inom upphovsrätt av den 24 juni 1985 ( Federal Law Gazette I s. 1137 ); BT-Drs. 10/3360
  4. BGHZ 94, 276 ("Inkasso-Program", 9 maj 1985)
  5. Ändring av upphovsrättslagen 1993 - UrhGNov 1993 , Federal Law Gazette nr 93/1993 ; se även OGH , RIS-Justiz RS0076609
  6. Federal Act on Copyright and Related Rights (Copyright Act, URG) av den 9 oktober 1992, AS 1993, 1798
  7. Förordning om vissa skyddsrättigheter inom området för immateriella rättigheter (VGE) av den 30 januari 1996, LGBl. 1996 nr 31
  8. Leipzigs tingsrätt , NJ 1981, 236
  9. Centrala avtalsslutande domstol , Spruchpraxis 11, 35 = Handelsrätt 1984, 21 = GRUR-Int. 1984, 305 (om 18 § i den första genomförandeförordningen till avtalslagen)