Slide de Aula - Unidade II

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 66

UNIDADE II

Estudos Disciplinares
Linguagens de
Programação
Prof. Me. Marcelo Santos
Linguagens de nível muito alto (Very High-level Languages)

Linguagens de baixo nível (Low-level Languages):


 Linguagens de máquina;
 Linguagens de montagem.

 Linguagens de nível médio (Middle-level Languages).

 Linguagens de alto nível (High-level Languages).

 Linguagens de nível muito alto (Very High-


level Languages).

 Linguagens de nível superior (Higher level Languages).


Linguagens de nível muito alto (Very High-level Languages)

Linguagens de programação científica: estas linguagens são orientadas para os


procedimentos computacionais para resolver os problemas matemáticos e estatísticos.
Seguem algumas dessas linguagens:

 FORTRAN: o FORTRAN possui uma forte presença em Física Computacional e Química, em


áreas como: modelagem climática, dinâmica de fluidos e dinâmica molecular;

 C: é usado em mais ambientes do que a linguagem FORTRAN; os sistemas operacionais


são escritos nessa linguagem; a linguagem pode ser embutida na programação de
dispositivos; e muitos jogos e outros aplicativos são desenvolvidos em C;

 MATLAB: muitas funções matemáticas complexas


integradas são oferecidas pela linguagem, como as
operações em matrizes. Portanto, é fácil fazer a
programação funcional em domínios definidos.
Linguagens de nível muito alto (Very High-level Languages)

Porém, a programação do MATLAB utiliza tanto o intérprete do tradutor quanto o compilador de


tempo. Portanto, os programas escritos nele são muito mais lentos do que os escritos em C e
FORTRAN;

 Mathematica: basicamente, foi construído para as manipulações simbólicas. A utilização


básica da linguagem era para os matemáticos e os cientistas, por causa da realização dos
cálculos de funções integradas para muitos campos. Como o MATLAB, também fornece as
ferramentas para visualizar os problemas. Porém, possui as mesmas desvantagens quanto
ao tempo de execução dos programas, como era do MATLAB;

 FIDIL (FInite DIfference Language): é outra programação


funcional e científica. As operações matemáticas mais
complexas irão operar na matriz completa de elementos, em
vez de um único elemento da matriz, pode ser, facilmente,
implementadas nele;
Linguagens de nível muito alto (Very High-level Languages)

 Fortress (Sun Microsystems): melhora a produtividade do programador para fins científicos


e para as aplicações de Engenharia. Uma nova linguagem de programação HPC (High
Performance Computing) foi proposta com a ideia de alta programabilidade.

 A sintaxe matemática é oferecida aos cientistas para fazer a programação em sua linguagem
científica. Ele também fornece um suporte fácil e correto para o desenvolvimento da
programação paralela.

Fonte:
https://www.dlr.de/sc/en/
desktopdefault.aspx/tabi
d-11647/20362_read-
47646/
Linguagens de nível muito alto (Very High-level Languages)

Linguagem de programação visual (VPL – Visual Programming Language):

 Esse tipo de dimensões adicionadas utiliza os objetos multidimensionais. O espaço das


associações são utilizadas ou as dimensões baseadas no tempo são utilizadas para
descrever o “antes-depois” (associações semânticas);

 Todos esses objetos multidimensionais ou associações são os tokens, e a coleção desses


tokens são as expressões. As expressões visuais utilizadas podem ter um diagrama, um
esboço à mão livre, um ícone ou a revelação de ações alcançadas por gráficos (objetos);

 As expressões visuais que estão, aqui, envolvidas, são


chamadas de programação visual. Também são conhecidas
como as linguagens de programação baseadas em objetos.
Uma das linguagens de programação que usa esse conceito
é o Visual Basic (VB).
Linguagens de nível muito alto (Very High-level Languages)

Linguagens de programação do sistema:

 São as linguagens de programação em que todas as instruções da máquina podem ser


escritas; o controle completo sobre a alocação e o gerenciamento de armazenamento é feito;
o sistema operacional pode ser escrito e o processamento paralelo (sincronização) pode
ser alcançado.

Fonte:
https://www.google.com/url?sa=i
&url=https%3A%2F%2Fbecode.
com.br%2Fprincipais-
linguagens-de-
programacao%2F&psig=AOvVa
w13zb-
0J0Aa8se9hfpobIdZ&ust=16203
97549258000&source=images&c
d=vfe&ved=0CAIQjRxqFwoTCK
COk7WhtfACFQAAAAAdAAAAA
BAD
Linguagens de nível muito alto (Very High-level Languages)

