{
  "schemaVersion": 2,
  "hash": "a2b72cb20be55a84199f7f81dc832ca092220d007cc784c81c5f9ddd1629a21c",
  "purpose": "html-region",
  "page": "/en/pocitac-nahodnymi-vstupy/",
  "sourceLang": "CS",
  "targetLang": "EN-US",
  "glossaryRevision": "none",
  "glossaryId": "08f85824-1a74-45c3-94c8-6d5965be47b9",
  "deepl": {
    "tagHandling": "html",
    "tagHandlingVersion": "v2",
    "splitSentences": "nonewlines",
    "preserveFormatting": true,
    "minRequestIntervalMs": 1200,
    "retryAttempts": 8,
    "retryBaseDelayMs": 2000,
    "retryMaxDelayMs": 60000
  },
  "selectorPolicyRevision": 2,
  "manual": false,
  "locked": false,
  "edited": false,
  "editedAt": null,
  "editedBy": null,
  "sourceFragment": " <div class=\"post-header\">  <h1 class=\"post-title\">Počítač s náhodnými vstupy</h1> <p class=\"post-meta\"> September 2020 </p> </div> <div class=\"post-body\"> <p>Pro účely této úvahy jsem v programovacím jazyce Python vytvořil program, který mému počítači zadává náhodné vstupy. Může tak například hýbat kurzorem myši, klikat, mačkat jakákoliv tlačítka na klávesnici a to všechno naprosto náhodně. Říkejme mu proto OPICE-1 (podle teorie o nekonečné opici). Zde je zdrojový kód, není však nezbytné ho chápat:</p>\n<span data-i18n-protected=\"p0\" translate=\"no\" class=\"notranslate\"></span>\n<p>Pro ilustraci jsem program OPICE-1 nahrál při chodu a vytvořil tak první video níže. Vzhledem k tomu, že byla spuštěn asi hodinu, první video jsem mnohonásobně zrychlil a vytvořil tak druhé video, aby divák nemusel sledovat celé první video a přesto viděl, jaké úkony program OPICE-1 asi vykonal.</p>\n<span data-i18n-protected=\"p2\" translate=\"no\" class=\"notranslate\"></span>\n<span data-i18n-protected=\"p4\" translate=\"no\" class=\"notranslate\"></span>\n<p>Jak si lze povšimnout na videích, program OPICE-1 v určité chvíli začne přepisovat svůj vlastní kód. Celé video končí zaseknutím a následným pádem operačního systému. Když jsem s ním dále experimentoval, program OPICE-1 udělal několik dalších pozoruhodných věcí. Například otevřel vyhledávač Bing a napsal do něj “9/11”, pořídil snímek obrazovky, restartoval počítač, nainstaloval karetní hru nebo něco abstraktního “nakreslil” (viz obrázek níže).</p>\n<figure class=\"figure figure--full figure--center \"> <a href=\"/images/pocitac-nahodnymi-vstupy-obr-1.png\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/images/pocitac-nahodnymi-vstupy-obr-1.png\" alt=\"abstraktní kresba v MS Paint, autor: OPICE-1\"> </a>  </figure>\n<p>Lze tedy říci, že pokud by program OPICE-1 byl spuštěný určitý neomezený čas, může teoreticky zvládnout VŠE (slovem VŠE myslím provést všechny operace, které počítač umožnuje, a proto ho píši velkým tiskacím písmem), co by zvládl uživatele stejného počítače? Mohl by přece teoreticky vytvořit složku na ploše, otevřít webový prohlížeč a něco vyhledat, otevřít Word a napsat tuto úvahu, napsat jakoukoli knihu, vytvořit elektronickou hudbu, napsat program v Pythonu, napsat sám sebe a tak dále. Mohl by také vypnout sám sebe, vypnout celý počítač nebo poškodit svůj vlastní kód. A právě zde je nejspíš jasné, že není možné, aby program OPICE-1 po spuštění dokázal VŠE – musel by totiž udělat i krok, který by ho zastavil. Dobrá, a co tedy, kdyby udělal VŠE bez kroku, který způsobí jeho zastavení a jako poslední provedl onen krok? Je to sice naprosto nepravděpodobné, ale ne nemožné. Je tu bohužel stále jeden háček – kroků, které vedou k jeho zastavení je mnoho. Kdyby provedl jeden z nich, nemohl by už provést žádný následující, a to je spor s původním předpokladem, že program OPICE-1 zvládne VŠE. Tento program tedy nezvládne VŠE.</p>\n<p>Napadá mě ještě jedno řešení. Program OPICE-1 nedokáže VŠE, protože je podsystémem operačního systému. Když se operační systém vypne vlivem programu, přestane fungovat i samotný program. Zde je menší diagram, který popisuje vztah operačního systému a programu OPICE-1. Šipky znamenají “působí na”.</p>\n<figure class=\"figure figure--one-third figure--center \"> <a href=\"/images/pocitac-nahodnymi-vstupy-obr-2.png\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/images/pocitac-nahodnymi-vstupy-obr-2.png\" alt=\"PROGRAM <-> OPERAČNÍ SYSTÉM\"> </a>  </figure>\n<p>Problém je tedy v tom, že operační systém působí na program. Bylo by tedy možné tuto smyčku “roztrhnout” a vytvořit program, který bude na operačním systému zcela nezávislý? Program, který působí na operační systém, ale zároveň na něj samotný operační systém působit nemůže? Program, jehož diagram vypadá asi nějak takhle?</p>\n<figure class=\"figure figure--one-third figure--center \"> <a href=\"/images/pocitac-nahodnymi-vstupy-obr-3.png\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/images/pocitac-nahodnymi-vstupy-obr-3.png\" alt=\"PROGRAM -> OPERAČNÍ SYSTÉM\"> </a>  </figure>\n<p>Jinými slovy – existuje podobný program, který zvládne VŠE, ale sám sebe zastavit nezvládne (respektive to ani není z principu jeho konstrukce možné)? Takový program nazveme OPICE-2. V následujících krocích se pokusím vysvětlit způsob, který je sice trochu absurdní a rozhodně by šel vymyslet elegantněji, nicméně pro nastínění mé myšlenky je asi nejvhodnější. Pokusil jsem se udělat vizualizaci toho, jak by asi mohl vypadat takový program nezávislý na operačním systému.</p>\n<figure class=\"figure figure--full figure--center \"> <a href=\"/images/pocitac-nahodnymi-vstupy-obr-4.jpg\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/images/pocitac-nahodnymi-vstupy-obr-4.jpg\" alt=\"vizualizace OPICE-2\"> </a>  </figure>\n<p>Spodní patro tohoto zařízení slouží k mechanickému mačkání kláves na klávesnici. Horní patro zase k mechanickému pohybu myší a klikání. To vše je připojeno k nějakému jednodušímu počítači (např. Arduinu, Raspberry Pi atd.), které lze spatřit v prostředním patře. Právě v něm je nahraný náš program OPICE-2. Je důležité zmínit, že k notebooku je připojena pouze myš a nic jiného. Jednodušší počítač tedy nesmí být žádným způsobem propojen s notebookem a jeho komunikace tak musí zůstat čistě jednosměrná (jednodušší počítač působí na notebook, ne naopak). Také by neměl být připojen k internetu jednodušší počítač, ve kterém je uložen náš kód programu OPICE-2, jelikož internet je pro tuto úvahu jedna velká spleť bludišť a pokud se do nich naše zařízení vydá, nikdo nedokáže moc dobře odhadnout jeho důsledky. Tak například by se mohl pomocí internetu a notebooku náš jednoduššíí program nějak připojit sám na sebe a vypnout se.</p>\n<p>Toto zařízení vypadá, že již nemůže působit samo na sebe a tím se vypnout. Je tomu ale skutečně tak? Může nastat situace, ve které by zařízení samo sebe vypnulo? Jedna taková situace mě napadá: Pomocí internetu zařízení nahlásí nějaké příslušné službě bombu v místě, kde se právě zařízení nachází a tak přijede tým pyrotechniků a zařízení zneškodní. Tato situace je samozřejmě hodně nepravděpodobná, ale opět, ne nemožná.</p>\n<p>Nestačilo by tedy jen notebook odpojit od internetu? Rozhodně by to zabránilo výše uvedené situaci, nicméně by to stejně nepomohlo. Napadají mě další situace, při kterých by zařízení mohlo zprostředkovaně působit samo na sebe. Zde je uvedena taková možná situace: Kolem notebooku projde nějaký člověk, který o tomto zařízení nic neví. Zrovna, když se na zařízení bude dívat, na obrazovce se objeví nápis “VYPNI MĚ”. Člověka by tento nápis (nebo jiný, daleko údernější nápis) mohl přesvědřit a zařízení tak skutečně vypnout.</p>\n<p>Dobrá, a co prostě jen zařídit, aby zařízení nebylo schopno žádného výstupu (žádný monitor, žádné reproduktory atd.)? Tím by zařízení nemohlo ovlivnovat vnější svět, který by pak nemohl ovlivnit ono zařízení a způsobit jeho vypnutí. To zní sice rozumně, ovšem není to moc reálné. Zařízení by mohlo stále komunikovat různými zůpsoby, například zapínáním a vypínáním podsvícení klávesnice, rozdílem hluku při zapnutém a vypnutém stavu notebooku nebo dokonce rozdílem teploty procesoru. Nemyslím si, že je možné vytvořit zařízení, které je součástí tohoto světa a zároveň s ním nějak neinteraguje.</p>\n<p>Na druhou stranu by se dalo argumentovat, že uživatel počítače by se také mohl sám zničit jen pouhým mačkáním kláves a klikání myší. Mohl by si například pomocí dark webu objednat vraždu jeho samotného a tak dále…</p>\n<p>Zakončím tedy tuto úvahu tvrzením, že pokud by program jakkoli interagoval s vnějším světem, mohl by se tím nakonec sám zastavit a to i přesto, že program teoreticky dokáže vše, co by dokázal uživatel.</p> </div> ",
  "translatedFragment": " <div class=\"post-header\">  <h1 class=\"post-title\">Computer with Random Inputs</h1> <p class=\"post-meta\"> September 2020 </p> </div> <div class=\"post-body\"> <p>For the purposes of this discussion, I created a program in Python that provides my computer with random inputs. It can, for example, move the mouse cursor, click, and press any keys on the keyboard—all completely at random. Let’s call it OPICE-1 (after the infinite monkey theory). Here is the source code, though it’s not necessary to understand it:</p>\n<span data-i18n-protected=\"p0\" translate=\"no\" class=\"notranslate\"></span>\n<p>To illustrate, I recorded OPICE-1 while it was running, creating the first video below. Since it ran for about an hour, I sped up the first video many times over to create the second video, so that viewers don’t have to watch the entire first video but can still see what kinds of actions the OPICE-1 program likely performed.</p>\n<span data-i18n-protected=\"p2\" translate=\"no\" class=\"notranslate\"></span>\n<span data-i18n-protected=\"p4\" translate=\"no\" class=\"notranslate\"></span>\n<p>As you can see in the videos, at a certain point, the OPICE-1 program begins to rewrite its own code. The entire video ends with the operating system freezing and then crashing. As I continued to experiment with it, the OPICE-1 program did several other remarkable things. For example, it opened the Bing search engine and typed “9/11” into it, took a screenshot, restarted the computer, installed a card game, or “drew” something abstract (see the image below).</p>\n<figure class=\"figure figure--full figure--center \"> <a href=\"/images/pocitac-nahodnymi-vstupy-obr-1.png\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/images/pocitac-nahodnymi-vstupy-obr-1.png\" alt=\"abstraktní kresba v MS Paint, autor: OPICE-1\"> </a>  </figure>\n<p>So it can be said that if the OPICE-1 program were to run for an unlimited amount of time, it could theoretically do EVERYTHING (by “EVERYTHING” I mean perform all operations that a computer allows, which is why I’m writing it in all caps), what could a user of the same computer do? After all, it could theoretically create a folder on the desktop, open a web browser and search for something, open Word and write this essay, write any book, create electronic music, write a program in Python, write itself, and so on. It could also shut itself down, shut down the entire computer, or corrupt its own code. And this is precisely where it becomes clear that it’s impossible for the OPICE-1 program to do EVERYTHING once it’s running—after all, it would also have to take the step that would stop it. All right, so what if it did EVERYTHING without taking the step that would cause it to stop, and then performed that step last? While this is highly unlikely, it’s not impossible. Unfortunately, there’s still one catch—there are many steps that lead to its termination. If it performed one of them, it wouldn’t be able to perform any subsequent steps, and that contradicts the original assumption that the OPICE-1 program can do EVERYTHING. Therefore, this program cannot do EVERYTHING.</p>\n<p>One more solution comes to mind. The OPICE-1 program cannot do EVERYTHING because it is a subsystem of the operating system. When the operating system shuts down due to the program, the program itself also stops working. Here is a simple diagram illustrating the relationship between the operating system and the OPICE-1 program. The arrows indicate “affects.”</p>\n<figure class=\"figure figure--one-third figure--center \"> <a href=\"/images/pocitac-nahodnymi-vstupy-obr-2.png\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/images/pocitac-nahodnymi-vstupy-obr-2.png\" alt=\"PROGRAM <-> OPERAČNÍ SYSTÉM\"> </a>  </figure>\n<p>The problem, then, is that the operating system affects the program. Would it therefore be possible to “break” this loop and create a program that is completely independent of the operating system? A program that affects the operating system, but at the same time cannot be affected by the operating system itself? A program whose diagram looks something like this?</p>\n<figure class=\"figure figure--one-third figure--center \"> <a href=\"/images/pocitac-nahodnymi-vstupy-obr-3.png\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/images/pocitac-nahodnymi-vstupy-obr-3.png\" alt=\"PROGRAM -> OPERAČNÍ SYSTÉM\"> </a>  </figure>\n<p>In other words—is there a similar program that can handle EVERYTHING, but cannot stop itself (or rather, this isn’t even possible due to the very nature of its design)? We’ll call such a program OPICE-2. In the following steps, I’ll try to explain a method that, while a bit absurd and certainly one that could be devised more elegantly, is probably the most suitable for illustrating my idea. I’ve tried to visualize what such an operating-system-independent program might look like.</p>\n<figure class=\"figure figure--full figure--center \"> <a href=\"/images/pocitac-nahodnymi-vstupy-obr-4.jpg\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/images/pocitac-nahodnymi-vstupy-obr-4.jpg\" alt=\"vizualizace OPICE-2\"> </a>  </figure>\n<p>The lower section of this device is used to mechanically press the keys on the keyboard. The upper level, in turn, is used for mechanically moving the mouse and clicking. All of this is connected to a simpler computer (e.g., an Arduino, Raspberry Pi, etc.), which can be seen on the middle level. Our OPICE-2 program is running on this computer. It is important to note that only the mouse is connected to the laptop—nothing else. Therefore, the simpler computer must not be connected to the laptop in any way, and communication between them must remain strictly one-way (the simpler computer controls the laptop, not the other way around). Furthermore, the simpler computer on which our OPICE-2 program code is stored should not be connected to the internet, since the internet is, for the purposes of this discussion, one big maze of tangled paths, and if our device were to venture into them, no one could accurately predict the consequences. For example, using the internet and the laptop, our simpler program could somehow connect to itself and shut down.</p>\n<p>This device appears to be unable to act on itself and thus shut itself down. But is that really the case? Could a situation arise in which the device would shut itself down? One such situation comes to mind: Using the internet, the device reports a bomb to the appropriate authorities at its current location, so a bomb squad arrives and defuses it. This situation is, of course, highly unlikely, but again, not impossible.</p>\n<p>Wouldn’t it be enough, then, to simply disconnect the laptop from the internet? That would certainly prevent the situation described above, but it wouldn’t help in this case either. I can think of other situations in which the device could indirectly affect itself. Here’s one possible scenario: A person who knows nothing about the device walks past the laptop. Just as they’re looking at the device, the message “TURN ME OFF” appears on the screen. This message (or another, far more forceful one) could convince the person to actually turn the device off.</p>\n<p>All right, but what about simply ensuring that the device is incapable of any output (no monitor, no speakers, etc.)? That way, the device could not influence the outside world, which in turn could not influence the device and cause it to shut down. That sounds reasonable, but it’s not very realistic. The device could still communicate in various ways, such as by turning the keyboard backlight on and off, through differences in noise when the laptop is on versus off, or even through differences in processor temperature. I don’t think it’s possible to create a device that is part of this world and yet doesn’t interact with it in some way.</p>\n<p>On the other hand, one could argue that a computer user could also destroy themselves simply by pressing keys and clicking the mouse. For example, they could use the dark web to order their own murder, and so on…</p>\n<p>I’ll conclude this reflection by stating that if a program were to interact with the outside world in any way, it could ultimately shut itself down—even though, in theory, the program is capable of doing everything a user could do.</p> </div> ",
  "createdAt": "2026-08-04T13:18:16.964Z"
}
