Conteúdo verificado

Linguagem de programação

Assuntos Relacionados: Programação de Computadores

Você sabia ...

Crianças SOS voluntários ajudaram a escolher artigos e fez outro material currículo patrocínio Criança ajuda as crianças uma a uma http://www.sponsor-a-child.org.uk/ .

Uma linguagem de programação é uma linguagem artificial que pode ser usado para controlar o comportamento de uma máquina, em especial um computador . As linguagens de programação são definidos por sintática e regras semânticas que descrevem a sua estrutura e significado respectivamente. Muitas linguagens de programação têm algum tipo de especificação escrita da sua sintaxe e semântica; alguns são definidos por uma implementação oficial (por exemplo, uma Norma ISO), enquanto outros têm uma implementação dominante (por exemplo, Perl ).

As linguagens de programação também são usados para facilitar a comunicação sobre a tarefa de organizar e manipular a informação, e para expressar algoritmos precisamente. Alguns autores restringir o termo "linguagem de programação" para essas línguas que podem expressar todos os algoritmos possíveis; às vezes o termo " linguagem de computador "é usado para línguas artificiais mais limitados.

Milhares de diferentes linguagens de programação foram criadas até agora, e novas linguagens são criados a cada ano.

Definições

Traços muitas vezes considerado importante para a constituição de uma linguagem de programação:

  • Função: Uma linguagem de programação é uma linguagem usada para escrever programas de computador, que envolvem um computador realizando algum tipo de computação ou algoritmo e possivelmente controlar dispositivos externos, tais como impressoras, robôs, e assim por diante.
  • Alvo: Linguagens de Programação diferem de línguas naturais em que as línguas naturais são utilizados apenas para a interação entre as pessoas, enquanto linguagens de programação também permitem que os seres humanos para se comunicar instruções para máquinas. Algumas linguagens de programação são utilizados por um dispositivo para controlar o outro. Por exemplo Programas PostScript são frequentemente criado por outro programa para controlar um impressora de computador ou monitor.
  • Constrói: Linguagens de programação pode conter construções para definir e manipular estruturas de dados ou o controlo do fluxo de execução.
  • Poder expressivo: O teoria da computação classifica línguas pelos cálculos que eles são capazes de expressar. Tudo Turing línguas completas podem aplicar o mesmo conjunto de algoritmos . ANSI / ISO SQL e Caridade são exemplos de idiomas que não são Turing ainda chamados frequentemente linguagens de programação completas.

Línguas não-computacionais, tais como linguagens de marcação como HTML ou gramáticas formais, como BNF, geralmente não são consideradas linguagens de programação. Uma linguagem de programação (que podem ou não podem ser Turing completa) pode ser incorporado nessas (host) idiomas não-computacionais.

Propósito

A propósito de destaque das linguagens de programação é fornecer instruções para um computador. Como tal, as linguagens de programação diferente da maioria das outras formas de expressão humana em que eles necessitam de um maior grau de precisão e integridade. Ao usar uma linguagem natural para se comunicar com outras pessoas, autores humanos e alto-falantes pode ser ambíguo e fazer pequenos erros, e ainda esperar que a sua intenção de ser compreendido. No entanto, figurativamente falando, computadores "fazer exatamente o que eles dizem para fazer", e não pode "entender" o que o código do programador pretendia escrever. A combinação da definição de linguagem, o programa e entradas do programa deve especificar completamente o comportamento externo que ocorre quando o programa é executado.