Aplicações de linguagens de alto nível:

 Essas linguagens são usadas quando os programas são muito longos, quando os aplicativos
são de baixo volume; quando há tantas modificações necessárias nos programas; quando os
aplicativos precisam de tantos cálculos além da entrada ou da saída, ou a realização de
cálculos de controle; quando o requisito de memória pelo aplicativo é muito grande; e quando
a compatibilidade é necessária com os aplicativos semelhantes.

Fonte:
https://becode.com.br/wp-
content/uploads/2017/04/Lin
guagens-Alto-vs-Baixo-
Nivel.png
Linguagens de nível superior (Higher level Languages)

 A maioria das linguagens de quarta geração (4GLs – fourth generation languages) são
linguagens não procedurais.

 Uma série de instruções são decididas pelas máquinas de computação que fornecerão os
resultados. Assim, as 4GLs têm ajudado a simplificar o processo de programação.

 A 4GL é usada em seis áreas principais. Essas áreas incluem: entrada de dados; gestão de
dados; análise de dados; saída de dados (incluindo os relatórios); gráficos; interface
orientada ao usuário que inclui a utilização de janelas, telas pré-definidas etc.
Linguagens de nível superior (Higher level Languages)

 As linguagens de programação de quarta geração possuem um sistema poderoso, porque


fornecem o gerenciamento de dados padrão, programação e funções de relatório etc.

 Consecutivamente, isso leva à diminuição do tempo de desenvolvimento; custos de


desenvolvimento reduzidos; maior qualidade de software; recursos aprimorados de tomada
de decisão; e maior disponibilidade de informação.

 A título de exemplo, o Oracle é um 4GE (Ambiente de 4ª


Geração) que possui componentes como uma linguagem de
consulta do usuário final (por exemplo, SQL), formatador de
tela, gerador de relatórios, dicionário de dados, gráfico e
muitos mais.

 Outras 4GLs são: Progress 4GL, AVS, APE, LINC,


BuildProfessional, GEMBase e Mathematica etc.
Linguagens de nível superior (Higher level Languages)

 As linguagens 4GLs podem ser classificados em cinco grupos principais: extensões de


programação para o sistema operacional por meio de intérpretes de comando;
gerenciamento de banco de dados e consulta; novas linguagens de programação, como os
gráficos; ferramentas voltadas para a produtividade, por meio de pré-compiladores; e
sistemas de planilhas e software integrados.

 Todas essas linguagens têm as suas próprias vantagens e desvantagens como qualquer
outra linguagem. Apenas o usuário pede as tarefas necessárias e o código de programação
correspondente é gerado, diretamente, a partir das especificações.
Interatividade

Selecione a linguagem que possui uma forte presença em Física Computacional e Química, em
áreas como: modelagem climática, dinâmica de fluidos e dinâmica molecular:

a) C.
b) C #.
c) MATLAB.
d) FORTRAN.
e) Visual Basic (VB).
Resposta

Selecione a linguagem que possui uma forte presença em Física Computacional e Química, em
áreas como: modelagem climática, dinâmica de fluidos e dinâmica molecular:

a) C.
b) C #.
c) MATLAB.
d) FORTRAN.
e) Visual Basic (VB).
Processo de Tradução

 Um programa de computador apresenta uma série de instruções escritas em alguma


linguagem de computador que executa uma tarefa específica.

 Muitas vezes, os alunos iniciantes se concentram, somente, no código do idioma; no entanto,


um software de qualidade é realizado, apenas, após um projeto cuidadoso que identifica as
necessidades, os dados, os processos e os resultados esperados.

 Por este motivo, é fundamental que os alunos aprendam boas


técnicas de design antes de tentar produzir um programa de
qualidade. O design é guiado por um algoritmo, que é um
plano para atacar algum problema. Um algoritmo é usado
para muitos aspectos das tarefas, seja uma receita de bolo,
um guia para estudar para um exame ou as especificações de
um motor de um veículo.
Processo de Tradução

Os computadores só entendem uma sequência de 1s e 0s. O seguinte elemento parece um


absurdo para nós, mas, na verdade, é como o computador lê e executa tudo o que faz:

10010001111010101110010001110001000

 Como os computadores usam, apenas, dois números (1 e 0), isso é chamado de


código binário.

 Podemos imaginar como a programação seria complicada se


