Deixe de lado o Patch Tuesday – é o Dia de Ada Lovelace! Inteligência de dados PlatoBlockchain. Pesquisa vertical. Ai.

Afaste-se da Patch Tuesday – é Ada Lovelace Day!

A segunda terça-feira de cada mês é o dia normal da Microsoft para atualizações de segurança, ainda conhecido por quase todos pelo apelido não oficial de “Patch Tuesday”.

Mas a segunda terça-feira de outubro também é Dia Ada Lovelace, a comemorar Ada, condessa de Lovelace.

Ada foi uma verdadeira pioneira não só da computação, mas também da ciência da computação, e deu seu nome à linguagem de programação Ada.

A linguagem Ada, curiosamente, surgiu de um projeto do Departamento de Defesa dos EUA que visava “desbabelizar” o mundo da codificação governamental, onde cada departamento parecia favorecer uma linguagem diferente, ou um dialeto linguístico diferente, tornando-o mais difícil, mais caro e mais caro. menos confiável para fazê-los trabalhar juntos.

Ada tinha vários recursos sintáticos destinados a melhorar a legibilidade e evitar erros comuns. Ao contrário dos comentários em C, que começam com /* e corra até o próximo */, talvez muitas linhas depois, Ada simplesmente ignora qualquer coisa depois -- em qualquer linha, para que os comentários não possam acidentalmente ir além do pretendido. Em vez de colocar todos os blocos de código multilinha entre colchetes ({...}, também conhecido como suspensórios), Ada possui um terminador exclusivo para cada tipo de bloco multilinha, por ex. end record, end loop e end if. Ada Lovelace, suspeitamos, teria aplaudido a clareza de sua linguagem homônima, mas Ada-a-linguagem nunca realmente pegou, e a sintaxe de colchetes ondulados de C ganhou em grande parte o dia, com Python talvez a única linguagem sem colchetes ondulados em uso muito difundido. Colchetes ondulados são um aspecto vital de C, C++, C#, Go, Java, JavaScript, Perl, Rust e muitas outras linguagens populares.

A era de Ada Lovelace

Você pode se surpreender ao descobrir, dado o quão fortemente o nome de Ada está associado aos primórdios da ciência da computação, que ela viveu na primeira metade do século XIX, muito antes de existir qualquer coisa que atualmente reconhecemos como um computador, ou mesmo uma calculadora. .

(Ada morreu de câncer uterino em 1852, com apenas 36 anos.)

Mas embora os computadores no seu sentido moderno não existissem no século XIX, eles muito próximo fez.

Veja como quase aconteceu.

Charles Babbage, no início de 1800, criou um dispositivo de cálculo mecânico chamado Motor de Diferença que poderia, pelo menos em teoria, resolver automaticamente equações polinomiais no sexto grau, por ex. encontrando valores para X que satisfaçam:

aX6 + bX5 +cX4 +dX3 +eX2 + fX + g = 0

O governo do Reino Unido estava interessado, porque um dispositivo deste tipo poderia ser usado para criar tabelas matemáticas precisas, como raízes quadradas, logaritmos e razões trigonométricas.

E qualquer máquina boa em cálculos trigonométricos também seria útil para computar coisas como tabelas de artilharia que poderiam revolucionar a precisão da artilharia em terra e no mar.

Mas Babbage teve dois problemas.

Em primeiro lugar, ele nunca conseguiu atingir a precisão de engenharia necessária para fazer com que o Motor Diferencial funcionasse correctamente, porque envolvia um número suficiente de engrenagens interligadas para que a folga (imprecisões minúsculas mas cumulativas que conduziam a “desleixo” no mecanismo) o travasse.

Em segundo lugar, ele parece ter perdido o interesse no Motor Diferencial quando percebeu que era um beco sem saída - em termos modernos, você pode pensar nele como uma calculadora de bolso, mas não como um tablet ou laptop.

