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

Software

Um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação e execução do programa. Por exemplo, em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si, enquanto em programação funcional os programadores abstraem o programa como uma sequência de funções executadas de modo empilhado.

Assim como diferentes grupos em engenharia de software propõem diferentes metodologias, diferentes linguagens de programação propõem diferentes paradigmas de programação. Algumas linguagens foram desenvolvidas para suportar um paradigma específico (Smalltalk e Java suportam o paradigma de orientação a objetos enquanto Haskell suportam o paradigma funcional), enquanto outras linguagens suportam múltiplos paradigmas (como o LISP, Perl, Python, C++ e Oz).

Os paradigmas de programação são muitas vezes diferenciados pelas técnicas de programação que proíbem ou permitem. Por exemplo, a programação estruturada não permite o uso de goto. Esse é um dos motivos pelo qual novos paradigmas são considerados mais rígidos que estilos tradicionais. Apesar disso, evitar certos tipos de técnicas pode facilitar a prova de conceito de um sistema, podendo até mesmo facilitar o desenvolvimento de algoritmos.

O relacionamento entre paradigmas de programação e linguagens de programação pode ser complexo pelo fato de linguagens de programação poderem suportar mais de um paradigma.

História

Inicialmente, os computadores eram programados através de código binário, que representava as sequência de controle alimentadas à CPU. Tal processo era difícil e propenso a erros; os programas estavam em código de máquina, que é um paradigma de programação de muito baixo nível.

Para facilitar a programação foram desenvolvidas linguagens de montagem. Elas substituíam as funções do código de máquina por mnemônicos, endereços de memória absolutos por identificadores. A linguagem de montagem ainda é considerada de baixo nível, ainda que seja um paradigma da "segunda geração" das linguagens. Mesmo linguagens de montagem da década de 1960 suportavam gerações condicionais de macros bastante sofisticadas. Também suportavam recursos de programação modular tais como CALL (para suportar subrotinas), variáveis externas e seções comuns (globais); isso permitia o reuso de código e o isolamento de características específicas do hardware, através do uso de operadores lógicos como READ, WRITE, GET e PUT. A linguagem de montagem foi e ainda é usada para sistemas críticos, e frequentemente usada em sistemas embarcados.

O próximo avanço foi o desenvolvimento das linguagens procedurais. As primeiras a serem descritas como de alto nível, essas linguagens da terceira geração usam um vocabulário relativo ao problema sendo resolvido. Por exemplo, COBOL usa termos como file (para identificar arquivos), move (para mover arquivos) e copy (para copiar arquivos). Tanto FORTRAN quanto ALGOL usam terminologia matemática, tendo sido desenvolvidas principalmente para problemas comerciais ou científicos. Tais linguagens procedurais descrevem, passo a passo, o procedimento a ser seguido para resolver certo problema. A eficácia e a eficiência de cada solução é subjetiva e altamente dependente da experiência, habilidade e criatividade do programador.

Posteriormente, linguagens orientadas a objeto foram criadas. Nelas, os dados e as rotinas para manipulá-los são mantidos numa unidade chamada objeto. O utilizador só pode acessar os dados através das subrotinas disponíveis, chamadas métodos, o que permite alterar o funcionamento interno do objeto sem afetar o código que o consome. Ainda há controvérsia por programadores notáveis como Alexander Stepanov, Richard Stallman[1] entre outros, questionando a eficácia desse paradigma em comparação do paradigma procedural. A necessidade de cada objeto de ter métodos associados tornaria os programas muito maiores. o conceito de polimorfismo foi desenvolvido como tentativa de solucionar tal dilema. Tendo em vista que a orientação a objeto é um paradigma e não uma linguagem, é possível criar até mesmo uma linguagem de montagem orientada a objeto, como o High Level Assembly.

Independente do ramo das linguagens imperativas, baseadas nas linguagens procedurais, paradigmas de programação declarativa também foram desenvolvidos. Nessa linguagens se descreve o problema ao computador, não como resolvê-lo. O programa é estruturado como uma coleção de propriedades para encontrar o resultado esperado, e não um procedimento a se seguir. Dado um banco de dados ou um conjunto de regras, o computador tenta encontrar a solução ao casar todas as propriedades desejadas. Um exemplo é o SQL, assim como a família das linguagens funcionais e lógicas.

Programas escritos em programação funcional usam funções, blocos de código construídos para agir como funções matemáticas. Desencoraja-se a mudança do valor das variáveis através de atribuição, fazendo grande uso de recursividade para isso.

Na programação lógica, fatos sobre o domínio do problema são expressados como fórmulas lógicas, e os programas são executados ao se aplicar regras de inferência nas fórmulas até que uma resposta é encontrada, ou a coleção de fórmulas é provada inconsistente.

Exemplos

  • Programação estruturada, em contraste a Programação orientada a objetos
  • Programação imperativa, em contraste de programação declarativa
  • Programação de passagem de mensagens, em contraste de programação imperativa
  • Programação procedural, em contraste de programação funcional
  • Programação orientada a fluxos, em contraste de programação orientada a eventos
  • Programação escalar, em contraste de programação vetorial
  • Programação restritiva, que complementa a programação lógica
  • Programação orientada a aspecto (como em AspectJ)
  • Programação orientada a regras (como em Mathematica)
  • Programação orientada a tabelas (como em Microsoft FoxPro)
  • Programação orientada a fluxo de dados (como em diagramas)
  • Programação orientada a políticas
  • Programação orientada a testes
  • Programação genérica
  • Programação multiparadigma (como em Scala)

Referências

  1. Mode inheritance, cloning, hooks & OOP (Google Groups Discussion).
