Programa de computador

Um programa de computador, ou programa abreviado, é uma sequência de instruções (consistindo em declarações e instruções ) que obedece às regras de uma determinada linguagem de programação para processar ou resolver certas funções ou tarefas ou problemas com o auxílio de um computador .

visão global

'Programa de computador', contextos de termos e sinônimos usados ​​na linguagem

Um programa de computador pertence ao software de um computador. Geralmente está em um portador de dados como um arquivo de programa executável , geralmente no chamado código de máquina , que é carregado na memória principal do computador para execução . O programa é implementado como uma sequência de máquinas, i. H. Comandos do Processador processado pelo processador ou processadores do computador e, portanto, executado. Programa de computador também é entendido como o texto-fonte do programa a partir do qual o código executável é criado no decorrer do desenvolvimento de software .

Um arquivo de programa, que consiste em código de máquina, contém instruções do vocabulário do processador, i. H. Instruções que são "compreensíveis" para o processador e, portanto, podem ser executadas. A criação de tal programa é geralmente referida como programação ou implementação . Nos primórdios da programação - até o desenvolvimento das linguagens de programação  - a programação era realizada exclusivamente em código de máquina. O programa ou texto fonte que o programador escreveu em uma linguagem de programação consiste em uma sequência de instruções (em sua maioria tiradas do idioma inglês) que são geralmente mais fáceis para o programador entender (por exemplo, ADD, SUB, AND, OR) do que a máquina código. Mais tarde, loops, abstração e estrutura modular complementaram as linguagens de programação superiores .

Os arquivos nos quais o código do programa é armazenado geralmente são identificados por uma extensão de arquivo. Os arquivos de texto de origem, portanto, indicam a linguagem de alto nível usada ( <program> .c : um programa formulado em C ). Geralmente, pode ser editado com um editor de texto simples. Um arquivo que contém código de máquina, por outro lado, não possui ou possui uma extensão específica do sistema operacional que apenas indica sua executabilidade ( <programa>. Exe para MS-DOS e Windows ; <programa> para sistemas Unix ). Muitas vezes, pode ser chamado como um comando em um terminal ( prompt de comando ). Veja também biblioteca de programas .

Para que um programa escrito em uma linguagem de alto nível seja executado em um processador, ele deve ser traduzido em código de máquina. Uma instrução em uma linguagem de programação de alto nível geralmente é traduzida em várias instruções de máquina. O processo de tradução é chamado de compilação . Um montador , compilador ou interpretador é necessário para gerar o código de máquina a partir do texto fonte . Isso traduz as instruções da linguagem de programação, que devem ser compreensíveis e editáveis ​​para usuários humanos, em comandos semanticamente correspondentes da linguagem de máquina do computador utilizado.

As instruções que (como parte dos programas) representam uma solução concreta são chamadas de algoritmos ; Exemplo: cálculo do imposto sobre vendas.

Na linguagem, um programa de computador é geralmente abreviado para programa ou o termo software é usado. No entanto, programa de computador não é sinônimo de software ; em vez disso, 'software' é um termo coletivo de TI para não hardware, por exemplo, para um sistema operacional , banco de dados ou para um aplicativo de TI completo pronto para o usuário - que pode incluir componentes como gráficos e arquivos de áudio , fontes , textos de ajuda, etc.

Um programa de computador maior geralmente consiste em vários módulos - que pertencem ao próprio programa ou que são usados ​​como blocos de construção ( subprogramas ) de bibliotecas de programas existentes durante a execução do programa. No caso oposto, os programas de computador podem fazer parte de um sistema de aplicativo de nível superior cobrindo uma área maior de responsabilidade ; Exemplo: folha de pagamento, contabilidade financeira, relatórios .

O desenvolvimento de programas de computador é o campo da tecnologia de software . Dependendo da complexidade dos programas de computador a serem desenvolvidos, isso é feito no contexto de projetos . As atividades das partes são, portanto, geralmente usando modelos de processo , métodos especiais e ferramentas concebidas para o desenvolvimento de software.

Opções de classificação

