Soluções        Serviços          Atendimento       Governo        Consultoria T.I      Treinamento

Software

Uma linguagem de programação é um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias.

O conjunto de palavras (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 processador.

Uma das principais metas das linguagens de programação é permitir que programadores tenham uma 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). 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). 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.

Índice

  • 1 História
  • 2 Interpretação e compilação
  • 3 Conceitos
    • 3.1 Programação linear
    • 3.2 Programação modular
    • 3.3 Programação estruturada
    • 3.4 Programação orientada a objetos
  • 4 Classificação
    • 4.1 Classificação da ACM
    • 4.2 Quanto ao paradigma
    • 4.3 Quanto a estrutura de tipos
    • 4.4 Quanto ao grau de abstração
    • 4.5 Quanto à geração
  • 5 Lista de linguagens
  • 6 Referências
  • 7 Bibliografia
  • 8 Ver também
  • 9 Ligações externas

História

O primeiro trabalho de linguagem de programação foi criado para um computador que existia, criado por Ada Lovelace,melhor amiga de Charles Babbage. O projeto do primeiro computador 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 provavelmente Plankalkül, criada por Konrad Zuse na Alemanha Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de programação.

A primeira linguagem de programação de alto nível amplamente usada foi Fortran, criada em 1954.

Em 1957 foi criada B-0, que daria origem a Flow-Matic (1958), antecessor imediato de COBOL, de 1959. Lisp e ALGOL foram criadas em 1958. Veja um mapa[1] da história das linguagens de programação.

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 interpretação, que juntas podem ser chamadas de tradução.

Se o método utilizado traduz todo o texto do programa (também chamado de código), para só depois executar (ou rodar, como se diz no jargão da computação) 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 é traduzido à medida que vai sendo executado, como em JavaScript, 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 de uma 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.

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.

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. Em compiladores também é comum a Geração de código intermediário. Veja também Compilador.

Conceitos

Programação linear

Em matemática, problemas de Programação Linear são problemas de otimização nos quais a função objetivo e as restrições são todas lineares. 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, idéias 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.

Programação modular

Programação modular é um paradigma 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.

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. 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.[2]