Muitas línguas foram projetados a partir do zero, alteradas para atender a novas necessidades, combinada com outras línguas e, finalmente, caiu em desuso. Embora tenha havido tentativas de projetar uma linguagem de computador "universal", que serve todos os fins, todos eles não conseguiram ser aceitos nesse papel. A necessidade de diversas linguagens de computador surge a partir da diversidade de contextos em que línguas são usados:

  • Programas variam de pequenos scripts escritos por amadores individuais até grandes sistemas escritos por centenas de programadores.
  • Os programadores variam em experiência de novatos que necessitam de simplicidade acima de tudo, com especialistas que podem estar confortável com uma complexidade considerável.
  • Os programas devem equilibrar velocidade, tamanho e simplicidade em sistemas que variam de microcontroladores para supercomputadores.
  • Os programas podem ser escritos uma vez e não mudar para gerações, ou eles podem sofrer modificação quase constante.
  • Finalmente, os programadores podem simplesmente diferem em seus gostos: eles podem estar acostumados a discutir problemas e expressá-los em uma linguagem particular.

Uma tendência comum no desenvolvimento de linguagens de programação tem sido acrescentar mais capacidade de resolver os problemas usando um nível mais elevado de abstração. As linguagens de programação mais antigas foram intimamente vinculada ao hardware subjacente do computador. À medida que novas linguagens de programação têm desenvolvido, funcionalidades foram adicionadas que permitem programadores expressar idéias que são mais remota a partir de simples tradução em instruções de hardware subjacentes. Porque os programadores são menos ligados à complexidade do computador, os seus programas de computação pode fazer mais com menos esforço do programador. Isso permite que eles escrever mais funcionalidade por unidade de tempo.

Processadores de linguagem natural ter sido proposto como uma forma para eliminar a necessidade de uma linguagem especializada para a programação. No entanto, este objectivo permanece distante e seus benefícios estão abertos ao debate. Edsger Dijkstra assumiu a posição de que o uso de uma linguagem formal é essencial para evitar a introdução de construções sem sentido, e negou provimento programação em linguagem natural como "tolice". Alan Perlis foi igualmente não condiz com a idéia.

Elementos

Sintaxe

Analisar árvore de código Python com inserir tokenization
Destaque de sintaxe é muitas vezes usado para ajudar os programadores a reconhecer elementos do código fonte. A linguagem acima é Python .

Uma forma de superfície de linguagem de programação é conhecido como o seu sintaxe. A maioria das linguagens de programação são puramente textual; eles usam seqüências de texto, incluindo palavras, números e sinais de pontuação, bem como línguas naturais escritas. Por outro lado, existem algumas linguagens de programação que são mais gráfica na natureza, usando relações espaciais entre símbolos para especificar um programa.

A sintaxe de uma linguagem descreve as possíveis combinações de símbolos que formam um programa sintacticamente correcto. O significado atribuído a uma combinação de símbolos é tratado pela semântica (ou formal ou codificado em um implementação de referência). Como a maioria das línguas são textuais, este artigo discute sintaxe textual.

Sintaxe da linguagem de programação é geralmente definida usando uma combinação de expressões regulares (por estrutura lexical) e Formulário de Backus-Naur (para estrutura gramatical). Abaixo está uma gramática simples, com base em Lisp:

expression ::= atom | list
atom ::= number | symbol
number ::= [+-]?['0'-'9']+
symbol ::= ['A'-'Z''a'-'z'].*
list ::= '(' expression* ')'

Esta gramática especifica o seguinte:

  • uma expressão é ou um átomo ou uma lista;
  • um átomo é um número ou um símbolo;
  • um número é uma seqüência ininterrupta de um ou mais dígitos decimais, opcionalmente precedidos por um sinal de mais ou menos;
  • um símbolo é uma letra seguida de zero ou mais de quaisquer caracteres (excluindo espaços em branco); e
  • uma lista é um par correspondente de parênteses, com zero ou mais expressões dentro dela.

Os seguintes são exemplos de seqüências de token bem formados nesta gramática: ' 12345 ',' () ',' (ab c232 (1)) '

Nem todos os programas sintaticamente corretas são semanticamente correta. Muitos programas sintaticamente corretas são, no entanto, mal-formado, por regras da linguagem; e pode (dependendo da especificação da linguagem e da solidez da execução) resultam em um erro de tradução ou execução. Em alguns casos, tais programas podem apresentar comportamento indefinido. Mesmo quando um programa é bem definida dentro de uma linguagem, ele ainda pode ter um significado que não se destina por parte de quem a escreveu.