Além das características distintivas que geralmente se aplicam ao software , os programas de computador (como uma subvariante do software) podem ser diferenciados de acordo com os seguintes critérios, que são dados como exemplos:

  • Programas fonte (em uma determinada linguagem de programação ) ou programas de máquina (executáveis ​​em certos sistemas operacionais ) ou programas em um código intermediário
  • Programas principais (chamados por meio de comandos do sistema operacional) ou sub-rotinas (chamados por outros programas). Os formulários especiais ocorrem quando os programas, por ex. B. pode ser chamado por meio de componentes de controle técnico, z. B. por meio de arquiteturas orientadas a serviços , gerenciamento de fluxo de trabalho automatizado .
  • Programas em lote (processam 'lotes' de dados) ou programas de diálogo (interagem com os usuários)
  • Dependendo do local de armazenamento e execução do programa, os programas podem ser salvos e executados localmente (em uma estação de trabalho) ou instalados em um servidor e ainda executados localmente (após o carregamento por meio de uma conexão online ) ou apenas salvos no servidor e também existem executado. No caso de aplicativos distribuídos, partes do programa são executadas em computadores diferentes, por exemplo, B. a lógica de negócios e armazenamento de dados no servidor, funções da interface do usuário no computador local; Em um sentido puramente técnico, diferentes programas são conectados uns aos outros.

história

O primeiro programa de computador de Ada Lovelace

Primeiro programa de computador do mundo é uma regra para o cálculo dos números de Bernoulli , que Ada Lovelace criado nos anos 1842/1843 para o mecânico motor analítico por Charles Babbage . Na época, o programa só podia ser executado manualmente, pois não havia máquina em funcionamento capaz de fazê-lo no século XIX.

Primeiros programas em fita perfurada

Entre 1936 e 1941 Konrad Zuse projetou os computadores Z1 e Z3 , que processavam longas sequências de comandos em uma fita perfurada , os primeiros programas de computador que podiam ser executados em máquinas reais. Os computadores dominavam as quatro operações aritméticas básicas e cálculos de raiz quadrada em números binários de ponto flutuante ; cada fita perfurada continha uma operação aritmética e um endereço de memória.

A primeira linguagem de programação de alto nível Plankalkül também remonta ao Zuse . Isso permite que os problemas sejam formulados independentemente da máquina e posteriormente convertidos em uma forma legível por máquina.

Programas na memória

O computador EDVAC , que é baseado em um projeto de John von Neumann de 1945, tinha uma memória de atraso de mercúrio para 1024 números de ponto flutuante ou fixo com 44 bits cada. Em vez de um número, cada célula de memória também pode aceitar uma instrução. Com este conceito de computador, foi possível primeiro transferir os comandos de um programa de computador para a memória principal antes da execução. Isso ainda é comum hoje. No entanto, EDVAC não foi parcialmente concluído até 1951. O computador de demonstração Manchester SSE e o computador EDSAC baseado no EDVAC já haviam executado programas da memória principal.

Linguagens de programação de alto nível e compiladores

No final da década de 1950, os computadores tornaram-se tão poderosos que programas especiais chamados de compiladores podiam traduzir automaticamente os textos-fonte em linguagens de programação de alto nível em instruções de máquina, ou seja, programas executáveis . Como acontece com o EDVAC, os programas executáveis ​​podem ser carregados na memória e processados.

Com Fortran , COBOL , ALGOL e LISP , as primeiras linguagens de programação padronizadas de alto nível surgiram no final dos anos 1950. Os programas nesses idiomas, traduzidos por um compilador apropriado, são executados em computadores diferentes. Alguns deles ainda podem ser usados ​​em computadores modernos.

Do algoritmo ao programa

Calculando o maior divisor comum

Um programa deve ser criado para determinar o máximo divisor comum (GCF) de dois números. Primeiro, um algoritmo adequado deve ser encontrado.

O algoritmo euclidiano , que data de 300 AC. BC, determina o máximo divisor comum (GCF) de dois números naturais a e b :

  1. Seja a o maior dos dois números a e b.
    Se a for menor que b, troque os números.
  2. Defina a com o valor a - b.
  3. Se aeb não forem iguais, vá para a etapa 1.
    Se aeb forem iguais, o algoritmo está concluído.
    Este número é o maior fator comum.

