• Nenhum resultado encontrado

História das Linguagens de Programação. Prof. Marciano dos Santos Dionizio

N/A
N/A
Protected

Academic year: 2021

Share "História das Linguagens de Programação. Prof. Marciano dos Santos Dionizio"

Copied!
76
0
0

Texto

(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 repassar instruções para um computador.

• É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. • 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 que é Linguagem de Programação?

• Linguagens de programação podem ser

usadas para expressar algoritmos com precisão.

• O conjunto de palavras , 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)

O que é Linguagem de Programação?

• 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 o computador entende nativamente (código de máquina).

(5)

O que é Linguagem de Programação?

• 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 engenheiros de software possam escrever programas mais organizados e com maior rapidez.

(6)

O que é Linguagem de Programação?

• Linguagens de programação também tornam os programas menos dependentes de computadores ou ambientes computacionais específicos (propriedade chamada de portabilidade ).

• Isto acontece porque programas escritos em linguagens de programação são traduzidos para o código de máquina do computador no qual será executado em vez de ser diretamente executado.

(7)

Antes de 1940

• As linguagens de programação são, anteriores ao advento do primeiro computador moderno.

• De início as linguagens eram apenas códigos.

• Durante um período de nove meses entre 1842-1843, Ada Lovelace traduziu as memórias do matemático italiano Luigi Menabrea sobre a mais nova máquina proposta por Charles Babbage, a sua máquina analítica.

(8)

Antes de 1940

• Com o artigo, ela anexou uma série de anotações que especificavam em completo detalhe um método para calcular números de Bernoulli com a máquina, reconhecido por alguns historiadores como o primeiro programa de computador do mundo.

• Mas alguns biógrafos debatem a medida de suas contribuições originais versus as de seu marido.

(9)

Antes de 1940

• O tear de Jacquard, inventado em 1801, usava furos em cartões perfurados para representar os movimentos do braço do tear ao realizar costuras, a fim de gerar padrões decorativos automaticamente.

• Herman Hollerith percebeu que poderia codificar a informação, em cartões perfurados, quando ele observou que o condutor de trens controlava a presença dos titulares dos bilhetes de trem com a posição dos furos no bilhete.

(10)

Antes de 1940

• Hollerith, então, começou a codificar os dados do censo de 1890 em cartões perfurados.

• Os primeiros códigos para computador eram especializados segundo as aplicações.

• Nas primeiras décadas do século XX, os cálculos numéricos eram baseados em números decimais. • Eventualmente, se percebeu que a lógica podia ser representada com números, tão bem como com as palavras.

(11)

Antes de 1940

• Por exemplo, Alonzo Church foi capaz de expressar o cálculo lambda de uma maneira formalizada.

• A máquina de Turing era uma abstração do funcionamento da máquina de uma fita de marcação, por exemplo, em uso em empresas de telefonia.

(12)

Antes de 1940

• No entanto, ao contrário do cálculo lambda, os código elaborados por Turing não serviam como uma base para linguagens de alto nível - a sua utilização principal era na análise rigorosa da complexidade algorítmica.

• Como muitos "primeiros" na história, a primeira linguagem de programação moderna é difícil de ser identificada.

(13)

Antes de 1940

• No início, as restrições do hardware definiam a linguagem.

• Cartões perfurados dispunham de até 80 colunas, mas algumas das colunas tinham que ser usados para um número de sequencia de cada cartão.

• Fortran incluía algumas palavras-chave que eram as mesmas palavras em Inglês, como "IF" (se), "GOTO" (vá para) e "CONTINUE" (continue).

(14)

Antes de 1940

• O uso de um tambor magnético para a memória significava que os programas de computador também tinham que ser intercalados com as rotações do tambor.

• Assim, os programas eram mais dependentes do hardware do que hoje.

• Para algumas pessoas, a resposta depende de quanta energia e legibilidade humana são necessárias antes que o status de "linguagem de programação" seja concedido.

(15)

Antes de 1940

• Os teares de Jacquard e a máquina diferencial de Charles Babbage, ambos tinham linguagens simples e extremamente limitadas para descrever as ações que estas máquinas deviam executar.

