Você está na página 1de 17

Universidade Rovuma

Licenciatura em Engenheira Informática, 1⁰ ano Pós-laboral

Linguagem de Programação

Discente: Docente:

Paulo Joaquim

Nampula, Setembro de 2023


Índice
1.1. Objectivos.........................................................................................................................1

1.1.1. Geral..........................................................................................................................1

1.1.2. Específicos.................................................................................................................2

1.2. Metodologia......................................................................................................................2

2. Linguagens de programação.....................................................................................................3

2.1. Importância das Linguagens de Programação..................................................................3

2.2. Classificação de Linguagens de Programação: Quanto ao Nível de Abstração................5

2.3. Tipos de Linguagens de programação..............................................................................7

2.4. Tradução de HLL............................................................................................................10

2.5. Vantagens e Desvantagens..............................................................................................11

3. Conclusão...............................................................................................................................14

4. Bibliografia.............................................................................................................................15
1. Introdução
A linguagem de programação é um dos pilares fundamentais que sustentam a revolução
tecnológica em curso. À medida que avançamos cada vez mais para uma sociedade altamente
digitalizada, as linguagens de programação desempenham um papel central na criação de
soluções tecnológicas inovadoras que afetam todos os aspectos de nossas vidas. Essas
linguagens, que evoluíram significativamente ao longo das décadas, permitem que
desenvolvedores de software comuniquem suas ideias e intenções aos computadores, instruindo-
os a realizar tarefas complexas, desde processar enormes volumes de dados até controlar
sistemas automatizados.

A história da linguagem de programação é uma narrativa fascinante que abrange desde os


primórdios da computação até os dias de hoje. Desde a criação da linguagem assembly nas
décadas de 1940 e 1950, passando pelo surgimento de linguagens de alto nível como Fortran,
COBOL e C, até as linguagens modernas como Python, JavaScript e Ruby, cada uma delas tem
contribuído para moldar a forma como interagimos com a tecnologia. Essas linguagens tornaram
possível o desenvolvimento de sistemas operacionais, aplicativos móveis, redes sociais,
inteligência artificial, veículos autônomos e muito mais.

No contexto atual, onde a tecnologia permeia todos os aspectos da sociedade, a compreensão das
linguagens de programação se torna cada vez mais relevante. Elas são o alicerce sobre o qual a
transformação digital e a inovação tecnológica estão construídas. Nesta introdução, exploraremos
o papel crucial da linguagem de programação, sua evolução histórica e sua influência profunda
em nossa era digital, destacando como essas linguagens capacitam a criação das ferramentas e
sistemas que moldam nosso mundo contemporâneo.

1.1. Objectivos

1.1.1. Geral

 Compreender o papel fundamental das linguagens de programação na tecnologia


moderna e na sociedade digitalizada, explorando sua classificação, tipos, tradução de alto
para baixo nível, vantagens/desvantagens, impacto e relevância.

1
1.1.2. Específicos

 Descrever a importância das linguagens de programação na computação, respaldando as


informações com fontes acadêmicas.
 Classificar as linguagens de programação de acordo com o nível de abstração, explicando
como essa classificação afeta o desenvolvimento de software.
 Avaliar as vantagens e desvantagens de diferentes tipos de linguagem de programação,
apoiando as análises com estudos de casos e pesquisas acadêmicas.

1.2. Metodologia

 Levantamento de literatura acadêmica e técnica sobre linguagens de programação, suas


classificações, tipos e processos de tradução.
 Análise crítica das fontes selecionadas para embasar os objetivos específicos.
 Coleta e organização de dados sobre vantagens e desvantagens de linguagens de
programação em diferentes contextos.
 Síntese das informações e elaboração de um relatório de pesquisa baseado nos resultados
obtidos.

2
2. Linguagens de programação

As linguagens de programação são sistemas de comunicação entre seres humanos e


computadores, permitindo que programadores expressem instruções e algoritmos em uma forma
que os computadores possam entender e executar. Elas desempenham um papel fundamental na
criação de software e sistemas de computador.

