Escolar Documentos
Profissional Documentos
Cultura Documentos
Linguagem de Programação - Wikipédia, A Enciclopédia Livre
Linguagem de Programação - Wikipédia, A Enciclopédia Livre
O conjunto de palavras (lexemas classificados em tokens), compostos de acordo com essas regras,
constituem o código fonte de um software.[3] Esse código fonte é depois traduzido para código de
máquina, que é executado pelo microprocessador.[3]
Uma das principais metas das linguagens de programação é que programadores tenham uma Trecho de programa na linguagem de
programação C.
maior produtividade, permitindo expressar suas intenções mais facilmente do que quando
comparado com a linguagem que um computador entende nativamente (código de máquina).[4]
Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais facilmente entendida por
programadores humanos. Linguagens de programação são ferramentas importantes para que programadores e engenheiros de software possam
escrever programas mais organizados e com maior rapidez.
Linguagens de programação também tornam os programas menos dependentes de computadores ou ambientes computacionais específicos
(propriedade chamada de portabilidade[5]). Isto acontece porque programas escritos em linguagens de programação são traduzidos para o código
de máquina do computador no qual será executado em vez de ser diretamente executado. Uma meta ambiciosa do Fortran, uma das primeiras
linguagens de programação, era esta independência da máquina onde seria executada.[6][7]
História
O primeiro trabalho de linguagem de programação foi criado por Ada
Lovelace, grande amiga de Charles Babbage.[8] O projeto da primeira
calculadora mecânica programável foi idealizado por Charles Babbage[9]
que, após gastar fortunas e um longo tempo, não conseguiu concretizar o
projeto.[10] A linguagem de programação ADA foi batizada em
homenagem a esta primeira programadora.[11]
A orientação a objetos é outro marco importante na história das linguagens de programação. A linguagem Simula 67 introduz o conceito de
classes.[21] A linguagem Smalltalk[22][23] expande o conceito de classes e se torna a primeira linguagem de programação que oferecia suporte
completo à programação orientada a objetos.[24] A linguagem C++ (originalmente conhecida como C com classes) populariza a orientação a
objetos.[25]
Diversas linguagens de programação surgiram desde então. Entre estas incluem-se C#,[26] VB.NET, Java, Object Pascal, Objective-C, PHP,
Python,[27] SuperCollider, linguagem D[28] e Ruby.[29][Nota 2]
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.[30]
Se o método utilizado traduz todo o texto do programa (também chamado de código), para só depois executar[Nota 3] 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).[31] 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[32] 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.[33]
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[34] (compila para a plataforma Java[35]) e C# (compila para a
plataforma CLI[36]). 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.
Como exemplo, podemos citar a linguagem Java. Nela, um compilador traduz o código java para o código intermediário (e
O processo da
portável) da JVM. As JVMs originais interpretavam esse código, de acordo com o código de máquina do computador
compilação
hospedeiro, porém atualmente elas compilam, segundo a técnica JIT o código JVM para código hospedeiro.
A tradução é tipicamente feita em várias fases, sendo as mais comuns a análise léxica, a análise sintática (ou parsing), a geração de código e a
otimização.[37] Em compiladores também é comum a geração de código intermediário.[Nota 4]
Conceitos
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.[38] Um dos primeiros a preconizar a programação estruturada foi Haskell B.
Curry[39][Nota 5] 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.[40] 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.[41]
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.[42] Foi apresentado
originalmente pela Information & Systems Institute, Inc. no National Symposium on Modular Programming em
1968, com a liderança de Larry Constantine. Exemplos de linguagens que orientaram seu projeto para este
aspecto estão as linguagens Modula-2,[43][44] desenvolvida por Niklaus Wirth e a Modula-3.[45]
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.
Classificação
As linguagens de programação podem ser classificadas e sub-classificadas de várias formas.
Classificação da ACM
Quanto ao paradigma
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.[50]
Paradigmas Imperativos
Os paradigmas imperativos são aqueles que facilitam a computação por meio de mudanças de estado.[50] Se dividem em:
O paradigma procedural. Neste paradigma, os programas são executados através de chamadas sucessivas a procedimentos separados.
Exemplos de linguagens deste paradigma são o Fortran e o BASIC.
O paradigma de estruturas de blocos.[50] A característica marcante deste paradigma são os escopos aninhados. Exemplos de linguagens
deste paradigma são o Algol 60, Pascal[32] e C.
O paradigma de orientação a objetos. Este paradigma descreve linguagens que suportam a interação entre objetos. Exemplos de
linguagens deste paradigma são C++,[25] linguagem D,[51] Java, Python[27] e Ruby.[29]
O paradigma da computação distribuída. Este paradigma suporta que mais de uma rotina possa executar independentemente.[52] Um
exemplos de linguagem deste paradigma é a linguagem Ada.
Paradigmas Declarativos
Os paradigmas declarativos são aqueles nos quais um programa especifica uma relação ou função.[50] Se dividem em:
O paradigma funcional. Linguagens deste paradigma não incluem qualquer provisão para atribuição ou dados mutáveis[53] 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.[54] Exemplos de linguagens deste paradigma são as linguagens Lisp,[55]
Scheme[56] e Haskell[57]
O paradigma da programação lógica. Este paradigma se baseia na noção de que um programa implementa uma relação ao invés de um
mapeamento.[58] Exemplos de linguagens deste paradigma são o Prolog[59] e a linguagem Gödel.[60]
As linguagens de programação podem ser definidas de duas formas ortogonais quanto a sua estrutura de tipos.
Dinamicamente tipada, como SNOBOL, APL, Awk, Perl, Python e Ruby, onde o tipo da variável é definido em tempo de execução.[61]
Estaticamente tipada, como Java e C, onde o tipo da variável é definido em tempo de compilação.[62]
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, ou 1GL, é 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, preferindo o uso da linguagem Assembly.[63][64]
2. A linguagem de segunda geração, ou 2GL, é a linguagem 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.[65][66]
Linguagem de programação de médio nível,[Nota 7] 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.[67]
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,[32] Fortran, ALGOL,Java e SQL.[66]
Exemplos
ASP Lua
MATLAB
ActionScript
C/C++ PHP
Python
C#
Pascal/Object Pascal R
Ruby
Euphoria
Java Tcl
Basic/Visual Basic
JavaScript
Por se tratar de uma classificação subjetiva, isto é, sem limites bem definidos, não é possível afirmar que "determinada linguagem pode ser mais
humana que outra". Apesar disso, por questão de praticabilidade e objetividade, a classificação geralmente se limita em "linguagem de alto nível"
e "linguagem de baixo nível".
Quanto à geração
A classificação das linguagens de programação em gerações é uma questão que apresenta divergências de autor para autor. Segundo
Maclennan,[68] as linguagens se dividem em cinco gerações com as seguintes características:
Primeira geração - São linguagens onde suas estruturas de controle são aparentemente orientadas a máquina. As instruções condicionais
não são aninhadas e dependem fortemente de instruções de desvio incondicional como o GOTO. Uma linguagem típica desta geração é a
linguagem Fortran.[68]
Segunda geração - São linguagens onde as estruturas de controle são estruturadas de forma a minimizar ou dispensar o uso de instruções
GOTO. A segunda geração elaborou melhor e generalizou diversas estruturas de controle das linguagens de primeira geração. Uma das
grandes contribuições desta geração foi suas estruturas de nomes, que eram hierarquicamente aninhadas. Isto permitiu melhor controle de
espaços de nomes e uma eficiente alocação dinâmica de memória. Uma linguagem típica desta geração é o Algol 60.[68]
Terceira geração - São linguagens que dão ênfase a simplicidade e eficiência. Uma linguagem típica desta geração é a linguagem
Pascal.[32] As estruturas de dados desta geração mostram um deslocamento da máquina para a aplicação. As estruturas de controle são
mais simples e eficientes.[68]
Quarta geração - Esta geração é essencialmente o sinônimo para linguagens com abstração de dados. A maioria das linguagens desta
geração focam na modularização e no encapsulamento. Uma linguagem típica desta geração é a linguagem Ada.[68]
Quinta geração - Nesta geração, Maclennan agrupa diversos paradigmas como a orientação a objeto e o paradigma funcional, paradigma
lógico.[68]
Henri Bal e Dick Grune, já apresentam uma classificação em gerações de forma diferente, enfatizando mais o aspecto da aplicação. São elencadas
6 gerações.[69]
Doris Apleby e Julius J. VandeKopple dividem as linguagens em quatro gerações que coincidem com as quatro primeiras gerações elencadas por
Henri Bal e Dick Grune.[50]
Lista de linguagens
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:[41]
1. JavaScript 11. R
2. Python 12. Objective-C
3. Java 13. Shell
4. PHP 14. Scala
Livros sobre diversas linguagens
15. Go
5. C# de programação
6. C++ 16. PowerShell
7. TypeScript 17. Kotlin
8. Ruby 18. Rust
19. Perl
9. C
10. Swift 20. Dart
Ver também
Lista de linguagens de programação
Linguagem compilada
Linguagem de script
Linguagem interpretada
Paradigma de programação
Programação de computadores
Notas
1. Edsger Dijkstra em seu livro A Discipline of Programming assim define as linguagens de programação: "Eu vejo uma linguagem de
programação principalmente como um veículo para a descrição (potencialmente muito sofisticada) de mecanismos abstratos" Dijkstra,
Edsger W (1976). A Discipline of Programming (em inglês). Englewood Cliffs, Nova Jérsia: Prentice Hall. p. 9. 217 páginas. ISBN 0-13-
215871-X
2. Para um mapa abrangente da história das linguagens de programação ver: «Mapa da história das linguagens de programação» (http://www.l
evenez.com/lang/history.html) (em inglês). Consultado em 1 de dezembro de 2010
3. ou rodar, como se diz no jargão da computação
4. Veja também Compilador.
5. Citação de Knuth do memorando de Curry: "O primeiro passo no planejamento do programa é o de analisar a computação em certas partes
principais, chamadas aqui de divisões, de modo que o programa possa ser sintetizado a partir delas. As partes principais devem ser tais que,
ou pelo menos algumas delas, são cálculos independentes em si próprios, ou modificações desses cálculos." em: Knuth, Donald E (2003).
«1-The Early Development of Programming Languages». Selected Papers on Computer Languages (em inglês). Ventura Hall, Stanford:
CSLI. p. 17. 594 páginas. ISBN 1-57586-382-0
6. Sussman et al. menciona que as linguagens de altíssimo nível são programadas em termos de sentenças declarativas. Em: Abelson, Harold;
Sussman, Gerald Jay; Sussman, Julie (1996). Structure and Interpretation of Computer Programs (em inglês) 2ª ed. Cambridge,
Massachusetts: McGraw-Hill. p. 22. 640 páginas. ISBN 0-07-000484-6
7. Muitos autores classificam as linguagens quanto ao grau de abstração em apenas dois: alto e baixo. Alguns autores como Dennis Ritchie e
Kenneth Thompson classificam algumas linguagens como C e CPL tanto como baixo nível como alto nível como em: Appleby, Doris;
VandeKopple, Julius J (1997). Programming Languages. Paradigm and Practice (em inglês) 2ª ed. New York: McGraw-Hill. p. 132-134.
444 páginas. ISBN 0-07-005315-4
Referências
1. Fischer, Alice E.; Grodzinsky, Frances (1993). The Anatomy of 3. Aho, Alfred V.; Lam, Monica S.; Sethi, Ravi; Ullman, Jeffrey D
Programming Languages (em inglês). Englewood Cliffs, Nova (2008). Compiladores. Princípios, técnicas e ferramentas. São
Jérsia: Prentice Hall. p. 3. 557 páginas. ISBN 0-13-035155-5 Paulo: Addison-Wesley, Pearson. p. 3-5. 634 páginas. ISBN 978-
2. Dershem, Herbert L.; Jipping, Michael J. (1995). Programming 85-88639-24-9
Languages. Structures and models (em inglês) 2ª ed. Boston: PWS
Publishing Company. p. 1. 432 páginas. ISBN 0-534-94740-9
4. Melo, Ana Cristina Vieira de; Silva, Flávio Soares Corrêa da (2003). 14. Wexelblat, Richard L.(Editor) (1981). History of Programming
Princípios de Linguagens de Programação. São Paulo: Edgard Languages. New York: Academic Press. p. 6-15. 758 páginas.
Blücher Ltda. p. 7-11. 211 páginas. ISBN 85-212-0322-5 ISBN 0-12-745040-8
5. Hannan, James (editor); Oliver, Paul (autor do capítulo) (1982). «6- 15. Metropolis, N.(Ed.); Howlett, J.(Ed.); Rota, Gian-Carlo(Ed.) (1980).
Program Portability». Computer Programming Management. New A History of Computing in the Twentieth Century. A collection of
York: Van Nostrand Reinhold. p. 89-100. 155 páginas. ISBN 0-442- essays (em inglês). New York: Academic Press. pp. 130–131.
20920-7 ISBN 0-12-491650-3
6. Sammet, Jean E (1969). Programming Languages: History and 16. Wexelblat, Richard L.(Editor) (1981). History of Programming
Fundamentals (em inglês). Englewood Cliffs, Nova Jérsia: Prentice Languages. New York: Academic Press. p. 199-278. 758 páginas.
Hall. p. 14-16. 785 páginas. ISBN 0-13-729988-5 ISBN 0-12-745040-8
7. Backus, John (julho de 1979). «The History of Fortran I, II, and III». 17. Horowitz, Ellis (editor do livro); Nauer, P. (editor do capítulo) (1987).
Annals of The History of Computing (em ingles). 1 (1). Arlington, «Report on the Algorithmic Language ALGOL 60». Programming
VA: American Federation of Information Processing Societies. Languages. A Grand Tour (em inglês) 3ª ed. New York: Academic
80 páginas. ISSN 1058-6180 (https://www.worldcat.org/issn/1058-6 Press. p. 44-60. 512 páginas. ISBN 0-88175-142-1
180) 18. Horowitz, Ellis (editor do livro); Knuth, D. E (1987). «The Remaining
8. Huskey, Velma R.; Huskey, Harry D. (Outubro de 1980). «Lady Troublespots in ALGOL 60». Programming Languages. A Grand
Lovelace and Charles Babbage». Annals of The History of Tour (em inglês) 3ª ed. New York: Academic Press. p. 61-68.
Computing (em inglês). 2 (4). Arlington, VA: American Federation of 512 páginas. ISBN 0-88175-142-1
Information Processing Societies. p. 299-329. 384 páginas. 19. Pratt, Terrence W.; Zelkowitz, Marvin V (2001). Programming
ISSN 1058-6180 (https://www.worldcat.org/issn/1058-6180) Languages. Design and Implementation (em inglês) 4ª ed. Upper
9. Breton, Philippe (1991). História da Informática. São Paulo: UNESP. Saddle River, Nova Jérsia: Prentice hall. p. 420-421. 649 páginas.
p. 68-69. 260 páginas. ISBN 85-7139-021-5 ISBN 0-13-027678-2
10. Gonick, Larry (1984). Introdução Ilustrada à Computação. São 20. Gray, Peter (1984). «Representing programs by clauses: Prolog».
Paulo: Harper & Row do Brasil. p. 51-59. 242 páginas Logic, Algebra and Databases (em inglês). Chichester: Ellis
11. Smith, James F,; Frank, Thomas S (1994). Introduction to Horwood. p. 73. 294 páginas. ISBN 0-85312-709-3
Programming Concepts and Methods with Ada (em inglês). Nova 21. Horowitz, Ellis (1984). Fundamentals of Programming Languages
Iorque, EUA: McGraw-Hill. p. 7-8. 545 páginas. ISBN 0-07-911725- (em inglês) 2ª ed. Rockville, Maryland: Computer Science Press.
2 p. 17. 446 páginas. ISBN 088175-004-2
12. Zuse, Konrad (Julho de 1980). «Installation of the German 22. Goldberg, Adele; Robson, David (1989). Smalltalk-80. The
Computer Z4 in Zurich in 1950». Annals of The History of language (em inglês). Reading, Massachusetts: Addison-Wesley.
Computing (em inglês). 2 (3). Arlington, VA: American Federation of 591 páginas. ISBN 0-201-13688-0
Information Processing Societies. p. 239-241. 384 páginas. 23. Lewis, Simon (1995). The Art and Science of Smalltalk. An
ISSN 1058-6180 (https://www.worldcat.org/issn/1058-6180) Introduction to Object-Oriented Programming using VisualWorks
13. Lemone, Karen A. (1992). Fundamentals of Compilers. An (em inglês). London: Prentice Hall. 212 páginas. ISBN 0-13-
Introduction to Computer Language Translation (em inglês). Boca 371345-8
Raton: CRC. 184 páginas. ISBN 0-8493-7341-7
24. Sebesta, Robert W (2010). Conceitos de Linguagens de 36. Cough, John (2002). Compiling for the .NET Common Language
Programação 9ª ed. Porto Alegre: Bookman. p. 108-131. Runtime (CLR) (em inglês). Upper Saddle River: Prentice Hall. p. 2-
792 páginas. ISBN 978-85-7780-791-8 12. 391 páginas. ISBN 0-13-062296-6
25. Schildt, Herbert (1998). C++. The Complete Reference (em inglês) 37. Holmes, Jim (1995). Object-Oriented Compiler Construction (em
3ª ed. Berkeley: McGra-Hill. p. 256. 1008 páginas. ISBN 0-07- inglês). Englewood Cliffs, Nova Jérsia: Prentice Hall. p. 2-3.
882476-1 483 páginas. ISBN 0-13-630740-X
26. Liberty, Jesse (2002). Programming C# (em inglês) 2ª ed. Beijing: O 38. Dahl, O. J.; Dijkstra, E. W.; Hoare, C. A . R (1972). «I-Notes on
´Reilly. 629 páginas. ISBN 0-596-00309-9 Structured Programming». Structured Programming (em inglês).
27. Lutz, Mark (2001). Programming Python (em inglês) 2ª ed. Beijing: London: Academic Press. p. 1-82. 220 páginas. ISBN 0-12-200550-
O´Reilly. 1255 páginas. ISBN 0-596-00085-5 3
28. Cade Metz (7 de julho de 2014). «The Next Big Programming 39. Knuth, Donald E (2003). «1-The Early Development of
Language You've Never Heard Of» (http://www.wired.com/2014/07/ Programming Languages». Selected Papers on Computer
d-programming-language/). Wired (em inglês). Condé Nast Languages (em inglês). Ventura Hall, Stanford: CSLI. p. 1-94.
Publications. "Today, Alexandrescu is a research scientist at 594 páginas. ISBN 1-57586-382-0
Facebook, where he and a team of coders are using D to refashion 40. Tucker, Allen; Noonan, Robert (2002). Programming Languages.
small parts of the company’s massive operation." Principles and paradigms (em inglês). Boston: McGraw-Hill. p. 170-
29. Thomas, Dave (2002). Programming Ruby 1.9. The Pragmatic 185. 411 páginas. ISBN 0-07-238111-6
Programmers´Guide (em inglês). Raleigh, North Carolina: O´Reilly. 41. O'Grady, Stephen (1 de março de 2021). «The RedMonk
930 páginas. ISBN 1-934356-08-5 Programming Language Rankings: January 2021» (https://redmonk.
30. Cooper, Torczon (2003). Engineering a Compiler (em inglês). San com/sogrady/2021/03/01/language-rankings-1-21/) (em inglês).
Francisco: Morgan Kaufmann. p. 2. ISBN 1-55860-698-X RedMonk. Consultado em 7 de março de 2021
31. Aho, Alfred V.; Ullman, Jeffrey D. (1977). Principles of Compiler 42. Guezzi, Carlo; Jazayeri, Mehdi (1998). Programming Language
Design (em inglês). Reading, Massachusetts, EUA: Addison- Concepts (em inglês) 3ª ed. New York: John Wiley & Sons. p. 7.
Wesley. p. 1. 604 páginas. ISBN 0-201-00022-9 427 páginas. ISBN 0-471-10426-4
32. Pacitti, Tércio; Aktinson, Cyril P; Teles, Antonio Anibal de Souza 43. Wirth, Niklaus (1989). Programando em Modula 2. Rio de Janeiro:
(autor do apêndice 4a) (1983). Programação e Métodos LTC. 207 páginas. ISBN 85-216-0658-3
Computacionais. 1 4ª ed. Rio de Janeiro: LTC. p. 293. 431 páginas. 44. Silva, José carlos G.; Assis, Fidelis Sigmaringa G. de (1988).
ISBN 85-216-0283-9 Linguagens de Programação. Conceitos e Avaliação. Rio de
33. Scott, Michael L (2006). Programming Language Pragmatics (em Janeiro: McGraw-Hill/Embratel. p. 125. 213 páginas. CDD-001.6424
inglês) 2ª ed. Boston: Morgan Kauffman. p. 14-15. 875 páginas. 45. Harbison, Samuel P (1992). Modula-3 (em inglês). New York:
ISBN 978-0-12-633951-2 Prentice-Hall. 312 páginas. ISBN 0-13-596404-0
34. Schildt, Herbert (2001). Java 2. The Complete reference (em inglês) 46. Friedman, Daniel P.; Wand, Mitchell; haynes, Christopher T (1998).
4ª ed. Berkeley: McGraw-Hill. 1076 páginas. ISBN 0-07-213084-9 Essentials of Programming Languages (em inglês). Cambridge,
35. Engel, Joshua (1999). Programming for the Java Virtual Machine Massachusetts: MIT Press. p. 214. 536 páginas. ISBN 0-262-
(em inglês). Reading, Massachusetts: Addison & Wesley. p. 355. 06145-7
488 páginas. ISBN 0-201-30972-6
47. Sommerville, Ian (2001). Software Engineering (em inglês) 6ª ed. 58. Watt, David A (1990). «14-The Logic Programming Paradigm».
Harlow: Addison-Wesley. p. 272-273. 693 páginas. ISBN 0-201- Programming Language Concepts and Paradigms (em inglês). New
39815-X York: Prentice Hall. p. 253-265. 322 páginas. ISBN 0-13-728866-2
48. Bregalda, Paulo F.; Oliveira, Antonio A. F. de; Bornstein, Cláudio T 59. Bratko, Ivan (2001). Prolog. Programming for Artificial Intelligence
(1988). Introdução à Programação Linear 3ª ed. Rio de Janeiro: (em inglês) 3ª ed. Harlow, England: Addison-Wesley. pp. 46–50.
Campus. p. 61. 329 páginas. ISBN 85-7001-342-6 ISBN 0201-40375-7
49. «Sistema de classificação da ACM» (http://www.acm.uiuc.edu/signe 60. Hill, Patricia; Lloyd, John (1994). The Gödel Programming
t/JHSI/cr.D.3.2.html) (em inglês). acm.uiuc.edu. Consultado em 1 Language (em inglês). Cambridge: The MIT Press. 350 páginas.
de dezembro de 2010 ISBN 0-262-08229-2
50. Appleby, Doris; VandeKopple, Julius J (1997). Programming 61. Finkel, Raphael A (1995). Advance Programming Language Design
Languages. Paradigm and Practice (em inglês) 2ª ed. New York: (em inglês). Menlo Park, California: Addison-Wesley. p. 64.
McGraw-Hill. p. 8-13. 444 páginas. ISBN 0-07-005315-4 480 páginas. ISBN 0-8053-1191-2
51. «Overview - D Programming Language» (http://dlang.org/overview. 62. Guezzi, Carlo; Jazayeri, Mehdi (1985). Conceitos de Linguagens de
html). dlang.org (em inglês). Consultado em 28 de julho de 2014. "D Programação. Rio de Janeiro: Campus. p. 55. 306 páginas.
programs can be written either in C style function-and-data, C++ ISBN 85-7001-420-1
style object-oriented, C++ style template metaprogramming, or any 63. «Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 2A» (ht
mix of the three." tps://www.intel.com/content/www/us/en/architecture-and-technolog
52. Watt, David A (1990). «11-The Concurrent Programming y/64-ia-32-architectures-software-developer-vol-2a-manual.html)
Paradigm». Programming Language Concepts and Paradigms (em (em inglês)
inglês). New York: Prentice Hall. p. 205-218. 322 páginas. ISBN 0- 64. «CS 451 Lab 5 Intel Machine Language» (http://www.cis.gvsu.edu/~
13-728866-2 kurmasz/Teaching/OldCourses/CS451/CS451_W08/WebPage/Lab
53. Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (1996). s/Lab5/index.html) (em inglês)
Structure and Interpretation of Computer Programs (em inglês) 2ª 65. «Assembly Language - Techopedia» (https://www.techopedia.com/d
ed. Cambridge, Massachusetts: McGraw-Hill. p. 352-360. efinition/3903/assembly-language) (em inglês)
640 páginas. ISBN 0-07-000484-6 66. Sethi, Ravi (1996). Programming Languages. Concepts &
54. Watt, David A (1990). «13-The Funcional Programming Paradigm». Constructs (em inglês) 2ª ed. Reading, Massachusetts: Addison-
Programming Language Concepts and Paradigms (em inglês). New Wesley. p. 4-8. 640 páginas. ISBN 0-201-59065-4
York: Prentice Hall. p. 230-252. 322 páginas. ISBN 0-13-728866-2 67. «Linguagem de programação de alto nível - Infoescola» (http://ww
55. McCarthy, John; Abrahams, Paul W.; Edwards, Daniel J.; Hart, w.infoescola.com/engenharia-de-software/linguagem-de-programac
Timothy P.; Levin, Michael I (1962). Lisp 1.5 Programmer´s Manual. ao-de-alto-nivel/)
Cambridge, Massachusetts: The MIT Press. p. 1. 106 páginas. 68. Maclennan, Bruce J (1999). Principles of Programming Languages.
ISBN 0-262-13011-4 Design, Evaluation and Implementation (em inglês) 3ª ed. Oxford:
56. Dybvig, R. Kent (1996). The Scheme Programming Language. Ansi Oxford University Press. p. 92;163-164;208;305-306. 509 páginas.
Scheme. Nova Jérsia: Prentice Hall PTR. ISBN 0-13-454646-6 ISBN 0-19-511306-3
57. Hudak, Paul (2000). Tha Haskell School of Expression. Learning 69. Bal, Henri E.; Grune, Dick (1994). Programming Language
Functional Programming Through Multimedia. Cambridge: Essentials (em inglês). Wokingham: Addison-Wesley. p. 10-11.
Cambridge University Press. 363 páginas. ISBN 0-521-64408-9 231 páginas. ISBN 0-201-63179-2
Bibliografia
ORGANICK, E. I.;FORSYTHE, A. I.;PLUMMER, R. P. (1978). Programming Language Structures. New York: Academic Press. 659 páginas.
ISBN 0-12-528260-5
Ligações externas
«Enciclopédia de linguagens de programação» (http://www.scriptol.com/programming/languages.php) (em inglês)
Languages (https://dmoztools.net/Computers/Programming/Languages) no DMOZ
Obtida de "https://pt.wikipedia.org/w/index.php?title=Linguagem_de_programação&oldid=63483369"