Computerprogramma

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken

Een computerprogramma, of kortweg programma , is een opeenvolging van instructies (bestaande uit verklaringen en instructies ) die voldoet aan de regels van een bepaalde programmeertaal om bepaalde functies of taken of problemen met behulp van een computer te verwerken of op te lossen. [1]

Overzicht

'Computerprogramma', contexten van termen en synoniemen die in taalkundig gebruik worden gebruikt

Een computerprogramma behoort tot de software van een computer. Het staat meestal op een gegevensdrager als een uitvoerbaar programmabestand , vaak in de zogenaamde machinecode , die voor uitvoering in het hoofdgeheugen van de computer wordt geladen. Het programma wordt als een opeenvolging van machinecommando's, oftewel processorcommando's, door de processor(s) van de computer verwerkt en dus uitgevoerd. Onder computerprogramma wordt ook verstaan ​​de broncode van het programma waaruit de uitvoerbare code wordt gemaakt tijdens de softwareontwikkeling .

Een programmabestand, dat uit machinecode bestaat, bevat commando's uit het vocabulaire van de processor, dus commando's die "begrijpelijk" zijn voor de processor en dus uitgevoerd kunnen worden. De totstandkoming van een dergelijk programma wordt in het algemeen programmering of implementatie genoemd . In de begindagen van het programmeren - tot de ontwikkeling van programmeertalen - gebeurde het programmeren uitsluitend in machinecode. Het programma of de brontekst die de programmeur in een programmeertaal heeft geschreven, bestaat uit een reeks instructies (meestal overgenomen uit de Engelse taal) die over het algemeen gemakkelijker te begrijpen zijn voor de programmeur (bijv. ADD, SUB, AND, OR ) dan de machine code. Later vulden loops, abstractie en modulaire structuur de hogere programmeertalen aan .

Bestanden waarin de programmacode is opgeslagen, worden meestal geïdentificeerd door een bestandsextensie. Brontekstbestanden geven dus de gebruikte taal op hoog niveau aan ( <programma> .c : een programma geformuleerd in C ). Het kan over het algemeen worden bewerkt met een eenvoudige teksteditor. Een bestand dat machinecode bevat, heeft daarentegen geen extensie of is specifiek voor het besturingssysteem en geeft alleen aan dat het kan worden uitgevoerd ( <programma>. Exe voor MS-DOS en Windows ; <programma> voor Unix systemen). Het kan vaak worden opgeroepen als een opdracht in een terminal ( opdrachtprompt ). Zie ook programmabibliotheek .

Om een ​​programma dat is geschreven in een taal op hoog niveau te laten uitvoeren op een processor, moet het worden vertaald in machinecode. Een instructie in een programmeertaal op hoog niveau wordt over het algemeen vertaald in meerdere machine-instructies. Het vertaalproces wordt compilatie genoemd . Een assembler , compiler of interpreter is nodig om de machinecode uit de brontekst te genereren. Dit vertaalt de instructies van de programmeertaal, die begrijpelijk en bewerkbaar moeten zijn voor menselijke gebruikers, in de semantisch corresponderende commando's van de machinetaal van de gebruikte computer.