Por outro lado, uma linguagem de programação é um conjunto de símbolos (comandos,


identificadores, caracteres ASCII, etc. ...) e regras de sintaxe que permitem a construção de
sentenças que descrevem de forma precisa ações compreensíveis e executáveis para o
computador.

Para aprofundar esse conceito, podemos citar o renomado cientista da computação Alfred Aho,
que descreveu uma linguagem de programação como:

"Uma linguagem de programação é uma notação para descrever algoritmos e estruturas de dados
de forma que esses possam ser interpretados por um computador. É uma ferramenta que permite
aos programadores expressarem suas intenções e direções para uma máquina."

Ora, temos que uma linguagem de programação é uma notação formal para descrição de
algoritmos que serão executados por um computador. Como todas as notações formais, uma
linguagem de programação tem dois componentes: Sintaxe e Semântica. A sintaxe consiste em
um conjunto de regras formais, que especificam a composição de programas a partir de letras,
dígitos, e outros símbolos. Por exemplo, regras de sintaxe podem especificar que cada parêntese
aberto em uma expressão aritmética deve corresponder a um parêntese fechado, e que dois
comandos quaisquer devem ser separados por um ponto-e-vírgula. As regras de semântica
especificam o “significado” de qualquer programa, sintaticamente válido, escrito na linguagem.

2.1. Importância das Linguagens de Programação

A importância das linguagens de programação é amplamente reconhecida na ciência da


computação e na indústria de tecnologia. A linguagem de programação é a ferramenta
fundamental que possibilita a criação de software, que, como notado por GRAHAM (2001),
onde infere que a maneira mais próxima que temos de uma varinha mágica.
3
O software impulsiona nossa vida cotidiana, desde sistemas operacionais em dispositivos
pessoais até sistemas de transporte autônomo. As linguagens de programação são essenciais para
a inovação tecnológica e são usadas em quase todos os campos da ciência e da indústria.

Para entender melhor a profundidade desse tópico, vamos explorar algumas citações e
referências que destacam sua importância:

i. Impulsionando a Inovação Tecnológica:

As linguagens de programação desempenham um papel crucial na inovação tecnológica. Como


afirma Abelson (1985), um renomado cientista da computação: "As linguagens de programação
são as ferramentas com as quais construímos nossos pensamentos."

Isso significa que as linguagens de programação permitem que os desenvolvedores traduzam


ideias em software funcional, impulsionando avanços em áreas como inteligência artificial,
medicina, transportes e muito mais.

ii. Transformando a Sociedade Digital:

A revolução digital que vivemos hoje é alimentada por linguagens de programação. Como
declarado por SCHMIDT, E. (2014), ex-CEO da Google:

"A programação é a pedra angular da revolução digital em curso."

Essa revolução digital afeta todos os aspectos da sociedade, desde a forma como nos
comunicamos até como trabalhamos, aprendemos e nos entretemos.

iii. Soluções para Desafios Complexos:

As linguagens de programação capacitam os programadores a enfrentar desafios complexos.


Niklaus Wirth, um pioneiro em linguagens de programação, destaca: "A linguagem de
programação é uma ferramenta de pensamento." Isso significa que as linguagens de programação
não são apenas para comunicação com computadores, mas também para expressar ideias e
solucionar problemas complexos (WIRTH, 1996).

iv. Moldando o Futuro:

As linguagens de programação moldam o futuro da tecnologia. Como observa Bjarne Stroustrup,


o criador da linguagem C++: "A linguagem de programação é uma forma de expressão, e molda
4
a maneira como pensamos." Isso destaca como as escolhas de linguagem podem influenciar
diretamente o desenvolvimento tecnológico e a resolução de problemas (STROUSTRUP, 1994).

2.2. Classificação de Linguagens de Programação: Quanto ao Nível de Abstração

Observe a imagem abaixo para visualizar a pluralidade de formas de classificação de linguagens


de programação.

Figura 1: Classificação de linguagens de programação.

Podemos classificá-las conforme paradigma, estrutura de tipos, grau de abstração e geração em


que essa linguagem foi desenvolvida. Vamos passar rapidamente apenas pelo seu grau de
abstração

