Linguagem de programação: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Linha 22:
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.<ref name="horowitz">{{Citar livro|autor=Horowitz, Ellis|título=Fundamentals of Programming Languages|idioma=inglês|edição=2ª|local=Rockville, Maryland|editora=Computer Science Press|ano=1984|páginas=446|página=17|isbn=088175-004-2}}</ref> A linguagem [[Smalltalk]]<ref name="goldberg">{{Citar livro|autor=Goldberg, Adele; Robson, David|título=Smalltalk-80|subtítulo=The language|idioma=inglês|local=Reading, Massachusetts|editora=Addison-Wesley|ano=1989|páginas=591|isbn=0-201-13688-0}}</ref><ref name="lewis">{{Citar livro|autor=Lewis, Simon|título=The Art and Science of Smalltalk|subtítulo=An Introduction to Object-Oriented Programming using VisualWorks|idioma=inglês|local=London|editora=Prentice Hall|ano=1995|páginas=212|isbn=0-13-371345-8}}</ref> expande o conceito de classes e se torna a primeira linguagem de programação que oferecia suporte completo à programação orientada a objetos.<ref name="sebesta">{{Citar livro|autor=Sebesta, Robert W|título=Conceitos de Linguagens de Programação|edição=9ª|local=Porto Alegre|editora=Bookman|ano=2010|páginas=792|página=108-131|isbn=978-85-7780-791-8}}</ref> A linguagem [[C++]] (originalmente conhecida como C com classes) populariza a orientação a objetos.<ref name="schildt">{{Citar livro|autor=Schildt, Herbert|título=C++|subtítulo=The Complete Reference|idioma=inglês|edição=3ª|local=Berkeley|editora=McGra-Hill|ano=1998|páginas=1008|página=256|isbn=0-07-882476-1}}</ref>
 
Diversas linguagens de programação surgiram desde então. Entre estas incluem-se [[C♯C Sharp|C#]],<ref name="liberty">{{Citar livro|autor=Liberty, Jesse|título=Programming C#|idioma=inglês|edição=2ª|local=Beijing|editora=O´Reilly|ano=2002|páginas=629|isbn=0-596-00309-9}}</ref> [[VB.NET]], [[Linguagem de programação Java|Java]], [[Object Pascal]], [[Objective-C]], [[PHP]], [[Python]],<ref name="Lutz">{{Citar livro|autor=Lutz, Mark|título=Programming Python|idioma=inglês|edição=2ª|local=Beijing|editora=O´Reilly|ano=2001|páginas=1255|isbn=0-596-00085-5}}</ref> [[SuperCollider]], [[D (linguagem de programação)|linguagem D]]<ref>{{citar web |url=http://www.wired.com/2014/07/d-programming-language/ |título=The Next Big Programming Language You’ve Never Heard Of|autor=Cade Metz|data=7 de julho, 2014|obra=[[Wired]] |publicado=[[Condé Nast Publications]]|língua=Inglês|citação=Today, Alexandrescu is a research scientist at Facebook, where he and a team of coders are using [[D (linguagem de programação)|D]] to refashion small parts of the company’s massive operation.}}</ref> e [[Ruby (linguagem de programação)|Ruby]].<ref name="thomas">{{Citar livro|autor=Thomas, Dave|título=Programming Ruby 1.9|subtítulo=The Pragmatic Programmers´Guide|idioma=inglês|local=Raleigh, North Carolina|editora=O´Reilly|ano=2002|páginas=930|isbn=1-934356-08-5}}</ref><ref group=Nota>Para um mapa abrangente da história das linguagens de programação ver: {{Citar web |url=http://www.levenez.com/lang/history.html |título=Mapa da história das linguagens de programação |língua=inglês|acessodata=1 de dezembro de 2010}}</ref>
 
== Interpretação e compilação ==
Linha 32:
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.<ref name=scott>{{Citar livro|autor=Scott, Michael L|título=Programming Language Pragmatics|língua=en|edição=2ª|local=Boston|editora=Morgan Kauffman|ano=2006|páginas=875|página=14-15|isbn=978-0-12-633951-2}}</ref>
 
Embora haja essa distinção entre [[Linguagem interpretada|linguagens interpretadas]] e [[Linguagem compilada|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 (linguagem de programação)|Java]]<ref name=java2>{{Citar livro|último=Schildt|primeiro=Herbert|título=Java 2|subtítulo=The Complete reference|língua=en|edição=4ª|local=Berkeley|editora=McGraw-Hill|ano=2001|páginas=1076|isbn=0-07-213084-9}}</ref> (compila para a [[plataforma Java]]<ref name=jit>{{Citar livro|último=Engel|primeiro=Joshua|título=Programming for the Java Virtual Machine|língua=en|local=Reading, Massachusetts|editora=Addison & Wesley|ano=1999|páginas=488|página=355|isbn=0-201-30972-6}}</ref>) e [[C♯C Sharp|C#]] (compila para a [[Common Language Infrastructure|plataforma CLI]]<ref name=msil>{{Citar livro|último=Cough|primeiro=John|título=Compiling for the .NET Common Language Runtime (CLR)|língua=en|local=Upper Saddle River|editora=Prentice Hall|ano=2002|páginas=391|página=2-12|isbn=0-13-062296-6}}</ref>). E também há outras formas de interpretar em que os [[Código fonte|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 portável) da JVM. As JVMs originais interpretavam esse código, de acordo com o código de máquina do computador hospedeiro, porém atualmente elas compilam, segundo a técnica JIT o código JVM para código hospedeiro.