tivéssemos que aprender a codificar dessa forma. Na
verdade, era assim que a programação era feita há muitos
anos; no entanto, hoje temos a possibilidade de utilizar o que
chamamos de linguagens de alto nível como o C ++.
Processo de Tradução

 Essas linguagens são mais voltadas para a compreensão humana e, portanto, tornam a
tarefa de programação muito mais fácil. No entanto, uma vez que, apenas, o computador
entende o código binário de baixo nível (muitas vezes chamado de código de máquina), deve
haver um processo de tradução para converter essas linguagens de alto nível em código
de máquina.

 Esta tarefa, geralmente, é realizada por um compilador, que é um pacote de software que
traduz em alto nível.
Processo de Tradução

O compilador traduz o código-fonte em código-objeto. O tipo de código é, frequentemente,


refletido no nome da extensão do arquivo onde ele está localizado. Por exemplo: vamos
escrever o código-fonte (linguagem de alto nível) em C ++ e todos os nomes dos arquivos
terminarão com *.cpp:

 primeiroPrograma.cpp;

 segundoPrograma.cpp.

Fonte:
https://www.google.com/url?sa=i&url=https
%3A%2F%2Fglossarioleonorpinheiro.word
press.com%2F2019%2F03%2F15%2Fc-
2%2F&psig=AOvVaw3znwkKxBay9Tpt-
bas8kre&ust=1620397696514000&source
=images&cd=vfe&ved=0CAIQjRxqFwoTCP
jS4PuhtfACFQAAAAAdAAAAABAD
Processo de Tradução

Quando esses programas são compilados, um novo arquivo (arquivo objeto) será criado com a
terminação *.obj:

 primeiroPrograma.obj;

 segundoPrograma.obj.
Processo de Tradução

 O compilador também detecta os erros gramaticais chamados de erros de sintaxe no


código-fonte.

 Assim como o inglês, todas as linguagens de computador têm o seu próprio conjunto de
regras gramaticais que deve ser obedecido.

 Se tivermos algo que viole as regras gramaticais da


linguagem, o compilador nos dará uma mensagem de erro.
Estes devem ser corrigidos e um programa livre de erros
gramaticais deve ser submetido ao compilador, antes de
traduzir o código-fonte em uma linguagem
de máquina.
Processo de Tradução

Em C ++, por exemplo, as instruções terminam com um ponto e vírgula. O seguinte trecho de
código indicaria um erro de sintaxe:

 cout << “Testando” << endl.

Como não há ponto e vírgula no final, o compilador indicaria um erro, que deveria ser corrigido
da seguinte forma:

 cout << “Hi there” << endl;


Processo de Tradução

 A maioria dos programas não são, totalmente, completos por si próprios. Eles precisam de
outros módulos previamente escritos que realizem certas operações, como a entrada e a
saída de dados.

 Nossos programas precisam desses anexos para funcionar. Esta é a função do processo de
vinculação. O vinculador irá anexar o código apropriado ao programa, a partir de uma
“biblioteca de software” de programas.

 Isso produz o que é chamado de código executável, gerado


em um arquivo que, geralmente, termina com a extensão
*.exe.

Exemplo:
 primeiroPrograma.exe;
 segundoPrograma.exe.
Processo de Tradução

 Assim que tivermos o código executável o programa estará pronto para ser executado.

 Esperançosamente, ele funcionará corretamente e tudo ficará bem; no entanto, nem sempre
é o caso. Durante o “tempo de execução”, podemos encontrar um segundo tipo de erro
chamado de erro de tempo de execução.

 Este erro ocorre quando pedimos ao computador para fazer algo e ele, infelizmente, não
pode fazer.

 Assim como não podemos quebrar as leis da natureza, o


computador não pode violar as leis da matemática e outras
restrições obrigatórias. Pedir ao computador para dividir por 0
é um exemplo de erro de tempo de execução.
Processo de Tradução

 Nesse caso, até podemos obter o código executável; entretanto, quando o programa tenta
executar o comando para dividir por 0, o programa irá parar com um erro de tempo de
execução.

 Os erros de tempo de execução, principalmente, em C ++, costumam ser mais difíceis de


encontrar do que os erros de sintaxe.

Uma vez que executamos o nosso programa e não obtemos os erros de sintaxe e o tempo de
execução, podemos comemorar?

 Não exatamente. Infelizmente, é agora que podemos


encontrar o pior tipo de erro: o temido erro lógico.
Processo de Tradução

 Sempre que pedimos ao computador para fazer algo, mas querendo fazer outra coisa, temos