• Alguns podem até alegar que as perfurações de cartões para pianos possam ser vistas como uma linguagem de propósito específico, embora não destinadas ao consumo humano.

(16)

Os anos 1940

• Na década de 1940 os primeiros

computadores elétricos, reconhecidamente modernos, foram criados.

• A velocidade limitada capacidade da memória forçava os programadores a escrever a mão economicamente programas em linguagem de montagem (linguagem de máquina).

(17)

Os anos 1940

• Logo se descobriu que a programação em linguagem assembly exigia um grande esforço intelectual e era muito sujeita a erros.

• Em 1948, Konrad Zuse publicou um artigo sobre a sua linguagem de programação Plankalkül.

• No entanto, esta não foi implementada em sua época e suas contribuições originais foram isoladas de outros desenvolvimentos.

(18)

Os anos 1940

• Algumas linguagens importantes que foram desenvolvidas durante este período incluem: • 1943 - Plankalkül (Konrad Zuse)

• 1943 - ENIAC coding system • 1949 - C-10

(19)

Os anos 1950´s e 1960´s

• a década de 1950 as primeiras três linguagens

de programação modernas, cujos

descendentes ainda estão em uso difundido hoje foram concebidas:

• FORTRAN (1954), a "FORmula TRANslator", inventada por John Backus e outros.;

• LISP, a "LISt Processor", inventada por John McCarthy e outros.;

(20)

Os anos 1950´s e 1960´s

• COBOL, a COmmon Business Oriented Language, criada pelo Short Range Committee, com grande influência de Grace Hopper.

• Outro marco na década de 1950 foi a publicação, por um comitê de cientistas americanos e europeus, de "uma nova linguagem para os algoritmos", a ALGOL 60 através da publicação do relatório "The ALGOL 60 Report (the "ALGOrithmic Language")".

(21)

Os anos 1950´s e 1960´s

• Este relatório consolidou muitas ideias que circulavam na época e apresentou duas inovações chave quanto ao projeto de linguagens:

• Estrutura de blocos aninhados: pedaços significativos de código poderiam ser agrupados em bloco de instruções, sem ter que ser transformados em procedimentos separados e ser explicitamente chamados;

(22)

Os anos 1950´s e 1960´s

• Escopo léxico: um bloco podia ter suas próprias variáveis não acessíveis fora do bloco, e muito menos manipuláveis de fora do bloco. • Outra inovação, relacionada a esta última, foi

na forma como a linguagem foi descrita:

• Uma notação matemática exata, Backus-Naur (BNF), foi utilizada para descrever a sintaxe da linguagem.

(23)

Os anos 1950´s e 1960´s

• Quase todas as linguagens de programação posteriores utilizaram uma variante da BNF para descrever a parte livre de contexto de sua sintaxe. • Algol 60 foi particularmente influente na concepção das linguagens posteriores, algumas das quais logo se tornaram mais populares.

• Os grandes sistemas da Burroughs foram projetados para serem programados em um subconjunto estendido do Algol, a WFL (Work Flow Language).

(24)

Os anos 1950´s e 1960´s

• Algumas ideias-chave da linguagem Algol foram tomadas, produzindo-se a linguagem ALGOL 68:

• A sintaxe e semântica se tornaram ainda mais ortogonais, com rotinas anônimas, um sistema recursivo de digitação com funções de ordem superior, etc;

(25)

Os anos 1950´s e 1960´s

• Não somente a parte livre de contexto da linguagem, mas a sintaxe da linguagem completa e a semântica foram definidos formalmente, em termos da gramática de Van Wijngaarden, um formalismo desenvolvido especificamente para esta finalidade.

(26)

Os anos 1950´s e 1960´s

• Os recursos pouco utilizados de Algol 68 (por exemplo, blocos simultâneos e paralelos) e seu complexo sistema de atalhos sintáticos e coerções de tipo automático tornou a linguagem impopular entre os implementadores e ganhou a reputação de ser difícil.

• Niklaus Wirth realmente saiu do comitê de projeto para criar uma linguagem mais simples: Pascal.

(27)

Os anos 1950´s e 1960´s

