Buscar

AULA1 e AULA2

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
Paradigmas de Programação
AULA 2 – MARCELO LOUTFI
marcelo.loutfi@gmail.com
*
*
1 – Perspectivas Históricas
Página - *
FORTRAN
Nos primórdios da computação, o computador era utilizado apenas para aplicações científicas. (FORTRAN) 
Uma aplicação era programada para apenas uma pessoa 
O problema a ser solucionado era bem entendido 
Não era necessário análise, especificação de projeto e manutenção 
O desejo de aplicar o computador em mais e mais aplicações tornou-se necessário o desenvolvimento e a sofisticação de novos ambientes
*
*
1 – Perspectivas Históricas
Página - *
FORTRAN
A eficiência é um outro fator que se tornou importante por dois motivos:
a) Os usuários não são tolerantes a falhas de sistemas.
b) Os sistemas passaram a fazer parte de setores críticos como: 
Reatores Nucleares, Pressurização e controle de temperatura em Hidrelétricas, Termoelétricas, Usinas Siderúrgicas, etc. 
*
*
1.1 – Primeiras Linguagens de Alto Nível
Página - *
1950 – O hardware era muito caro, os produtos mais significativos desta data foram: 
FORTRAN
ALGOL60
COBOL.
FINALIDADES:
 