Então Babbage deu um salto à frente com o projeto de um dispositivo ainda mais complexo que ele apelidou de Motor analítico, que poderia resolver problemas científicos muito mais gerais do que um tipo de equação polinomial.

Talvez sem surpresa, embora lamentavelmente em retrospectiva. o governo não estava muito interessado em financiar o projeto mais avançado de Babbage.

Dado que ele não conseguiu construir o mecanismo necessário para um solucionador de equações muito mais simples, que chance teria um computador gigante, movido a vapor e de uso geral, de produzir algum resultado útil?

O circuito europeu de conferências

Numa curiosa reviravolta de cooperação internacional e multilingue, Babbage viajou para Itália para dar uma palestra promovendo a sua Máquina Analítica.

Na plateia estava um engenheiro militar chamado Capitão Luigi Menabrea, que foi inspirado a cooperar com Babbage para produzir um artigo de 1842 que descrevia a máquina.

Embora fosse italiano, Menabrea publicou seu artigo em francês…

…e foi Ada Lovelace quem traduziu o artigo de Menabrea para o inglês.

A pedido de Babbage, Ada também adicionou uma série de Notas do tradutor, que acabou por ser não apenas duas vezes mais longo que o relatório original de Menabrea, mas também mais perspicaz, explicando várias características importantes do que hoje chamaríamos de computador de uso geral.

Walter Isaacson, em seu livro de excelente leitura Os inovadores, publicado em 2014, descreve como Ada “explorou quatro conceitos que teriam ressonância histórica um século depois, quando o computador finalmente nasceu”:

  • Ada reconheceu que a Máquina Analítica, ao contrário da Máquina Diferencial, era realmente um dispositivo de uso geral, porque não só poderia ser programado para fazer uma coisa, mas também, e com relativa facilidade, ser reprogramado para executar alguma tarefa completamente diferente.

Nas próprias palavras de Ada (esta era uma época em que a literatura científica ainda tinha mais contato com a literatura do que talvez tenha hoje):

A Máquina Diferencial não pode, na realidade (como já foi parcialmente explicado), fazer nada além de acrescentar; e quaisquer outros processos, sem exceção dos de simples subtração, multiplicação e divisão, só podem ser realizados por ele na medida em que seja possível, por meio de arranjos e artifícios matemáticos criteriosos, reduzi-los a uma série de adições. O método das diferenças é, na verdade, um método das adições; e como inclui em seus meios um número maior de resultados atingíveis simplesmente pela adição, do que qualquer outro princípio matemático, foi muito apropriadamente selecionado como base para construir uma Máquina de Somar, de modo a dar aos poderes de tal máquina o intervalo mais amplo possível. A Máquina Analítica, ao contrário, pode somar, subtrair, multiplicar ou dividir com igual facilidade; e realiza cada uma dessas quatro operações de forma direta, sem a ajuda de nenhuma das outras três. Este fato implica tudo; e nem é necessário salientar, por exemplo, que enquanto a Máquina Diferencial pode meramente tabular e é incapaz de se desenvolver, a Máquina Analítica pode tabular ou desenvolver.

  • Ada percebeu que a Máquina Analítica não se limitava à codificação e computação com números. Embora digitais e baseadas na capacidade de realizar cálculos numéricos, essas operações digitais, explicou ela, poderiam, em teoria, representar proposições lógicas (como hoje tomamos como certo em if ... then ... else ... end if declarações), notas musicais e assim por diante.

Como disse Ada:

[A Máquina Analítica] poderia atuar sobre outras coisas além do número, se fossem encontrados objetos cujas relações fundamentais mútuas pudessem ser expressas pelas da ciência abstrata das operações, e que também deveriam ser suscetíveis de adaptações à ação da notação operacional e do mecanismo de operação. o motor. Supondo, por exemplo, que as relações fundamentais dos sons agudos na ciência da harmonia e da composição musical fossem suscetíveis de tais expressões e adaptações, a máquina poderia compor peças musicais elaboradas e científicas de qualquer grau de complexidade ou extensão. A Máquina Analítica é uma personificação da ciência das operações, construída com referência peculiar ao número abstrato como sujeito dessas operações.

  • Ada surgiu com o conceito de reutilizar partes do que hoje chamamos de programas. Nesse sentido, pode-se dizer que ela inventou o conceito de sub-rotina, incluindo as sub-rotinas recursivas (funções que simplificam a solução dividindo um cálculo em uma série de subcálculos semelhantes, e depois se autodenominando).
  • Ada primeiro abordou de forma útil a questão “As máquinas podem pensar?” Esta é uma questão que nos preocupa desde então.

A conexão Frankenstein

O pai de Ada (embora ela nunca o tenha conhecido) era o infame poeta Lord Byron, que passou férias chuvosas na Suíça de forma memorável, escrevendo histórias de terror com seus amigos literários Percy e Mary Shelley.

Os esforços de Byron e Percy Shelley nesta amigável competição de redação estão totalmente esquecidos hoje, mas o romance seminal de Mary Shelley Frankenstein; ou, o Prometheus moderno (publicado em 1818) é popular e respeitado até hoje.

A famosa história de Frankenstein explorou os dilemas morais que cercam o que hoje podemos chamar de inteligência artificial. (Frankenstein, não se esqueça, foi o cientista que conduziu o experimento, não a IA que emergiu do projeto.)

Ada, no entanto, não parecia compartilhar das preocupações distópicas do amigo de seu pai sobre motores analíticos, ou mesmo sobre computadores em geral.

Ela ofereceu a opinião, na seção final de seu Notas do tradutor, que:

A Máquina Analítica não tem qualquer pretensão de originar nada. Ele pode fazer tudo o que sabemos como ordenar que ele execute. Pode seguir a análise; mas não tem poder de antecipar quaisquer relações ou verdades analíticas. Sua função é ajudar-nos a disponibilizar aquilo que já conhecemos. Isto é calculado para efetuar principalmente e principalmente, é claro, através de suas faculdades executivas; mas é provável que exerça uma influência indireta e recíproca sobre a própria ciência de outra maneira. Pois, ao distribuir e combinar as verdades e as fórmulas de análise, de modo que elas possam se tornar mais fácil e rapidamente receptivas às combinações mecânicas do motor, as relações e a natureza de muitos assuntos naquela ciência são necessariamente lançadas sob novas luzes, e mais profundamente investigado. Esta é uma consequência decididamente indireta e um tanto especulativa de tal invenção.

Pouco mais de 100 anos depois, quando Alan Turing revisitou a questão da inteligência artificial no seu próprio artigo Máquinas e Inteligência Computacional, e apresentou seu agora famoso Teste de Turing, ele apelidou isso A objeção de Lady Lovelace.

O que fazer?

Da próxima vez que você estiver escrevendo um código como…

   -- Uma coisa estranha: a função de Ackermann.
   -- Computável, mas não recursivo primitivo!
   -- (Você não pode escrevê-lo com o simples e antigo para
   -- loops, mas você pode ter certeza de que terminará,
   - mesmo que demore muuuuito tempo.)

   confirmação local = função (m,n)
      se m == 0 então retorne n+1 final
      se n == 0 então retorne ack(m-1,1) fim
      retornar ack(m-1,ack(m,n-1))
   fim

… lembre-se de que todas as sub-rotinas recursivas desse tipo começaram na imaginação científica de alguém que sabia como um computador deveria ser e como provavelmente seria, mas ainda assim viveu (e infelizmente morreu muito jovem) 100 anos antes de qualquer dispositivo desse tipo existir. existia para ela hackear de verdade.

Hackear computadores reais é uma coisa, mas hackear propositalmente computadores imaginários é, hoje em dia, algo que só podemos imaginar.

Feliz dia de Ada Lovelace!


Carimbo de hora:

Mais de Segurança nua