História das Linguagens de Programação



Documentos relacionados
Curso Técnico em Redes

Sobre C. Linguagem de Programação C

Linguagens de Programação. Introdução. Carlos Bazilio

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Introdução. Sumários. Objectivos da cadeira. História das linguagens de programação. Classificação das Linguagens de programação

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Paradigmas de Programação

INF1621 Linguagens de Programação I

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

BREVE HISTÓRIA DA LINGUAGEM FORTRAN

COMPILADORES E INTERPRETADORES

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

IB I M B - PC ( C ( P C U U

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas)

Introdução a Informática. Prof.: Roberto Franciscatto

Nesta aula... Analisamos na ultima aula a evolução e caraterísticas de computadores e linguagens de programação. Nesta aula iremos ver:

Arquiteturas RISC. (Reduced Instructions Set Computers)

História das Linguagens de Programação

Introdução. Capítulo Breve sinopse

Linguagens de Programação Aula 10

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES

Conceitos básicos de programação

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

EVOLUÇÃO DAS TECNOLOGIAS

Programação de Computadores III

Paradigmas de Linguagens de Programação

O COMPUTADOR. Introdução à Computação

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Introdução à Programação Aula 2 Introdução à linguagem Python

Introdução. Paradigmas de Linguagens de Programação. Heloisa de Arruda Camargo. Motivos para estudar os conceitos de linguagens de programação

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015.

Prof. Luis Nícolas de Amorim Trigo

Programação de Computadores

Computador Digital Circuitos de um computador (Hardware)

1. NÍVEL CONVENCIONAL DE MÁQUINA

Linguagem de Programação I. Aula 05 Linguagem C

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

SIS17-Arquitetura de Computadores

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Objetivos: -Dar uma visão integrada do que é a Informática -Refletir sobre as motivações e problemas que envolvem o uso de ferramentas computacionais

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

INTRODUÇÃO À LINGUAGEM C/C++

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Programa Analítico. Introdução. Origens da programação Orientada a Objetos. Paradigma procedural. Paradigma Orientado a Objetos.

Introdução às Linguagens de Programação

Organização de Computadores Software

Unidade Central de Processamento Organização da UCP Execução de instruções em paralelo ("pipeline") Execução de programas

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

Linguagens de. Aula 01. Profa Cristiane Koehler

1.1. Organização de um Sistema Computacional

Linguagens de Programação. Linguagens de Script. Carlos Bazilio

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1 1. INTRODUÇÃO

Fonte (livro-texto): Conceitos de Linguagens de Programação, 4ed. Robert W. Sebesta

Informática I. Aula 6. Aula 6-12/09/2007 1

Parte II Introdução a Linguagens de Programação

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Paradigmas e Linguagens de Programação. Prof. Josino Rodrigues Neto josinon@gmail.com

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

Indústria de Software - Histórico

Introdução a Linguagens de Programação

TRABALHO DE PROGRAMAÇÃO FUNCIONAL LINGUAGEM DE PROGRAMAÇÃO I

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Introdução. Prof. MSc. Hugo Souza

Introdução à. Modelagem de Software

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

CLUBE DE PROGRAMAÇÃO NAS ESCOLAS: NOVAS ERSPECTIVAS PARA O ENSINO DA COMPUTAÇÃO. IF Farroupilha Campus Santo Augusto; joaowinck@hotmail.

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

Sistemas Operacionais

Sistemas Operacionais

SEGUNDA EDIÇÃO. Expressões Regulares. Guia de Bolso. Guia de Bolso: Expressões Regulares

Programação em Linguagens de Scripts. Prof. Msc. Anderson da Cruz

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

EMENTAS DAS DISCIPLINAS

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

ADMINISTRAÇÃO DOS RECURSOS DE DADOS

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Linguagens de programação

Arquitetura de Banco de Dados

Introdução à Lógica de Programação

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Breve Histórico & Conceitos Básicos

Sintaxe e Semântica. Fases da Compilação. programa fonte

O modelo do computador

Microsoft.NET. Desenvolvimento Baseado em Componentes

Engenharia de Software I. Prof. André Castro Garcia

1 - Processamento de dados

Algoritmos e Linguagem de Programação I

Descrição Formal de Linguagens -Sumário - Descrição Formal de Linguagens. -Overview- -Overview- - Fundamentos das Linguagens de Programação -

Programação Web Prof. Wladimir

A Evolução dos Sistemas Operacionais

Aspectos técnicos do desenvolvimento baseado em componentes

Estruturas de controle no nível de sentença

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Transcrição:

História das Linguagens de Programação Na 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.; 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")". Este relatório consolidou muitas idéias 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; 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. 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). 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; 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. 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. Panorama das duas décadas: 1951 - Regional Assembly Language 1952 - Autocode 1954 - FORTRAN 1955 - FLOW-MATIC (antecessor do COBOL) 1957 - COMTRAN (antecessor do COBOL) 1958 - LISP 1958 - ALGOL 58 1959 - FACT (antecessor do COBOL) 1959 - COBOL 1962 - APL 1962 - Simula 1964 - BASIC 1964 - PL/I 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 conjunto de Algol 60, foi a primeira linguagem a suportar o conceito de classes. 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. 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. 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. 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. 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. 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 (inicialmente apenas uma linguagem de consulta, mais tarde estendido com construções de programação) 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. 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 ideias inventadas na década anterior. 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. Embora os principais paradigmas novos para as linguagens de programação não tivessem aparecido, muitos pesquisadores expandiram as ideias 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 distribuídos.. A década de 1980 também trouxe avanços na implementação das linguagens de programação. 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 o 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. Algumas linguagens importantes que foram desenvolvidas durante este período incluem: 1983 - Ada 1983 - C++ 1985 - Eiffel 1987 - Perl 1989 - FL (Backus) A década de 1990 não viu nenhuma novidade fundamental, mas a recombinação e maturação das ideias 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. 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. 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. 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. Algumas linguagens importantes que foram desenvolvidas durante este período incluem: 1990 - Haskell