O FORTRAN e o ALGOL60 foram utilizados como ferramentas para solucionar problemas numéricos e científicos.
O COBOL foi utilizado para solucionar problemas comerciais.
*
*
1.1 – Primeiras Linguagens de Alto Nível
Página - *
INOVAÇÕES
O Fortran (1950 até 1957) introduziu o conceito de modularidade através da separação do desenvolvimento em subprogramas. 
O ALGOL60 (1957 até 1960) introduziu a noção da estrutura de blocos e procedimentos recursivos. 
O COBOL (1959) introduziu arquivos e descrição de dados, além da uma notação preliminar de programação em linguagem semi-natural.
*
*
1.2 – Década de 60
Página - *
O início dos anos 60 caracterizou-se:
pela necessidade de desenvolver uma linguagem de programação cujo modelo computacional se baseasse nos princípios matemáticos em detrimento da eficiência de implementação.
*
*
1.2 – Década de 60
Página - *
INOVAÇÕES
O LISP (1958) foi a primeira linguagem baseada em funções recursivas e no modelo computacional lambda calculus. Nasceu então uma nova classe de linguagens, denominada de Linguagem Funcional. LISP suporta apenas um tipo de estrutura, a Lista.
SNOBOL4 (1962) é um outro exemplo de linguagens não convencionais, fornecendo facilidades na manipulação de Strings e Casamento de Padrão.
Uma contribuição importante do LISP e SNOBOL4 foi a ênfase na computação simbólica. 
*
*
1.3 – Consolidação
Página - *
Foi desenvolvida uma linguagem de programação universal chamada de PL/I. Esta linguagem tinha o objetivo de integrar a maioria das características frutíferas das linguagens anteriores. PL/I nasceu antes de seu tempo, eram necessárias maiores pesquisas para que se pudesse integrar de forma eficiente. PL/I introduziu o conceito de controle de Exceção.
*
*
1.4 – Passos seguintes
Página - *
O projeto das linguagens da década de 60 influenciou o desenvolvimento de novos projetos de Linguagem:
*
*
1.4 – Passos seguintes
Página - *
INOVAÇÕES
ALGOL68 (1968) foi o primeiro exemplo completo de especificação formal de uma linguagem de programação.
SIMULA67 (1967) foi projetada para solucionar problemas de simulação discreta, introduzindo o conceito de classes e influenciando o aparecimento de novas linguagens como C++, CLU, SMALLTALK, JAVA e EIFFEL.
Pascal (1970) foi a linguagem de maior sucesso nesse período. 
*
*
1.5 – Experimentalismo da década de 70
Página - *
Muitas Linguagens experimentais nasceram nesse período e vários conceitos importantes foram introduzidos: Tipos de dados abstratos, módulos genéricos, controles de exceção, concorrência e sincronismo. Nasceram as seguintes LPs nesta época:
*
*
1.5 – Experimentalismo da década de 70
Página - *
C (1972) obteve sucesso em sistemas UNIX 
MODULA2 (1978) foi o sucessor de PASCAL. 
O PROLOG (1972) foi das linguagens convencionais que mais contribuiu, iniciando uma nova família (paradigma) de linguagens, a programação lógica. 
*
*
1.6 – Novas Linguagens Funcionais
Página - *
Desenvolvedores de programação funcional continuaram produzindo, dessa forma surgiram as linguagens:
ML (1973)
MIRANDA (1985)
*
*
1.6 – Novas Linguagens Funcionais
Página - *
INOVAÇÕES
A contribuição de ML foi prover um enorme poder de computação.
*
*
1.7 – A década de 80 e a Orientação a Objetos
Página - *
O departamento de Defesa Norte Americano desenvolveu o ADA na tentativa de se criar uma linguagem unificada e uma maior manutenibilidade e eficiência. O projeto ADA foi, com certeza, o maior esforço para se criar uma linguagem de programação. 
A origem da Orientação a Objetos iniciou-se com SIMULA. A aproximação, entretanto, ocorreu com SMALLTALK, depois de 70 veio o C++.
SMALLTALK (1980) começou a ser desenvolvida em 1969, mas tornou-se pública em 1980. Foi a primeira linguagem de programação Orientada a Objetos, por isso é parte importante de qualquer discussão sobre a evolução das linguagens de programação. 
*
*
1.7 – A década de 80 e a Orientação a Objetos
Página - *
INOVAÇÕES
SMALLTALK teve um grande papel na promoção de dois aspectos das computação: Interfaces Gráficas com o usuário e programação orientada a objetos.
*
*
1.7 – A década de 80 e a Orientação a Objetos
Página - *
C++ (1979) é uma evolução da linguagem de programação C e combina recursos de linguagens imperativas com linguagens orientadas a objetos. 
INOVAÇÕES
Por algum tempo foi a única linguagem disponível para grandes projetos comerciais de software
PONTOS NEGATIVOS
C++ é uma linguagem muito grande e complexa e herdou muitas das inseguranças da linguagem C.
*
*
1.8 – A década de 90 até os dias Atuais
Página - *
Surgimento de inúmeras Linguagens de Programação:
Linguagens de Scripting 
Ambientes visuais e integrados de Programação para aumento de produtividade 
*
*
1.8.1 – Linguagens de Scripting
Página - *
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 frequentemente 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, os jogos Impossible Creatures e Tibia, que usa a linguagem Lua para controlar as ações dos personagens e o ambiente de batalha.
Todas as linguagens de script são linguagens interpretadas, porém, nem todas as linguagens interpretadas são linguagens de script. 
*
*
1.8.1 – Linguagens de Scripting
Página - *
ActionScript
BASIC
Euphoria
JavaScript
Lua
Pawn
PHP
Python
Ruby
Tcl
VBScript
JScript
Game Maker Language
EXEMPLOS:
*
*
1.8.1 – Linguagens de Scripting
Página - *
JAVASCRIPT
JavaScript é a linguagem de programação mais popular entre os desenvolvedores da web de hoje.
Sua origem, porém, não foi nos estúdios de criação de web sites. Inicialmente com o nome de Cmm (C menos menos), pretendia ser semelhante ao C/C++ para facilitar a aprendizagem dos programadores da época.
Sua criadora, Nombas, mais tarde conhecida como OpenWave, criou um ambiente de desenvolvimento chamado CEnvi, provavelmente a abreviação de C Environment (Ambiente C) para apresentar a linguagem a programadores comuns.
*
*
1.8.1 – Linguagens de Scripting
Página - *
Para que o JAVASCRIPT é usado?
*
*
1.8.1 – Linguagens de Scripting
Página - *
HISTÓRIA DO JAVASCRIPT
Depois de alguns anos, já com o nome mudado para ScriptEase, passou a atrair o interesse da Netscape, para criar programas para o seu navegador de mesmo nome, que
pudessem rodar no computador do usuário antes de enviar informações para o servidor, o que foi um marco da tecnologia por ser a primeira linguagem a funcionar no modo cliente (na máquina local, em vez do servidor web). Seria solucionado então um grave problema de tráfego na internet: a validação de formulários sem a necessidade do envio dos dados para o servidor web.
*
*
1.8.1 – Linguagens de Scripting
Página - *
HISTÓRIA DO JAVASCRIPT
No lançamento do Netscape Navigator 2, em 1995, a Netscape, em parceria com a Sun Microsystems, finalizou o novo projeto, agora com o nome LiveScript ou LiveWire, com a intenção de permitir que a linguagem rode tanto no cliente como no servidor. O nome da linguagem muda novamente em seguida para JavaScript, pegando uma carona na popularidade do Java, em ascenção na época, e criando uma confusão de nomes que desde então permite a muitos escritores ganharem dinheiro fazendo livros para explicar que JavaScript não é o mesmo que Java.
*
*
1.8.2 – Ambientes Visuais de Programação
Página - *
IDE, do inglês Integrated Development Environment ou Ambiente de Desenvolvimento Integrado, é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo.
Geralmente os IDEs facilitam a técnica de RAD (de Rapid Application Development, ou "Desenvolvimento Rápido de Aplicativos"), que visa a maior produtividade dos desenvolvedores.
*
*
1.8.2 – Ambientes Visuais de Programação
Página - *
As características e ferramentas mais comuns encontradas nos IDEs são:
Editor - edita o código-fonte do programa escrito na(s) linguagem(ns) suportada(s) pela IDE;
Compilador (compiler) - compila o código-fonte do programa, editado em uma linguagem específica e a transforma em linguagem de máquina;
Linker - liga (linka) os vários "pedaços" de código-fonte, compilados em linguagem de máquina, em um programa executável que pode ser executado em um computador ou outro dispositivo computacional;
Depurador (debugger) - auxilia no processo de encontrar e corrigir defeitos no código-fonte do programa, na tentativa de aprimorar a qualidade do software;
*
*
1.8.2 – Ambientes Visuais de Programação
Página - *
As características e ferramentas mais comuns encontradas nos IDEs são:
Modelagem (modeling) - criação do modelo de classes, objetos, interfaces e interações dos artefatos envolvidos no software com o objetivo de solucionar as necessidades-alvo do software final;
Geração de Código - característica mais explorada em Ferramentas Case, a geração de código também é encontrada em IDEs, contudo com um escopo mais direcionado a templates de código comumente utilizados para solucionar problemas rotineiros. Todavia, em conjunto com ferramentas de modelagem, a geração pode gerar praticamente todo o código-fonte do programa com base no modelo proposto, tornando muito mais rápido o processo de desenvolvimento e distribuição do software;
Distribuição (deploy) - auxilia no processo de criação do instalador do software, ou outra forma de distribuição, seja discos ou via internet;
*
*
1.8.2 – Ambientes Visuais de Programação
Página - *
As características e ferramentas mais comuns encontradas nos IDEs são:
Testes Automatizados (automated tests) - realiza testes no software de forma automatizada, com base em scripts ou programas de testes previamente especificados, gerando um relatório, assim auxiliando na análise do impacto das alterações no código-fonte. Ferramentas deste tipo mais comuns no mercado são chamadas robôs de testes;
Refatoração (refactoring) - consiste na melhoria constante do código-fonte do software, seja na construção de código mais otimizado, mais limpo e/ou com melhor entendimento pelos envolvidos no desenvolvimento do software. A refatoração, em conjunto com os testes automatizados, é uma poderosa ferramenta no processo de erradicação de "bugs", tendo em vista que os testes "garantem" o mesmo comportamento externo do software ou da característica sendo reconstruída.
*
*
1.8.2 – Ambientes Visuais de Programação
Página - *
Exemplos: Delphi
*
*
1.8.2 – Ambientes Visuais de Programação
Página - *
Exemplos: DEV C++
*
*
1.8.2 – Ambientes Visuais de Programação
Página - *
Exemplos: Eclipse
*
*
2 – LP e o Processo de desenvolvimento de Software
Página - *
Um processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto de software.
É estudado dentro da área de Engenharia de Software, sendo considerado um dos principais mecanismos para se obter software de qualidade e cumprir corretamente os contratos de desenvolvimento, sendo uma das respostas técnicas adequadas para resolver a Crise do Software.
A crise do software foi um termo utilizado nos anos 1970, quando a engenharia de software era praticamente inexistente. O termo expressava as dificuldades do desenvolvimento de software frente ao rápido crescimento da demanda por software, da complexidade dos problemas a serem resolvidos e da inexistência de técnicas estabelecidas para o desenvolvimento de sistemas que funcionassem adequadamente ou pudessem ser validados.
*
*
2 – LP e o Processo de desenvolvimento de Software
Página - *
Anos 70 
Programação Estruturada até 1986
Anos 90 
Programação Orientada a Objetos
Scrum, desde 1995
Processo Unificado da Rational - Rational Unified Process (RUP)
XP - Extreme programming, desde 1999
Anos 2000 
Processo Ágil Unificado - Agile Unified Process (AUP)
*
*
EXERCÍCIOS
Página - *
1 – Classifique as seguintes linguagens de programação quanto ao paradigma que ela pertence: Fortran, Cobol, Lisp, PL/I, Pascal, Haskell, ML, Java, PHP, Javascript, Miranda, Prolog, ADA, PHP, Simula67, SmallTalk, Perl, Algol 60, Basic.
2 – Quais foram as inovações da Linguagem de Programação Prolog?
3 – Quais foram as inovações da Linguagem de Programação SmallTalk?
4 – Quais foram as inovações da Linguagem de Programação Fortran?
5 – Qual relação entre processo de desenvolvimento de software e Linguagens de Programação.
6 – Qual a vantagem de se ter um ambiente visual e integrado de programação?
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando