Você está na página 1de 17

INSTITUTO SUPERIOR PRIVADO NZENZU ESTRELA

(ISPNE-UÍGE)
ÁREA DE FORMAÇÃO: INFORMÁTICA E GESTÃO
CURSO DE INFORMÁTICA DE GESTÃO

TRABALHO EM GRUPO DE FUNDAMENTOS DE PROGRAMAÇÃO

LINGUAGENS DE PROGRAMAÇÃO
PASSADO, PRESENTE E FUTURO.

Por:

Grupo número um (1)

UÍGE, 2021/2022
GRUPO NÚMERO UM (1)

LINGUAGENS DE PROGRAMAÇÃO
PASSADO, PRESENTE E FUTURO.

Trabalho apresentado ao Docente Luzizila


Salambiaku como 1ª prova do I semestre da
cadeira de Fundamentos de Programação do
I ano de Informática de Gestão do período
noturno no Instituto Superior Privado
Nzenzu Estrela do Uíge.
Orientado: Engº. Luzizila Salambiaku

Uíge, 2021/2022
ÍNDICE
INTRODUÇÃO

Todo trabalho científico parte de perguntas básicas que fundamentam toda a


pesquisa, o presente trabalho tem como tema “Linguagem de Programação- Passado,
Presente e Futuro” e com segurança, pode-se afirmar que o conceito central da
programação é o de algoritmo, pois programar é basicamente construir algoritmos, ou
seja criar instruções que possam controlar a máquina, em especial um computador, de
modo a que dados de entrada (input) sejam armazenados, transformados e desenvolvidos
como saída (output). Sendo assim nos torna necessário abordar também sobre
Algoritmos, já que é eles que nos levam a conceber um programa na linguagem que o
computador compreende. E para a contextualização do nosso presente trabalho, encontra-
se estruturado em 3 capítulos, nomeadamente:

Capítulo I. Conceito e Breve historial de linguagens de programação;

Capítulo II. Algoritmos;

Capítulo III. Futuro, Ética e Impacto Social das Linguagens de Programação.


CAPÍTULO I. CONCEITO E BREVE HISTORIAL DE LINGUAGENS DE
PROGRAMAÇÃO

1.1. BREVE HISTORIAL

O primeiro trabalho de linguagem de programação foi criado por Ada Lovelace,


grande amiga de Charles Babbage.

O projeto da primeira calculadora mecânica programável foi idealizado por


Charles Babbage que, após gastar fortunas e um longo tempo, não conseguiu concretizar
o projeto. A linguagem de programação ADA foi batizada em homenagem a esta primeira
programadora.

Uma das primeiras linguagens de programação para computadores foi


Plankalkül, criada entre os anos de 1942-1946 por Konrad Zuse na Alemanha Nazista,
mas que teve pouco ou nenhum impacto no futuro das linguagens de programação.

O primeiro compilador de cognome UNIVAC foi escrito por Grace Hopper, em


1951 á 1952, para a linguagem de programação A- 0. A primeira linguagem de
programação de alto nível amplamente usada foi Fortran (Formula Translator, criada em
1954 por uma equipa de 13 programadores liderados por John Backus).

Em 1957 foi criada B-0, sucessora da A-0, que daria origem a Flow-Matic
(1958), antecessor imediato de COBOL, de 1959 sendo produto do Departamento de
Defesa Norte-Americano sob direcção da contra-almirante Grace Murray Hopper. O
COBOL foi uma linguagem de ampla aceitação para uso comercial. A linguagem ALGOL
foi criada em 1958-1960 por um comité conjunto de cientistas da computação americanos
e europeus, reunidos em Zurique. O ALGOL-60 teve grande influência no projeto de
muitas linguagens posteriores.

A linguagem Lisp foi criada em 1958 por John McCarthy e se tornou


amplamente utilizada na pesquisa na área de ciência da computação mais
proeminentemente na área de Inteligência Artificial. Outra linguagem relacionada ao
campo da IA que surge em 1972 é a linguagem Prolog (Programação Lógica) criado por
Alain Colmerauer e Robert Kowalski, uma linguagem do paradigma lógico.

A orientação a objetos é outro marco importante na história das linguagens de


