SlideShare ist ein Scribd-Unternehmen logo
1 von 43
História das Linguagens de Programação
O que é linguagem  de programação Uma linguagem de programação é um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias.
O conjunto de palavras (tokens), compostos de acordo com essas regras, constituem o código fonte de um software. Esse código fonte é depois traduzido para código de máquina, que é executado pelo processador
Uma das principais metas das linguagens de programação é permitir que programadores tenham uma maior produtividade, permitindo expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programação são ferramentas importantes para que programadores e engenheiro de software possam escrever programas mais organizados e com maior rapidez
O primeiro trabalho de linguagem de programação foi criado para um computador que existia, criado pelo Ada Lovelace, esposa de William King-Noel. O projeto do primeiro computador foi idealizado por Charles Babbage que, após gastar fortunas e um longo tempo, não conseguiu concretizar o projeto. A linguagem de programação ADA foi batizada em homenagem a esta primeira programadora.
Uma das primeiras linguagens de programação para computadores foi provavelmente Plankalkül, criada por Konrad Zuse na Alemanha Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de programação. A primeira linguagem de programação de alto nível amplamente usada foi Fortran, criada em 1954
Em 1957 foi criada B-O, que daria origem a Flow-Matic (1958), antecessor imediato de Cobol, de 1959. LIsp e Algol foram criadas em 1958.
Diferença entre linguagem interpretada,compilada e scripts
Linguagem interpretada É uma linguagem de programação, onde o código fontr nessa linguagem é executado por um programa de computador chamado interpretador, que em seguida é executado pelo sistema operacional ou processador. Mesmo que um código em uma linguagem passe pelo processo de compilação, a linguagem pode ser considerada interpretada, se o programa resultante não for executado diretamente pelo sistema operacional ou processador. Um exemplo disso é o Bytecode, que é um tipo de linguagem interpretada, que passa pelo processo de compilação e, em seguida, é executado por uma máquina virtual, cuja sintaxe é similar a código de máquina e cada comando ocupa 1  byte. Existem também, as linguagens de script, que são linguagens interpretadas, executadas do interior de programas e/ou de outras linguagens de programação.
Linguagem compilada Éuma linguagem de programação, onde o código fonte nessa linguagem é executado diretamente pelo sistema operacional ou pelo processador, após ser traduzido, através de um processo chamado compilação, usando um programa de computador chamado compilador, para uma linguagem de baixo nível, como linguagem de montagem ou código de máquina.
Linguagem de script Também conhecido como linguagem de scripting, ou linguagem de extensão, são linguagens de programação executadas do interior de programas e/ou de outras linguagens de programação, não se restringindo a esses ambientes. As linguagens de script servem para estender a funcionalidade de um programa e/ou controlá-lo, acessando sua API e, são freqüentemente usadas como ferramentas de configuração e instalação em sistemas operacionais(Shell script), como por exemplo, em alguns sistemas operacionais da família Linux, que usam a linguagem bash. São também frequentemente usadas em jogos, como por exemplo, o jogo Impossible Creatures, que usa a linguagem Lua para controlar as ações dos personagens e o ambiente de batalha.
O que é um paradigma de programação? Modelo, padrão ou estilo de programação  suportado por linguagens que agrupam certas características comuns A classificação de linguagens em paradigmas é uma conseqüência de decisões de projeto que impactam radicalmente a forma na qual uma aplicação real é modelada do ponto de vista computacional
O Paradigma Imperativo Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado Paradigma também denominado de procedural, por incluir sub-rotinas ou procedimentos como mecanismo de estruturação Primeiro paradigma a surgir e ainda é o dominante
Modelo Computacional do Paradigma Imperativo Entrada Saída Programa Estado
Vantagens do modelo imperativo Eficiência (embute modelo de Von Neumann) Modelagem “natural” de aplicações do mundo real Paradigma dominante e bem estabelecido
Desvantagens do paradigma imperativo Relacionamento indireto entre E/S resulta em: difícil legibilidade erros introduzidos durante manutenção descrições demasiadamente operacionais          focalizam o como e não o que
O Paradigma Orientado a Objetos Não é um paradigma no sentido estrito: é uma subclassificação do imperativo A diferença é mais de metodologia quanto à concepção e modelagem do sistema  A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado (atributos) e operações (métodos) sobre este Classes podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos)
Modelo Computacional do Paradigma Orientado a Objetos Entrada Saída Programa Entrada Saída Programa Estado Estado Entrada Saída Programa Entrada Saída Entrada Saída Programa Programa Estado Estado Estado ... . . . . . . . . .
Vantagens do Paradigma  Orientado a objetos Todas as do estilo imperativo Classes estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidade Aceitação comercial crescente
Problemas do Paradigma OO Semelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturação
O Paradigma Orientado a Aspectos Não é um paradigma no sentido estrito A diferença é mais de metodologia quanto à concepção e modelagem do sistema  É uma nova forma de modularização: 	Para “requisitos” que afetam várias partes de uma aplicação
O Paradigma Orientado a Aspectos A grosso modo, uma aplicação é estruturada em módulos (aspectos) que agrupam pontos de interceptação de código (pointcuts)  que afetam outros módulos (classes) ou outros aspectos, definindo novo comportamento (advice) Aspectos podem ser estendidos e/ou usados como tipos
Modelo Computacional do Paradigma Orientado a Aspectos Entrada Saída Programa Entrada Saída Programa Estado Estado Entrada Saída Programa Entrada Saída Entrada Saída Programa Programa Estado Estado Estado Aspecto Aspecto ... . . . . . . . . .
Vantagens do Paradigma      Orientado a Aspectos Todas as do paradigma OO Útil para modularizar conceitos que a Orientação a Objetos não consegue (crosscutting concerns) Em especial, aqueles ligados a requisitos não funcionais Aumenta a extensibilidade e o reuso
Problemas do Paradigma Orientado a Aspectos Semelhantes aos do OO Ainda é preciso diminuir a relação entre classes e aspectos Problemas de conflito entre aspectos que afetam a mesma classe
O Paradigma Funcional Programas são funções que descrevem uma relação explícita e precisa entre E/S Estilo declarativo: não há o conceito de estado nem comandos como atribuição  Conceitos sofisticados como polimorfismo, funções de alta ordem e avaliação sob demanda  Aplicação: prototipação em geral, IA, concorrência, ...
Modelo Computacional do Paradigma Funcional Entrada Saída Programa
Visão Crítica do Paradigma Funcional Vantagens ,[object Object]
- Prova de propriedades
- Transformação (exemplo: otimização)
- Concorrência explorada de forma naturalProblemas ,[object Object]
Implementações ineficientes
Mecanismos primitivos de E/S e formatação,[object Object]
Modelo Computacional do Paradigma Lógico Entrada Saída Programa
Visão Crítica do Paradigma Lógico Vantagens ,[object Object]
Permite concepção da aplicação em um alto nível de abstração (através de associações entre E/S)Problemas ,[object Object]
Linguagens usualmente não possuem tipos,  nem são de alta ordem,[object Object]
Gerações de Linguagem de Programação. Segunda Geração: Linguagem de montagem (Assembly) ,[object Object],[object Object]
Gerações de Linguagem de Programação. Quarta Geração: Linguagem de alto nível (FOCUS, NATURAL, SQL...) ,[object Object]
Diferença entre a 3GL e 4GL, é que as primeiras descrevem como fazer algo, enquanto a segunda descreve o que você quer que seja feito.,[object Object]
Em 1982 o governo japonês lançou o projeto FGCS , que visava construir uma maquina paralela incluindo programação lógica e técnicas de inteligência artificial que teve fim dez anos depois,por não despertar muito interesse na indústria.,[object Object]
Evolução centrada em níveis crescentes de abstração Linguagens de máquina Endereços físicos e operation code Linguagens Assembly Mnemônicos e labels simbólicos Linguagens de “alto nível” Variáveis e atribuição (versus acesso direto à memória) Estruturas de dados (versus estruturas de armazenamento)
Evolução centrada em níveis crescentes de abstração Estruturas de controle (versus jumps e gotos) Estrutura de blocos como forma de encapsulamento Generalização e parametrização (abstração de tipos de valores)

