Você está na página 1de 3

Resumo para a prova de LP

1.1 - Razões para se estudar os conceitos de linguagem de programação

● Aumento da capacidade para expressar ideias​: O pensamento da pessoa é


influenciado pelo poder da linguagem, ou seja, se uma pessoa pessoa possui pouco
conhecimento sobre o funcionamento de uma linguagem, mais limitada ela estará.
As construções de uma linguagem pode ser simuladas em outras linguagens que
não possuem suporte para tal, porém o recomendado é usar o que está feito na
linguagem, ao invés de simular.
● Melhora a capacidade para escolher uma linguagem apropriada​: Um programador
tende a escolher a linguagem que ele está mais familiarizada para um determinado
projeto, mesmo que ela não seja adequada para tal, porém, caso ele saiba outras
linguagens, isso pode influenciar em uma escolha acertada de uma linguagem para
um projeto específico, visto que ele irá saber os detalhes de cada uma e com isso
ele poderá tomar uma decisão melhor.
● Melhora a capacidade para aprender novas linguagens​: O processo de aprendizado
de uma nova linguagem de programação pode ser difícil, caso o programador esteja
nunca tenha estudado os conceitos gerais das linguagens, porém, uma vez que ele
possui esse conhecimento, fica mais fácil aprender uma linguagem, pois basta ele
ver como que uma determinada linguagem implementa o conceito.
● Melhor compreensão do significado da implementação​: O entendimento da
implementação pode levar ao entendimento de como uma determinada linguagem
foi projetada daquela maneira, levando a utilização dela de maneira inteligente. A
implementação pode ajudar a compreender como que o computador executa as
construções de uma linguagem.
● Melhor utilização das linguagens já conhecidas​: Através do estudo dos conceitos
das linguagens de programação, um programador pode entender mais acerca de
construções que antes ele não conhecia e utilizava em uma linguagem.
● Avanço geral da computação​: Através dos conceitos das linguagens de
programação, é possível entender o porquê de algumas linguagens serem menos
utilizadas ou terem caído em desuso e outras linguagens serem tão populares.

1.2 - Domínios da Programação


● Domínio científico​: Onde são utilizadas estrutura de dados simples e um uso
massivo de números de ponto flutuante. A primeira linguagem e a mais utilizada foi o
Fortran, porém existe o ALGOL 60 para competir com ela.
● Domínio comercial/negócios​: A linguagem que foi mais utilizada para esse tipo de
domínio foi o COBOL, sendo usado para elaborar relatórios.
● Inteligência Artificial​: Utiliza computação simbólica usando listas encadeadas e
símbolos (nomes) e é caracterizado pela flexibilidade. A primeira linguagem criada
para esse propósito foi o LISP, porém mais tarde foi criado o conceito de
programação lógica, com Prolog.
● Programação de sistemas​: Se destaca por possuir características de baixo nível que
permitem o software se comunicar com periféricos, exemplo de um sistema
operacional. A linguagem mais conhecida para este domínio é o C, facilitando a
portabilidade, aumentando a eficiência e o fato de ela possuir características de
baixo nível.
● Software para a Web​: Utiliza linguagens como Java, PHP ou javascript em conjunto
com linguagens de marcação como HTML e XHTML para construir softwares
dinâmicos para a internet.

1.3 - Critérios de avaliação de uma linguagem


