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