Escolar Documentos
Profissional Documentos
Cultura Documentos
Slide 9
Henrique D. Garcia
hdgarcia@udf.edu.br
Linguagens de
Programação
Linguagens de programação
Diálogo humano Alto nível (abstrato)
“Diálogo” rudimentar de I.A. .
Linguagem de comandos . Paradigma é um jeito de
classificar linguagens de acordo
Linguagem orientada a problema . com suas funcionalidades e sua
forma de “pensar” um problema.
Linguagem orientada a autômato .
Linguagem de montagem (assembler) .
Hardware Baixo nível (concreto)
Linguagens de programação
Linguagem de Máquina
◦ Na linguagem de máquina, a representação dos
dados e das operações (instruções) que constituem
um programa, é baseada no sistema binário, que é
a forma compreendida e executada pelo hardware
do sistema. Torna-se inviável escrever ou ler um
programa codificado na forma de uma string de bits.
Linguagem Assembly
◦ A linguagem de máquina de cada processador é
acompanhada de uma versão “legível” da
linguagem de máquina que é a chamada linguagem
simbólica Assembly. A linguagem Assembly é na
realidade uma versão legível da linguagem de
máquina composta por palavras abreviadas,
chamadas mnemônicos, indicando a operação a ser
realizada pelo processador.
Linguagens de programação
Linguagem orientada a Autômato: Linguagem orientada a problema
◦ É um paradigma de programação onde o ◦ São linguagens de alto nível, como a maioria
programa é pensado como sendo uma das linguagens de programação. Os
máquina de estados finitos (FSM – Finite State programas escritos nessas linguagens são
Machine) normalmente traduzidos para linguagem
◦ Um autômato é uma representação de uma assembly antes de ser traduzidos para
linguagem formal. linguagem de máquina.
◦ A linguagem formal é estudo de modelos ◦ Apresentam linguagem mais próxima do
matemáticos que possibilitam a especificação natural fazendo uso de palavras extraídas
e o reconhecimento de linguagens no geral do dicionário corrente.
◦ Autômatos desempenham um papel ◦ Um programa escrito em linguagem de alto
importante em teoria da computação, nível pode ser usado em qualquer máquina,
elaboração de compiladores, inteligência devendo apenas escolher o tradutor
artificial, análise sintática e verificação formal. correspondente.
Programa-Fonte e Programa-
Objeto
O programa em linguagem de alto nível é Compilador: traduz o Código-Fonte,
chamado de código-fonte ou programa- totalmente, para a linguagem de máquina,
fonte. antes de ser executado, gerando o Programa-
Objeto. O Programa-Objeto recebe um
Computador não entende linguagens de tratamento final de outro programa (linkagem),
alto nível e precisa ser convertido em para produzir um módulo de carga, que
linguagem de máquina. resultará em um programa pronto para ser
executado.
A conversão de código-fonte em código de
Interpretador: lê cada instrução do Código-
máquina é feita por tradutores. Fonte, linha por linha, verifica sua sintaxe e a
Existem 2 tipos de tradutores: converte para a linguagem de máquina. Só
após a tradução, executa o comando. Avança
Compiladores e Interpretadores
para a próxima linha e repete todo o processo,
até a última linha do Programa-Fonte (não cria
o Programa-Objeto)
Programa-Fonte e Programa-
Objeto
O programa em linguagem de alto nível é Compilador: traduz o Código-Fonte,
chamado de código-fonte ou programa- totalmente, para a linguagem de máquina,
fonte. antes de ser executado, gerando o Programa-
Objeto. O Programa-Objeto recebe um
Computador não entende linguagens de tratamento final de outro programa (linkagem),
alto nível e precisa ser convertido em para produzir um módulo de carga, que
linguagem de máquina. resultará em um programa pronto para ser
executado.
A conversão de código-fonte em código de
Interpretador: lê cada instrução do Código-
máquina é feita por tradutores. Fonte, linha por linha, verifica sua sintaxe e a
Existem 2 tipos de tradutores: converte para a linguagem de máquina. Só
após a tradução, executa o comando. Avança
Compiladores e Interpretadores
para a próxima linha e repete todo o processo,
até a última linha do Programa-Fonte (não cria
o Programa-Objeto)
Linguagem
Compilada VS Interpretada
COMPILADOR INTERPRETADOR
Vantagens: Vantagens
◦ Mais rápido ◦ Depuração é mais rápida
◦ Estruturas já estão prontas durante execução. ◦ Programação é mais rápida
◦ Oculta código fonte do utilizador ◦ Consome menos memória
◦ Permite otimizar código fonte durante a compilação ◦ Resultado imediato de cada rotina
Desvantagens Desvantagens
◦ Várias etapas de tradução ◦ Mais lento
◦ Programa final é maior ◦ Menor controle sobre o programa
◦ Processo de correção de erros é mais lento e ◦ Necessário fornecer o código fonte ao utilizador
demorado
Ex: C, C++, Rust, Go, COBOL, D, Nim, Ocam, etc. Ex: Python, JavaScript, PHP, Ruby, Haskell,
Perl, Lua, Groov, etc,
Linguagem
Compilada VS Interpretada
COMPILADOR INTERPRETADOR
Vantagens: Vantagens
◦ Mais rápido ◦ Depuração é mais rápida
◦ Estruturas já estão prontas durante execução. ◦ Programação é mais rápida
◦ Oculta código fonte do utilizador ◦ Consome menos memória
◦ Permite otimizar código fonte durante a compilação ◦ Resultado imediato de cada rotina
Desvantagens Desvantagens
◦ Várias etapas de tradução ◦ Mais lento
◦ Programa final é maior ◦ Menor controle sobre o programa
◦ Processo de correção de erros é mais lento e ◦ Necessário fornecer o código fonte ao utilizador
demorado
Ex: C, C++, Rust, Go, COBOL, D, Nim, Ocam, etc. Ex: JavaScript, PHP, Ruby, Haskell, Perl, Lua,
Groov, etc,
Linguagem esotérica
Linguagem de programação esotérica é
uma linguagem de programação projetada
para testar os limites dos projetos de
linguagem de computadores, como uma
aplicação da teoria, ou como uma
brincadeira destinada a mostrar como algo
não deve ser feito.
https://en.wikipedia.org/wiki/Esoteric_progr
amming_language
Linguagem esotérica
Ex: Hello World em C
Linguagem esotérica
Ex: Hello World em
Whitespace
Linguagem esotérica
Ex: Hello World em
Piet
Linguagem esotérica
Ex: Hello World em Malbolge
Linguagem esotérica
Ex: Hello World em
Brainfuck
Linguagem esotérica
Ex: Hello World em
Arnold.C
Unix
Em 1965 a Bell Labs (AT&T), MIT e UNIX: Making Computers Easier To Use -- AT&T
General Eletric se reuniram para criar um Archives film from 1982, Bell Laboratories
https://www.youtube.com/watch?v=XvDZLjaCJuw
sistema operacional chamado Multics.
◦ Sistema multiusuário e multi-processo de
tempo compartilhado.
Compilador C
◦ Modulo em linguagem assembly
Assembler
◦ Modulo objeto deste programa e de arquivos da biblioteca
Linker
◦ Modulo de carga (exe)
Execução
Loader
IDE
◦ Dev-C++ https://www.onlinegdb.com/
◦ Code::Blocks
◦ CLion
https://replit.com/languages/c
◦ XCode https://www.scaler.com/topics/c/online-c-compiler/
◦ Visual Studio Code
◦
https://www.mycompiler.io/online-c-compiler
Eclipse
◦ NetBeans https://ideone.com/
◦ Atom
◦
https://www.jdoodle.com/c-online-compiler/
GNAT Programming Studio
◦ CodeLite https://www.online-cpp.com/online_c_compiler
◦ PlatformIO
https://www.programiz.com/c-programming/online-
◦ KDevelop compiler/
◦ Cscope
Fim