SlideShare uma empresa Scribd logo
História das Linguagens de Programação
O que é linguagem  de programaçãoUma 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 scriptTambé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 comunsA 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 ImperativoProgramas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estadoParadigma também denominado de procedural, por incluir sub-rotinas ou procedimentos como mecanismo de estruturaçãoPrimeiro paradigma a surgir e ainda é o dominante
Modelo Computacional do Paradigma ImperativoEntradaSaídaProgramaEstado
Vantagens do modelo imperativoEficiência (embute modelo de Von Neumann)Modelagem “natural” de aplicações do mundo realParadigma dominante e bem estabelecido
Desvantagens do paradigma imperativoRelacionamento indireto entre E/S resulta em:difícil legibilidadeerros introduzidos durante manutençãodescrições demasiadamente operacionais          focalizam o como e não o que
O Paradigma Orientado a ObjetosNão é um paradigma no sentido estrito: é uma subclassificação do imperativoA 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 esteClasses podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos)
Modelo Computacional do Paradigma Orientado a ObjetosEntradaSaídaProgramaEntradaSaídaProgramaEstadoEstadoEntradaSaídaProgramaEntradaSaídaEntradaSaídaProgramaProgramaEstadoEstadoEstado............
Vantagens do Paradigma  Orientado a objetosTodas as do estilo imperativoClasses estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidadeAceitação comercial crescente
Problemas do Paradigma OOSemelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturação
O Paradigma Orientado a AspectosNão é um paradigma no sentido estritoA 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 AspectosA 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 AspectosEntradaSaídaProgramaEntradaSaídaProgramaEstadoEstadoEntradaSaídaProgramaEntradaSaídaEntradaSaídaProgramaProgramaEstadoEstadoEstadoAspectoAspecto............
Vantagens do Paradigma      Orientado a AspectosTodas 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 funcionaisAumenta a extensibilidade e o reuso
Problemas do Paradigma Orientado a AspectosSemelhantes aos do OOAinda é preciso diminuir a relação entre classes e aspectosProblemas de conflito entre aspectos que afetam a mesma classe
O Paradigma FuncionalProgramas são funções que descrevem uma relação explícita e precisa entre E/SEstilo 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 FuncionalEntradaSaídaPrograma
Visão Crítica do Paradigma FuncionalVantagensManipulação de programas mais simples:
- Prova de propriedades
- Transformação (exemplo: otimização)
- Concorrência explorada de forma naturalProblemas“O mundo não é funcional!”
Implementações ineficientes
Mecanismos primitivos de E/S e formataçãoO Paradigma LógicoProgramas são relações entre E/SEstilo declarativo, como no paradigma funcionalNa prática, inclui características imperativas, por questão de eficiênciaAplicações: prototipação em geral, sistemas especialistas,  banco de dados, ...
Modelo Computacional do Paradigma LógicoEntradaSaídaPrograma
Visão Crítica do Paradigma LógicoVantagensEm princípio, todas do paradigma funcional
Permite concepção da aplicação em um alto nível de abstração (através de associações entre E/S)ProblemasEm princípio, todos do paradigma funcional
Linguagens usualmente não possuem tipos,  nem são de alta ordemGerações de Linguagem de Programação.Primeira Geração: Linguagem de maquina (Binária)Usa apenas 0 (zero) e 1 (um) para programarsoftwares.     Originalmente nenhum tradutor foi usado para montaras linguagens de primeira geração. As instruções de programação eram submetidas através dos interruptoreslocalizados no painel frontal de sistemas de computadores. O principal benefício na primeira geração é que o código escrito pelo usuário é muito rápido e eficiente, desde que este código seja diretamente executado pela CPU.
Gerações de Linguagem de Programação.Segunda Geração: Linguagem de montagem (Assembly)É uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa. A linguagem de máquina, que é um mero padrão de bit, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemônicos, ou seja, enquanto um computador sabe o que a instrução-máquina IA-21 (10110000 01100001) faz, para os programadores é mais fácil recordar a representação equivalente em instruções mnemônicasGerações de Linguagem de Programação.Terceira Geração:Linguagem de alto nível (Fortran, C, ALGOL , COBOL...)projetada para ser facilmente entendida pelo ser humano, incluindo coisas como variáveis com nomes. Um exemplo disso seria:     COMPUTE COMISSAO = VENDA * 0,5
Gerações de Linguagem de Programação.Quarta Geração: Linguagem de alto nível (FOCUS, NATURAL, SQL...)São linguagens capazes de gerar código por si só. São linguagens orientadas a objetos, tornando possível a reutilização de partes do código para outros programas.
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.Gerações de Linguagem de Programação.Quinta Geração:Linguagens naturais (LISP)São linguagens de programação usadas para criar programas para inteligência artificial e sistemas especialistas que permitem aos programadores se comunicarem com o computador usando sentenças normais.
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.Tipos de Linguagem de programaçãoFracamente tipada, como PHP e Smalltalk, onde o tipo da variável muda dinamicamente conforme a situação. Fortemente tipada, como Java e Ruby, onde o tipo da variável, uma vez atribuído, se mantém o mesmo até ser descartada da memória. Dinamicamente tipada, como Perl, Python e Ruby, onde o tipo da variável é definido em tempo de execução. Estaticamente tipada, como Java e C, onde o tipo da variável é definido em tempo de compilação.
Evolução centrada em níveis crescentes de abstraçãoLinguagens de máquinaEndereços físicos e operation codeLinguagens AssemblyMnemônicos e labels simbólicosLinguagens 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çãoEstruturas de controle (versus jumps e gotos)Estrutura de blocos como forma de encapsulamentoGeneralização e parametrização (abstração de tipos de valores)