programação. A linguagem Simula 67, sendo uma versão da linguagem Simula criada
entre 1962 e 1968 por Kristen Nygaard e Ole-Johan Dahl no Centro Norueguês de
Computação em Oslo, introduz o conceito de classes e herança. A linguagem Smalltalk
sendo uma linguagem de programação com paradgima orientada a objecto
dinamicamente tipada, criado por Alan Kay, Dan Ingalls, Adelle Goldberg no inicio de
1969 e tornando-se público em 1980, a linguagem expande o conceito de classes e se
torna a primeira linguagem de programação que oferecia suporte completo à programação
orientada a objetos. A linguagem C++ (originalmente conhecida como C com classes)
populariza a orientação a objetos, é uma linguagem de programação compilada multi-
paradigma, seu suporte inclui (linguagem imperativa, orientada a objectos e genérica) e
de uso geral.

Diversas linguagens de programação surgiram desde então. Entre estas incluem-


se:

C#, sendo uma linguagem de programação multiparadigma, de tipagem forte,


desenvolvida pela Microsoft em Julho de 2000 e tendo sua versão mais recente a 9.0 em
10 de novembro de 2020 foi criada como parte da plataforma .NET, a sua sintaxe
orientada a objectos foi baseada no C++, mas inclui muitas influências de outras
linguagens como: objecto pascal e principalmente o Java, seu código fonte é compilado
para Cammon Intermediate Language (CIL) que é interpretado pela máquina vrtual
Cammon Language Runtime (CLR). O C# é uma das linguagens projectadas para
funcionar na Cammon Language Infrastructure da plataforma .NET Framework.

VB.NET, Java, Object Pascal, Objective-C, PHP, Python, SuperCollider,


linguagem D e Ruby.

1.1.1. INTERPRETAÇÃO E COMPILAÇÃO

Uma linguagem de programação pode ser convertida, ou traduzida, em código


de máquina por compilação ou interpretada por um processo denominado interpretação.
Em ambas ocorre a tradução do código fonte para código de máquina.

Se o método utilizado traduz todo o texto do programa (também chamado de


código), para só depois executar o programa, então diz-se que o programa foi compilado
e que o mecanismo utilizado para a tradução é um compilador (que por sua vez nada mais
é do que um programa).

A versão compilada do programa tipicamente é armazenada, de forma que o


programa pode ser executado um número indefinido de vezes sem que seja necessária
nova compilação, o que compensa o tempo gasto na compilação. Isso acontece com
linguagens como Pascal e C.

Se o texto do programa é executado à medida que vai sendo traduzido, como em


JavaScript, BASIC, Python ou Perl, num processo de tradução de trechos seguidos de sua
execução imediata, então diz-se que o programa foi interpretado e que o mecanismo
utilizado para a tradução é um interpretador. Programas interpretados são geralmente
mais lentos do que os compilados, mas são também geralmente mais flexíveis, já que
podem interagir com o ambiente mais facilmente.

Embora haja essa distinção entre linguagens interpretadas e compiladas, as


