Baixe o app para aproveitar ainda mais
Prévia do material em texto
PARADIGMAS DE LINGUAGEM DEPARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃOPROGRAMAÇÃO EVOLUÇÃO DASEVOLUÇÃO DAS LINGUAGENS DELINGUAGENS DE PROGRAMAÇÃOPROGRAMAÇÃO Autor: Esp. Douglas Salvador Revisor : Rafae l Rehm IN IC IAR introduçãoIntrodução Nesta unidade, vamos conhecer as principais linguagens de programação e suas características, bem como entender quais aspectos sintáticos e semânticos são cruciais para o desenvolvimento de projetos de sistemas computacionais. No princípio, as linguagens de programação eram somente códigos, diferentes dos que são utilizados nos computadores atuais. A sua história está intimamente ligada a história dos computadores, pois as linguagens foram criadas justamente para que a interação homem-máquina fosse possível, usando sequências lógicas para resolver problemas. Ao longo dos tempos, diversas linguagens de programação foram criadas para um propósito especí�co. Por isso, pode-se dizer que este é o motivo de existir várias delas. Do Tear Programável Jacquard criado no começo do século XIX pelo mecânico francês Joseph Marie Jacquard, ao primeiro algoritmo criado por Ada Lovelace, até George Boole, o inglês que criou um sistema lógico, no qual os comandos e resultados das operações eram representados por uma chave de dois números: 0 e 1, que são os códigos binários, utilizados até hoje no hardware de todos os computadores. A programação é uma atividade interessante que fornece resultados instantâneos na maioria dos casos, com base nos programas criados. As linguagens de programação evoluíram em grande medida nas últimas décadas, da linguagem de programação de baixo nível cujo código-fonte é formado por mnemônicos Assembly, para Kotlin e Swift, que possuem suporte para a construção de abstrações de alto nível. Vamos ver a evolução da linguagem de programação ao longo do tempo desde 1950. Como a�rma Silva (2014, p. 37): As linguagens de programação clássicas mais conhecidas, e até hoje utilizadas, são COBOL, Fortran, Pascal, é claro, a lendária BASIC. Já entre as linguagens de programação modernas, as mais conhecidas e utilizadas são C++, C, C#, Java, Visual Basic, XML, Evolução dasEvolução das PrincipaisPrincipais Linguagens deLinguagens de ProgramaçãoProgramação (Parte I)(Parte I) HTML, Perl, PHP e Javascript. Elas são chamadas de linguagem de alto nível. 1951 – 1960: as linguagens desenvolvidas ao longo dessa década são Fortran e COBOL, que estabeleceram as bases para uma evolução futura. Linguagem Assembly – que é uma linguagem de programação de baixo nível e é especí�ca para a arquitetura de computadores. 1961 – 1970: a linguagem mais importante lançada durante esse período é SNOBOL, o sucessor do COBOL desenvolvido nos laboratórios da AT&T Bell, por David J. Farber, Ralph E. Griswold e Ivan P. Polonsky. O Simula é outra linguagem importante, pois o Simula 67 foi desenvolvido pela primeira vez com o paradigma Object Oriented Language (OOL). No �nal desta década, o PASCAL surgiu como outra linguagem de programação promissora, introduzindo a programação estruturada. 1971 – 1980: essa década introduziu o C, que ainda está sendo amplamente utilizado para desenvolver programas especí�cos para hardware. É uma das linguagens mais populares e ainda é usado pelas principais indústrias. O SQL surgiu como o primeiro idioma especí�co para gerenciar dados. Já o C ++ foi lançado no encerramento desta década. 1981 – 1990: MATLAB, FoxPro e Objective C evoluíram como as principais linguagens durante essa década, onde o MATLAB foi amplamente utilizado para algoritmos e visualizações. FoxPro é uma mistura de programas com conceitos de DBMS – Database Management System e também é uma linguagem de programação orientada a objetos. O Object C é uma linguagem de programação orientada a objeto, que é utilizada principalmente pela Apple para o desenvolvimento do OS X e iOS. 1991 – 2000: essa década introduziu linguagens muito interessantes, começando com Python, que é amplamente usado como uma alternativa ao PHP e Java. O Java foi lançado em meados dessa década e logo se tornou o padrão de fato das empresas, devido aos seus recursos de segurança embutidos. Ruby é outra linguagem importante lançada em 1995 e atraiu programadores do mundo inteiro. A estrutura do Rails abre portas para o desenvolvimento de sites e aplicativos, simpli�cando tarefas repetitivas. O PHP também foi lançado no ano de 1995 e se tornou a opção padrão para o desenvolvimento da Web devido à fácil curva de aprendizado. Javascript e ActionScript também surgiram como linguagens de front-end com foco na parte da interface do usuário. 2001 – 2010: O C # foi introduzido pela Microsoft no início desta década e se tornou a opção dos programadores para o desenvolvimento de aplicativos para desktop e Web. É orientado a objetos e a sintaxe é um pouco mais próxima do Java. Go e Rust foram lançados até o �nal dessa década, com foco na programação do sistema e competentes entre si. Go é usado principalmente para o desenvolvimento de microsserviços. 2011 – Presente: Kotlin surgiu como a principal alternativa ao Java. O Kotlin está sendo amplamente utilizado para o desenvolvimento do Android devido a sua sintaxe fácil em comparação ao Java. O Swift é outra linguagem importante introduzida pela Apple como uma alternativa ao Objective C. O Swift é mais fácil de aprender em comparação ao Objective C e também precisa de menos código, tornando-se uma escolha popular dos programadores para desenvolver aplicativos iOS. Temos também o �utter que é a SDK para aplicativos móveis do Google, ele é completo com recursos de estrutura, widgets e ferramentas, que oferece aos desenvolvedores uma maneira fácil de criar e implantar aplicativos móveis rápidos visualmente atraentes nas plataformas Android e iOS. Linguagens de Programação mais utilizadas A pesquisa anual para desenvolvedores da Stack Over�ow é a maior e mais abrangente pesquisa de pessoas que codi�cam em todo o mundo. A cada ano, a comunidade realiza uma pesquisa que abrange tudo, desde as tecnologias favoritas dos desenvolvedores até suas preferências de trabalho. A pesquisa apresenta resultados anuais com uma amostragem de quase 90.000 desenvolvedores. O resultado da pesquisa do ano de 2019 evidenciou algumas tendências, como: O Python como sendo a linguagem de programação que mais cresceu no ano, pois subiu novamente no ranking das linguagens de programação na pesquisa, superando o Java e permanecendo como a segunda linguagem mais popular (atrás da Rust). Mais da metade dos entrevistados haviam escrito sua primeira linha de código aos dezesseis anos, embora essa experiência varia por país e por gênero. Os especialistas em DevOps e os engenheiros de software estão entre os desenvolvedores mais bem pagos e experientes, mais satisfeitos Quadro 1.1 - Linguagens de programação mais populares em 2019 Fonte: Developer... ([s.d.], on-line). com seus trabalhos e estão procurando novos trabalhos nos níveis mais baixos. Dos principais países da pesquisa, a China possui desenvolvedores que são os mais otimistas, acreditando que as pessoas nascidas hoje terão uma vida melhor do que seus pais. Desenvolvedores de países da Europa Ocidental como França e Alemanha estão entre os menos otimistas em relação ao futuro. Ao pensar nos bloqueadores da produtividade, diferentes tipos de desenvolvedores relatam diferentes desa�os. É mais provável que os homens digam que ser o encarregado de um trabalho de desenvolvimento é um problema para eles, enquanto os entrevistados de minorias de gênero têm maior probabilidade de dizer que ambientes de trabalho tóxicos são um problema. Existem alguns outros fatores que poderiam ter impactado a popularidade das linguagens de programação. A segurança inerente a linguagem escolhida é um fator. Outro é o aumento da popularidade dos dispositivos móveis. Esse é um fator importante quando se olha para a popularidade das linguagens de programação, pois algumas são mais adequadas para o desenvolvimento de aplicativosmóveis e usadas em dispositivos portáteis, como tablets e smartphones. Os dispositivos vestíveis que suportam nossas funções cotidianas estão aumentando em popularidade, incluindo tudo, desde monitores de sono, atividade física a relógios inteligentes e dispositivos vestíveis de postura. À medida que a quantidade de dispositivos vestíveis aumenta em popularidade acabam diminuindo os softwares padrão para desktop fazendo com que a popularidade das linguagens de programação que podem suportar essa demanda aumentem. i praticarVamos Praticar As variáveis são muito utilizadas nas linguagens de programação, pois armazenam tipos de dados especí�cos. Com base nisso, assinale a alternativa que indica qual tipo de dados é usado para criar uma variável que deve armazenar texto em C++. a) myString. b) string. c) Txt. d) String. e) pdf. À medida que o foco de pro�ssionais e pesquisadores passou da programação para o desenvolvimento de software em larga escala, as linguagens de programação não parecem ser mais temas tão centrais para a Ciência da Computação. Como citam, Tucker e Noonan (2010): As primeiras linguagens de programação foram as linguagens de máquina e as linguagens assembly dos primeiros computadores, começando na década de 1940. Centenas de linguagens de programação e dialetos foram desenvolvidos desde então. A maioria teve tempo de vida e utilidade limitados, enquanto algumas tiveram amplo sucesso em um ou mais domínios de aplicações. Muitas desempenharam um papel importante na in�uência sobre o projeto de futuras linguagens. Evolução dasEvolução das PrincipaisPrincipais Linguagens deLinguagens de ProgramaçãoProgramação (Parte II)(Parte II) Brooks (1987) argumenta que, como a codi�cação ocupa apenas uma pequena fração do tempo total necessário para o desenvolvimento do projeto, os desenvolvimentos nas linguagens de programação não podem levar a aumentos drásticos na produtividade do software. A suposição por trás desse raciocínio é que a escolha do Paradigma de Linguagem afeta apenas a fase de codi�cação do projeto. Por exemplo, se a codi�cação exigir 15% do tempo total do projeto, poderíamos deduzir que reduzir o tempo de codi�cação para zero reduziria o tempo total do projeto em apenas 15%. A manutenção, no entanto, é amplamente reconhecida como um componente importante do desenvolvimento de software. As estimativas do tempo de manutenção variam de "nos últimos 50%" (LIENTZ; SWANSON, 1980) a "entre 65% e 75%" (MCEE, 1984) do tempo total. Como a escolha do Paradigma de Linguagem pode in�uenciar a facilidade de manutenção, os autores sugerem que o Paradigma de Linguagem pode ter um efeito signi�cativo no tempo total de desenvolvimento. A Lei de Moore conceitua que a cada 18 meses a capacidade de processamento e armazenamento dos transistores dobra e o custo de fabricação se mantém, quem profetizou tal acontecimento foi Gordon Earle Moore, em 1965. Estudiosos a�rmavam que essa lei não se concretizaria e decretavam o �m da Lei de Moore. Mas até hoje ela continua se cumprindo. Figura 1.2 - Histórico das linguagens de programação Fonte: Watt (1991, p. 96). Essa lei tem direta relação com a motivação para o desenvolvimento de novas linguagens de programação nas últimas décadas, pois devido à rápida evolução e fácil acesso ao poder computacional ampliado, uma quantidade maior de pessoas e empresas pode participar da construção de novos cenários para as linguagens de programação, como, por exemplo na: inteligência arti�cial, educação, ciência e engenharia, sistemas de informação, sistemas e rede, world wide web. Para cada uma dessas áreas existem desa�os diferentes, portanto as comunidades que se desenvolveram em torno delas também possuem objetivos computacionais e projetos de linguagem especí�cos (TUCKER; NOONAN, 2010). praticarVamos Praticar Idioma que apareceu em 1985, originalmente para criar bancos de dados e programas de negócios operados principalmente no DOS. Qual linguagem (de script) de computador (programação) é descrita aqui? a) COBOL. b) Logo. c) Pascal. d) Haskell. e) Clipper. Nesta seção, revisaremos brevemente as contribuições que a teoria fez para o desenvolvimento de Linguagens de Programação e discutiremos a importância e a relevância dessas contribuições. Questões Sintáticas e Lexicais Existe um grande conhecimento construído sobre linguagens formais, uma hierarquia de idiomas (a "hierarquia de Chomsky") e, associada a cada nível da hierarquia, máquinas formais que podem "reconhecer" as linguagens Aspectos SintáticosAspectos Sintáticos e Semânticose Semânticos Básicos deBásicos de Linguagem deLinguagem de ProgramaçãoProgramação (Parte I)(Parte I) correspondentes e executar outras tarefas. Os dois primeiros níveis da hierarquia são os mais familiares aos programadores: linguagens regulares e autômatos de estados �nitos; e linguagens sem contexto e autômatos push- down. Linguagens de Programação típicas possuem gramáticas livres de contexto (ou quase livres de contexto), e seus tokens, ou lexemes, podem ser descritos por uma linguagem comum. Consequentemente, os programas podem ser divididos em lexemes por um autômato de estado �nito e analisados por um autômato push-down. Pode parecer, então, que o problema do projeto de Linguagem de Programação nesse nível está "resolvido". Infelizmente, há exceções. A gramática do C ++, por exemplo, não é livre de contexto. Isso di�culta desnecessariamente a construção de um analisador de C ++ e explica o lento reflitaRe�ita A execução de programas que recebem entradas de dados de forma remota pela internet, requer informações precisas e garantias sobre a segurança e con�abilidade desses programas. O Java foi projetado levando em consideração esses dois requisitos básicos, na sua opinião, os recursos para garantir a segurança são primordiais para uma linguagem de programação? desenvolvimento de ferramentas de programação em C ++. O pré- processador é outro obstáculo que afeta os ambientes de desenvolvimento de programas em C e C ++. praticarVamos Praticar A Linguagem Pascal, que segue o paradigma de programação imperativa, foi desenvolvida nos anos entre 1968 a 1970 e em 1970 foi disponibilizado o primeiro compilador para a linguagem. Essa linguagem possui algumas limitações, como: não reconhecer diretivas de compilação e suportar pouca memória, se comparado a outros compiladores. Utilizando a linguagem pascal, crie um algoritmo que após a entrada de valor de um número é retornada uma mensagem informando se o número é positivo ou negativo. Para isso, você pode utilizar a IDE PascalZim, que é um ambiente integrado a um compilador da linguagem Pascal para auxiliá-lo(a) no processo. Vamos praticar. Existem muitos tipos de semântica, incluindo: algébrica, axiomática, denotacional, operacional e outros. Eles não são competitivos, mas complementares. Existem muitas aplicações de semântica, e um sistema semântico especí�co pode ser mais ou menos apropriado para uma tarefa especí�ca. Por exemplo, uma semântica denotacional é um mapeamento da construção de um programa para entidades matemáticas abstratas, que representam o "signi�cado" das construções. A semântica denotacional é uma linguagem e�caz para a comunicação entre o designer e os implementadores de um Linguagem de Programação, mas geralmente não é de grande interesse para um programador que usa uma determinada Linguagem de Aspectos SintáticosAspectos Sintáticos e Semânticose Semânticos Básicos deBásicos de Linguagem deLinguagem de ProgramaçãoProgramação (Parte II)(Parte II) Programação. Uma semântica axiomática, por outro lado, não é muito útil para um implementador, mas pode ser muito útil para um programador que deseja provar a correção de um programa. As ideias básicas da semântica denotacional são devidas a Landin (1965) e Strachey (1966). A inscrição mais completa foi concluída por Milne (1976) após a morte de Strachey. A semântica denotacional é umapoderosa ferramenta descritiva: fornece técnicas para mapear quase qualquer recurso de Linguagem de Programação em uma função matemática de alta ordem. A semântica denotacional se desenvolveu como uma técnica descritiva e foi estendida para lidar com recursos cada vez mais misteriosos, como saltar para blocos. Ashcroft e Wadge publicaram um artigo interessante (1982), observando que os recursos das Linguagens de Programação que eram fáceis de implementar eram muitas vezes difíceis de descrever e vice-versa. Eles sugeriram que a semântica denotacional devesse ser usada prescritivamente e não descritivamente. Em outras palavras, um designer de Linguagem de Programação, deve começar com uma semântica denotacional simples e depois descobrir como implementar a linguagem – ou talvez deixar essa tarefa para os implementadores. Veja, a seguir, algumas linguagens de programação, sua história seu surgimento e as principais personalidades da história da computação. Alan Turing Até a metade do século, os computadores eram para �ns militares e depois começaram a surgir os Uma linguagem de programação é um formalismo arti�cial no qual algoritmos podem ser expressos. Apesar de toda a sua arti�cialidade, esse formalismo continua sendo uma linguagem. Seu estudo pode fazer bom uso dos muitos conceitos e ferramentas desenvolvidos no século passado em linguística (que estuda línguas naturais e arti�ciais). Sem entrar em grandes detalhes, este capítulo apresenta o problema do que signi�ca “dar” (de�nir ou entender) uma linguagem de programação e quais ferramentas podem ser usadas nessa tarefa. Cada linguagem de programação possui recursos e ferramentas especí�cas para atender ao objetivo pelo qual ela foi criada, mas existem alguns tipos de otimizações que podem ser feitos ao gerar o código através dessas linguagens. Segue algumas operações que podem ser executadas: Remoção de código inútil (remoção de código morto). Ou seja, remoção de partes do código que nunca vão ser executados porque não há uma sequência de execução que possa atingir com eles. Expansão em linha de chamadas de função. Algumas chamadas de função (procedimento) podem ser substituídas pelo corpo da função eletrônicos. Alan Turing foi um famoso cientista, pioneiro nos estudos sobre computadores. Ele contribuiu para os conceitos de algoritmo e computação, principalmente com a Máquina de Turing. freepik.c associada, tornando a execução mais rápida. Isso também possibilita outras otimizações. Fatoração de subexpressão. Alguns programas calculam o mesmo valor mais do que uma vez. Se e quando esse fato for descoberto pelo compilador, o valor da subexpressão comum poderá ser calculado apenas uma vez e depois armazenado. Otimizações de loop. As iterações são os locais onde as maiores otimizações podem ser realizadas. Entre essas, a mais comum consiste em remover de dentro um loop o cálculo de subexpressões cujo valor permanece constante durante interações diferentes. praticarVamos Praticar Um recurso importante para as linguagens de programação é o comentário, que serve para que o compilador desconsidere as linhas comentadas bem como para que o programador possa documentar o código. Nesse sentido, assinale a alternativa correta para comentários no código em Java. a) ) # Este é um comentário. b) /* Este é um comentário. c) // Este é um comentário. d) <!-- Este é um comentário --> e) + Este é um comentário indicações Material Complementar FILME Piratas da informática Ano: 1999 Comentário: O �lme retrata a história de Steve Jobs e Bill Gates em sua jornada para a criação de computadores e sistemas operacionais destinados ao uso pessoal e não somente para o trabalho ou pesquisa. Os dois foram os líderes da mudança de conceito no uso da computação para �ns pessoais. Para conhecer mais sobre o �lme, acesse o trailer a seguir. TRA ILER LIVRO O Programador Pragmático Editora: Grupo A Selo: Bookman Andrew Hunt e David Thomas ISBN: 9788577807000 Comentário: Este livro traz inúmeras boas práticas para o desenvolvimento de software, também evidencia quais são as armadilhas que devemos conhecer ao projetar sistemas. É considerado um livro de cabeceira pela maioria dos programadores e pode ajudar muito a delinear a carreira de programadores iniciantes. conclusão Conclusão Muita coisa mudou na última década, e mais mudanças ocorrerão à medida que avançamos em direção a um futuro cada vez mais conectado pela tecnologia e pela evolução exponencial da capacidade de processamento e armazenamento computacional. Por enquanto, as linguagens mais versáteis e seguras continuarão sendo as mais amplamente usadas, mas quem sabe como será o futuro da programação, especialmente com os contínuos avanços da engenharia e robótica. O futuro é tão aberto de possibilidades quanto nossa imaginação criativa pode conceber. Sabe-se que a linguagem natural do ser humano está sendo amplamente estudada para que seja utilizada cada vez mais nos processos de interfaceamento de tecnologia com métodos de comunicação cada vez mais aperfeiçoados ao modelo de vida atual, o futuro trará grandes desa�os e muito aprendizado para os programadores que desejam desbravar os novos paradigmas de linguagem que estão para surgir. referências Referências Bibliográ�cas ASHCROFT, E.; WADGE, W. Rx for semantics. ACM Trans. Programming Languages and Systems, 4(2), p. 283–294, 1982. BROOKS, F. P. No silver bullet: Essence and accidents for software engineering. IEEE Computer, 20(4), p. 10-18, abril, 1987. DEVELOPER Survey Results 2019. Stackover�ow. [s.d.]. Disponível em: https://insights.stackover�ow.com/survey/2019#technology. Acesso em: 07 maio 2020. LANDIN, P. J. A correspondence between Algol 60 and Church’s lambda- notation. Communications of the ACM, n. 8, p. 89-101, p. 158-165, agosto, 1965. LIENTZ, B. P.; SWANSON, E. B. Software Maintenance Management. Addison Wesley, 1980. MCKEE, J. R. Maintenance as a function of design. Proc. AFIPS National Computer Conference, p. 187-93, p. 1984. MILNE, R. E.; STRACHEY, C. A Theory of Programming Language Semantics. John Wiley, 1976. SILVA, E. L. da. Programação de Computadores. São Paulo: Pearson, 2014. 168p. STACKOVERFLOW (ed.). Developer Survey Results 2019. 2019. Disponível em: <https://insights.stackover�ow.com/survey/2019#technology>. Acesso em: 20 abr. 2020. STRACHEY, C. Towards a formal semantics. In: STEEL, T. B. (ed.). Formal Language Description Languages for Computer Programming. North- Holland, 1966. TUCKER, A. B.; NOONAN, R. E. Linguagens de Programação: princípios e paradigmas. 2. ed. Porto Alegre: Amgh, 2010. 599p. https://insights.stackoverflow.com/survey/2019#technology https://insights.stackoverflow.com/survey/2019#technology
Compartilhar