Uso linguagem natural como um exemplo, pode não ser possível atribuir um significado para uma sentença gramaticalmente correta ou a frase pode ser falsa:

  • " Ideias verdes incolores dormem furiosamente. "É gramaticalmente bem formado, mas não tem significado geralmente aceite.
  • "John é um solteiro casado". é gramaticalmente bem formado, mas expressa um significado que não pode ser verdade.

O seguinte fragmento de linguagem C é sintaticamente correto, mas executa uma operação que não é semanticamente definida (porque é uma p ponteiro nulo, as operações p-> real e p> im não têm nenhum significado):

 complexo * p = NULL;
 abs_p complexo = sqrt (p> real * p> real + p> im * p> im);

A gramática necessária para especificar uma linguagem de programação pode ser classificada pela sua posição no Hierarquia de Chomsky. A sintaxe da maioria das linguagens de programação podem ser especificados usando uma gramática Type-2, ou seja, eles são gramáticas livres de contexto.

Semântica estática

A semântica estática define restrições sobre a estrutura dos textos válidos que são difíceis ou impossíveis de se expressar em formalismos sintáticas padrão. A mais importante destas restrições são cobertos por sistemas do tipo.

Tipo de sistema

Um sistema de tipos define como uma linguagem de programação classifica os valores e expressões em tipos, como ele pode manipular esses tipos e como eles interagem. Isto inclui geralmente uma descrição do estruturas de dados que podem ser construídas na língua. O design eo estudo de sistemas de tipos usando a matemática formal é conhecido como escreva teoria.

Internamente, todos dados em computadores digitais modernos são simplesmente armazenados como zeros ou uns ( binários ).

Digitado contra línguas untyped

A língua é digitado se a especificação de cada operação define tipos de dados ao qual a operação é aplicável, com a implicação de que não é aplicável a outros tipos. Por exemplo, " this text between the quotes "é uma string. Na maioria das linguagens de programação, dividir um número por uma corda não tem sentido. A maioria das linguagens de programação modernas, portanto, rejeitar qualquer programa que está tentando realizar tal operação. Em alguns idiomas, a operação sem sentido será detectado quando o programa é compilado ("static" verificação de tipo), e rejeitado pelo compilador, enquanto em outros, ele será detectado quando o programa for executado ("dinâmico" verificação de tipo), resultando em um tempo de execução exceção.

Um caso especial de linguagens digitadas são as línguas de tipo único. Estes são muitas vezes de script ou marcação línguas, como o Rexx ou SGML, e ter apenas um tipo de dados - mais comumente cadeias de caracteres que são usados tanto para dados simbólicos e numéricos.

Em contraste, uma língua sem tipo, tal como a maioria idiomas de montagem, permite que qualquer operação a ser realizada em quaisquer dados, os quais são geralmente considerados como sendo sequências de bits de vários comprimentos. Linguagens de alto nível que são untyped incluem BCPL e algumas variedades de Forth.

Na prática, embora alguns idiomas são considerados digitada a partir do ponto de vista de escreva teoria (verificar ou rejeitar todas as operações), a maioria das línguas modernas oferecem um grau de digitação. Muitas linguagens de produção fornecer os meios para contornar ou subverter o sistema de tipos.

Estáticas versus tipagem dinâmica

Em tipagem estática todas as expressões têm seus tipos determinada antes do programa que está sendo executado (normalmente em tempo de compilação). Por exemplo, 1 e (2 + 2) são expressões inteiras; que não pode ser passada para uma função de espera que uma cadeia, ou armazenada em uma variável que está definida para manter as datas.