Weitere ähnliche Inhalte

Was ist angesagt?

Programação 1
Programação 1Programação 1
Programação 1essa
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoAdriano Teixeira de Souza
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadoresLCCIMETRO
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iiiRay Fran Pires
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação12anogolega
 
Fundamentos da linguagem c
Fundamentos da linguagem cFundamentos da linguagem c
Fundamentos da linguagem cMarcia Santana
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Leinylson Fontinele
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagensPaulo Muniz
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 

Was ist angesagt? (19)

Software
SoftwareSoftware
Software
 
Programação 1
Programação 1Programação 1
Programação 1
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
 
1.1.paradigmas
1.1.paradigmas1.1.paradigmas
1.1.paradigmas
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 
02 historia da programação
02   historia da programação02   historia da programação
02 historia da programação
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Fundamentos da linguagem c
Fundamentos da linguagem cFundamentos da linguagem c
Fundamentos da linguagem c
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagens
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 

Andere mochten auch

Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 
Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Pacc UAB
 
Aula 8 - Lógica de Programação - Variáveis, Tipos de dados e Operadores
Aula 8 - Lógica de Programação - Variáveis, Tipos de dados e OperadoresAula 8 - Lógica de Programação - Variáveis, Tipos de dados e Operadores
Aula 8 - Lógica de Programação - Variáveis, Tipos de dados e OperadoresAndré Constantino da Silva
 
