Você está na página 1de 25

Programação de Computadores

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.

A Bell Labs se retirou do projeto e em


1969 Ken Thompson começou a
reescrever uma versão mais simples do
Multics em Assembly chamada de Unics e
depois rebatizada de Unix.
Thompson desenvolveu o jogo Space
Travel em Fortran em 1969 para Multics
https://www.bell-labs.com/usr/dmr/www/spacetravel.html
Linguagens de programação
ALGOL 60 1963 - CPL
Combined Programming Language
Algorithmic Language 1960 ◦ Linguagem de programação multiparadigma.
◦ ALGOL é um uma família de linguagens. ◦ Grande, complexa e pouco elegante.
◦ É uma linguagem de programação de alto nível ◦ Queria permitir programação baixo nível e alto nível ao mesmo tempo.

voltada principalmente para aplicações científicas. 1967 – BCPL


◦ Primeira linguagem a buscar padronização. Basic Combined Programming Language
◦ Linguagem de programação estruturada, imperativa e processual.
◦ Primeira linguagem de programação estruturada.
◦ Muito mais simples que CPL.
◦ Estrutura baseada em blocos ◦ Destinada a escrever compiladores e sistemas.
◦ Permitia Recursão
◦ Passagem de parâmetro por valor e por referência 1969 - B
◦ Desenvolvido por Ken Thompson e Dennis Ritchie nos Laboratórios Bell.
◦ Funções aninhadas
◦ Foi uma Simplificação da linguagem BCPL para rodar no Unics
◦ Primeira implementação é de Dijkstra em 1960 ◦ Thompson removeu tudo que podia para que os programas ficassem
◦ Influenciou linguagens como PL/I, SIMULA 67, pequenos e rodasse nos computadores PDP-7 (18 bits, 4000 palavras)
◦ Recursiva, não-numérica e de aplicação independente da máquina.
ALGOL 68, BCPL, C, Pascal, Ada, C++ e Java.
◦ Não funcionava muito bem em máquinas modernas como PDP-11
Os minicomputadores
modernos
PDP-11
◦ Série de minicomputadores de 16 bits
fabricada pela empresa Digital Equipment
Corp. nas décadas de 70 e 80.
◦ 1998 a DEC foi comprada pela Compac e
em 2002 Foi comprada pela HP.
◦ Modelo 11/20 foi muito popular em
Universidades nos anos 70.
◦ Custava em torno de 11800 dólares.
◦ Suportava HD de 256 KB e 4 KB de RAM.
◦ Sistemas operacionais suportados:
◦ BATCH-11/DOS-11, DSM-11, IAS, P/OS, RSTS/E,
RSX-11, RT-11, Ultrix-11, Unix V7, SVR1, 2BSD

https://www.tecmundo.com.br/mercado/130511-historia-compaq-empresa-ousou-desafiar-gigante-video.htm Ken Thompson e Dennis Ritchie em um PDP-11/20


Linguagem C
Evolução do B ◦ Foram criados compiladores para outros sistemas
◦ É uma linguagem de programação compilada operacionais.
de propósito geral, estruturada, imperativa, ◦ 1980 – Compilador para IBM PC
procedural e padronizada. Foi desenvolvida ◦ 1989 – Padronizada pela ANSI (C89)
para servir como caixa de ferramenta (toolbox) ◦ 1990 – Padronizada pela ISO (C90)
do Unix. ◦ https://www.open-std.org/jtc1/sc22/wg14/
◦ 1971 - Dennis Ritchie converteu o compilador
de B para produzir código de máquina. Outras versões
◦ C99 – Revisão geral, novas funções, novos tipos,
◦ 1972 - Adicionou tipos diferentes de dados e
novas bibliotecas
passou a se chamar C.
◦ C11 – Novas regras para criação de novas
◦ 1973 - foi adicionado um pré-processador e o funcionalidades.
Núcleo do Unix foi reescrito em C. ◦ C17 – Revisão do padrão e adição de novas
◦ 1978 - Brian Kernighan e Dennis Ritchie funcionalidades. Também conhecido como C18 por
lançam o livro The C Programming Language ter sido lançada em 2018.
que popularizou a linguagem. ◦ C2X – Em desenvolvimento e deve se chamar C23
Linguagem C
VANTAGENS DESVANTAGENS
◦ Alta eficiência ◦ O excesso de liberdade pode gerar muitos
◦ Fácil de ser portado para outros sistemas erros
◦ Alto nível de controle da memória ◦ Pode ser difícil entender logo no começo.
◦ Grande liberdade de abstração ◦ Foi desenvolvido inicialmente para sistemas
◦ Compiladores, bibliotecas e interpretadores de e programas de sistemas e não para
diversas linguagens são escritos em C. programas utilitários.
◦ O código Assembly resultante é idêntico ao código ◦ Pode acessar regiões da memória indevidas
fonte. (buffer overflow).
◦ Permite usar Assembly no meio do código C ◦ Não possui coletor de lixo
◦ Usa linguagem de pré-processamento e macros. ◦ Não suporta classes, nem multithreading e
◦ Permite a inclusão de múltiplos arquivos de nem redes.
código fonte.
Compiladores C
GCC – É o compilador mais usado. É produzido pelo projeto GNU e é a base para o
Linux. Existem versões para Windows e Mac. Para Windows existe um pacote com
várias ferramentas para desenvolvedor chamada na MinGW.
LLVM - LLVM é uma infraestrutura de compilador escrita em C++, desenvolvida para
otimizar em tempos de compilação, ligação e execução de programas escritos em
linguagens de programação variadas. Clang é um front-end do LLVM.
Tiny C Compiler – Um compilador criado para trabalhar em computadores lentos e
com pouco espaço de memória.
Cascata de compilação
Codificação Editor
◦ Modulo fonte em C
Compilação Pré-processador C
◦ Modulo fonte expandido em C

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

Você também pode gostar