Mais conteúdo relacionado

PPT
Linguagem de programação
PPTX
Linguágens de programação
PDF
Linguagens de programação
PPTX
Introdução a Linguagem de Programação
PPTX
Linguagens de programação
PDF
Linguagens de programação
PPTX
Linguagens de Programação
PDF
Conceitos Iniciais de Linguagens de Programação
Linguagem de programação
Linguágens de programação
Linguagens de programação
Introdução a Linguagem de Programação
Linguagens de programação
Linguagens de programação
Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação

Mais procurados (18)

PDF
PDF
Programação 1
PDF
Paradigmas de Linguagens de Programação - Classificações
PDF
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
PPT
Paradigmas De Linguagem De Programação.
PDF
Paradigmas de programação
PDF
Paradigmas de Linguagens de Programação - Introdução
PDF
1.1.paradigmas
PPTX
02 historia da programação
PPT
Int. sistemas de informação iii
PDF
Paradigmas de Linguagem
PPTX
Linguagens de Programação
PDF
Fundamentos da linguagem c
PDF
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
DOCX
Critérios de avaliação de linguagens
PDF
Linguagen..
PDF
01 aula1 habib
PDF
Linguagens de programação 03-12-09
Programação 1
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas De Linguagem De Programação.
Paradigmas de programação
Paradigmas de Linguagens de Programação - Introdução
1.1.paradigmas
02 historia da programação
Int. sistemas de informação iii
Paradigmas de Linguagem
Linguagens de Programação
Fundamentos da linguagem c
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Critérios de avaliação de linguagens
Linguagen..
01 aula1 habib
Linguagens de programação 03-12-09
Anúncio

Destaque (13)

PPT
Paradigmas de Linguagens de programacao - Aula #2
PDF
Aula 2 - Introdução à programação de computadores - parte1
PDF
Aula 8 - Lógica de Programação - Variáveis, Tipos de dados e Operadores
PPTX
JAVA - Controle de programa
PDF
Linguagem de Programação II - Plano de Ensino
ODP
Linguagem de Programação
PDF
Apostila: CSS
PDF
Linguagem de Programação II - Apresentação da Disciplina
PPTX
Estruturas condicionais e de repetição
PPSX
Programming languages
PDF
Introdução ao paradigma imperativo
PPTX
Montagem de computadores aula 1
PDF
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Paradigmas de Linguagens de programacao - Aula #2
Aula 2 - Introdução à programação de computadores - parte1
Aula 8 - Lógica de Programação - Variáveis, Tipos de dados e Operadores
JAVA - Controle de programa
Linguagem de Programação II - Plano de Ensino
Linguagem de Programação
Apostila: CSS
Linguagem de Programação II - Apresentação da Disciplina
Estruturas condicionais e de repetição
Programming languages
Introdução ao paradigma imperativo
Montagem de computadores aula 1
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Anúncio