um erro lógico. Deve haver instruções precisas e claras que geram nossas intenções para o
computador. O computador só faz o que pedimos.

 Pedir para multiplicar por 3 quando queremos realizar uma soma é um exemplo de um
erro lógico.

 Os erros lógicos são os mais difíceis de encontrar e corrigir,


porque não são exibidas mensagens de erro para nos ajudar a
localizar o problema. Uma grande quantidade de tempo de
programação é gasta na solução de erros de lógica.
Processo de Tradução

 Um ambiente de desenvolvimento integrado (IDE) é um pacote de software que reúne um


editor (usado para escrever os programas), um compilador (que traduz os programas) e um
componente de tempo de execução em um sistema.

 Você também deve estar ciente de qual sistema operacional está sendo usado.

 O sistema operacional é o software em seu computador mais importante. É o “grande


mestre” dos programas que realizam a interface com o computador com os seus pedidos.

 Suas instruções irão explicar ao seu sistema específico e ao


ambiente C ++, para que você seja capaz de desenvolver,
compilar e executar os programas C ++ nele.
Interatividade

Um programa de computador apresenta uma série de instruções escritas em alguma


linguagem de computador que executa uma tarefa específica. A partir desse contexto, é
correto afirmar que:

a) Os computadores só entendem uma sequência de 1s e 0s.


b) Os computadores compreendem a linguagem natural para executar as suas tarefas.
c) O compilador traduz o código-objeto em código-fonte.
d) Como os computadores usam, apenas, letras, esse processo é chamado de código literal.
e) O compilador traduz uma sequência binária em código-
fonte para ser executado pelo computador.
Resposta

Um programa de computador apresenta uma série de instruções escritas em alguma


linguagem de computador que executa uma tarefa específica. A partir desse contexto, é
correto afirmar que:

a) Os computadores só entendem uma sequência de 1s e 0s.


b) Os computadores compreendem a linguagem natural para executar as suas tarefas.
c) O compilador traduz o código-objeto em código-fonte.
d) Como os computadores usam, apenas, letras, esse processo é chamado de código literal.
e) O compilador traduz uma sequência binária em código-
fonte para ser executado pelo computador.
Formação do processo a partir do programa

Processo:
 Um processo é um programa em execução denominado de Programa;

 Mas a conversão de um programa em processo envolve várias etapas. Além disso, depois
que o programa é convertido no processo, a memória deve ser alocada para esses
processos na memória principal e essas alocações de memória são tratadas pelo Sistema
Operacional, usando vários métodos e algoritmos;

 Inicialmente, quando escrevemos o nosso código no editor


de texto (seja qualquer linguagem) é armazenado na
memória principal;

 Quando chamamos o compilador, ele pega esse código e


converte em um código Assembly, ou seja, converte o código
de alto nível em um código de baixo nível;
Formação do processo a partir do programa

Processo:

 Em seguida, o compilador pega esse código de montagem gerado após a compilação e


converte-o em um código de objeto. Este código de objeto é formado por 0 e 1, mas este
código não pode ser executado diretamente;

 Para executar o código, as etapas explicadas a seguir são adotadas sequencialmente. O


processo de conversão de código de alto nível para um código de baixo nível é feito pelo
compilador. O compilador é diferente para as diferentes plataformas.
Formação do processo a partir do programa

O código do objeto produzido após todas as etapas anteriores tem as seguintes seções:

1. Cabeçalho (Header);

2. Segmento de texto/código (Text/Code Segment);

3. Segmento de dados (Data Segment);

4. Informações de realocação (Relocation Information);

5. Tabela de símbolos (Symbol Table);

6. Informações de depuração (Debugging Information).


Formação do processo a partir do programa

1. Cabeçalho (Header):
 Diz quais são as seções disponíveis no Código do Objeto e quais são os locais em que as
várias seções estão presentes na memória principal. É como se ele mantivesse um ponteiro
para as localizações de todas as seções.

2. Segmento de texto/código (Text/Code Segment):


 É a parte do código-objeto que contém o código real escrito.

3. Segmento de dados (Data Segment):


 É a parte do código do objeto que contém os membros
de dados.
Formação do processo a partir do programa

4. Informações de realocação (Relocation Information):


Existem 2 tipos de endereço: endereço relocável e endereço absoluto:

Endereço relocável:
 O endereço é relativo a 0, pois o local real onde o programa deve ser carregado não é
conhecido no tempo de compilação;
Endereço absoluto:
 O endereço relocável é convertido em endereço absoluto