• Panorama das duas décadas:

• 1951 - Regional Assembly Language • 1952 - Autocode

• 1954 - FORTRAN

• 1955 - FLOW-MATIC (antecessor do COBOL) • 1957 - COMTRAN (antecessor do COBOL)

(28)

Os anos 1950´s e 1960´s

• 1958 - LISP

• 1958 - ALGOL 58

• 1959 - FACT (antecessor do COBOL) • 1959 - COBOL

• 1962 - APL

• 1962 - Simula • 1964 - BASIC • 1964 - PL/I

(29)

1967-1978

• Estabelecendo os paradigmas fundamentais

• O período compreendido entre o final dos anos 1960 à década de 1970 trouxe um grande florescimento de linguagens de programação.

• A maioria dos principais paradigmas de linguagem agora em uso foram inventados durante este período:

• Simula, inventada nos anos 1960 por Nygaard e Dahl como um super conujunto de Algol 60, foi a primeira linguagem a suportar o conceito de classes.

(30)

1967-1978

• C, uma das primeiras linguagens de programação de sistemas, foi desenvolvido por Dennis Ritchie e Ken Thompson nos laboratórios da Bell entre 1969 e 1973.

• Smalltalk (meados de 1970) forneceu uma base completa para o projeto de uma linguagem orientada a objetos.

(31)

1967-1978

• Prolog, projetada em 1972 por Colmerauer, Roussel, e Kowalski, foi a primeira linguagem de programação do paradigma lógico.

• ML built a polymorphic type system (inventada por Robin Milner em 1973) uma linguagem funcional, baseada em Lisp, estaticamente tipada.

(32)

1967-1978

• Cada uma dessas línguas gerou toda uma família de descendentes, e linguagens mais modernas contam, pelo menos, com uma delas em sua ascendência.

• A década de 1960 e 1970 também viu um considerável debate sobre os méritos da "programação estruturada", que, entre outros aspectos,envolvia a programação sem o uso de Goto.

(33)

1967-1978

• O comando goto (do inglês go to, literalmente "ir para") é um comando de salto de instruções.

• As instruções passam a ser executadas no endereço apontado por destino.

• Este debate foi estreitamente relacionado com projeto de linguagem: algumas linguagens não incluíram o comando GOTO, ou o desestimularam, o que obrigou o programador a utilizar a programação estruturada.

(34)

1967-1978

• Apesar de o debate ter ficado quente na época, quase todos os programadores agora concordam que, mesmo em linguagens que fornecem um comando de desvio incondicional como o GOTO, é um mau estilo de programação usá-lo, exceto em raras circunstâncias.

• Como resultado, as gerações posteriores de projetistas da linguagem consideram o debate em torno da programação estruturada tedioso e até desconcertante.

(35)

1967-1978

• Algumas linguagens importantes que foram desenvolvidas durante este período incluem: • 1970 - Pascal • 1970 - Forth • 1972 - C • 1972 - Smalltalk • 1972 - Prolog • 1973 - ML • 1978 - SQL

(36)

Os anos 1980

• Consolidação, módulos, performance

• Os anos 1980 foram anos de relativa consolidação. C++ combinou orientação a objetos e programação de sistemas.

• O governo dos Estados Unidos padronizou a Ada, uma linguagem de programação de sistemas destinados à utilização por parte dos contratantes de defesa.

(37)

Os anos 1980

• No Japão e em outros lugares, vastas somas foram gastas investigando as chamadas linguagens de programação de quinta geração que incorporavam a programação lógica em suas construções.

• A comunidade de linguagens funcionais se dedicou a padronizar a ML e o Lisp.

• Ao invés de inventar novos paradigmas, todos estes esforços visaram aperfeiçoar as idéias inventadas na década anterior.

(38)

Os anos 1980

• No entanto, uma tendência nova e importante na concepção de linguagens foi o aumento do foco na programação de sistemas de larga escala com o uso de módulos, ou em unidades organizacionais de código de larga-escala.

• As linguagens Modula, Ada e ML desenvolveram notáveis sistemas de módulos na década de 1980. Sistemas modulares muitas vezes eram associados com a programação genérica construções --- genéricas vindo a ser, em essência, módulos parametrizados.