Semelhante a Linguagem da programação (20)

ODP
Aula01 - Analise e Programação
PPT
Técnicas_Implementação
DOCX
Linguagem de programação
PPT
Apresentação final
PDF
Cap02
PDF
Cap02
PDF
Cap02
PDF
2-Compreender os principais conceitos de desenvolvimento.pdf
PDF
Lista exercicios algoritmos
PDF
Linguagens de programação 03-12-09
DOC
Aula de C para Linux
PDF
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
PDF
Noções Básicas do Software dos Computadores Digitais
PPTX
Aula 03 isc -softwares-hardwares-arquiteturas
PDF
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DOCX
Algoritmia para o site do 10gi marcelo e ricardo
PDF
Programacao_Concorrente slide.pdf
PDF
Comparativo do uso de linguagens de programação e geradores de código no dese...
DOCX
Trabalho linguagem python
Aula01 - Analise e Programação
Técnicas_Implementação
Linguagem de programação
Apresentação final
Cap02
Cap02
Cap02
2-Compreender os principais conceitos de desenvolvimento.pdf
Lista exercicios algoritmos
Linguagens de programação 03-12-09
Aula de C para Linux
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
Noções Básicas do Software dos Computadores Digitais
Aula 03 isc -softwares-hardwares-arquiteturas
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Algoritmia para o site do 10gi marcelo e ricardo
Programacao_Concorrente slide.pdf
Comparativo do uso de linguagens de programação e geradores de código no dese...
Trabalho linguagem python

Último (20)

PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Aula sobre banco de dados com firebase db
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PDF
Processos na gestão de transportes, TM100 Col18
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Aula sobre desenvolvimento de aplicativos
Aula sobre banco de dados com firebase db
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Apple Pippin Uma breve introdução. - David Glotz
Custos e liquidação no SAP Transportation Management, TM130 Col18
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Émile Durkheim slide elaborado muito bom
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Processos na gestão de transportes, TM100 Col18
COBITxITIL-Entenda as diferença em uso governança TI
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx

