Execucao de Programa
|
---|
Conceitos gerais
|
---|
|
Tipos de codigo
|
---|
|
Estrategia de compilacao
|
---|
|
Runtimes notaveis
|
---|
|
Compiladores notaveis e toolchain
|
---|
|
|
Um
programa de computador
ou
programa informatico
e um conjunto de
instrucoes
que descrevem uma tarefa a ser realizada por um
computador
. O termo pode ser uma referencia ao
codigo fonte
, escrito em alguma
linguagem de programacao
, ou ao
arquivo
que contem a forma
executavel
deste codigo fonte.
O programa de computador surgiu antes do desenvolvimento do
computador eletronico
. Um trabalho publicado em 1843 por
Ada Lovelace
, sugerindo uma forma para calcular os
numeros de Bernoulli
atraves da
maquina analitica
de
Charles Babbage
, e tido como o primeiro programa de computador.
[
1
]
[
2
]
A primeira aplicacao pratica da programacao surgiu com os dispositivos baseados em
cartoes perfurados
, que eram utilizados desde o
seculo XVIII
na industria da confeccao.
[
3
]
O empresario estadunidense
Hermann Hollerith
utilizou o conceito no processamento dos dados do censo dos
Estados Unidos
em 1890.
[
4
]
Os primeiros computadores eletronicos eram programados somente atraves de
linguagens de baixo nivel
. Essas linguagens nao disponibilizavam um nivel de abstracao sobre o
hardware
e os comandos eram interpretados diretamente pelos
circuitos eletronicos
. No
ENIAC
, um dos equipamentos mais emblematicos na historia da computacao, a programacao era realizada atraves de ligacoes manuais, que uniam as unidades de processamento do computador, formando uma sequencia de execucao.
[
5
]
As
linguagens de alto nivel
surgiram por volta da
decada de 1940
, como a
Plankalkul
e a
Short Code
, e tiveram grande impulso com o desenvolvimento dos
compiladores
, que tornaram a programacao uma atividade possivel para um grande numero de pessoas. Na
decada de 1950
surgiu a primeira linguagem de grande aceitacao, o
Fortran
.
[
6
]
Um programa de computador e a formalizacao de um
algoritmo
em qualquer linguagem capaz de ser transformada em instrucoes que serao executadas por um computador gerando os resultados esperados.
O termo
software
pode ser utilizado quando se quer designar um conjunto de programas ou, mais frequentemente, quando e feita uma referencia a parte nao fisica do
sistema computacional
, em contraposicao ao termo
hardware
, que designa o conjunto de
componentes eletronicos
que constituem um computador.
Os programas de computador utilizados diretamente por pessoas comuns, como os
editores de texto
, sao chamados de software aplicativo, ou de aplicacao. Os programas voltados para dar suporte funcional aos computadores, como os
sistemas operacionais
, sao chamados de software de sistema. Esses softwares, assim como aqueles embutidos em outros sistemas (
firmware
), podem ser genericamente chamados de "programas".
Em ingles, a palavra
software
e um substantivo incontavel,
[
7
]
portanto, nao possui plural, assim como
hardware
. Entretanto, uma vez importado o termo nos paises de lingua portuguesa, com o uso cotidiano da palavra
software
como sinonimo de "programa de computador", ao menos no Brasil, houve uma adaptacao da palavra e a aceitacao do uso do termo
softwares
como plural de
software
.
[
8
]
Um programa de computador e primeiramente carregado na
memoria do computador
(usualmente pelo
sistema operacional
). O sistema operacional organiza tres blocos de memoria, tambem chamados segmentos. O primeiro e o
segmento de codigo
, que e estatico em tamanho e em conteudo. Ele recebe todo o codigo de maquina que define as
sub-rotinas
do programa, e o endereco de cada subrotina e definido como o menor dos enderecos das celulas de memoria que a definem.
O segundo bloco de memoria e o
segmento de dados
, e recebe as
variaveis globais
. Assim como no segmento de codigo, o endereco de cada variavel e definido como o menor dos enderecos das celulas de memoria que o definem. Ele e estatico em tamanho mas dinamico em conteudo, o que significa que este segmento nao pode criar variaveis em tempo de execucao, mas o conteudo e variavel, pode ser modificado.
O terceiro bloco de memoria e o
segmento de pilha
, uma area de memoria na qual armazena-se informacao em forma de uma
pilha
. Ele serve para armazenar informacoes como variaveis locais, parametros de sub-rotinas e enderecos de retorno (para onde o fluxo do programa deve ir apos a execucao de uma funcao, isto e, o ponto logo apos ela foi invocada). Antes da execucao do programa propriamente dita, a pilha e esvaziada.
A partir de entao o programa e executado, instrucao por instrucao, ate o seu termino. A execucao de um programa de computador pode ser abreviada em caso de erro de
software
ou de
hardware
.
A forma executavel de um programa, normalmente um
codigo objeto
, e frequentemente tratada como algo separado dos dados utilizados por este programa. Em algumas linguagens, como o
LISP
, esta distincao nao e tao clara pois os programas podem criar ou modificar os dados, que em seguida sao executados como parte do mesmo programa.
O ato de programar um computador e um processo iterativo que consiste na criacao ou alteracao de codigo fonte, seguido de testes, analise e posterior refinamento do resultado. Uma pessoa que realiza este trabalho e conhecida como programador de computador ou desenvolvedor de
software
. A criacao de programas de computador, quando baseada em metodologias ou processos formalizados, e conhecida como
engenharia de software
.
Referencias