(39)

Os anos 1980

• Embora os principais paradigmas novos para as linguagens de programação não tivessem aparecido, muitos pesquisadores expandiram as idéias das linguagens existentes adaptando-os para novos contextos.

• Por exemplo, as linguagens dos sistemas Argus e Emerald adaptaram a programação orientada a objeto para os seus sistemas distribuidos.

• A década de 1980 também trouxe avanços na implementação das linguagens de programação.

(40)

Os anos 1980

• O movimento RISC, em arquitetura de computadores postulou que o hardware deveria ser concebido para os compiladores ao invés de ser voltado a programadores assembly.

• Ajudado por melhorias na velocidade dos processadores que permitiu cada vez mais técnicas agressivas de compilação, o movimento RISC despertou maior interesse na tecnologia de compilação para linguagens de alto nível.

• A tecnologia de linguagens continuou ao longo destas linhas durante a década de 1990.

(41)

Os anos 1980

• Algumas linguagens importantes que foram desenvolvidas durante este período incluem: • 1983 - Ada

• 1983 - C++ • 1985 - Eiffel • 1987 - Perl

(42)

Os anos 1990's:

• A Era da Internet

• A década de 1990 não viu nenhuma novidade fundamental, mas a recombinação e maturação das idéias antigas.

• Uma filosofia de grande importância era a produtividade do programador.

• Muitas linguagens com "aplicações de desenvolvimento rápido" (RAD) surgiram, geralmente vindo com um IDE, coleta de lixo, e eram descendentes de linguagens mais antigas.

(43)

Os anos 1990's:

• Todas essas linguagens foram orientadas a objeto.

• Entre estas estavam a Object Pascal, Visual Basic, e C#.

• Java era uma linguagem mais conservadora, que também incluiu a coleta de lixo e recebeu muita atenção.

(44)

Os anos 1990's:

• Mais radicais e inovadoras do que as línguas RAD foram as novas linguagens de scripting. • Estas não descenderam diretamente das

outras linguagens e contaram com sintaxes novas e incorporação mais liberal de novas funcionalidades.

(45)

Os anos 1990's:

• Muitos consideram essas linguagens de scripting mais produtivas do que até mesmo as linguagens RAD, mas muitas vezes, por causa da facilidade com que pequenos programas podem ser escritos e mantidos.

• No entanto, linguagens de scripting vieram a ser mais proeminentes usadas em conexão com a web.

(46)

Os anos 1990's:

• Algumas linguagens importantes que foram desenvolvidas durante este período incluem: • 1990 - Haskell

• 1991 - Python • 1991 - Java

(47)

Os anos 1990's:

• 1993 - Lua

• 1994 - ANSI Common Lisp • 1995 - JavaScript

• 1995 - PHP • 2000 - C#

(48)

Tendências Atuais

• A evolução das linguagens de programação continua, tanto na indústria quanto na pesquisa. Algumas das tendências atuais incluem:

• Mecanismos para a adição de segurança e verificação da confiabilidade para a linguagem: verificação estática prolongada, controle de fluxo de informação, estático segurança em threads.

(49)

Os anos 1990's:

• Mecanismos alternativos de modularidade:

mixin s, Delegação de programação,

programação orientada a aspectos.

• Desenvolvimento de software orientado a componentes.

• Metaprogramação, Reflexão ou acesso a árvores de sintaxe abstratas.

(50)

Os anos 1990's:

• Maior ênfase na distribuição e mobilidade.

• Integração com bases de dados, incluindo XML e bancos de dados relacionais.

• Suporte para Unicode de forma que o código-fonte não esteja restrito aos caracteres contidos no código ASCII; permitindo, por exemplo, o uso de scripts não latinos ou pontuação estendida.

(51)

Assembly

• Linguagem de baixo nível.

• Ao invés do que acontece nas linguagens de alto nível, existe (até certo ponto) uma correspondência de 1 para 1 entre o Assembly e a linguagem de máquina.

• O programador necessita, portanto, de ter uma noção da arquitetura do computador em uso.

