Baixe o app para aproveitar ainda mais
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? * * *
Compartilhar