quando o programa é, finalmente, carregado na memória
principal, visto que o local exato onde o programa é carregado
seria conhecido.
Formação do processo a partir do programa

5. Tabela de símbolos (Symbol Table):


 Contém todos os símbolos, ou seja, todas as variáveis​​ e todas as funções usadas;

 Também mantém o controle dos endereços de funções que são definidas por nós ou funções
que são padrão;

 Os programas são projetados de forma que, nunca, um único


código de objeto seja autossuficiente, em vez de vários
códigos de objeto serem considerados para serem contados e
convertidos em um código executável correto. Portanto, cada
código de objeto recebe a ajuda de vários outros códigos
de objeto.
Formação do processo a partir do programa

 É o Linker que resolve todos os endereços não resolvidos na tabela de símbolos, obtendo a
ajuda de vários outros códigos de objeto onde as funções específicas seriam definidas.

 O Linker é usado para encontrar as fontes para resolver os endereços. Inicialmente, irá olhar
para os mesmos diretórios a partir do programa; caso não for encontrado, irá para o diretório
especificado pelo compilador.

O Linker funciona em 2 fases:

I. Primeira fase:
 Aqui, ele encontra quais são os segmentos que estão
presentes e quais segmentos devem ser carregados;

 Ele usa 2 tabelas: Tabela de segmentos e Tabela de


símbolos.
Formação do processo a partir do programa

1. Tabela de segmentos: é usada para encontrar os segmentos que devem ser carregados.

2. Tabela de símbolos: é usada para encontrar os símbolos que não estão resolvidos na
Tabela de símbolos e devem ser resolvidos.

II. Segunda fase:


 Nesta fase, o Linker, realmente, resolve todos os símbolos não resolvidos na Tabela
de símbolos.
Formação do processo a partir do programa

Observação:
 Alguns símbolos ainda não foram resolvidos intencionalmente, porque são comumente
usados ​pelo programa e, portanto, são mantidos, diretamente, na memória principal. Assim,
quando precisamos resolver pedimos, diretamente, o endereço presente na memória
principal, em vez de mantermos, repetidamente, o mesmo código.

 Esta parte do código é chamada de Stub Code.


Formação do processo a partir do programa

Dessa forma, o Linker combina todo o código do objeto para produzir um único código,
onde todos os endereços seriam resolvidos (exceto, alguns que são, comumente,
usados). Portanto, as funções principais que o Linker executa são:

1. Relocação;

2. Resolução do símbolo.

 Assim, o Linker produz um código relocável.


Formação do processo a partir do programa

6. Informações de depuração (Debugging Information):


 Compiladores modernos fazem um ótimo trabalho convertendo o código de alto nível, com as
suas estruturas de controle bem recortadas e aninhadas, e variáveis ​arbitrariamente
digitadas em uma grande pilha de bits chamada de código de máquina, cujo único propósito
é executar o mais rápido possível no CPU alvo;

 A maioria das linhas da linguagem em C é convertida em


várias instruções de código de máquina. As variáveis ​são
colocadas em todos os lugares – na pilha, nos registradores
ou são, totalmente, otimizadas. As estruturas e os objetos
nem mesmo existem no código resultante, eles são,
meramente, uma abstração que é traduzida para a realização
de deslocamentos embutidos em código em buffers de
memória.
Formação do processo a partir do programa

Então, como um depurador sabe onde parar quando você pede para interromper na
entrada de alguma função?

Como ele consegue encontrar o que mostrar quando você pede o valor de uma variável?

 A resposta é – informações de depuração.

 As informações de depuração são geradas pelo compilador junto com o código de máquina.

 É uma representação da relação entre o programa executável


e o código-fonte original.
Formação do processo a partir do programa

 Essas informações são codificadas em um formato pré-definido e armazenadas junto com o


código de máquina.

 Muitos desses formatos foram inventados ao longo dos anos para as diferentes plataformas
e arquivos executáveis.
A entrada de informações de depuração

 DWARF utiliza uma série de entradas de informações de depuração para definir uma
representação de baixo nível de um programa de origem.

 Cada entrada de informações de depuração consiste em uma tag de identificação seguida


por uma série de atributos. A tag especifica a classe à qual pertence uma entrada e os
atributos definem as características específicas da entrada.
Relação de entradas de informações de depuração

 Uma variedade de necessidades pode ser atendida permitindo que uma única entrada de
informações de depuração “possua” um número arbitrário de outras entradas de depuração e
permitindo as mesmas informações de depuração, para serem uma das muitas pertencentes
à outra entrada de informações de depuração.

 Isso torna possível descrever, por exemplo, a estrutura de bloco estático dentro de um
