Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Rota de Aprendizagem – Aula 1 Contextualização Linguagem de Programação é uma ferramenta que permite ao programador ou usuário de computação escrever programas. Como programa define-se um conjunto de instruções a serem seguidos pelo computador para realizar um determinado processo. Várias são as linguagens de programação existentes no mercado (tais como C, Java, PHP, entre outras), porém para cada linguagem faz-se necessário que o programador ou usuário saiba os símbolos e sintaxes definidas por esta, no intuito de combiná-los para produzir um programa válido. Dentre os benefícios de se estudar linguagens de programação, podemos destacar (Varejão, 2004): Maior capacidade de desenvolver soluções computacionais para problemas, ou seja, quanto maior a compreensão sobre os conceitos de linguagens de programação maior a habilidade do programador em como pensar e resolver problemas. Maior habilidade ao usar uma nova linguagem de programação. À medida que o programador vai agregando conhecimento de outras linguagens, mais fácil do programador entender as modificações entre as linguagens, bem como a utiliza-las de forma mais inteligente e otimizada. Maior capacidade para escolher linguagens de programação apropriadas, isto é, quanto maior o domínio sobre as linguagens maior a capacidade de determinar qual linguagem melhor se adequa na resolução dos problemas. Maior habilidade para aprender novas linguagens de programação. Por exemplo, programadores que sabem os conceitos de orientação a 2 objetos possuem maior facilidade em aprender linguagem que utilizem destes paradigmas. Maior habilidade para projetar novas linguagens de programação. As linguagens de programação foram criadas para possibilitar o trabalho do programador mais produtivo. Logo, o objetivo principal da linguagem de programação é tornar mais efetivo o processo de desenvolvimento de software. Cabe ressaltar que, por meio destas linguagens de programação, é possível torna-los mais produtivos em sua geração e manutenção, como também, garantir que toda produção de software seja feita respeitando os padrões de qualidade. Independentemente de como é seguido o processo de desenvolvimento de software, é necessário que as linguagens de programação apresentem as seguintes propriedades desejáveis, a saber: Legibilidade: esta propriedade trata da facilidade para se ler e entender um determinado programa. Quanto mais fácil for entender e seguir suas instruções, mais fácil será de entender o que está sendo feito, bem como de descobrir possíveis erros de programação. Exemplo: media = (nota1 + nota 2)/2; No exemplo é possível entender que a instrução se trata de calcular a média com base na soma de duas notas (1 e 2). Desta forma, pode-se dizer que este trecho do código apresenta uma boa legibilidade. Redigibilidade: possibilita ao programador se dedicar aos aspectos mais relevantes da implementação, ou seja, não perde tempo entendendo outras características que não são necessárias a resolução do problema. Confiabilidade: são os mecanismos fornecidos pela própria linguagem de programação para incentivar a construção de programas confiáveis. Por exemplo, as linguagens de programação que requerem a declaração 3 de dados permitem verificar automaticamente erros de tipos durante a compilação ou execução do programa. Eficiência: determinadas linguagens de programação são mais recomendadas que outras devido às demandas por recursos de um tipo de aplicação. Desta forma, a propriedade eficiência é direcionada normalmente ao uso de linguagens de programação que minimizem o tempo de execução e de acesso aos dispositivos periféricos, bem como o consumo de espaço de memória. Facilidade de aprendizado: capacidade de o programador aprender a linguagem com facilidade. Linguagens de programação que apresentam muitas características e formas de realizar a mesma funcionalidade tendem a ser mais complexas de aprender. Por exemplo, na linguagem de programação C pode-se executar o comando de incremento de várias formas: c = c+1; c+=1; c++; Ortogonalidade: possibilidade de o programador combinar seus conceitos básicos sem que se produzam efeitos distorcidos nessa combinação. Linguagens de programação ortogonais são interessantes porque os programadores podem prever, com segurança, o comportamento de uma determinada combinação de conceitos (Varejão, 2004). A falta de ortogonalidade dificulta o aprendizado da linguagem de programação e pode estimular a ocorrência de erros de programação. Reusabilidade: pode-se dizer que está é uma das propriedades mais desejáveis de uma linguagem de programação. Pois, possibilita reutilizar o mesmo código pra diversas aplicações, ou seja, quanto mais reusável for um código, maior será a sua produtividade de programação. Por exemplo, este trecho de código pode ser utilizado por qualquer aplicação que deseje trocar os valores de duas variáveis inteiras. 4 void troca (int *x, int *y) { int z = *x; *x = *y; *y = z; } Modificabilidade: refere-se às facilidades das linguagens de programação em possibilitar ao programador modificar o programa em função de novos requisitos (funcionalidades dos sistemas), sem que tais modificações impliquem mudanças em outras partes do programa. Portabilidade: independente da linguagem em que o programa foi escrito este, por sua vez, deve se comportar da mesma forma independente da ferramenta utilizada para traduzi-lo para a linguagem de máquina ou então para a arquitetura computacional (hardware ou sistema operacional) sobre o qual está sendo executado. Métodos de Implementação de Linguagens de Programação Todo e qualquer programa independente de qual linguagem seja escrito necessita ser traduzido para uma linguagem de máquina para que possa ser executado. Para isso, faz-se necessário o uso de um conjunto de programas que recebe o código-fonte do programa a ser traduzido e gere o código traduzido na linguagem de máquina. Dentre os métodos de implementação de tradução do código-fonte em linguagem de máquina para execução estão a compilação, interpretação pura e híbrido, conforme ilustra a Figura 1. O método de implementação denominado de compilação efetua em seu processo a tradução integral do programa fonte para o código de máquina. Assim, uma vez traduzido o programa em linguagem de máquina este pode ser executado diretamente. 5 Figura 1. Métodos de implementação de Linguagens de Programação Fonte: Varejão, 2004 Como vantagens deste método destaca-se a otimização da eficiência na execução do programa, pois esta é rápida devido a não necessitar traduzir durante a execução e também grande parte das verificações de erros já pode ser efetuada durante a tradução. Outro benefício do método é o processo de compilação que requer apenas o código executável para que o programa rode. No entanto, como desvantagens tem-se a falta de portabilidade do código executável, ou seja, uma vez executado para uma determinada arquitetura computacional este somente será executado nesta arquitetura. Por exemplo, um programa em C compilado sobre o ambiente Windows não é executável no ambiente Linux, e vice-versa. Diferente deste método de implementação compilado o método chamado de interpretação pura destina-se a simular um computador virtual capaz de entender as instruções da linguagem de programação. Em outras palavras, o código fonte é traduzido para a linguagem de máquina quando necessitaser executado e, posteriormente a essa execução, o código gerado é executado. Como vantagens este método apresenta a facilidade em prototipação, isto é, permite-se executar comandos ou partes do programa a medida que estes são 6 construídos, verificando, assim, se atuam corretamente estas instruções ou comandos. A execução mais lenta do programa é considerada uma desvantagem se comparada ao método de compilação. Sendo que, a razão para esta lentidão é decorrente da necessidade de o interpretador decodificar comandos complexos da linguagem de programação, verificar erros do programa e gerar código em linguagem de máquina durante a própria execução do programa. O processo híbrido combina tanto a execução eficiente quanto a portabilidade de programas pela aplicação combinada dos métodos de compilação e interpretação. A base para este processo é a existência de um código intermediário, mais fácil e ser interpretado e, ao mesmo tempo, não específico de uma plataforma computacional. Assim, este método de implementação hibrido é dividido em duas partes, uma destinada a compilação para um código intermediário e a segunda para a interpretação desse código. Para Varejão (2004), embora a execução seja mais lenta que o código compilado, a interpretação do código intermediário é mais rápida se comparado à interpretação pura do código fonte. Paradigmas de Linguagens de Programação Como paradigmas de linguagem de programação chamamos um conjunto de características que serve para classificar um grupo de linguagens. Várias são as classificações dos paradigmas de linguagem de programação, porém a mais conhecida é a que divide estes em imperativo, orientado a objetos, funcional e lógico. Cabe ressaltar a não rigidez desta classificação, possibilitando as linguagens de programação ser enquadradas em outros paradigmas simultaneamente. A Figura 2 ilustra a classificação dos paradigmas em dois: imperativo e declarativo. 7 Figura 2 – Paradigmas de Linguagens de Programação O paradigma imperativo engloba os conceitos fundamentados na computação como um processo que realiza mudanças de estados. Os programas incluídos neste paradigma especificam como uma computação realizada por uma sequência de alterações no estado da memória do computador. O objetivo dos programas neste paradigma é especificar como um processamento deve ser realizado no computador, sendo os principais conceitos as variáveis, os valores e atribuições. O paradigma imperativo pode ser subdivido em estruturado, orientado a objetos e concorrente. No paradigma estruturado a programação se caracteriza pela existência de uma sequência monolítica de comandos e pelo uso de desvios condicionais e incondicionais para determinar o fluxo de controle da execução do programa. Desta forma, a programação estruturada organiza o fluxo de controle de execução dos programas desestimulando o uso de comandos de desvios incondicionais e incentivando a divisão dos programas em subprogramas e em blocos alinhados de comandos. Dentre as linguagens de programação mais Paradigmas Declarativo Imperativo Estruturado Orientado a Objetos Concorrente Funcional Lógico 8 conhecidas neste paradigma estruturado encontram-se a linguagem PASCAL e C. Por outro lado, no paradigma orientado a objetos o principal objetivo é utilizar os conceitos de objetos no desenvolvimento dos programas para torá-los mais rápidos e confiáveis. Enquanto que as linguagens que adotam o paradigma estruturado focam na abstração de controle de execução dos programas, as linguagens que adotam o paradigma orientado a objetos enfatizam a abstração dos dados como elemento básico da programação. Considera-se o paradigma orientado a objetos uma evolução do paradigma estruturado, principalmente no que tange a especificação dos métodos. As linguagens SMALTALK, C++ e Java são as mais conhecidas nesta classificação. Já o paradigma concorrente ocorre quando vários processos executam simultaneamente e concorrem por recursos. Este paradigma engloba linguagem como ADA e Java que oferecem facilidades no desenvolvimento destes sistemas. Em contraste aos paradigmas anteriores, no paradigma declarativo os programas são especificações sobre o que e determinada tarefa. Ou seja, o programador não precisa se preocupar sobre como o computador é implementado, muito menos saber qual melhor forma de realizar determinada tarefa. Para o programador o que importa é descrever de forma abstrata como determinada tarefa é resolvida. Este paradigma é subdivido em paradigma funcional e paradigma lógico. No paradigma funcional as linguagens de programação se caracterizam por operarem apenas sobre funções, as quais recebem listas de valores e retornam um determinado valor. Esta programação tem como finalidade definir uma função que retorne um valor como resposta do problema. As linguagens que se destacam nesta classificação são LISP e ML. Por outro lado, o paradigma declarativo é totalmente baseado em linguagens lógicas que são baseadas em subconjuntos do cálculo de predicados. Como 9 predicado define-se a relação entre constantes ou variáveis. E como característica principal deste paradigma lógico é que a execução dos programas corresponde a um processo de dedução automática.
Compartilhar