coisas nem sempre são tão simples. Há linguagens compiladas para um código de
máquina virtual (sendo esta máquina virtual apenas mais um software, que emula a
máquina virtual sendo executado em uma máquina real), como Java (compila para a
plataforma Java e C# (compila para a plataforma CLI ). E também há outras formas de
interpretar em que os códigos fontes, ao invés de serem interpretados linha-a-linha, têm
blocos "compilados" para a memória, de acordo com as necessidades, o que aumenta a
performance dos programas quando os mesmos módulos são chamados várias vezes,
técnica esta conhecida como JIT.

1.2. CONCEITO DE LP

Qualquer tipo de informação que deva ser transferida, processada ou armazenada


deve estar na forma de uma linguagem. A linguagem é imprescindível para o processo de
comunicação. Duas pessoas que se falam, o fazem através de uma linguagem em comum,
a linguagem natural.

Já língua dos programas ou linguagem de programação é um método


padronizado, formado por um conjunto de regras sintáticas e semânticas, de
implementação de um código fonte - que pode ser compilado e transformado em um
programa de computador, ou usado como script interpretado - que informará instruções
de processamento ao computador. Permite que um programador especifique precisamente
quais os dados que o computador irá atuar, como estes dados serão armazenados ou
transmitidos e, quais ações devem ser tomadas de acordo com as circunstâncias.
Linguagens de programação podem ser usadas para expressar algoritmos com precisão.
O conjunto de palavras (lexemas classificados em tokens), compostos de acordo
com essas regras, constituem o código fonte de um software. Esse código fonte é depois
traduzido para código de máquina, que é executado pelo microprocessador.

Linguagens de programação são ferramentas importantes para que


programadores e engenheiros de software possam escrever programas mais organizados
e com maior rapidez.

1.2.1. PROGRAMAÇÃO ESTRUTURADA

Programação estruturada é uma forma de programação de computadores que


preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas:
sequência, decisão e repetição.

Um dos primeiros a preconizar a programação estruturada foi Haskell B. Curry.


Tendo, na prática, sido transformada na Programação modular, a Programação
estruturada orienta os programadores para a criação de estruturas simples em seus
programas, usando as sub-rotinas e as funções. Foi a forma dominante na criação de
software entre a programação linear e a programação orientada por objetos.

Apesar de ter sido sucedida pela programação orientada por objetos, pode-se
dizer que a programação estruturada ainda é marcantemente influente, uma vez que
grande parte das pessoas ainda aprendem programação através dela. Porém, a orientação
a objetos superou o uso das linguagens estruturadas no mercado.

1.2.2. PROGRAMAÇÃO MODULAR

Programação modular é uma forma de programação no qual o desenvolvimento


das rotinas de programação é feito através de módulos, que são interligados entre si
através de uma interface comum.

Foi apresentado originalmente pela Information & Systems Institute, Inc. no


National Symposium on Modular Programming em 1968, com a liderança de Larry
Constantine.

1.2.3. PROGRAMAÇÃO ORIENTADA A OBJECTO (POO)

Orientação a objetos, também conhecida como Programação Orientada a


Objetos (POO), ou ainda em inglês Object-Oriented Programming (OOP) é um
paradigma de análise, projeto e programação de sistemas de software baseado na
composição e interação entre diversas unidades de software chamadas de objetos.

A análise e projeto orientados a objetos tem como meta identificar o melhor


conjunto de objetos para descrever um sistema de software.

O funcionamento deste sistema se dá através do relacionamento e troca de


mensagens entre estes objetos. Na programação orientada a objetos, implementa-se um
conjunto de classes que definem os objetos presentes no sistema de software. Cada classe
determina o comportamento e estados possíveis (atributos) de seus objetos, assim como
o relacionamento com outros objetos.

1.2.4. PROGRAMAÇÃO LINEAR

Programação Linear é uma importante área da otimização por várias razões.


Muitos problemas práticos em pesquisa operacional podem ser expressos como
problemas de programação linear. Certos casos especiais de programação linear, tais
como problemas de network flow e problemas de multicommodity flow são considerados
importantes o suficiente para que se tenha gerado muita pesquisa em algoritmos
especializados para suas soluções. Vários algoritmos para outros tipos de problemas de
otimização funcionam resolvendo problemas de PL como sub-problemas.
Historicamente, ideias da programação linear inspiraram muitos dos conceitos centrais de
teoria da otimização, tais como dualidade, decomposição, e a importância da convexidade
e suas generalizações.

1.2.5. CLASSIFICAÇÃO

As linguagens de programação podem ser classificadas e sub-classificadas de


várias formas.

1.2.5.1. QUANTO AO PARADGIMA

Diferentes linguagens de programação podem ser agrupadas segundo o


paradigma que seguem para abordar a sua sintaxe e semântica. Os paradigmas se dividem
em dois grandes grupos: imperativo e declarativo.

1.2.5.1.1. PARADGIMA IMPERACTIVO

Os paradigmas imperativos são aqueles que facilitam a computação por meio de


mudanças de estado. Se dividem em:
 O paradigma procedural: neste paradigma, os programas são executados através
de chamadas sucessivas a procedimentos separados. Temos como exemplo deste,
o Fortran e o Basic.
 O paradigma de estruturas de blocos: tendo a característica marcante dos escopos
aninhados. Um exemplo deste paradigma são Algol 60, Pascal e C.
 O paradigma de orientação a objetos: descreve linguagens que suportam a
interação entre objetos. Exemplos de linguagens deste paradigma são C++,
linguagem D, Java, Python e Ruby.
 O paradigma da computação distribuída. Este paradigma suporta que mais de uma
rotina possa executar independentemente. Tem como exemplo a linguagem Ada.
1.2.5.1.2. PARADGIMA DECLARATIVOS

Os paradigmas declarativos são aqueles nos quais um programa especifica uma


relação ou função. Se dividem em:

 O paradigma funcional. Linguagens deste paradigma não incluem qualquer


provisão para atribuição ou dados mutáveis. Na programação funcional, o
mapeamento entre os valores de entrada e saída são alcançados mais diretamente.
Um programa é uma função (ou grupo de funções), tipicamente constituída de
outras funções mais simples. Exemplos de linguagens deste paradigma é a
linguagens Lisp.
1.2.5.2. QUANTO A ESTRUTURA DE TIPOS

As linguagens de programação podem ser definidas de duas formas ortogonais


quanto a sua estrutura de tipos.

1.2.5.2.1. FORTE OU FRACAMENTE TIPADA

Fracamente tipada, como PHP e Smalltalk, onde o tipo da variável muda


dinamicamente conforme a situação.

Fortemente tipada, como Java, Ruby e Python onde o tipo da variável, uma vez
atribuído, se mantém o mesmo até ser descartada da memória.

1.2.5.2.2. DINÂMICA OU ESTATICAMENTE TIPADA

Dinamicamente tipada, como SNOBOL, APL, Awk, Perl, Python e Ruby, onde
o tipo da variável é definido em tempo de execução.
Estaticamente tipada, como Java e C, onde o tipo da variável é definido em
tempo de compilação.

1.2.5.3. QUANTO AO GRAU DE ABSTRAÇÃO


 Linguagem de programação de baixo nível trata-se de uma linguagem de
programação que segue as características da arquitetura do computador. Assim, utiliza
somente instruções que serão executadas pelo processador, em contrapartida as
linguagens de alto nível que utilizam de instruções abstratas.

Nesse sentido, as linguagens de baixo nível estão diretamente relacionadas com


a arquitetura do computador. Como exemplos, temos Binário (Linguagem máquina) e
Assembly (linguagem de montagem).

As linguagens de baixo nível são divididas em duas categorias: primeira geração


e segunda geração:

1. A linguagem de primeira geração é o código de máquina, a única linguagem que


um microprocessador pode executar nativamente. O código de máquina pode ser escrito
diretamente por um editor hexadecimal. Atualmente é raro que um programador trabalhe
com o código de máquina diretamente.
2. A linguagem de segunda geração é o Assembly, É considerada de baixo nível pois
embora não seja uma linguagem nativa do microprocessador, ainda assim utiliza apenas
de instruções reais do processador. Desta forma a linguagem Assembly não contém
nenhum tipo de instrução abstrata, onde cada instrução é convertida diretamente para a
instrução equivalente em código de máquina pelo montador.
 Linguagem de programação de médio nível, que possui símbolos que podem ser
convertidos diretamente para código de máquina (goto, expressões matemáticas,
atribuição de variáveis), mas também símbolos complexos que são convertidos por um
compilador. Exemplo: C, C++.
 Linguagem de programação de alto nível, é uma linguagem com um nível de
abstração relativamente elevado, longe do código de máquina e mais próximo à
linguagem humana. Desse modo, as linguagens de alto nível não estão diretamente
relacionadas à arquitetura do computador. O programador de uma linguagem de alto nível
não precisa conhecer características do processador, como instruções e registradores.
Essas características são abstraídas na linguagem de alto nível.
A Linguagem de alto nível é inteligível pelo ser humano e não executável
diretamente pela máquina, no nível da especificação de algoritmos, como Pascal, Fortran,
ALGOL,Java e SQL.

Temos como exemplos:

 ASP;
 ActionScript;
 C/C++;
 C#;
 Pascal/Object Pascal;
 Java;
 JavaScript;
 PHP;
 Python;
 Ruby;
 Basic/Visual Basic.

A classificação das linguagens de programação em gerações é uma questão que


apresenta divergências de autor para autor, alguns autores classificaram-na em 5 e outros
em 6, temos como exemplo o autor Maclennan que classificou em 5 e os autores como
Henri Bal e Dick Grune apresentam em 6, por tanto a classificação em gerações apresenta
divergências de conceitos ou ideias de autor para autor nas linguagens de programação.

Existem inúmeras linguagens de programação, as 20 linguagens de programação


mais populares, de acordo com pesquisa divulgada pela RedMonk em março de 2021,
são:

1. JavaScript;
2. Python;
3. Java;
4. PHP;
5. C#;
6. C++;
7. TypeScript;
8. Ruby;
9. C;
10. Swift;
11. R;
12. Objective-C;
13. Shell;
14. Scala;
15. Go;
16. PowerShell;
17. Kotlin;
18. Rust;
19. Perl;
20. Dart.

CAPÍTULO II. ALGORITMOS

2.1. CONCEITO DE ALGORITMO

Durante o funcionamento de um computador segue um programa, um conjunto


de instruções bem definidos que especificam exatamente o que tem de ser feito. Este
conjunto de instruções é caracterizado matematicamente como um algoritmo. Ou seja,
um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada
das quais pode ser executada mecanicamente num período de tempo finito com uma
quantidade de esforço finita.

Um algoritmo deve possuir três (3) características: ser rigoroso, ser eficaz e ter
a garantia de termina.

Algoritmo é a descrição de um conjunto de ações que, obedecidas, resultam


numa sucessão finita de passos atingindo um objetivo. Sendo que Ação é um
acontecimento que a partir de um estado inicial, após um período de tempo finito, produz
um estado final previsível e bem definido.

Diante desta definição e também pelo fato de que a visão que se busca do que é
um algoritmo é uma visão computacional, em que geralmente tem-se como objetivo um
processo de automação, pode-se dizer que: Automação é o processo em que uma tarefa
deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estas,
dispositivos mecânicos, eletrônicos (como computadores) ou de natureza mista, mas em
especial um computador.
Dando sequência nesse raciocínio teórico, pode-se deduzir que quando um
processo é automatizado ele também deve possuir características de repetibilidade. Neste
contexto, é necessário que seja especificado com clareza e exatidão o que deve ser
realizado em cada uma das fases do processo a ser automatizado, bem como a sequência
em que estas fases devem ser realizadas.

A partir das considerações anteriores é possível mesclar essas ideias em


definições complementares do que são algoritmos.

 Algoritmo – é a especificação de uma sequência ordenada de passos que deve ser


seguida para realização de uma tarefa garantindo a sua repetibilidade.
 Algoritmo – é uma sequência de passos que visam atingir um objetivo bem
definido.

Pode-se perceber que as abordagens a respeito do que são algoritmos ainda são
abstratas do ponto de vista computacional. A construção do algoritmo é abstrata, até que
ele seja codificado em um programa por meio de uma linguagem de programação, como
por exemplo a linguagem C, C#, Java, Python, etc, onde se pode testá-lo e concretizá-lo
em um processo computacional, em que a partir da sua utilização passa a ter as
características de repetibilidade, atingindo assim os objectivos que nos levaram a cria-lo.

Temos como exemplo um algoritmo na linguagem mais próxima ao homem


“Troca de um pneu furado do carro”

1: Desligar o carro;

2: Pegar as ferramentas (chave e macaco)

3: Pegar o estepe;

4: Suspender o carro com o macaco;

5: Desenroscar os 4 parafusos do pneu furado;

6: Colocar o estepe;

7: Enroscar os 4 parafusos;

8: Baixar o carro com o macaco;

9: Guardar as ferramentas.
2.1.1. PARTES DE UM ALGORITMO

Um algortimo quando programado num computador é constituído pelo menos


das 3 partes, sendo elas:

1. Entrada de dados;

2. Processamento de dados;

3. Saída de dados;

2.1.2. REPRESENTAÇÃO DE UM ALGORITMO

Algoritmos são representados de várias maneiras, uma delas é a representação


por fluxogramas.

Os fluxogramas são uma apresentação do algoritmo em formato gráfico. Cada


ação ou situação é representada por uma caixa. Tomadas de decisões são indicadas por
caixas especiais, possibilitando ao fluxo de ações tomar caminhos distintos.
Um exemplo de algoritmo simples para assar pão num forno em uma
representação de fluxograma:

Fonte: Introdução a Algoritmos e Programação, versão 2.2


Autor: Cristian Cechinel & Fabricio Ferrari
CAPÍTULO III. FUTURO, ÉTICA E IMPACTO SOCIAL DAS LINGUAGENS
DE PROGRAMAÇÃO

CONCLUSÃO

REFERÊNCIAS BIBLIOGRÁFICAS

Você também pode gostar