Quais foram as condições históricas que levaram a programação orientada a objetos a se tornar um importante paradigma de programação?

14

Quais foram alguns dos fatores econômicos (e outros históricos) que levaram as linguagens de programação orientadas a objetos a se tornarem influentes? Eu sei que Simula começou, mas foi a adoção de linguagens OOP devido a sempre necessidades crescentes de negócios? Ou a adoção se deveu mais às coisas novas que poderiam ser feitas com as linguagens OOP?

Editar Eu realmente estou mais interessada em saber se houve alguns fatores externos às próprias linguagens que permitiram que eles tomassem conta.

    
por ihtkwot 01.03.2012 / 02:29
fonte

4 respostas

10

Resposta curta

Acho que foi a rotatividade de projetos de software antes dos dias da OO. OO ajudou adicionando o conceito fundamentalmente crítico - Modele o mundo real .

A primeira linguagem de programação orientada a objetos foi Simula em 1967. No entanto, naquela época o desenvolvimento de software em geral era ainda nos laboratórios, mais e a maioria dos paradigmas ainda estavam mais próximos do caso do hardware .

Ao longo de mais uma década de desenvolvimento de software para aplicativos corporativos, outros aplicativos comerciais cresceram e o desenvolvimento de software aumentou em toda a década de 1970. Línguas que ainda sobrevivem hoje em dia (antes de 1980) eram C, Cobol, Fortran e outras similares. A maioria dessas linguagens é processual. Lisp também existia desde aquele dia - no entanto, não tenho certeza se essa era uma linguagem de propósito geral proeminente para o desenvolvimento comercial. O famoso termo Modelo Cascata também foi cunhado no início da década de 1970.

Na maioria dos ambientes comerciais, o elemento mais importante que surgiu no desenvolvimento de software foi o gerenciamento de projetos. Havia uma extrema necessidade de orçamentos apertados e pelo menos previsíveis e o gerenciamento de requisitos para congelar para garantir que o projeto alcançasse a linha de chegada de forma respeitável. Durante este período, também foi um dos Mythical Manmonths em 1975.

Acho que no final dos anos 70 as pessoas estavam esgotadas - já que as linguagens procedurais não correspondiam a essas promessas. E um novo paradigma Orientado a objetos , que existia desde então, tornou-se grande. Embora as pessoas possam discordar, eu acho que o C ++ que ajuda a familiaridade e experiência comprovada e de C e a orientação Promise of Object (originalmente com o nome C com Classes) em 1983 foi uma pedra angular para o sucesso da programação orientada a objetos. / p>

Algumas referências para mais perspectivas - link

Então, por que OO?

Eu acho que esses dias (se você olhar para o ponto de vista do sucesso do projeto) - faz sentido que o que você pode entender melhor seja mais fácil de gerenciar. Metodologia orientada a objetos com uma promessa ".. tudo na vida é um objeto" parecia mais com o senso comum mesmo antes de ser provado ser significativo. O sucesso prático deste fator foi a própria noção de “modelar” suficientemente o mundo real e o problema em questão antes de pular a arma - o que eu acho uma coisa fundamentalmente nova que a OO ofereceu e que nenhum outro paradigma ofereceu até aquela data. . E definitivamente, dado que este paradigma forçou você a pensar um pouco antes de codificar mais do que linguagens procedurais, ele mostrou sucesso visível nos projetos de software que empregavam e desde então eles perceberam!

EDITAR
Eu acrescentaria também que as linguagens de programação evoluíram simultaneamente em paralelo a tais conceitos fundamentais (paradigma OO, Aspect, máquinas virtuais). Cada novo conceito e novo pensamento surgiram apenas quando novas linguagens de programação o dominavam - mantêm apenas a familiaridade, mas alteram os fundamentos do núcleo ! Ao mesmo tempo - estes novos conceitos e novas linguagens só surgiram devido a novos problemas de negócios. 1980's - OO para software de larga escala, 1990 Java na era da Internet, PHP / ASP e muitos outros para web. A inovação nas linguagens de programação também foi impulsionada principalmente pela necessidade de mercado descontínua.

Em resumo, o início dos anos 80 foi a idade em que o software comercial de larga escala decolou - enquanto os projetos com linguagens procedurais tiveram seus problemas, OO mostrou a melhor luz e tornou os projetos mais bem-sucedidos.

    
por 01.03.2012 / 06:53
fonte
6

Acho que o maior motivo foi o sucesso das interfaces gráficas do usuário, como X e Windows. Uma GUI consiste em vários objetos que possuem um comportamento próprio, algo que o OO é capaz de representar de perto.

Por outro lado, uma interface de usuário de base de texto (que não tenta se assemelhar a uma GUI) geralmente segue um padrão de resposta de comando, que pode ser facilmente implementado em uma linguagem procedural. Regras de negócio e coisas semelhantes foram implementadas com linguagens procedurais durante décadas, sem muitos problemas, e ainda hoje muitos programas OO para aplicativos de negócios são bastante processuais; com objetos estúpidos que contêm os dados e objetos sem estado que contêm as regras de negócios; o primeiro poderia ser registros em um idioma procedural, o mais tarde poderia ser, bem, procedimentos.

    
por 01.03.2012 / 08:31
fonte
4

Eu vejo a POO como um passo evolutivo natural do código procedural:

  1. Código procedural: informe a máquina para fazer A, depois diga para fazer B.
  2. OOP: Empacote as instruções procedurais em partes muito reutilizáveis, definindo interfaces / entradas / saídas. (Atenção: simplificação.)

Tenho certeza de que alguém com uma visão mais ampla entrará em contato, mas parece que isso foi uma progressão natural, simplesmente permitindo que os programadores produzissem código mais rápido: isto é, permitir maior reutilização de código.

Nessa visão, o maior fator externo foi o custo reduzido da potência do processador (versus custos de mão-de-obra do desenvolvedor para criar programas típicos): a sobrecarga de computação no uso de classes OOP tornou-se menos preocupante do que a economia de tempo do desenvolvedor. (Essa mesma desvantagem de despesa de CPU versus despesa do programador influenciou muitos outros aspectos da programação.)

    
por 01.03.2012 / 06:51
fonte
2

No início, havia uma programação imperativa (se você pudesse chamar assim). Instruções simples que informavam ao mainframe o que e como ele deveria ser calculado. Essas linguagens de programação usavam saltos incondicionais e outras instruções "não estruturadas", a maioria delas exóticas para os padrões de hoje.

Então alguém criou estruturas para programação. Enquanto, enquanto, e foreach, sabemos hoje. Foi uma grande inovação, já que agora aplicativos com fluxo relativamente complexo poderiam ser escritos e compreendidos facilmente. Assim nasceu a programação estruturada.

Depois vieram algumas outras pessoas que disseram que você precisava repetir muitos códigos aqui e ali e que era um pesadelo manter, então uma maneira de reutilizar o código deveria ser inventada. As pessoas criaram procedimentos e funções para delimitar os bits de código reutilizáveis. Isso também deu origem aos princípios de encapsulamento e responsabilidade única.

Depois, alguns acadêmicos disseram que a funcionalidade deve estar intimamente associada aos dados em que está trabalhando. Em seguida, eles adicionaram os conceitos de herança para reutilização de código e polimorfismo para corresponder à maneira lógica como a classificação funcionava na vida real. Assim, as linguagens de programação de terceira geração e OOP nasceu.

    
por 01.03.2012 / 09:39
fonte