A classificação de linguagens de programação quanto ao nível de abstração é um conceito


fundamental na ciência da computação, pois influencia significativamente como os
programadores expressam suas ideias e instruções para os computadores. Essa classificação
baseia-se principalmente na proximidade da linguagem de programação com a linguagem
humana ou com a linguagem de máquina.

5
Para compreendermos mais profundamente esse tópico crucial, vamos explorar citações e
referências que destacam essa classificação e sua importância.

i. Linguagens de Alto Nível - Próximas à Linguagem Humana:

Linguagens de alto nível são projetadas para serem mais compreensíveis e próximas da
linguagem humana. Pois, essas linguagens facilitam a expressão de algoritmos e ideias.
Exemplos incluem Python, Java e C++. Elas se destacam pela sua capacidade de expressar
algoritmos complexos e ideias de maneira mais natural. Segundo KNUTH (1974), um dos
pioneiros na ciência da computação, enfatiza que linguagens de alto nível têm o poder de elevar
o pensamento do programador a um nível superior.

Isso significa que essas linguagens permitem que os programadores se concentrem na solução de
problemas e na lógica subjacente, em vez de se preocuparem com detalhes de baixo nível da
máquina, como gerenciamento de memória ou manipulação de registradores.

ii. Linguagens de Baixo Nível - Próximas à Linguagem de Máquina:

Por outro lado, linguagens de baixo nível estão mais próximas da linguagem de máquina e, como
tal, requerem um entendimento mais profundo da arquitetura do hardware. Segundo
KERNIGHAN e RITCHIE (1978), os criadores da linguagem C, observam que C é um projeto
de linguagem que combina expressividade de alto nível com controle de baixo nível.

Isso destaca como linguagens de baixo nível fornecem um alto grau de controle sobre o
hardware, permitindo que os programadores otimizem algoritmos e utilizem recursos específicos
da máquina. No entanto, também significa que o desenvolvimento em linguagens de baixo nível
pode ser mais complexo e propenso a erros (KERNIGHAN e RITCHIE, 1978).

A escolha entre linguagens de alto ou baixo nível é uma decisão crítica no desenvolvimento de
software e depende do contexto do projeto. Como destacado por BROOKS (1975), autor de "The
Mythical Man-Month", infere que a primeira regra da otimização é: não a faça. A segunda regra
da otimização (somente para especialistas) é: ainda não a faça, a menos que seja absolutamente
necessária.

6
Essa observação ressalta que linguagens de alto nível são frequentemente preferíveis devido à
sua produtividade e facilidade de manutenção. No entanto, em situações de otimização extrema,
linguagens de baixo nível podem ser necessárias para atingir o desempenho desejado.

2.3. Tipos de Linguagens de programação

Além da classificação quanto ao nível de abstração, as linguagens de programação podem ser


categorizadas em vários tipos, como:

Existem muitos tipos de linguagens de programação, e elas podem ser classificadas de várias
maneiras com base em diferentes critérios. Uma das classificações mais comuns é quanto ao
paradigma de programação que a linguagem segue. Aqui estão alguns dos principais tipos de
linguagens de programação:

 Linguagens Procedurais: Essas linguagens se baseiam na execução de procedimentos ou


funções que contêm um conjunto de instruções. Exemplos incluem C, Pascal e Fortran.
 Linguagens Orientadas a Objetos: Nesse paradigma, o código é organizado em objetos,
que combinam dados e comportamento. Exemplos incluem Java, C++, Python e Ruby.
 Linguagens Funcionais: As linguagens funcionais se baseiam em funções matemáticas
para processar dados. Elas enfatizam a imutabilidade dos dados e a expressão de
conceitos de forma concisa. Exemplos incluem Haskell, Lisp e Erlang.
 Linguagens de Scripting: Essas linguagens são frequentemente usadas para automação de
tarefas e são interpretadas em tempo de execução. Exemplos incluem JavaScript, Python
e Ruby.
 Linguagens de Markup: Embora não sejam estritamente linguagens de programação,