arquivo de origem, exibir os membros de uma estrutura, união ou classe, e declarações de
associação com os arquivos de origem ou arquivos de origem, com o compartilhamento
de objetos.
Interatividade

Sobre o Processo é correto afirmar que:

a) Processo é um recurso que pode ser utilizado na análise de dados.


b) Processo é uma linguagem de programação.
c) Processo é o código-fonte que será criado e manipulado pelos programadores.
d) Processo é um programa em execução denominado de Programa.
e) Processo é uma metodologia de desenvolvimento.
Resposta

Sobre o Processo é correto afirmar que:

a) Processo é um recurso que pode ser utilizado na análise de dados.


b) Processo é uma linguagem de programação.
c) Processo é o código-fonte que será criado e manipulado pelos programadores.
d) Processo é um programa em execução denominado de Programa.
e) Processo é uma metodologia de desenvolvimento.
Formação do processo a partir do programa

 Um programa escrito em uma linguagem de alto nível como C ++ é chamado de


programa-fonte ou código-fonte. Para isso, devemos utilizar um editor de texto para criar
o código-fonte.

 Para verificar se o código-fonte está sintaticamente correto, devemos utilizar um compilador


para traduzir o código-fonte em um programa de linguagem de máquina equivalente, que é
chamado de programa-objeto ou código-objeto.

 Em seguida, devemos utilizar um programa chamado Linker


para combinar o código-objeto com qualquer código pré-
escrito (programas), usado a partir de bibliotecas disponíveis
(por exemplo, a biblioteca matemática contém um código
para as funções matemáticas, frequentemente, usadas) para
criar um código executável, código que o computador pode
executar.
Formação do processo a partir do programa

 Um programa (chamado de Loader – carregador) deverá ser usado para carregar o código
executável na memória principal, para que o programa possa ser executado.

 Por último, mas não menos importante, devemos executar o programa.

Step 1 Step 2 Step 3 Step 4 Step 5

Program Editor Compiler Linker Loader Execution

Library

Fonte:
https://userweb.cs.txstate.edu/~br02/cs1428/SupportFiles
/Programming/HighLevelLangProcessing.htm
Formação do processo a partir do programa

 Compile – Traduz o código-fonte em uma linguagem de máquina.

 Link – Combina com outros programas necessários.

 Load – Carrega na memória do computador.

 Run – Executa o programa.


Formação do processo a partir do programa

 Como os matemáticos, os cientistas da computação usam linguagens formais para denotar


ideias (especificamente os cálculos). Como engenheiros, eles projetam coisas, montando
componentes em sistemas e avaliando compensações entre as alternativas.

 Como cientistas, eles observam o comportamento de sistemas complexos, formam hipóteses


e testam previsões.

 A habilidade mais importante para um cientista da computação é a resolução de problemas.

 A resolução de problemas significa a capacidade de formular


problemas, pensar criativamente sobre as soluções, e
expressar uma solução de forma clara e precisa. Acontece
que o processo de aprender a programar é uma excelente
oportunidade para praticar habilidades de resolução
de problemas.
Formação do processo a partir do programa

 Em um nível, você aprenderá a programar, uma habilidade útil por si só. Em outro nível, você
usará a programação como um meio para um fim. À medida em que avançamos, esse fim se
tornará mais claro.

 Em termos gerais, os computadores só podem executar os programas escritos em


linguagens de baixo nível. Portanto, os programas escritos em uma linguagem de alto nível
precisam ser processados ​antes de poderem ser executados. Esse processamento extra
leva algum tempo, o que é uma pequena desvantagem das linguagens de alto nível.
Formação do processo a partir do programa

Mas as vantagens são enormes:

 Primeiro, é muito mais fácil programar em uma linguagem de alto nível. Os programas
escritos em uma linguagem de alto nível demoram menos para serem escritos, são mais
curtos e fáceis de ler, e têm maior probabilidade de estarem corretos;

 Em segundo lugar, as linguagens de alto nível são


portáveis, o que significa que podem ser executadas em
diferentes tipos de computadores com poucas ou nenhuma
modificação. Os programas de baixo nível podem ser
executados em, apenas, um tipo de computador e precisam
ser reescritos para serem executados em outro.
Formação do processo a partir do programa

 Devido a essas vantagens, quase todos os programas são escritos em linguagens de


