Em homenagem ao Dia do Programador, decidimos relaxar um pouco e reler as histórias favoritas de Isaac Asimov. E então uma descoberta nos esperava: acontece que o escritor de ficção científica, há mais de meio século, descreveu muitas das realidades do desenvolvimento moderno com precisão suficiente. Como isso é possível, você pergunta? Vamos descobrir juntos.
Das muitas histórias do famoso escritor de ficção científica, a série sobre a empresa “Yu. S. Robots ”e seus funcionários. Várias histórias falam sobre a vida cotidiana dos testadores Powell e Donovan - uma espécie de testadores de robôs, outros - sobre o principal psicólogo de robôs, Dr. Calvin. A gama de problemas que enfrentam é ampla e familiar para muitos de seus colegas contemporâneos até hoje.
Um desses problemas comuns é uma declaração de trabalho formulada incorretamente em uma tarefa. Azimov abordou esse assunto mais de uma vez, e não é surpreendente - seus robôs são muito mais inteligentes e "mais humanos" do que as máquinas modernas, e as pessoas que trabalham com eles facilmente esquecem que o robô pensa de maneira diferente. Como resultado, uma configuração descuidada do problema pode se transformar em um desastre, como aconteceu na história "Round Dance" .
E tudo começou, como pareceu aos testadores, muito bem. Para colocar em ordem uma base abandonada em Mercúrio, basta um quilo de selênio para fixar as fotocélulas. E haverá eletricidade, e com ela - o resfriamento da base, sem a qual não há como sobreviver em Mercúrio. Selena está lotado na vizinhança, lagos inteiros ... Só o robô enviado para o mais próximo deles está louco e correndo em círculos, pior que isso - carrega delírio bêbado, embora os robôs não bebam. Durante a excursão ao ar livre com risco de fritar, os heróis descobrem que o robô se deparou com condições perigosas para si mesmo no caminho para o lago. Mas existe uma ordem direta, qual é o problema?
- Eu disse ... Espere ... Eu disse: 'Speed, a gente precisa de selênio. Você o encontrará ali e ali. Vá e pegue. " Isso é tudo. O que mais eu deveria ter dito?
- Você não disse que é muito importante, urgente?
- Pelo que? A questão é simples.
Essa "simplicidade" gerava um dilema no programa do robô: a prioridade da tarefa "sem importância" era inferior ao senso de autopreservação (a Terceira Lei, que prescreve evitar danos). Como resultado, o robô ficou obcecado pela escolha de cumprir o pedido ou sobreviver, e os aspirantes a testador tiveram que corrigir seu erro tomando ações arriscadas - recorrendo à Primeira Lei, que tem a maior prioridade. Simplificando, colocando-se em perigo e forçando o robô a adiar outras tarefas e correr para salvar os proprietários. Depois de tal experiência, os testadores abordaram os termos de referência mais cuidadosamente - e tudo funcionou como um relógio:
- Eu o mandei para outro lago de selênio - desta vez com um pedido para obter selênio a todo custo. Ele o trouxe em quarenta e dois minutos e três segundos, - Eu verifiquei a hora.
Depois de Mercúrio, a nova atribuição parece aos heróis não tão perigosa (na estação interplanetária, onde a história "Lógica" se passa , é muito mais legal, apenas "duzentos e setenta e três graus abaixo de zero"), mas eles terão que enfrentar um problema que os desenvolvedores só podem ver em pesadelos. Pelo menos nenhum programa disse a seus criadores que esses seres imperfeitos não poderiam escrevê-lo.
No entanto, o robô de Cutie, um novo desenvolvimento para a manutenção de um conversor de energia, não acreditava no envolvimento das pessoas em sua criação. Bem, sério, como essas criaturas fracas podem criar algo mais perfeito do que elas mesmas? Isso é ilógico. Ele tem uma versão mais plausível:
- O mestre criou primeiro as pessoas - a espécie mais descomplicada, que é a mais fácil de produzir. Gradualmente, ele os substituiu por robôs. Foi um passo em frente. Finalmente, ele me criou para ocupar o lugar das pessoas restantes. De agora em diante eu sirvo ao Senhor!
Os heróis estão tentando convencer o robô, apelando tanto aos livros quanto aos fatos (como eles pensam), provando a existência da Terra. Mesmo montar um novo robô na presença de Cutie não funciona - eles não se convenceram. Talvez isso se deva à falta de postulados sobre sua origem e objetivos costurados no cérebro positrônico. Esse erro arquitetônico é fácil de explicar - os desenvolvedores dificilmente esperavam que o robô duvidasse dos argumentos das pessoas. Mas a falha, que não desempenhou um papel nas gerações anteriores do produto, na nova levou à criação de uma cadeia de postulados diferente no cérebro da máquina:
"Eu não acredito", Powell concordou tristemente. - É um robô raciocinador, caramba! Ele acredita apenas na lógica, e esse é o ponto ...
- O quê?
- O raciocínio estritamente lógico pode provar qualquer coisa - dependendo de quais postulados iniciais são aceitos. Nós os temos e Cutie tem os dela.
No entanto, apesar do robô perceber sua tarefa por meio de outras variáveis, ele cumpre plenamente suas funções. Ele só faz isso não porque as pessoas ordenaram a ele, mas porque essa é a vontade do Senhor.
E as pessoas se encontram em um dilema clássico: vale a pena consertar algo se funcionar? Assim, os heróis, refletindo, chegaram à conclusão - não vale a pena:
– , - . , .
– ?
– ! , ?
– ?
– , …
– !
A terceira história sobre os testadores - "Catching a Rabbit" - mostra bem o que acontece quando um produto não foi testado contra resistência antes de ser lançado. A história descreve os testes de campo do robô mineiro de Dave, com um novo design - um composto (um comandante de robô controla seis outros robôs, como uma mão - dedos). Mas assim que o robô é deixado sem vigilância, ele para de funcionar. Além disso, ele começa a marchar com toda a equipe - uma atividade muito suspeita para um mineiro.
O problema dos testadores é melhor descrito por uma citação da própria história:
– . – ! – . – : . : «. . » , . : . : , «. . » . : , , .
Sob a ameaça de perder um bom emprego, um testador é capaz de muitas coisas - um fato. Os heróis da história repassaram e rejeitaram muitas opções de verificação - desde testes de unidade no local (poderia ser desmontado e testado separadamente, mas há apenas 10 dias e ainda não se sabe se isso dará alguma coisa) a um ambiente de teste especial (que é, mas em uma Terra distante e pesa 10 toneladas). O que sobrou? Simule as condições sob as quais um bug aparece e procure a causa. Essa, infelizmente, é a ação de muitos testadores modernos. É verdade que eles tiveram mais sorte - ao contrário dos heróis da história, os especialistas de hoje pelo menos não precisam explodir a mina deliberadamente com eles. Mas sob os escombros das pedras, a pessoa pensa com muito mais eficiência, e é bom que os desenvolvedores ainda não tenham adotado essa técnica.
Um acidente manipulado ajudou não apenas a causar um bug, mas também a adivinhar sua causa, e mesmo de forma extrema - explodindo um dos "dedos" do robô - para reduzir a carga e eliminar o problema:
- É disso que estou falando. Comandos enviados simultaneamente em seis canais! Em condições normais, um ou mais "dedos" fazem um trabalho simples que não requer monitoramento rigoroso. Bem, como nossos movimentos habituais de caminhada. E em circunstâncias extremas, todos os seis devem ser acionados imediatamente e simultaneamente. E aqui algo desiste. O resto é simples. Qualquer diminuição na iniciativa exigida dele, por exemplo, a aparência de uma pessoa, o leva a si mesmo. Destruí um dos robôs e o Dave só teve que comandar cinco, a iniciativa diminuiu e ele voltou ao normal!
No entanto, não apenas testadores- "testadores" obtêm as tarefas difíceis nas histórias de Azimov. Na história "How the Robot Got Lost", a psicóloga chefe de robôs Susan Calvin tem que procurar não por um defeito, mas por todo o robô. Não, ele não desapareceu sem deixar vestígios - escondeu-se entre outros da mesma espécie e fingiu ser um deles. Apenas de 63 robôs, 62 estão falando a verdade, e um está mentindo, e este é um bug sério.
O motivo da falha é encontrado rapidamente: o cliente fez alterações no programa do robô. E não em algum lugar lá fora, mas em sua parte fundamental - na formulação da Primeira Lei. O novo robô não é mais obrigado a proteger uma pessoa (para que não suba para os raios gama para os cientistas e não se deteriore). Mas, como costuma ser o caso na vida real, essas mudanças inconsistentes, feitas sem o conhecimento do especialista líder, estão repletas de consequências terríveis. Nesse caso, a interferência violou a lógica anteriormente clara das leis e o sistema antes bem lubrificado tornou-se instável. Portanto, a ordem emocional "vá embora e não se mostre para que eu não o veja de novo" dá uma brecha ao robô, ele obedece - e faz de tudo para cumprir o comando.
Temos que desenvolver uma série de testes de aderência à Primeira Lei e montar uma armadilha baseada em outro bug de mudanças no programa do robô - um senso de superioridade que não é característico das máquinas comuns:
– . , -, . , . -10 . , . - , -2 , . , . , . , , , , , -10 , . - , , … .
Os heróis são forçados a procurar por bugs na história "Risco" . Um navio com hiperdrive está sujeito a verificação, que por algum motivo não saltou durante o teste. Para os humanos, esses saltos são perigosos, então a nave foi pilotada por um robô. Agora você deve enviar alguém ao navio para descobrir a causa da falha.
Essa história levantou vários problemas de programação. Em primeiro lugar, o teste - automatizado (neste caso - por um robô) ou manual (cientista). À primeira vista, um robô parece uma opção mais adequada - uma máquina é mais rápida e confiável do que um especialista humano. Mas o robopsicólogo insiste em um teste humano. Mais tarde, ela esclarece sua posição da seguinte forma:
– , , . : . , , . . . , , .
, , . , . , . , , , , ? « » – , . , , .
Em parte, esses princípios ainda são relevantes hoje - embora o teste automatizado seja usado cada vez mais amplamente e tenha muitas vantagens, em algumas situações, o teste manual ainda faz sentido e permite identificar problemas que, devido à sua especificidade, são difíceis de encontrar nas máquinas. Na história, é impossível para o robô preparar um cenário completo para encontrar um bug, uma vez que não há compreensão do que exatamente poderia ter acontecido na nave, e ele simplesmente não notará nenhum possível problema não explicado. Mas uma pessoa pode navegar já no local, com base no que viu e confiando em suas próprias conclusões.
Em segundo lugar, a história novamente levanta a questão dos termos de referência corretos. Foi nele que residia o motivo do bug - o algoritmo de partida do motor do robô foi registrado sem levar em conta suas diferenças de uma pessoa. Como resultado, seguindo um comando formulado incorretamente, ele exagerou - e quebrou o gatilho:
– , . , «. . » . , . ! , , . . : , .
– …
– , , . , . , …
Existem muitas histórias semelhantes, em parte aparentemente desatualizadas, mas de muitas maneiras antecipando os eventos do futuro, tanto em Azimov quanto em outros escritores. É uma pena que ainda não tenhamos robôs tão desenvolvidos, e problemas e prazos estão sempre conosco, o grande escritor de ficção científica notou isso corretamente.