essas linguagens são usadas para marcar documentos e dados para formatação ou
processamento. Exemplos incluem HTML (para marcação de páginas da web) e XML
(para representação estruturada de dados).
 Linguagens de Consulta: Essas linguagens são usadas para recuperar e manipular dados
em sistemas de gerenciamento de banco de dados. Exemplos incluem SQL (Structured
Query Language) e SPARQL (para consultas em dados RDF).
 Linguagens de Baixo Nível: São linguagens próximas da linguagem de máquina e
oferecem um alto grau de controle sobre o hardware. Exemplos incluem Assembly e C.

7
 Linguagens de Alto Nível: Essas linguagens são mais próximas da linguagem humana,
facilitando a expressão de algoritmos complexos. Exemplos incluem Python, Java e C#.
 Linguagens Específicas de Domínio (DSLs): São linguagens criadas para resolver
problemas específicos em um domínio particular. Exemplos incluem linguagens de
consulta de banco de dados específicas para um sistema.
 Linguagens de Interface de Comando (CLI): São usadas para criar scripts de automação e
interagir com sistemas operacionais e aplicativos. Exemplos incluem Bash (no Linux) e
PowerShell (no Windows).

Essa é apenas uma visão geral das diferentes categorias de linguagens de programação. Cada tipo
de linguagem tem suas próprias características, aplicações e vantagens, e a escolha de qual
linguagem usar depende dos requisitos do projeto e das preferências do programador.

Além disso, existem outras formas de classificação levando em conta o paradigma de


programação, estrutura do tipos, geração ou seguindo as categorias da Association for
Computing Machinery (ou Associação de Máquinas de Computação, em português).

Ainda que existam inúmeras linguagens, entenda um pouco sobre as principais:

a) JavaScript

É uma linguagem compilada de alto nível muito utilizada em sites front-end e no


desenvolvimento de jogos. Empresas como WordPress, Khan Academy, Linkedin e Groupon
utilizam essa língua em suas plataformas. Também é considerada uma ótima linguagem para
quem está começando no mundo da programação.

b) Phyton

É uma linguagem de programação de alto nível e de propósito generalista. Sua filosofia de


design enfatiza a legibilidade do código com a proposta de ser de fácil compreensão com o uso
de palavras-chave em inglês. Não costuma utilizar recursos gráficos como chaves e colchetes
para delimitar blocos.

c) Java

Ao contrário do que o nome pode levar a crer, Java e JavaScript não são linguagens que derivam
uma da outra ou similares. É uma linguagem de alto nível projetada para ter o menor número
8
possível de dependências de implementação. Dessa forma, os programadores escrevem o código
uma única vez e ele pode ser executado em qualquer plataforma que comporte essa linguagem de
programação.

d) PHP

É uma linguagem de uso geral e livre distribuição voltada para a criação de sistemas web. Como
utiliza o código aberto, os desenvolvedores conseguem mexer nela e aprimorar suas
funcionalidades. Possui funções similares à linguagem C, que também pode ser utilizada para
extensões na PHP. Além disso, pode ser utilizada para o controle de drones.

e) CSS

O nome é uma abreviação de Cascading Style Sheets (ou Folhas de Estilo em Cascata, em
português) e é uma linguagem estilística que atua na forma como um documento escrito em
HTML ou em XML é apresentado visualmente. É uma das principais linguagens da open web
auxiliando na estilização e organização de páginas web.

f) C#, C++ e C

Apesar de utilizarem a mesma letra, estas são três linguagens diferentes. A C# é uma linguagem
de programação simples e de propósito geral que auxilia no desenvolvimento de princípios de
engenharia de software. É utilizada para escrever aplicativos para sistemas hospedados e
incorporados. Já a C++ é de uso geral criada como uma extensão da linguagem C para
programação de sistemas e softwares incorporados, com recursos limitados e grandes sistemas. É
bastante utilizada em aplicativos de desktop, videogames e servidores.

Enquanto isso, a linguagem C é voltada para programação estruturada e instruções de máquinas


típicas. É bastante utilizada em aplicativos previamente codificados em linguagem assembly.
Apesar de seus recursos de baixo nível, a linguagem foi projetada para incentivar a programação
entre plataformas.