alto nível.

 Linguagens de baixo nível são usadas, apenas, para alguns aplicativos especializados.

 Dois tipos de programas processam linguagens de alto nível em linguagens de baixo nível:
intérpretes e compiladores. Um intérprete lê um programa de alto nível e o executa, o que
significa que ele faz o que o programa diz. Ele processa o programa aos poucos,
alternadamente lendo as linhas e realizando os cálculos.

Fonte:
https://www.open Source Output
Interpreter
bookproject.net/t code
hinkcs/python/en
glish2e/ch01.html
Formação do processo a partir do programa

 Um compilador lê o programa e o traduz completamente, antes que o programa comece a


ser executado.

 Nesse caso, o programa de alto nível é denominado código-fonte, e o programa traduzido é


denominado código-objeto ou executável. Uma vez que um programa é compilado, você
pode executá-lo repetidamente sem a tradução adicional.

Source Object Output


Compiler Executor
code code

Fonte: https://www.openbookproject.net/thinkcs/python/english2e/ch01.html
Formação do processo a partir do programa

 Muitas linguagens modernas usam ambos os processos.

 Eles são primeiro compilados em uma linguagem de nível inferior, chamada de código de
byte e, então, interpretados por um programa chamado de máquina virtual.

 Por exemplo, o Python utiliza ambos os processos, mas, devido à maneira como os
programadores interagem com ele, geralmente, é considerado uma linguagem interpretada.

Fonte:
https://cadernodelaborato
rio.com.br/wp-
content/uploads/2018/07/
python37.png
O que é um programa?

 Um programa é uma sequência de instruções que especifica como realizar um cálculo. O


cálculo pode ser algo matemático, como resolver um sistema de equações ou encontrar as
raízes de um polinômio, mas, também, pode ser um cálculo simbólico, como pesquisar e
substituir o texto, em um documento ou (estranhamente) compilar um programa.

Os detalhes parecem diferentes em diferentes idiomas, mas algumas instruções básicas


aparecem em quase todos os idiomas:

 Entrada de dados: obtenha os dados do teclado, um arquivo ou algum outro dispositivo;

 Resultado: exiba os dados na tela, ou envie os dados para


um arquivo ou outro dispositivo;

 Cálculos matemáticos: realize as operações matemáticas


básicas como a adição e a multiplicação;
O que é um programa?

 Estrutura condicional: verifique certas condições e execute a sequência apropriada de


instruções;

 Estrutura de repetição: execute alguma ação repetidamente, geralmente, com alguma


variação.

 Podemos descrever a programação como o processo de quebrar uma tarefa grande e


complexa em subtarefas, cada vez menores, até que as subtarefas sejam simples o
suficiente para serem executadas com uma dessas instruções básicas.
O que é depuração?

 A programação é um processo complexo e por ser feita por seres humanos que, geralmente,
leva a erros. Por motivos caprichosos, os erros de programação são chamados de bugs, e o
processo de rastreá-los e corrigi-los é chamado de depuração.

Três tipos de erros podem ocorrer em um programa: erros de sintaxe, erros de tempo de
execução e erros de semântica. É útil distingui-los para localizá-los mais rapidamente:

Erros de sintaxe:
 Normalmente, as linguagens de programação só podem
executar um programa se o programa estiver sintaticamente
correto; caso contrário, o processo falha e retorna uma
mensagem de erro;

 A sintaxe se refere à estrutura de um programa e às regras


sobre essa estrutura;
O que é depuração?

 Se houver um único erro de sintaxe em qualquer lugar do programa, aparecerá uma


mensagem de erro e você não conseguirá executar o programa;

 Durante o início de sua carreira de programação, você, provavelmente, gastará muito tempo
rastreando os erros de sintaxe. No entanto, conforme você ganha experiência, cometerá
menos erros e os encontrará mais rápido.

Erros de tempo de execução:


 O segundo tipo de erro é um erro de tempo de execução,
assim chamado, porque o erro não aparece até que você
execute o programa. Esses erros também são chamados de
exceções porque, geralmente, indicam que algo excepcional
(e ruim) aconteceu.
O que é depuração?

Erros semânticos:
 O terceiro tipo de erro é o erro semântico. Se houver um erro de semântica em seu programa,
ele será executado com sucesso, no sentido de que o computador não gerará nenhuma
mensagem de erro, mas não fará a coisa certa. Vai fazer outra coisa. Especificamente, ele
fará o que você disse para fazer;

 O problema é que o programa que você escreveu não é o programa que você queria escrever.