1991 - Python 1991 - Java 1993 - Ruby 1993 - Lua 1994 - ANSI Common Lisp 1995 - JavaScript 1995 - PHP 2000 - C# 2008 - JavaFX Script 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. 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. 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. XML para a interfaces gráficas (XUL, XAML). Bibliografia CAMPBELL-KELLY, Martin. From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry. Cambridge, Massachusetts: The MIT Press, 2003. 372 p. ISBN 0-262-03303-8 CERUZZI, Paul E.. A History of Modern Computing. Cambridge, Massachusetts: The MIT Press, 1998. 398 p. ISBN 0-262-03255-4 CORTADA, James W.. A Bibliografic Guide to the History of Computing, Computers, and the Information Processing Industry. New York: Greenwood Press, 1990. 644 p. ISBN 0-313-26810-X IFRAH, Georges. The Universal History of Computing. New York: John Wiley and Sons, 2001. 410 p. ISBN 0-471-39671-0

METROPOLIS, N.; HOWLETT, J; ROTA, Gian-Carlo(editores). A History of Computing in the Twentieth Century. New York: Academic Press, 1980. 659 p. ISBN 0-12-491650-3 ORGANICK, E. I.;FORSYTHE, A. I.;PLUMMER, R. P.. Programming Language Structures. New York: Academic Press, 1978. 659 p. ISBN 0-12-528260-5 SAMMET, Jean E. Programming Languages: History and Fundamentals. Englewood Cliffs, New Jersey: Prentice Hall, 1969. 785 p. ISBN 0-13-729988-5 WEXELBLAT, Richard L.(Editor). History of Programming Languages. New York: Academic Press, 1981. 758 p. ISBN 0-12-745040-8