Buscar

Lista de Exercícios - Paradigmas de Linguagens de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1. Que argumentos você pode formular a favor da ideia de uma única 
linguagem para todos os domínios de programação? 
 
Uma vantagem que se pode pensar sobre essa atuação consiste 
no ato de se realizar tudo usando uma única linguagem de programação. 
Dessa forma, o programador deverá aprender somente essa linguagem. 
Além de que o foco, a dedicação e os investimentos pelo mundo estariam 
voltados para uma só linguagem de programação. 
 
2. Que argumentos você pode formular contra a ideia de uma única 
linguagem para todos os domínios de programação? 
Nesse caso, a linguagem pode ser bastante ampla a ponto de pecar 
no quesito da ortogonalidade, além da possibilidade de não ser tão 
eficiente para algumas aplicações específicas do que outras linguagens 
que se dedicam apenas nesses usos. 
 
3. Cite e explique outro critério pelo qual as linguagens podem ser 
julgadas (além dos discutidos no capítulo 1). 
Pode ser mencionado um critério que poderia ser chamado de 
“listagem e avaliação de usos”, que se trataria de uma listagem dos 
ambientes em que cada linguagem é usada e a avaliação desses usos, 
no sentido de estudar os pontos positivos e negativos de cada 
linguagem em seus respectivos ambientes de usos e até mesmo 
comparar com outras linguagens de mesmo espaço virtual, visando ter 
uma melhor noção de qual seria mais adequada para determinado 
projeto, possuindo em mente o que se deseja no projeto e o que se tem 
que abrir mão para conquistar esse objetivo desejado. 
 
4. Muitas linguagens fazem distinção entre letras minúsculas e 
maiúsculas em nomes definidos pelo usuário. Quais são as vantagens 
e desvantagens dessa decisão de projeto? 
Uma vantagem consiste no que diz respeito ao conjunto de 
minúsculas e maiúsculas na definição dos nomes que pode ser utilizado 
a fim de tornar a leitura do código mais fácil e legível, visto que quando se 
utiliza nomes compostos, a leitura é rapidamente feita devido a união de 
minúsculas e maiúsculas separando os nomes. Como por exemplo temos 
uma variável chamada “DoisNomes”, em que a leitura é mais eficiente do 
que se tivéssemos uma variável chamada “Doisnomes”. 
Por outro lado, um exemplo de desvantagem se dá quando é 
possível fazer com que nomes como: Carro e carro, sejam tratados de 
forma exclusiva quando na verdade tratava-se de erros de 
digitação. Dessa forma, existe a possibilidade de usar essas duas 
representações em um mesmo código como símbolos únicos, o que 
diminui a legibilidade. 
5. Descreva alguns trade-offs de projeto entre a eficiência e a segurança 
em alguma linguagem que você conheça. 
 
Um exemplo pode ser dado com a linguagem Python, esta que é 
de tipagem dinâmica e não requer em seu uso a declaração dos tipos 
das variáveis, o que gera tanto uma melhor flexibilidade por parte do 
programador na conversão de tipos de variáveis, quanto eficiência na 
produção de um programa, visto que o profissional não consome tempo 
declarando os tipos. Porém, por outro lado, o quesito da confiabilidade 
pode ser prejudicado, visto que em códigos extensos essa manipulação 
de tipos e de dados com a ausência da declaração explícita de tipos 
pode ser complexa e gerar confusões no profissional. 
 
Pode-se mencionar também a linguagem Java a fim de dar um 
exemplo de trade-offs entre eficiência e segurança/confiabilidade, 
quando se diz respeito ao uso de vetores na linguagem citada, em que 
esta exige que todas as referências existentes aos elementos de um 
vetor sejam verificadas anteriormente com o objetivo de garantir que os 
índices usados são válidos para tal vetor (quando os índices se 
localizam dentro de uma faixa existente do vetor). Dessa forma, 
possivelmente temos uma execução de programa mais lenta devido às 
grandes verificações mencionadas, contudo possuímos mais 
confiabilidade e segurança nesses usos. 
 