Uso de uma linguagem de programação

Assim que uma descrição formal de um algoritmo, ou seja, uma regra de processamento definida com precisão, estiver disponível, o algoritmo pode ser implementado . Uma linguagem de programação adequada é selecionada para isso.

Hoje, uma linguagem de programação de alto nível é geralmente usada para implementação, que pode não ser capaz de ser executada diretamente por um computador, mas deve primeiro ser compilada ou interpretada.

Em linguagens como Pascal , variáveis, expressões, comparações, atribuições e estruturas de controle são usadas para implementar o algoritmo GCD:

while a <> b do         // Schritt 3: solange a ungleich b
begin
    if b > a then       // Schritt 1: falls b größer als a
    begin
        temp := a;      // a und b vertauschen
        a := b;
        b := temp;
    end;

    a := a - b;         // Schritt 2: a durch a - b ersetzen
end;

Consideração de todos os casos especiais

A implementação começa com o exame da etapa 3. O algoritmo original não leva em consideração o caso de aeb já serem iguais no início. Se a tarefa fosse encontrar o maior divisor de 103 e 103, uma pessoa imediatamente chamaria o resultado de 103, ela nem se incomodaria com o algoritmo. No entanto, o algoritmo original resultaria em zero. A implementação em um computador também deve levar em consideração todos os casos especiais. Ao avançar a etapa 3, o caso especial é tratado corretamente aqui.

Etapas elementares

Pascal e outras linguagens de programação não têm uma operação para trocar números. Isso deve, portanto, ser implementado em etapas mais elementares. A variável adicional temp, chamada de variável auxiliar, permite a troca com a ajuda de três atribuições:

temp := a;      // Wert von a in der Hilfsvariablen temp retten
a := b;         // a mit dem Wert von b überschreiben
b := temp;      // b mit dem Wert von temp überschreiben

Este também é um pequeno algoritmo.

Um programa completo

Para que se torne um programa correto, o algoritmo ainda precisa ser complementado com instruções de entrada e saída, mas frequentemente também com variáveis ​​e uma estrutura de programa. Eles não fazem parte do algoritmo real:

program Ggt;                        // Programmkopf
    var a, b, temp: Integer;        // Variablendefinition
begin
    ReadLn(a, b);                   // Eingabe von a und b

    while a <> b do                 // Euklidischer Algorithmus
    begin
        if b > a then
        begin
            temp := a;
            a := b;
            b := temp;
        end;

        a := a - b;
    end;

    WriteLn(a);                     // Ausgabe von a
end.                                // Programmende

Tradução e execução

Esse programa é criado usando um editor de texto e armazenado como código-fonte em um arquivo ou biblioteca de programa (para código-fonte ). O código-fonte pode então ser 'traduzido' em uma instrução de sequência fixa para o computador. Isso requer um compilador que traduz o código da respectiva linguagem de programação para a linguagem de máquina e cria um programa executável como resultado , que é armazenado como um arquivo ou em uma biblioteca de programa (para programas executáveis). Este programa pode então ser iniciado como um processo por meio de um sistema operacional e com a freqüência necessária (sem uma nova tradução). Esse único processo em execução de um programa também é chamado de instância de programa.

Algumas linguagens de programação não usam um compilador, mas um interpretador que traduz programas em linguagem de máquina apenas em tempo de execução .

Outra possibilidade é usar o código intermediário ( bytecode ) que é gerado pelo compilador em vez do código de máquina. Um exemplo disso é Java : o compilador Java gera bytecode , que é então executado na chamada máquina virtual . A máquina virtual então interpreta ou traduz o bytecode para o sistema operacional subjacente.

Da mesma forma, em alguns ambientes de computador, geralmente com mainframes , o código de máquina criado pelo compilador deve ser retrabalhado com um programa de sistema ('Linkage Editor' ou similar), pelo qual outras sub - rotinas e rotinas de sistema podem ser 'integradas' se necessário . Somente desta forma o programa resultante pode ser executado .

Usando programas especiais, os chamados descompiladores , é possível, até certo ponto, gerar um texto-fonte que pode ser lido em linguagem de alto nível a partir do código de máquina.