De instructies die (als onderdeel van programma's) een concrete oplossing vertegenwoordigen, worden algoritmen genoemd ; Voorbeeld: Omzetbelasting berekenen.

In de volksmond wordt een computerprogramma meestal afgekort tot programma of wordt de term software gebruikt. Computerprogramma's zijn echter geen synoniem voor software ; Veeleer is 'software' een collectieve IT-term voor niet-hardware, bijvoorbeeld voor een besturingssysteem , database of voor een volledige IT-toepassing die klaar is voor de gebruiker - die componenten kan bevatten zoals grafische en audiobestanden , lettertypen , helpteksten, enz.

Een groter computerprogramma bestaat meestal uit meerdere modules - die ofwel bij het programma zelf horen of die bij het uitvoeren van het programma als bouwstenen ( subprogramma's ) uit bestaande programmabibliotheken worden gebruikt. In het tegenovergestelde geval kunnen computerprogramma's deel uitmaken van een applicatiesysteem op een hoger niveau dat een groter verantwoordelijkheidsgebied bestrijkt; Voorbeeld: salarisadministratie, financiële administratie, rapportage .

De ontwikkeling van computerprogramma's is het gebied van softwaretechnologie . Afhankelijk van de complexiteit van de te ontwikkelen computerprogramma's gebeurt dit in het kader van projecten . De activiteiten van partijen maken daarbij veelal gebruik van procesmodellen , speciale methoden en tools die zijn ontworpen voor softwareontwikkeling.

Classificatie opties

Naast de onderscheidende kenmerken die algemeen gelden voor software , kunnen computerprogramma's (als subvariant van software) worden onderscheiden volgens de volgende criteria, die als voorbeeld worden gegeven:

  • Bronprogramma's (in een bepaalde programmeertaal ) of machineprogramma 's (uitvoerbaar onder bepaalde besturingssystemen ) of programma's in een tussencode
  • Hoofdprogramma's (aangeroepen via commando's van het besturingssysteem) of subroutines (aangeroepen door andere programma's). Speciale vormen komen voor wanneer programma's b.v. B. kan worden opgeroepen via technische besturingscomponenten, z. B. via servicegerichte architecturen , geautomatiseerd workflowbeheer .
  • Batchprogramma's (verwerken 'batches' van gegevens) of dialoogprogramma's (interactie met gebruikers)
  • Afhankelijk van de locatie van opslag en programma-uitvoering kunnen programma's lokaal worden opgeslagen en uitgevoerd (op een werkstationcomputer) of op een server worden geïnstalleerd en toch lokaal worden uitgevoerd (na laden via een online verbinding) of alleen op de server worden opgeslagen en ook zijn er uitgevoerd. In het geval van gedistribueerde applicaties worden delen van het programma op verschillende computers uitgevoerd, b.v. B. de bedrijfslogica en gegevensopslag in de server, functies van de gebruikersinterface op de lokale computer; In puur technische zin zijn verschillende programma's met elkaar verbonden.

verhaal

Ada Lovelace's eerste computerprogramma

'S Werelds eerste computerprogramma is een regel voor de berekening van Bernoulli-getallen , die Ada Lovelace in de jaren 1842/1843 creëerde voor de mechanische analytische motor van Charles Babbage . Destijds kon het programma alleen met de hand worden uitgevoerd, omdat er in de 19e eeuw geen werkende machine was die dit kon.

Eerste programma's op ponsband

Tussen 1936 en 1941 Konrad Zuse ontworpen de Z1 en Z3 computers, die lange reeksen van commando's verwerkt op een geponste band, de eerste computerprogramma's die kunnen worden uitgevoerd op echte machines. De computers beheersten de vier elementaire rekenkundige bewerkingen en vierkantswortelberekeningen op binaire getallen met drijvende komma ; de ponsband bevatte elk een rekenkundige bewerking en een geheugenadres.

De eerste programmeertaal op hoog niveau Plankalkül gaat ook terug naar Zuse. Hierdoor kunnen problemen onafhankelijk van de machine worden geformuleerd en later worden omgezet in een machineleesbare vorm.

Programma's in het geheugen

De EDVAC- computer, die is gebaseerd op een ontwerp van John von Neumann uit 1945, had een kwikvertragingsgeheugen voor 1024 vaste of drijvende-kommagetallen met elk 44 bits. Elke geheugencel zou ook een instructie kunnen accepteren in plaats van een nummer. Met dit computerconcept was het mogelijk om voor uitvoering eerst de commando's van een computerprogramma naar het hoofdgeheugen over te dragen. Dit is vandaag de dag nog steeds gebruikelijk. EDVAC werd echter pas in 1951 gedeeltelijk voltooid. De Manchester SSE-demonstratiecomputer en de EDSAC- computer op basis van de EDVAC hadden al programma's uit het hoofdgeheugen uitgevoerd.

Programmeertalen en compilers op hoog niveau

Aan het einde van de jaren vijftig werden computers zo krachtig dat speciale programma's, compilers genaamd , automatisch bronteksten in programmeertalen op hoog niveau konden vertalen in machine-instructies, d.w.z. uitvoerbare programma's . Net als bij EDVAC kunnen uitvoerbare programma's vervolgens in het geheugen worden geladen en verwerkt.

Met Fortran , COBOL , ALGOL en LISP , ontstonden eind jaren vijftig de eerste gestandaardiseerde programmeertalen op hoog niveau. Programma's in deze talen, vertaald door een geschikte compiler, draaien op verschillende computers. Sommigen van hen kunnen nog steeds worden gebruikt op moderne computers.

Van het algoritme naar het programma

De grootste gemene deler berekenen

Er moet een programma worden gemaakt om de grootste gemene deler (GCF) van twee getallen te bepalen. Eerst moet een geschikt algoritme worden gevonden.

Het Euclidische algoritme , dat dateert uit 300 voor Christus. BC, bepaalt de grootste gemene deler (GCF) van twee natuurlijke getallen a en b :

  1. Laat a het grootste zijn van de twee getallen a en b.
    Als a kleiner is dan b, verwissel dan de getallen.
  2. Stel a in op de waarde a - b.
  3. Als a en b niet hetzelfde zijn, ga dan naar stap 1.
    Als a en b hetzelfde zijn, is het algoritme klaar.
    Dit aantal is de grootste gemene deler.

Gebruik van een programmeertaal

Zodra een formele beschrijving van een algoritme, dat wil zeggen een nauwkeurig gedefinieerde verwerkingsregel, beschikbaar is, kan het algoritme worden geïmplementeerd . Hiervoor wordt een geschikte programmeertaal gekozen.

Tegenwoordig wordt voor de implementatie meestal een programmeertaal op hoog niveau gebruikt, die mogelijk niet rechtstreeks door een computer kan worden uitgevoerd, maar eerst moet worden gecompileerd of geïnterpreteerd.

In talen als Pascal worden variabelen, uitdrukkingen, vergelijkingen, toewijzingen en controlestructuren gebruikt om het GCD-algoritme te implementeren:

 while a <> b do // Stap 3: zolang a niet gelijk is aan b
beginnen
    als b > a dan // Stap 1: als b groter is dan a
    beginnen
        temperatuur : = een ; // verwissel a en b
        een : = b ;
        b : = temperatuur ;
    einde ;

    een : = een - b ; // Stap 2: vervang a door a - b
einde ;

Behandeling van alle speciale gevallen

De implementatie begint met het onderzoek van stap 3. Het oorspronkelijke algoritme houdt geen rekening met het geval dat a en b in het begin al hetzelfde kunnen zijn. Als het de taak zou zijn om de grootste deler van 103 en 103 te vinden, zou een persoon het resultaat onmiddellijk 103 noemen, hij zou niet eens moeite doen met het algoritme. Het oorspronkelijke algoritme zou echter nul opleveren. Bij de implementatie op een computer moet ook rekening worden gehouden met alle bijzondere gevallen. Door stap 3 naar voren te halen, wordt het bijzondere geval hier correct afgehandeld.

Elementaire stappen

Pascal en andere programmeertalen hebben geen bewerking voor het wisselen van nummers. Dit moet dus in meer elementaire stappen worden uitgevoerd. De extra variabele temp , een zogenaamde hulpvariabele, maakt het wisselen mogelijk met behulp van drie toewijzingen:

 temperatuur : = een ; // Sla de waarde van a op in de hulpvariabele temp
een : = b ; // overschrijf a met de waarde van b
b : = temperatuur ; // overschrijf b met de waarde van temp

Dit is ook een klein algoritme.

Een compleet programma

Om het een correct programma te laten worden, moet het algoritme worden aangevuld met invoer- en uitvoerinstructies, maar vaak ook met variabelen en een programmastructuur. Deze maken geen deel uit van het eigenlijke algoritme:

 programma Ggt ; // programmakop
    var a , b , temp : geheel getal ; // variabele definitie
beginnen
    ReadLn ( a , b ) ; // Voer a en b in

    terwijl a <> b do // Euclidische algoritme
    beginnen
        als b > a dan
        beginnen
            temperatuur : = een ;
            een : = b ;
            b : = temperatuur ;
        einde ;

        een : = een - b ;
    einde ;

    SchrijfLn ( een ) ; // uitvoer van a
einde . // einde programma

Vertaling en uitvoering

Zo'n programma wordt gemaakt met behulp van een teksteditor en opgeslagen als broncode in een bestands- of programmabibliotheek (voor broncode ). De broncode kan vervolgens worden 'vertaald' naar een instructie met een vaste volgorde voor de computer. Hiervoor is een compiler nodig die de code van de betreffende programmeertaal in de machinetaal vertaalt en als resultaat een uitvoerbaar programma maakt, dat als bestand of in een programmabibliotheek (voor uitvoerbare programma's) wordt opgeslagen. Dit programma kan dan als proces gestart worden via een besturingssysteem , en zo vaak als nodig is (zonder nieuwe vertaling). Zo'n enkelvoudig lopend proces van een programma wordt ook wel een programma-instantie genoemd. [2]

Sommige programmeertalen gebruiken geen compiler maar een interpreter die programma's pas tijdens runtime in machinetaal vertaalt.

Een andere mogelijkheid is om tussencode ( bytecode ) te gebruiken die door de compiler wordt gegenereerd in plaats van de machinecode. Een voorbeeld hiervan is Java : de Java-compiler genereert bytecode , die vervolgens wordt uitgevoerd op de zogenaamde virtuele machine . De virtuele machine interpreteert of vertaalt vervolgens de bytecode voor het onderliggende besturingssysteem.

Evenzo moet in sommige computeromgevingen, meestal met mainframes , de machinecode die door de compiler is gemaakt , worden herwerkt met een systeemprogramma ('Linkage Editor' of iets dergelijks), waarbij indien nodig verdere subroutines en systeemroutines kunnen worden 'geïntegreerd'. Alleen op deze manier kan het resulterende programma worden uitgevoerd .

Met speciale programma's, zogenaamde decompilers , is het in beperkte mate mogelijk om uit de machinecode een brontekst te genereren die in hoogstaande taal kan worden gelezen.

Levensfasen

Programma's hebben minimaal twee duidelijk gescheiden levensfasen: De periode tot het moment van compilatie (inclusief) heet compile time , in tegenstelling tot de runtime . In de fase van compileren heeft het programma statische eigenschappen die alleen worden gegeven door de vaste broncode. Na compilatie en uitvoering heeft het binaire programma dynamische eigenschappen en gedrag dat ook afhangt van de respectievelijke runtime-omgeving (variërende hardware, gebruikersinteractie, enz.).

In meer gedetailleerde zin kunnen de levensfasen van programma's ook worden opgevat als de levenscyclus van de software . Dienovereenkomstig omvat de nauwkeurige definitie van de programma-inhoud de projectfasen probleemdefinitie, analyse en ontwerp , gevolgd door de technische implementatie , waarin het programma wordt gecreëerd in de vorm van brontekst . Het is dan in de introductiefase . Na deze ontwikkelingsfasen van programma's volgt het productieve gebruik ervan ; indien nodig worden aanpassingen en uitbreidingen ( onderhoudsfase ) doorgevoerd.

Vanuit zakelijk oogpunt kunnen computerprogramma's ook worden ingedeeld volgens de algemene productlevenscyclus .

Auteursrechtbescherming

Een computerprogramma is auteursrechtelijk beschermd als het het individuele resultaat is van een eigen intellectuele schepping van de auteur ( 69a (3) UrhG). Met de implementatie van de Auteursrechtrichtlijn uit 2001 is de beschermingsdrempel voor computerprogramma's in de EG-lidstaten geharmoniseerd. Een minimum aan individualiteit is voldoende voor bescherming ( muntstuk ). Aangenomen wordt dat de eigenheid van de auteur tot uiting kwam in het programma, als er ruimte was. Spirituele inhoud wordt verondersteld als het programma is gemaakt door een menselijke maker.

ontwikkeling

In de Bondsrepubliek Duitsland vond in 1985 de wettelijke erkenning van auteursrechtelijke bescherming plaats; [3] de jurisprudentie achtte het op voorhand al mogelijk. [4]

In 1991 volgde de richtlijn 91/250/EEG betreffende de rechtsbescherming van computerprogramma's, in 1993 wettelijke regelingen in Oostenrijk [5] en Zwitserland [6] en 1996 in Liechtenstein. [7]

In de DDR had het Hof in 1979 de auteursrechtelijke bevoegdheid ontkend [8], maar in economische overeenkomsten over wetenschappelijke en technologische prestaties werd het toekennen van software door andere partners geblokkeerd als de zakelijke entiteit zou worden uitgewerkt. [9]

Zie ook

literatuur

web links

WikiWoordenboek: Computerprogramma - uitleg van betekenissen, woordoorsprong, synoniemen, vertalingen

Individueel bewijs

  1. ISO / IEC 2382-1: 1993 definieert "computerprogramma": "Een syntactische eenheid die voldoet aan de regels van een bepaalde programmeertaal en die is samengesteld uit verklaringen en verklaringen of instructies die nodig zijn om een ​​bepaalde functie, taak of probleem op te lossen "Tot 2001 definieerde DIN 44300" termen voor informatieverwerking "op dezelfde manier.
  2. ^ Roland Hellmann: Computerarchitectuur: Inleiding tot de structuur van moderne computers . Walter de Gruyter, 2013, ISBN 978-3-486-72002-0 , p.   271 ( google.de [geraadpleegd op 16 november 2020]).
  3. Wet tot wijziging van de regelgeving op het gebied van het auteursrecht van 24 juni 1985 ( Federale Staatscourant I p. 1137 ); BT-Drs 10/3360
  4. BGHZ 94, 276 ( "Inkasso-Programm", 9 mei 1985)
  5. Wijziging auteursrechtwet 1993 - UrhGNov 1993 , Federale Staatscourant nr. 93/1993 ; zie ook OGH , RIS-Justiz RS0076609
  6. Federale wet inzake auteursrecht en naburige rechten (Copyright Act, URG) van 9 oktober 1992, AS 1993, 1798
  7. Verordening betreffende bepaalde beschermingsrechten op het gebied van intellectuele eigendom (VGE) van 30 januari 1996, LGBl 1996 nr. 31
  8. Districtsrechtbank Leipzig, NJ 1981, 236
  9. Centrale Contracterende Rechtbank , Spruchpraxis 11, 35 = Handelsrecht 1984, 21 = GRUR-Int. 1984, 305 (op artikel 18 van de 1e uitvoeringsverordening bij de contractenwet)