Linguagem de Programação II - Plano de Ensino
Linguagem de Programação II - Plano de EnsinoLinguagem de Programação II - Plano de Ensino
Linguagem de Programação II - Plano de EnsinoDaniel Arndt Alves
 
Linguagem de Programação
Linguagem de ProgramaçãoLinguagem de Programação
Linguagem de Programaçãomoiplabs
 
Linguagem de Programação II - Apresentação da Disciplina
Linguagem de Programação II - Apresentação da DisciplinaLinguagem de Programação II - Apresentação da Disciplina
Linguagem de Programação II - Apresentação da DisciplinaDaniel Arndt Alves
 
Estruturas condicionais e de repetição
Estruturas condicionais e de repetiçãoEstruturas condicionais e de repetição
Estruturas condicionais e de repetiçãoEstela Muenchen Mentges
 
Programming languages
Programming languagesProgramming languages
Programming languagesvito_carleone
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativoTony Alexander Hild
 
Montagem de computadores aula 1
Montagem de computadores   aula 1Montagem de computadores   aula 1
Montagem de computadores aula 1Michel Chagas
 
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisSeminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisRogério Moraes de Carvalho
 

Andere mochten auch (13)

Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1
 
Aula 8 - Lógica de Programação - Variáveis, Tipos de dados e Operadores
Aula 8 - Lógica de Programação - Variáveis, Tipos de dados e OperadoresAula 8 - Lógica de Programação - Variáveis, Tipos de dados e Operadores
Aula 8 - Lógica de Programação - Variáveis, Tipos de dados e Operadores
 
JAVA - Controle de programa
JAVA - Controle de programaJAVA - Controle de programa
JAVA - Controle de programa
 
Linguagem de Programação II - Plano de Ensino
Linguagem de Programação II - Plano de EnsinoLinguagem de Programação II - Plano de Ensino
Linguagem de Programação II - Plano de Ensino
 
Linguagem de Programação
Linguagem de ProgramaçãoLinguagem de Programação
Linguagem de Programação
 