Fases da vida

Os programas têm pelo menos duas fases de vida claramente separadas: O período até o momento da compilação (inclusive) é chamado de tempo de compilação , que está em contraste com o tempo de execução . Na fase de compilação, o programa possui propriedades estáticas , fornecidas apenas pelo código-fonte fixo. Após a compilação e execução, o programa binário tem propriedades dinâmicas e comportamento que também depende do respectivo ambiente de execução (hardware variável, interação do usuário, etc.).

Em um sentido mais detalhado, as fases de vida dos programas também podem ser entendidas como o ciclo de vida do software . Assim, a definição precisa do conteúdo do programa inclui a definição do problema das fases do projeto , análise e desenho , seguido pela implementação técnica na qual o programa é criado na forma de código-fonte . Está então na fase de introdução . Após essas fases de desenvolvimento dos programas, segue- se o seu aproveitamento produtivo , se necessário são feitos ajustes e ampliações ( fase de manutenção / cuidados ).

Do ponto de vista comercial, os programas de computador também podem ser classificados de acordo com o ciclo de vida geral do produto .

Proteção de direitos autorais

Um programa de computador é protegido por direitos autorais se for o resultado individual da própria criação intelectual do autor ( Seção 69a (3) UrhG). Com a implementação da Diretiva de Direitos Autorais de 2001, o limite de proteção para programas de computador foi harmonizado nos estados membros da CE. Um mínimo de individualidade é suficiente para proteção ( moeda pequena ). Supõe-se que a individualidade do autor foi refletida no programa, caso houvesse abrangência. O conteúdo espiritual é presumido se o programa foi criado por um criador humano.

desenvolvimento

Na República Federal da Alemanha, o reconhecimento legal da proteção de direitos autorais ocorreu em 1985; a jurisprudência já o considerou possível de antemão.

Em 1991, a diretiva 91/250 / EEC sobre a proteção legal de programas de computador foi seguida, em 1993, as regulamentações legais na Áustria e Suíça e em 1996 no Liechtenstein.

Em 1979, a jurisprudência na RDA negou que pudesse ser protegido por direitos autorais, mas em acordos econômicos sobre serviços científicos e técnicos, a alocação de software por parceiros que não a entidade empresarial em desenvolvimento poderia ser excluída.

Veja também

literatura

Links da web

Wikcionário: programa de computador  - explicações de significados, origens das palavras, sinônimos, traduções

Evidência individual

  1. ISO / IEC 2382-1: 1993 define "programa de computador": "Uma unidade sintática que está em conformidade com as regras de uma linguagem de programação particular e que é composta de declarações e instruções ou instruções necessárias para resolver uma determinada função, tarefa ou problema . ”Até 2001, DIN 44300 definia“ Termos de processamento de informações ”de forma idêntica.
  2. Roland Hellmann: Arquitetura de computadores: introdução à estrutura dos computadores modernos . Walter de Gruyter, 2013, ISBN 978-3-486-72002-0 , p. 271 ( google.de [acessado em 16 de novembro de 2020]).
  3. Lei sobre a alteração da regulamentação no domínio dos direitos de autor de 24 de Junho de 1985 ( Diário da República Federal I, p. 1137 ); BT-Drs. 10/3360
  4. BGHZ 94, 276 ("Inkasso-Programm", 9 de maio de 1985)
  5. Emenda da Lei de Direitos Autorais 1993 - UrhGNov 1993 , Diário da Lei Federal nº 93/1993 ; ver também OGH , RIS-Justiz RS0076609
  6. Lei Federal de Direitos Autorais e Direitos Relacionados (Lei de Direitos Autorais, URG) de 9 de outubro de 1992, AS 1993, 1798
  7. Portaria sobre certos direitos de propriedade no campo da propriedade intelectual (VGE) de 30 de janeiro de 1996, LGBl. 1996 nº 31
  8. Tribunal Distrital de Leipzig, NJ 1981, 236
  9. Tribunal Central de Contratação , Spruchpraxis 11, 35 = Direito Comercial 1984, 21 = GRUR-Int. 1984, 305 (na Seção 18 da 1ª Portaria de Implementação da Lei do Contrato)