Linguagens estaticamente tipadas podem ser digitados ou manifestamente escreva-inferida. No primeiro caso, o programador deve explicitamente escrever tipos em certas posições textual (por exemplo, a variável declarações). No segundo caso, o compilador infere os tipos de expressões e declarações com base no contexto. A maioria principais línguas estaticamente datilografadas, como C ++ , C # e Java , são manifestamente digitado. Tipo completa inferência tem sido tradicionalmente associado com línguas menos convencionais, tais como Haskell e ML. No entanto, muitas línguas manifestamente digitados apoiar a inferência de tipo parcial; por exemplo, Java e C # tanto inferir tipos em certos casos limitados tipagem dinâmica, também chamado de digitação latente, determina o tipo de segurança das operações em tempo de execução.; em outras palavras, os tipos são associados com os valores de tempo de execução, em vez de expressões textuais. Tal como acontece com as línguas inferido do tipo, linguagens com tipagem dinâmica não exigem o programador para escrever anotações de tipo explícitas expressões. Entre outras coisas, isto pode permitir a uma única variável para se referir a valores de tipos diferentes, em diferentes pontos na execução do programa. No entanto, erros de tipo não podem ser detectados automaticamente até que um pedaço de código é realmente executada, tornando a depuração mais difícil. Ruby, Lisp, JavaScript e Python são dinamicamente digitado.

Tipagem fraca e forte

Tipagem fraca permite que um valor de um tipo de ser tratado como um outro, por exemplo o tratamento de uma seqüência de caracteres como um número. Isto pode ocasionalmente ser útil, mas também pode permitir que alguns tipos de falhas do programa para passar despercebido na compilar tempo e até mesmo em tempo de execução.

Tipagem forte impede que o acima. Uma tentativa de executar uma operação do tipo errado de valor gerará um erro. Tipo seguro línguas fortemente tipados são frequentemente denominado ou seguro.

Uma definição alternativa para "fracamente tipado" se refere a idiomas, como Perl , JavaScript e C ++ , o que permite um grande número de conversões de tipo implícito. Em JavaScript, por exemplo, a expressão 2 * x converte implicitamente x para um número, e essa conversão for bem-sucedido, mesmo que x é null , undefined , uma Array , ou uma seqüência de letras. Essas conversões implícitas são muitas vezes úteis, mas podem mascarar erros de programação.

Forte e estática são agora geralmente considerada conceitos ortogonais, mas o uso na literatura é diferente. Alguns usam o termo digitado fortemente para significar fortemente, tipagem estática, ou, ainda mais confusa, para dizer simplesmente tipagem estática. Assim C tem sido chamado de ambos fortemente tipado e fracamente, tipagem estática.

Semântica de execução

Depois que os dados tiver sido especificado, a máquina deve ser instruído a realizar operações nos dados. A semântica de execução de uma linguagem define como e quando as várias construções de uma linguagem deve produzir um comportamento do programa.

Por exemplo, a semântica pode definir o estratégia pela qual as expressões são avaliadas para valores, ou a maneira em que estruturas de controle condicionalmente executar instruções.

Biblioteca central