Apostila: CSS
Apostila: CSSApostila: CSS
Apostila: CSS
 
Linguagem de Programação II - Apresentação da Disciplina
Linguagem de Programação II - Apresentação da DisciplinaLinguagem de Programação II - Apresentação da Disciplina
Linguagem de Programação II - Apresentação da Disciplina
 
Estruturas condicionais e de repetição
Estruturas condicionais e de repetiçãoEstruturas condicionais e de repetição
Estruturas condicionais e de repetição
 
Programming languages
Programming languagesProgramming languages
Programming languages
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 
Montagem de computadores aula 1
Montagem de computadores   aula 1Montagem de computadores   aula 1
Montagem de computadores aula 1
 
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisSeminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
 

Ähnlich wie Linguagem da programação

Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programaçãoSandro Lopes
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmosslashmelhor
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para LinuxChris x-MS
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 
Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisHenry Raúl González Brito
 
Aula 03 isc -softwares-hardwares-arquiteturas
Aula 03   isc -softwares-hardwares-arquiteturasAula 03   isc -softwares-hardwares-arquiteturas
Aula 03 isc -softwares-hardwares-arquiteturasFábio Andrade
 
Algoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardoAlgoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardozedaesquina98
 
Programacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdfProgramacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdfMuseiwaLopes
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem pythonBruno Maspoli
 

Ähnlich wie Linguagem da programação (20)

Aula01 - Analise e Programação
Aula01 - Analise e ProgramaçãoAula01 - Analise e Programação
Aula01 - Analise e Programação
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
Apostila c
Apostila cApostila c
Apostila c
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmos
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para Linux
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores Digitais
 
Aula 03 isc -softwares-hardwares-arquiteturas
Aula 03   isc -softwares-hardwares-arquiteturasAula 03   isc -softwares-hardwares-arquiteturas
Aula 03 isc -softwares-hardwares-arquiteturas
 
Algoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardoAlgoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardo
 
Programacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdfProgramacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdf
 
Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Aula 01 algoritmo
Aula 01 algoritmoAula 01 algoritmo
Aula 01 algoritmo
 

Kürzlich hochgeladen

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 