Linguagem da programação

  • 1. História das Linguagens de Programação
  • 2. O que é linguagem de programaçãoUma 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 scriptTambé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 comunsA 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 ImperativoProgramas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estadoParadigma também denominado de procedural, por incluir sub-rotinas ou procedimentos como mecanismo de estruturaçãoPrimeiro paradigma a surgir e ainda é o dominante
  • 14. Modelo Computacional do Paradigma ImperativoEntradaSaídaProgramaEstado
  • 15. Vantagens do modelo imperativoEficiência (embute modelo de Von Neumann)Modelagem “natural” de aplicações do mundo realParadigma dominante e bem estabelecido
  • 16. Desvantagens do paradigma imperativoRelacionamento indireto entre E/S resulta em:difícil legibilidadeerros introduzidos durante manutençãodescrições demasiadamente operacionais focalizam o como e não o que
  • 17. O Paradigma Orientado a ObjetosNão é um paradigma no sentido estrito: é uma subclassificação do imperativoA 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 esteClasses podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos)
  • 18. Modelo Computacional do Paradigma Orientado a ObjetosEntradaSaídaProgramaEntradaSaídaProgramaEstadoEstadoEntradaSaídaProgramaEntradaSaídaEntradaSaídaProgramaProgramaEstadoEstadoEstado............
  • 19. Vantagens do Paradigma Orientado a objetosTodas as do estilo imperativoClasses estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidadeAceitação comercial crescente
  • 20. Problemas do Paradigma OOSemelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturação
  • 21. O Paradigma Orientado a AspectosNão é um paradigma no sentido estritoA 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 AspectosA 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 AspectosEntradaSaídaProgramaEntradaSaídaProgramaEstadoEstadoEntradaSaídaProgramaEntradaSaídaEntradaSaídaProgramaProgramaEstadoEstadoEstadoAspectoAspecto............
  • 24. Vantagens do Paradigma Orientado a AspectosTodas 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 funcionaisAumenta a extensibilidade e o reuso
  • 25. Problemas do Paradigma Orientado a AspectosSemelhantes aos do OOAinda é preciso diminuir a relação entre classes e aspectosProblemas de conflito entre aspectos que afetam a mesma classe
  • 26. O Paradigma FuncionalProgramas são funções que descrevem uma relação explícita e precisa entre E/SEstilo 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 FuncionalEntradaSaídaPrograma
  • 28. Visão Crítica do Paradigma FuncionalVantagensManipulação de programas mais simples:
  • 29. - Prova de propriedades
  • 31. - Concorrência explorada de forma naturalProblemas“O mundo não é funcional!”
  • 33. Mecanismos primitivos de E/S e formataçãoO Paradigma LógicoProgramas são relações entre E/SEstilo declarativo, como no paradigma funcionalNa prática, inclui características imperativas, por questão de eficiênciaAplicações: prototipação em geral, sistemas especialistas, banco de dados, ...
  • 34. Modelo Computacional do Paradigma LógicoEntradaSaídaPrograma
  • 35. Visão Crítica do Paradigma LógicoVantagensEm princípio, todas do paradigma funcional
  • 36. Permite concepção da aplicação em um alto nível de abstração (através de associações entre E/S)ProblemasEm princípio, todos do paradigma funcional
  • 37. Linguagens usualmente não possuem tipos, nem são de alta ordemGerações de Linguagem de Programação.Primeira Geração: Linguagem de maquina (Binária)Usa apenas 0 (zero) e 1 (um) para programarsoftwares. Originalmente nenhum tradutor foi usado para montaras linguagens de primeira geração. As instruções de programação eram submetidas através dos interruptoreslocalizados no painel frontal de sistemas de computadores. O principal benefício na primeira geração é que o código escrito pelo usuário é muito rápido e eficiente, desde que este código seja diretamente executado pela CPU.
  • 38. Gerações de Linguagem de Programação.Segunda Geração: Linguagem de montagem (Assembly)É uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa. A linguagem de máquina, que é um mero padrão de bit, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemônicos, ou seja, enquanto um computador sabe o que a instrução-máquina IA-21 (10110000 01100001) faz, para os programadores é mais fácil recordar a representação equivalente em instruções mnemônicasGerações de Linguagem de Programação.Terceira Geração:Linguagem de alto nível (Fortran, C, ALGOL , COBOL...)projetada para ser facilmente entendida pelo ser humano, incluindo coisas como variáveis com nomes. Um exemplo disso seria: COMPUTE COMISSAO = VENDA * 0,5
  • 39. Gerações de Linguagem de Programação.Quarta Geração: Linguagem de alto nível (FOCUS, NATURAL, SQL...)São linguagens capazes de gerar código por si só. São linguagens orientadas a objetos, tornando possível a reutilização de partes do código para outros programas.
  • 40. 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.Gerações de Linguagem de Programação.Quinta Geração:Linguagens naturais (LISP)São linguagens de programação usadas para criar programas para inteligência artificial e sistemas especialistas que permitem aos programadores se comunicarem com o computador usando sentenças normais.
  • 41. 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.Tipos de Linguagem de programaçãoFracamente tipada, como PHP e Smalltalk, onde o tipo da variável muda dinamicamente conforme a situação. Fortemente tipada, como Java e Ruby, onde o tipo da variável, uma vez atribuído, se mantém o mesmo até ser descartada da memória. Dinamicamente tipada, como Perl, Python e Ruby, onde o tipo da variável é definido em tempo de execução. Estaticamente tipada, como Java e C, onde o tipo da variável é definido em tempo de compilação.
  • 42. Evolução centrada em níveis crescentes de abstraçãoLinguagens de máquinaEndereços físicos e operation codeLinguagens AssemblyMnemônicos e labels simbólicosLinguagens 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çãoEstruturas de controle (versus jumps e gotos)Estrutura de blocos como forma de encapsulamentoGeneralização e parametrização (abstração de tipos de valores)
  • 44. Quanto ao grau de abstraçãoLinguagem 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 AssemblyLinguagem 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. ExemplosAssemblyCriada 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. ExemplosFortranEsta 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. ExemplosPascalOutra 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.