En l'honneur de la Journée des programmeurs, nous avons décidé de nous détendre un peu et de relire les histoires préférées d'Isaac Asimov. Et puis une découverte nous attendait: il s'avère que l'écrivain de science-fiction, il y a plus d'un demi-siècle, décrivait nombre des réalités du développement moderne avec suffisamment de précision. Comment est-ce possible, demandez-vous? Découvrons-le ensemble.
Parmi les nombreuses histoires du célèbre écrivain de science-fiction, la série sur la société «Yu. S. Robots »et ses employés. Plusieurs histoires racontent la vie quotidienne des testeurs Powell et Donovan - une sorte de testeurs de robots, d'autres - du principal psychologue robotique, le Dr Calvin. L'éventail des problèmes auxquels ils sont confrontés est vaste et familier à nombre de leurs collègues contemporains à ce jour.
Un de ces problèmes courants est un énoncé de travail mal formulé dans une tâche. Azimov a abordé ce sujet plus d'une fois, et ce n'est pas surprenant - ses robots sont beaucoup plus intelligents et "plus humains" que les machines modernes, et les gens qui travaillent avec eux oublient facilement que le robot pense différemment. En conséquence, un réglage imprudent du problème peut se transformer en désastre, comme cela s'est produit dans l'histoire "Round Dance" .
Et tout a commencé, comme les testeurs l'ont semblé, assez bien. Pour mettre en ordre une base abandonnée sur Mercure, il suffit d'un kilogramme de sélénium pour réparer les photocellules. Et il y aura de l'électricité, et avec elle - le refroidissement de la base, sans lequel il n'y a aucun moyen de survivre sur Mercure. Selena est pleine dans le quartier, des lacs entiers ... Seul le robot envoyé au plus proche d'entre eux est fou et tourne en rond, pire que ça - il porte le délire ivre, bien que les robots ne boivent pas. Lors de l'excursion à l'extérieur avec risque de friture, les héros découvrent que le robot est tombé sur des conditions dangereuses pour lui-même sur le chemin du lac. Mais il y a un ordre direct, quel est le problème?
- J'ai dit ... Attends ... J'ai dit: 'Vitesse, nous avons besoin de sélénium. Vous le trouverez là et là. Allez le chercher. " C'est tout. Que devrais-je dire d'autre?
- Vous n'avez pas dit que c'est très important, urgent?
- Pourquoi? La question est simple.
Cette «simplicité» a conduit à un dilemme dans le programme du robot: la priorité de la tâche «sans importance» était inférieure au sens de l'auto-préservation (la troisième loi, qui prescrit d'éviter les dommages). En conséquence, le robot est devenu obsédé par le choix, pour exécuter la commande ou pour survivre, et les testeurs potentiels ont dû corriger leur erreur en prenant des mesures risquées - en se tournant vers la première loi, qui a la plus haute priorité. En termes simples, se mettre en danger et obliger le robot à reporter d'autres tâches et à se précipiter pour sauver les propriétaires. Après une telle expérience, les testeurs ont abordé les termes de référence de manière plus réfléchie - et tout s'est déroulé comme sur des roulettes:
- Je l'ai envoyé dans un autre lac de sélénium - cette fois avec l'ordre d'obtenir du sélénium à tout prix. Il l'a apporté en quarante-deux minutes et trois secondes - je l'ai chronométré.
Après Mercure, la nouvelle mission ne semble pas si dangereuse aux héros (à la station interplanétaire, où se déroule l'histoire de "Logic" , c'est beaucoup plus cool, seulement "deux cent soixante-treize degrés sous zéro"), mais ils devront faire face à un problème que les développeurs ne pourront voir que dans cauchemars. Au moins aucun programme n'a encore dit à ses créateurs que de tels êtres imparfaits ne pouvaient pas l'écrire.
Cependant, le robot Cutie, un nouveau développement pour l'entretien d'un convertisseur d'énergie, ne croyait pas à l'implication des personnes dans sa création. Eh bien, vraiment, comment ces créatures faibles peuvent-elles créer quelque chose de plus parfait qu'elles-mêmes? C'est illogique. Il a une version plus plausible:
- Le maître a d'abord créé des personnes - l'espèce la plus simple, la plus facile à produire. Peu à peu, il les a remplacés par des robots. C'était un pas en avant. Finalement, il m'a créé pour prendre la place des autres. Désormais, je sers le Seigneur!
Les héros tentent de convaincre le robot, en faisant appel à la fois aux livres et aux faits (comme ils le pensent), prouvant l'existence de la Terre. Même assembler un nouveau robot en présence de Cutie ne donne pas de résultat - ils n'étaient pas convaincus. Cela est peut-être dû au manque de postulats sur son origine et ses objectifs cousus dans le cerveau positronique du robot. Cette erreur architecturale est facile à expliquer - les développeurs ne s'attendaient guère à ce que le robot doute des arguments des gens. Mais un défaut qui n'a pas joué de rôle dans les générations précédentes du produit, dans le nouveau a conduit à la création d'une chaîne de postulats différente dans le cerveau de la machine:
"Je ne le crois pas", approuva tristement Powell. - C'est un robot de raisonnement, bon sang! Il ne croit qu'à la logique, et c'est tout l'intérêt ...
- Quoi?
- Un raisonnement strictement logique peut tout prouver - selon les postulats initiaux acceptés. Nous les avons, et Cutie a le sien.
Cependant, malgré le fait que le robot perçoit sa tâche à travers d'autres variables, il remplit pleinement ses fonctions. Il ne le fait pas simplement parce que les gens le lui ont ordonné, mais parce que telle est la volonté du Seigneur.
Et les gens sont confrontés à un dilemme classique: vaut-il la peine de réparer quelque chose si cela fonctionne? Ainsi, les héros, après réflexion, sont arrivés à la conclusion - cela n'en valait pas la peine:
– , - . , .
– ?
– ! , ?
– ?
– , …
– !
La troisième histoire sur les testeurs - «Attraper un lapin» - montre bien ce qui se passe lorsqu'un produit n'a pas été soumis à un test de résistance avant sa sortie. L'histoire décrit les essais sur le terrain du robot mineur de Dave, avec une nouvelle conception - une conception composite (un commandant de robot contrôle six autres robots, comme une main - des doigts). Mais dès que le robot est laissé sans surveillance, il cesse de fonctionner. De plus, il commence à marcher avec toute l'équipe - une activité très suspecte pour un mineur.
Le problème des testeurs est mieux décrit par une citation de l'histoire elle-même:
– . – ! – . – : . : «. . » , . : . : , «. . » . : , , .
Sous la menace de perdre un bon travail, un testeur est capable de beaucoup de choses - un fait. Les héros de l'histoire sont allés plus loin et ont rejeté de nombreuses options de vérification - du test unitaire sur site (il pourrait être démonté et testé séparément, mais il n'y a que 10 jours et on ne sait pas encore si cela donnera quelque chose) à un environnement de test spécial (qui est, mais sur une Terre lointaine et pèse 10 tonnes). Ce qui reste? Simulez les conditions dans lesquelles un bogue apparaît et cherchez, cherchez la raison. C'est hélas la part de nombreux testeurs modernes. Certes, ils ont eu plus de chance - contrairement aux héros de l'histoire, les spécialistes d'aujourd'hui n'ont au moins pas à faire sauter délibérément la mine avec eux. Mais sous les décombres de pierres, une personne pense beaucoup plus efficacement, et c'est bien que les développeurs n'aient pas encore adopté cette technique.
Un accident truqué a permis non seulement de provoquer le bug, mais aussi d'en deviner la cause et même de manière extrême - en faisant exploser l'un des «doigts» du robot - de réduire la charge et d'éliminer le problème:
- C'est ce dont je parle. Commandes émises simultanément sur six canaux! Dans des conditions normales, un ou plusieurs «doigts» effectuent un travail simple qui ne nécessite pas de surveillance étroite. Eh bien, tout comme nos mouvements de marche habituels. Et dans des circonstances extrêmes, les six doivent être mis en action immédiatement et simultanément. Et ici quelque chose abandonne. Le reste est simple. Toute diminution de l'initiative qui lui est demandée, par exemple, l'apparence d'une personne, le ramène à lui-même. J'ai détruit l'un des robots, et Dave n'a dû en commander que cinq, l'initiative a diminué et il est devenu normal!
Cependant, non seulement les testeurs - les "testeurs" obtiennent les tâches difficiles des histoires d'Azimov. Dans l'histoire "Comment le robot s'est perdu", la psychologue en chef des robots Susan Calvin doit rechercher non pas un dysfonctionnement, mais l'ensemble du robot. Non, il n'a pas disparu sans laisser de trace - il s'est caché parmi d'autres du même genre et a prétendu être l'un d'entre eux. Seulement sur 63 robots, 62 disent la vérité et un ment, et c'est un bug sérieux.
La raison de l'échec est rapidement trouvée: le client a modifié le programme du robot. Et pas quelque part là-bas, mais dans sa partie clé - dans la formulation de la Première Loi. Le nouveau robot n'est plus obligé de protéger une personne (pour ne pas grimper après les scientifiques dans les rayons gamma et les gâter). Mais, comme c'est souvent le cas dans la vraie vie, de tels changements incohérents, effectués à l'insu de l'expert principal, ont des conséquences désastreuses. Dans ce cas, l'interférence a violé la logique auparavant claire des lois, et le système une fois débogué est devenu instable. Ainsi, l'ordre émotionnel "partez et ne vous montrez pas pour ne plus vous revoir" donne au robot une faille, il obéit - et fait tout pour remplir la commande.
Nous devons développer une série de tests d'adhésion à la première loi et mettre en place un piège basé sur un autre bug de changements dans le programme du robot - un sentiment de supériorité qui n'est pas caractéristique des machines ordinaires:
– . , -, . , . -10 . , . - , -2 , . , . , . , , , , , -10 , . - , , … .
Les héros sont obligés de rechercher des bugs dans l'histoire "Risque" . Un vaisseau avec un hyperdrive est soumis à une vérification qui, pour une raison quelconque, n'a pas sauté pendant les tests. Pour les humains, de tels sauts sont dangereux, le vaisseau était donc piloté par un robot. Vous devez maintenant envoyer quelqu'un sur le navire pour découvrir la cause de l'échec.
Cette histoire a soulevé plusieurs problèmes de programmation. Premièrement, les tests - automatisés (dans ce cas - par un robot) ou manuels (scientifique). À première vue, un robot semble être une option plus appropriée - une machine est plus rapide et plus fiable qu'un spécialiste humain. Mais le robopsychologue insiste sur un contrôle humain. Elle clarifie plus tard sa position comme suit:
– , , . : . , , . . . , , .
, , . , . , . , , , , ? « » – , . , , .
En partie, ces principes sont toujours d'actualité - bien que les tests automatisés soient de plus en plus utilisés et présentent de nombreux avantages, dans certaines situations, les tests manuels ont encore du sens et permettent d'identifier les problèmes qui, en raison de leur spécificité, sont difficiles à trouver à l'aide de machines. Dans l'histoire, il est impossible pour le robot de préparer un scénario à part entière pour trouver un bogue, car il n'y a aucune compréhension de ce qui aurait pu exactement se passer sur le navire, et il ne remarquera tout simplement aucun problème éventuel. Mais une personne peut déjà s'orienter sur place, en fonction de ce qu'elle a vu et en se fondant sur ses propres conclusions.
Deuxièmement, l'histoire soulève à nouveau la question du mandat correct. C'est en cela que réside la raison du bogue - l'algorithme de démarrage du moteur du robot a été enregistré sans prendre en compte ses différences par rapport à une personne. En conséquence, à la suite d'une commande mal formulée, il l'a surfaite - et a cassé la gâchette:
– , . , «. . » . , . ! , , . . : , .
– …
– , , . , . , …
Il existe de nombreuses histoires similaires, en partie apparemment dépassées, mais anticipant à bien des égards les événements du futur, à la fois chez Azimov et d'autres écrivains. C'est dommage que nous n'ayons toujours pas de robots aussi développés, et les problèmes et les délais sont toujours avec nous, le grand écrivain de science-fiction l'a bien noté.