9
2.4. Tradução de HLL

A tradução de linguagens de alto nível (HLL) para código de máquina envolve o uso de
compiladores ou interpretadores. Compiladores traduzem o código fonte inteiro para código de
máquina de uma vez, enquanto interpretadores traduzem e executam o código linha por linha.

A tradução de alto nível para baixo nível (HLL - High-Level to Low-Level) é um processo
complexo que envolve a conversão de código escrito em uma linguagem de programação de alto
nível (como C, Python, Java) em código de baixo nível ou código de máquina diretamente
executável pelo hardware do computador.

Esse processo geralmente inclui as seguintes etapas:

1. Análise léxica e sintática: O código-fonte em linguagem de alto nível é analisado para


identificar sua estrutura sintática e léxica. Isso envolve a divisão do código em tokens e a
construção de uma árvore de análise sintática.
2. Otimização de alto nível: O compilador de alto nível pode aplicar otimizações para
melhorar o desempenho e a eficiência do código. Isso pode incluir a eliminação de
código morto, a reordenação de instruções e a otimização de loops.
3. Geração de código intermediário: Em muitos casos, um código intermediário é gerado
a partir do código-fonte de alto nível. Esse código intermediário é uma representação de
nível médio que facilita a tradução para código de baixo nível.
4. Tradução para código de baixo nível: Nesta etapa, o código intermediário (ou, em
alguns casos, o próprio código-fonte de alto nível) é traduzido para código de baixo nível.
Isso pode envolver a alocação de registradores, a tradução de operações de alto nível em
instruções de máquina específicas e a gerência de memória.
5. Otimização de baixo nível: O código de baixo nível gerado pode ser otimizado ainda
mais para aproveitar as características específicas do hardware alvo. Isso inclui a
otimização de registradores, a redução de acesso à memória e a reordenação de
instruções.
6. Geração de código de máquina: Por fim, o compilador gera o código de máquina final,
que pode ser executado diretamente pelo hardware do computador.

10
É importante notar que a tradução de HLL para LLL é uma tarefa desafiadora, pois diferentes
arquiteturas de computador e linguagens de programação de alto nível têm características
distintas. Portanto, os compiladores desempenham um papel crucial na automação desse
processo e na geração de código eficiente e funcional.

2.5. Vantagens e Desvantagens

As vantagens e desvantagens de cada tipo de linguagem de programação dependem das


necessidades do projeto. Por exemplo, linguagens de alto nível são mais produtivas, enquanto
linguagens de baixo nível oferecem maior controle sobre o hardware. Como CHISNALL (2012)
destaca que não existe uma linguagem de programação 'melhor' - existe apenas a linguagem mais
apropriada para um problema específico.

As linguagens de programação têm vantagens e desvantagens diferentes, e a escolha da


linguagem certa depende dos requisitos do projeto e das preferências pessoais. Aqui estão
algumas vantagens e desvantagens de três tipos comuns de linguagens de programação:
linguagens de alto nível, linguagens de baixo nível e linguagens de script.

a) Linguagens de Alto Nível:

Vantagens:

i. Facilidade de Leitura e Escrita: São mais próximas da linguagem humana, tornando o


código mais fácil de entender e manter.
ii. Portabilidade: O código escrito em linguagens de alto nível é geralmente independente de
plataforma, o que significa que pode ser executado em diferentes sistemas operacionais
com poucas modificações.
iii. Produtividade: Permitem que os desenvolvedores escrevam código mais rapidamente
devido a abstrações e bibliotecas poderosas.
iv. Segurança: Tendem a ser mais seguras, pois têm menos acesso direto à memória e
recursos do sistema.

Desvantagens:

11
i. Overhead de Desempenho: Podem ser mais lentas em comparação com linguagens de
baixo nível devido à camada de abstração adicional.
ii. Limitações de Controle: Em algumas situações, você pode ter menos controle sobre os
recursos do sistema.
iii. Uso Ineficiente de Recursos: Podem consumir mais recursos do sistema do que
linguagens de baixo nível em alguns casos.