• As primeiras linguagens Assembly surgem nos anos 50.

(52)

Fortran

• Primeira linguagem de alto nível.

• Desenvolvida nos anos 50 por John Backus. Surge em 1957 como uma alternativa mais prática à linguagem Assembly.

• Veio a ser a base de desenvolvimento de diversas outras linguagens como por exemplo C.

(53)

LISP

• Família de linguagens de programação inicialmente criada por John McCarthy em 1958.

• É a segunda mais velha de alto nível.

• Ao longo do tempo teve diversas versões e desenvolvimentos e, durante as décadas de 70 e 80, foi a principal linguagem utilizada para a exploração de inteligência artificial.

(54)

ALGOL

• Linguagem de alto nível lançada

internacionalmente em 1963.

• Começou a ser desenvolvida em 1957, sendo a primeira versão acabada em 1958 (ALGOL 58).

• Foi criada para evitar problemas da linguagem FORTRAN e acabou por servir de base para muitas outras linguagens, incluindo Pascal e C.

(55)

COBOL

• Linguagem criada em 1959 por um comité de investigadores de vários sectores.

• Grandemente inspirada pela linguagem FLOW-MATIC.

• Tem como propósito a utilização com fins comerciais, financeiros e administrativos para empresas.

(56)

BASIC

• Linguagem de alto nível que surge em 1964, criada por John George Kemeny e Thomas Eugene Kurtz para a Universidade de Dartmouth, em New Hampshire nos EUA.

• Foi criada para permitir acesso aos computadores por parte de alunos de áreas não cientificas.

(57)

PASCAL

• Linguagem desenvolvida entre 1968/69 e publicada em 1970 por Niklaus Wirth, professor da Faculdade Politécnica de Zurique na Suíça.

• Surge como forma de ensinar programação estruturada e é muito baseada em ALGOL.

(58)

FORTH

• Forth é uma linguagem de programação procedural baseada em pilhas de dados desenvolvida por Charles H. Moore a partir de 1958 e apresentada a outros programadores no início da década de 70.

(59)

C

• Linguagem desenvolvida entre 1969 e 1973 por Dennis Ritchie para ser utilizada com o sistema operativo Unix.

• É das linguagens mais utilizadas a uma escala mundial.

• Foi influenciada por ALGOL, Assembly e

FORTRAN e influenciou diversas outras

linguagens tais como C++, que surgiu inicialmente como uma extensão para C.

(60)

SMALLTALK

• Linguagem de programação direccionada a objectos inicialmente desenvolvida a partir de 1969 e lançada em 1972.

• A primeira versão disponível ao público foi criada e lançada em 1980.

• Foi criada com fins educativos

(especificamente para aprendizagem

construtiva) e é o produto da pesquisa realizada por Alan Kay.

(61)

PROLOG

• Linguagem de uso geral criada em 1971 na

Universidade de Marselha por Alain

Colmerauer, Robert Pasero, Jean Trudel, Philippe Roussel e depois Robert Kowalski.

• É muito utilizada para trabalho de inteligência artificial e linguística computacional.

(62)

SQL

• Linguagem criada em 1974 por Donald D. Chamberlin e Raymond F. Boyce nos

laboratórios da IBM. Inicialmente

chamada SEQUEL.

• Tem como fim o gerenciar de dados em sistemas de gestão.

(63)

ADA

• Linguagem estruturada, de alto nível, criada durante os anos 70 por uma equipe chefiada por Jean Ichbiah, para o Departamento de Defesa dos EUA com o fim de criar uma nova linguagem de programação universal que pudesse ser utilizada pelo Departamento.

• Tem por base BASIC e COBOL e serviu, mais tarde, de base para a linguagem Ruby.

(64)

C++

• Linguagem de médio nível (por conter elementos de alto e de baixo nível) desenvolvida por Bjarne Stroustrup desde 1979 como uma extensão para a linguagem C. • C++ é das linguagens mais utilizadas para uma

(65)

EIFFEL

• Linguagem de programação orientada a objetos, semelhante a Pascal e ALGOL.

• Foi criada por Bertrand Meyer em 1985.