Programação orientada a objetos

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. Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programação. De fato, o paradigma "orientação a objetos" tem bases conceituais e origem no campo de estudo da cognição, que influenciou a área de inteligencia artificial e da lingüística no campo da abstração de conceitos do mundo real. Na qualidade de método de modelagem, é tida como a melhor estratégia, e mais natural, para se eliminar o "gap semântico", dificuldade recorrente no processo de modelar o mundo real, no domínio do problema, em um conjunto de componentes de software que seja o mais fiel na sua representação deste domínio. Facilitaria a comunicação do profissional modelador e do usuário da área alvo, na medida em que a correlação da simbologia e conceitos abstratos do mundo real e da ferramenta de modelagem (conceitos, terminologia, símbolos, grafismo e estratégias) fosse a mais óbvia, natural e exata possível. 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 (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.

Classificação

As linguagens de programação podem ser classificadas e sub-classificadas de várias formas.

Classificação da ACM

A ACM mantém um sistema de classificação[3] com os seguintes sub-itens:

  • Linguagens aplicativas, ou de aplicação
  • Linguagens concorrentes, distribuídas e paralelas
  • 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

Quanto ao paradigma


Diferentes linguagens de programação podem ser agrupadas segundo o paradigma que seguem para abordar a sua sintaxe:

  • Linguagem funcional
  • Linguagem natural
  • Programação lógica
  • Programação imperativa
    • Programação estruturada
    • Linguagem orientada a objetos

Quanto a estrutura de tipos

  • Fracamente tipada, como PHP e Smalltalk, onde o tipo da variável muda dinamicamente conforme a situação.
  • Fortemente tipada, como Java e Ruby, onde o tipo da variável, uma vez atribuído, se mantém o mesmo até ser descartada da memória.
  • Dinamicamente tipada, como 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.

Quanto ao grau de abstração

  • Linguagem de programação de baixo nível, cujos simbolos são uma representação direta do código de máquina que será gerado, onde cada comando da linguagem equivale a um "opcode" do processador, como Assembly
  • 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, composta de símbolos mais complexos, 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 e SQL

Quanto à geração

  • Primeira geração, as linguagens de baixo nível (Assembly)
  • Segunda geração, as primeiras linguagens (Fortran, ALGOL, ...)
  • Terceira geração, as procedurais e estruturadas (Pascal, C).
  • Quarta geração, linguagens que geram programas em outras linguagens (Java, C++), linguagens de consulta (SQL).
  • Quinta geração, linguagens lógicas (Prolog).

Lista de linguagens

Existem várias linguagens de programação; de acordo com o Índice Tiobe, as 20 mais populares são:[2]

  1. Java
  2. C
  3. C++
  4. PHP
  5. C♯
  6. Objective-C
  7. Visual Basic
  8. Python
  9. Perl
  10. JavaScript
  11. Lua
  12. Ruby
  13. Delphi / Object Pascal
  14. Lisp
  15. Transact-SQL
  16. Ada
  17. RPG
  18. Pascal
  19. F♯
  20. Assembly

Referências

  1. Mapa da história das linguagens de programação (em inglês). Página visitada em 1 de dezembro de 2010.
  2. a b Linguagens de programação populares (em inglês). tiobe.com. Página visitada em 27 de agosto de 2011.
  3. Sistema de classificação da ACM (em inglês). acm.uiuc.edu. Página visitada em 1 de dezembro de 2010.

Bibliografia

  • ORGANICK, E. I.;FORSYTHE, A. I.;PLUMMER, R. P.. Programming Language Structures. New York: Academic Press, 1978. 659 p. ISBN 0-12-528260-5
  • WEXELBLAT, Richard L.. History of Programming Languages. New York: Academic Press, 1981. 758 p. ISBN 0-12-745040-8

Ver também

  • Anexo:Lista de linguagens de programação
  • Linguagem compilada
  • Linguagem de script
  • Linguagem interpretada
  • Paradigma de programação
  • Programação de computadores
  • Sintaxe de linguagens de programação

Ligações externas

  • Enciclopédia de linguagens de programação (em inglês)
  • Programmer's Wiki (em inglês)
  • Languages no Open Directory Project

Obtida de "http://pt.wikipedia.org/w/index.php?title=Linguagem_de_programa%C3%A7%C3%A3o&oldid=27803453"

MAIS INFORMAÇÕES DO SETOR DE SOFTWARE

Arquitetura de dados

Arquitetura de dados é a estrutura dos componentes de dados de uma organização - considerados sob [ ... ]


Licenças Microsoft

Microsoft Product Activation O Microsoft Product Activation (MPA, em português, traduz. literal.:  [ ... ]


Programação extrema

Programação extrema (do inglês eXtreme Programming), ou simplesmente XP, é uma metodologia ág [ ... ]


Hierarquia DIKW

DIKW é uma hierarquia informacional utilizada principalmente nos campos da Ciência da Informação [ ... ]


Google

article thumbnail


Google Google Inc. Logotipo do Google Slogan “Don't be evil” [ [ ... ]


Indústria de software

A Indústria de Software é o conjunto dos negócios que envolvem o desenvolvimento, a manutençã [ ... ]


Web design

article thumbnail

Exemplo de um layout simples. O web design pode ser visto como uma extensão da prática  [ ... ]


Plone

article thumbnail

Plone

Screenshot da instalação padrão Desenvolvedor Alan Runyan, Alexander L [ ... ]


Symfony

article thumbnail

Symfony

Projeto padrão do Symfony Desenvolvedor Sensio Labs Versão está [ ... ]


APPS

article thumbnail

Apps (do inglês application) é uma forma abreviada para software aplicativo. A extensão .app si [ ... ]


Parque Tecnologico Capital Digital (Cidade Digital)

Toda a informação será disponibilizada através do site da secretaria de Ciência e Tecnologia do [ ... ]


Blog corporativo

Blogs Corporativos podem ser traduzidos em: uso de blogs dentro do cotidiano das empresas. O Blog  [ ... ]


Gerenciamento de nível de serviços

Gerenciamento de nível de serviços é uma disciplina de gestão responsável pelo processo gerenci [ ... ]


COA - Control Oriented Architecture

Control Oriented Architecture - COA é uma arquitetura de camadas de controle que permite configur [ ... ]


Microsoft Forefront

Microsoft Forefront Desenvolvedor Microsoft Plataforma Microsoft Windows La [ ... ]


Apple

article thumbnail


Apple Tipo Empresa cotada em bolsa (NASDAQ: AAPL, LSE: 0HDZ, FWB: APC) Fu [ ... ]


Segurança da informação

article thumbnail

A Wikipédia possui o portal:
Portal das tecnologias de informação A segurança da  [ ... ]


Sistema de informação contábil

O sistema de informação contábil é um dos componentes do sistema de informação gerencial (SIG, [ ... ]


ITIL

Information Technology Infrastructure Library (ITIL) é um conjunto de boas práticas a serem aplica [ ... ]


Miniaturização

Miniaturização é o processo de produção de objetos de consumo cada vez menores (miniaturas), in [ ... ]


Matriz de Interações (ou Matriz CRUD)

article thumbnail

A Matriz de Interações (ou Matriz CRUD) é utilizada, no processo de desenvolvimento de sistemas [ ... ]


Desenvolvimento web

article thumbnail

Desenvolvimento web é o termo utilizado para descrever o desenvolvimento de sítios, na Internet  [ ... ]


Modelagem dimensional

Modelagem dimensional é uma técnica de projeto lógico normalmente usada para data warehouses qu [ ... ]


Software como serviço

Software como serviço, do inglês Software as a service, é uma forma de distribuição e comerci [ ... ]


Nanotecnologia do carbono

article thumbnail

A nanotecnologia do carbono é o ramo da nanotecnologia que estuda a manipulação de estruturas de  [ ... ]


Gestão do conhecimento

article thumbnail

A definição clássica de conhecimento. A Gestão do Conhecimento, do inglês KM - Knowled [ ... ]


Software colaborativo

Software colaborativo (ou groupware) é um software que apoia o trabalho em grupo, coletivamente.  [ ... ]


Lotus Notes

article thumbnail

Lotus Tipo Corporação privada Indústria Software Produtos Ver lista com [ ... ]


Desktop

Desktop, expressão inglesa oriunda de desktop publisher (editor de textos de mesa). São os computa [ ... ]


Modelo V

article thumbnail

The V-model of the Systems Engineering Process.[1] O Modelo V é um modelo conceitual de  [ ... ]


Steve Ballmer

article thumbnail

Steve Ballmer Nome completo Steven Anthony Ballmer Nascimento 24 de Março [ ... ]


Microsoft Windows

article thumbnail



Último lançamento do Windows, Windows 7, mostrando o seu ambiente de trabalho e me [ ... ]


Videoconferência

article thumbnail

Videoconferência entre militares em 2006. Videoconferência é uma tecnologia que permite  [ ... ]


Model-view-controller (MVC)

article thumbnail


Um diagrama simples exemplificando a relação entre Model, View e Controller. As linhas sól [ ... ]


Web 2.0

article thumbnail

Web 2.0 é um termo criado em 2004 pela empresa americana O'Reilly Media[1] para designar uma segu [ ... ]


Modelo em espiral

O Modelo em espiral é um processo de desenvolvimento de software que combina elementos de projeto [ ... ]


CodeIgniter

CodeIgniter Desenvolvedor EllisLab, Inc. Lançado em 28 de Fevereiro de 2006  [ ... ]


BackTrack

article thumbnail

Backtrack

Backtrack 5 Desenvolvedor Max Moser, Mati Aharoni, Martin J. Muench  [ ... ]


Engenharia de software

Engenharia de software é uma área do conhecimento da computação voltada para a especificação,  [ ... ]


CMMI

O CMMI (Capability Maturity Model Integration) é um modelo de referência que contém práticas (Ge [ ... ]


ITILv3

A versão 3 da biblioteca ITIL foi lançada mundialmente em maio de 2007 como uma atualização comp [ ... ]


Linguagem de programação

Uma linguagem de programação é um método padronizado para expressar instruções para um compu [ ... ]


ISO/IEC 9126

article thumbnail

ISO/IEC 9126 é uma norma ISO para qualidade de produto de software, que se enquadra no modelo de qu [ ... ]


Análise de requisitos de software

Análise de requerimento de software Origem: Wikipédia, a enciclopédia livre. Na engenharia de [ ... ]


Prototipação

Prototipação é uma abordagem baseada numa visão evolutiva do desenvolvimento de software, afe [ ... ]


ISO da segurança da informação

ISO 27001 Origem: Wikipédia, a enciclopédia livre. ISO/IEC 27001 é um padrão para sistema de g [ ... ]


Aplicação Web

Aplicação Web é o termo utilizado para designar, de forma geral, sistemas de informática proje [ ... ]


Hacker

article thumbnail


Originalmente, e para certos programadores, hackers (singular: hacker) são indivíduos que elabo [ ... ]


Computação científica

Computação científica (ou ciência computacional) é o campo de estudo interessado na construçã [ ... ]


Microsoft Office

article thumbnail

Microsoft Office Desenvolvedor Microsoft Plataforma x86 e x64 Lançad [ ... ]


Artigos Relacionados

Pluriverso - Inteligência em Tecnologia

Pluriverso - Inteligência em Tecnologia


Ed.Centro Sul, 2°Andar, SCIA, Qd. 14, Conj. 07, Lt 1, S. Ind.
CEP: 71.250-135, Brasília-DF.  
Como Chegar
| Atendimento  


+55 (61) 4141.5555

Serviços

Desenvolvimento de Software
Oursourcing de T.I
Consultoria em Tecnologia
Licitação com o Governo

Produtos

ERP, CRM, Colaboração
Cloud Computing

Soluções
Soluções em Outsourcing de Tecnologia
Integração de Software
Avaliação de nível tecnológico
Cálculo de custos de T.I
Softwares customizados


Porque escolher a Pluriverso

Blog Corporativo
Blog do Software

Conheça a Pluriverso
quem somos
verticais de atuação
portifólio
casos de sucesso

Atendimento
contatos
sala de imprensa
como chegar
Trabalhe conosco

desenvolvimento de software