Linguagem da programação

  • 1. História das Linguagens de Programação
  • 2. O que é linguagem de programação Uma linguagem de programação é um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias.
  • 3. O conjunto de palavras (tokens), compostos de acordo com essas regras, constituem o código fonte de um software. Esse código fonte é depois traduzido para código de máquina, que é executado pelo processador
  • 4. Uma das principais metas das linguagens de programação é permitir que programadores tenham uma maior produtividade, permitindo expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programação são ferramentas importantes para que programadores e engenheiro de software possam escrever programas mais organizados e com maior rapidez
  • 5. O primeiro trabalho de linguagem de programação foi criado para um computador que existia, criado pelo Ada Lovelace, esposa de William King-Noel. O projeto do primeiro computador foi idealizado por Charles Babbage que, após gastar fortunas e um longo tempo, não conseguiu concretizar o projeto. A linguagem de programação ADA foi batizada em homenagem a esta primeira programadora.
  • 6. Uma das primeiras linguagens de programação para computadores foi provavelmente Plankalkül, criada por Konrad Zuse na Alemanha Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de programação. A primeira linguagem de programação de alto nível amplamente usada foi Fortran, criada em 1954
  • 7. Em 1957 foi criada B-O, que daria origem a Flow-Matic (1958), antecessor imediato de Cobol, de 1959. LIsp e Algol foram criadas em 1958.
  • 8. Diferença entre linguagem interpretada,compilada e scripts
  • 9. Linguagem interpretada É uma linguagem de programação, onde o código fontr nessa linguagem é executado por um programa de computador chamado interpretador, que em seguida é executado pelo sistema operacional ou processador. Mesmo que um código em uma linguagem passe pelo processo de compilação, a linguagem pode ser considerada interpretada, se o programa resultante não for executado diretamente pelo sistema operacional ou processador. Um exemplo disso é o Bytecode, que é um tipo de linguagem interpretada, que passa pelo processo de compilação e, em seguida, é executado por uma máquina virtual, cuja sintaxe é similar a código de máquina e cada comando ocupa 1 byte. Existem também, as linguagens de script, que são linguagens interpretadas, executadas do interior de programas e/ou de outras linguagens de programação.
  • 10. Linguagem compilada Éuma linguagem de programação, onde o código fonte nessa linguagem é executado diretamente pelo sistema operacional ou pelo processador, após ser traduzido, através de um processo chamado compilação, usando um programa de computador chamado compilador, para uma linguagem de baixo nível, como linguagem de montagem ou código de máquina.
  • 11. Linguagem de script Também conhecido como linguagem de scripting, ou linguagem de extensão, são linguagens de programação executadas do interior de programas e/ou de outras linguagens de programação, não se restringindo a esses ambientes. As linguagens de script servem para estender a funcionalidade de um programa e/ou controlá-lo, acessando sua API e, são freqüentemente usadas como ferramentas de configuração e instalação em sistemas operacionais(Shell script), como por exemplo, em alguns sistemas operacionais da família Linux, que usam a linguagem bash. São também frequentemente usadas em jogos, como por exemplo, o jogo Impossible Creatures, que usa a linguagem Lua para controlar as ações dos personagens e o ambiente de batalha.
  • 12. O que é um paradigma de programação? Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns A classificação de linguagens em paradigmas é uma conseqüência de decisões de projeto que impactam radicalmente a forma na qual uma aplicação real é modelada do ponto de vista computacional
  • 13. O Paradigma Imperativo Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado Paradigma também denominado de procedural, por incluir sub-rotinas ou procedimentos como mecanismo de estruturação Primeiro paradigma a surgir e ainda é o dominante
  • 14. Modelo Computacional do Paradigma Imperativo Entrada Saída Programa Estado
  • 15. Vantagens do modelo imperativo Eficiência (embute modelo de Von Neumann) Modelagem “natural” de aplicações do mundo real Paradigma dominante e bem estabelecido
  • 16. Desvantagens do paradigma imperativo Relacionamento indireto entre E/S resulta em: difícil legibilidade erros introduzidos durante manutenção descrições demasiadamente operacionais focalizam o como e não o que
  • 17. O Paradigma Orientado a Objetos Não é um paradigma no sentido estrito: é uma subclassificação do imperativo A diferença é mais de metodologia quanto à concepção e modelagem do sistema A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado (atributos) e operações (métodos) sobre este Classes podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos)
  • 18. Modelo Computacional do Paradigma Orientado a Objetos Entrada Saída Programa Entrada Saída Programa Estado Estado Entrada Saída Programa Entrada Saída Entrada Saída Programa Programa Estado Estado Estado ... . . . . . . . . .
  • 19. Vantagens do Paradigma Orientado a objetos Todas as do estilo imperativo Classes estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidade Aceitação comercial crescente
  • 20. Problemas do Paradigma OO Semelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturação
  • 21. O Paradigma Orientado a Aspectos Não é um paradigma no sentido estrito A diferença é mais de metodologia quanto à concepção e modelagem do sistema É uma nova forma de modularização: Para “requisitos” que afetam várias partes de uma aplicação
  • 22. O Paradigma Orientado a Aspectos A grosso modo, uma aplicação é estruturada em módulos (aspectos) que agrupam pontos de interceptação de código (pointcuts) que afetam outros módulos (classes) ou outros aspectos, definindo novo comportamento (advice) Aspectos podem ser estendidos e/ou usados como tipos
  • 23. Modelo Computacional do Paradigma Orientado a Aspectos Entrada Saída Programa Entrada Saída Programa Estado Estado Entrada Saída Programa Entrada Saída Entrada Saída Programa Programa Estado Estado Estado Aspecto Aspecto ... . . . . . . . . .
  • 24. Vantagens do Paradigma Orientado a Aspectos Todas as do paradigma OO Útil para modularizar conceitos que a Orientação a Objetos não consegue (crosscutting concerns) Em especial, aqueles ligados a requisitos não funcionais Aumenta a extensibilidade e o reuso
  • 25. Problemas do Paradigma Orientado a Aspectos Semelhantes aos do OO Ainda é preciso diminuir a relação entre classes e aspectos Problemas de conflito entre aspectos que afetam a mesma classe
  • 26. O Paradigma Funcional Programas são funções que descrevem uma relação explícita e precisa entre E/S Estilo declarativo: não há o conceito de estado nem comandos como atribuição Conceitos sofisticados como polimorfismo, funções de alta ordem e avaliação sob demanda Aplicação: prototipação em geral, IA, concorrência, ...
  • 27. Modelo Computacional do Paradigma Funcional Entrada Saída Programa
  • 28.
  • 29. - Prova de propriedades
  • 31.
  • 33.
  • 34. Modelo Computacional do Paradigma Lógico Entrada Saída Programa
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42. Evolução centrada em níveis crescentes de abstração Linguagens de máquina Endereços físicos e operation code Linguagens Assembly Mnemônicos e labels simbólicos Linguagens de “alto nível” Variáveis e atribuição (versus acesso direto à memória) Estruturas de dados (versus estruturas de armazenamento)
  • 43. Evolução centrada em níveis crescentes de abstração Estruturas de controle (versus jumps e gotos) Estrutura de blocos como forma de encapsulamento Generalização e parametrização (abstração de tipos de valores)
  • 44. Quanto ao grau de abstração Linguagem de programação de baixo nível, cujos simbolos são uma representação direta do código de máquina que será gerado, onde cada comando da linguagem equivale a um "opcode" do processador, como Assembly Linguagem de programação de médio nível, que possui símbolos que podem ser convertidos diretamente para código de máquina (goto, expressões matemáticas, atribuição de variáveis), mas também símbolos complexos que são convertidos por um compilador. Exemplo: C, C++ Linguagem de programação de alto nível, composta de símbolos mais complexos, inteligível pelo ser humano e não-executável diretamente pela máquina, no nível da especificação de algoritmos, como Pascal, Fortran, ALGOL e SQL
  • 45. Exemplos Assembly Criada na década de 50, o Assembly foi das primeiras linguagens de programação a aparecer. Ela usa uma sintaxe complicada e "exageradamente" difícil, isto porque, antes da década de 50 os programadores de máquinas tinham que escrever instruções em código binário, qualquer coisa como: 0110010110011011010110011010111010110101 ... Para escrever uma instrução. Na verdade, o Assembly foi criado para facilitar o uso dessa tarefa, mas é considerado uma linguagem de baixo nível, pois tudo o que o processador interpreta tem que ser descrito pelo programador. Assim o código acima seria "add EAX" em Assembly. Bastava apenas, depois de estar concluída a escrita do código, rodar o compilador e tínhamos o programa.
  • 46. Exemplos Fortran Esta linguagem Fortran (Formula Translator) é uma linguagem de Alto nível, que foi criada partindo do problema e da dificuldade apresentadas pelo Assembly. Apareceu também na década de 50 e foi considerada uma das melhores linguagens da época. Aqui temos várias funções e instruções pré-definidas que nos permite poupar tempo na datilografia de instruções base do processador, ao contrário da linguagem Assembly.
  • 47. Exemplos Pascal Outra linguagem de Alto nível dos anos 60, bem estruturada, mas com regras rígidas, o que a torna difícil de modelar, para se criar novas idéias. É a típica linguagem usada para iniciar os cursos de Programação. Habitualmente ambientes de desenvolvimento (IDE) como o FreePascal, o Kylix e o Delphi são ótimas opções para se programar em Pascal.