• Sendo este autor muito atento aos fundamentos teóricos, a linguagem de programação Eiffel tem, ao lado de muitas inovações polemicas, um retorno aos clássicos.

(66)

EIFFEL

• Especificamente, são usadas nela conceitos de linguagens muito mais antigas, como Simula 67 (a primeira linguagem de programação orientada a objeto) e CLU, linguagem de programação modular devida a Barbara Liskov, outra importante teórica de técnicas de projeto e programação de software.

(67)

PERL

• Perl é uma linguagem de programação estável e multiplataforma muito utilizada no desenvolvimento web.

• É uma linguagem dinâmica de alto nível desenvolvida por Larry Wall em 1987.

(68)

PYTHON

• Linguagem de programação de alto nível orientada a objetos, criada por Guido van Rossum em 1991.

• Torna o trabalho do programador

relativamente mais simples.

• O seu nome é uma referência a Monty

Python– um grupo comediante britânico – por

tentar fazer com que a programação seja mais “divertida”.

(69)

JAVA

• Linguagem de programação direccionada a objetos desenvolvida em 1995 por James Gosling.

• Deriva das linguagens C e C++.

• O objetivo desta linguagem traduz-se na frase “write once, run anywhere”, querendo dizer que código escrito em Java não precisa de ser editado para correr noutro programa.

(70)

RUBY

• Linguagem criada em 1993 (mais

precisamente a 24 de Fevereiro) por Yukihiro Matsumoto.

• Inspirada essencialmente pelas linguagens

(71)

JAVASCRIPT

• Surge em 1995, criada por Brendan Eich.

• Atualmente é a principal linguagem para programação client-side utilizada em navegadores web.

• Foi concebida para ser uma linguagem script com orientação a objetos baseada em protótipos.

(72)

PHP

• Linguagem essencialmente utilizada para a criação de conteúdo de internet.

• Surgiu em 1995 para substituir scripts Perl que Rasmus Lerdorf (criador do PHP) utilizava na sua página pessoal.

(73)

C♯

• Também escrito como C# ou C Sharp (em português lê-se "cê charp"), é uma linguagem de programação orientada a objetos, fortemente tipada, desenvolvida pela Microsoft como parte da plataforma .NET.

• A sua sintaxe orientada a objetos foi baseada no C++ mas inclui muitas influências de outras linguagens de programação, como Object Pascal e Java.

(74)

JavaFX Script

• É uma linguagem de script utilizada na

plataforma JavaFX criada pela Sun

Microsystems , que faz parte da plataforma Java.

• O domínio da plataforma engloba o desenvolvimento de RIAs (Rich Internet Application) para desktops e dispositivos móveis.

(75)

JavaFX Script

• A plataforma JavaFX compete diretamente com outras opções para RIAs como Adobe Flex e Microsoft Silverlight.

• JavaFX Script está sob a licença GNU General Public License , através do projeto OpenJFX patrocinado pela Sun.

(76)

Referências

Documentos relacionados

String sentencaSQL = "CREATE TABLE tabela1 (codigo integer PRIMARY KEY, nome VARCHAR(50));";.

Definição de Linguagens • Gramáticas são utilizadas para definir a sintaxe de linguagens de programação • A linguagem definida por uma gramática é o conjunto de todas as

• A alteração entre os modos de operação pode ser feita por uma chave ou pelo próprio software de

• As regras para nomes de classe são bem fáceis: devem começar sempre por um letra e, depois dela, podem ter qual- quer combinação de letras ou números (porém você não

Compreender melhor noções de programação básica, de C++, de Cobol, de Java, de TML, de Ajax, de hardware, de Windows e de Linux faz parte para desenvolver qualquer tipo

Paradigmas de Linguagem de Programação em Python Prof... Paradigmas de Linguagem de Programação em Python

n  Independentemente das necessidades de um projeto de desenvolvimento de software específico, um conjunto geral de características das linguagens de programação pode ser

• Desenvolvida em 1972 por Dennis Ritchie no Bell Lab para uso no sistema operacional Unix, foi amplamente aceita por oferecer aos programadores o máximo em controle