Barbara Liskov é descrita na sessão de perguntas e respostas da Nature Computational Science, publicada em outubro de 2023, como:
“uma professora do instituto em grande parte aposentada no Massachusetts Institute of Technology.“
Mais importante ainda, ela é reconhecida como uma pioneira na programação orientada a objetos e sistemas distribuídos, além de ser uma mulher que superou os desafios de trabalhar em um ambiente dominado por homens.
Barbara estava ciente das limitações impostas pelo seu gênero desde cedo. Como contou a Tom Van Vleck em 2016, para a ACM, em uma das entrevistas com vencedores do Prêmio Turing:
Quando eu estava crescendo, definitivamente não era considerado adequado para uma jovem interessada em matemática e ciências. Na verdade, naquela época, a mensagem que se recebia era que o esperado era se casar, ter filhos e não trabalhar. No entanto, meus pais sempre me incentivaram a levar os estudos a sério. Minha mãe era formada na faculdade, assim como meu pai, então era esperado que eu fosse para a faculdade, o que, naqueles tempos, não era tão comum.
Tendo desenvolvido um interesse precoce por matemática, ela fez todos os cursos oferecidos em sua escola secundária – sendo o mais avançado deles o pré-cálculo. Ela seguiu para a Universidade da Califórnia, em Berkeley, onde obteve seu diploma de bacharel em matemática com uma especialização em física, e teve apenas uma colega de classe feminina em sua área. Formada em 1961, ela se inscreveu para programas de pós-graduação em matemática em Berkeley e Princeton. Naquela época, Princeton não aceitava estudantes do sexo feminino em matemática e, embora tenha sido aceita em Berkeley, ela decidiu se mudar para Boston, onde havia recebido uma oferta de emprego como programadora pela Mitre Corporation, o think tank militar sem fins lucrativos, fundado em 1958 a partir das seções de radar e pesquisa computacional do MIT Lincoln Laboratory.
Recontando sua transição acidental de Matemática para Ciência da Computação em uma entrevista com Ananya Rastogi para a Nature Computation Q&A, ela disse:
Isso foi em 1961. Eu nem sabia que computadores existiam naquela época, e no meu primeiro dia de trabalho, me entregaram um manual de FORTRAN e pediram para escrever um pequeno programa. Foi assim que descobri uma área que realmente gostei e na qual fui boa.
Ela trabalhou na Mitre por um ano antes de aceitar um trabalho em Harvard, trabalhando na tradução computacional de linguagens humanas. Isso também acabou sendo um passo importante em sua carreira. Como contou a Van Vleck:
Foi uma boa decisão, como se revelou. O projeto usava um programa enorme que foi escrito em assembler – provavelmente para o IBM 7094. Isso me deu a oportunidade de entender realmente como a máquina funcionava, e como estava mantendo um programa muito grande, aprendi muito sobre a estrutura dos programas. Era um programa bastante bom para os padrões da época, e bem modularizado, embora eu não soubesse nada sobre modularidade naquela época. Mas era um código não reentrante, então, quando você chamava um procedimento, ele podia modificar uma instrução no procedimento que estava chamando, de modo que, quando chegasse ao final, voltasse para o chamador sem precisar de uma pilha para fazer o branch por algo. Claro, essa era uma maneira muito propensa a erros de fazer as coisas. Então, essa foi uma boa lição para mim, ver isso.
Após um ano, ela estava pronta para retomar seus estudos, mas agora em Ciência da Computação na Universidade de Stanford, onde seu orientador de doutorado foi John McCarthy. O tema de sua tese foi um programa de computador capaz de jogar finais de partidas de xadrez. Durante esse trabalho, ela desenvolveu a “heurística killer”, um método de ordenação de movimentos baseado na observação de que um movimento forte ou um pequeno conjunto de movimentos em uma posição específica pode ser igualmente forte em posições semelhantes no mesmo movimento (ply) na árvore de jogo. Essa técnica melhora a eficiência do corte alpha-beta, o que, por sua vez, melhora a eficiência do algoritmo minimax.
Recebendo seu doutorado em 1968, ela foi uma das primeiras mulheres nos Estados Unidos a receber um PhD de um departamento de ciência da computação.
Após conhecer, mas ainda não se casar com, Nathan Liskov, Barbara voltou para a área de Boston e passou os quatro anos seguintes trabalhando na Mitre em design de computadores e sistemas operacionais. Foi lá que ela desenvolveu um computador chamado Venus, um computador pequeno voltado para o suporte à construção de software complexo, e ao trabalhar no sistema operacional Venus, ela foi introduzida aos tipos de abstrações usadas em sistemas operacionais, o que a levou ao estudo de compiladores, sistemas e metodologia de programação.
Abstração de Dados
Em 1971, Liskov deixou a Mitre e se juntou ao corpo docente do MIT (Massachusetts Institute of Technology) como professora no Laboratório de Ciência da Computação. Foi lá que ela trabalhou em todas as ideias que levaram ao seu Prêmio Turing, começando com a Abstração de Dados, reconhecida como uma técnica poderosa que pode ser utilizada para melhorar a qualidade, manutenção e reutilização de software. É um dos conceitos mais importantes em ciência da computação e é usado em praticamente todas as linguagens de programação modernas.
De acordo com seu próprio relato, a ideia surgiu do nada, mas ela imediatamente reconheceu sua importância e como ela se encaixava na ideia de modularidade. Na primavera de 1973, ela começou a trabalhar nisso juntamente com Steve Zilles, e juntos publicaram o artigo “Programming with abstract data types”, que foi submetido à Conferência sobre Linguagens de Alto Nível. Esse artigo altamente influente propôs que o tipo abstrato de dado (ADT) é uma estrutura de dados definida pelo seu comportamento, e não pela sua implementação, o que significa que o usuário de um ADT não precisa saber como a estrutura de dados é implementada internamente para utilizá-la. Isso torna os ADTs mais fáceis de usar e entender, além de torná-los mais flexíveis e reutilizáveis.
Linguagem de Programação CLU
Liskov então começou a pensar sobre como seria uma linguagem de programação que permitisse aos usuários definir novas abstrações de dados, e isso levou ao projeto CLU – pronunciado “clue”, embora o nome tenha surgido do conceito de “cluster”, que era o sistema de extensão de tipos do CLU e corresponde, de maneira geral, ao conceito de “classe” em uma linguagem orientada a objetos. Embora o CLU não tenha sido amplamente utilizado, ele introduziu muitas funcionalidades que são amplamente usadas hoje em dia, sendo visto como um passo no desenvolvimento da programação orientada a objetos (OOP). Além dos tipos abstratos de dados, suas contribuições principais incluem call-by-sharing, iteradores, múltiplos valores de retorno (uma forma de atribuição paralela), tipos parametrizados seguros e tipos variantes seguros. Também é notável pelo uso de classes com construtores e métodos, mas sem herança.
Computação Distribuída
Procurando por um novo campo de interesse por volta de 1980, Liskov começou a pensar sobre o ARPANET (Advanced Research Projects Agency Network), que havia sido desenvolvido no final dos anos 1960 e início dos anos 1970 e foi a primeira rede de comutação por pacotes de área ampla com controle distribuído. Ela leu um artigo de Bob Kahn, onde ele descrevia a visão da computação distribuída: um sistema seria construído por componentes que rodavam em diferentes computadores e se comunicavam através de uma rede, e ela percebeu que seria uma boa área para pesquisa. Seu primeiro projeto foi projetar e implementar uma nova linguagem de programação, chamada Argus, que suportaria programas em máquinas remotas. O Argus era uma extensão do CLU, onde os programas eram compostos por objetos chamados “guardians”, com cada guardian residindo completamente em um único computador e se comunicando com outros através de chamadas de procedimento remoto para as operações uns dos outros.
A pesquisa subsequente de Liskov foi principalmente na área de sistemas distribuídos e abrangeu muitos aspectos de sistemas operacionais e computação, incluindo trabalhos importantes em sistemas de bancos de dados orientados a objetos, coleta de lixo, cache, persistência, recuperação, tolerância a falhas, segurança, fluxo de informação descentralizado, atualização modular de sistemas distribuídos, roteamento geográfico e tolerância prática a falhas bizantinas. Muitos desses, como a tolerância a falhas bizantinas, lidam com situações em que um sistema complexo falha de maneiras arbitrárias, e Liskov desenvolveu métodos para permitir o funcionamento correto mesmo quando alguns componentes são falhos.
Princípio da Substituição de Liskov
Formalizado em 1994 em um artigo coautorado com Jeannette Wing, o Princípio da Substituição de Liskov (LSP) caracteriza quando é seguro substituir um objeto de um subtipo por um objeto do tipo pai, evitando assim comportamentos estranhos quando o programa é executado. No entanto, foi vários anos antes que Liskov teve a ideia de “subtipagem comportamental”. Como explicado neste trecho de vídeo, Liskov foi convidada a dar uma palestra principal no OOPSLA (Object-Oriented Programming, Systems, Languages & Applications), uma das conferências anuais de pesquisa da ACM, e decidiu que essa seria uma boa oportunidade para aprender sobre o que estava acontecendo nas linguagens orientadas a objetos, em particular o trabalho sendo feito em Smalltalk por Alan Kay e Adele Goldberg. Ao ler os artigos sobre o assunto, ela descobriu que a hierarquia estava sendo usada para dois propósitos diferentes. O primeiro era simplesmente para herança. O segundo era para hierarquia de tipos, onde a ideia era que a superclasse definisse um supertipo, e então uma subclasse estenderia isso para se tornar um subtipo. Os artigos mostraram que havia muita confusão sobre isso, o que levou Liskov a perguntar:
“O que realmente significa ter um supertipo e um subtipo?”
Ela criou uma regra informal, que apresentou em sua palestra no OOPSLA, que simplesmente dizia que um subtipo deveria se comportar como um supertipo, na medida em que fosse possível determinar isso usando os métodos do supertipo.
Ensino e Trabalho Posterior no MIT
Enquanto trabalhava em todas essas ideias fundamentais em ciência da computação e programação orientada a objetos, Liskov também supervisionava as pesquisas dos alunos e ensinava diversos cursos de destaque em ciência da computação do MIT, onde teve também um impacto significativo. Refletindo sobre o curso 6.170, Liskov disse:
“Então, eu desenvolvi esse curso… sobre metodologia de programação, como você faz o design, como usa abstração de dados, como faz um design modular. Estava realmente alinhado com meus interesses, e eu o ensinei por cerca de – deixa eu pensar, ‘77 – provavelmente 20-25 anos, algo assim. Até hoje, ainda recebo pessoas dizendo como foi importante para elas, o impacto que teve na carreira delas, porque realmente ensinou os alunos a pensar sobre design modular e como organizar um grande projeto.”
Originalmente chamado “Engenharia de Software”, o curso 6.170 foi renomeado para Software Studio em 1993 e, em 2013, tornou-se MIT OpenCourseWare. Seu livro, Program Development in Java: Abstraction, Specification, and Object-Oriented Design, MIT Press, 2000, coautorado com John Guttag, ainda está disponível em versão Kindle.
No momento em que recebeu o Prêmio Turing em 2008, Liskov era Professora Ford de Engenharia no MIT, liderando o Grupo de Metodologia de Programação e, no mesmo ano, foi nomeada Professora do Instituto pelo MIT, o título mais prestigioso que pode ser concedido a um membro do corpo docente. Durante sua carreira no MIT, ela também desempenhou funções administrativas. Foi nomeada Vice-Reitora de Equidade de Corpo Docente em 2007 e, de 2001 a 2004, foi Chefe Associada de Ciência da Computação. Durante seus três anos nessa posição, contratou cinco mulheres após um longo período no qual nenhuma mulher foi considerada adequada para ingressar no corpo docente.
Prêmios e Reconhecimento
Além de ser uma Membro da ACM e receptora do Prêmio Turing de 2008, as contribuições de Liskov foram repetidamente reconhecidas. Ela recebeu o Prêmio de Realização da Society of Women Engineers em 1996, a medalha IEEE John von Neumann em 2004 e, em 2008, foi premiada com o ACM SIGPLAN Programming Languages Achievement Award. Ela é Membro da Academia Americana de Artes e Ciências e Membro Fundadora da National Academy of Inventors. Como relatado, ela ganhou o Prêmio Katayanagi em Ciência da Computação em 2011 e foi uma das pessoas induzidas ao National Inventors Hall of Fame em 2012. Em 2018, foi homenageada com o IEEE Computer Society Computer Pioneer Award, concedido a indivíduos excepcionais cujas principais contribuições para os conceitos e desenvolvimento do campo da computação ocorreram pelo menos quinze anos antes. A citação dizia:
“Por ser pioneira na abstração de dados, polimorfismo e suporte para tolerância a falhas e computação distribuída nas linguagens de programação CLU e Argus.”
Com conteúdo do I Programmer.

Luiza Fontes é apaixonada pelas tecnologias cotidianas e pelo impacto delas no nosso dia a dia. Com um olhar curioso, ela descomplica inovações e gadgets, trazendo informações acessíveis para quem deseja entender melhor o mundo digital.