6. Explique os diferentes aspectos do custo de uma linguagem de 
programação. 
 
• Treinamento de equipe: Tem-se o custo para treinar profissionais 
para usar a linguagem, que irá depender da simplicidade da 
linguagem, da ortogonalidade e da experiência dos 
programadores, esta que também irá ditar a dificuldade e o tempo 
com que eles aprenderão as construções da linguagem; 
• Escrita de programas: Trata-se da facilidade de escrita da 
linguagem, em que depende do quão próxima ela está com o 
propósito da aplicação em particular. Ao projetar e implementar 
uma linguagem de alto nível, seus esforços são direcionados à 
criação de software de maneira menos custosa; 
• Compilação de programas: Refere-se ao custo requerido pela 
execução dos compiladores; 
• Execução de programas: O custo necessário com a execução de 
programas tem forte influência de como a linguagem de 
programação usada é projetada/estruturada e o quanto de 
otimização extra ela requer a fim de executar seu código na 
velocidade desejada; 
• Sistema de implementação da linguagem: Uma linguagem 
alcançará o público mais rapidamente e terá mais chance de ter 
uma fácil aceitação se após sua disponibilização, houver também 
a liberação de seu compilador de forma gratuita, fazendo com que 
uma maior quantidade de pessoas possa testar tal linguagem e 
verificar a sua qualidade. 
• Confiabilidade baixa: Caso um software/uma linguagem de 
programação falhe em um ambiente crítico (ou até mesmo não 
crítico), as consequências podem ser catastróficas, desde o 
quesito financeiro ou até mesmo ser o motivo de várias mortes. 
• Manutenção de programas: O custo com a manutenção de 
programas agrega tanto possíveis correções de bugs/erros, 
quanto melhorias e implementações de novas funcionalidades no 
software. Para isso, a linguagem precisa ser legível, a fim de que 
quaisquer alterações futuras possam ser feitas sem grandes 
dores de cabeça devido à má legibilidade do código, por exemplo. 
 
7. Em sua opinião, quais recursos importantes uma linguagem de 
programação perfeita incluiria? 
Em minha opinião, futuramente poderia existir linguagens de 
programação que possuam um sistema inteligente de autorreparos, em 
que tal linguagem possa aprender a se autorreparar sem a necessidade 
de uma maior interferência humana no quesito depuração, por exemplo. 
Dessa forma, o desenvolvedor poderia investir mais tempo programando 
algo do que conferindo a depuração de um código extenso a fim de 
reparar alguma coisa possivelmente simples, por exemplo. 
 
8. Algumas linguagens de programação – por exemplo, Pascal – têm 
usado ponto e vírgula para separar sentenças, enquanto Java os utiliza 
para terminar sentenças. Qual desses usos, em sua opinião, é mais 
natural e menos provável de resultar em erros de sintaxe? Justifique 
sua resposta. 
Acredito que isso depende bastante do primeiro contato de uma 
pessoa com o âmbito da programação e qual é a primeira linguagem 
aprendida por ela e como as coisas funcionam nessa linguagem. Por 
exemplo, quem aprende a programar utilizando Python verá que não se 
faz uso do ponto e vírgula para separar ou até mesmo terminar 
sentenças, além do não uso de chaves para delimitar o início e o fim de 
um comando, visto que aqui é feito por meio da indentação. Dessa 
forma, quando esse indivíduo que aprendeu primeiramente Python for 
migrar para uma linguagem como Java, que faz uso do ponto e vírgula 
para finalizar sentenças e o uso de chaves, ele terá bastante dificuldade 
inicialmente para se familiarizar com essa nova notação. Mas tudo isso 
se trata de dedicação e bastante prática em uma determinada 
linguagem. 
Ainda assim, posso opinar que o uso do ponto e vírgula no Pascal 
aparenta ser mais natural, visto que em vários idiomas de fato o ponto e 
vírgula é usado dentre outras coisas para separar sentenças, mas nunca 
para finalizar uma sentença, já que esse feito é tarefa do ponto final.

Continue navegando