l:linguagens_de_programacao
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
l:linguagens_de_programacao [2022/08/21 18:17] – Mateus Ruzene | l:linguagens_de_programacao [2022/09/05 06:15] (atual) – Agnaldo dos Santos Prieto Junior | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Linguagens De Programação ====== | ||
+ | {{: | ||
+ | ---- | ||
+ | |||
+ | |||
+ | As **linguagens de programação** são métodos padronizados, | ||
+ | |||
+ | As linguagens foram criadas para facilitar a interação humano computador, portanto, um código escrito pelo ser humano é traduzido para linguagem de máquina que assim instrui o computador ao que fazer. Pois imagine se o humano tivesse que escrever longas linhas de código, no entanto, completamente em binário (linguagem de máquina), isso seria péssimo para manutenções e o grau de aprendizagem se elevaria muito, a ponto de simplesmente não ter pessoas para trabalharem na área. Portanto, as linguagens de programação são projetadas com sintaxes de nível superior que são menos complexas de entender por programadores humanos, sendo ferramentas importantíssimas para a produtividade e rapidez. | ||
+ | |||
+ | Quando falamos de linguagens de programação muitos já devem ter se questionado: | ||
+ | |||
+ | Existem certas linguagens de programação cujo objetivo não é facilitar na escrita e manutenção do código, elas são criadas com intuitos diferentes, seja ela por pura arte, piada ou por curiosidade de ver se é possível usar algum conceito para criar programas. | ||
+ | |||
+ | ===== Linguagens que marcaram a computação ===== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===Fortran=== | ||
+ | {{: | ||
+ | |||
+ | Criada por John Backus, é considerada a linguagem de programação mais antiga em uso hoje em dia. A linguagem de programação foi criada para computação científica, | ||
+ | |||
+ | ===Smalltalk=== | ||
+ | {{: | ||
+ | |||
+ | Linguagem que expandiu o conceito de classes e se tornou a primeira linguagem de programação que oferece suporte completo à programação orientada a objetos. Ele introduziu uma variedade de aspectos de linguagem de programação que são linguagens visíveis de hoje, como Python, Java e Ruby. Empresas como a Leafly, Logitech e CrowdStrike usam Smalltalk em suas pilhas de tecnologia. | ||
+ | |||
+ | ===C=== | ||
+ | {{: | ||
+ | |||
+ | A linguagem C foi desenvolvida por Dennis Ritchie nos Laboratórios Bell Telephone para uso com o sistema operacional Unix. Foi chamado de C porque se baseava numa linguagem anterior chamada ' | ||
+ | |||
+ | ===Java=== | ||
+ | {{: | ||
+ | |||
+ | Uma equipe de programadores liderada por James Gosling na empresa Sun Microsystems e criaram a linguagem Java, uma das linguagens modernas da computação, | ||
+ | |||
+ | ===Javascript=== | ||
+ | {{: | ||
+ | |||
+ | Linguagem de programação interpretada e estruturada, | ||
+ | |||
+ | ===PHP=== | ||
+ | {{: | ||
+ | |||
+ | Outra linguagem que veio para revolucionar a web, desenvolvido por Rasmus Lerdorf, PHP que significa ‘Hypertext Preprocessor’, | ||
+ | |||
+ | ===== Grandes Nomes da história das linguagens de programação ===== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | **Ada Lovelace** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | A primeira linguagem de programação foi criada por Ada Lovelace em 1843. Ela usou papel para escrever o primeiro algoritmo para um computador, pois não havia computadores na época. Desde então, muitas linguagens de programação foram desenvolvidas e usadas para diferentes propósitos. Compreender a história das linguagens de programação requer uma compreensão de sua origem: o primeiro algoritmo escrito para um computador. | ||
+ | |||
+ | **Grace Hopper** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Grace Hopper criou o primeiro compilador em 1952, para a linguagem A-0, e em 1958 ela criou a linguagem chamada Flow-Matic, que logo foi inspiração para a criação da linguagem Cobol que teve grande influência na tecnologia. | ||
+ | |||
+ | **John McCarthy** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Criador da linguagem Lisp em 1958, que se tornou amplamente utilizada na área de pesquisa de ciência da computação, | ||
+ | |||
+ | |||
+ | **Kristen Nygaard e Ole-Johan Dahl** | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | Eles criaram a primeira linguagem que introduziu o conceito de classes, chamada Simula 67, que mais a frente se tornou inspiração para a linguagem Smalltalk que expande o conceito de classes e se torna a primeira linguagem de programação que oferece suporte completo à programação orientada a objetos. | ||
+ | |||
+ | |||
+ | ===== Aplicações ===== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Linguagens de programação são como ferramentas, | ||
+ | Vale dizer que a linguagens de domínio específico muitas vezes não são Turing Complete, que significa tem o mesmo poder computacional de uma [[m: | ||
+ | |||
+ | Exemplos de linguagens de domínio específico: | ||
+ | SQL: | ||
+ | Makefile: | ||
+ | YACC Grammars: | ||
+ | GameMaker Laguage: Programação dentro da plataforma GameMaker. | ||
+ | Exemplos de linguagens de uso geral: | ||
+ | Python: | ||
+ | Java: | ||
+ | C: | ||
+ | Rust: | ||
+ | |||
+ | Então se pode dizer que a aplicação de uma linguagem de programação depende de quem está usando ela e como ela será usada. É claro que podemos utilizar javascript para manter um [[b: | ||
+ | |||
+ | ===== Características das linguagens de programação ===== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Conceitos da programação ==== | ||
+ | |||
+ | === Programação estruturada === | ||
+ | A programação estruturada é uma forma de programação de computador que afirma que todos os programas possíveis podem ser reduzidos a três estruturas: sequência, decisão e repetição. Um dos primeiros defensores da programação estruturada foi Haskell B. Curry. A programação estruturada instrui os programadores a usarem subrotinas e funções para criar estruturas simples em seus programas.Esta forma foi muito predominante na área de criação de software entre programação linear e programação orientada a objetos. Apesar do sucesso da programação orientada a objetos, pode-se dizer que a programação estruturada ainda tem um impacto significativo, | ||
+ | |||
+ | |||
+ | === Programação orientada a objetos === | ||
+ | A programação orientada a objetos é um dos mais famosos paradigmas de programação, | ||
+ | Criando a classe Carro podemos dizer quais os atributos, ou tipo de dados, que o objeto que for criado terá. Além dos atributos devemos criar os métodos que manipulam os dados de um objeto ou manipulam os dados passados por parâmetro. Exemplo: | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | Na imagem podemos ver que a classe não contém dados, apenas o formato deles. E possui também os métodos, que nesse caso são utilizados para poder alterar algum atributo do objeto. | ||
+ | Alguns outros conceitos de programação orientada a objetos são os quatros princípios base de orientação a objetos, que são: Abstração, | ||
+ | |||
+ | === Outros conceitos de programação === | ||
+ | |||
+ | Além desses tópicos, podemos citar Programação linear/ | ||
+ | * **Programação linear:** preocupa-se com a maximização ou minimização de uma função objetivo linear em diversas variáveis, sujeita à restrições representadas por um conjunto de inequações e equações lineares. | ||
+ | |||
+ | * **Programação não-linear: | ||
+ | |||
+ | * **Programação Modular:** é uma técnica de design de software que enfatiza a separação da funcionalidade de um programa em módulos independentes e intercambiáveis, | ||
+ | |||
+ | ==== Paradigmas De Programação ==== | ||
+ | Paradigmas de programação são formas de classificar linguagens de programação, | ||
+ | O paradigma declarativo está relacionado ao **COMO** o programa de ser executado, ou seja, manejar diretamente os dados e qualquer falha de memória ou controle de fluxo são de responsabilidade do programador. Quanto a linguagens de paradigma declarativa estão mais preocupadas em dizer **O QUE** o programa faz, porém a forma como a memória ou se o programa vai ser o melhor ou não não estão dentro do objetivo do paradigma, pois não importa como ou qual vai ser o estado da máquina mas sim o resultado final. | ||
+ | |||
+ | Um exemplo é por exemplo implementar um código para alterar todos os itens de uma lista de acordo com uma função recebida. Em uma linguagens de paradigma imperativo, o programa iria usar uma estrutura de repetição e aplicaria a função em cada elemento da lista, enquanto em uma linguagem declarativa é muito comum existir uma função que faça isso, porém não se sabe de que forma ou como ela faz essa aplicação da função, importa apenas que ela faz e retorna a lista alterada. | ||
+ | |||
+ | Apesar de parecerem opostos o paradigma declarativo é apenas um conceito abstrato do paradigma imperativo, pois se vermos todo o processo que o programa deve passar antes de ser executado, ele deve ser transformado em linguagem de máquina para depois ser executado, sendo assim transformado em instruções para uma CPU que estão agindo sobre o princípio imperativo. Quase todas as linguagens de programação podem abstrair a forma de **COMO** um programa ou código deve ser executado e aplicar um pouco do paradigma declarativo, | ||
+ | ====Tipos de linguagens==== | ||
+ | Dentro deste assunto fantástico podemos encontrar vários tipos de linguagens de programação, | ||
+ | * Linguagens aplicativas, | ||
+ | * Linguagens concorrentes, | ||
+ | * Linguagens de fluxo de dados | ||
+ | * Linguagens de projeto | ||
+ | * Linguagens extensíveis | ||
+ | * Linguagens de montagem e de macro | ||
+ | * Linguagens de microprogramação | ||
+ | * Linguagens não determinísticas | ||
+ | * Linguagens não procedurais | ||
+ | * Linguagens orientadas a objeto | ||
+ | * Linguagens de aplicação especializada | ||
+ | * Linguagens de altíssimo nível | ||
+ | |||
+ | ==== Estrutura de tipos ==== | ||
+ | Existem algumas formas de estruturação de tipos nas variadas linguagens de programação, | ||
+ | |||
+ | === - Fortemente tipadas (Java, Ruby e Python): === | ||
+ | Linguagens fortemente tipadas, são aquela em que todas suas variáveis devem conter tipos específicos para cada uma, e geralmente estas linguagens são estaticamente tipadas, onde uma vez em que ela foi declarada, não poderá trocar de tipo até o fim do código | ||
+ | |||
+ | === -Fracamente tipadas (PHP e Smalltalk) === | ||
+ | Esses tipos de linguagens não que não se importam com o tipo das variáveis, o que acarreta a serem linguagens dinamicamente tipadas, onde o tipo das variáveis podem mudar a qualquer momento, possibilitando que os programadores não tenham que fazer conversões de tipos (cast). | ||
+ | |||
+ | === - Dinamicamente tipada (SNOBOL, APL, Awk, Perl, Python e Ruby): === | ||
+ | Quando uma variável é declarada com um tipo ela pode receber outro a qualquer momento. Isso causa muita confusão fazendo com que muitos pensem que linguagens dinamicamente tipadas são a mesma coisa que linguagens fracamente tipadas. Acontece que a linguagem não permite que uma variável numérica realize uma operação com uma variável do tipo string, mesmo que o conteúdo do texto seja composto por números causando um erro | ||
+ | |||
+ | === - Estaticamente tipada (Java e C) === | ||
+ | Linguagens estaticamente tipadas são aquelas que ao se declarar uma variável, seu tipo será o mesmo e não poderá ser trocado. | ||
+ | |||
+ | ==== Impacto Social ==== | ||
+ | As linguagens de programação mudaram a sociedade como um todo desde quando foram inventadas. A criação dos computadores; | ||
+ | Claro que não poderíamos deixar de lado os malefícios que ela também nos trouxe, por exemplo: o controle mundial das Big Techs, como Facebook e Google, que possuem uma base enorme de dados de bilhões de pessoas, podendo usar essas informações como quiserem, para o controle da sociedade como um todo, outro exemplo seriam os hackers que usufruem das tecnologias e linguagens de programação, | ||
+ | |||
+ | |||
+ | |||
+ | ===== Referências ===== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | 1. Linguagem de Programa, Wikipedia. Disponível em: < | ||
+ | |||
+ | 2. História da Programação, | ||
+ | |||
+ | 3. AHO, Alfred V.; LAM, Monica S.; SETHI, Ravi; ULLMAN, Jeffrey D.. Compilers: Principles, Techniques, & Tools. 2. ed. Addison Wesley, 2006 | ||
+ | |||
+ | 4. WIRTH, Niklaus. Compiler Construction. Addison-Wesley Pub. Co, 2005. | ||
+ | |||
+ | 5. Esoteric programming language, Wikipedia. Disponível em: < | ||
+ | |||
+ | 6. Domain-specific language, Wikipedia. Disponível em: < | ||
+ | |||
+ | 7. General-purpose programming language, Wikipeia. Disponível em: | ||
+ | < | ||
+ | |||
+ | 8. Make (software), Wikipedia. Disponível em: < | ||
+ | |||
+ | 9. Turing completeness, | ||
+ | |||
+ | 10. Linguagem tipada, Wikipedia. Disponível em: < | ||
+ | |||
+ | 11. Declarative vs imperative, dev.to. Disponível em: < | ||
+ | |||
+ | 12. Imperative programming, | ||
+ | |||
+ | 13. Difference Between Imperative and Declarative Programming, | ||
+ | |||
+ | 14. Declarative programming, | ||
+ | |||
+ | 15. Object-oriented programming (OOP), educative.io. Disponível em: < | ||
+ | |||
+ | 16. Object-oriented programming, | ||
+ | |||
+ | 17. Simula, Wikipedia. Disponível em: < | ||
+ | |||
+ | 18. Programming paradigm, Wikipedia. Disponível em: < | ||
+ | |||