1. Legibilidade​: Capacidade de leitura e entendimento de uma determinada
linguagem. Colocou a importância na manutenção e tirou o foco da
máquina(eficiência), colocando no usuário(entendimento e manutenção de
código).
a. Simplicidade​: Uma linguagem com um número maior de construções
básicas é uma linguagem mais difícil de se aprender, fazendo que um
programador aprenda apenas um pequeno subconjunto da
linguagem. Existe o problema da multiplicidade de características
(várias maneiras de se fazer a mesma coisa). Existe o sobrecarga de
operadores onde um operador possui mais de um significado.
b. Ortogonalidade​: É a capacidade de uma linguagem poder combinar
um pequeno conjunto de construções primitivas para construir
estruturas de dados e de controle. Quanto mais ortogonal for uma
linguagem, menor será a quantidade de exceções das regras da
linguagem. Um exemplo de ortogonalidade seria o retorno de structs
em função (permitido) e o retorno de um array em função (não
permitido) em C. A linguagem mais ortogonal seria o ALGOL 68.
c. Tipo de dados​: A presença de uma declaração fácil de um tipo de
dado facilita a legibilidade, exemplo de C.
d. Design da sintaxe​: Possui um efeito significativo na legibilidade, como
a utilização de palavras especiais, keywords, a forma e o significado
de um operador.
2. Escrita​: Mede o quão fácil uma linguagem pode ser utilizada para escrever
um programa. Está relacionado com a legibilidade.
a. Simplicidade e Ortogonalidade​: Se uma linguagem possui um número
muito grande de diferentes construções, alguns programadores
podem não estar familiarizados com todas elas, podendo causar o
uso de algumas características e o desuso de outras. Um conjunto
pequeno de construções primitivas e um conjunto consistente de
regras de combinação são melhores do que um conjunto grande de
construções primitivas. Caso uma linguagem possua bastante
ortogonalidade, será difícil detectar a origem de um possível erro.
b. Suporte à Abstração​: É um princípio básico no design de uma
linguagem, pois permite que vários detalhes de uma construção
sejam ignorados, facilitando a escrita de um programa e a legibilidade
dele.
c. Expressividade​: Capacidade de usar pouco código para efetuar
grandes quantidades de computação, aumentado a capacidade de
escrita de uma linguagem.
3. Confiabilidade​: Um programa é confiável se ele executa as suas
especificações em todas as condições possíveis.
a. Verificação de tipos​: É um teste para verificar se uma variável
pertence ao tipo que foi declarada, tornando um programa confiável,
podendo ser verificada em tempo de compilação e em tempo de
execução.
b. Tratamento de exceções​: É a capacidade de um programa interceptar
erros em tempo de execução e assim possibilitando a tomada de
medidas corretivas.
c. Criação de alias​: É a capacidade de uma linguagem poder possuir 2
nomes distintos apontando para o mesmo endereço de memória.
d. Escrita e Legibilidade​: Afetam diretamente a confiabilidade de uma
linguagem, pois um programa mais fácil de se escrever é maior a
probabilidade de ele estar correto.
4. Custo​: Existe o custo de se treinar um programador em uma determinada
linguagem, o custo de se escrever um programa, em que ambos pode ser
reduzidos através da utilização de um bom ambiente de desenvolvimento e
também existe o custo de compilação e o custo de execução, podendo usar
técnicas de otimização para diminuir esses custos.

1.4 - Influências no design de uma linguagem


1. Arquitetura do computador​: As linguagens imperativas foram projetadas
baseadas na arquitetura de Von Neumann.
2. Metodologias no design de uma linguagem de programação​: Imperativa,
Orientação a Objetos, Funcional e Lógica.
3. Trade-offs​: Confiabilidade x Custo de execução, Eficiência x Confiabilidade,
Expressividade x Legibilidade e Escrita x Legibilidade.
4. Métodos de implementação​: ​Interpretação pura (interpretação do código
fonte por um interpretador, sem parte de tradução), ​Compilação (tradução de
código fonte para código de máquina), ​implementação híbrida (interpretação
com compilação, mais rápido que a interpretação pura, pois a decodificação
das instruções só ocorrem uma vez, ocorre primeiro a etapa de compilação e
depois a etapa de interpretação da linguagem intermediária, bytecode) e o
pré processamento (Ocorre o processamento do programa antes de ele ser
compilado e realiza a expansão de macros).
5. Ambientes de desenvolvimento​: Ferramentas utilizadas para auxiliar o
desenvolvimento de programas, que inclui um conjunto de ferramentas
internas que auxilia o programador a desenvolver um programa de maneira
mais eficiente.