b) Linguagens de Baixo Nível:

Vantagens:

i. Controle Total: Oferecem controle preciso sobre o hardware e os recursos do sistema,


tornando-as ideais para sistemas embarcados e desenvolvimento de drivers.
ii. Desempenho: São mais eficientes em termos de desempenho, pois permitem a otimização
direta do código de máquina.
iii. Uso Eficiente de Memória: Permitem um uso mais eficiente da memória do sistema.

Desvantagens:

i. Dificuldade de Programação: São mais difíceis de aprender e usar devido à complexidade


e ao baixo nível de abstração.
ii. Portabilidade Limitada: O código escrito em linguagens de baixo nível é muitas vezes
específico para a arquitetura do hardware e não é facilmente portável.
iii. Depuração Complexa: Depurar código de baixo nível pode ser desafiador e demorado.

c) Linguagens de Script:

Vantagens:

i. Facilidade de Aprendizado: São fáceis de aprender e usar, tornando-as ideais para


automação e prototipagem rápida.
ii. Produtividade: Permitem o desenvolvimento rápido de aplicativos devido a recursos
embutidos e bibliotecas extensas.
iii. Portabilidade: Geralmente são portáteis, pois são interpretadas e não exigem compilação.

12
Desvantagens:

i. Desempenho Limitado: São geralmente mais lentas que linguagens compiladas devido à
interpretação em tempo de execução.
ii. Menos Controle: Oferecem menos controle sobre o hardware e recursos do sistema do
que linguagens de baixo nível.
iii. Segurança: Podem ser mais vulneráveis a ameaças de segurança devido à execução de
código em tempo de execução.

13
3. Conclusão
As linguagens de programação desempenham um papel crucial na indústria de tecnologia. Elas
são as ferramentas que os desenvolvedores utilizam para criar software, aplicativos e sistemas.
Uma das características mais marcantes desse campo é a sua diversidade. Existem centenas de
linguagens de programação disponíveis, cada uma projetada com finalidades específicas em
mente.

A evolução é uma constante nas linguagens de programação. Novas linguagens são


desenvolvidas para atender às necessidades emergentes, enquanto as linguagens existentes são
aprimoradas para permanecerem relevantes. Isso reflete a natureza em constante mudança da
tecnologia.

Algumas linguagens de programação se destacam pela sua popularidade e ampla adoção. Python,
por exemplo, é conhecida por sua simplicidade e versatilidade, sendo amplamente utilizada em
ciência de dados, desenvolvimento web e automação. Java é uma escolha sólida para aplicativos
móveis e sistemas empresariais. JavaScript é a linguagem essencial para desenvolvimento web
front-end.

14
4. Bibliografia
ABELSON, H.; SUSSMAN, G. J.; SUSSMAN, J. "Structure and Interpretation of Computer
Programs." MIT Press, 1985.

AHO, A. V.; ULLMAN, J. D. "Principles of Compiler Design." Prentice-Hall, 1987.

BROOKS, F. P. "The Mythical Man-Month: Essays on Software Engineering." Addison-Wesley,


1975.

CHISNALL, D. "The Early History of Smalltalk." ACM SIGPLAN Notices, vol. 47, no. 8, 2012,
pp. 13-23.

WIRTH, N. "A Plea for Lean Software." In: 20 Years of ACM SIGPLAN Notices, ACM, 1996,
pp. 13-15.

SEBESTA, R. W. "Concepts of Programming Languages." Pearson, 2018.

GRAHAM, P. "ANSI Common Lisp." Prentice Hall, 2001.

SCHMIDT, E. "How Google Works." Grand Central Publishing, 2014.

STROUSTRUP, B. "The Design and Evolution of C++." Addison-Wesley Professional, 1994.

KNUTH, D. E. "Structured Programming with go to Statements." ACM Computing Surveys


(CSUR), vol. 6, no. 4, 1974, pp. 261-301.

KERNIGHAN, B. W.; Ritchie, D. M. "The C Programming Language." Prentice-Hall, 1978.

15

Você também pode gostar