A maioria das linguagens de programação têm um associado biblioteca de núcleo (por vezes conhecido como o «padrão de biblioteca ', especialmente se ele é incluído como parte do padrão de linguagem publicado), que é convencionalmente disponibilizado por todas as implementações da língua. Bibliotecas do núcleo normalmente incluem definições para algoritmos comumente utilizados, estruturas de dados e mecanismos de entrada e saída.

A biblioteca principal da linguagem é muitas vezes tratada como parte da língua por seus usuários, embora os designers podem ter tratado como uma entidade separada. Muitos especificações de idioma definir um núcleo que devem ser disponibilizados em todas as implementações, e no caso de linguagens padronizadas podem ser necessários esta biblioteca núcleo. A linha entre uma língua e sua biblioteca central, portanto, difere de língua para língua. De fato, algumas línguas são projetados de modo que os significados de certas construções sintáticas não pode sequer ser descrito sem se referir à biblioteca central. Por exemplo, em Java , uma string literal é definida como uma instância da classe java.lang.String; Da mesma forma, em Smalltalk, uma função anônima expressão (um "bloco") constrói uma instância da classe BlockContext da biblioteca. Por outro lado, Esquema contém vários subconjuntos coerentes que são suficientes para construir o resto da linguagem como macros de biblioteca, e assim os projetistas da linguagem não se incomodam mesmo a dizer que porções da linguagem deve ser implementado como construções de linguagem, e que deve ser implementado como parte de um biblioteca.

Prática

Designers e usuários de uma língua deve construir um número de artefatos que governam e permitem a prática de programação. O mais importante desses artefatos são a especificação da linguagem e implementação.

Especificação

A especificação de uma linguagem de programação destina-se a fornecer uma definição que o idioma usuários eo implementadores podem usar para determinar se o comportamento de um programa está correto, dada a sua Código fonte.

A especificação da linguagem de programação pode assumir várias formas, incluindo o seguinte:

  • Uma definição explícita da sintaxe, semântica estática, e semântica de execução da linguagem. Enquanto sintaxe é comumente especificado usando uma gramática formal, definições semânticas podem ser escritos em linguagem natural (por exemplo, a linguagem C ), ou um semântica formal (por exemplo, a ML padrão e Esquema de especificações).
  • Uma descrição do comportamento de um tradutor para a língua (por exemplo, o C ++ e Especificações Fortran). A sintaxe e semântica da linguagem tem de ser inferida a partir desta descrição, que pode ser escrita em linguagem formal singular ou a.
  • Uma referência ou implementação do modelo, às vezes escrito na linguagem a ser especificada (por exemplo, Prolog ou ANSI REXX). A sintaxe e semântica da linguagem são explícitos no comportamento da implementação de referência.

Implementação

Uma implementação de uma linguagem de programação fornece uma maneira de executar o programa em uma ou mais configurações de hardware e software. Há, em geral, duas abordagens para a implementação da linguagem de programação: compilação e interpretação. Em geral, é possível implementar uma linguagem usando uma ou outra técnica.

A saída de um compilador pode ser executado por hardware ou um programa chamado um intérprete. Em algumas implementações que fazem uso da abordagem intérprete não há uma fronteira clara entre a compilação e interpretação. Por exemplo, algumas implementações da linguagem de programação BASIC compilar e, em seguida, executar a fonte de uma linha de cada vez.

Os programas que são executados directamente no hardware normalmente executado várias ordens de grandeza mais rápida do que aqueles que são interpretados em software.

Uma técnica para melhorar o desempenho dos programas interpretados é just-in-time compilação. Aqui o máquina virtual, apenas antes da execução, converte os blocos de código de bytes que vai ser utilizado para o código de máquina, para a realização directa sobre o hardware.

História

Uma seleção de livros didáticos que ensinam programação, tanto em linguagens populares e obscuros. Estes são apenas alguns dos milhares de linguagens de programação e dialetos que foram projetados na história.

Desenvolvimentos início

As primeiras linguagens de programação anteriores ao computador moderno. O século 19 teve "programável" teares e pergaminhos jogador de piano que implementaram o que são hoje reconhecidos como exemplos de linguagens de programação específicas de domínio. Até o início do século XX, cartões perfurados dados codificados e dirigido processamento mecânico. Em 1930 e 1940, os formalismos de Alonzo Church de cálculo lambda e Alan Turing 's Máquinas de Turing desde abstrações matemáticas para expressar algoritmos ; o cálculo lambda permanece influente em design de linguagem.

Na década de 1940, foram criados os primeiros computadores digitais movidos a eletricidade. O primeiro linguagem de programação de alto nível para ser projetado para um computador era Plankalkül, desenvolvido para o Alemão Z3 por Konrad Zuse entre 1943 e 1945.

Os computadores de início dos anos 1950, nomeadamente o UNIVAC I eo IBM 701 usado programas de linguagem de máquina. Programação em linguagem de máquina de primeira geração foi rapidamente substituída por uma segunda geração de linguagens de programação conhecido como Linguagens de montagem. Mais tarde, na década de 1950, programação em linguagem assembly, que tinha evoluído para incluir o uso de instruções de macro, foi seguido pelo desenvolvimento de três linguagens de programação de alto nível: Fortran, LISP, e COBOL. Versões atualizadas de todos estes ainda estão em uso geral, e cada um tem influenciado fortemente o desenvolvimento de linguagens posteriores. No final dos anos 1950, a linguagem formal como Algol 60 foi introduzido, e línguas mais tarde de programação são, em muitos aspectos, descendentes de Algol. O formato eo uso das linguagens de programação início foi fortemente influenciado pela restrições da interface.

Requinte

O período entre 1960 e final de 1970 trouxe o desenvolvimento dos principais paradigmas de linguagem agora em uso, embora muitos aspectos foram requintes de idéias no primeiro Linguagens de programação de terceira geração:

  • APL introduzido a programação de matriz e influenciou programação funcional.
  • PL / I (NPL) foi projetado na década de 1960 para incorporar as melhores idéias de Fortran e COBOL.
  • Na década de 1960, Simula foi a primeira língua projetada para suportar programação orientada a objetos; em meados da década de 1970, Smalltalk seguido com a primeira linguagem orientada a objetos "puramente".
  • C foi desenvolvido entre 1969 e 1973 como um sistemas de linguagem de programação, e continua a ser popular.
  • Prolog, concebida em 1972, foi a primeira linguagem de programação lógica.
  • Em 1978, ML construiu um sistema de tipo polimórfico em cima do Lisp, pioneiro tipagem estática linguagens de programação funcional.

Cada uma dessas línguas gerou uma família inteira de descendentes, ea maioria das línguas modernas contar, pelo menos, um deles em sua ascendência.

Os anos 1960 e 1970 ainda a um debate considerável sobre os méritos de programação estruturada, e se linguagens de programação deve ser projetado para apoiá-lo. Edsger Dijkstra, em uma famosa 1,968 carta publicada no Comunicações da ACM, argumentou que Instruções GOTO deve ser eliminado de todos os "nível superior" linguagens de programação.

Os anos 1960 e 1970 também viu a expansão de técnicas que reduziram a pegada de um programa, bem como a melhoria da produtividade do programador e do usuário. O baralho de cartas para um início 4GL foi muito menor para a mesma funcionalidade expresso numa Deck de 3GL.

A consolidação e crescimento

Os anos 1980 foram anos de consolidação relativo. C ++ programação de sistemas orientada a objeto e combinado. O governo dos Estados Unidos padronizado Ada, uma linguagem de programação de sistemas destinados ao uso por empreiteiros da defesa. No Japão e em outros lugares, vastas somas foram gastos investigando chamada linguagens "quinta geração" que incorporaram construções de programação lógica. A comunidade linguagens funcionais mudou-se para padronizar ML e Lisp. Ao invés de inventar novos paradigmas, todos esses movimentos elaborados em cima das idéias inventadas na década anterior.

Uma tendência importante no projeto da linguagem durante a década de 1980 foi um maior enfoque na programação para sistemas de grande escala através do uso de módulos ou unidades organizacionais em grande escala de código. Todos os sistemas de módulos notáveis desenvolvidos na década de 1980 Modula-2, Ada, e ML, embora outras línguas, como o PL / I, já tinha amplo suporte para programação modular. Sistemas de módulos foram muitas vezes casado com construções de programação genéricos.

O rápido crescimento da Internet em meados da década de 1990 criou oportunidades para novas línguas. Perl , originalmente uma ferramenta de scripting Unix lançado pela primeira vez em 1987, tornou-se comum na dinâmica Sites da Web. Java veio a ser usado para a programação do lado do servidor. Estes desenvolvimentos não eram fundamentalmente novela, mas foram aperfeiçoamentos línguas e paradigmas existentes, e em grande parte baseada na família C de linguagens de programação.

Evolução da linguagem de programação continua, na indústria e na pesquisa. Direções atuais incluem segurança e verificação da confiabilidade, novos tipos de modularidade ( mixins, delegados, aspectos), e integração de banco de dados.

O 4GLs são exemplos de idiomas que são de domínio específico, como SQL, que manipula e retorna conjuntos de dados, em vez de os valores escalares que são canônico para a maioria das linguagens de programação. Perl , por exemplo, com a sua " aqui documento "pode conter vários programas 4GL, bem como vários programas JavaScript, numa parte do seu próprio código perl e usar interpolação variável no" aqui documento "para apoiar a programação multi-idioma.

O uso da linguagem de medição

É difícil determinar quais as linguagens de programação são mais amplamente usados, e o meio de utilização varia de acordo com o contexto. Uma língua pode ocupar o maior número de horas programador, um diferente têm mais linhas de código, e um terceiro utilizar a maior parte do tempo da CPU. Algumas línguas são muito populares para determinados tipos de aplicações. Por exemplo, COBOL ainda é forte no data center corporativo, muitas vezes em grande mainframes; Fortran em aplicações de engenharia; C em aplicações embarcadas e sistemas operacionais; e outras línguas são usados regularmente para escrever muitos tipos diferentes de aplicações.

Vários métodos de medição da língua popularidade, cada sujeito de uma polarização diferente sobre o que é medido, têm sido propostos:

  • contando o número de anúncios de emprego que mencionam a língua
  • o número de livros vendidos que ensinam ou descrevem o idioma
  • estimativas do número de linhas existentes de código escrito na linguagem-o que pode subestimar línguas muitas vezes não é encontrado nas buscas públicas
  • contagem de referências de linguagem encontrada usando um motor de busca da web.

Taxonomias

Não há sistema de classificação global para linguagens de programação. A linguagem de programação determinado, normalmente, não têm uma única língua ancestral. Idiomas comumente surgem através da combinação dos elementos de várias línguas antecessor, com novas idéias em circulação na época. Idéias que se originam em uma língua vai difundir em toda uma família de línguas relacionadas, e depois saltar de repente através das aberturas de familiares para aparecer em uma família totalmente diferente.

A tarefa é ainda mais complicada pelo fato de que as línguas podem ser classificadas ao longo vários eixos. Por exemplo, Java é tanto uma linguagem orientada a objetos (porque incentiva orientada a objetos organização) e uma linguagem concorrente (porque contém construções internas para a execução múltipla threads em paralelo). Python é um objeto orientado- linguagem de script.

Em traços largos, as linguagens de programação dividir em programação paradigmas e uma classificação por domínio pretendido de uso. Paradigmas incluem programação procedural, programação orientada a objetos, programação funcional, e lógica de programação; algumas línguas são híbridos de paradigmas ou multi-paradigmática. Um linguagem assembly não é tanto um paradigma como um modelo direto de uma arquitetura da máquina subjacente. Por fim, as linguagens de programação pode ser considerado uso geral, linguagens de programação do sistema, linguagens de script, linguagens específicas de domínio, ou / idiomas distribuídos simultâneos (ou uma combinação destes). Algumas linguagens de propósito geral foram projetadas em grande parte com objetivos educacionais.

A linguagem de programação também podem ser classificados por factores alheios ao paradigma de programação. Por exemplo, a maioria das linguagens de programação usar língua inglesa palavras-chave, enquanto um minoria não. Outras línguas podem ser classificadas como sendo esotérico ou não.

Retirado de " http://en.wikipedia.org/w/index.php?title=Programming_language&oldid=229493360 "