O significado do programa (sua semântica) está errado. Identificar os erros
semânticos pode ser complicado, porque requer que você trabalhe retroativamente,
observando a saída do programa e tentando descobrir o que ele está fazendo.
O que é depuração?

Depuração experimental:
 Uma das habilidades mais importantes que você irá adquirir é a depuração;

 Embora possa ser frustrante, a depuração é uma das partes mais interessantes,
desafiadoras e intelectualmente ricas da programação;

 De certa forma, a depuração é como um trabalho de detetive. Você é confrontado com pistas
e tem que inferir os processos e os eventos que levaram aos resultados que você vê.
O que é depuração?

Depuração experimental:

 A depuração também é como uma ciência experimental. Depois de ter uma ideia do que está
errado, é necessário modificar o programa e tentar novamente. Se a hipótese estava correta,
então, você pode prever o resultado da modificação e dar um passo mais perto de um
programa de trabalho;

 Se a sua hipótese estava errada, você tem que inventar uma


nova. Para algumas pessoas, programar e depurar são a
mesma coisa. Ou seja, a programação é o processo de
depurar, gradualmente, um programa até que ele faça o que
você deseja. A ideia é que você comece com um programa que
faça algo e pequenas modificações, depurando-as à medida
em que avança, para que tenha, sempre, um programa
funcionando.
O que é depuração?

 Por exemplo, o Linux é um kernel de sistema operacional que contém milhões de linhas de
código, mas começou como um programa simples que foi utilizado para explorar o chip
Intel 80386.

Texto:
https://upload.wikimedia.org/
wikipedia/commons/0/04/KL_
Intel_i386DX.jpg
Interatividade

Como é chamado o programa que utilizamos para combinar o código-objeto com qualquer
código pré-escrito (programas), usado a partir de bibliotecas disponíveis (por exemplo, a
biblioteca matemática contém um código para as funções matemáticas, frequentemente,
usadas) para criar um código executável, código que o computador pode executar?
a) Linker.
b) Compiler.
c) Loader.
d) Open.
e) Close.
Resposta

Como é chamado o programa que utilizamos para combinar o código-objeto com qualquer
código pré-escrito (programas), usado a partir de bibliotecas disponíveis (por exemplo, a
biblioteca matemática contém um código para as funções matemáticas, frequentemente,
usadas) para criar um código executável, código que o computador pode executar?
a) Linker.
b) Compiler.
c) Loader.
d) Open.
e) Close.
Referências

 BENDERSKY, E. How debuggers work: part 3 – Debugging information. 2011. Disponível em:
https://eli.thegreenplace.net/2011/02/07/how-debuggers-work-part-3-debugging-
information#:~:text=Debugging%20information%20is%20generated%20by,stored%20alongsid
e%20the%20machine%20code. Acesso em: 06 mai. 2021.
 ELKNER, J.; DOWNEY, A. B.; MEYERS, C. The way of the program. 2010. Disponível em:
https://www.openbookproject.net/thinkcs/python/english2e/ch01.html. Acesso em:
06 mai. 2021.
 GEEKSFORGEEKS. Formation of Process from Program. 2020. Disponível em:
https://www.geeksforgeeks.org/formation-of-process-from-program/. Acesso em: 05 mai. 2021.
 KAHANWAL, B. ABSTRACTION LEVEL TAXONOMY OF
PROGRAMMING LANGUAGE FRAMEWORKS. International
Journal of Programming Languages and Applications (IJPLA),
v. 3, n. 4, oct. 2013. Disponível em:
https://arxiv.org/ftp/arxiv/papers/1311/1311.3293.pdf. Acesso
em: 04 mai. 2021.
Referências

 LATEEF, U.; OWOADE, A.; ABIMBOLA, B. L.; OGUNSANWO, G. INTRODUCTION TO


COMPUTER PROGRAMMING (BASIC). 2016. Disponível em:
https://www.researchgate.net/publication/317182495_INTRODUCTION_TO_COMPUTER_P
ROGRAMMING_BASIC. Acesso em: 04 mai. 2021.
 UNIX International, Inc. DWARF Debugging Information Format. 1992. Disponível em:
http://dwarfstd.org/doc/dwarf_1_1_0.pdf. Acesso em: 06 mai. 2021.
 USERWEB. Processing a High-Level Language Program. 2021. Disponível em:
https://userweb.cs.txstate.edu/~br02/cs1428/SupportFiles/Programming/HighLevelLangProce
ssing.htm. Acesso em: 06 mai. 2021.
ATÉ A PRÓXIMA!

Você também pode gostar