Obtida de "http://pt.wikipedia.org/w/index.php?title=Paradigma_de_programa%C3%A7%C3%A3o&oldid=26434142"

MAIS INFORMAÇÕES DO SETOR DE SOFTWARE

Modelagem de dados

Modelagem de Dados Representa um conjunto de requerimentos de informações de negócio. É uma part [ ... ]


AJAX


AJAX (acrônimo em língua inglesa de Asynchronous Javascript and XML, em português "Javascript  [ ... ]


Teoria da informação

article thumbnail

A Teoria da informação ou Teoria matemática da comunicação é um ramo da teoria da probabilidad [ ... ]


Gestão do conhecimento

article thumbnail

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


Software livre

article thumbnail

Ilustração frequentemente usada como logo para o Projeto GNU A Wikipédia possui  [ ... ]


ERP

Sistemas Integrados de Gestão Empresarial (SIGE ou SIG), em inglês Enterprise Resource Planning (E [ ... ]


BackTrack

article thumbnail

Backtrack

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


Nanotecnologia

article thumbnail

Imagem de um circuito integrado ampliada 2400 vezes A nanotecnologia (algumas vezes chamada [ ... ]


Microsoft Windows

article thumbnail



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


Zope


Zope Desenvolvedor Zope Corporation Plataforma multiplataforma Versão es [ ... ]


Indústria de software

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


Aplicação Web

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


Melhoria de Processos do Software Brasileiro

O MPS.BR ou Melhoria de Processos do Software Brasileiro é simultaneamente um movimento para a melh [ ... ]


Sistema de informação de gestão

Sistema de informação de gestão ou sistema de informações gerenciais (SIG; do inglês, manageme [ ... ]


Modelo em cascata

article thumbnail

O modelo em cascata é um modelo de desenvolvimento de software seqüencial no qual o desenvolvime [ ... ]


Desktop

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


Software

article thumbnail


OpenOffice.org Writer. Software, logiciário ou suporte lógico é uma sequência de in [ ... ]


Comércio eletrônico

Comércio eletrônico (português brasileiro) ou comércio electrónico (português europeu) ou e-co [ ... ]


Apple

article thumbnail


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


Django (framework web)

Django Desenvolvedor Lawrence Journal-World Lançado em 21 de Julho de 2005  [ ... ]


Software proprietário

Software proprietário ou não livre é aquele cuja cópia, redistribuição ou modificação sã [ ... ]


Gestão de riscos em segurança

O gerenciamento de riscos em segurança é a essência da segurança corporativa, que atua no sent [ ... ]


Software aplicativo

article thumbnail


O OpenOffice.org é um exemplo de um aplicativo. O GNU Image Manipulation Program (G [ ... ]


Tecnologia da informação

article thumbnail

Mapa com os gastos em TI em todo o planeta Tecnologia da Informação (TI) É a área de  [ ... ]


IBM

article thumbnail

International Business Machines (IBM) Slogan Uma Divina Mais Inteligente Ti [ ... ]


CMMI

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


CRM - Customer relationship management

Customer Relationship Management (CRM) é uma expressão em inglês que pode ser traduzida para a l [ ... ]


E-mail marketing

E-mail marketing é a utilização do e-mail como ferramenta de marketing direto, respeitando norma [ ... ]


XMI (ou XML Metadata Interchange)

XMI (ou XML Metadata Interchange) é um padrão da OMG (grupo de gerenciamento de objetos) para tr [ ... ]


Segurança da informação

article thumbnail

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


Hierarquia DIKW

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


Smartphone

article thumbnail

Galaxy Nexus, exemplo de Smartphone. Nokia Communicator 9000, 9110, 9210, 9500  [ ... ]


Git - sistema de controle de versão

article thumbnail

Origem: Wikipédia, a enciclopédia livre. Git Desenvolvedor Linus Torvalds, Ju [ ... ]


Otimização em engenharia de software

A Otimização em engenharia de software é uma recente área de pesquisa que trata da aplicação [ ... ]


CodeIgniter

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


Teste de penetração

article thumbnail

O teste de penetração é um método que avalia a segurança de um sistema de computador ou de um [ ... ]


Larry Page

article thumbnail

Lawrence Edward Page Larry Page Nascimento 26 de Março de 1973 (38 anos) [ ... ]


Computador

article thumbnail

Um assistente pessoal digital. Um computador pessoal. Columbia, um supercomp [ ... ]


Blog corporativo

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


Google

article thumbnail


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


dotProject

Software Livre - dotProject
dotProject Desenvolvedor Adam Donnison, Karen Chisholm, Gregor Er [ ... ]


Modelo de entidades e relacionamentos

O modelo de entidades e relacionamentos é um modelo abstrato cuja finalidade é descrever, de man [ ... ]


Inteligência organizacional

Inteligência Organizacional é a capacidade coletiva disponível em uma organização para identifi [ ... ]


web desktop

article thumbnail

Tela do eyeOS 0.9 Um webtop, web desktop, desktop online ou OS online (OS é a sigla para [ ... ]


JBuilder

JBuilder, é uma IDE para desenvolvimento de aplicações na tecnologia Java criada pela Borland e [ ... ]


Microsoft Office

article thumbnail

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


Java

article thumbnail

Java
Duke, o mascote do Java Paradigma Orientação a objetos, estruturada, impe [ ... ]


Pequena e média empresa de alta tecnologia (PMET)

A globalização eo avanço tecnológico levarm a evolução dos processos produtivos e à entrada  [ ... ]


Parque Tecnologico Capital Digital (Cidade Digital)

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


Desenvolvimento de software

Na computação, o desenvolvimento de software é o ato de elaborar e implementar um sistema computa [ ... ]


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