Paradigmas de programação
Por: Giselle Almeida • 14/10/2015 • Trabalho acadêmico • 786 Palavras (4 Páginas) • 835 Visualizações
Lista de Exercícios de Linguagens de Programação I Universidade Federal do Amazonas
Instituto de Computação/Sistemas de Informação Marco Cristo
Introdução e contexto histórico
- O que significa compatibilidade reversa? Dê um exemplo desse conceito empregado em linguagens de programação.
Compilador de uma versão de uma linguagem compila sem modificação o código escrito pra versão anterior. Ex: Fortran III em relação ao Fortran II; Java 7 em relação ao Java 6.
- Quais são os prós e os contras de distinguir caracteres maiúsculos de minúsculos em nomes de identificadores em algumas linguagens de programação?
Pró: facilita a legibilidade de nomes constituídos por múltiplas palavras (intNumElementos); Contra: erros de digitação que podem ser difíceis de perceber (embora, compiladores devam indicá-‐lo sem problemas); ter que recordar que convenção que foi usada especialmente quando umas das palavras é um acrônimo (TCPsocket ou TcpSocket).
- Linguagens OO não levam aos programas mais eficientes em tempo de execução. Por que então elas são tão usadas?
Eficiência em tempo de execução não é o único aspecto de interesse no projeto de uma linguagem. Linguagens OO são excelentes em vários aspectos importantes como facilidade de reuso de código, manutenção e expressividade.
- Porque a linguagem Smalltalk é normalmente descrita como a primeira orientada a objetos, se os conceitos de classe, objetos e herança foram introduzidos antes, no Simula-‐ 67?
Porque é Smalltalk que introduz OO como um paradigma de programação por si mesmo e não uma forma conveniente de codificar simulações (como no caso do Simula-‐67). Qualquer programa deveria ser concebido como parte da hierarquia de objetos da linguagem, de forma a estender tal taxonomia e possibilitar a programação com reuso (principalmente por meio de herança) por times de programadores.
- Em que medida, requisitos como portabilidade e segurança necessários em sistemas que deveriam ser embarcados em eletrodomésticos, tornaram JAVA adequada para a Web?
Aplicações para web deveriam executar em plataformas muito heterogêneas e deveriam dificultar a invasão dessas plataformas.
- Compare as linguagens C e Java, considerando os seguintes critérios:
- Simplicidade, Ortogonalidade, Tipos de Dados, Projeto de Sintaxe, Suporte à Abstração, Expressividade, Checagem de Tipos, Manipulação de Exceções e Restrição de Aliases
- Simplicidade -‐ Java simplifica vetores, matrizes e ponteiros. Contudo, de várias formas, Java é mais complexa no tratamento distinto entre objetos x tipos primitivos. OO também torna o uso de funções e métodos mais complexos por suportar controle de acesso. A passagem de parâmetros em C é mais complexa por requerer ponteiros para simular passagem por referência. Em geral, C é mais simples, exceto pelo uso de ponteiros.
- Ortogonalidade – I/O de Java é ortogonal (por meio de classes). Como dito antes, tratamento de objetos e tipos primitivos não é ortogonal. Em geral, C é uma linguagem mais ortogonal, especialmente devido a necessidade do Java suportar tipos primitivos e objetos.
- Tipos de Dados – Java é OO, logo muito mais sofisticada que C em termos de tipos dados. De fato, ela é até muito complexa se tudo que você precisa são registros. Java também suportar tipos primitivos como o booleano, ausente no C.
- Projeto de sintaxe – com exceção de ponteiros (C) e passagem de mensagens (Java), as suas linguagens são quase idênticas.
- Suporte à abstração – embora ambas as linguagens tenham excelente suporte, Java é OO.
- Expressividade – Novamente, JAVA é OO e, portanto, lida trivialmente com conceitos difíceis de expressar em C.
- Checagem de Tipos – C é uma linguagem conhecida por preterir checagem de tipos por desempenho. Não é o caso de Java.
- Manipulação de exceções – Java tem mecanismo específico enquanto C confia em retornos de funções, flags e codificação manual.
- Restrição de aliases – Como C confia muito em ponteiros e Java em referências, nenhuma das duas é superior nesse aspecto.
- Legibilidade, escrita e confiabilidade
- Legibilidade – nenhuma das duas é particularmente legível. Contudo, códigos C sem abuso de ponteiros tendem ser mais fáceis de ler que códigos Java devido ao uso de objetos (sem muita ortogonalidade ou simplicidade).
- Facilidade de Escrita -‐ Java é melhor pois suporta objetos e, portanto, muito reuso.
- Confiabilidade -‐ Java é melhor por suportar mecanismos de exceção e evitar ponteiros.
Obs:
- Resposta pode ser entregue em dupla;
- Respondam com as próprias palavras. Plágio resultará em cancelamento das listas em que a cópia for observada;
- Data de entrega a ser definida no site da disciplina;
...