{"id":478016,"date":"2026-04-29T21:22:54","date_gmt":"2026-04-29T21:22:54","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=478016"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=478016","title":{"rendered":"\u0427\u0430\u0441\u0442\u044c I. \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Brainfuck"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong>\u041d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043d\u0430\u0443\u043a \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0443\u0447\u0451\u0431\u044b<\/strong><\/p>\n<p>(\u0421\u0435\u0440\u0438\u044f: \u0421\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u0443\u0447\u0438\u0442\u0435\u043b\u044e \u0432 \u043f\u043e\u043c\u043e\u0449\u044c)<\/p>\n<p><strong>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f<br \/> \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<br \/> \u0427\u0430\u0441\u0442\u044c I. \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Brainfuck<br \/> \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b<br \/> \u0420\u0430\u0437\u0434\u0435\u043b: \u0418\u0441\u0442\u043e\u0440\u0438\u0438 \u0438 \u0438\u0434\u0435\u0438 VM<\/p>\n<ol>\n<li>\n<p>\u0413\u0434\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f Microsoft \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0447\u0438\u043f\u0442\u044e\u043d \u043c\u0443\u0437\u044b\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u0411\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u0432\u0430\u044f VM \u0432 ZX Spectrum<\/p>\n<\/li>\n<li>\n<p>Forth: DSL, VM \u0438 RTOS \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u043e\u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>Mame, Cumm \u0420\u0430\u0437\u0434\u0435\u043b: \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u041c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430<\/p>\n<\/li>\n<li>\n<p>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430-\u043d\u0430\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0420\u0430\u0437\u0434\u0435\u043b: \u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u00ab\u041b\u0438\u043c\u043e\u043d\u0430\u0434-\u043c\u0442\u00bb<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043d\u0430 \u0421<\/p>\n<\/li>\n<li>\n<p>\u0411\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u0433\u0440\u0430\u0444\u0443 \u043a\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043d\u0430 \u0421<\/p>\n<\/li>\n<li>\n<p>\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430 \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u041c\u0422<\/p>\n<\/li>\n<li>\n<p>VM \u0423\u041c\u0422 \u043d\u0430 \u0421<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u044f\u0446\u0438\u044f: FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0430 -&gt; \u0421<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440: FSM-\u0433\u0440\u0430\u0444 -&gt; \u0431\u0430\u0439\u0442\u043a\u043e\u0434<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f: \u043c\u043e\u043d\u0435\u0442\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0438 \u0420\u0430\u0437\u0434\u0435\u043b: \u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 \u0438 VM Brainfuck<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u044b \u0423\u041c\u0422<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435: \u043a\u043e\u0434 BF -&gt; \u0442\u0430\u0431\u043b\u0438\u0446\u0430 FSM (\u0430\u043d\u0430\u043b\u0438\u0437)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435: \u043a\u043e\u0434 BF -&gt; \u0442\u0430\u0431\u043b\u0438\u0446\u0430 FSM (\u043f\u0440\u0430\u0432\u0438\u043b\u0430)<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 BF \u043d\u0430 \u0421<\/p>\n<\/li>\n<li>\n<p>\u0421\u0432\u044f\u0437\u044c: CPU, \u0441\u0442\u0435\u043a\u0438, \u044f\u0437\u044b\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430: \u0437\u0430\u043c\u0435\u043d\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u0446\u0438\u043a\u043b\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a (Recursive descent)<\/p>\n<\/li>\n<li>\n<p>\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441 \u044f\u0432\u043d\u044b\u043c \u0441\u0442\u0435\u043a\u043e\u043c (Explicit stack)<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 BF \u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<p><strong>\u041c\u041e\u0422\u0418\u0412\u0410\u0426\u0418\u042f<\/strong><\/p>\n<p>\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588<br \/> \u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2593\u2592\u2592\u2593\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2591\u2588<br \/> \u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2592\u2592\u2593\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2584\u2584\u2592\u2593\u2592\u2592\u2591\u2588\u2591\u2584\u2584<br \/> \u2592\u2592\u2584\u2580\u2580\u2584\u2584\u2588\u2591\u2592\u2592\u2592\u2592\u2592\u2592\u2593\u2592\u2592\u2592\u2592\u2588\u2591\u2591\u2580\u2584\u2584\u2584\u2584\u2584\u2580\u2591\u2591\u2588<br \/> \u2592\u2592\u2588\u2591\u2591\u2591\u2591\u2588\u2591\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2592\u2592\u2592\u2580\u2580\u2584\u2584\u2588\u2591\u2592\u2592\u2592\u2592\u2593\u2592\u2592\u2592\u2593\u2592\u2588\u2591\u2591\u2591\u2588\u2592\u2591\u2591\u2591\u2591\u2588\u2592\u2591\u2591\u2588<br \/> \u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2592\u2593\u2592\u2592\u2592\u2592\u2593\u2592\u2592\u2592\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2592\u2592\u2592\u2592\u2592\u2584\u2584\u2588\u2591\u2592\u2592\u2592\u2593\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2591\u2588\u2584\u2584\u2588\u2584\u2584\u2588\u2591\u2591\u2588<br \/> \u2592\u2592\u2592\u2592\u2588\u2591\u2591\u2591\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588\u2591\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588<br \/> \u2592\u2592\u2592\u2592\u2588\u2584\u2584\u2588\u2591\u2591\u2588\u2584\u2584\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2584\u2584\u2588\u2591\u2591\u2588\u2584\u2584\u2588<\/p>\n<p>\u041a\u0443\u0440\u0441 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u0430 \u043a\u0440\u0430\u0442\u043a\u043e \u0438 \u044f\u0441\u043d\u043e \u0434\u0430\u0441\u0442 \u043d\u043e\u0432\u0438\u0447\u043a\u0443 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u0438.<br \/> \u0423 \u043a\u0443\u0440\u0441\u0430 3 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438: \u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u042f\u0437\u044b\u043a\u0438 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b, \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u044b \u0438 \u043b\u043e\u0433\u0438\u043a\u0430. \u041f\u0435\u0440\u0432\u0430\u044f \u0438 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u0438 \u2013 \u0446\u0435\u043b\u043e\u0435, \u0431\u0435\u0437 \u043d\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. \u0422\u0440\u0435\u0442\u044c\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0442\u0435\u043c, \u043a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043b\u043e\u0433\u0438\u043a\u0438 \u043b\u0438\u0431\u043e \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0432\u043b\u0430\u0434\u0435\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u043c. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<br \/> \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u0430\u043d\u044b \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 \u044f\u0437\u044b\u043a\u0430 \u042199. \u0413\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438: <a href=\"https:\/\/github.com\/myfoundation\/EvolutionaryEngineering\/book_it_begins\/\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/myfoundation\/EvolutionaryEngineering\/book_it_begins\/<\/a><\/p>\n<p>\u0412 \u043f\u0430\u0431\u043b\u0438\u043a \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c\u0435 \u00ab\u041d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb, \u044f \u0432\u0435\u0434\u0443 \u0448\u043a\u043e\u043b\u0443 \u0438 \u0434\u0430\u044e \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u041d\u043e\u0432\u0438\u0447\u043a\u0430\u043c, \u0443\u0447\u0430\u0449\u0438\u043c\u0441\u044f, \u0438 \u043f\u0440\u043e\u0444\u0438 \u2013 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/t.me\/abnormal_programming\" rel=\"noopener noreferrer nofollow\">https:\/\/t.me\/abnormal_programming<\/a> .<\/p>\n<p><strong>\u0412\u0421\u0422\u0423\u041f\u041b\u0415\u041d\u0418\u0415<\/strong><\/p>\n<p>\u042f \u043f\u0440\u0430\u043a\u0442\u0438\u043a \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u043e\u0432\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f [1]. \u0412 \u043d\u0451\u043c \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0435\u0448\u0430\u044e\u0442 \u0442\u0440\u043e\u0439\u043a\u043e\u0439: \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 VM, \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DSL \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043d\u0430 \u043d\u0451\u043c.<br \/> \u0412 \u044d\u0442\u043e\u043c \u043a\u0443\u0440\u0441\u0435 \u0443\u0434\u0430\u0447\u043d\u044b\u043c\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0421 \u0442\u0435\u043e\u0440\u0438\u0435\u0439, \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438.<br \/> \u0412\u0441\u044f \u043d\u0430\u0448\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 VM, DSL, EBNF, \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u0438 \u0433\u0440\u0430\u0444\u043e\u0432. \u041c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0442 \u0432\u043c\u0435\u0441\u0442\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0438 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<br \/> \u0412 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u043c \u0434\u0435\u043b\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043d\u0430\u0443\u043a\u0435, \u0440\u0438\u0442\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a \u0434\u0435\u0442\u0430\u043b\u044f\u043c \u2013 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u043c. \u0421\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u0440\u0435\u0435\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u0439 \u0432\u0430\u0436\u043d\u0430 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b \u043c\u044b\u0441\u043b\u0438.<\/p>\n<p><strong>\u0427\u0410\u0421\u0422\u042c I. \u041a\u041e\u041d\u0415\u0427\u041d\u042b\u0415 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u042b. \u0423\u041d\u0418\u0412\u0415\u0420\u0421\u0410\u041b\u042c\u041d\u0410\u042f \u041c\u0410\u0428\u0418\u041d\u0410 \u0422\u042c\u042e\u0420\u0418\u041d\u0413\u0410. \u0418\u041d\u0422\u0415\u0420\u041f\u0420\u0415\u0422\u0410\u0422\u041e\u0420 BRAINFUCK.<\/strong><\/p>\n<p><strong>\u0412\u0418\u0420\u0422\u0423\u0410\u041b\u042c\u041d\u042b\u0415 \u041c\u0410\u0428\u0418\u041d\u042b<\/strong><\/p>\n<p>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2580\u2584\u2588\u2580\u2588\u2580\u2588\u2584\u2580\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591<br \/> \u2591\u2591\u2580\u2580\u2588\u2588\u2588\u2580\u2580\u2591\u2591\u2591\u2588\u2588\u2584\u2588\u2584\u2588\u2588\u2591\u2591<br \/> \u2591\u2588\u2580\u2588\u2588\u2588\u2588\u2588\u2580\u2588\u2591\u2588\u2580\u2588\u2588\u2588\u2588\u2588\u2580\u2588\u2591<br \/> \u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2584\u2588\u2588\u2588\u2584\u2591\u2588\u2591<br \/> \u2591\u2580\u2591\u2580\u2588\u2580\u2588\u2580\u2591\u2580\u2591\u2580\u2591\u2580\u2588\u2580\u2588\u2580\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<\/p>\n<p>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 VM (Virtual Machine) \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0438\u043b\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 FSM (Finite State Machine). \u0418\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043a\u043e\u0434 (\u0431\u0430\u0439\u0442-\u043a\u043e\u0434, \u0448\u0438\u0442\u044b\u0439 \u043a\u043e\u0434, p-\u043a\u043e\u0434). \u0418\u043c\u0435\u0435\u0442 \u0446\u0438\u043a\u043b \u0432\u044b\u0431\u043e\u0440\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434.<br \/> \u0411\u0430\u0439\u0442-\u043a\u043e\u0434 (Bytecode) \u2013 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 VM. \u041a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 1 \u0431\u0430\u0439\u0442 (\u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435), \u0437\u0430 \u043d\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0438\u0434\u0442\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442 \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, .pyc \u0434\u043b\u044f Python \u0438\u043b\u0438 .class \u0434\u043b\u044f Java). VM \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0435\u0439 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443.<br \/> \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0448\u0438\u0442\u043e\u043c \u043a\u043e\u0434\u0435 (Threaded Code) \u2013 \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u043d\u0435 \u00ab\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u00bb \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 switch, \u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430. \u041f\u0440\u0438\u043c\u0435\u0440: \u044f\u0437\u044b\u043a Forth, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f ZX Spectrum.<br \/> P-\u043a\u043e\u0434 (Pascal Code \/ Portable Code) \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0435\u0434\u043e\u043a \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 Pascal. \u042d\u0442\u043e \u043a\u043e\u0434 \u0434\u043b\u044f \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b (P-machine). \u0418\u0434\u0435\u044f: \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 P-\u043a\u043e\u0434, \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 P-\u043c\u0430\u0448\u0438\u043d\u044b. \u041f\u0440\u0438\u043c\u0435\u0440: UCSD Pascal.<br \/> VM \u043c\u043e\u0436\u0435\u0442 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 (\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c RAM, \u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u0434\u0438\u0441\u043a, BIOS). \u0418\u0434\u0435\u044f VM \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u044f\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f DEC VAX\/VMS, IBM VM\/CMS \u0438 \u0435\u0451 \u0430\u043d\u0430\u043b\u043e\u0433 \u0432\u0440\u0435\u043c\u0451\u043d \u0421\u0421\u0421\u0420 \u2013 \u0421\u0412\u041c [2].<\/p>\n<p><strong>\u0420\u0410\u0417\u0414\u0415\u041b: \u0418\u0421\u0422\u041e\u0420\u0418\u0418 \u0418 \u0418\u0414\u0415\u0418 VM<\/strong><\/p>\n<p><strong>1. \u0413\u0414\u0415 \u041f\u041e\u041b\u0415\u0417\u041d\u042b \u0412\u0418\u0420\u0422\u0423\u0410\u041b\u042c\u041d\u042b\u0415 \u041c\u0410\u0428\u0418\u041d\u042b<\/strong><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 VM \u043f\u043b\u043e\u0434\u043e\u0442\u0432\u043e\u0440\u043d\u043e:<\/p>\n<ol>\n<li>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u043c \u0441 \u0438\u0445 \u043a\u043e\u0434\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e; \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0435\u0433\u043e \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f HAL (Hardware Abstraction Level) \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e API \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0433\u043e \u043e\u0442 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0438\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u0437\u043a\u043e\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 VM.<\/p>\n<\/li>\n<\/ol>\n<p><strong>2. \u0418\u0421\u0422\u041e\u0420\u0418\u042f MICROSOFT \u0418 \u0412\u0418\u0420\u0422\u0423\u0410\u041b\u042c\u041d\u042b\u0415 \u041c\u0410\u0428\u0418\u041d\u042b<\/strong><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/299\/96f\/72e\/29996f72ecdbc1364a87c95616464c41.jpg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/299\/96f\/72e\/29996f72ecdbc1364a87c95616464c41.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/299\/96f\/72e\/29996f72ecdbc1364a87c95616464c41.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f Microsoft \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0430\u0441\u044c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f VM \u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u2026<br \/> \u0423\u0447\u0435\u043d\u0438\u043a\u0430\u043c \u0448\u043a\u043e\u043b\u044b \u041b\u0435\u0439\u043a\u0441\u0430\u0439\u0434 \u0432 \u0421\u0438\u044d\u0442\u043b\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e. \u042d\u0442\u043e \u0443\u0447\u0435\u0431\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u0432\u0435\u043b\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0439 \u043a\u0443\u0440\u0441. \u0412 1968 \u0433\u043e\u0434\u0443, \u0432 \u043c\u0438\u0440\u0435 \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u0440\u0443\u043f\u043d\u043e\u0433\u0430\u0431\u0430\u0440\u0438\u0442\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b IBM \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u043c\u0438\u043d\u0438-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u043a\u043e\u043b\u044c\u043d\u0438\u043a\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u0430\u0437\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u0440\u0435\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u043d\u044b\u043c.<br \/> \u0412\u043e\u0441\u044c\u043c\u0438\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a \u0413\u0435\u0439\u0442\u0441, \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b\u043b\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u0432 \u0448\u043a\u043e\u043b\u0435, \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043b\u0441\u044f \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 DEC PDP-10 (Programmed Data Processor \u043c\u043e\u0434\u0435\u043b\u044c 10) \u0438 \u0432\u0441\u043a\u043e\u0440\u0435 \u0441\u0442\u0430\u043b \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0430\u0441\u043e\u043c, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0448\u043a\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u0438 \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 (\u0437\u0430 \u0447\u0442\u043e \u0431\u044b\u043b \u043e\u0442\u043b\u0443\u0447\u0435\u043d \u043e\u0442 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0430 \u0433\u043e\u0434). \u041f\u043e\u043b \u0410\u043b\u043b\u0435\u043d \u0431\u044b\u043b \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u044c\u043e\u043d\u043e\u043c. \u041d\u0430 PDP \u043e\u043d\u0438 \u0438\u0437\u0443\u0447\u0430\u043b\u0438 Fortran, Lisp \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.<br \/> \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0443\u0447\u0451\u0431\u044b \u0411\u0438\u043b\u043b \u0438 \u041f\u043e\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u043e\u0440\u043e\u0436\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 Traf-O-Data \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u0436\u0438 \u043c\u0435\u0441\u0442\u043d\u044b\u043c \u043e\u0440\u0433\u0430\u043d\u0430\u043c \u0432\u043b\u0430\u0441\u0442\u0438 \u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430\u043c \u0448\u0442\u0430\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0438\u0445 \u0434\u0435\u043d\u044c\u0433\u0438 \u0438 \u0432\u0440\u0435\u043c\u044f. \u041f\u043e\u043f\u0435\u0440\u0451\u043a \u0434\u043e\u0440\u043e\u0433\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0435\u0437\u0438\u043d\u043e\u0432\u044b\u0435 \u0442\u0440\u0443\u0431\u043a\u0438. \u041f\u0440\u0438 \u043f\u0440\u043e\u0435\u0437\u0434\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u0442\u0440\u0443\u0431\u043a\u0430 \u0441\u0436\u0438\u043c\u0430\u043b\u0430\u0441\u044c \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0430 \u0432\u043e\u0437\u0434\u0443\u0448\u043d\u044b\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441. \u0418\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u043d\u0430 \u043f\u0435\u0440\u0444\u043e\u043b\u0435\u043d\u0442\u0435 \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0410\u043b\u043b\u0435\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Intel 8008 \u043d\u0430 DEC, \u0430 \u0411\u0438\u043b\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0417\u0430\u0442\u0435\u043c \u0441\u0442\u0443\u0434\u0435\u043d\u0442-\u044d\u043b\u0435\u043a\u0442\u0440\u0438\u043a \u041f\u043e\u043b \u0413\u0438\u043b\u0431\u0435\u0440\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0434\u043b\u044f \u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 (hardware) \u043d\u0430 Intel 8008, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0435\u0440\u0444\u043e\u043b\u0435\u043d\u0442\u044b \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u0442\u0447\u0451\u0442\u044b \u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0440\u043e\u0433.<br \/> 1974 \u0433\u043e\u0434\u0443 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u0431\u044b\u0432\u0430\u043b\u043e\u0435 \u2013 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 Altair \u043d\u0430 \u0431\u0430\u0437\u0435 Intel 8080. \u041c\u0438\u0440\u043d\u0430\u044f \u0436\u0438\u0437\u043d\u044c \u0440\u044b\u043d\u043a\u0430, \u0433\u0434\u0435 \u0446\u0430\u0440\u0438\u043b\u0438 IBM \u0438 DEC, \u0431\u044b\u043b\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 MITS \u0438\u0437 \u0410\u043b\u044c\u0431\u0443\u043a\u0435\u0440\u043a\u0435, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439 Altair \u2013 \u043c\u0430\u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e. \u041e\u043d\u0430 \u0448\u043b\u0430 \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u0442\u0438\u043f\u0430 \u00ab\u0441\u0434\u0435\u043b\u0430\u0439 \u0441\u0430\u043c\u00bb. \u0418\u0437 \u043d\u0435\u0433\u043e \u0442\u0435\u0440\u043f\u0435\u043b\u0438\u0432\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u044f\u043b\u044c\u043d\u0438\u043a\u0430 \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0432 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<br \/> \u0410\u043b\u043b\u0435\u043d, \u043f\u0435\u0440\u0432\u044b\u043c \u0443\u0437\u043d\u0430\u0432\u0448\u0438\u0439 \u043e\u0431 Altair, \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0448\u0430\u043d\u0441 \u0443\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u041e\u043d \u0431\u0435\u0437 \u0442\u0440\u0443\u0434\u0430 \u0443\u0431\u0435\u0434\u0438\u043b \u0413\u0435\u0439\u0442\u0441\u0430 \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u041a\u043e\u043c\u043f\u0430\u043d\u044c\u043e\u043d\u044b \u043f\u043e\u0437\u0432\u043e\u043d\u0438\u043b\u0438 \u0433\u043b\u0430\u0432\u0435 MITS \u042d\u0434\u0443 \u0420\u043e\u0431\u0435\u0440\u0442\u0441\u0443 \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u043b\u0438, \u0447\u0442\u043e \u0438\u043c\u0435\u044e\u0442 \u0411\u0435\u0439\u0441\u0438\u043a, \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f Altair. \u0420\u043e\u0431\u0435\u0440\u0442\u0441 \u043d\u0435 \u0441\u0447\u0435\u043b \u044d\u0442\u043e \u0437\u0430 \u0440\u043e\u0437\u044b\u0433\u0440\u044b\u0448. \u041e\u043d \u0436\u0434\u0430\u043b \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0437\u0432\u043e\u043d\u043a\u043e\u0432, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u043d\u0438\u043c\u0430\u043b, \u0447\u0442\u043e \u0435\u0433\u043e \u0434\u0435\u0442\u0438\u0449\u0435, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043e\u0431\u0440\u0443\u0448\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u0443\u0441\u043f\u0435\u0445, \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0435\u043c \u0443\u0442\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0443\u043c\u0431\u043b\u0435\u0440\u043e\u0432.<br \/> \u0418\u0442\u0430\u043a, \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 \u0431\u044b\u043b\u043e \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0415\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0443\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u0434\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u0430\u043c \u0437\u0430\u0432\u044f\u0437\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0441 MITS. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u0430\u043c\u043e\u0433\u043e Intel 8080. \u0417\u0430\u0442\u043e \u0431\u044b\u043b \u043e\u043f\u044b\u0442 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0447\u0438\u043f\u0430 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 Traf-O-Data. \u0418\u0437\u0443\u0447\u0438\u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Intel \u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 Popular Electronics, \u0413\u0435\u0439\u0442\u0441 \u0438 \u0410\u043b\u043b\u0435\u043d \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0410ltair \u043d\u0430 PDP-10. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0411\u0435\u0439\u0441\u0438\u043a\u0443, \u0441\u043e\u043e\u0431\u0449\u0438\u0432 \u0420\u043e\u0431\u0435\u0440\u0442\u0441\u0443, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430, \u0430 \u043d\u0435 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Microsoft.<br \/> \u0417\u0438\u043c\u043e\u0439 1975 \u0433\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430\u0441\u044c \u043b\u0438\u0447\u043d\u0430\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430 \u042d\u0434\u0430 \u0420\u043e\u0431\u0435\u0440\u0442\u0441\u0430 \u0438 \u041f\u043e\u043b\u0430 \u0410\u043b\u043b\u0435\u043d\u0430 \u0432 \u0410\u043b\u044c\u0431\u0443\u043a\u0435\u0440\u043a\u0435. \u0410\u043b\u043b\u0435\u043d \u043f\u0440\u0438\u0432\u0435\u0437 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0411\u0435\u0439\u0441\u0438\u043a \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u0432 \u0433\u043b\u0430\u0437\u0430. \u041a \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e \u0413\u0435\u0439\u0442\u0441\u0430 \u0438 \u0410\u043b\u043b\u0435\u043d\u0430 \u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0430\u0441\u044c \u0438 \u043f\u0440\u043e\u0448\u043b\u0430 \u0432\u0441\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f. \u0420\u043e\u0431\u0435\u0440\u0442\u0441 \u0431\u044b\u043b \u0433\u043e\u0442\u043e\u0432 \u043d\u0435\u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u0433\u043e\u0432\u043e\u0440. \u0417\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 BASIC \u0434\u0440\u0443\u0437\u044c\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0435 \u043e\u0442\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f.<br \/> \u0423\u0441\u043f\u0435\u0445 \u0411\u0435\u0439\u0441\u0438\u043a\u0430 \u0434\u043b\u044f Altair \u043f\u043e\u043c\u043e\u0433 \u0413\u0435\u0439\u0442\u0441\u0443 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0431\u044b\u043b\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438. \u041e\u043d \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0413\u0430\u0440\u0432\u0430\u0440\u0434 \u0438 \u043e\u0442\u0434\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u2013 Microsoft. Micro \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b, \u0430 Soft \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 [3][4].<\/p>\n<p><strong>3. \u0418\u0421\u0422\u041e\u0420\u0418\u042f \u041e\u0420\u0418\u0413\u0418\u041d\u0410\u041b\u042c\u041d\u041e\u0413\u041e \u041f\u0420\u041e\u0418\u0413\u0420\u042b\u0412\u0410\u0422\u0415\u041b\u042f \u0427\u0418\u041f\u0422\u042e\u041d \u041c\u0423\u0417\u042b\u041a\u0418<\/strong><\/p>\n<p>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2591\u2588\u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2588\u2580\u2588\u2580\u2580\u2580\u2588\u2580\u2588\u2580\u2580\u2580\u2588\u2591\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2584\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2580\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2584\u2591\u2580\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2584\u2591\u2591\u2591\u2591<br \/> \u2584\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2584\u2588\u2584\u2588\u2584\u2588\u2584\u2584\u2584\u2588\u2584\u2584\u2584\u2588\u2584\u2588\u2584\u2584\u2584\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2584<br \/> \u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551<br \/> \u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551<br \/> \u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551<br \/> \u255a\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u255d<\/p>\n<p>\u00ab\u0424\u0438\u0437\u0438\u043a\u0430\u00bb \u2013 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c, \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u0440\u043e\u0442\u0435\u043a\u0430\u0435\u0442 \u0432 \u043c\u0438\u0440\u0435 \u0444\u0438\u0437\u0438\u043a\u0438. \u0417\u0432\u0443\u043a \u2013 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445.<br \/> \u0427\u0438\u043f\u0442\u044e\u043d (chiptune) \u2013 \u043c\u0443\u0437\u044b\u043a\u0430, \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u0432\u043e\u043b\u043d\u044b \u0438 \u0448\u0443\u043c\u043e\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u043b\u0438\u0431\u043e \u0442\u0440\u0435\u043a\u0435\u0440\u0430\u043c\u0438 (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438 \u0438\u0437 \u00ab\u0441\u0435\u043c\u043f\u043b\u043e\u0432\u00bb \u2013 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u0433\u043e\u043b\u043e\u0441\u0430 \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0437\u0432\u0443\u043a\u0430) [5][6].<br \/> \u0421 1970-\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0435 \u0432\u0437\u043b\u043e\u043c\u0449\u0438\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0438 \u0432 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0435 \u0438\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0435\u0433\u0443\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0447\u0438\u043f\u0442\u044e\u043d \u0438 \u0432\u0438\u0434\u0435\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u00ab\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u043c\u0438\u00bb. \u0412 \u0441\u0432\u043e\u0451 \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u044b \u043f\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u00ab\u0434\u0435\u043c\u043e\u043a\u00bb.<br \/> AY-3-8910 \u2013 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 1978 \u0433\u043e\u0434\u0430 \u043e\u0442 General Instruments \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0437\u0432\u0443\u043a\u0430 \u0438 \u043c\u0443\u0437\u044b\u043a\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 \u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Sinclair ZX Spectrum 128\u041a \u0441 8 \u0431\u0438\u0442\u043d\u044b\u043c \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Zilog Z80 1976 \u0433\u043e\u0434\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430.<br \/> \u0420\u0435\u0441\u0443\u0440\u0441\u044b ZX Spectrum \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b: Z80 \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u0442 64 \u041a\u0411 \u043f\u0430\u043c\u044f\u0442\u0438, \u0435\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 2,5 \u041c\u0413\u0446. \u041a \u043d\u0435\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0433\u0440 \u0438 \u043c\u0443\u0437\u044b\u043a\u0438 \u043d\u0430 Spectrum. Spectrum \u0446\u0435\u043d\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0451\u0442 \u0430\u0437\u044b \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0430 \u0443\u0447\u0438\u0442 \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0443 FSM \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 CPU \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<br \/> \u0421\u0442\u0430\u0440\u0442\u0443\u044f Spectrum \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438\u0437 \u041f\u0417\u0423 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u044e \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 BASIC. \u0418\u0437 \u043d\u0435\u0451 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 BASIC \u0438 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435.<br \/> \u0427\u0438\u043f AY-3-8910 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e \u043d\u043e\u0442\u0430\u0445 \u0438\u043b\u0438 \u043c\u0435\u043b\u043e\u0434\u0438\u0438, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 3-\u0445 \u00ab\u043a\u0430\u043d\u0430\u043b\u043e\u0432\u00bb, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430 \u043d\u0451\u043c \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c \u0438 \u0432\u044b\u0441\u043e\u0442\u0443 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u0439 \u0437\u0432\u0443\u043a\u0430. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0448\u043b\u044e\u0442 \u0432 \u0447\u0438\u043f \u043f\u043e\u0442\u043e\u043a \u0442\u0430\u043a\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0438 \u0437\u0432\u0443\u0447\u0438\u0442 \u043c\u0443\u0437\u044b\u043a\u0430.<br \/> \u0417\u0432\u0443\u043a\u043e\u0432\u044b\u0435 \u0432\u043e\u043b\u043d\u044b \u2013 \u044d\u0442\u043e \u0444\u0438\u0437\u0438\u043a\u0430, \u0438 \u0432\u0435\u0440\u043d\u044b\u0435 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u0434\u043b\u044f \u043d\u0438\u0445 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u044b. \u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u0434\u043b\u044f Spectrum \u2013 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418\u0445 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u0432\u044b\u0441\u0447\u0438\u0442\u0430\u043d\u044b \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Z80. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0447\u0435\u0441\u0442\u044c \u044d\u0442\u0443 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043c\u0435\u043d\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 CPU.<br \/> \u0424\u043e\u0440\u043c\u0430\u0442\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0438 \u0434\u043b\u044f Spectrum \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440. \u041f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043e\u043b\u0433\u043e \u0438 \u043d\u0435 \u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0415\u0441\u0442\u044c \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 FSM \u043f\u043b\u0435\u0435\u0440\u044b \u043f\u043e\u0434 Z80.<br \/> \u041f\u043b\u0435\u0435\u0440 Ayfly \u2013 \u044d\u0442\u043e \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 VM \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 PT3, AY, PSC, YM \u0438 \u0434\u0440. VM \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 Z80 \u0438 AY-3-8910 \u0438 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u043d\u0430 \u0421. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0439 \u043c\u0435\u043b\u043e\u0434\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Z80 \u0438 \u043a\u043e\u043f\u0438\u0435\u0439 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 [7]. \u041c\u0430\u0448\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u043d\u0430 Windows, Unix, Arduino \u0438 \u0435\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0443\u0436\u0434. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 VM \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u043b\u044e\u0431\u044b\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0435\u0435\u0440\u043e\u0432 \u043d\u0430 Z80 \u0438\u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0437\u0432\u0443\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<p><strong>4. \u0411\u0410\u0419\u0422\u041a\u041e\u0414\u041e\u0412\u0410\u042f VM \u0412 ZX SPECTRUM<\/strong><\/p>\n<p>\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2580\u2580\u2588\u2588\u2588\u2588\u2588\u2580\u2580\u2588<br \/> \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2584\u2584\u2591\u2591\u2591\u2584\u2584\u2591\u2588<br \/> \u2580\u2588\u2588\u2588\u2588\u2580\u2588\u2580\u2588\u2588\u2588\u2588\u2580\u258c\u255a\u255d\u2591\u2591\u2591\u255a\u255d\u2590\u2588<br \/> \u2591\u2565\u2591\u2591\u2565\u2591\u2588\u2591\u2565\u2591\u2591\u2565\u2591\u2588\u2591\u2510\u2591\u2584\u2591\u250c\u2591\u2588\u2588<br \/> \u258c\u2591\u2591\u2584\u2591\u2590\u2588\u258c\u2591\u2591\u2584\u2591\u2590\u2593\u2593\u258c\u2550\u2567\u2550\u2590\u2593\u2593\u2588<br \/> \u2514\u2584\u2514\u2534\u2518\u2588\u2588\u2514\u2584\u2514\u2534\u2518\u2593\u2591\u2592\u2591\u2592\u2591\u2592\u2591\u2592\u2591\u2588<\/p>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a ZX Spectum. \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u043a\u0438 CPU, VM, DSL. \u041b\u044e\u0431\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 (OS) \u2013 \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u043a\u0430, \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0430, \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u043e\u0435\u0434\u0438\u043d\u043e.<br \/> \u0423 Spectum 48 \u041a\u0431 \u043f\u0430\u043c\u044f\u0442\u0438. 16 \u041a\u0431 \u0438\u0437 \u043d\u0438\u0445 \u2013 \u041f\u0417\u0423, \u0433\u0434\u0435 \u00ab\u0437\u0430\u0448\u0438\u0442\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 OS \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 BASIC, \u0438 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f VM.<br \/> \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Z80 \u043d\u0435\u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u0442\u0440\u0438\u0433\u043e\u043d\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0438\u043b\u0438 \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0442\u0435\u043a\u043e\u0432\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 FP-VM \u0432 ZX Spectrum \u2013 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0435\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 8-\u0431\u0438\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432 \u043c\u043e\u0449\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<br \/> FP-VM \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0438 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 (Floating Point Number). \u0415\u0451 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442 \u043f\u0440\u044f\u043c\u043e \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u043c \u043a\u043e\u0434\u0435 Z80 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 <code>RST 28h<\/code> \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 <code>end-calc<\/code>.<\/p>\n<pre><code>RST 28h ; \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f Z80      ...      ; \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0434\u043b\u044f FP-VM      ...  end-calc  ... ; \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 Z80  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0441\u0442\u0440\u0435\u0442\u0438\u0432 <code>RST 28h<\/code> \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Z80 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0432 \u0441\u0442\u0435\u043a (SP) \u0430\u0434\u0440\u0435\u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430 \u043d\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <code>CALL<\/code> \u0438 <code>RST<\/code>. \u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 <code>#0028<\/code> \u2013 \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0435\u0433\u043e Z80 \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c \u043f\u043e\u0441\u043b\u0435 <code>end-calc<\/code>.<br \/> \u0418\u0437 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 Z80; \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 (\u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435). \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <code>VAL<\/code> \u2013 \u043f\u0430\u0440\u0441\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0421\u0442\u0440\u043e\u0438\u0442 \u0438 \u043e\u0431\u0445\u043e\u0434\u0438\u0442 AST, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442.<br \/> \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>RST 28h<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>CALL<\/code> \u043f\u0440\u043e\u0434\u0438\u043a\u0442\u043e\u0432\u0430\u043d\u043e \u0434\u0432\u0443\u043c\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438: \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u044a\u0435\u043c\u0430 \u043a\u043e\u0434\u0430 \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430: 1 \u0431\u0430\u0439\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 RST \u043f\u0440\u043e\u0442\u0438\u0432 3-\u0445 \u0431\u0430\u0439\u0442 (\u043a\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 + 2 \u0431\u0430\u0439\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u0430) CALL \u0438 11 \u0442\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 17 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u0430 VM \u2013 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430 \u043d\u0435 \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430.<\/p>\n<p>\u0422\u0410\u0411\u041b\u0418\u0426\u0410 \u041a\u041e\u041c\u0410\u041d\u0414 FP-VM<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>-----+----------------+---------------------------------------------   \u041a\u041e\u0414 | \u041c\u041d\u0415\u041c\u041e\u041d\u0418\u041a\u0410      | \u041e\u041f\u0415\u0420\u0410\u0426\u0418\u042f                                      -----+----------------+---------------------------------------------  \u0423\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u0415 \u0418 \u041f\u0415\u0420\u0415\u0425\u041e\u0414\u042b  -----+----------------+---------------------------------------------   #00 | JUMP-TRUE      | \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 X != 0   #2D | FP-CALL        | \u0412\u044b\u0437\u043e\u0432 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0439 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b   #2F | JUMP           | \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e   #38 | END-CALC       | \u0422\u0415\u0420\u041c\u0418\u041d\u0410\u0422\u041e\u0420: \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c Z80  -----+----------------+---------------------------------------------  \u0421\u0422\u0415\u041a\u041e\u0412\u042b\u0415 \u041e\u041f\u0415\u0420\u0410\u0426\u0418\u0418 \u0418 \u0414\u0410\u041d\u041d\u042b\u0415  -----+----------------+---------------------------------------------   #01 | EXCHANGE       | \u041f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (SWAP)   #02 | DELETE         | \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b (DROP)   #1A | READ-IN        | \u0412\u0432\u043e\u0434 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438\u0437 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445   #30 | STK-DATA       | \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 5-\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0433\u043e Float   #31 | DUPLICATE      | \u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b (DUP)   #32 | N-STORE        | \u0417\u0430\u043f\u0438\u0441\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e (1 \u0431\u0430\u0439\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430)   #33 | N-RECALL       | \u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (1 \u0431\u0430\u0439\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430)   #34 | STK-SHORT      | \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 1-\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e  -----+----------------+---------------------------------------------  \u0410\u0420\u0418\u0424\u041c\u0415\u0422\u0418\u041a\u0410 \u0418 \u0424\u0423\u041d\u041a\u0426\u0418\u0418  -----+----------------+---------------------------------------------   #03 | SUBTRACT       | \u0412\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435   #04 | MULTIPLY       | \u0423\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435   #05 | DIVISION       | \u0414\u0435\u043b\u0435\u043d\u0438\u0435   #06 | TO-POWER       | \u0412\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c   #0F | ADDITION       | \u0421\u043b\u043e\u0436\u0435\u043d\u0438\u0435   #1B | NEGATE         | \u0421\u043c\u0435\u043d\u0430 \u0437\u043d\u0430\u043a\u0430 (\u0443\u043d\u0430\u0440\u043d\u044b\u0439 \u043c\u0438\u043d\u0443\u0441)   #20 | ABS            | \u041c\u043e\u0434\u0443\u043b\u044c \u0447\u0438\u0441\u043b\u0430   #21 | SGN            | \u0417\u043d\u0430\u043a \u0447\u0438\u0441\u043b\u0430   #22 | SQR            | \u041a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0439 \u043a\u043e\u0440\u0435\u043d\u044c   #23 | INT            | \u0426\u0435\u043b\u0430\u044f \u0447\u0430\u0441\u0442\u044c   #2E | N-MOD-M        | \u041e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f  -----+----------------+---------------------------------------------  \u0422\u0420\u0410\u041d\u0421\u0426\u0415\u041d\u0414\u0415\u041d\u0422\u041d\u042b\u0415 \u0412\u042b\u0427\u0418\u0421\u041b\u0415\u041d\u0418\u042f  -----+----------------+---------------------------------------------   #24 | EXP            | \u042d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0442\u0430   #25 | LN             | \u041d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c   #26 | SIN            | \u0421\u0438\u043d\u0443\u0441   #27 | COS            | \u041a\u043e\u0441\u0438\u043d\u0443\u0441   #28 | TAN            | \u0422\u0430\u043d\u0433\u0435\u043d\u0441   #29 | ASN            | \u0410\u0440\u043a\u0441\u0438\u043d\u0443\u0441   #2A | ACS            | \u0410\u0440\u043a\u043a\u043e\u0441\u0438\u043d\u0443\u0441   #2B | ATN            | \u0410\u0440\u043a\u0442\u0430\u043d\u0433\u0435\u043d\u0441  -----+----------------+---------------------------------------------  \u041b\u041e\u0413\u0418\u041a\u0410 \u0418 \u0421\u0420\u0410\u0412\u041d\u0415\u041d\u0418\u0415 (FLOAT)  -----+----------------+---------------------------------------------   #07 | OR             | \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0418\u041b\u0418   #08 | AND            | \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0418   #09 | LESS-THAN      | \u041c\u0435\u043d\u044c\u0448\u0435   #0A | GREATER-THAN   | \u0411\u043e\u043b\u044c\u0448\u0435   #0B | NOT-EQUAL      | \u041d\u0435 \u0440\u0430\u0432\u043d\u043e   #0C | LESS-EQUAL     | \u041c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e   #0D | GREAT-EQUAL    | \u0411\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e   #0E | EQUAL          | \u0420\u0430\u0432\u043d\u043e  -----+----------------+---------------------------------------------  \u0421\u0422\u0420\u041e\u041a\u041e\u0412\u042b\u0415 \u041e\u041f\u0415\u0420\u0410\u0426\u0418\u0418  -----+----------------+---------------------------------------------   #16 | STRS-APPEND    | \u041a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f (\u0441\u043b\u0438\u044f\u043d\u0438\u0435) \u0441\u0442\u0440\u043e\u043a   #17 | VAL$           | \u0427\u0438\u0441\u043b\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 (\u043e\u0446\u0435\u043d\u043a\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f)   #18 | VAL            | \u0421\u0442\u0440\u043e\u043a\u0430 \u0432 \u0447\u0438\u0441\u043b\u043e (\u043e\u0446\u0435\u043d\u043a\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f)   #19 | STR$           | \u0427\u0438\u0441\u043b\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442   #1C | CODE           | \u041a\u043e\u0434 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430   #1D | CHR$           | \u041a\u043e\u0434 \u0432 \u0441\u0438\u043c\u0432\u043e\u043b (\u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u0438\u043d\u044b 1)  -----+----------------+---------------------------------------------  \u0421\u0422\u0420\u041e\u041a\u041e\u0412\u042b\u0415 \u0421\u0420\u0410\u0412\u041d\u0415\u041d\u0418\u042f  -----+----------------+---------------------------------------------   #10 | STR-LESS       | \u041c\u0435\u043d\u044c\u0448\u0435   #11 | STR-GREATER    | \u0411\u043e\u043b\u044c\u0448\u0435   #12 | STR-NOT-EQ     | \u041d\u0435 \u0440\u0430\u0432\u043d\u043e   #13 | STR-LESS-EQ    | \u041c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e   #14 | STR-GR-EQ      | \u0411\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e   #15 | STR-EQUAL      | \u0420\u0430\u0432\u043d\u043e  -----+----------------+---------------------------------------------  \u041f\u0415\u0420\u0418\u0424\u0415\u0420\u0418\u042f \u0418 \u041f\u0410\u041c\u042f\u0422\u042c  -----+----------------+---------------------------------------------   #1E | PEEK           | \u0427\u0442\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u0430 \u0438\u0437 \u041e\u0417\u0423   #1F | IN             | \u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u043e\u0440\u0442\u0430 Z80   #2C | PRINT-FP       | \u0412\u044b\u0432\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b  -----+----------------+---------------------------------------------  \u0411\u042b\u0421\u0422\u0420\u042b\u0415 \u041a\u041e\u041d\u0421\u0422\u0410\u041d\u0422\u042b (\u041b\u0418\u0422\u0415\u0420\u0410\u041b\u042b)  -----+----------------+---------------------------------------------   #A0 | CONST-0        | 0.0   #A1 | CONST-1        | 1.0   #A2 | CONST-0.5      | 0.5   #A3 | CONST-PI\/2     | 1.57079...   #A4 | CONST-10       | 10.0  -----+----------------+---------------------------------------------  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b: \u0432\u0437\u044f\u0442\u044c sin \u043e\u0442 \u0447\u0438\u0441\u043b\u0430 <code>45<\/code> \u0438 \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043d\u0430 <code>(1+2)*(-3\/4)<\/code>. \u041e\u0436\u0438\u0434\u0430\u0435\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 <code>-1.60<\/code>.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>ORG #8000    START:      ; \u041a\u041e\u0414 \u0414\u041b\u042f Z80      RST 28h           ; \u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b      ; \u041a\u041e\u0414 \u0414\u041b\u042f \u0412\u0418\u0420\u0422\u0423\u0410\u041b\u042c\u041d\u041e\u0419 \u041c\u0410\u0428\u0418\u041d\u042b      ; 1. \u041a\u041e\u041d\u0412\u0415\u0420\u0422\u0418\u0420\u041e\u0412\u0410\u0422\u042c: \u0421\u0422\u0420\u041e\u041a\u0410-&gt;\u0427\u0418\u0421\u041b\u041e      DEFB #2D          ; FP-CALL: \u0412\u044b\u0437\u043e\u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Z80      DEFW PREP_EXPR_1    ; \u0410\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (Little-endian)      DEFB #18          ; VAL: \"45\" -&gt; 45.0        ; 2. \u041f\u0415\u0420\u0415\u0412\u0415\u0421\u0422\u0418: \u0423\u0413\u041e\u041b-&gt;\u0420\u0410\u0414\u0418\u0410\u041d\u042b      DEFB #30, #EE, #3E, #22, #4F, #30 ; \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 PI\/180 (0.017)      DEFB #04          ; MULTIPLY: 45 * 0.017 -&gt; 0.79      DEFB #26          ; SIN: sin(0.79) -&gt; 0.71            ; 3. \u0412\u042b\u0427\u0418\u0421\u041b\u0418\u0422\u042c: \u041c\u0410\u0422\u0415\u041c\u0410\u0422\u0418\u0427\u0415\u0421\u041a\u041e\u0415 \u0412\u042b\u0420\u0410\u0416\u0415\u041d\u0418\u0415, \u0414\u0410\u041d\u041d\u041e\u0415 \u0421\u0422\u0420\u041e\u041a\u041e\u0419      DEFB #2D          ; FP-CALL: \u0412\u044b\u0437\u043e\u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Z80      DEFW PREP_EXPR_2    ; \u0410\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b      DEFB #18          ; VAL: \"(1+2)*(-3\/4)\" -&gt; -2.25      ; 4. \u0423\u041c\u041d\u041e\u0416\u0418\u0422\u042c 2 \u0427\u0418\u0421\u041b\u0410 \u041d\u0410 \u0421\u0422\u0415\u041a\u0415 VM      DEFB #04          ; MULTIPLY: 0.71 * -2.25 -&gt; -1.60      ; 5. \u0412\u042b\u0412\u0415\u0421\u0422\u0418 \u0420\u0415\u0417\u0423\u041b\u042c\u0422\u0410\u0422 \u041d\u0410 \u042d\u041a\u0420\u0410\u041d      DEFB #31          ; DUPLICATE: \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u0434\u0430\u043b\u0435\u0435)      DEFB #2C          ; PRINT-FP: \u0412\u044b\u0432\u043e\u0434 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0447\u0438\u0441\u043b\u0430 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 VM -&gt; -1.60      DEFB #38          ; END-CALC: \u0412\u044b\u0445\u043e\u0434        ; \u041a\u041e\u0414 \u0414\u041b\u042f Z80      RET               ; \u041a\u043e\u043d\u0435\u0446 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b    ; --- \u041f\u041e\u0414\u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u0410 \u041f\u041e\u0414\u0413\u041e\u0422\u041e\u0412\u041a\u0418 \u041f\u0415\u0420\u0412\u041e\u0413\u041e \u0414\u0415\u0421\u041a\u0420\u0418\u041f\u0422\u041e\u0420\u0410 \u0421\u0422\u0420\u041e\u041a\u0418 ---  PREP_EXPR_1:      LD DE, STR_ANG    ; \"45\"      LD BC, 2          ; \u0414\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445      CALL #2AB1        ; \u0414\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u043d\u0430 \u0441\u0442\u0435\u043a \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0430      RET               ; \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 VM \u0447\u0435\u0440\u0435\u0437 RET    ; --- \u041f\u041e\u0414\u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u0410 \u041f\u041e\u0414\u0413\u041e\u0422\u041e\u0412\u041a\u0418 \u0412\u0422\u041e\u0420\u041e\u0413\u041e \u0414\u0415\u0421\u041a\u0420\u0418\u041f\u0422\u041e\u0420\u0410 \u0421\u0422\u0420\u041e\u041a\u0418 ---  PREP_EXPR_2:      LD DE, STR_EXPR   ; \"(1+2)*(-3\/4)\"      LD BC, 12         ; \u0414\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445      JP #2AB1          ; \u041f\u0440\u044f\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 STK-STORE \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 VM \u0447\u0435\u0440\u0435\u0437 RET    ; --- \u0411\u041b\u041e\u041a \u0414\u0410\u041d\u041d\u042b\u0425 ---  STR_ANG:  DEFB \"45\"  STR_EXPR: DEFB \"(1+2)*(-3\/4)\"  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>5. FORTH: DSL, VM \u0418 RTOS \u0414\u041b\u042f \u0423\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f \u0420\u0410\u0414\u0418\u041e\u0422\u0415\u041b\u0415\u0421\u041a\u041e\u041f\u041e\u041c<\/strong><\/p>\n<pre><code>                                   \/\\                                \/\\  \/\/\\\\                         \/\\    \/\/\\\\\/\/\/\\\\\\        \/\\                        \/\/\\\\  \/\/\/\\\/\/\/\/\\\\\\\\  \/\\  \/\/\\\\           \/\\          \/  ^ \\\/^ ^\/^  ^  ^ \\\/^ \\\/  ^ \\          \/ ^\\    \/\\  \/ ^   \/  ^\/ ^ ^ ^   ^\\ ^\/  ^^  \\         \/^   \\  \/ ^\\\/ ^ ^   ^ \/ ^  ^    ^  \\\/ ^   ^  \\       *        \/  ^ ^ \\\/^  ^\\ ^ ^ ^   ^  ^   ^   ____  ^   ^  \\     \/|\\       \/ ^ ^  ^ \\ ^  _\\___________________|  |_____^ ^  \\   \/||o\\      \/ ^^  ^ ^ ^\\  \/______________________________\\ ^ ^ \\ \/|o|||\\     \/  ^  ^^ ^ ^  \/________________________________\\  ^  \/|||||o|\\    \/^ ^  ^ ^^  ^    ||___|___||||||||||||___|__|||      \/||o||||||\\   \/ ^   ^   ^    ^  ||___|___||||||||||||___|__|||          | |  \/ ^ ^ ^  ^  ^  ^   ||||||||||||||||||||||||||||||oooooooooo| |ooooooo  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u041e RTOS<\/strong><\/p>\n<p>Forth \u2013 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u044f\u0437\u044b\u043a, \u044d\u0442\u043e \u043c\u0438\u043a\u0440\u043e-RTOS.<br \/> RTOS (Real-Time Operating System) \u2013 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0441 \u0442\u043e\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u043d\u0430\u043f\u0435\u0440\u0451\u0434 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432. RTOS \u0441\u0442\u0430\u0432\u044f\u0442 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0431\u0438\u0435\u043a\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044f\u043c\u0438. (\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u043e\u0431\u043e\u0442\u044b: \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u043e\u0433\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432. \u041c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435: \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u044b \u0418\u0412\u041b \u0438\u043b\u0438 \u043a\u0430\u0440\u0434\u0438\u043e\u0441\u0442\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b. \u041a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u044b. \u0410\u0432\u0442\u043e\u043f\u0438\u043b\u043e\u0442\u044b \u0438 \u0442\u043e\u0440\u043c\u043e\u0437\u0430 ABS.) \u0412 RTOS \u0442\u043e\u0447\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430\u0439\u043c\u0435\u0442 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u043c\u043e\u0442\u043e\u0440\u0430, \u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438\u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u0430\u0442\u0447\u0438\u043a\u0430. \u041f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, RTOS \u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043d\u0430 \u043f\u0430\u0443\u0437\u0443 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430 \u0432\u0430\u0436\u043d\u0443\u044e (\u043f\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c).<br \/> \u0414\u043b\u044f \u0437\u0430\u0434\u0430\u0447, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 1 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f\u0430, \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430), RTOS \u2013 \u0431\u0435\u0437\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<p><strong>\u0418\u0421\u0422\u041e\u0420\u0418\u042f FORTH<\/strong><\/p>\n<pre><code>                                                       ..       :                      .                  .               .   .  .        .           .                .               .. .  .  *               *          .                    ..        .                             .             .     . :  .   .    .  .              .                         .   .  .  .   .                                           . .  *:. . .  .                                 .  .   . .. .         .                           .     . .  . ...    .    .         .              .  .  . .    . .  . .                          .    .     . ...   ..   .       .               .                   .  .    . *.   . .      .                   :.  .           .                   .   .    .    .               .  .  .    .\/|\\              .  .. :.    . |             .               .       .   ... .            |   .    :.  . .   *.        |     .               .     .  *.             You are here.   . .    .               .             *.                         .  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 1960-\u0445 VM \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043c\u0430\u043d\u0434 (Instruction Set Architecture), \u0434\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u043b\u043e\u0433\u0438\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043e\u0442 \u0444\u0438\u0437\u0438\u043a\u0438 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0436\u0435\u043b\u0435\u0437\u0430. VM \u0434\u0430\u0451\u0442 \u043c\u043d\u043e\u0433\u043e\u0431\u0430\u0439\u0442\u043d\u0443\u044e \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0443, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c CPU \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435.<br \/> \u0421\u043e\u0441\u0442\u0430\u0432 VM: \u0440\u0435\u0433\u0438\u0441\u0442\u0440-\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 (PC), \u0440\u0435\u0433\u0438\u0441\u0442\u0440-\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430 (SP), \u0443\u0437\u0435\u043b \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (Fetcher), \u0438 \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 \u043a\u043e\u0434\u0430\u0445 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<br \/> \u0420\u0430\u0434\u0438\u043e\u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0430 (Hard Real-Time). \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e: \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043d\u0435\u0431\u0435\u0441\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432 \u0430\u0437\u0438\u043c\u0443\u0442\u0430\u043b\u044c\u043d\u044b\u0435, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0435\u0440\u0432\u043e\u043c\u043e\u0442\u043e\u0440\u0430\u043c\u0438, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441 \u0440\u0430\u0434\u0438\u043e\u043c\u0435\u0442\u0440\u0430. 11-\u043c\u0435\u0442\u0440\u043e\u0432\u044b\u0439 \u0440\u0430\u0434\u0438\u043e\u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f \u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0434\u0438\u043e\u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0431\u0441\u0435\u0440\u0432\u0430\u0442\u043e\u0440\u0438\u0438 (NRAO) \u0432 \u041a\u0438\u0442\u0442-\u041f\u0438\u043a\u0435 (\u0421\u0428\u0410, \u0410\u0440\u0438\u0437\u043e\u043d\u0430) \u0431\u044b\u043b \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u0438\u043c \u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f\u043e\u043c.<br \/> \u0423 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 1960-\u0445 (FORTRAN, ALGOL) \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043f\u0435\u0440\u0444\u043e\u043a\u0430\u0440\u0442, \u0430 \u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u2013 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041e\u043d\u0438 \u043d\u0435 \u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447, \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<br \/> \u0412 1950-\u0445 \u0427\u0430\u0440\u043b\u044c\u0437 \u041c\u0443\u0440, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0432 MIT, \u0437\u0430\u0442\u0435\u043c \u0432 Stanford, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043b\u0438\u0447\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 1968 \u0433. \u0435\u0451 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f Forth (\u0438\u043b\u0438 \u00ab\u0412\u0435\u0440\u0441\u0438\u044f 4\u00bb) \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d \u043d\u0430 IBM 1130.<br \/> \u0412 1971 \u0433. \u041c\u0443\u0440 \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u0432 NRAO. \u041f\u0435\u0440\u0435\u0434 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u043e\u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f\u043e\u043c. \u042d\u0412\u041c \u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f\u0430 (DDP-116, Honeywell) \u0438\u043c\u0435\u043b\u0438 \u043d\u0438\u0447\u0442\u043e\u0436\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u041e\u0417\u0423. \u041c\u0443\u0440 \u0432\u0441\u0442\u0440\u043e\u0438\u043b \u0432 Forth \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f\u043e\u043c \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435.<br \/> \u0412\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442, \u0437\u0430\u043d\u044f\u043b\u0430 8 \u041a\u0411 \u041e\u0417\u0423, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0430\u0441\u044c \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432. \u0423\u0441\u043f\u0435\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f\u043e\u043c Forth \u0437\u0430\u043b\u043e\u0436\u0438\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043b\u044f \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. Forth \u0441\u0442\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e<br \/> \u0412 1973 \u0433. \u041c\u0443\u0440 \u0438 \u042d\u043b\u0438\u0437\u0430\u0431\u0435\u0442 \u0420\u0430\u0437\u0435\u0440 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u043b\u0438 Forth Inc, \u0438 \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438 Forth \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043e\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0432\u043e\u0434\u043e\u0432 \u0434\u043e \u043c\u0438\u0441\u0441\u0438\u0439 NASA. \u0412 1985 \u0433. \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Novix NC4016 \u0434\u043b\u044f Forth. \u0412 1994 \u0433. \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u044f Sun Microsystems \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442 Forth \u0432 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 (Firmware) \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u0439 SPARC (Open Boot, IEEE 1275).<\/p>\n<p>FORTH \u0412 \u042d\u0412\u041c \u0421\u041f\u0415\u0426\u041d\u0410\u0417\u041d\u0410\u0427\u0415\u041d\u0418\u042f, \u041f\u0420\u041e\u0415\u041a\u0422\u042b \u041d\u0410\u0421\u0410 [8]<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>------+-----------------------+-----------------+----------------------------   \u0414\u0410\u0422\u0410 | \u041f\u0420\u041e\u0415\u041a\u0422 \/ \u041e\u0420\u0413\u0410\u041d\u0418\u0417\u0410\u0426\u0418\u042f  | \u0410\u041f\u041f\u0410\u0420\u0410\u0422\u041d\u0410\u042f \u0411\u0410\u0417\u0410 | \u0426\u0415\u041b\u0415\u0412\u0410\u042f \u0424\u0423\u041d\u041a\u0426\u0418\u042f  ------+-----------------------+-----------------+----------------------------   1971 | \u0422\u0435\u043b\u0435\u0441\u043a\u043e\u043f \u041a\u0438\u0442\u0442-\u041f\u0438\u043a     | DDP-116 (16-bit)| \u041d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0441\u0431\u043e\u0440 \u0440\u0430\u0434\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0438   1976 | \u041f\u0440\u043e\u0435\u043a\u0442 Viking (NASA)  | Custom Logic    | \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0433\u0440\u0443\u043d\u0442\u0430 (GCMS)   1986 | \u041c\u0438\u0441\u0441\u0438\u044f Giotto (ESA)   | RCA 1802        | \u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u044b\u043b\u0435\u0432. \u0445\u0432\u043e\u0441\u0442\u0430 \u043a\u043e\u043c\u0435\u0442\u044b   1989 | \u041c\u0438\u0441\u0441\u0438\u044f Galileo (NASA) | RCA 1802        | \u041f\u043b\u0430\u0437\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440\u043e\u043c\u0435\u0442\u0440 (PLS)   1994 | Clementine (BMDO)     | RTX 2000        | \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f, \u043a\u0430\u0440\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u041b\u0443\u043d\u044b   1997 | Cassini (NASA\/ESA)    | RTX 2000        | \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u044b\u043b\u0438   1998 | Deep Space 1 (NASA)   | RTX 2000        | \u041c\u043e\u0434\u0443\u043b\u044c \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438 \u0438 \u0441\u0432\u044f\u0437\u0438   1999 | Mars Polar Lander     | RTX 2000        | \u041b\u0438\u0434\u0430\u0440 (\u043f\u043e\u0438\u0441\u043a \u043b\u044c\u0434\u0430 \u043d\u0430 \u043f\u043e\u043b\u044e\u0441\u0435)   2004 | Rosetta \/ Philae      | RTX 2010        | \u0423\u043f\u0440\u0430\u0432\u043b. \u043f\u043e\u0441\u0430\u0434\u043e\u0447\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c  ------+-----------------------+-----------------+-----------------------------  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0420\u0415\u0415\u0421\u0422\u0420 \u041a\u041e\u0420\u041f\u041e\u0420\u0410\u0422\u0418\u0412\u041d\u042b\u0425 \u0418 \u0412\u041e\u0415\u041d\u041d\u042b\u0425 \u0412\u041d\u0415\u0414\u0420\u0415\u041d\u0418\u0419 FORTH [8]<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>--------+--------------------------+------------------------------------------   \u041f\u0415\u0420\u0418\u041e\u0414 | \u041e\u0420\u0413\u0410\u041d\u0418\u0417\u0410\u0426\u0418\u042f \/ \u041a\u041e\u0420\u041f\u041e\u0420\u0410\u0426\u0418\u042f | \u0426\u0415\u041b\u0415\u0412\u0410\u042f \u0424\u0423\u041d\u041a\u0426\u0418\u042f \u0418 \u041e\u0411\u042a\u0415\u041a\u0422 \u0423\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f  --------+--------------------------+------------------------------------------   1970-\u0435 | Mohasco Industries (USA) | \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u0411\u0414 \u0441\u043a\u043b\u0430\u0434\u043e\u0432   1978   | US Navy (\u0412\u041c\u0421 \u0421\u0428\u0410)        | \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a LONARS (Loran-C)   1980-\u0435 | FedEx                    | \u0420\u0443\u0447\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (Handhelds)   1980-\u0435 | Chrysler Corporation     | \u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439   1985   | Lockheed Martin          | \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \"\u0443\u043c\u043d\u044b\u0445\" \u0430\u043d\u0442\u0435\u043d\u043d (Smart Antenna)   1990   | US Air Force (\u0412\u0412\u0421 \u0421\u0428\u0410)   | \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (APEX)   1994   | Sun Microsystems         | Firmware OpenBoot (IEEE 1275) \u0434\u043b\u044f SPARC   2000-\u0435 | GE Digital Energy        | \u041e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 (SONET)   2002   | Northrop Grumman         | \u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (SBIRS)   2005   | Radeus Labs              | \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043d\u0430\u0437\u0435\u043c\u043d\u044b\u0445 \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u0439  --------+--------------------------+------------------------------------------  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>6. MAME, CUMM<\/strong><\/p>\n<p>Multiple Arcade Machine Emulator (MAME) \u2013 opesource \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u044b\u0441\u044f\u0447 \u0430\u0440\u043a\u0430\u0434\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432, \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439, \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 [9].<br \/> MAME \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438. \u0412 \u043d\u0435\u0433\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0434\u043b\u044f \u0441\u043e\u0442\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u0433\u0440 \u0438 BIOS \u0441 \u041f\u0417\u0423 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432, \u0434\u0438\u0441\u043a\u043e\u0432 \u0438 \u043a\u0430\u0441\u0441\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 ROM \u0444\u0430\u0439\u043b\u0430\u0445 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442. [mame-1]<br \/> CUMM \u2013 DSL \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f VM \u0444\u0438\u0440\u043c\u044b LucasArts \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u0446\u0438\u044f\u043c\u0438, \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430\u043c\u0438, \u0434\u0438\u0430\u043b\u043e\u0433\u0430\u043c\u0438 \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u0433\u0440\u0430\u0445. \u0410\u0432\u0442\u043e\u0440\u044b: \u0410\u0440\u0438\u043a \u0423\u0438\u043b\u043c\u0443\u043d\u0434\u0435\u0440 \u0438 \u0420\u043e\u043d \u0413\u0438\u043b\u0431\u0435\u0440\u0442, 1987 \u0433\u043e\u0434. CUMM \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u043d\u0430: 3DO, Apple II, Atari ST, Amiga CDTV, Commodore 64, Macintosh, NES, MS-DOS, Microsoft Windows, Sega Mega CD \u0438 \u0434\u0440. \u0412 1998 \u0433\u043e\u0434\u0443 LucasArts \u043f\u0435\u0440\u0435\u0448\u043b\u0430 \u043d\u0430 \u0434\u043e\u043c\u0435\u043d\u043d\u0443\u044e VM GrimE, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0430\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u043e\u0432\u0430\u0432 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a Lua [12].<\/p>\n<p><strong>\u0420\u0410\u0417\u0414\u0415\u041b: \u041a\u041e\u041d\u0415\u0427\u041d\u042b\u0415 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u042b<\/strong><\/p>\n<p><strong>1. \u041c\u0410\u0428\u0418\u041d\u042b \u0422\u042c\u042e\u0420\u0418\u041d\u0413\u0410<\/strong><\/p>\n<p>\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588<br \/> \u2588\u2588\u2580\u2580\u2580\u2580\u2580\u2588\u2588\u258c\u2566\u2550\u2557\u2554\u2550\u2557\u2554\u2550\u2557\u2590\u2588\u2588<br \/> \u2588\u258c\u2591\u2580\u2591\u2580\u2591\u2590\u2588\u2591\u2560\u2550\u2563\u2551\u2591\u2551\u2551\u2591\u2551\u2591\u2588\u2588<br \/> \u2588\u258c\u2591\u2591\u2588\u2591\u2591\u2590\u2584\u2591\u2569\u2550\u255d\u255a\u2550\u255d\u255a\u2550\u255d\u2590\u2588\u2588<br \/> \u2588\u258c\u2591\u2591\u2591\u2591\u2591\u2590\u2588\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588\u2588\u2588<br \/> \u2588\u2588\u2584\u2588\u2584\u2588\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588<\/p>\n<p>\u042d\u043f\u043e\u0445\u0430 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, 1930-1940-\u0435. \u0412 \u0442\u0438\u0448\u0438 \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u043e\u0432, \u0437\u0430\u0432\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430\u043c\u0438 \u0441 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u043a\u0430\u043c\u0438, \u0438 \u0432 \u0433\u0440\u043e\u0445\u043e\u0442\u0435 \u0446\u0435\u0445\u043e\u0432, \u0433\u0434\u0435 \u0440\u0435\u043b\u0435 \u043e\u0442\u0431\u0438\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u0442 \u043d\u043e\u0432\u043e\u0439 \u044d\u0440\u044b, \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u00ab\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0438\u00bb \u2013 \u043c\u0430\u0448\u0438\u043d\u044b \u0434\u043b\u044f \u043e\u0431\u0441\u0447\u0451\u0442\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0439.<br \/> \u0410\u043b\u0430\u043d \u0422\u044c\u044e\u0440\u0438\u043d\u0433 \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0447\u0435\u0440\u0442\u0435\u0436 CPU <code>(Central Processing Unit)<\/code>. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u00ab\u041c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430\u00bb \u043d\u0435\u0442, \u0430 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0443 \u044d\u0442\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<br \/> \u041c\u0430\u0448\u0438\u043d\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430 (\u041c\u0422) \u2013 \u043d\u0435 \u00ab\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u043b\u0435\u043d\u0442\u0430 \u0441 \u0431\u0443\u043a\u0432\u0430\u043c\u0438\u00bb, \u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f CPU \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u2013 RAM \u043b\u0438\u0431\u043e \u0441\u0442\u0435\u043a\u043e\u043c [13]. \u0412 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u044d\u0442\u043e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e-\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0447\u0435\u0440\u0442\u0451\u0436 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Intel 8086, Zilog Z80 \u0438\u043b\u0438 Java VM. \u041e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u0435\u0433\u043e \u043d\u0430 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<br \/> \u041e\u0431\u043e\u043b\u043e\u0447\u043a\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442: \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e (\u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u043b\u043e\u044f \u043d\u0430\u0434 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c), \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 (\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0441\u043b\u043e\u044f\u043c\u0438), \u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e (\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435) \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0415\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0437\u0432\u0451\u0437\u0434, \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043b\u0435\u0442\u043e\u043a, \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430\u0445, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<pre><code>                     Automata theory+-------------------------------------------------------+| Turing Machine                                        ||   +-----------------------------------------------+   ||   | Pushdown automaton                            |   ||   |   +---------------------------------------+   |   ||   |   | Finite-state machine                  |   |   ||   |   |   +-------------------------------+   |   |   ||   |   |   |                               |   |   |   ||   |   |   |      Combinational logic      |   |   |   ||   |   |   |                               |   |   |   ||   |   |   +-------------------------------+   |   |   ||   |   +---------------------------------------+   |   ||   +-----------------------------------------------+   |+-------------------------------------------------------+<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<ol>\n<li>\n<p>\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u042f\u0434\u0440\u043e <code>(Combinational Logic)<\/code> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u043f\u043b\u044e\u0441, \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c, \u0438\u0442\u0434). \u042f\u0434\u0440\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u0432 \u00ab\u0433\u043e\u043b\u043e\u0432\u043a\u0435\u00bb \u043c\u0430\u0448\u0438\u043d\u044b. \u0423 \u044f\u0434\u0440\u0430 \u043d\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u0438; \u043e\u043d\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435. \u0412 CPU \u044d\u0442\u043e \u0410\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u043e-\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e ALU <code>(Arithmetic Logic Unit)<\/code>. \u0412 VM \u044d\u0442\u043e \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435) \u043d\u0430\u0434 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430\u043c\u0438 \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u0441\u0442\u0435\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 <code>FSM (Finite-State Machine)<\/code> \u2013 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0434\u0430\u043d\u043d\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c [14] \u043d\u0430\u0434 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u043c\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0438\u043b\u0438 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u043c \u0433\u0440\u0430\u0444\u043e\u043c [15]. FSM \u0438\u043b\u0438 \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u2013 \u044d\u0442\u0430\u043f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u0432 \u0444\u0438\u0437\u0438\u043a\u0443. \u042d\u0442\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u044f\u0442\u0451\u0440\u043a\u043e\u0439 <code>FSM = (S, X, Y, s0, \u03b4)<\/code> [16]. \u0415\u0451 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u044b\u0442\u044c \u0447\u0435\u0440\u0442\u0451\u0436\u043e\u043c (\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439) \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430, \u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u00ab\u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u2013 \u043e\u0431\u044a\u0435\u043a\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0438\u0440\u0430\u00bb. \u042d\u0442\u043e \u044d\u0442\u0430\u043f, \u0433\u0434\u0435 \u0447\u0430\u0441\u0442\u044f\u043c \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u0441\u0442\u0430\u0432\u044f\u0442 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430, \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443 (\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0451 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043c). \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0437\u0430\u0434\u0430\u044e\u0442 \u0431\u043b\u043e\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u0439 (\u0440\u0435\u043b\u0435), \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043c\u043e\u0442\u043e\u0440\u0430\u043c\u0438 \u0438 \u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u043e \u0436\u0435\u0441\u0442\u043a\u043e\u043c\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443. \u0412 CPU \u043c\u0435\u0441\u0442\u043e \u044d\u0442\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0437\u0430\u043d\u044f\u043b \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u0434 \u2013 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0444\u0438\u0437\u0438\u043a\u043e\u0439 \u00ab\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0435\u043d\u0442\u0438\u043b\u0435\u0439\u00bb \u0438 \u00ab\u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439\u00bb. \u041a\u0430\u0436\u0434\u0430\u044f \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u0430\u043d\u0434, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 <code>PDA (Pushdown Automaton)<\/code> \u0438\u043b\u0438 \u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u0441 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e [17] \u2013 \u044d\u0442\u043e \u0442\u0440\u0435\u0442\u044c\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044f. \u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 FSM \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 LIFO [18]. \u0421 \u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u00abpush\/pop\u00bb \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0443 \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u043c. <code>PDA = (S, X, Y, s0, \u03b4, \u0393, Z)<\/code>, \u0433\u0434\u0435 <code>\u0393 (Stack Alphabet)<\/code> \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442 \u0434\u043b\u044f \u0441\u0442\u0435\u043a\u0430 (\u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u0441 \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u043e\u043c), \u0430 Z \u2013 \u043c\u0430\u0440\u043a\u0435\u0440 \u0434\u043d\u0430 \u0441\u0442\u0435\u043a\u0430. \u0423 FSM \u043f\u0430\u043c\u044f\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u043c\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. FSM \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>abc*<\/code>), \u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u0423 PDA \u043f\u0430\u043c\u044f\u0442\u044c = \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 + \u0441\u0442\u0435\u043a LIFO. \u0412 \u0441\u0442\u0435\u043a \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0430\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0432\u0435\u0440\u0445 \u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u0435\u0440\u0445\u0443, \u0447\u0442\u043e \u0443\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e-\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, C).<\/p>\n<\/li>\n<li>\n<p>\u00ab\u041b\u0435\u043d\u0442\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430\u00bb \u2013 \u044d\u0442\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c RAM (Random Access Memory) [19]. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u00ab\u0433\u043e\u043b\u043e\u0432\u043a\u0435\u00bb \u00ab\u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432\u043b\u0435\u0432\u043e\/\u0432\u043f\u0440\u0430\u0432\u043e\u00bb, \u00ab\u0441\u0447\u0438\u0442\u0430\u0442\u044c\/\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u044f\u0447\u0435\u0439\u043a\u0443 \u043b\u0435\u043d\u0442\u044b\u00bb \u0430\u043d\u0430\u043b\u043e\u0433 \u043a\u043e\u043c\u0430\u043d\u0434 CPU \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a RAM. \u041b\u0438\u043d\u0435\u0439\u043d\u043e-\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 LBA (Linear Bounded Automaton) \u2013 \u044d\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0441 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c RAM [20]. RAM \u2013 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0448\u0438\u043d\u044b \u00ab\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0424\u043e\u043d \u041d\u0435\u0439\u043c\u0430\u043d\u0430\u00bb [21] \u2013 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u0442\u0435\u043e\u0440\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 RAM \u0438\u043c\u0435\u0435\u0442 k*n \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438, \u0433\u0434\u0435 k \u2013 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430, n \u2013 \u0434\u043b\u0438\u043d\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u0441\u0447\u0451\u0442\u0430 \u043d\u0430 LBA. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 RAM \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u043c\u0430\u0448\u0438\u043d\u044b. \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e \u043b\u044e\u0431\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u044d\u0442\u043e LBA.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 <code>TM (\u00abTuring machine\u00bb)<\/code>, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 1-4 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u041c\u0430\u0448\u0438\u043d\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430\u00bb. \u042d\u0442\u043e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0443\u0435\u0442 (\u00ab\u0432\u043c\u0435\u0449\u0430\u0435\u0442\u00bb) \u0432\u0441\u0435 \u0434\u0440\u0443\u0433\u0438\u0435, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0432\u0441\u0435\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0451. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u041c\u0422, \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043c\u044b\u043c\u0438 \u043f\u043e \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0443\u00bb \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b (\u0438\u0431\u043e \u0441\u043c. \u043f\u0443\u043d\u043a\u0442 \u21161 &#8212; \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0440\u043e\u0437\u043d\u044f\u0442\u0441\u044f). \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 [22] \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0447\u0430\u043b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432 (\u0432\u0432\u0435\u0441\u0442\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0434 \u043d\u0438\u043c\u0438, \u0432\u0437\u044f\u0442\u044c \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432). \u00ab\u0412\u0440\u0435\u043c\u044f\u00bb \u0434\u043b\u044f FSM \u0440\u0430\u0437\u0431\u0438\u0442\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0448\u0430\u0433\u0438: \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043f\u043b\u0430\u0432\u043d\u043e, \u0430 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e (\u00ab\u0441\u043a\u0430\u0447\u043a\u043e\u043c\u00bb). \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b: \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 (\u0432 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0445\u0435\u043c\u0430\u0445), \u043b\u0438\u0431\u043e \u043f\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\/\u0432\u0432\u043e\u0434\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u041c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u0448\u0430\u0433\u0430\u043c\u0438 (\u0442\u0430\u043a\u0442\u0430\u043c\u0438) \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u043e\u043a\u043e\u0435, \u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0422\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 CPU \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e. \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0442\u0432\u043e\u0440\u044b (\u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u044b) \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0438\u043b\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442 \u0442\u043e\u043a \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430: \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u00ab\u043f\u0440\u043e\u0442\u0435\u043a\u0430\u0435\u0442\u00bb \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u0433\u0438\u043a\u0443 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u0430\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043d\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, CPU \u0432\u044b\u0434\u0430\u0451\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0441\u0438\u0433\u043d\u0430\u043b \u00ab\u043f\u0443\u0441\u0442\u043e\u00bb (\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c\u0438) \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u043e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e\u0442 \u0436\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0430 \u0432\u0441\u0435 \u0443\u0437\u043b\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. \u0411\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0440\u0438\u0442\u043c\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043e\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u0438 \u0431\u044b \u0432 \u0440\u0430\u0437\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u043b\u043e \u0431\u044b \u0445\u0430\u043e\u0441 \u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445. \u0422\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0437\u0430\u0434\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0445\u0435\u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e). \u041c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u043e\u0434\u043d\u044b\u0435 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u0438 \u0441\u043e\u0444\u0438\u0441\u0442\u0438\u043a\u0443 \u043e \u00ab\u043f\u043e\u043b\u043d\u043e\u0442\u0435 \u044f\u0437\u044b\u043a\u0430 \u043f\u043e \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0443\u00bb \u0438\u043b\u0438 \u00ab\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 \u043b\u0435\u043d\u0442\u044b\u00bb. \u041e\u043d\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041c\u0430\u0448\u0438\u043d\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430 \u2013 \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044f. \u041e\u043d\u0430 \u0443\u0447\u0438\u0442 \u043d\u0430\u0441, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c \u0435\u0441\u0442\u044c \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u044f\u0434\u0440\u0430, \u0433\u0440\u0430\u0444\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u043e\u043d\u0438\u043c\u0430\u044f \u044d\u0442\u0443 \u043f\u0440\u0435\u0435\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0432\u0438\u0434\u0438\u0442 \u043d\u0435 \u043d\u0430\u0433\u0440\u043e\u043c\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439, \u0430 \u0441\u0442\u0440\u043e\u0439\u043d\u0443\u044e \u0438 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u0437\u0430\u0440\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u044d\u0440\u044b.<\/p>\n<\/li>\n<\/ol>\n<p><strong>2. \u041c\u0410\u0422\u0415\u041c\u0410\u0422\u0418\u041a\u0410 \u041a\u041e\u041d\u0415\u0427\u041d\u041e\u0413\u041e \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410 \u0414\u041b\u042f \u0418\u041d\u0416\u0415\u041d\u0415\u0420\u0410<\/strong><\/p>\n<p>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2584\u2584\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2580\u2591\u2591\u2591\u2591\u2591\u2580\u2580\u2580\u2588\u2588\u2584\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2584\u2584\u2591\u2591\u2591\u2580\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2584\u2588\u2588\u2588\u2588\u2584\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2584\u2584\u2584\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2584\u2584\u2588\u2580\u2580\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2580\u2580\u2580\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2580\u2580\u2580\u2580\u2580\u2588\u2588\u2588\u2588\u2588\u2584\u2584\u2591\u2591\u2591\u2591\u2580\u2580\u2588\u2588\u2584\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591\u2580\u2580\u2588\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2584\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2591\u2588\u2588\u2591\u2591\u2591\u2580\u2580\u2588\u2588\u2584\u2584\u2591\u2591\u2591\u2580\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2584\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2584\u2588\u2588\u2588\u2580\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2584\u2584\u2580\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2580\u2580\u2588\u2588\u2584\u2591<br \/> \u2584\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2584\u2591\u2591\u2584\u2588\u2580\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2580\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588<br \/> \u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2580\u2591\u2591\u2591\u2591\u2591\u2584\u2584\u2588\u2580\u2591\u2591\u2588\u2588\u2588\u2584\u2584\u2591\u2591\u2591\u2591\u2588\u2588<br \/> \u2580\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2591\u2584\u2588\u2588\u2580\u2580\u2580\u2580\u2588\u2588\u2584\u2584\u2588\u2588<br \/> \u2591\u2580\u2588\u2588\u2584\u2584\u2591\u2591\u2591\u2591\u2584\u2584\u2588\u2588\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2580\u2591\u2584\u2584\u2584\u2591\u2591\u2580\u2588\u2588\u2580\u2591<br \/> \u2591\u2591\u2591\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2580\u2580\u2580\u2591\u2591\u2588\u2588\u2588\u2588\u2580\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2580\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591\u2584\u2584\u2591\u2591\u2588\u2584\u2584\u2588\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2580\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2580\u2580\u2591\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2584\u2584\u2584\u2584\u2584\u2588\u2588\u2580\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2580\u2588\u2588\u2584\u2584\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2584\u2584\u2580\u2580\u2580\u2591\u2591\u2591\u2584\u2588\u2588\u2580\u2580\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2580\u2580\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<\/p>\n<p>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f FSM (Finite State Machine) \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f <code>\u03b4<\/code> (\u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0435\u0439) \u043d\u0430\u0434 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0442\u0440\u0451\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432 <code>S, X, Y<\/code>. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e.<br \/> \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u2013 <code>S, X, Y<\/code> \u0437\u0430\u0434\u0430\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c \u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.<br \/> \u00ab\u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u00bb X \u2013 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442: \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043e\u0442 \u0432\u0441\u0435\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432.<br \/> \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0430\u0448\u0438\u043d\u044b S \u2013 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0440\u0435\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c. \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 s\u2080 \u2013 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 S, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab\u0421\u0431\u0440\u043e\u0441\u00bb.<br \/> \u0423 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c S, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u0435\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0438\u0437\u0432\u043d\u0435. F \u2013 \u044d\u0442\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e S, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u00ab\u0444\u0438\u043d\u0430\u043b\u0430\u043c\u0438\u00bb. \u0412 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u043e \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0437 F \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0435\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b \u0438\u0437 Y \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0443. \u042d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u044b\u0445 \u043d\u0430\u043c (\u0438\u043b\u0438 \u00ab\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445\u00bb) \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439. \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442: \u043c\u0430\u0448\u0438\u043d\u0430 \u043d\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u043b\u0438\u043c\u043e\u043d\u0430\u0434 \u0438\u043b\u0438 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0430. \u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <code>y \u2208 Y<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f <code>s\u2208 S<\/code> . \u0415\u0441\u043b\u0438 \u0432 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u0445 \u00ab\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u00bb, \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0432\u044b\u0434\u0430\u0435\u0442 \u00ab\u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u00bb \u0438\u043b\u0438 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b \u03b5\u00bb. \u0412 \u043d\u0430\u0448\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445 FSM \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.<br \/> \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 (\u0438\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435) \u03b4 \u0437\u0430\u0434\u0430\u043d\u0430 \u043a\u0430\u043a <code>\u03b4:S\u00d7X\u2192S<\/code> [23]. \u0414\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <code>\u00d7<\/code> \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u044b \u0441\u0442\u0440\u043e\u0438\u043c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u044b \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432 S \u0438 X \u0438 \u0441\u0442\u0430\u0432\u0438\u043c \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 S. \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043c\u044b \u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u044b (\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b).<br \/> \u0414\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 [24]. \u041f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0441 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0434\u0430\u0441\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u043e <code>(s2,C)-&gt;s1<\/code>.<br \/> \u00ab\u0421\u0438\u043c\u0432\u043e\u043b\u00bb \u2013 \u044d\u0442\u043e \u0437\u043d\u0430\u043a (\u0431\u0443\u043a\u0432\u0430 \u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u0430) \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0430\u044f \u0441\u0438\u0433\u043d\u0430\u043b, \u00ab\u0430\u043b\u0444\u0430\u0432\u0438\u0442\u00bb \u2013 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u00ab\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432\u00bb.<\/p>\n<pre><code>                     \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b                                  |                                  V  +--------------+------+------+------+--------+  | \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u042f S  | \u0412\u0425\u041e\u0414\u041d\u041e\u0419 \u0410\u041b\u0424\u0410\u0412\u0418\u0422 X (\u0421\u0438\u0433\u043d\u0430\u043b\u044b) |  +--------------+------+------+- ----+--------+  |              |  A   |  B   | [C]  | D      |  +--------------+------+------+------+--------+  |    s1        |  s2  |  s1  |  s1  | s1     |  +--------------+------+------+------+--------+  |   [s2]       |  s2  |  s3  | [s1] | s1     |  &lt;--- \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435  +--------------+------+------+------+--------+  |    s3        |  s3  |  s3  |  s4  | s1     |  +--------------+------+------+------+--------+  |    s4        |  s1  |  s1  |  s1  | s1     |  +--------------+------+------+------+--------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c <code>FSM = (S, X, Y, s0, \u03b4)<\/code> \u2013 \u044d\u0442\u043e \u0447\u0435\u0440\u0442\u0435\u0436 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439. \u0417\u0430\u0434\u0430\u0447\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u2013 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0438 \u043e\u0434\u0438\u043d \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u043b \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e, \u043d\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u03b4.<br \/> \u0421\u043f\u0438\u0434\u043e\u043c\u0435\u0442\u0440 \u2013 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0441\u043a\u0430\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432. \u041a\u0430\u0436\u0434\u043e\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u043a\u043e\u043b\u0435\u0441\u043e \u044d\u0442\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f FSM. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0441\u043b\u0443\u0436\u0438\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/005\/d80\/492\/005d80492134a02df4ee309e98f42193.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/005\/d80\/492\/005d80492134a02df4ee309e98f42193.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/005\/d80\/492\/005d80492134a02df4ee309e98f42193.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<pre><code>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0434\u043b\u044f FSM \u00ab\u0421\u043f\u0438\u0434\u043e\u043c\u0435\u0442\u0440\u00bb  X (\u0412\u0445\u043e\u0434, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e)= { \u00ab\u041f\u041e\u0412\u041e\u0420\u041e\u0422\u00bb (\u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u043e\u043b\u0447\u043e\u043a \u043a\u043e\u043b\u0435\u0441\u0430) }  Y (\u0412\u044b\u0445\u043e\u0434, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e) = { \u00ab\u041f\u0423\u0421\u0422\u041e\u00bb, \u00ab\u041f\u041e\u0412\u041e\u0420\u041e\u0422\u00bb }  S (\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}  s0 (\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 S) = 0  \u03b4 = FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u0433\u0434\u0435 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 9-&gt;0 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u00ab\u041f\u041e\u0412\u041e\u0420\u041e\u0422\u00bb \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e FSM \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435, \u0434\u043b\u044f \u0438\u043d\u044b\u0445 \u0441\u043c\u0435\u043d \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u2013 \u00ab\u041f\u0423\u0421\u0422\u041e\u00bb.  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>3. \u041a\u041e\u041d\u0415\u0427\u041d\u042b\u0419 \u0410\u0412\u0422\u041e\u041c\u0410\u0422 \u0413\u041b\u0410\u0417\u0410\u041c\u0418 \u0418\u041d\u0416\u0415\u041d\u0415\u0420\u0410-\u041a\u041e\u041d\u0421\u0422\u0420\u0423\u041a\u0422\u041e\u0420\u0410<\/strong><\/p>\n<p>_________\u2584\u2588\u2588\u273f\u2588\u2588\u2588\u2584<br \/> _______ \u2584\u2588\u2588\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2584<br \/> ______\u2588\u2588\u2580__\u2588\u2588\u2588\u2592\u2588\u2588\u2588\u2588<br \/> _____\u2588\u2588____\u2588\u2588\u2588\u2591\u2591\u066e\u2591\u2580<br \/> ______\u2588\u2588____\u2588\u2588\u2591\u2591\u2591\u2591\u2591<br \/> _______\u2588\u2588____\u2588\u2588\u2591\u2591\u2665 _ (\u2740\u273f\u2740)<br \/> ________\u2588_____\u2588\u2592 ___ (\u273f \u263c \u273f)<br \/> _________\u2588___\u2593\u2593\u2591\u2593 ___ (\u2740\u2590 \u2740)<br \/> ____\u2588\u2740 _\u2588_\u2593\u2593\u2593\u2592\u2591\u2592\u2593 __\u2588_\u2590__\u2584<br \/> _____\u2580\u2588\u2580_\u2593\u2593_\u2593\u2593\u2592\u2591\u2592\u2593 \u2580\u2588\u2590_\u2588<br \/> _________\u2593\u2593_\u2593\u2593\u2593\u2593\u2593\u2593 ____ \u2590\u2580<br \/> _________\u2593\u2593_\u2593\u2593\u2593\u2593\u2593 ______ \u2590<br \/> _______\u2593\u2593__\u2593\u2593\u2593\u2593_\u2593\u2593 ____ \u2590\u2591<br \/> ______\u2593\u2593__\u2593\u2593\u2593\u2593\u2593___\u2593 ___ \u2592\u2592<br \/> _____\u2593\u2593_\u2593\u2588\u2588\u2588\u274b\u2588\u2588\u2593__\u2593\u2593\u2593<br \/> ___\u2592\u2592___\u2593\u2588\u2588\u2592\u2588\u2588\u2588\u2592\u2593<br \/> ___\u2591___\u2593\u2588\u2588\u2592\u2588\u2588\u2588\u2592\u2588\u2588\u2593<br \/> ______\u2593\u2588\u2588\u2592\u2588\u2588\u2588\u2592\u2588\u2588\u2588\u2592\u2593<br \/> _____\u2593\u2588\u2588\u2592\u2588\u2588\u2588\u2592\u2588\u2588\u2588\u2592\u2588\u2588\u2593<br \/> _____\u2593\u2588\u2592\u2588\u2588\u2588\u2592\u2588\u2588\u2588\u2592\u2588\u2588\u2588\u2592\u2593<br \/> \u2593___\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593<br \/> \u2593________\u2592\u2591\u2591\u2591\u2592\u2591\u2591\u2591\u2592<br \/> \u2593________\u2592\u2591\u2591\u2591\u2592\u2591\u2591\u2591\u2592<br \/> \u2593________\u2592\u2591\u2591\u2592_\u2592\u2591\u2591\u2591\u2592<br \/> \u2593________\u2592\u2591\u2591\u2592__\u2592\u2591\u2591\u2591\u2592<br \/> \u2593________\u2592\u2591\u2591\u2592__\u2592\u2591\u2591\u2591\u2592<br \/> \u2593________\u2592\u2591\u2591\u2592__\u2592\u2591\u2591\u2591\u2592<br \/> \u2593________\u2592\u2591\u2591\u2592\u2592\u2591\u2591\u2591\u2592<br \/> \u2593\u2584\u2584\u2584\u2584\u2584\u2584\u2592\u2591\u2591\u2592\u2591\u2591\u2592<br \/> \u2593\u2588\u2588\u2588\u2588\u2588\u2588\u2592\u2591\u2591\u2592\u2592<br \/> \u2593_\u2588\u2764\u2588___\u2588\u2588\u2588<br \/> \u2593\u2588\u2588\u2588____\u2588\u2588\u2588<br \/> \u2593\u2588_______\u2588\u2588\u2588<br \/> \u2593________\u2588\u2588\u2765\u2588<br \/> \u2593________\u2588\u2588\u2580\u2588\u2588\u2584<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0444\u0438\u0437\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0435\u043f\u0440\u043e\u043d\u0438\u0446\u0430\u0435\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u0433\u043e\u0440\u043e\u0434\u043a\u043e\u0439, \u0430 \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u2013 \u0447\u0435\u0442\u043a\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0430.<\/p>\n<p><strong>3.1 \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: \u0432 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0438 \u0432 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u0438<\/strong><\/p>\n<p>\u0412 \u0442\u0435\u043e\u0440\u0438\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (state) \u2013 \u044d\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043f\u0443\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<br \/> \u0414\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u2013 \u044d\u0442\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430 \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0435 1960-\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u043e: \u044d\u0442\u043e \u043b\u0438\u0431\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0432\u0430\u043b\u0430 \u0448\u0430\u0433\u043e\u0432\u043e\u0433\u043e \u0438\u0441\u043a\u0430\u0442\u0435\u043b\u044f, \u043b\u0438\u0431\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0437\u0430\u043c\u043a\u043d\u0443\u0442\u044b\u0445 \u0438 \u0440\u0430\u0437\u043e\u043c\u043a\u043d\u0443\u0442\u044b\u0445 \u0440\u0435\u043b\u0435.<\/p>\n<p><strong>3.2 \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b: \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043a\u0430\u043a \u00ab\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u00bb<\/strong><\/p>\n<p>\u0414\u043b\u044f \u0441\u0442\u0440\u043e\u0433\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043e\u0431\u044f\u0437\u0430\u043d \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u00ab\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u00bb.<br \/> \u0412 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u00ab\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u00bb \u2013 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0438 \u043d\u0430\u0434 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432. \u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044e \u00ab\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 + \u0421\u0438\u0433\u043d\u0430\u043b\u00bb \u043c\u044b \u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0430\u0440\u0443 \u00ab\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 + \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u00bb.<br \/> \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f:<br \/> \u2013 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 (\u043c\u0430\u0442\u0440\u0438\u0446\u0430): \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0442\u044b (\u043d\u0435\u0442 \u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432 \u0438\u043b\u0438 \u00ab\u0434\u044b\u0440\u00bb \u0432 \u043b\u043e\u0433\u0438\u043a\u0435)<\/p>\n<pre><code>    \u0422\u0410\u0411\u041b\u0418\u0426\u0410 \u041b\u041e\u0413\u0418\u0427\u0415\u0421\u041a\u0418\u0425 \u0421\u0412\u042f\u0417\u0415\u0419 \"\u0410\u0412\u0422\u041e\u041c\u0410\u0422-\u041c\u0422\"      +-----------+-----------+-----------+------------+      |  \u0422\u0415\u041a\u0423\u0429\u0415\u0415  |  \u0412\u0425\u041e\u0414\u041d\u041e\u0419  | \u0421\u041b\u0415\u0414\u0423\u042e\u0429\u0415\u0415 |  \u0412\u042b\u0425\u041e\u0414\u041d\u041e\u0419  |      | \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0415 |  \u0421\u0418\u041c\u0412\u041e\u041b   | \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0415 |   \u0421\u0418\u041c\u0412\u041e\u041b   |      |   (S_n)   |   (In)    |  (S_n+1)  |   (Out)    |      +-----------+-----------+-----------+------------+      |     0     |     \u041c     |     1     |     A0     |      |     1     |     \u041e     |     0     |     A7     |      |    ...    |    ...    |    ...    |    ...     |      +-----------+-----------+-----------+------------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0434\u0430\u043b\u0435\u0435 \u0442\u0430\u043a\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u00ab\u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u043f\u0430\u043a\u0443\u044e\u0449\u0430\u044f FSM\u00bb \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u00abFSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u00bb<\/p>\n<p>\u2013 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u043e\u0440\u043c\u0430 (\u0433\u0440\u0430\u0444): \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0442\u043e\u043a\u0430.<br \/> \u0423\u0437\u043b\u044b \u0433\u0440\u0430\u0444\u0430 \u2013 \u044d\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 (S), \u0440\u0435\u0431\u0440\u0430 (\u0441\u0442\u0440\u0435\u043b\u043a\u0438) \u2013 \u0441\u0432\u044f\u0437\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c (In). \u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0431\u0440\u043e \u0433\u0440\u0430\u0444\u0430 \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0446\u0435\u043f\u044c \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<br \/> \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e. \u041f\u043e\u043a\u0430 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435 \u0432 4-\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u0441\u0431\u043e\u0440\u043a\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0434\u0435\u0442 \u043a \u0445\u0430\u043e\u0441\u0443 \u0432 \u043c\u0435\u0436\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u044f\u0445.<\/p>\n<p><strong>3.3 \u0426\u0438\u043a\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b<\/strong><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043c\u0435\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0435 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0430 \u0441\u0442\u0440\u043e\u0433\u043e\u043c\u0443 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u0446\u0438\u043a\u043b\u0443.<\/p>\n<pre><code>state = BEGIN;                  \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435  while (state !== END)           \/\/ \u041f\u043e\u043a\u0430 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u0430 \u0446\u0435\u043b\u044c \u0438\u043b\u0438 \u0441\u0431\u043e\u0439  {      in = getSignal();           \/\/ \u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430      step = machine[state][in];  \/\/ \u0412\u044b\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439      execute(step.action);       \/\/ \u041f\u043e\u0434\u0430\u0447\u0430 \u0442\u043e\u043a\u0430 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c (Out)      state = step.next;          \/\/ \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043d\u043e\u0432\u0443\u044e \u0444\u0430\u0437\u0443  }  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 1960-\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u00ab\u0444\u0430\u0437\u0430\u00bb, \u00ab\u043f\u043e\u0437\u0438\u0446\u0438\u044f\u00bb \u0438 \u00ab\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u00bb \u2013 \u0441\u0438\u043d\u043e\u043d\u0438\u043c\u044b. \u041f\u043e\u0434 \u00ab\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043d\u043e\u0432\u0443\u044e \u0444\u0430\u0437\u0443\u00bb \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439. \u042d\u0442\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0430\u0441\u043f\u0435\u043a\u0442: \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 (\u0444\u0430\u0437\u0435) \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430.<br \/> \u041f\u043e\u043a\u0430 \u00ab\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043d\u043e\u0432\u0443\u044e \u0444\u0430\u0437\u0443\u00bb \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 (\u0432\u0430\u043b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0440\u0435\u043b\u0435 \u043d\u0435 \u0437\u0430\u0449\u0435\u043b\u043a\u043d\u0443\u043b\u043e\u0441\u044c), \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0415\u0441\u043b\u0438 \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u043f\u0430\u0434\u0435\u0442 \u043f\u0438\u0442\u0430\u043d\u0438\u0435, \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u00ab\u0437\u0430\u0432\u0438\u0441\u043d\u0435\u0442\u00bb \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438. \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0443\u043c\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0444\u0430\u0437\u0430 \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0447\u0435\u0442\u043a\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u0430\u0448\u0438\u043d\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442 \u043d\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0448\u0430\u0433\u0438, \u0430 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u043e.<\/p>\n<p><strong>3.4 \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (S_curr \u2192 S_next)<\/strong><\/p>\n<p>\u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430: \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043a\u0442 \u0441\u043c\u0435\u043d\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u0430 S_curr \u2192 S_next \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0435\u043c\u0443 \u0441\u043c\u0435\u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0448\u0438\u043d\u044b.<br \/> \u0412 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 state. \u0421\u0442\u0430\u0440\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u043d\u043e\u0432\u043e\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0412 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 (\u043c\u0430\u0448\u0438\u043d\u0430): \u043c\u043e\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u0443\u0437\u0435\u043b \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u0430.<\/p>\n<pre><code>    \u0421\u0425\u0415\u041c\u0410 \u0420\u0410\u0417\u0413\u0420\u0410\u041d\u0418\u0427\u0415\u041d\u0418\u042f \u041f\u0415\u0420\u0415\u0425\u041e\u0414\u0410 (\u041c\u0410\u0422\u0415\u041c\u0410\u0422\u0418\u041a\u0410 \u0418 \u0424\u0418\u0417\u0418\u041a\u0410)      --------------------------------------------------            \u041c\u0410\u0422\u0415\u041c\u0410\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0419 \u041f\u041b\u0410\u041d (\u041c):   { S_0 }  --( In )--&gt;  { S_1 }                                   ^                      ^      \u0411\u0418\u0415\u041a\u0426\u0418\u042f (\u041f\u0435\u0440\u0435\u043d\u043e\u0441):           | [\u0412\u0417\u0410\u0418\u041c\u041d\u041e-\u041e\u0414\u041d\u041e\u0417\u041d\u0410\u0427\u041d\u041e] |                                   v                      v      \u0424\u0418\u0417\u0418\u0427\u0415\u0421\u041a\u0418\u0419 \u041f\u041b\u0410\u041d (P):       [\u0423\u0413\u041e\u041b 0] --( \u0422\u043e\u043a )--&gt; [\u0423\u0413\u041e\u041b 1]            \u041e\u041f\u0420\u0415\u0414\u0415\u041b\u0415\u041d\u0418\u0415: \"\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\" \u0432 \u043c\u0435\u0442\u0430\u043b\u043b\u0435 \u2013 \u044d\u0442\u043e       \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0435\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>3.5 \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0438 \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430<\/strong><\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u0446\u0438\u0444\u0440\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438.<br \/> \u0428\u0430\u0433 1: \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0437 (\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u044f). \u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442 \u0437\u0430 \u0446\u0438\u043a\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0433\u0434\u0430 \u043c\u0430\u0448\u0438\u043d\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435. \u041a\u0430\u0436\u0434\u0430\u044f \u0442\u0430\u043a\u0430\u044f \u0444\u0430\u0437\u0430 \u2013 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u00ab\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u00bb.<br \/> \u0428\u0430\u0433 2: \u041f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 (\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f). \u0412 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u043d\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u0438\u0439 \u00ab\u0433\u0443\u0434\u0438\u0442\u00bb \u0438\u043b\u0438 \u00ab\u0433\u043e\u0440\u0438\u0442\u00bb. \u041a\u0430\u0436\u0434\u043e\u0439 \u0444\u0430\u0437\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0446\u0435\u043b\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 <code>S \u2208 {0,1,2,...}<\/code>.<br \/> \u0422\u0430\u0431\u043b\u0438\u0446\u0443 \u0428\u0430\u0433\u0430 1 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u0414\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0435\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b\u043c\u0438 (\u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u043c\u0438), \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u0430\u0447\u0435 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0432\u044b\u0434\u0430\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 (\u0438\u043b\u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u043d\u043e\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u043c) \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u041d\u0435\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0442.<\/p>\n<\/li>\n<\/ol>\n<pre><code>    \u041f\u0420\u041e\u0422\u041e\u041a\u041e\u041b \u041c\u0418\u041d\u0418\u041c\u0418\u0417\u0410\u0426\u0418\u0418      --------------------------------------      \u0418\u0421\u0425\u041e\u0414\u041d\u0410\u042f \u0422\u0410\u0411\u041b\u0418\u0426\u0410:         |    \u041e\u041f\u0422\u0418\u041c\u0418\u0417\u0418\u0420\u041e\u0412\u0410\u041d\u041d\u0410\u042f:      S1 + [In] -&gt; [Sk], [Out]  |          S2 + [In] -&gt; [Sk], [Out]  |    S_new + [In] -&gt; [Sk], [Out]      --------------------------|----------------------------      \u0412\u042b\u0412\u041e\u0414: S1 \u0438 S2 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0443\u0437\u043b\u043e\u043c S_new.  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<ol start=\"2\">\n<li>\n<p>\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432\u0432\u043e\u0434\u044f\u0442 \u043d\u0435\u044f\u0432\u043d\u044b\u0439 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b F (Fault \u2013 \u0441\u0431\u043e\u0439) \u0441 \u0432\u044b\u0441\u0448\u0438\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c. \u0415\u0433\u043e \u043f\u043e\u0434\u0430\u044e\u0442 \u0434\u0430\u0442\u0447\u0438\u043a\u0438, \u0441\u043b\u0435\u0434\u044f\u0449\u0438\u0435 \u0437\u0430 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. \u041f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 F \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043c\u0430\u0448\u0438\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0430\u043c\u043e\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438, \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0443\u0437\u043b\u043e\u0432.<\/p>\n<\/li>\n<\/ol>\n<pre><code>    \u041c\u0410\u0422\u0420\u0418\u0426\u0410 \u0410\u0412\u0410\u0420\u0418\u0419\u041d\u042b\u0425 \u041f\u0415\u0420\u0415\u0425\u041e\u0414\u041e\u0412      +--------+------+--------+--------+      | \u0422\u0435\u043a\u0443\u0449. | \u0412\u0445\u043e\u0434 | \u0421\u043b\u0435\u0434.  | \u0412\u044b\u0445\u043e\u0434  |      | \u0441\u043e\u0441\u0442.  | (In) | \u0441\u043e\u0441\u0442.  | (Out)  |      +--------+------+--------+--------+      |  ANY   |  F   |  ERR   | BLOCK  |      +--------+------+--------+--------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<ol start=\"3\">\n<li>\n<p>\u0412 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043c\u0438\u0440\u0435 \u0434\u0432\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043c\u043e\u043d\u0435\u0442\u044b \u041c \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043e\u0442\u043c\u0435\u043d\u044b \u041e). \u0414\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u043b\u043e\u043c\u043a\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432\u0432\u043e\u0434\u044f\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u041f\u0440\u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0412 \u0440\u0430\u043d\u043d\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0435\u0439 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0430: \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u044f \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0446\u0435\u043f\u0438 \u0433\u043b\u0430\u0432\u043d\u0435\u0435 (\u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0439).<\/p>\n<\/li>\n<\/ol>\n<pre><code>    \u0421\u0425\u0415\u041c\u0410 \u0410\u041f\u041f\u0410\u0420\u0410\u0422\u041d\u041e\u0413\u041e \u041f\u0420\u0418\u041e\u0420\u0418\u0422\u0415\u0422\u0410      ----------------------------            [ \u0418\u0421\u0422\u041e\u0427\u041d\u0418\u041a \u0422\u041e\u041a\u0410 ]             |      +-----( )----- [ \u0414\u0410\u0422\u0427\u0418\u041a \"\u0412\" (\u0412\u0417\u041b\u041e\u041c) ] ----&gt; \u0412 \u0446\u0435\u043f\u044c ERR (\u0412\u044b\u0441\u0448\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442)             |      +-----( )----- [ \u0414\u0410\u0422\u0427\u0418\u041a \"\u0422\" (\u0424\u0420\u041e\u0414) ]  ----&gt; \u0412 \u0446\u0435\u043f\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430\/\u0442\u0440\u0435\u0432\u043e\u0433\u0438             |      +-----( )----- [ \u0414\u0410\u0422\u0427\u0418\u041a \"\u041c\" (\u041c\u041e\u041d\u0415\u0422\u0410) ] ----&gt; \u0412 \u0446\u0435\u043f\u044c \u0441\u0447\u0435\u0442\u0430 (S1, S2)             |      [ \u041d\u0418\u0417\u0428\u0418\u0419 \u041f\u0420\u0418\u041e\u0420\u0418\u0422\u0415\u0422 ]  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>4. \u041a\u041e\u041d\u0415\u0427\u041d\u042b\u0419 \u0410\u0412\u0422\u041e\u041c\u0410\u0422 \u0413\u041b\u0410\u0417\u0410\u041c\u0418 \u0418\u041d\u0416\u0415\u041d\u0415\u0420\u0410-\u041d\u0410\u041b\u0410\u0414\u0427\u0418\u041a\u0410<\/strong><\/p>\n<p>\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584<br \/> \u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584<br \/> \u2588\u2588\u2580\u25a0\u25a0\u2591\u25a0\u25a0\u2591\u2591\u2580\u2588\u2588\u2588\u2588\u2588<br \/> \u2591\u2588\u2580\u25a0\u2591\u25a0\u25a0\u2591\u25a0\u25a0\u25a0\u25a0\u2591\u25a0\u2588\u2588\u2588\u2588<br \/> \u2588\u2591\u2591\u25a0\u25a0\u2584\u2584\u2588\u2588\u2588\u2588\u2584\u2584\u2584\u25a0\u25a0\u2591\u2588\u2588\u2588<br \/> \u2588\u25a0\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u25a0\u25a0\u2591\u2588\u2588\u2588<br \/> \u2588\u2591\u2588\u2588\u2588\u2580\u2592\u2591\u2588\u2588\u2591\u2591\u2584\u2584\u2588\u2588\u25a0\u25a0\u2591\u2588\u2588<br \/> \u2588\u25a0\u2588\u2588\u2588\u2584\u2584\u2591\u2591\u2588\u2591\u2591\u2591\u0333.\u0333\u0333.\u0333.\u0333\u0333.\u2591\u2588\u25a0\u2591\u2588\u2588<br \/> \u2588\u2588\u2588\u2593\u2591\u0333.\u0333\u0333.\u0333.\u0333\u0333.\u2591\u2591\u2591\u2591\u2588\u2588\u2580\u2591\u2591\u2588\u25a0\u2588\u2588<br \/> \u2588\u2588\u2588\u2592\u2588\u2588\u2580\u2591\u2591\u2591\u2591\u2592\u2592\u2591\u2591\u2591\u2588\u2592\u2588\u2588<br \/> \u2588\u2588\u2592\u2592\u2591\u2591\u2592\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2592\u2588\u2588\u2588<br \/> \u2588\u2588\u2588\u2592\u2592\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2592\u2588\u2588\u2588\u2588<br \/> \u2588\u25a0\u25a0\u2588\u2588\u2592\u2592\u2592\u2588\u2593\u2580\u2591\u2591\u2591\u2592\u2592\u2592\u2588\u2588\u2588<br \/> \u2588\u25a0\u2588\u2588\u25a0\u2588\u2588\u2592\u2592\u2591\u2591\u2591\u2591\u2591\u2592\u2592\u2591\u2592\u2588\u2588\u2584<br \/> \u25a0\u2588\u2588\u2588\u25a0\u25a0\u2588\u2588\u2588\u2592\u2592\u2592\u2592\u2592\u2591\u2591\u2591\u2592\u2588\u2588\u2588<br \/> \u2588\u2588\u2588\u2588\u2588\u25a0\u2588\u2588\u2588\u2588\u2588\u2592\u2592\u2591\u2591\u2591\u2591\u2592\u2588\u2588\u2580<br \/> \u2593\u2588\u2588\u2588\u2592\u2592\u2592\u2592\u2592\u2593\u2588\u2588\u2588\u2591\u2592\u2592\u2588\u2588\u2588\u2588\u2588<br \/> \u2588\u2588\u2588\u2592\u2591\u2591\u2591\u2591\u2591\u2592\u2593\u2588\u2588\u2592\u2592\u2588\u2588\u2593\u2588\u2588<br \/> \u2588\u2588\u2592\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2592\u2593\u2588\u2592\u2592\u2588\u2588\u2588\u2588<br \/> \u2588\u2588\u2592\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2591\u2592\u2593\u2591\u2592\u2588\u2588<br \/> \u2588\u2592\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2591\u2591\u2591\u2588\u2593\u2593\u2593<br \/> \u2588\u2592\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2591\u2591\u2588\u2593\u2593\u2593\u2593\u2593<br \/> \u2591\u2592\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2591\u2588\u2593\u2593\u2593\u2593\u2593\u2593\u2593<br \/> \u2591\u2592\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2592\u2588\u2593\u2593\u2593\u2593\u2593\u2593\u2593<br \/> \u2591\u2592\u2592\u2591\u2591\u2591\u2591\u2591\u2592\u2592\u2588\u2593\u2593\u2593\u2593\u2593\u2593<br \/> \u2591\u2592\u2592\u2591\u2591\u2591\u2591\u2592\u2592\u2588\u2593\u2593\u2593\u2593\u2593\u2593<\/p>\n<p><strong>4.1 \u041e \u0431\u0438\u0435\u043a\u0446\u0438\u0438: \u042f\u0437\u044b\u043a \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f<\/strong><\/p>\n<p>\u00ab\u0411\u0438\u0435\u043a\u0446\u0438\u044f\u00bb \u2013 \u044d\u0442\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 [25].<br \/> \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u0438\u0435\u043a\u0446\u0438\u044e, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u043e, \u0430 \u0441\u0430\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b.<\/p>\n<pre><code>    \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u041e \u0410 (\u0411\u0423\u041a\u0412\u042b)           \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u041e B (\u0426\u0418\u0424\u0420\u042b)      -------------------           -------------------             \u0410 &lt;-------------------------&gt; 1             \u0411 &lt;-------------------------&gt; 2             \u0412 &lt;-------------------------&gt; 3                            ^                            |     \u0411\u0418\u0415\u041a\u0422\u0418\u0412\u041d\u041e\u0415 \u041e\u0422\u041e\u0411\u0420\u0410\u0416\u0415\u041d\u0418\u0415 \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u0410 \u0410 \u041d\u0410 \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u041e \u0412  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041c\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u043c \u0431\u0438\u0435\u043a\u0446\u0438\u0438: \u043a\u0430\u0436\u0434\u043e\u0435 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u2013 \u044d\u0442\u043e \u0431\u0438\u0435\u043a\u0446\u0438\u044f \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0438\u0440\u0430, 7 \u043d\u043e\u0442 \u043c\u0443\u0437\u044b\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0431\u0438\u0435\u043a\u0446\u0438\u044e \u0441 7-\u044e \u0437\u0432\u0443\u043a\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b. \u041c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0432\u0430 \u0440\u0430\u0432\u043d\u043e\u043c\u043e\u0449\u043d\u044b\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u00ab\u0441\u0448\u0438\u0442\u044b\u00bb \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c.<br \/> \u041e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u043c \u0431\u0438\u0435\u043a\u0446\u0438\u044e \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u0432\u0443\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432 \u0438 \u0434\u0432\u0443\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u00ab\u041f\u0440\u044f\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00bb <code>f<\/code> \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u0439 \u0446\u0438\u0444\u0440\u0435 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u044b. \u00ab\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00bb <code>f\u2019<\/code> \u2013 \u043f\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0440\u044b\u0447\u0430\u0433\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u044b \u043e\u0442\u0434\u0430\u0451\u0442 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e.<\/p>\n<pre><code>       \u0423\u0421\u0422\u0420\u041e\u0419\u0421\u0422\u0412\u041e \u0411\u0418\u0415\u041a\u0426\u0418\u0418         ------------------              \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u041e S                     \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u041e P       (\u041e\u0431\u044a\u0435\u043a\u0442\u044b \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438)               (\u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0424\u0438\u0437\u0438\u043a\u0438)                     +-------+                        +-------+            |  \"0\"  |---- f (\u041f\u0440\u044f\u043c\u0430\u044f) -------&gt;| \u0424\u0430\u0437\u0430 0|            |       |&lt;--- f' (\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f) -----|       |            +-------+                        +-------+                        +-------+                        +-------+            |  \"1\"  |---- f (\u041f\u0440\u044f\u043c\u0430\u044f) -------&gt;| \u0424\u0430\u0437\u0430 1|            |       |&lt;--- f' (\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f) -----|       |            +-------+                        +-------+                        +-------+                        +-------+            |  \"2\"  |---- f (\u041f\u0440\u044f\u043c\u0430\u044f) -------&gt;| \u0424\u0430\u0437\u0430 2|            |       |&lt;--- f' (\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f) -----|       |            +-------+                        +-------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>4.2 \u041c\u043e\u0434\u0435\u043b\u044c<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0434\u0432\u0443\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0431\u0438\u0435\u043a\u0446\u0438\u044f, \u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u043c\u043e\u0434\u0435\u043b\u044c\u044e\u00bb \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<br \/> \u041a\u0430\u043c\u0435\u043d\u044c \u0432 \u043c\u0435\u0448\u043a\u0435 \u043f\u0430\u0441\u0442\u0443\u0445\u0430 \u2013 \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u044b\u043a\u0430 \u043d\u0430 \u043b\u0443\u0433\u0443, \u0431\u044b\u043a \u043d\u0430 \u043b\u0443\u0433\u0443 \u2013 \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u043d\u044f \u0432 \u043c\u0435\u0448\u043a\u0435. \u0421\u0442\u0440\u0435\u043b\u043a\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0447\u0430\u0441\u043e\u0432 \u2013 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0421\u043e\u043b\u043d\u0446\u0430, \u043d\u043e \u0438 \u0421\u043e\u043b\u043d\u0446\u0435 \u2013 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0438. \u0421\u0442\u0440\u0435\u043b\u043a\u0430 \u043c\u0430\u043d\u043e\u043c\u0435\u0442\u0440\u0430 \u2013 \u044d\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430, \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u2013 \u0442\u043e\u0436\u0435 \u0432\u0435\u0440\u043d\u043e.<br \/> \u0426\u0438\u0444\u0440\u0430 \u0438 \u041c\u0430\u0448\u0438\u043d\u0430 \u2013 \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0446\u0438\u0444\u0440\u0443 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438\u043b\u0438 \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435, \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0441\u0430\u043c\u0443 \u041c\u0430\u0448\u0438\u043d\u0443, \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044f \u0435\u0451 \u043a\u043e\u0436\u0443\u0445. \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u0440\u0435\u0442 \u2013 \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u0441\u043f\u043e\u0440\u0447\u0435\u043d\u0430, \u0442\u043e\u0447\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 (\u0431\u0438\u0435\u043a\u0446\u0438\u044f) \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u043e.<\/p>\n<p><strong>4.3 \u0421\u0438\u0433\u043d\u0430\u043b\u044b \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435<\/strong><\/p>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u0446\u0438\u0444\u0440\u044b, \u0441 \u0444\u0438\u0437\u0438\u043a\u043e\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u044f\u0442 \u0434\u0432\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b: \u043e\u0434\u043d\u0430 \u0410\u0432\u0442\u043e\u043c\u0430\u0442 (\u0438\u043b\u0438 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440) \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0447\u0435\u0440\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0446\u0438\u0444\u0440, \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e\u0431 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u043c \u043c\u0438\u0440\u0435, \u0434\u0440\u0443\u0433\u0430\u044f \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043c\u0435\u043d\u044f\u0435\u0442 \u043c\u0438\u0440, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u044f \u043e \u0446\u0438\u0444\u0440\u0430\u0445. \u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u2013 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u0444\u0440 \u0434\u043b\u044f \u0435\u0451 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430. \u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u2013 \u0441\u0443\u043c\u043c\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432\u0441\u0435\u0445 \u0435\u0451 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0432 (\u0436\u0435\u043b\u0435\u0437\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439).<br \/> \u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0431\u0438\u0435\u043a\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0434\u0432\u0443\u0445 \u044d\u0442\u0438\u0445 \u043c\u0430\u0448\u0438\u043d.<br \/> \u0412\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c (In): \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0443: \u00ab\u0412 \u043c\u043e\u0435\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043c\u0438\u0440\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439\u00bb. \u0418\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c (Out): \u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0430\u0435\u0442 \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c: \u00ab\u042f \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0441\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0439 \u0441\u0432\u043e\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u0435\u00bb.<\/p>\n<pre><code>    \u0421\u0425\u0415\u041c\u0410 \u0421\u0418\u041d\u0425\u0420\u041e\u041d\u0418\u0417\u041c\u0410 (\u0421\u041e\u0413\u041b\u0410\u0421\u041e\u0412\u0410\u041d\u0418\u042f \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0419 \u041c\u0415\u0425\u0410\u041d\u0418\u0417\u041c\u0410 \u0418 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410 \u0412\u041e \u0412\u0420\u0415\u041c\u0415\u041d\u0418)      -----------------------------------------------------------------------      \u041c\u0415\u0425\u0410\u041d\u0418\u0417\u041c ---  [ \u0412\u0425\u041e\u0414\u041d\u041e\u0419 \u0421\u0418\u0413\u041d\u0410\u041b  ] ---&gt; \u0410\u0412\u0422\u041e\u041c\u0410\u0422 (\u0427\u0438\u0441\u043b\u043e)      \u041c\u0415\u0425\u0410\u041d\u0418\u0417\u041c &lt;--- [ \u0412\u042b\u0425\u041e\u0414\u041d\u041e\u0419 \u0421\u0418\u0413\u041d\u0410\u041b ] ---  \u0410\u0412\u0422\u041e\u041c\u0410\u0422 (\u0427\u0438\u0441\u043b\u043e)         |                                       |         +--------------( \u0411\u0418\u0415\u041a\u0426\u0418\u042f )--------------+                 (\u041f\u043e\u043b\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043d\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439)  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0432\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0432\u0435\u0434\u0443\u0442 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u043e\u0433 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f \u0431\u0438\u0435\u043a\u0446\u0438\u044e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043d\u0430\u0434 \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438: \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u043f\u043e\u0440\u0442\u0443\u0435\u0442 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0443 \u00ab\u0428\u0430\u0433 \u0441\u0434\u0435\u043b\u0430\u043d! \u041e\u0431\u043d\u043e\u0432\u0438 \u0447\u0438\u0441\u043b\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438!\u00bb, \u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442: \u00ab\u0427\u0438\u0441\u043b\u043e \u0441\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c! \u041f\u0440\u0438\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435!\u00bb \u0421\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u043e\u0434\u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0432\u043e\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<br \/> \u0421\u0438\u0433\u043d\u0430\u043b \u2013 \u043d\u0435 \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0430 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0432\u0435\u043b\u043e \u043a \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<br \/> \u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u00ab\u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u00bb, \u043f\u043e\u0442\u0435\u043a \u043b\u0438 \u043b\u0438\u043c\u043e\u043d\u0430\u0434. \u041e\u043d \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0434\u0430\u043b \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430 \u0432\u044b\u0434\u0430\u0447\u0443 \u0438 \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043b\u0438\u043c\u043e\u043d\u0430\u0434 \u043d\u0435 \u043f\u043e\u0442\u0435\u043a (\u0437\u0430\u0431\u0438\u043b\u0430\u0441\u044c \u0442\u0440\u0443\u0431\u043a\u0430) \u2013 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u2013 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0440\u0430\u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0443-\u043d\u0430\u043b\u0430\u0434\u0447\u0438\u043a\u0443.<br \/> \u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u043d\u0435 \u0440\u0435\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u00ab\u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0441 \u0433\u0430\u0437\u0438\u0440\u043e\u0432\u043a\u043e\u0439\u00bb. \u041e\u043d \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0441\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c (\u0410\u0432\u0442\u043e\u043c\u0430\u0442) \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0433\u0440\u0435\u0433\u0430\u0442 (\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c) \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0431\u0438\u0435\u043a\u0446\u0438\u044f.<br \/> \u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u043d\u0435 \u00ab\u0447\u0438\u043d\u0438\u0442 \u043d\u0430\u043b\u0438\u0432\u00bb. \u041e\u043d \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044f\u0437\u0430\u043d \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0442\u043e\u0447\u043a\u0435 \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439.<br \/> \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0443\u0437\u043b\u043e\u0432: \u00ab\u041f\u0430\u043c\u044f\u0442\u0438\u00bb (\u0438\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f) \u2013 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0433\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437 N \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0418 \u00ab\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438\u00bb \u2013 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u0437\u043b\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432.<br \/> \u0411\u0438\u0435\u043a\u0446\u0438\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0447\u0438\u0441\u043b\u043e \u00ab2\u00bb \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0442\u043e\u0447\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0437\u0435 \u00ab\u0412\u044b\u0434\u0430\u0447\u0430\u00bb, \u043d\u0435 \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u044c \u0431\u0430\u043a\u0430.<\/p>\n<p><strong>4.4 \u041d\u0430\u043b\u0430\u0434\u043a\u0430<\/strong><\/p>\n<p>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u2013 \u044d\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0437\u043d\u0430\u043a\u0438 \u0438 \u0446\u0438\u0444\u0440\u044b \u043d\u0430 \u043b\u0438\u0441\u0442\u0435 \u0431\u0443\u043c\u0430\u0433\u0438. \u0412 \u043d\u0438\u0445 \u043d\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u0442\u0432\u0430. \u00ab\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c\u00bb \u0432 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043b\u0443\u0436\u0438\u0442 \u0441\u0430\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041e\u043d \u0441\u0430\u043c (\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438) \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043d\u043e \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0438\u0440\u0430.<br \/> \u041d\u0430\u043b\u0430\u0434\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u00ab\u041c\u0430\u0442\u043c\u043e\u0434\u0435\u043b\u044c \u2194 \u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u2194 \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u00bb:<br \/> \u0412\u044b \u043f\u0430\u043b\u044c\u0446\u0435\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u0430 \u0446\u0438\u0444\u0440\u0443 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 (\u041c\u0430\u0442\u043c\u043e\u0434\u0435\u043b\u044c), \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0430\u043b\u044c\u0446\u0435\u043c \u2013 \u043d\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0432 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0435 (\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435), \u0430 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u044b\u0447\u0430\u0433\u043e\u0432 \u0432 \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435. \u0412\u0441\u0435 \u0442\u0440\u0438 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e \u0436\u0435.<\/p>\n<pre><code>    \u0421\u0425\u0415\u041c\u0410 \u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0418 \u0421\u0418\u041d\u0425\u0420\u041e\u041d\u0418\u0417\u041c\u0410      --------------------------            [\u0422\u0410\u0411\u041b\u0418\u0426\u0410] &lt;----(\u0412\u0417\u0413\u041b\u042f\u0414)----&gt; [\u041a\u041e\u041d\u0422\u0420\u041e\u041b\u041b\u0415\u0420] &lt;----(\u0422\u041e\u041a)----&gt; [\u041c\u0415\u0425\u0410\u041d\u0418\u0417\u041c]      (\u0426\u0438\u0444\u0440\u0430 2)             (\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0440\u0435\u043b\u0435)           (\u0424\u0430\u0437\u0430 2)  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>4.5 \u041f\u0430\u043c\u044f\u0442\u043a\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430-\u043d\u0430\u043b\u0430\u0434\u0447\u0438\u043a\u0430<\/strong><\/p>\n<p>\u041d\u0430\u043b\u0430\u0434\u0447\u0438\u043a \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0431\u0438\u0435\u043a\u0446\u0438\u044e \u043d\u0430\u0434 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0443\u0437\u043b\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u044b. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432 \u0431\u044b\u043b\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b, \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0432\u0435\u043b\u043e \u043a \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<pre><code>    \u041f\u0410\u041c\u042f\u0422\u041a\u0410 \u0418\u041d\u0416\u0415\u041d\u0415\u0420\u0410-\u041d\u0410\u041b\u0410\u0414\u0427\u0418\u041a\u0410      --------------------------      1. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443 (\u0432\u0435\u0440\u043d\u0430 \u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430).      2. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442 (\u0445\u043e\u0434\u044f\u0442 \u043b\u0438 \u0440\u0435\u043b\u0435).      3. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u0438\u0437\u0438\u043a\u0443 (\u0445\u043e\u0434\u044f\u0442 \u043b\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b).      4. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c (\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c) \u0431\u0438\u0435\u043a\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u043c\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438\u0437 \u043f.1-3.        \u041f\u0410\u041c\u042f\u0422\u041a\u0410 \u0418\u041d\u0416\u0415\u041d\u0415\u0420\u0410 \u041f\u041e \u042d\u041a\u0421\u041f\u041b\u0423\u0410\u0422\u0410\u0426\u0418\u0418 \u041e\u0411\u041e\u0420\u0423\u0414\u041e\u0412\u0410\u041d\u0418\u042f      ------------------      1. \u041f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043d\u043e \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u0430\u043d\u0435\u043b\u044f\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043e\u0439.      2. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438.      3. \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0421\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043c: \u0422\u0430\u0431\u043b\u0438\u0446\u0430 (\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f) \u2013 \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u2013 \u041e\u0440\u0433\u0430\u043d\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u2013 \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.      4. \u041f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0439, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u0430\u0448\u0438\u043d\u044b, \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430-\u043d\u0430\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u043b\u0438\u0431\u043e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f.  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u041f\u0420\u0410\u041a\u0422\u0418\u041a\u0410<\/strong><\/p>\n<p><strong>\u0420\u0410\u0417\u0414\u0415\u041b: \u0410\u0412\u0422\u041e\u041c\u0410\u0422 \u00ab\u041b\u0418\u041c\u041e\u041d\u0410\u0414-\u041c\u0422\u00bb<\/strong><\/p>\n<p>\u250c\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u2593\u2593\u2592\u2591\u2592\u2593\u2593\u2592\u2593\u2588\u2592\u2500\u2500\u2592\u2593\u2593\u2593\u2588\u2593\u2593\u2593\u2591\u250c\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u2593\u2588\u2593\u2500\u2500\u2593\u2588\u2593\u2593\u2593\u2593\u2500\u2500\u2500\u2593\u2588\u2593\u2593\u2592\u2593\u2592\u2591\u2591\u250c\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u250c\u2518\u250c\u2518\u2591\u2588\u2593\u2593\u2592\u2591\u2591\u2592\u2592\u2592\u2593\u2593\u2500\u2500\u2591\u2593\u2588\u2592\u2500\u2500\u2592\u2592\u2591\u2592\u2592\u2591\u250c\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u250c\u2518\u250c\u2518\u2592\u2593\u2593\u2593\u2593\u2591\u2500\u2500\u2500\u2500\u2500\u2591\u2591\u2500\u2592\u2593\u2588\u2593\u2592\u2593\u2588\u2588\u2593\u2500\u2592\u2593\u2591\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u250c\u2518\u250c\u2593\u2593\u2593\u2592\u2592\u2500\u2500\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2593\u2593\u2593\u2592\u2591\u2592\u2593\u2593\u2500\u2500\u2593\u2593\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u250c\u2518\u2592\u2588\u2593\u2592\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2592\u2592\u2592\u2591\u2592\u2593\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u250c\u2591\u2588\u2593\u2592\u2592\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2588\u2588\u2592\u2593\u2588\u2588\u2593\u2592\u2592\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u250c\u2593\u2593\u2591\u2592\u2593\u2592\u2591\u2500\u2500\u2500\u2591\u2592\u2592\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2592\u2593\u2500\u2500\u2500\u2593\u2588\u2593\u2592\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c\u2518<br \/> \u250c\u2518\u2592\u2588\u2593\u2591\u2592\u2593\u2592\u2591\u2500\u2591\u2593\u2593\u2593\u2593\u2592\u2591\u2500\u2500\u2500\u2500\u2591\u2591\u2500\u2500\u2500\u2500\u2591\u2593\u2588\u2593\u2591\u2518\u250c\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u2593\u2588\u2593\u2591\u2591\u2593\u2592\u2591\u2592\u2593\u2591\u2500\u2500\u2500\u2500\u2591\u2591\u2500\u2500\u2500\u2592\u2591\u2500\u2500\u2591\u2593\u2593\u2593\u2593\u2588\u2593\u2592\u2518\u250c\u2518\u250c\u2518\u250c\u2518<br \/> \u250c\u2518\u2592\u2593\u2593\u2500\u2500\u2592\u2593\u2593\u2592\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2591\u2500\u2500\u2591\u2591\u2593\u2593\u2593\u2588\u2588\u2588\u2593\u2593\u2593\u2588\u2593\u2518\u250c\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u2592\u2593\u2593\u2500\u2500\u2591\u2593\u2592\u2500\u2500\u2591\u2500\u2500\u2593\u2593\u2592\u2591\u2591\u2591\u2500\u2500\u2592\u2588\u2588\u2588\u2588\u2588\u2588\u2593\u2592\u2591\u2593\u2588\u2593\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u2593\u2593\u2593\u2591\u2500\u2591\u2593\u2591\u2500\u2591\u2593\u2592\u2593\u2588\u2588\u2588\u2591\u2500\u2591\u2500\u2500\u2500\u2592\u2592\u2591\u2592\u2592\u2592\u2593\u2593\u2500\u2591\u2593\u2588\u2593\u2518\u250c\u2518\u250c<br \/> \u250c\u2518\u2591\u2593\u2593\u2593\u2592\u2500\u2591\u2592\u2591\u2500\u2593\u2588\u2588\u2588\u2588\u2593\u2592\u2591\u2500\u2500\u2591\u2591\u2591\u2593\u2592\u2500\u2500\u2500\u2500\u2592\u2593\u2592\u2500\u2593\u2593\u2593\u2593\u2591<br \/> \u2592\u2591\u2593\u2593\u2592\u2591\u2500\u2500\u2500\u2591\u2593\u2588\u2588\u2593\u2593\u2592\u2591\u2500\u2591\u2500\u2591\u2593\u2592\u2500\u2592\u2592\u2500\u2500\u2500\u2500\u2592\u2593\u2593\u2591\u2593\u2593\u2591\u2593\u2593\u2593<br \/> \u2591\u2500\u2592\u2593\u2593\u2593\u2500\u2500\u2591\u2592\u2592\u2592\u2591\u2591\u2500\u2500\u2500\u2591\u2591\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2593\u2592\u2500\u2500\u2591\u2593\u2593\u2592\u2593\u2588\u2591\u2500\u2591\u2592<br \/> \u250c\u2518\u2592\u2593\u2588\u2588\u2593\u2593\u2593\u2593\u2592\u2591\u2591\u2591\u2591\u2500\u2500\u2591\u2500\u2500\u2500\u2593\u2588\u2588\u2593\u2593\u2588\u2588\u2593\u2591\u2591\u2592\u2588\u2593\u2592\u2588\u2593\u2591\u2500\u2500<br \/> \u2591\u2591\u2592\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2592\u2591\u2592\u2591\u2591\u2591\u2591\u2591\u2500\u2500\u2588\u2588\u2593\u2592\u2591\u2500\u2500\u2593\u2588\u2592\u2500\u2591\u2588\u2593\u2592\u2592\u2588\u2588\u2593\u2591<br \/> \u2591\u2592\u2593\u2593\u2592\u2500\u2500\u2500\u2591\u2593\u2592\u2592\u2591\u2591\u2591\u2592\u2592\u2500\u2500\u2588\u2593\u2500\u2500\u2500\u2500\u2500\u2500\u2592\u2593\u2591\u2500\u2591\u2593\u2588\u2592\u2500\u2592\u2593\u2588\u2593<br \/> \u2591\u2500\u2591\u2593\u2591\u2500\u2500\u2592\u2592\u2592\u2592\u2592\u2592\u2591\u2591\u2591\u2500\u2500\u2593\u2588\u2591\u2500\u2592\u2593\u2588\u2588\u2588\u2588\u2592\u2500\u2500\u2592\u2593\u2588\u2593\u2591\u2500\u2500\u2500\u2592<br \/> \u2591\u2500\u2500\u2500\u2592\u2592\u2593\u2592\u2591\u2500\u2500\u2591\u2592\u2592\u2591\u2500\u2500\u2500\u2500\u2500\u2592\u2593\u2588\u2593\u2593\u2593\u2593\u2593\u2592\u2591\u2500\u2592\u2593\u2593\u2588\u2593\u2592\u2500\u2500\u2591<br \/> \u2592\u2500\u2500\u2500\u2500\u2591\u2592\u2500\u2500\u2500\u2500\u2591\u2592\u2592\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2592\u2592\u2593\u2593\u2593\u2593\u2593\u2593\u2592\u2591\u2592<br \/> \u2593\u2593\u2591\u2500\u2500\u2591\u2591\u2500\u2500\u2500\u2591\u2592\u2593\u2592\u2591\u2591\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2592\u2592\u2593\u2593\u2593\u2593\u2592\u2591\u2591\u2592\u2593<br \/> \u2588\u2593\u2592\u2592\u2593\u2593\u2591\u2500\u2591\u2592\u2593\u2593\u2593\u2593\u2592\u2591\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2593\u2593\u2593\u2593\u2592\u2500\u2591\u2592\u2593\u2592<br \/> \u2591\u2591\u2591\u2592\u2593\u2593\u2592\u2592\u2593\u2588\u2588\u2588\u2588\u2588\u2593\u2592\u2591\u2591\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2593\u2593\u2593\u2593\u2593\u2591\u2591\u2593\u2593\u2591\u2500<br \/> \u2591\u2591\u2591\u2500\u2500\u2592\u2593\u2588\u2588\u2593\u2593\u2588\u2593\u2592\u2592\u2591\u2592\u2592\u2592\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2592\u2593\u2593\u2588\u2593\u2593\u2593\u2593\u2592\u2593\u2593\u2591\u2500\u2500<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2593\u2593\u2591\u2500\u2591\u2500\u2500\u2500\u2500\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2588\u2593\u2593\u2593\u2593\u2593\u2593\u2592\u2591\u2500\u2500\u2500<br \/> \u250c\u2518\u250c\u2591\u2592\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2593\u2593\u2592\u2591\u2592\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2588\u2593\u2593\u2593\u2593\u2593\u2593\u2500\u2500\u2500\u2591\u2591<br \/> \u250c\u2518\u250c\u2518\u250c\u2592\u2592\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2593\u2588\u2593\u2500\u2500\u2500\u2500\u2591\u2592\u2593\u2593\u2592\u2593\u2593\u2593\u2593\u2593\u2592\u2592\u2592\u2592\u2592\u2500\u2500\u2591\u2593<br \/> \u250c\u2518\u250c\u2518\u2518\u2591\u2593\u2593\u2592\u2592\u2593\u2593\u2593\u2593\u2588\u2593\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2592\u2593\u2592\u2593\u2588\u2593\u2593\u2593\u2592\u2500\u2500\u2500\u2592\u2593\u2592\u2592\u2593<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2592\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2592\u2593\u2588\u2593\u2591\u2591\u2500\u2500\u2500\u2500\u2592\u2593\u2593\u2593\u2593<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u2591\u2591\u2592\u2592\u2592\u2593\u2592\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2592\u2588\u2593\u2591\u2500\u2500\u2500\u2500\u2591\u2592\u2593\u2593\u2593\u2593\u2593<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u250c\u2591\u2592\u2593\u2591\u2591\u2592\u2591\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2593\u2588\u2592\u2500\u2500\u2591\u2591\u2591\u2592\u2593\u2588\u2588\u2593\u2593\u2593<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u2518\u250c\u2591\u2593\u2592\u2500\u2591\u2592\u2592\u2591\u2500\u2500\u2500\u2591\u2500\u2500\u2500\u2593\u2588\u2592\u2591\u2593\u2593\u2588\u2588\u2593\u2593\u2593\u2593\u2592\u2593\u2593<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u2518\u250c\u250c\u2592\u2593\u2591\u2500\u2500\u2591\u2592\u2592\u2592\u2591\u2500\u2500\u2500\u2592\u2588\u2588\u2593\u2592\u2593\u2588\u2588\u2592\u2591\u2500\u2500\u2591\u2592\u2593\u2593<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u2518\u250c\u250c\u2591\u2592\u2591\u2500\u2500\u2500\u2500\u2591\u2592\u2592\u2592\u2500\u2500\u2593\u2588\u2593\u2593\u2593\u2593\u2593\u2593\u2592\u2591\u2591\u2591\u2593\u2593\u2592\u2592<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u2518\u250c\u250c\u2591\u2591\u2592\u2500\u2500\u2500\u2500\u2500\u2500\u2591\u2592\u2591\u2500\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2588\u2588\u2593\u2593\u2593\u2592\u2591<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u2518\u250c\u2591\u2591\u2591\u2592\u2591\u2500\u2500\u2500\u2500\u2500\u2591\u2591\u2591\u2592\u2592\u2592\u2592\u2592\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2592\u2592\u2592\u2591<br \/> \u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u2518\u250c\u2591\u2591\u2591\u2592\u2592\u2500\u2500\u2500\u2500\u2500\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2592\u2593\u2592\u2591\u250c\u2518\u250c\u2518\u2518\u250c\u2518\u250c\u2518<\/p>\n<p>\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u0448\u0430\u0433\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f (\u0438\u043b\u0438 \u00ab\u0433\u0435\u043d\u0435\u0437\u0438\u0441\u00bb) \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435\u0439, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0434\u0435\u0438 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u0443\u0440\u0441\u0430.<\/p>\n<p><strong>1. \u0422\u0410\u0411\u041b\u0418\u0427\u041d\u041e\u0415 \u041e\u041f\u0420\u0415\u0414\u0415\u041b\u0415\u041d\u0418\u0415 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410<\/strong><\/p>\n<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u00ab\u041b\u0438\u043c\u043e\u043d\u0430\u0434-\u041c\u0422\u00bb \u043d\u0430 \u0436\u0435\u0442\u043e\u043d\u0430\u0445 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u0436\u0438 \u0433\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u0438\u0442\u043a\u043e\u0432. \u0420\u0430\u0431\u043e\u0442\u0430: \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 3 \u0436\u0435\u0442\u043e\u043d\u0430 \u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0411\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0438 \u043c\u043e\u043d\u0435\u0442\u044b \u0438\u043b\u0438 \u0432\u0437\u043b\u043e\u043c\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\u0422\u0410\u0411\u041b\u0418\u0426\u0410 1. FSM-\u0422\u0410\u0411\u041b\u0418\u0426\u0410 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410 \u00ab\u041b\u0418\u041c\u041e\u041d\u0410\u0414-\u041c\u0422\u00bb    +--------+------+--------+--------+  | \u0422\u0435\u043a\u0443\u0449. | \u0412\u0445\u043e\u0434 | \u0421\u043b\u0435\u0434.  | \u0412\u044b\u0445\u043e\u0434  |  | \u0441\u043e\u0441\u0442.  | (In) | \u0441\u043e\u0441\u0442.  | (Out)  |  +--------+------+--------+--------+  |   S0   |  \u041c   |   S1   |   A0   |  |   S0   |  \u0412   |  ERR   |   A3   |  |   S0   |  \u0422   |   S0   |   A4   |  |   S0   |  \u041f   |   S0   |   A2   |  |   S0   |  \u041e   |   S0   |   A4   |  +--------+------+--------+--------+  |   S1   |  \u041c   |   S2   |   A0   |  |   S1   |  \u0412   |  ERR   |   A3   |  |   S1   |  \u0422   |   S0   |   A1   |  |   S1   |  \u041f   |   S1   |   A2   |  |   S1   |  \u041e   |   S0   |   A7   |  +--------+------+--------+--------+  |   S2   |  \u041c   |   S0   |   A5   |  |   S2   |  \u0412   |  ERR   |   A3   |  |   S2   |  \u0422   |   S0   |   A1   |  |   S2   |  \u041f   |   S2   |   A2   |  |   S2   |  \u041e   |   S0   |   A7   |  +--------+------+--------+--------+  |  ERR   |  *   |  ERR   |   A6   |  +--------+------+--------+--------+    \u0422\u0410\u0411\u041b\u0418\u0426\u0410 2. \u0420\u0410\u0421\u0428\u0418\u0424\u0420\u041e\u0412\u041a\u0410 \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u0410 \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0419 (S)    +--------+--------+-------------------------------------------+  | \u0418\u0434\u0435\u043d\u0442. | \u0418\u043d\u0434\u0435\u043a\u0441 | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435                                  |  +--------+--------+-------------------------------------------+  |   S0   |   0    | \u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 (\u0431\u0430\u043b\u0430\u043d\u0441 0 \u043a\u043e\u043f)                   |  |   S1   |   1    | \u041d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435 (\u0431\u0430\u043b\u0430\u043d\u0441 1 \u043a\u043e\u043f)                 |  |   S2   |   2    | \u041f\u0440\u0435\u0434\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 (\u0431\u0430\u043b\u0430\u043d\u0441 2 \u043a\u043e\u043f)           |  |  ERR   |   3    | \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 (\u0432\u0437\u043b\u043e\u043c \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0441\u0431\u043e\u0439)     |  +--------+--------+-------------------------------------------+    \u0422\u0410\u0411\u041b\u0418\u0426\u0410 3. \u0420\u0410\u0421\u0428\u0418\u0424\u0420\u041e\u0412\u041a\u0410 \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u0410 \u0412\u0425\u041e\u0414\u041d\u042b\u0425 \u0421\u0418\u0413\u041d\u0410\u041b\u041e\u0412    +--------+------------+---------------------------------------+  | \u0421\u0438\u043c\u0432\u043e\u043b | \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435   | \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435                   |  +--------+------------+---------------------------------------+  |   \u041c    | \u041c\u043e\u043d\u0435\u0442\u0430     | \u0412\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043e\u043f\u043b\u0430\u0442\u044b               |  |   \u0412    | \u0412\u0441\u043a\u0440\u044b\u0442\u0438\u0435   | \u0414\u0435\u0442\u0435\u043a\u0446\u0438\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u0437\u043b\u043e\u043c\u0430 \u043a\u043e\u0440\u043f\u0443\u0441\u0430       |  |   \u0422    | \u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0445\u043e\u0434 | \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u043d\u0435\u0442\u044b (\u043d\u0438\u0442\u043a\u0430)     |  |   \u041f    | \u041f\u0443\u0441\u0442\u043e      | \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0440\u0435\u0436\u0438\u043c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f)  |  |   \u041e    | \u041e\u0442\u043c\u0435\u043d\u0430     | \u041d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432       |  |   *    | \u041b\u044e\u0431\u043e\u0439      | \u0412\u0432\u043e\u0434 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d            |  +--------+------------+---------------------------------------+    \u0422\u0410\u0411\u041b\u0418\u0426\u0410 4. \u0420\u0410\u0421\u0428\u0418\u0424\u0420\u041e\u0412\u041a\u0410 \u041c\u041d\u041e\u0416\u0415\u0421\u0422\u0412\u0410 \u0412\u042b\u0425\u041e\u0414\u041d\u042b\u0425 \u0421\u0418\u0413\u041d\u0410\u041b\u041e\u0412 (A)    +--------+-----------+----------------------------------------+  | \u0418\u0434\u0435\u043d\u0442. | \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435  | \u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f                   |  +--------+-----------+----------------------------------------+  |   A0   | ACCEPT    | \u041f\u0420\u0418\u0415\u041c: \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f        |  |   A1   | FRAUD     | \u0424\u0420\u041e\u0414: \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0440\u0435\u0432\u043e\u0433\u0438 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043a\u0440\u0430\u0436\u0438 |  |   A2   | WAIT      | \u041e\u0416\u0418\u0414\u0410\u0422\u042c: \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b                |  |   A3   | TRAP      | \u0412\u0417\u041b\u041e\u041c: \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043a\u0443\u043f\u044e\u0440\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430      |  |   A4   | REJECT    | \u041e\u0422\u041a\u0410\u0417: \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e             |  |   A5   | GIVE      | \u0412\u042b\u0414\u0410\u0427\u0410: \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043f\u043e\u0434\u0430\u0447\u0438 \u043b\u0438\u043c\u043e\u043d\u0430\u0434\u0430      |  |   A6   | SERVICE   | \u0421\u0415\u0420\u0412\u0418\u0421: \u0432\u044b\u0437\u043e\u0432 \u043c\u0430\u0441\u0442\u0435\u0440\u0430                  |  |   A7   | RETURN    | \u0412\u041e\u0417\u0412\u0420\u0410\u0422: \u0432\u044b\u0434\u0430\u0447\u0430 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u043d\u0435\u0442      |  +--------+-----------+----------------------------------------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0423\u0432\u0438\u0434\u0435\u0442\u044c \u0433\u0440\u0430\u0444 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043f\u0440\u043e\u0441\u0442\u043e: \u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u043b\u0435\u0446 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (\u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0443\u0437\u0435\u043b \u0433\u0440\u0430\u0444\u0430), \u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u043b\u0435\u0446 \u043d\u0430 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c (\u0440\u0435\u0431\u0440\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0443\u0437\u0435\u043b), \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0439 \u0443\u0437\u0435\u043b \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u0446\u0438\u043a\u043b \u0441 \u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<pre><code>int state = s0; \/\/ \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0443\u0437\u0435\u043b (\u0432\u0435\u0440\u0448\u0438\u043d\u0430) \u0433\u0440\u0430\u0444\u0430  printf(\"[%d]\", state);  while (in = get_input()) \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b  {      state = table[state][in]; \/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0440\u0435\u0431\u0440\u0443 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0443\u0437\u0435\u043b      printf(\"-&gt;[%d]\", state);  }  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>2. \u041a\u041e\u0414 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410 \u041d\u0410 \u0421<\/strong><\/p>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u0435: \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435 \u043a\u043e\u0434, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>main()<\/code>, \u043f\u043e\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/\/ fsm_1.cpp#include &lt;conio.h&gt;  #include &lt;ctype.h&gt;  #include &lt;locale.h&gt;    #define LOG printf    \/* --- \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 --- *\/    \/* --- \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u0432\u0442\u043c\u0430\u0442\u0430 --- *\/  \/* S0 \u2013 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 (0 \u0436\u0435\u0442\u043e\u043d), S1 \u2013 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435 (1 \u0436\u0435\u0442\u043e\u043d), S2 \u2013 \u043f\u0440\u0435\u0434\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 (2 \u0436\u0435\u0442\u043e\u043d\u0430), ERR \u2013 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430. *\/  typedef enum { S0, S1, S2, ERR } State;    \/* --- \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0449\u0435\u0435 \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b (\u0438\u043b\u0438 \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442) --- *\/  \/* \u041c \u2013 \u043c\u043e\u043d\u0435\u0442\u0430, \u0412 \u2013 \u0432\u0441\u043a\u0440\u044b\u0442\u0438\u0435, \u0422 \u2013 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0445\u043e\u0434, \u041f \u2013 \u043f\u0443\u0441\u0442\u043e, \u041e \u2013 \u043e\u0442\u043c\u0435\u043d\u0430. *\/  typedef enum { M, V, T, P, O } Input;    \/* --- \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0449\u0435\u0435 \u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b (\u0438\u043b\u0438 \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442) --- *\/  \/* \u041f\u0420\u0418\u0415\u041c, \u0424\u0420\u041e\u0414, \u041e\u0416\u0418\u0414\u0410\u0422\u042c, \u0412\u0417\u041b\u041e\u041c, \u041e\u0422\u041a\u0410\u0417, \u0412\u042b\u0414\u0410\u0427\u0410, \u0421\u0415\u0420\u0412\u0418\u0421, \u0412\u041e\u0417\u0412\u0420\u0410\u0422 *\/  typedef enum { A0, A1, A2, A3, A4, A5, A6, A7 } Action;    \/* --- \u041a\u043e\u0434\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 --- *\/  const char* Actions[] = { \"\u041f\u0420\u0418\u0415\u041c\", \"\u0424\u0420\u041e\u0414\", \" \u041e\u0416\u0418\u0414\u0410\u0422\u042c \", \"\u0412\u0417\u041b\u041e\u041c\", \"\u041e\u0422\u041a\u0410\u0417\", \"\u0412\u042b\u0414\u0410\u0427\u0410\", \"\u0421\u0415\u0420\u0412\u0418\u0421\", \"\u0412\u041e\u0417\u0412\u0420\u0410\u0422\" };  \/* --- \u041a\u043e\u0434\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 --- *\/  const char* States[]  = { \"\u0411\u0410\u041b\u0410\u041d\u0421 0\", \"\u0411\u0410\u041b\u0410\u041d\u0421 1\", \"\u0411\u0410\u041b\u0410\u041d\u0421 2\", \"\u0411\u041b\u041e\u041a\u0418\u0420\u041e\u0412\u041a\u0410\" };    \/* --- \u0422\u0430\u0431\u043b\u0438\u0446\u0430 (\u0438\u043b\u0438 \u0433\u0440\u0430\u0444) \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 --- *\/  struct Step  {      State next;    \/* S' *\/      Action action;  \/* A  *\/  };    const Step Machine[4][5] =  {      \/*         M          V         T          P         O      *\/      [S0] = {{S1, A0}, {ERR, A3}, {S0, A4}, {S0, A2}, {S0, A4}},      [S1] = {{S2, A0}, {ERR, A3}, {S0, A1}, {S1, A2}, {S0, A7}},      [S2] = {{S0, A5}, {ERR, A3}, {S0, A1}, {S2, A2}, {S0, A7}},      [ERR]= {{ERR, A6}, {ERR, A6}, {ERR, A6}, {ERR, A6}, {ERR, A6}}  };    int state; \/\/ \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u044b  void machine_loop()\/\/ \u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0446\u0438\u043a\u043b \u043c\u0430\u0448\u0438\u043d\u044b  {      while (state != ERR)      {          LOG(\"[%s] &gt; \", States[state]);            \/* \u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 *\/          int c = toupper(getche());            \/* \u0414\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430 *\/          int in = (c=='M') ? M :                     (c=='V') ? V :                     (c=='T') ? T :                     (c=='P') ? P :                     (c=='O') ? O : -1;            if(in == -1) continue;            \/* \u0418\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0448\u0430\u0433\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 *\/          Step step = Machine[state][in];          LOG(\"\\nACTION: %s -&gt; NEXT STATE: %s\\n\", Actions[step.action], States[step.next]);            state = step.next;      }  }    int main(void)  {      setlocale(LC_ALL, \"en_US.UTF-8\");        LOG(\"--- \u041b\u0418\u041c\u041e\u041d\u0410\u0414-\u041c\u0422-1960 ---\\n\u0412\u0412\u0415\u0414\u0418\u0422\u0415 \u0421\u0418\u0413\u041d\u0410\u041b: M - \u043c\u043e\u043d\u0435\u0442\u0430, V - \u0432\u0441\u043a\u0440\u044b\u0442\u0438\u0435, T - \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0445\u043e\u0434, P - \u043f\u0443\u0441\u0442\u043e, O - \u043e\u0442\u043c\u0435\u043d\u0430. \\n\");        state = S0; \/\/ \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u044b      machine_loop();        LOG(\"\\n--- \u041c\u0410\u0428\u0418\u041d\u0410 \u041e\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d\u0410 ---\\n\");        getch();      return 0;  }  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>3. \u0411\u041b\u0418\u0417\u041a\u0418\u0419 \u041a \u0413\u0420\u0410\u0424\u0423 \u041a\u041e\u0414 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410 \u041d\u0410 \u0421<\/strong><\/p>\n<p>\u0412\u0441\u044f\u043a\u043e\u043c\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0438\u043b\u0438 \u00ab\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u00bb \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0433\u0440\u0430\u0444. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 switch, \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0421 \u043a \u0433\u0440\u0430\u0444\u0443 \u0438\u043b\u0438 \u043a \u043a\u043e\u0434\u0443 \u043d\u0430 Lisp, \u00ab\u0440\u0430\u0441\u043f\u0440\u044f\u043c\u043b\u044f\u044f\u00bb \u0438 \u0434\u0435\u043b\u0430\u044f \u0435\u0433\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0439.<br \/> \u041f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0448\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 switch.<br \/> \u041c\u044b \u0438\u043c\u0435\u0435\u043c 4 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f State \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0438 5 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 Input. \u041b\u044e\u0431\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430. \u0414\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <code>CASES = |Input \u00d7 State|<\/code> \u0434\u0430\u0441\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u044b (\u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435). \u0418\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e <code>N = |CASES| = |Input| * |State| = 4*5=20<\/code>. \u0412 \u0431\u043b\u043e\u043a\u0435 <code>SWITCH-\u041b\u041e\u0413\u0418\u041a\u0410<\/code> \u043c\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0432\u0441\u0435 20 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u0435: \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435 \u043a\u043e\u0434, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>main()<\/code>, \u043f\u043e\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/\/ fsm_2.cpp#include &lt;conio.h&gt;  #include &lt;ctype.h&gt;  #include &lt;locale.h&gt;    #define LOG printf    typedef enum { S0, S1, S2, ERR } State;  typedef enum { M, V, T, P, O } Input;  typedef enum { A0, A1, A2, A3, A4, A5, A6, A7 } Action;    const char* Actions[] = { \"\u041f\u0420\u0418\u0415\u041c\", \"\u0424\u0420\u041e\u0414\", \"\u041e\u0416\u0418\u0414\u0410\u0422\u042c\", \"\u0412\u0417\u041b\u041e\u041c\", \"\u041e\u0422\u041a\u0410\u0417\", \"\u0412\u042b\u0414\u0410\u0427\u0410\", \"\u0421\u0415\u0420\u0412\u0418\u0421\", \"\u0412\u041e\u0417\u0412\u0420\u0410\u0422\" };  const char* States[] = { \"\u0411\u0410\u041b\u0410\u041d\u0421 0\", \"\u0411\u0410\u041b\u0410\u041d\u0421 1\", \"\u0411\u0410\u041b\u0410\u041d\u0421 2\", \"\u0411\u041b\u041e\u041a\u0418\u0420\u041e\u0412\u041a\u0410\" };    int state;    \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f-\u043e\u0431\u0435\u0440\u0442\u043a\u0430, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430  void process_step(int next_s, int act)  {      LOG(\"\\nACTION: %s -&gt; NEXT STATE: %s\\n\", Actions[act], States[next_s]);      state = next_s;  }    void machine_loop()  {      while (state != ERR)      {          LOG(\"[%s] &gt; \", States[state]);            int c = toupper(getche());            Input in;          switch (c)          {              case 'M': in = M; break;              case 'V': in = V; break;              case 'T': in = T; break;              case 'P': in = P; break;              case 'O': in = O; break;              default:  continue;          }            \/* \u0417\u0410\u041c\u0415\u041d\u0410 \u0422\u0410\u0411\u041b\u0418\u0426\u042b \u041d\u0410 SWITCH-\u041b\u041e\u0413\u0418\u041a\u0423 *\/  \/*        \u041f\u0415\u0420\u0415\u0425\u041e\u0414 \u041f\u041e \u0420\u0415\u0411\u0420\u0423 \u0418\u0417 \u0423\u0417\u041b\u0410 Sn -&gt; \u0412 \u0423\u0417\u0415\u041b Sn+1                [M] -&gt;[Sn+1] \/ A            \/           \/  [V] -&gt;[Sn+1] \/ A          \/  \/  [Sn] -------- [T] -&gt;[Sn+1] \/ A          \\  \\           \\  [P] -&gt;[Sn+1] \/ A            \\              [O] -&gt;[Sn+1] \/ A  *\/            switch (state)          {              case S0:                  switch (in)                  {                      case M: process_step(S1, A0); break;                      case V: process_step(ERR, A3); break;                      case T: process_step(S0, A4); break;                      case P: process_step(S0, A2); break;                      case O: process_step(S0, A4); break;                  }                  break;                case S1:                  switch (in)                  {                      case M: process_step(S2, A0); break;                      case V: process_step(ERR, A3); break;                      case T: process_step(S0, A1); break;                      case P: process_step(S1, A2); break;                      case O: process_step(S0, A7); break;                  }                  break;                case S2:                  switch (in)                  {                      case M: process_step(S0, A5); break;                      case V: process_step(ERR, A3); break;                      case T: process_step(S0, A1); break;                      case P: process_step(S2, A2); break;                      case O: process_step(S0, A7); break;                  }                  break;                case ERR:                  switch (in)                  {                      case M: process_step(ERR, A6); break;                      case V: process_step(ERR, A6); break;                      case T: process_step(ERR, A6); break;                      case P: process_step(ERR, A6); break;                      case O: process_step(ERR, A6); break;                  }                  break;          }      }  }    int main(void)  {      setlocale(LC_ALL, \"en_US.UTF-8\");      LOG(\"--- \u041b\u0418\u041c\u041e\u041d\u0410\u0414-\u041c\u0422-1960 ---\\n\u0412\u0412\u0415\u0414\u0418\u0422\u0415 \u0421\u0418\u0413\u041d\u0410\u041b: M - \u043c\u043e\u043d\u0435\u0442\u0430, V - \u0432\u0441\u043a\u0440\u044b\u0442\u0438\u0435, T - \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0445\u043e\u0434, P - \u043f\u0443\u0441\u0442\u043e, O - \u043e\u0442\u043c\u0435\u043d\u0430. \\n\");        state = S0;      machine_loop();        LOG(\"\\n--- \u041c\u0410\u0428\u0418\u041d\u0410 \u041e\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d\u0410 ---\\n\");        getch();      return 0;  }  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>4. \u0423\u041d\u0418\u0412\u0415\u0420\u0421\u0410\u041b\u042c\u041d\u0410\u042f \u041c\u0410\u0428\u0418\u041d\u0410 \u0422\u042c\u042e\u0420\u0418\u041d\u0413\u0410 \u0414\u041b\u042f \u042d\u041c\u0423\u041b\u042f\u0426\u0418\u0418 \u041c\u0422<\/strong><\/p>\n<p>\u2591\u2591\u250c\u2500\u2500\u2510\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u250c\u2500\u2500\u2510\u2591\u2591<br \/> \u2591\u2554\u2561\u2590\u2590\u255e\u255d\u2591\u2591\u250c\u2500\u2500\u2510\u2591\u2591\u2554\u2561\u2590\u2590\u255e\u255d\u2591<br \/> \u2591\u2591\u2514\u2565\u2565\u2518\u2591\u2591\u255a\u2561\u258c\u258c\u255e\u2557\u2591\u2591\u2514\u2565\u2565\u2518\u2591\u2591<br \/> \u2591\u2591\u2591\u255a\u255a\u2591\u2591\u2591\u2591\u2514\u2565\u2565\u2518\u2591\u2591\u2591\u2591\u255a\u255a\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u255d\u255d\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0443 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0437 \u0447\u0435\u0442\u0432\u0451\u0440\u043e\u043a \u0447\u0438\u0441\u0435\u043b:<\/p>\n<p><code>[ S_\u0442\u0435\u043a\u0443\u0449\u0435\u0435 , In_\u0432\u0445\u043e\u0434\u043d\u043e\u0435 , S_\u043d\u043e\u0432\u043e\u0435 , Action_\u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0435 ]<\/code><\/p>\n<p>\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u041c\u0422 \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u043b\u044e\u0431\u0443\u044e \u041c\u0422, \u0441\u0447\u0438\u0442\u0430\u0432 \u0442\u0430\u043a\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u00ab\u043b\u0435\u043d\u0442\u044b\u00bb. \u041f\u043e\u0434 \u043d\u0435\u0439 \u043c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u043f\u0435\u0440\u0444\u043e\u043a\u0430\u0440\u0442\u0443, \u0434\u0438\u0441\u043a\u0435\u0442\u0443, CD-ROM \u0438 \u0438\u043d\u043e\u0439 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445.<br \/> \u0423\u041c\u0422 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u0430, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u043c\u0435\u043d\u044f\u0435\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439, \u0438 \u043e\u0442\u0434\u0430\u0451\u0442 \u00ab\u043d\u0430\u0440\u0443\u0436\u0443\u00bb \u043d\u043e\u043c\u0435\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430:<\/p>\n<pre><code>   FSM-\u0422\u0410\u0411\u041b\u0418\u0426\u0410 (\u0421\u0427\u0418\u0422\u042b\u0412\u0410\u0415\u0422\u0421\u042f \u0423\u041c\u0422 \u0421 \u041b\u0415\u041d\u0422\u042b)  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<pre><code>+-----+-----+-----+-----+  |S_\u0442\u0435\u043a|I_\u0432\u0445 | S_\u043d\u043e|A_\u0432\u044b\u0445|  +-----+-----+-----+-----+  &lt;-- \u0421\u0442\u0440\u043e\u043a\u0430 \u21161  |  1  |  1  |  2  |  0  |   (\u0415\u0441\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"1\" \u0438 \u043f\u0440\u0438\u0448\u043b\u043e \"1\"  +-----+-----+-----+-----+    \u0438\u0437\u043c\u0435\u043d\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \"2\" \u0438 \u0432\u044b\u0434\u0430\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \"0\")  |  2  |  1  |  3  |  7  |  &lt;-- \u0421\u0442\u0440\u043e\u043a\u0430 \u21162  +-----+-----+-----+-----+   (\u0415\u0441\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \"2\" \u0438 \u043f\u0440\u0438\u0448\u043b\u043e \"1\"  | ... | ... | ... | ... |    \u0438\u0437\u043c\u0435\u043d\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \"3\" \u0438 \u0432\u044b\u0434\u0430\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \"7\")  +-----+-----+-----+-----+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0423\u041c\u0422 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0441\u043b\u0435\u0434\u0443\u044f \u0437\u0430\u0441\u0442\u044b\u0432\u0448\u0435\u043c\u0443 \u0432 \u0446\u0438\u0444\u0440\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443. \u00ab\u0418\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u00bb \u0423\u041c\u0422 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043d\u0435 \u0432 \u0435\u0451 \u0434\u0435\u0442\u0430\u043b\u044f\u0445, \u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043b\u0435\u043d\u0442\u0443 \u0447\u0438\u0441\u0435\u043b.<br \/> FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u0430 \u043e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0433\u0440\u0430\u0444\u0443, \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u043e\u043c\u0435\u0440\u0430\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u0430 \u0432 \u0440\u0451\u0431\u0440\u0430 \u2013 \u043d\u043e\u043c\u0435\u0440\u0430\u043c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u0423\u041c\u0422 \u2013 \u044d\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u0445\u043e\u0434\u0447\u0438\u043a (\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440) \u0442\u0430\u043a\u0438\u0445 \u0433\u0440\u0430\u0444\u043e\u0432. \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0423\u041c\u0422 \u0432\u044b\u0434\u0430\u0451\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 (\u00ab\u0441\u0438\u0433\u043d\u0430\u043b\u00bb), \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u043a \u043d\u0435\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0435.<\/p>\n<p><strong>5. VM \u0423\u041c\u0422 \u041d\u0410 \u0421<\/strong><\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0423\u041c\u0422 \u0432 \u043d\u0430\u0448 \u043a\u043e\u0434 \u043d\u0430 \u0421. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u00ab\u044f\u0434\u0440\u043e\u00bb \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c \u0433\u0440\u0430\u0444 \u043f\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435. \u041c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0435\u0451 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0447\u0438\u0441\u0435\u043b, \u0447\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442 \u043f\u0435\u0440\u0435\u043f\u0430\u0439\u043a\u0443 \u0441\u0445\u0435\u043c\u044b \u043e\u0431\u0445\u043e\u0434\u0447\u0438\u043a\u0430 \u0433\u0440\u0430\u0444\u0430 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430.<br \/> \u0422\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0433\u0430\u0437\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0438\u043d\u0431\u043e\u043b, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0423\u041c\u0422 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043c\u0435\u0442\u0430\u043b\u043b\u0435 \u00ab\u043e\u0431\u0432\u044f\u0437\u043a\u0443\u00bb, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043f\u0438\u043d\u0431\u043e\u043b\u0443.<br \/> \u00ab\u041e\u0431\u0432\u044f\u0437\u043a\u0430\u00bb \u0438\u043b\u0438 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u043d\u0430\u0434 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u00ab\u044f\u0434\u0440\u043e\u043c\u00bb \u2013 \u044d\u0442\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0440\u044b\u0447\u0430\u0433\u043e\u0432 \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0446\u0438\u0444\u0440\u044b \u0434\u043b\u044f \u0423\u041c\u0422 \u0438 \u0434\u0435\u0448\u0438\u0444\u0440\u0443\u0435\u0442 \u0435\u0451 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0446\u0438\u0444\u0440\u044b \u0432 \u0444\u0438\u0437\u0438\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432.<\/p>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u0435: \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435 \u043a\u043e\u0434, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>main()<\/code>, \u043f\u043e\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/\/ umt.cpp#include &lt;conio.h&gt;#include &lt;ctype.h&gt;#include &lt;locale.h&gt;#define LOG printf\/\/------------------------------------------\/\/ \u0423\u041d\u0418\u0412\u0415\u0420\u0421\u0410\u041b\u042c\u041d\u0410\u042f \u041c\u0410\u0428\u0418\u041d\u0410 \u0422\u042c\u042e\u0420\u0418\u041d\u0413\u0410 (\u0423\u041c\u0422)\/\/------------------------------------------#define ROW(...) (Step[]){ __VA_ARGS__ }struct Step{    int state;    \/* S' *\/    int action;  \/* A  *\/};\/* \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u041c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c *\/typedef void (*Action_Handler)(int state, int action);Action_Handler action_handler;  \/\/ \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432int state; \/\/ \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044bStep **ROM; \/\/ \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u0423\u041c\u0422void UMT_Run(int in){    Step step = ROM[state][in];    action_handler(step.state, step.action);    state = step.state;}\/* --- \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0423\u041c\u0422 (ROM Loader) --- *\/void Load_ROM(Step **rom, int S0_state, Action_Handler ah){ROM = rom;state = S0_state;action_handler = ah;}\/\/------------------------------------------\/\/------------------------------------------\/\/ \u0421\u041f\u0415\u0426\u0418\u0410\u041b\u0418\u0417\u0418\u0420\u041e\u0412\u041d\u041d\u042b\u0419 \u0410\u0412\u0422\u041e\u041c\u0410\u0422 (\u041e\u0411\u0401\u0420\u0422\u041a\u0410 \u041d\u0410\u0414 \u041b\u041e\u0413\u0418\u041a\u041e\u0419 \u0423\u041c\u0422)\/\/------------------------------------------typedef enum { S0, S1, S2, ERR } State;typedef enum { M, V, T, P, O } Input;typedef enum { A0, A1, A2, A3, A4, A5, A6, A7 } Action;const char* Actions[] = { \"\u041f\u0420\u0418\u0415\u041c\", \"\u0424\u0420\u041e\u0414\", \"\u041e\u0416\u0418\u0414\u0410\u0422\u042c\", \"\u0412\u0417\u041b\u041e\u041c\", \"\u041e\u0422\u041a\u0410\u0417\", \"\u0412\u042b\u0414\u0410\u0427\u0410\", \"\u0421\u0415\u0420\u0412\u0418\u0421\", \"\u0412\u041e\u0417\u0412\u0420\u0410\u0422\" };const char* States[] = { \"\u0411\u0410\u041b\u0410\u041d\u0421 0\", \"\u0411\u0410\u041b\u0410\u041d\u0421 1\", \"\u0411\u0410\u041b\u0410\u041d\u0421 2\", \"\u0411\u041b\u041e\u041a\u0418\u0420\u041e\u0412\u041a\u0410\" };\/\/ \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u0423\u041c\u0422Step *Machine_Limonad[] ={                    \/*     M       V      T        P      O    *\/    \/* S0  *\/ [0] = ROW({1, 0}, {3, 3}, {0, 4}, {0, 2}, {0, 4}),    \/* S1  *\/ [1] = ROW({2, 0}, {3, 3}, {0, 1}, {1, 2}, {0, 7}),    \/* S2  *\/ [2] = ROW({0, 5}, {3, 3}, {0, 1}, {2, 2}, {0, 7}),    \/* ERR *\/ [3] = ROW({3, 6}, {3, 6}, {3, 6}, {3, 6}, {3, 6})};\/* \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432: \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f *\/void Exec_Action(int state, int action){    LOG(\"\\nACTION: %s -&gt; NEXT STATE: %s\\n\", Actions[action], States[state]);}void machine_loop()\/\/ \u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0446\u0438\u043a\u043b \u043c\u0430\u0448\u0438\u043d\u044b{    while (state != ERR)    {        LOG(\"[%s] &gt; \", States[state]);        int c = toupper(getche());        int in = (c=='M') ? M :                   (c=='V') ? V :                   (c=='T') ? T :                   (c=='P') ? P :                   (c=='O') ? O : -1;        if(in == -1) continue;        \/* \u0418\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0448\u0430\u0433\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043d\u0430 \u0423\u041c\u0422 *\/        UMT_Run(in);    }}\/\/------------------------------------------int main(void){    setlocale(LC_ALL, \"en_US.UTF-8\");    LOG(\"--- \u041b\u0418\u041c\u041e\u041d\u0410\u0414-\u0423\u041c\u0422-1960 ---\\n\u0412\u0412\u0415\u0414\u0418\u0422\u0415 \u0421\u0418\u0413\u041d\u0410\u041b: M - \u043c\u043e\u043d\u0435\u0442\u0430, V - \u0432\u0441\u043a\u0440\u044b\u0442\u0438\u0435, T - \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0445\u043e\u0434, P - \u043f\u0443\u0441\u0442\u043e, O - \u043e\u0442\u043c\u0435\u043d\u0430. \\n\");    Load_ROM(Machine_Limonad, S0, Exec_Action); \/\/ \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u0423\u041c\u0422    machine_loop(); \/\/ \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442    LOG(\"\\n--- \u041c\u0410\u0428\u0418\u041d\u0410 \u041e\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d\u0410 ---\\n\");    getch();    return 0;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0444\u043e\u0440\u043c\u0438\u043c \u044d\u0442\u0443 \u0423\u041c\u0422 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439. \u041e\u043d\u0430 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443) \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0446\u0438\u043a\u043b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <code>machine_loop()<\/code>. \u0412 \u0446\u0438\u043a\u043b\u0435 VM \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>REG_IN<\/code> \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>Out_Action()<\/code>.<br \/> \u0422\u0430\u043a \u0436\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>DISASSEMBLER()<\/code>, \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0432 \u043c\u043d\u0435\u043c\u043e\u043a\u043e\u0434.<br \/> \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>set_jmps()<\/code> \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 <code>JMP<\/code> \u0438 <code>JMP_IF<\/code> \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0447\u0442\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e. \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<\/p>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u0435: \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435 \u043a\u043e\u0434, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>main()<\/code>, \u043f\u043e\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/\/ umt_vm.cpp#include &lt;stdlib.h&gt;  #include &lt;stdarg.h&gt;  #include &lt;conio.h&gt;  #include &lt;string.h&gt;  #include &lt;ctype.h&gt;  #include &lt;locale.h&gt;    #define LOG printf    \/\/------------------------------------------  \/\/ \u0423\u041d\u0418\u0412\u0415\u0420\u0421\u0410\u041b\u042c\u041d\u0410\u042f \u041c\u0410\u0428\u0418\u041d\u0410 \u0422\u042c\u042e\u0420\u0418\u041d\u0413\u0410 (\u0423\u041c\u0422)  \/\/------------------------------------------    \/\/------------------------------------------  \/\/ \u0421\u0418\u0421\u0422\u0415\u041c\u0410 \u041a\u041e\u041c\u0410\u041d\u0414 VM  \/\/------------------------------------------  \/*  \u0413\u0420\u0410\u041c\u041c\u0410\u0422\u0418\u041a\u0410 \u0410\u0421\u0421\u0415\u041c\u0411\u041b\u0415\u0420\u0410 (EBNF):  ------------------------------------------  &lt;program&gt;     ::= { &lt;instruction&gt; }  &lt;instruction&gt; ::= \"LD_IN\"                  | \"JMP\" &lt;address&gt;                  | \"JMP_IF\" &lt;condition&gt; &lt;address&gt;                  | \"EXEC\" &lt;action_id&gt;                  | \"SET_S\" &lt;state_id&gt;                  | \"LABEL\" &lt;label_id&gt;                  | \"BREAK\"                  | \"HALT\"  &lt;condition&gt;   ::= &lt;integer&gt;  (* ASCII \u043a\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 *)  &lt;address&gt;     ::= &lt;integer&gt;  &lt;action_id&gt;   ::= &lt;integer&gt;  &lt;state_id&gt;    ::= &lt;integer&gt;  &lt;label_id&gt;    ::= &lt;integer&gt;  ------------------------------------------  *\/    typedef enum  {      \/\/ \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u0423\u041c\u0422      LD_IN,   \/\/ \u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440      JMP,     \/\/ \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434. \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 Y      JMP_IF,  \/\/ \u0423\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434. \u0415\u0441\u043b\u0438 \u0432\u0445\u043e\u0434 == X, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 Y, \u0438\u043d\u0430\u0447\u0435 \u2014 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435      EXEC,    \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 Z      SET_S,   \/\/ \u0421\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439      LABEL,   \/\/ \u041c\u0430\u0440\u043a\u0435\u0440 \u043c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f JMP_IF      BREAK,   \/\/ \u0422\u043e\u0447\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 (DEBUG)      HALT,     \/\/ \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043c\u0430\u0448\u0438\u043d\u044b        OpCodes_Total  } OpCode;    \/\/ \u0420\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434 (\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438)  const int OP_SIZE[] =  {      1, \/\/ LD_IN      2, \/\/ JMP &lt;\u043c\u0435\u0442\u043a\u0430&gt;      3, \/\/ JMP_IF &lt;\u0443\u0441\u043b\u043e\u0432\u0438\u0435&gt; &lt;\u043c\u0435\u0442\u043a\u0430&gt;      2, \/\/ EXEC &lt;\u043d\u043e\u043c\u0435\u0440_\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f&gt;      2, \/\/ SET_S &lt;\u043d\u043e\u043c\u0435\u0440_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f&gt;      2, \/\/ LABEL &lt;\u043d\u043e\u043c\u0435\u0440_\u043c\u0435\u0442\u043a\u0438&gt;      1, \/\/ BREAK      1  \/\/ HALT  };    \/\/ \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430  const char* MNEMONICS[] =  {      \"LD_IN\", \"JMP\", \"JMP_IF\", \"EXEC\", \"SET_S\", \"LABEL\", \"BREAK\", \"HALT\"  };  \/\/------------------------------------------    \/\/------------------------------------------  \/\/ \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430  \/\/------------------------------------------  struct UVM;  typedef void (*Signal_Handler)(UVM &amp;VM);    struct UVM  {      int IP;              \/\/ Instruction Pointer (\u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443)      int REG_IN;          \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430      int CUR_S;           \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f      int REG_OUT;         \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (Action)      int *ROM;            \/\/ \u041f\u0430\u043c\u044f\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u044b      int F_IS_RUN;        \/\/ \u0424\u043b\u0430\u0433 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u0430\u0448\u0438\u043d\u044b        Signal_Handler in_signal_handler;       \/\/ \u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0432 REG_IN      Signal_Handler out_signal_handler;      \/\/ \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u0421\u0438\u0433\u043d\u0430\u043b \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 REG_OUT      Signal_Handler break_signal_handler;    \/\/ \u0421\u0438\u0433\u043d\u0430\u043b \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0443  };    int VM_Step(UVM &amp;VM) \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435  \u043a\u043e\u043c\u0430\u043d\u0434\u044b  {      int opcode = VM.ROM[VM.IP];      int next_IP = VM.IP + OP_SIZE[opcode];        LOG(\"\\n[DBG] IP:%02d    %s\", VM.IP, MNEMONICS[opcode]);        switch (opcode)      {          case LD_IN:          case BREAK:          case HALT:          case LABEL:               break;          case SET_S:              VM.CUR_S = VM.ROM[VM.IP+1];              break;          case EXEC:              VM.REG_OUT = VM.ROM[VM.IP+1];              break;          case JMP:                  next_IP = VM.ROM[VM.IP+1];              break;          case JMP_IF:              if (VM.REG_IN == VM.ROM[VM.IP+1]) next_IP = VM.ROM[VM.IP+2];              break;      }        VM.IP = next_IP;        return opcode;  }    void machine_loop(UVM &amp;VM)\/\/ \u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0446\u0438\u043a\u043b \u043c\u0430\u0448\u0438\u043d\u044b  {      while (VM.F_IS_RUN)      {          int opcode = VM_Step(VM);          switch (opcode)          {              case HALT:                  VM.F_IS_RUN = 0;                  break;              case LD_IN:                  VM.in_signal_handler(VM);                  break;              case EXEC:                  VM.out_signal_handler(VM);                  break;              case BREAK:                  \/\/ \u0422\u043e\u0447\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 (breakpoint). \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438                  LOG(\"\\n&gt;&gt;BREAKPOINT&lt;&lt;\");                  VM.break_signal_handler(VM);                  break;          }      }  }    \/\/------------------------------------------  \/\/ DISASSEMBLER  \/\/------------------------------------------  void DISASSEMBLER(int *MEM, int RANGE_L, int RANGE_R)  {      LOG(\"\\n------- DISASSEMBLY START -------\\nMEMBLOCK = [0x%X-0x%X]\", RANGE_L, RANGE_R);      int i = RANGE_L;      while (i &lt; RANGE_R)      {          int opcode = MEM[i];          int is_valid = (opcode &gt;= 0 &amp;&amp; opcode &lt; OpCodes_Total);          int step = is_valid ? OP_SIZE[opcode] : 1;            \/\/ \u041f\u0435\u0447\u0430\u0442\u044c \u041c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0438          LOG(\"\\nADR:%02d    %-8s\", i, is_valid ? MNEMONICS[opcode] : \"DATA\");            \/\/ \u041f\u0435\u0447\u0430\u0442\u044c \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432          for (int a = 1; a &lt; step; a++) LOG(\" %d\", MEM[i + a]);          if (!is_valid) LOG(\" %d\", opcode);          i += step;      }      LOG(\"\\n------- DISASSEMBLY END -------\");  }  \/\/------------------------------------------    \/\/------------------------------------------  \/\/ GENERATE &amp; COMPLILE PROGRAM BY FSM TABLE  \/\/------------------------------------------  \/\/ \u0417\u0430\u043c\u0435\u043d\u0430 id \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0435 \u043d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f  void set_jmps(int *base, int *end, int id_count)  {      int *address_tab = (int*)malloc(id_count * sizeof(int));        \/\/ Pass 1: \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u0435\u0442\u043e\u043a      int *p = base;      while (p &lt; end)      {          if (*p == LABEL) address_tab[p[1]] = (int)(p - base);          p += OP_SIZE[*p];      }        \/\/ Pass 2: \u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c id \u043c\u0435\u0442\u043e\u043a \u043d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0442 base      p = base;      while (p &lt; end)      {          OpCode op = (OpCode)*p;          if (op == LABEL)  p[1] = (int)(p - base);          if (op == JMP)    p[1] = address_tab[p[1]];          if (op == JMP_IF) p[2] = address_tab[p[2]];          p += OP_SIZE[op];      }        free(address_tab);  }  \/\/------------------------------------------    \/\/------------------------------------------  \/\/ \u0414\u041e\u041c\u0415\u041d\u041d\u042b\u0419 \u0410\u0412\u0422\u041e\u041c\u0410\u0422 (\u041e\u0411\u0401\u0420\u0422\u041a\u0410 \u041d\u0410\u0414 \u041b\u041e\u0413\u0418\u041a\u041e\u0419 \u0423\u041c\u0422)  \/\/------------------------------------------  \/*  \u0414\u0418\u0421\u041a\u0420\u0415\u0422\u041d\u0410\u042f \u041c\u041e\u0414\u0415\u041b\u042c (\u0413\u0420\u0410\u0424 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410):  \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 S = {S0, S1, S2, ERR}  \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442 X = {M, V, T, P, O} (ASCII: 77, 86, 84, 80, 79)  \u0410\u043b\u0444\u0430\u0432\u0438\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 A = {A0, A1, A2, A3, A4, A5, A6, A7}  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u03b4: S\u00d7X -&gt; S  *\/    \/* --- \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u0432\u0442\u043c\u0430\u0442\u0430 --- *\/  \/* S0 \u2013 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 (0 \u0436\u0435\u0442\u043e\u043d), S1 \u2013 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435 (1 \u0436\u0435\u0442\u043e\u043d), S2 \u2013 \u043f\u0440\u0435\u0434\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 (2 \u0436\u0435\u0442\u043e\u043d\u0430), ERR \u2013 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430. *\/  typedef enum { S0, S1, S2, ERR } State;    \/* --- \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0449\u0435\u0435 \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b (\u0438\u043b\u0438 \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442) --- *\/  \/* \u041c \u2013 \u043c\u043e\u043d\u0435\u0442\u0430, \u0412 \u2013 \u0432\u0441\u043a\u0440\u044b\u0442\u0438\u0435, \u0422 \u2013 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0445\u043e\u0434, \u041f \u2013 \u043f\u0443\u0441\u0442\u043e, \u041e \u2013 \u043e\u0442\u043c\u0435\u043d\u0430. *\/  typedef enum { M, V, T, P, O } Input;  typedef enum { _M = 'M', _V = 'V', _T = 'T', _P = 'P', _O = 'O' } _Input;  const char *Inputs = \"MVTPO\";    \/* --- \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0449\u0435\u0435 \u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b (\u0438\u043b\u0438 \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442) --- *\/  \/* \u041f\u0420\u0418\u0415\u041c, \u0424\u0420\u041e\u0414, \u041e\u0416\u0418\u0414\u0410\u0422\u042c, \u0412\u0417\u041b\u041e\u041c, \u041e\u0422\u041a\u0410\u0417, \u0412\u042b\u0414\u0410\u0427\u0410, \u0421\u0415\u0420\u0412\u0418\u0421, \u0412\u041e\u0417\u0412\u0420\u0410\u0422 *\/  typedef enum { A0, A1, A2, A3, A4, A5, A6, A7 } Action;    const char* Actions[]       = { \"\u041f\u0420\u0418\u0415\u041c\", \"\u0424\u0420\u041e\u0414\", \"\u041e\u0416\u0418\u0414\u0410\u0422\u042c\", \"\u0412\u0417\u041b\u041e\u041c\", \"\u041e\u0422\u041a\u0410\u0417\", \"\u0412\u042b\u0414\u0410\u0427\u0410\", \"\u0421\u0415\u0420\u0412\u0418\u0421\", \"\u0412\u041e\u0417\u0412\u0420\u0410\u0422\" };  const char* States[]        = { \"\u0411\u0410\u041b\u0410\u041d\u0421 0\", \"\u0411\u0410\u041b\u0410\u041d\u0421 1\", \"\u0411\u0410\u041b\u0410\u041d\u0421 2\", \"\u0411\u041b\u041e\u041a\u0418\u0420\u041e\u0412\u041a\u0410\" };  const char* In_Actions[]    = { \"\u041c\u041e\u041d\u0415\u0422\u0410\", \"\u0412\u0421\u041a\u0420\u042b\u0422\u0418\u0415\", \" \u041f\u0420\u041e\u0422\u0418\u0412\u041e\u0425\u041e\u0414 \", \"\u041f\u0423\u0421\u0422\u041e\", \"\u041e\u0422\u041c\u0415\u041d\u0410\" };    \/\/------------------------------------------  \/\/ \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u0423\u041c\u0422 (Bytecode)  \/\/------------------------------------------  \/* --- \u041c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0432 ROM --- *\/  typedef enum  {      LB_S0, LB_S0_BUSY, LB_S0_A2, LB_S0_A4,      LB_S1, LB_S1_BUSY, LB_S1_A1, LB_S1_A2, LB_S1_A7,      LB_S2, LB_S2_BUSY, LB_S2_A1, LB_S2_A2, LB_S2_A5, LB_S2_A7,      LB_ER, LB_ER_LOOP  } Labels;    int ROM_LIMONAD[] =  {      SET_S,  S0,      BREAK,        \/* --- \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 S0 (0 \u043c\u043e\u043d\u0435\u0442) --- *\/      LABEL,  LB_S0,      SET_S,  S0,      LABEL,  LB_S0_BUSY,      LD_IN,      JMP_IF, _M, LB_S1,      \/\/ \u0412 S1 (\u0447\u0435\u0440\u0435\u0437 \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0441 EXEC A0)      JMP_IF, _V, LB_ER,     \/\/ \u0412\u0437\u043b\u043e\u043c      JMP_IF, _T, LB_S0_A4,      JMP_IF, _P, LB_S0_A2,      JMP_IF, _O, LB_S0_A4,      JMP,  LB_S0_BUSY,      \/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f        LABEL,  LB_S0_A4, EXEC, A4, JMP, LB_S0_BUSY,      LABEL,  LB_S0_A2, EXEC, A2, JMP, LB_S0_BUSY,        \/* --- \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 S1 (1 \u043c\u043e\u043d\u0435\u0442\u0430) --- *\/      LABEL,  LB_S1,      SET_S,  S1,      EXEC,   A0,              \/\/ \u041f\u0440\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0439 \u043c\u043e\u043d\u0435\u0442\u044b      LABEL,  LB_S1_BUSY,      LD_IN,      JMP_IF, _M, LB_S2,      \/\/ \u0412 S2 (\u0447\u0435\u0440\u0435\u0437 \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0441 EXEC A0)      JMP_IF, _V, LB_ER,      JMP_IF, _T, LB_S1_A1,      JMP_IF, _P, LB_S1_A2,      JMP_IF, _O, LB_S1_A7,      JMP,  LB_S1_BUSY,        LABEL,  LB_S1_A1, EXEC, A1, JMP, LB_S0,      LABEL,  LB_S1_A2, EXEC, A2, JMP, LB_S1_BUSY,      LABEL,  LB_S1_A7, EXEC, A7, JMP, LB_S0,        \/* --- \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 S2 (2 \u043c\u043e\u043d\u0435\u0442\u044b) --- *\/      LABEL,  LB_S2,      SET_S,  S2,      EXEC,   A0,              \/\/ \u041f\u0440\u0438\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u043d\u0435\u0442\u044b      LABEL,  LB_S2_BUSY,      LD_IN,      JMP_IF, _M, LB_S2_A5,   \/\/ \u0412\u044b\u0434\u0430\u0447\u0430      JMP_IF, _V, LB_ER,      JMP_IF, _T, LB_S2_A1,      JMP_IF, _P, LB_S2_A2,      JMP_IF, _O, LB_S2_A7,      JMP,  LB_S2_BUSY,        LABEL,  LB_S2_A5, EXEC, A5, JMP, LB_S0,      LABEL,  LB_S2_A1, EXEC, A1, JMP, LB_S0,      LABEL,  LB_S2_A2, EXEC, A2, JMP, LB_S2_BUSY,      LABEL,  LB_S2_A7, EXEC, A7, JMP, LB_S0,        \/* --- \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 ERR --- *\/      LABEL,  LB_ER,      SET_S,  ERR,      EXEC,   A3,             \/\/ \u0424\u0438\u043a\u0441\u0430\u0446\u0438\u044f \u0432\u0437\u043b\u043e\u043c\u0430      EXEC,   A6,             \/\/ \u0421\u0438\u0433\u043d\u0430\u043b \u0441\u0435\u0440\u0432\u0438\u0441\u0430      HALT                    \/\/ \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430  };  \/\/------------------------------------------    \/* \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432: \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f *\/  void Out_Action(UVM &amp;VM)  {      LOG(\"\\nACTION: %s -&gt; NEXT STATE: %s\", Actions[VM.REG_OUT], States[VM.CUR_S]);        if(VM.REG_OUT == A6)      {          LOG(\"\\n\u0411\u041b\u041e\u041a\u0418\u0420\u0423\u042e \u041c\u0410\u0428\u0418\u041d\u0423.\");          VM.F_IS_RUN = 0;      }  }    void In_Action(UVM &amp;VM)  {      LOG(\"\\n\u0416\u0414\u0423 \u0421\u0418\u0413\u041d\u0410\u041b. STATE = [%s] &gt; \", States[VM.CUR_S]);      VM.REG_IN = toupper(getche()); \/\/ WAIT INPUT...  }    void Break_Action(UVM &amp;VM)  {      LOG(\"\\nSTATE:IN:OUT = [%s] [%s] [%s]\\n\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043b\u044e\u0431\u0443\u044e \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f...\", States[VM.CUR_S], In_Actions[VM.REG_IN] , Actions[VM.REG_OUT]);      getch();  }    char* load_bin(const char *fname, int *n)  {      *n = 0;      FILE *f = fopen(fname, \"rb\");      if (!f) return NULL;      fseek(f, 0, 2); long len = ftell(f); rewind(f);      char *b = (len &gt; 0) ? (char*)malloc(len) : NULL; \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b      if (b) *n = fread(b, 1, len, f);      if(*n!=len) { free(b); b = NULL; }      fclose(f);      return b;  }    int main()  {      setlocale(LC_ALL, \"en_US.UTF-8\");        LOG(\"--- \u041a\u041b\u0410\u0421\u0421\u0418\u0427\u0415\u0421\u041a\u0410\u042f VM C \u0418\u041d\u0416\u0415\u041d\u0415\u0420\u041d\u042b\u041c \u041c\u041e\u041d\u0418\u0422\u041e\u0420\u041e\u041c (1960) ---\\n\");        \/\/------------------------------------------      \/\/ \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443      \/\/------------------------------------------      LOG(\"\\n------- LOAD ROM -------\");      LOG(\"\\n\u0417\u0410\u0413\u0420\u0423\u0417\u0418\u0422\u042c ROM \u0421 \u041b\u0415\u041d\u0422\u042b?: Y\/N\");      int *ROM, ROM_LEN;      if(toupper(getch()) == 'Y')      {          LOG(\"\\n\u0413\u0420\u0423\u0416\u0423: machine_limonad.bin\");          ROM = (int*)load_bin(\"machine_limonad.bin\", &amp;ROM_LEN);          ROM_LEN = ROM_LEN \/ sizeof(int);          if(!ROM)          {              LOG(\"\\nERR: \u0424\u0410\u0419\u041b \u041d\u0415 \u041d\u0410\u0419\u0414\u0415\u041d. \u041a\u041e\u041d\u0415\u0426 \u0420\u0410\u0411\u041e\u0422\u042b.\");              return 0;          }      }      else      {          LOG(\"\\n\u0418\u0421\u041f\u041e\u041b\u042c\u0417\u0423\u042e \u0412\u0421\u0422\u0420\u041e\u0415\u041d\u041d\u042b\u0419 ROM\");          ROM = ROM_LIMONAD;          ROM_LEN = sizeof(ROM_LIMONAD) \/ sizeof(int);          \/\/ \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043c\u0435\u0442\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432          set_jmps(ROM, ROM+ROM_LEN, 1000);      }        DISASSEMBLER(ROM, 0, ROM_LEN); \/\/ \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d        LOG(\"\\n\u0412\u0412\u0415\u0414\u0418\u0422\u0415 \u0421\u0418\u0413\u041d\u0410\u041b: M - \u043c\u043e\u043d\u0435\u0442\u0430, V - \u0432\u0441\u043a\u0440\u044b\u0442\u0438\u0435, T - \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0445\u043e\u0434, P - \u043f\u0443\u0441\u0442\u043e, O - \u043e\u0442\u043c\u0435\u043d\u0430. \\n\");        \/\/------------------------------------------      \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c VM      \/\/------------------------------------------        UVM VM;      \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432      VM.out_signal_handler      = Out_Action;      VM.in_signal_handler       = In_Action;      VM.break_signal_handler    = Break_Action;        \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435      VM.ROM        = ROM;      VM.IP         = 0;      VM.CUR_S      = S0;      VM.REG_IN     = P;      VM.REG_OUT    = A2;      VM.F_IS_RUN   = 1;        \/\/ \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0446\u0438\u043a\u043b \u043c\u0430\u0448\u0438\u043d\u044b      LOG(\"\\n------- RUN PROGRAM -------\");      machine_loop(VM);      LOG(\"\\n--- \u041c\u0410\u0428\u0418\u041d\u0410 \u041e\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d\u0410 ---\\n\");        getch();      return 0;  }  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>6. \u0422\u0420\u0410\u041d\u0421\u041f\u0418\u041b\u042f\u0426\u0418\u042f: FSM-\u0422\u0410\u0411\u041b\u0418\u0426\u0410 -&gt; \u0421<\/strong><\/p>\n<pre><code>                \u2500\u2500\u2500\u2500\u2500\u2500\u2584\u2580\u2584\u2500\u2500\u2500\u2500\u2500\u2584\u2580\u2584                  \u2500\u2500\u2500\u2500\u2500\u2584\u2588\u2591\u2591\u2580\u2580\u2580\u2580\u2580\u2591\u2591\u2588\u2584                  \u2500\u2584\u2584\u2500\u2500\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2500\u2500\u2584\u2584                  \u2588\u2584\u2584\u2588\u2500\u2588\u2591\u2591\u2580\u2591\u2591\u252c\u2591\u2591\u2580\u2591\u2591\u2588\u2500\u2588\u2584\u2584\u2588  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c VM \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c, \u0438 FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 FSM-\u0442\u0430\u0431\u043b\u0438\u0446 \u0432 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0443\u0447\u043d\u043e\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<br \/> \u0412\u044b\u0448\u0435 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0433\u0440\u0430\u0444 \u0432 \u0421-\u043a\u043e\u0434.<br \/> \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>transpile_C_switch()<\/code> \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0421 \u0441\u043e switch, \u0430 <code>transpile_C_goto()<\/code> \u2013 \u0432 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u044b\u0439 \u043a \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u043c\u0443 \u043a\u043e\u0434 \u0441 goto.<\/p>\n<p>\u0411\u0438\u0435\u043a\u0446\u0438\u0438 \u0442\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u044f\u0446\u0438\u0438:<\/p>\n<pre><code>\u041e\u0426\u0418\u0424\u0420\u041e\u0412\u0410\u041d\u041d\u042b\u0419 \u0413\u0420\u0410\u0424 (\u041c\u0410\u0422\u0420\u0418\u0426\u0410)             \u0413\u0415\u041d\u0415\u0420\u0418\u0420\u0423\u0415\u041c\u042b\u0419 C-\u041a\u041e\u0414 (SWITCH)    +---------------------------+           +---------------------------+    | S_curr | In | S_next | Act|           | void machine_logic(int in)|    +--------+----+--------+----+           | {                         |    |   0    | 'M'|   1    |  0 | -------&gt;  |   switch (state)          |    |   0    | 'V'|   3    |  3 |           |   {                       |    +--------+----+--------+----+           |     case S0: \/\/ \u0411\u043b\u043e\u043a (A)  |                                            |     {                     |         (A) \u0414\u0418\u0421\u041f\u0415\u0422\u0427\u0415\u0420 \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0419            |       switch (in)         |         \u0412\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e (S)            |       {    \/\/ \u0411\u043b\u043e\u043a (B)    |                                            |         case 'M': \/\/ (C)  |         (B) \u0414\u0418\u0421\u041f\u0415\u0422\u0427\u0415\u0420 \u0412\u0425\u041e\u0414\u0410                |           process(S1, A0);|         \u0412\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0443 (X)     |           break;          |                                            |         case 'V': \/\/ (D)  |         (C, D) \u0420\u0415\u0411\u0420\u0410 \u0413\u0420\u0410\u0424\u0410                 |           process(S3, A3);|       \u041f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0432\u044b\u0434\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b   |           break;          |                                            |       }                   |         (E) \u0428\u0410\u0413 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410 \u0417\u0410\u041a\u041e\u041d\u0427\u0415\u041d          |       break; \/\/ (E)       |         \u0412\u044b\u0445\u043e\u0434                              |     }                     |                                            |     ...                   |                                            |   }                       |    +---------------------------+           +---------------------------+    \u041e\u0426\u0418\u0424\u0420\u041e\u0412\u0410\u041d\u041d\u042b\u0419 \u0413\u0420\u0410\u0424 (\u041c\u0410\u0422\u0420\u0418\u0426\u0410)             \u0413\u0415\u041d\u0415\u0420\u0418\u0420\u0423\u0415\u041c\u042b\u0419 C-\u041a\u041e\u0414 (GOTO)    +---------------------------+           +---------------------------+    | S_curr | In | S_next | Act|           | void machine_logic(int in)|    +--------+----+--------+----+           | {                         |    |   0    | 'M'|   1    |  0 | --(A)--&gt;  |   if (state == S0) goto L0|    |   0    | 'V'|   3    |  3 | --(A)--&gt;  |   if (state == S1) goto L1|    +--------+----+--------+----+           |   ...                     |                                            |                           |         (A) \u0414\u0418\u0421\u041f\u0415\u0422\u0427\u0415\u0420 \u0412\u0425\u041e\u0414\u0410                | L0: \/\/ \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 S0       |         \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 S              | {                         |         \u0432 \u0430\u0434\u0440\u0435\u0441 \u043c\u0435\u0442\u043a\u0438 L                    |   if (in == 'M') { \/\/ (B) |                                            |     process(S1, A0);      |         (B) \u0420\u0415\u0411\u0420\u041e \u0413\u0420\u0410\u0424\u0410                    |     return;               |         \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u044b (S, In)           |   }                       |         \u0432 \u0441\u043c\u0435\u043d\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435       |   if (in == 'V') { \/\/ (C) |                                            |     process(S3, A3);      |         (C) \u0428\u0410\u0413 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0410 \u0417\u0410\u041a\u041e\u041d\u0427\u0415\u041d          |     return;               |         \u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438                   |   }                       |                                            | }                         |                                            | ...                       |                                            | }                         |    +---------------------------+           +---------------------------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>7. \u041a\u041e\u041c\u041f\u0418\u041b\u042f\u0422\u041e\u0420: FSM-\u0413\u0420\u0410\u0424 -&gt; \u0411\u0410\u0419\u0422\u041a\u041e\u0414<\/strong><\/p>\n<p>\u0422\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0432 \u0421-\u043a\u043e\u0434 \u0441 goto \u2013 \u043f\u043e\u0447\u0442\u0438 \u0442\u043e\u0442 \u0436\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434, \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0443\u0442\u044c \u0432 \u0438\u043d\u043e\u0439 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435. \u041f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 VM \u0432 <code>compile()<\/code> \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430:<\/p>\n<pre><code>\u0421\u0422\u0420\u041a\u0423\u0422\u0423\u0420\u0410 \u0421\u0423\u041f\u0415\u0420-\u0411\u041b\u041e\u041a\u0410 (\u0421\u041e\u041e\u0422\u0412\u0415\u0422\u0421\u0422\u0412\u0423\u0415\u0422 \u0421\u0422\u0420\u041e\u041a\u0415 FSM-\u0422\u0410\u0411\u041b\u0418\u0426\u042b)    \u0412\u0425\u041e\u0414 \u0418\u0417 \u0414\u0420\u0423\u0413\u0418\u0425 \u0411\u041b\u041e\u041a\u041e\u0412 (JMP STATE_Sn)                 |                 v  +---------------------------------------+  | 1. \u0411\u041b\u041e\u041a \u0418\u041d\u0418\u0426\u0418\u0410\u041b\u0418\u0417\u0410\u0426\u0418\u0418 (Entry)         |  |    LABEL STATE_Sn  &lt;------------------+--- \u041c\u0435\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435  |    SET_S s      &lt;---------------------+--- \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432 REG_S  +---------------------------------------+                 |                 v  +---------------------------------------+  | 2. \u0411\u041b\u041e\u041a \u041e\u041f\u0420\u041e\u0421\u0410 (Sensing Loop)         |  |    LABEL IN_Sn  &lt;-----------+         |  |    LD_IN        &lt;-----------+---------+--- \u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (REG_IN)  +---------------------------------------+                 |                 v  +---------------------------------------+  | 3. \u0414\u0418\u0421\u041f\u0415\u0422\u0427\u0415\u0420 (Dispatcher)             |  |    JMP_IF X_1, ID_1 ------------------+---&gt; [\u041a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 1]  |    JMP_IF X_2, ID_2 ------------------+---&gt; [\u041a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 2]  |    ...                                |  |    JMP_IF X_n, ID_n ------------------+---&gt; [\u041a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 n]  |    JMP IN_Sn        ------------------+---&gt; [\u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a LD_IN  +---------------------------------------+      \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439]                 |                 | (\u041b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430)                 v  +---------------------------------------+  | 4. \u041e\u0411\u0420\u0410\u0411\u041e\u0422\u0427\u0418\u041a\u0418 (Handlers \/ Edges)     |  |                                       |  |  LABEL ID_1:                          |  |    EXEC Action_1                      |  |    JMP S_next_1 ----------------------+---&gt; [\u0412\u042b\u0425\u041e\u0414 \u0412 \u0421\u041b\u0415\u0414\u0423\u042e\u0429\u0418\u0419 \u0421\u0423\u041f\u0415\u0420-\u0411\u041b\u041e\u041a]  |                                       |  |  LABEL ID_2:                          |  |    EXEC Action_2                      |  |    JMP S_next_2 ----------------------+---&gt; [\u0412\u042b\u0425\u041e\u0414 \u0412 \u0421\u041b\u0415\u0414\u0423\u042e\u0429\u0418\u0419 \u0421\u0423\u041f\u0415\u0420-\u0411\u041b\u041e\u041a]  +---------------------------------------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>emit()<\/code> \u2013 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430, \u0431\u0435\u0440\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 <code>OP_SIZE<\/code> \u0438 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u043d\u0443\u0436\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0443 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0438 \u0432 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u0442\u0435\u043a\u0441\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430.<\/p>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u0435:<br \/> \u2013 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0444\u0430\u0439\u043b\u044b machine_limonad_1.cpp, machine_limonad_2.cpp, machine_limonad.asm, \u0443\u0441\u0442\u0430\u043d\u0432\u0438\u0442\u044c \u0431\u0438\u0435\u043a\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0434\u043e\u043c \u0432 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445<br \/> \u2013 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435 \u043a\u043e\u0434, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>main()<\/code>, \u043f\u043e\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443.<br \/> \u2013 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 VM \u0431\u0430\u0439\u0442\u043a\u043e\u0434 machine_limonad.bin, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/\/ umt_vm_compiler.cpp#include &lt;stdlib.h&gt;  #include &lt;stdarg.h&gt;  #include &lt;conio.h&gt;  #include &lt;string.h&gt;  #include &lt;ctype.h&gt;  #include &lt;locale.h&gt;    #define LOG printf    \/\/------------------------------------------  \/\/ \u041a\u041e\u041c\u041f\u0418\u041b\u042f\u0422\u041e\u0420 \u0414\u041b\u042f \u0423\u041d\u0418\u0412\u0415\u0420\u0421\u0410\u041b\u042c\u041d\u041e\u0419 \u041c\u0410\u0428\u0418\u041d\u042b \u0422\u042c\u042e\u0420\u0418\u041d\u0413\u0410 (\u0423\u041c\u0422)  \/\/------------------------------------------    \/\/------------------------------------------  \/\/ \u0421\u0418\u0421\u0422\u0415\u041c\u0410 \u041a\u041e\u041c\u0410\u041d\u0414 VM  \/\/------------------------------------------  typedef enum  {      \/\/ \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u0423\u041c\u0422      LD_IN,   \/\/ \u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440      JMP,     \/\/ \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434. \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 Y      JMP_IF,  \/\/ \u0423\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434. \u0415\u0441\u043b\u0438 \u0432\u0445\u043e\u0434 == X, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 Y, \u0438\u043d\u0430\u0447\u0435 \u2014 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435      EXEC,    \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 Z      SET_S,   \/\/ \u0421\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439      LABEL,   \/\/ \u041c\u0430\u0440\u043a\u0435\u0440 \u043c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f JMP_IF      BREAK,   \/\/ \u0422\u043e\u0447\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 (DEBUG)      HALT,     \/\/ \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043c\u0430\u0448\u0438\u043d\u044b        OpCodes_Total  } OpCode;    \/\/ \u0420\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434 (\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438)  const int OP_SIZE[] =  {      1, \/\/ LD_IN      2, \/\/ JMP &lt;\u043c\u0435\u0442\u043a\u0430&gt;      3, \/\/ JMP_IF &lt;\u0443\u0441\u043b\u043e\u0432\u0438\u0435&gt; &lt;\u043c\u0435\u0442\u043a\u0430&gt;      2, \/\/ EXEC &lt;\u043d\u043e\u043c\u0435\u0440_\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f&gt;      2, \/\/ SET_S &lt;\u043d\u043e\u043c\u0435\u0440_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f&gt;      2, \/\/ LABEL &lt;\u043d\u043e\u043c\u0435\u0440_\u043c\u0435\u0442\u043a\u0438&gt;      1, \/\/ BREAK      1  \/\/ HALT  };    \/\/ \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430  const char* MNEMONICS[] =  {      \"LD_IN\", \"JMP\", \"JMP_IF\", \"EXEC\", \"SET_S\", \"LABEL\", \"BREAK\", \"HALT\"  };  \/\/------------------------------------------    \/\/------------------------------------------  \/\/ GENERATE &amp; COMPLILE PROGRAM BY FSM TABLE  \/\/------------------------------------------  typedef struct { int state, action; } Step;  struct Compiler  {      char *ascii;    \/\/ \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434      int *bin;       \/\/ \u0411\u0430\u0439\u0442\u043a\u043e\u0434      int *bin_p;      char *ascii_p;  };    \/\/ \u0417\u0430\u043c\u0435\u043d\u0430 id \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0435 \u043d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f  void set_jmps(int *base, int *end, int id_count)  {      int *address_tab = (int*)malloc(id_count * sizeof(int));        \/\/ Pass 1: \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u0435\u0442\u043e\u043a      int *p = base;      while (p &lt; end)      {          if (*p == LABEL) address_tab[p[1]] = (int)(p - base);          p += OP_SIZE[*p];      }        \/\/ Pass 2: \u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c id \u043c\u0435\u0442\u043e\u043a \u043d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0442 base      p = base;      while (p &lt; end)      {          OpCode op = (OpCode)*p;          if (op == LABEL)  p[1] = (int)(p - base);          if (op == JMP)    p[1] = address_tab[p[1]];          if (op == JMP_IF) p[2] = address_tab[p[2]];          p += OP_SIZE[op];      }        free(address_tab);  }    void emit(Compiler &amp;C, OpCode op, ...)  {      va_list ap;      va_start(ap, op);        \/\/------------------------------------------      \/\/ \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430      *C.bin_p++ = op;      \/\/------------------------------------------        \/\/------------------------------------------      \/\/ \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430      C.ascii_p += sprintf(C.ascii_p, \"  %-7s\", MNEMONICS[op]);      for (int i = 0; i &lt; OP_SIZE[op] - 1; i++)      {          int val = va_arg(ap, int);          *C.bin_p++ = val;          C.ascii_p += sprintf(C.ascii_p, (i == 0) ? \" %-3d\" : \", %-3d\", val);      }      C.ascii_p += sprintf(C.ascii_p, \"\\n\");      \/\/------------------------------------------        va_end(ap);  }    int compile(Compiler &amp;C, Step **matrix, int n_states, int n_inputs, const char *in_mset)  {  \/*      \u0411\u0438\u0435\u043a\u0446\u0438\u044f \"\u0413\u0440\u0430\u0444 -&gt; \u041a\u043e\u0434\":      \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: \u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441 \u0432\u044b\u043d\u043e\u0441\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.        \u041a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u0433\u0440\u0430\u0444\u0430 \u0440\u0430\u0437\u0432\u043e\u0440\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 3 \u0431\u043b\u043e\u043a\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0430\u043d\u0434        1. \u0411\u043b\u043e\u043a \u043e\u043f\u0440\u043e\u0441\u0430 (Inputs Handler)      2. \u0411\u043b\u043e\u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 (Dispatcher): \u041a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a JMP_IF \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439         \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0415\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0411\u043b\u043e\u043a \u043e\u043f\u0440\u043e\u0441\u0430.      3. \u0411\u043b\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (Outputs Handler): \u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b EXEC + JMP,   *\/        C.bin_p = C.bin;      C.ascii_p = C.ascii;        int id = 0;        \/\/ \"\u0414\u0435\u0440\u0435\u0432\u043e\" \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0445: \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u0435\u043a \u0432\u0445\u043e\u0434\u0430      int *ls = (int*)malloc(n_states * sizeof(int)); \/\/ \u043c\u0435\u0442\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439      int *ll = (int*)malloc(n_states * sizeof(int)); \/\/ \u043c\u0435\u0442\u043a\u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441 \u0446\u0438\u043a\u043b\u043e\u043c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430      for (int i = 0; i &lt; n_states; i++) { ls[i] = id++; ll[i] = id++; }        for (int s = 0; s &lt; n_states; s++)      {          \/\/------------------------------------------          \/\/ 1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430          emit(C, LABEL, ls[s]);          emit(C, SET_S, s);          emit(C, LABEL, ll[s]);          emit(C, LD_IN);          \/\/------------------------------------------            int start_br = id; \/\/ \u0417\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e ID \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0421\u0430\u043c\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u044b \u0437\u0430 \u0446\u0438\u043a\u043b \u043e\u043f\u0440\u043e\u0441\u0430 (\u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430).            \/\/------------------------------------------          \/\/ 2. \u0411\u043b\u043e\u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430: \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0440\u0435\u0431\u0435\u0440 (\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432)          for (int i = 0; i &lt; n_inputs; i++) emit(C, JMP_IF, in_mset[i], id++);          emit(C, JMP, ll[s]); \/\/ \u0415\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430 LD_IN          \/\/------------------------------------------            \/\/------------------------------------------          \/\/ 3. \u0411\u043b\u043e\u043a \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0431\u043b\u043e\u043a \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f          for (int i = 0; i &lt; n_inputs; i++)          {              emit(C, LABEL, start_br + i); \/\/ \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u0443\u044e \u043c\u0435\u0442\u043a\u0443              emit(C, EXEC, matrix[s][i].action);              emit(C, JMP, ls[matrix[s][i].state]);          }          \/\/------------------------------------------      }        emit(C, HALT);      set_jmps(C.bin, C.bin_p, id); \/\/ \u0420\u0430\u0441\u0447\u0451\u0442 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u0432 JMP \u0438 JMP_IF        free(ls); free(ll);      return (int)(C.bin_p - C.bin);  }  \/\/------------------------------------------    int save_bin(const char *fname, char *b, size_t n)  {      FILE *f = fopen(fname, \"wb\");      if (!f) return 0;      size_t r = fwrite(b, 1, n, f);      fclose(f);      return r == n;  }    \/\/------------------------------------------  \/\/ FSM \u0414\u041b\u042f \u041a\u041e\u041c\u041f\u0418\u041b\u042f\u0426\u0418\u0418  \/\/------------------------------------------  #define ROW(...) (Step[]){ __VA_ARGS__ }  Step *Machine_Limonad[] =  {                      \/*     M       V      T        P      O    *\/      \/* S0  *\/ [0] = ROW({1, 0}, {3, 3}, {0, 4}, {0, 2}, {0, 4}),      \/* S1  *\/ [1] = ROW({2, 0}, {3, 3}, {0, 1}, {1, 2}, {0, 7}),      \/* S2  *\/ [2] = ROW({0, 5}, {3, 3}, {0, 1}, {2, 2}, {0, 7}),      \/* ERR *\/ [3] = ROW({3, 6}, {3, 6}, {3, 6}, {3, 6}, {3, 6})  };  const char *Inputs = \"MVTPO\";  \/\/------------------------------------------    \/\/------------------------------------------  \/\/ FSM -&gt; C TRANSPILLER  \/\/------------------------------------------  \/\/ SWITCH VERSION  void transpile_C_switch(char* p, Step **matrix, int n_states, int n_inputs, const char *in_mset)  {      p += sprintf(p, \"void machine_logic(int in_signal)\\n{\\n    switch (state)\\n    {\\n\");        for (int s = 0; s &lt; n_states; s++)      {          p += sprintf(p, \"        case S%d:\\n        {\\n            switch (in_signal)\\n            {\\n\", s);          for (int i = 0; i &lt; n_inputs; i++)          {              \/\/ \u0411\u0438\u0435\u043a\u0446\u0438\u044f: \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b -&gt; \u0412\u0435\u0442\u0432\u044c Case -&gt; \u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430              p += sprintf(p, \"                case '%c':\\n                {\\n\", in_mset[i]);              p += sprintf(p, \"                    process_step(S%d, A%d);\\n\", matrix[s][i].state, matrix[s][i].action);              p += sprintf(p, \"                    break;\\n                }\\n\");          }          p += sprintf(p, \"            }\\n            break;\\n        }\\n\");      }      p += sprintf(p, \"    }\\n}\\n\");  }    \/\/ GOTO VERSION  void transpile_C_goto(char* p, Step **matrix, int n_states, int n_inputs, const char *in_mset)  {      p += sprintf(p, \"void machine_logic(int in_signal)\\n{\\n    \/* \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0444\u0430\u0437\u0443 (State Entry Dispatcher) *\/\\n\");        for (int s = 0; s &lt; n_states; s++) p += sprintf(p, \"    if (state == S%d) goto L_S%d;\\n\", s, s);        p += sprintf(p, \"    return;\\n\\n\");        for (int s = 0; s &lt; n_states; s++)      {          p += sprintf(p, \"L_S%d:\\n{\\n\", s);          for (int i = 0; i &lt; n_inputs; i++)          {              p += sprintf(p, \"    if (in_signal == '%c')\\n    {\\n        process_step(S%d, A%d);\\n        return;\\n    }\\n\",                           in_mset[i], matrix[s][i].state, matrix[s][i].action);          }          p += sprintf(p, \"    return;\\n}\\n\\n\");      }        p += sprintf(p, \"}\\n\");  }    \/\/------------------------------------------      int main()  {      setlocale(LC_ALL, \"en_US.UTF-8\");        LOG(\"\\n--- \u041a\u041e\u041c\u041f\u0418\u041b\u042f\u0422\u041e\u0420 FSM \u0414\u041b\u042f \u041a\u041b\u0410\u0421\u0421\u0418\u0427\u0415\u0421\u041a\u041e\u0419 VM C \u0418\u041d\u0416\u0415\u041d\u0415\u0420\u041d\u042b\u041c \u041c\u041e\u041d\u0418\u0422\u041e\u0420\u041e\u041c (1960) ---\\n\");        \/\/ \u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430: ~1024 \u0431\u0430\u0439\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0440\u0435\u0431\u0440\u043e \u0433\u0440\u0430\u0444\u0430      int MEM_LEN = 4 * 5 * 1024 + 1024; \/\/ n_states * n_inputs * 1024        char* ASM  = (char*)malloc(MEM_LEN);      char* BIN  = (char*)malloc(MEM_LEN);      char* C_CODE_1  = (char*)malloc(MEM_LEN);      char* C_CODE_2  = (char*)malloc(MEM_LEN);        \/\/------------------------------------------      \/\/ \u041a\u041e\u041c\u041f\u0418\u041b\u042f\u0426\u0418\u0419 \u0412 \u0411\u0410\u0419\u0422\u041a\u041e\u0414 VM      \/\/------------------------------------------      Compiler C;      C.bin = (int*)BIN;      C.ascii = ASM;      int len = compile(C, Machine_Limonad, 4, 5, Inputs);      \/\/------------------------------------------        \/\/------------------------------------------      \/\/ \u0422\u0420\u0410\u041d\u0421\u041f\u0418\u041b\u042f\u0426\u0418\u042f \u0412 \u0421      \/\/------------------------------------------      transpile_C_switch(C_CODE_1, Machine_Limonad, 4, 5, Inputs);      transpile_C_goto(C_CODE_2, Machine_Limonad, 4, 5, Inputs);      \/\/------------------------------------------        if(len)      {          LOG(\"\\n\u041a\u041e\u041c\u041f\u0418\u041b\u042f\u0426\u0418\u042f \u0423\u0421\u041f\u0415\u0428\u041d\u0410. \u0424\u0410\u0419\u041b\u042b:\\n\u0410\u0421\u0421\u0415\u041c\u0411\u041b\u0415\u0420 - machine_limonad.asm\\n\u0411\u0410\u0419\u0422\u041a\u041e\u0414 FSM - machine_limonad.bin\\nC-\u041a\u041e\u0414 (SWITCH) - machine_limonad_1.cpp\\nC-\u041a\u041e\u0414 (GOTO) - machine_limonad_2.cpp\");          save_bin(\"machine_limonad.bin\", BIN, len * sizeof(int));          save_bin(\"machine_limonad.asm\", ASM, strlen(ASM));          save_bin(\"machine_limonad_1.cpp\", C_CODE_1, strlen(C_CODE_1));          save_bin(\"machine_limonad_2.cpp\", C_CODE_2, strlen(C_CODE_2));      }      else      {          LOG(\"\\n\u041e\u0428\u0418\u0411\u041a\u0410 \u041a\u041e\u041c\u041f\u0418\u041b\u042f\u0426\u0418\u0418\");      }      free(ASM); free(BIN); free(C_CODE_1); free(C_CODE_2);        getch();      return 0;  }  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>8. \u0418\u0421\u0422\u041e\u0420\u0418\u042f: \u041c\u041e\u041d\u0415\u0422\u041e\u041f\u0420\u0418\u0415\u041c\u041d\u0418\u041a\u0418<\/strong><\/p>\n<p>\u2605\u3000\u2605\u3000\u2605\u3000\u3000\u3000\u3000<br \/> _____\u2605\u2588\u2588\u2588\u2588\u2588\u2605<br \/> __\u2605\u2588\u2588\u2588\u2588\u2588\u2605<br \/> _\u2605\u2588\u2588\u2588\u2588\u2588\u2605\u2022\u2605<br \/> \u2605\u2588\u2588\u2588\u2588\u2588\u2605\u2022\u2605\u2022\u2605 \u2605<br \/> \u2605\u2588\u2588\u2588\u2588\u2588\u2605\u2022\u2605\u2022\u2605\u2022\u2605<br \/> _\u2605\u2588\u2588\u2588\u2588\u2588\u2605\u2022\u2605\u2022\u2605<br \/> __\u2605\u2588\u2588\u2588\u2588\u2588\u2605\u2022\u2605<br \/> _____\u2605\u2588\u2588\u2588\u2588\u2588 \u2605<br \/> _________\u2605__\u2605<br \/> ____________\u2605<br \/> __________\u2605<\/p>\n<p>\u042d\u0442\u043e\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0447\u0435\u0440\u043a \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u0437\u043b\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432 \u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0443\u043c\u043e\u0432 \u0432 \u044d\u0442\u043e\u0439 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438.<br \/> \u041f\u0435\u0440\u0432\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 Vending Machine \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0432 1925 \u0433. \u0438 \u0437\u0430\u043f\u0430\u0442\u0435\u043d\u0442\u043e\u0432\u0430\u043d \u0432 1928-\u043c. \u0412 1940-60-\u0435 \u043c\u043e\u043d\u0435\u0442\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0438 \u0431\u044b\u043b\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438. \u0418\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u00abslug rejectors\u00bb \u2013 \u043e\u0442\u0441\u0435\u043a\u0430\u0442\u0435\u043b\u0438 \u0444\u0430\u043b\u044c\u0448\u0438\u0432\u043e\u043a. \u0420\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043e\u043d\u0438 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u00ab\u043f\u043e\u043b\u043e\u0441\u044b \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0439\u00bb, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u043c\u043e\u043d\u0435\u0442\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0440\u0438\u044e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<ol>\n<li>\n<p>\u0422\u0435\u0441\u0442 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u0432\u0435\u0441. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u043d\u0435\u0442\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0430 \u043d\u0430 \u00ab\u043a\u043e\u043b\u044b\u0431\u0435\u043b\u044c\u00bb (cradle) \u2013 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0440\u044b\u0447\u0430\u0433\u043e\u0432 \u0441 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0432\u0435\u0441\u043e\u043c. \u041e\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043b\u0435\u0433\u043a\u043e\u0439 \u043c\u043e\u043d\u0435\u0442\u044b \u0440\u044b\u0447\u0430\u0433 \u043d\u0435 \u043d\u0430\u043a\u043b\u043e\u043d\u044f\u043b\u0441\u044f, \u0438 \u043e\u043d\u0430 \u0443\u0445\u043e\u0434\u0438\u043b\u0430 \u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0442. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043c\u043e\u043d\u0435\u0442\u0430 \u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u043b\u0430 \u0432 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0438. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u043d\u0435\u0442\u0430 \u0441\u0432\u043e\u0438\u043c \u0432\u0435\u0441\u043e\u043c \u043e\u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u043b\u0430 \u0440\u044b\u0447\u0430\u0433 \u0438 \u043a\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u041d\u0430 \u043f\u0443\u0442\u0438 \u043c\u043e\u043d\u0435\u0442\u044b \u0441\u0442\u043e\u044f\u043b \u043c\u043e\u0449\u043d\u044b\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043c\u0430\u0433\u043d\u0438\u0442. \u0421\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0438 (\u0448\u0430\u0439\u0431\u044b) \u043f\u0440\u0438\u043b\u0438\u043f\u0430\u043b\u0438 \u043a \u043c\u0430\u0433\u043d\u0438\u0442\u0443. \u0418\u0445 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 \u0440\u044b\u0447\u0430\u0433 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u00ab\u043e\u0442\u0441\u043a\u0440\u0435\u0431\u0430\u0432\u0448\u0438\u043c\u00bb \u0444\u0430\u043b\u044c\u0448\u0438\u0432\u043a\u0443 \u043e\u0442 \u043c\u0430\u0433\u043d\u0438\u0442\u0430. \u041d\u0435\u043c\u0430\u0433\u043d\u0438\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u0430\u043b\u043b\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u043c\u0438\u043c\u043e, \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0444\u0438\u0437\u0438\u043a\u0430 \u2013 \u0432\u0438\u0445\u0440\u0435\u0432\u044b\u0435 \u0442\u043e\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0435\u0441\u0442 \u043d\u0430 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c. \u041c\u0430\u0433\u043d\u0438\u0442\u043d\u043e\u0435 \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u043c \u0442\u0435\u0441\u0442\u043e\u043c \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041a\u043e\u0433\u0434\u0430 \u043c\u043e\u043d\u0435\u0442\u0430 \u043f\u0440\u043e\u043b\u0435\u0442\u0430\u0435\u0442 \u043c\u0438\u043c\u043e \u043c\u0430\u0433\u043d\u0438\u0442\u0430, \u0432 \u043d\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u0442\u043e\u043a\u0438. \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u043c\u043e\u043d\u0435\u0442\u0430 \u0441\u043b\u0435\u0433\u043a\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u043b\u0430\u0441\u044c \u0438 \u043f\u0430\u0434\u0430\u043b\u0430 \u043f\u043e \u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u0423 \u043c\u0435\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u0441\u0432\u0438\u043d\u0446\u043e\u0432\u043e\u0439 \u0444\u0430\u043b\u044c\u0448\u0438\u0432\u043a\u0438 \u0431\u044b\u043b\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c. \u041e\u043d\u0430 \u043f\u0440\u043e\u043b\u0435\u0442\u0430\u043b\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0438 \u043f\u0440\u043e\u043c\u0430\u0445\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u043c\u0438\u043c\u043e \u043f\u0440\u0438\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0435\u043b\u043e\u0431\u0430, \u043f\u0430\u0434\u0430\u044f \u0432 \u043e\u0442\u0441\u0435\u043a \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u044f. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0448\u0430\u0439\u0431\u044b. \u0427\u0442\u043e\u0431\u044b \u0438\u0445 \u043e\u0442\u0441\u0435\u0447\u044c, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u0445 \u0441\u0442\u043e\u044f\u043b \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u044b\u0439 \u0449\u0443\u043f-\u0440\u044b\u0447\u0430\u0433. \u0415\u0441\u043b\u0438 \u043e\u043d \u043f\u043e\u043f\u0430\u0434\u0430\u043b \u0432 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435 \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u043c\u0438\u043d\u0430\u043b\u0430. \u0412 \u043c\u043d\u043e\u0433\u043e\u043c\u043e\u043d\u0435\u0442\u043d\u044b\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0430\u0445 \u0431\u044b\u043b\u0438 \u043d\u0430\u043a\u043b\u043e\u043d\u043d\u044b\u0435 \u0434\u043e\u0440\u043e\u0436\u043a\u0438 \u0441 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u044f\u043c\u0438 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0448\u043b\u0430 \u0441\u0430\u043c\u0430\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043f\u0440\u043e\u0440\u0435\u0437\u044c (\u0434\u043b\u044f 10 \u0446\u0435\u043d\u0442\u043e\u0432). \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435 (\u0434\u043b\u044f 5 \u0446\u0435\u043d\u0442\u043e\u0432). \u0418 \u0441\u0430\u043c\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 (\u0434\u043b\u044f 25 \u0446\u0435\u043d\u0442\u043e\u0432). \u041c\u043e\u043d\u0435\u0442\u0430 \u043a\u0430\u0442\u0438\u043b\u0430\u0441\u044c, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0430 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438 \u043d\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c. \u0423 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u043d\u0435\u0442\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u0432 \u0442\u0435 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u044b\u0447\u0430\u0433\u043e\u0432 \u0438 \u043c\u0430\u0433\u043d\u0438\u0442\u043e\u0432 \u0442\u0430\u043c \u0441\u0442\u043e\u044f\u0442 \u043b\u0430\u0437\u0435\u0440\u043d\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u0438 \u043a\u0430\u0442\u0443\u0448\u043a\u0438 \u0438\u043d\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u0420\u0410\u0417\u0414\u0415\u041b: \u0413\u0420\u0410\u041c\u041c\u0410\u0422\u0418\u041a\u0410 \u0418 VM BRAINFUCK<\/strong><\/p>\n<p>\u042d\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0451\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043a\u0443\u0440\u0441\u0430. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c.<br \/> \u0412 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Brainfuck [26] \u043d\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u044b \u043b\u0438\u0431\u043e \u0441\u043c\u044b\u0441\u043b\u0430. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0434\u0435\u0439 \u043f\u0440\u0438 \u043a\u043e\u0434\u0438\u043d\u0433\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432.<\/p>\n<p><strong>1. \u0418\u0421\u0422\u041e\u0420\u0418\u0427\u0415\u0421\u041a\u0410\u042f \u0421\u041f\u0420\u0410\u0412\u041a\u0410<\/strong><\/p>\n<p>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2584\u2584\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2588\u2588\u2588\u2584\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2584\u2584\u2584\u2584\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2584\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591<br \/> \u2584\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591<br \/> \u2591\u2580\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2580\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2580\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2580\u2580\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2588\u2580\u2580\u2588\u2588\u2580\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591<br \/> \u2591\u2591\u2591\u2584\u2584\u2584\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584\u2584\u2584\u2584\u2591\u2591<\/p>\n<p>\u041f\u043e\u0434 \u00ab\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c\u00bb \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0434\u0435\u043b\u0438\u043c\u044b\u0445 \u0434\u0430\u043b\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 (\u0438\u043b\u0438 \u00ab\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439\u00bb) \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f. \u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (\u0438\u043b\u0438 \u00ab\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f\u00bb) \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0441\u0442\u0430\u0432\u044f\u0442 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0433\u0440\u0430\u0444. \u00ab\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u00bb \u2013 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435.<br \/> \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Brainfuck \u0441\u043e\u0437\u0434\u0430\u043d \u0432 1993 \u0433. \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u043c \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u043c-\u0444\u0438\u0437\u0438\u043a\u043e\u043c \u0423\u0440\u0431\u0430\u043d\u043e\u043c \u041c\u044e\u043b\u043b\u0435\u0440\u043e\u043c. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043d\u0451\u043c \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u043b\u0435\u043d\u0442\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430, \u0430 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b P\u2032\u2032 \u0411\u0451\u043c\u0430.<br \/> \u0412 1964 \u0433\u043e\u0434\u0443 \u0411\u0451\u043c \u0434\u043e\u043a\u0430\u0437\u0430\u043b \u0442\u0435\u043e\u0440\u0435\u043c\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u044e\u0431\u043e\u0439 \u00ab\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043c\u043e\u0439\u00bb (\u0442\u043e \u0435\u0441\u0442\u044c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0435\u0439 \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0437\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435) \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0451\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440: \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (sequence), \u0432\u044b\u0431\u043e\u0440\u0430 (if) \u0438 \u0446\u0438\u043a\u043b\u0430 (while).<br \/> \u0418\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 if \u0438 goto, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u041c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430.<br \/> \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Brainfuck \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 FSM: \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u041c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430 (\u0423\u041c\u0422) \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u2013 BF Machine.<br \/> \u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0423\u041c\u0422 (\u0438\u043b\u0438 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0430-\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430) \u2013 \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043b\u0438\u0431\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0435\u0441\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 <code>REG_IN<\/code>, \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 <code>REG_S<\/code> \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432. \u0423\u041c\u0422 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e, \u0432\u044b\u0434\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0447\u0438\u0441\u043b\u043e. \u042d\u0442\u0430 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 BF Machine.<br \/> BF Machine (\u0438\u043b\u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0439 \u0410\u0432\u0442\u043e\u043c\u0430\u0442-\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c) \u2013 \u044d\u0442\u043e \u00ab\u0436\u0435\u043b\u0435\u0437\u043d\u043e\u0435 \u0442\u0435\u043b\u043e\u00bb. \u0415\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u00ab\u0433\u043e\u043b\u043e\u0432\u043a\u0438\u00bb \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0438\u043b\u0438 \u00ab\u043b\u0435\u043d\u0442\u044b\u00bb). \u041e\u043d \u043b\u0438\u0448\u0451\u043d \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<p><strong>2. \u0410\u041b\u0424\u0410\u0412\u0418\u0422\u042b \u0423\u041c\u0422<\/strong><\/p>\n<p>\u00ab\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u044b\u00bb \u0432 FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u2013 \u044d\u0442\u043e \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430: \u0446\u0438\u0444\u0440\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0438 \u0443\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e.<br \/> \u041f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e, \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 BF Machine \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 \u043f\u043e\u0434 \u00ab\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0439\u00bb \u0441 \u043d\u0443\u043b\u0451\u043c, \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 <code>REG_IN<\/code> 0 \u0438\u043b\u0438 1 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<pre><code>1. \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442 \u0423\u041c\u0422 X (\u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043e\u0442 \u00ab\u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432\u00bb BF Machine):    +----------+-----------------------------------------------------+  | \u0412\u0445\u043e\u0434\u043d\u043e\u0439  | \u0424\u0438\u0437\u0438\u043a\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430                                    |  | \u0421\u0438\u043c\u0432\u043e\u043b   |                                                     |  +----------+-----------------------------------------------------+  | ZERO     | \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 \u043f\u043e\u0434 \u00ab\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0439\u00bb \u043d\u0443\u043b\u044c               |  | NZ       | \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 \u043f\u043e\u0434 \u00ab\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0439\u00bb \u043d\u0435 \u043d\u0443\u043b\u044c            |  +----------+-----------------------------------------------------+    2. \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442 \u0423\u041c\u0422 Y (\u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u0430\u0447\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434 BF Machine):    +----------+-----------------------------------------------------+  | \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 | \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430                       |  | \u0421\u0438\u043c\u0432\u043e\u043b   |                                                     |  +----------+-----------------------------------------------------+  | ACT_ADD  | \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0435                 |  | ACT_SUB  | \u0414\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0435                 |  | ACT_RIGHT| \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043d\u0430 \u043e\u0434\u043d\u0443 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432\u043f\u0440\u0430\u0432\u043e          |  | ACT_LEFT | \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043d\u0430 \u043e\u0434\u043d\u0443 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432\u043b\u0435\u0432\u043e           |  | ACT_OUT  | \u0412\u044b\u0432\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d              |  | ACT_IN   | \u0427\u0442\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0432 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443       |  | ACT_NOP  | No Operation. \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043d\u0435\u043f\u043e\u0434\u0432\u0438\u0436\u043d\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f    |  |          | \u043f\u0440\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0441\u043a\u043e\u0431\u043a\u0430\u0445).    |  +----------+-----------------------------------------------------+    3. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 BF \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430:    +--------+-----------+---------------------------------------+--------------+  | \u041a\u041e\u041c\u0410\u041d\u0414\u0410|\u0418\u0421\u0425.\u0421\u0418\u041c\u0412\u041e\u041b |            \u0424\u0418\u0417\u0418\u0427\u0415\u0421\u041a\u041e\u0415 \u0414\u0415\u0419\u0421\u0422\u0412\u0418\u0415        |  \u041e\u0411\u041e\u041b\u041e\u0427\u041a\u0410    |  |        |\u0423\u041c\u0422(Action)|          (\u0420\u0430\u0431\u043e\u0442\u0430 \u0443\u0437\u043b\u043e\u0432 BF \u043c\u0430\u0448\u0438\u043d\u044b)     |              |  +--------+-----------+---------------------------------------+--------------+  |   +    |  ACT_ADD  | \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 RAM       |  \u21161 (ALU)    |  |   -    |  ACT_SUB  | \u0414\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 RAM       |  \u21161 (ALU)    |  |   &gt;    | ACT_RIGHT | \u0421\u0434\u0432\u0438\u0433 \u0433\u043e\u043b\u043e\u0432\u043a\u0438 RAM \u0432\u043f\u0440\u0430\u0432\u043e              |  \u21164 (RAM)    |  |   &lt;    | ACT_LEFT  | \u0421\u0434\u0432\u0438\u0433 \u0433\u043e\u043b\u043e\u0432\u043a\u0438 RAM \u0432\u043b\u0435\u0432\u043e               |  \u21164 (RAM)    |  |   .    |  ACT_OUT  | \u0412\u044b\u0432\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d      |  \u21161 (I\/O)    |  |   ,    |  ACT_IN   | \u0412\u0432\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0432 \u043f\u0430\u043c\u044f\u0442\u044c    |  \u21161 (I\/O)    |  |   [    |  ACT_NOP  | \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Sn (JMP_IF_ZERO)  | \u21162,3(FSM\/PDA)|  |   ]    |  ACT_NOP  | \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Sn (JMP_IF_NZ)    | \u21162,3(FSM\/PDA)|  +--------+-----------+---------------------------------------+--------------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u043a\u043e\u0431\u043a\u0438 <code>[   ]<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c. \u041f\u0440\u044f\u043c\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 CPU: \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <code>JUMP_Z<\/code> \u0438 <code>JUMP_NZ<\/code> (\u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u043c\u0435\u0442\u043a\u0435 <code>LABEL<\/code> \u0435\u0441\u043b\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>REG_IN<\/code> \u043d\u0443\u043b\u044c \u043b\u0438\u0431\u043e \u043d\u0435 \u043d\u0443\u043b\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e):<\/p>\n<pre><code>\/\/ \u0426\u0418\u041a\u041b \u041d\u0410 \u042f\u0417\u042b\u041a\u0415 \u0421  while (REG_IN != 0)  {      ... \/\/ \u041a\u041e\u041c\u0410\u041d\u0414\u042b \u0426\u0418\u041a\u041b\u0410      ... \/\/ (\u0412\u042b\u041f\u041e\u041b\u041d\u042f\u042e\u0422 \u0414\u0415\u0419\u0421\u0422\u0412\u0418\u042f, \u041c\u0415\u041d\u042f\u042e\u0422 \u041f\u0415\u0420\u0415\u041c\u0415\u041d\u041d\u0423\u042e REG_IN \u0427\u0422\u041e\u0411\u042b \u0412\u042b\u0419\u0422\u0418 \u0418\u0417 \u0426\u0418\u041a\u041b\u0410)  }    \/\/ \u0426\u0418\u041a\u041b \u041d\u0410 \u0410\u0421\u0421\u0415\u041c\u0411\u041b\u0415\u0420\u0415, \u0414\u0410\u041d\u041d\u042b\u0419 \u041a\u041e\u041c\u0410\u041d\u0414\u0410\u041c\u0418 JUMP_Z, JUMP_NZ \u0418 \u041c\u0415\u0422\u041a\u0410\u041c\u0418    JUMP_Z REG_IN, SKIP_LOOP  LABEL LOOP      ... \/\/ \u041a\u041e\u041c\u0410\u041d\u0414\u042b \u0426\u0418\u041a\u041b\u0410      ... \/\/ (\u0412\u042b\u041f\u041e\u041b\u041d\u042f\u042e\u0422 \u0414\u0415\u0419\u0421\u0422\u0412\u0418\u042f, \u041c\u0415\u041d\u042f\u042e\u0422 \u0420\u0415\u0413\u0418\u0421\u0422\u0420 REG_IN \u0427\u0422\u041e\u0411\u042b \u0412\u042b\u0419\u0422\u0418 \u0418\u0417 \u0426\u0418\u041a\u041b\u0410)  JUMP_NZ REG_IN, LOOP  LABEL SKIP_LOOP  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>JUMP<\/code> (\u043f\u0435\u0440\u0435\u0445\u043e\u0434) \u0434\u043b\u044f \u0423\u041c\u0422 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u043c\u0435\u043d\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430 \u0447\u0438\u0441\u043b\u043e \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 <code>REG_S = \u0427\u0418\u0421\u041b\u041e<\/code>.<\/p>\n<p><strong>3. \u0421\u041e\u041e\u0422\u0412\u0415\u0422\u0421\u0422\u0412\u0418\u0415: \u041a\u041e\u0414 BF -&gt; \u0422\u0410\u0411\u041b\u0418\u0426\u0410 FSM (\u0410\u041d\u0410\u041b\u0418\u0417)<\/strong><\/p>\n<p>\u0420\u0430\u043d\u0435\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b\u0438 FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0434\u043b\u044f VM. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0432 FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0443.<br \/> \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c (\u0438\u043b\u0438 \u00abcomputer\u00bb) \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d \u043e\u0434\u043d\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443, \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d\u043d\u043e\u043c\u0443 \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 RAM \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 CPU. \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 BF \u2013 \u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u0447\u0430\u0432 \u0441 \u043d\u0443\u043b\u044f.<br \/> \u0418\u0437-\u0437\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 BF \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0440\u0430\u0432\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0430 BF.<br \/> \u0412 \u0442\u0435\u043e\u0440\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u0430 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 F. \u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0432\u0432\u0435\u0434\u0451\u043c \u00ab\u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u00bb \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0432\u043d\u044b\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 BF.<\/p>\n<p><strong>4. \u0421\u041e\u041e\u0422\u0412\u0415\u0422\u0421\u0422\u0412\u0418\u0415: \u041a\u041e\u0414 BF -&gt; \u0422\u0410\u0411\u041b\u0418\u0426\u0410 FSM (\u041f\u0420\u0410\u0412\u0418\u041b\u0410)<\/strong><\/p>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u043b\u043e\u0432 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438 BF \u0432 FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0443:<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>+---------+-----------+-----------+-------------+------------+  | \u041a\u041e\u041c\u0410\u041d\u0414\u0410 | \u0422\u0415\u041a\u0423\u0429\u0415\u0415   | \u0412\u0425\u041e\u0414 (X)  | \u0421\u041b\u0415\u0414\u0423\u042e\u0429\u0415\u0415   | \u0412\u042b\u0425\u041e\u0414 (A)  |  |   BF    | \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0415 | (\u0414\u0430\u0442\u0447\u0438\u043a)  | \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0415   | (\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435) |  +---------+-----------+-----------+-------------+------------+  |    +    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_ADD   |  |    +    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_ADD   |  +---------+-----------+-----------+-------------+------------+  |    -    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_SUB   |  |    -    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_SUB   |  +---------+-----------+-----------+-------------+------------+  |    &gt;    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_RIGHT |  |    &gt;    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_RIGHT |  +---------+-----------+-----------+-------------+------------+  |    &lt;    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_LEFT  |  |    &lt;    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_LEFT  |  +---------+-----------+-----------+-------------+------------+  |    .    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_OUT   |  |    .    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_OUT   |  +---------+-----------+-----------+-------------+------------+  |    ,    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_IN    |  |    ,    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_IN    |  +---------+-----------+-----------+-------------+------------+  |    [    |   S_open  |  0 (ZERO) |  S_close + 1|  ACT_NOP   |  |    [    |   S_open  |  1 (NZ)   |  S_open + 1 |  ACT_NOP   |  +---------+-----------+-----------+-------------+------------+  |    ]    |   S_close |  0 (ZERO) |  S_close + 1|  ACT_NOP   |  |    ]    |   S_close |  1 (NZ)   |  S_open + 1 |  ACT_NOP   |  +---------+-----------+-----------+-------------+------------+  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<ol>\n<li>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 BF \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0447\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442 <code>X = {0, 1}<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b\u0443 <code>ACT_NOP<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0432\u0438\u044f. \u041c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u043c\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0423\u041c\u0422.<\/p>\n<\/li>\n<li>\n<p>\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <code>S_halt<\/code> (\u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435). \u0427\u0438\u0441\u043b\u0435\u043d\u043e \u0440\u0430\u0432\u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p><code>S_open \/ S_close<\/code>: \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u043a\u043e\u0431\u043a\u0430\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u0420\u0430\u0432\u043d\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u043a\u043e\u0431\u043e\u043a <code>[<\/code> `] \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<\/li>\n<\/ol>\n<p><strong>5. \u0418\u041d\u0422\u0415\u0420\u041f\u0420\u0415\u0422\u0410\u0422\u041e\u0420 BF \u041d\u0410 \u0421<\/strong><\/p>\n<p>\u00ab\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u00bb \u2013 \u044d\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443. \u0425\u043e\u0440\u043e\u0448\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u0438\u0448\u0443\u0442 \u0438 \u0447\u0438\u0442\u0430\u044e\u0442 \u043a\u0430\u043a \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u043a\u0441\u0442, \u0433\u0434\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u043a\u043e\u0434 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u0430\u0432\u043d\u044b.<br \/> \u041d\u0438\u0436\u0435 \u2013 \u0442\u0435\u043a\u0441\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 BF \u0432 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 \u0421. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438: \u0423\u041c\u0422, \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 BF, \u0442\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u044f\u0442\u043e\u0440 <code>bf_to_matrix()<\/code> (\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 BF-\u043a\u043e\u0434 \u0432 FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0443).<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/\/ bf.cpp#include &lt;stdlib.h&gt;#include &lt;conio.h&gt;#include &lt;string.h&gt;#include &lt;locale.h&gt;#define LOG printf\/\/------------------------------------------\/\/ \u0423\u041d\u0418\u0412\u0415\u0420\u0421\u0410\u041b\u042c\u041d\u0410\u042f \u041c\u0410\u0428\u0418\u041d\u0410 \u0422\u042c\u042e\u0420\u0418\u041d\u0413\u0410 \u0418 \u0418\u0421\u041f\u041e\u041b\u041d\u0418\u0422\u0415\u041b\u042c BRAINFUCK\/\/------------------------------------------\/\/------------------------------------------\/\/ \u041e\u0411\u041e\u041b\u041e\u0427\u041a\u0410: \u0423\u041c\u0422\/\/------------------------------------------typedef struct { int state, action; } Step;struct UTM{    int REG_S;   \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (Phase)    int REG_IN;  \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (Input Symbol)    int REG_OUT; \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (Action Symbol)    Step** ROM;  \/\/ \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 (\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0433\u0440\u0430\u0444)};\/\/ \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043a\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (\u0427\u0438\u0441\u0442\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u03b4)void UTM_Cycle(struct UTM* machine){    \/\/ \u0412\u044b\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0438 \u0432\u0445\u043e\u0434\u0443    Step transition = machine-&gt;ROM[machine-&gt;REG_S][machine-&gt;REG_IN];    \/\/ \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432    machine-&gt;REG_S   = transition.state;  \/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043d\u043e\u0432\u0443\u044e \u0444\u0430\u0437\u0443    machine-&gt;REG_OUT = transition.action; \/\/ \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f}\/\/------------------------------------------\/\/------------------------------------------\/\/ \u0414\u041e\u041c\u0415\u041d\u041d\u0410\u042f \u041e\u0411\u041e\u041b\u041e\u0427\u041a\u0410: \u041c\u0410\u0428\u0418\u041d\u0410 BRAINFUCK\/\/------------------------------------------\/\/ \u041e\u041f\u0420\u0415\u0414\u0415\u041b\u0415\u041d\u0418\u0415 \u0410\u041b\u0424\u0410\u0412\u0418\u0422\u041e\u0412 (X \u0438 A)\/\/ \u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442 X (\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043b\u0435\u043d\u0442\u044b)enum BF_IN { IN_ZERO, IN_NZ };const char* IN_NAMES[] = { \"ZERO\", \"NZ\" };\/\/ \u0418\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442 A (\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f)enum BF_ACTIONS { ACT_ADD, ACT_SUB, ACT_RIGHT, ACT_LEFT, ACT_OUT, ACT_IN, ACT_NOP };const char* ACT_NAMES[] = { \"ADD\", \"SUB\", \"RIGHT\", \"LEFT\", \"OUT\", \"IN\", \"NOP\" };\/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435.\/\/ \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0411\u0438\u0435\u043a\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0444\u0438\u0437\u0438\u043a\u043e\u0439 (\u043b\u0435\u043d\u0442\u043e\u0439) \u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u043e\u0439 (\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u0423\u041c\u0422)struct BF_DSM \/\/ DSM - Domain-Specific Machine{    unsigned char* RAM;    int head;     \/\/ \u0418\u043d\u0434\u0435\u043a\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043f\u0430\u043c\u044f\u0442\u0438    int n_states; \/\/ \u041d\u043e\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (\u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b)};void BF_Physical_Interface(struct UTM* utm, BF_DSM* bfm){    while(utm-&gt;REG_S &lt; bfm-&gt;n_states - 1)    {        \/\/ 1. \u0424\u0438\u0437\u0438\u043a\u0430 -&gt; \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430        \/\/ \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430 \u03a3 {0, 1}        utm-&gt;REG_IN = (bfm-&gt;RAM[bfm-&gt;head] == 0) ? 0 : 1;        \/\/ 2. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435 FSM        UTM_Cycle(utm);        \/\/ 3. \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 -&gt; \u0424\u0438\u0437\u0438\u043a\u0430        \/\/ \u0414\u0435\u0448\u0438\u0444\u0440\u0443\u0435\u043c REG_OUT \u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u0430\u043c\u0438        switch (utm-&gt;REG_OUT)        {            \/\/------------------------------------------            \/\/ \u0411\u041b\u041e\u041a \u041e\u041f\u0415\u0420\u0410\u0426\u0418\u0419 ALU            \/\/------------------------------------------            case ACT_ADD:   bfm-&gt;RAM[bfm-&gt;head]++; break;            case ACT_SUB:   bfm-&gt;RAM[bfm-&gt;head]--; break;            \/\/------------------------------------------            \/\/ \u0411\u041b\u041e\u041a \u041e\u041f\u0415\u0420\u0410\u0426\u0418\u0419 \u0423\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f RAM (\u0412\u042b\u0411\u041e\u0420 \u0410\u041a\u0422\u0418\u0412\u041d\u041e\u0419 \u042f\u0427\u0415\u0419\u041a\u0418)            \/\/------------------------------------------            case ACT_RIGHT: bfm-&gt;head++; break;            case ACT_LEFT:  bfm-&gt;head--; break;            \/\/------------------------------------------            \/\/ \u0411\u041b\u041e\u041a \u0414\u041b\u042f \u041f\u0420\u0418\u0401\u041c\u0410\/\u041e\u0422\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f \u0421\u0418\u0413\u041d\u0410\u041b\u041e\u0412 \u0418\u0417\/\u0412 \u0410\u041f\u041f\u0410\u0420\u0410\u0422\u0423\u0420\u0423            \/\/------------------------------------------            case ACT_OUT:   putchar(bfm-&gt;RAM[bfm-&gt;head]); break;            case ACT_IN:    bfm-&gt;RAM[bfm-&gt;head] = (unsigned char)getchar(); break;            case ACT_NOP:   break; \/\/ \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043a\u043e\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f        }    }}\/\/------------------------------------------\/\/------------------------------------------\/\/ \u0422\u0420\u0410\u041d\u0421\u041f\u0418\u041b\u042f\u0422\u041e\u0420\/\/------------------------------------------\/\/ \u0422\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u044f\u0442\u043e\u0440  BF-\u043a\u043e\u0434 -&gt; FSM \u043c\u0430\u0442\u0440\u0438\u0446\u0430\/*\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u03b4:S\u00d7X\u2192S\u00d7A+---------+-----------+-----------+-------------+------------+| \u041a\u041e\u041c\u0410\u041d\u0414\u0410 | \u0422\u0415\u041a\u0423\u0429\u0415\u0415   | \u0412\u0425\u041e\u0414 (X)  | \u0421\u041b\u0415\u0414\u0423\u042e\u0429\u0415\u0415   | \u0412\u042b\u0425\u041e\u0414 (A)  ||   BF    | \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0415 | (\u0414\u0430\u0442\u0447\u0438\u043a)  | \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0415   | (\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435) |+---------+-----------+-----------+-------------+------------+|    +    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_ADD   ||    +    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_ADD   |+---------+-----------+-----------+-------------+------------+|    -    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_SUB   ||    -    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_SUB   |+---------+-----------+-----------+-------------+------------+|    &gt;    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_RIGHT ||    &gt;    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_RIGHT |+---------+-----------+-----------+-------------+------------+|    &lt;    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_LEFT  ||    &lt;    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_LEFT  |+---------+-----------+-----------+-------------+------------+|    .    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_OUT   ||    .    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_OUT   |+---------+-----------+-----------+-------------+------------+|    ,    |    Sn     |  0 (ZERO) |    Sn + 1   |  ACT_IN    ||    ,    |    Sn     |  1 (NZ)   |    Sn + 1   |  ACT_IN    |+---------+-----------+-----------+-------------+------------+|    [    |   S_open  |  0 (ZERO) |  S_close + 1|  ACT_NOP   ||    [    |   S_open  |  1 (NZ)   |  S_open + 1 |  ACT_NOP   |+---------+-----------+-----------+-------------+------------+|    ]    |   S_close |  0 (ZERO) |  S_close + 1|  ACT_NOP   ||    ]    |   S_close |  1 (NZ)   |  S_open + 1 |  ACT_NOP   |+---------+-----------+-----------+-------------+------------+*\/Step** bf_to_matrix(const char* code, int* n_states_){    int n = (int)strlen(code), sp = -1;    int* stack = (int*)malloc(n * sizeof(int));    *n_states_ = n + 1;    Step** matrix = (Step**)malloc((*n_states_) * sizeof(Step*));    for (int i = 0; i &lt; *n_states_; i++) matrix[i] = (Step*)malloc(2 * sizeof(Step));    for (int i = 0; i &lt; n; i++)    {        int next = i + 1;        switch (code[i])        {            \/* \u041a\u043e\u043c\u0430\u043d\u0434\u0430 | \u0422\u0435\u043a\u0443\u0449\u0435\u0435 S | \u0412\u0445\u043e\u0434 (\u03a3) | \u0421\u043b\u0435\u0434. S | \u0412\u044b\u0445\u043e\u0434 (A) *\/            case '+':                matrix[i][IN_ZERO] = (Step){next, ACT_ADD};                matrix[i][IN_NZ]   = (Step){next, ACT_ADD};                break;            case '-':                matrix[i][IN_ZERO] = (Step){next, ACT_SUB};                matrix[i][IN_NZ]   = (Step){next, ACT_SUB};                break;            case '&gt;':                matrix[i][IN_ZERO] = (Step){next, ACT_RIGHT};                matrix[i][IN_NZ]   = (Step){next, ACT_RIGHT};                break;            case '&lt;':                matrix[i][IN_ZERO] = (Step){next, ACT_LEFT};                matrix[i][IN_NZ]   = (Step){next, ACT_LEFT};                break;            case '.':                matrix[i][IN_ZERO] = (Step){next, ACT_OUT};                matrix[i][IN_NZ]   = (Step){next, ACT_OUT};                break;            case ',':                matrix[i][IN_ZERO] = (Step){next, ACT_IN};                matrix[i][IN_NZ]   = (Step){next, ACT_IN};                break;            case '[':                stack[++sp] = i; \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0432 PDA (\u0441\u0442\u0435\u043a)                matrix[i][IN_NZ]   = (Step){next, ACT_NOP};                \/* matrix[i][IN_ZERO] \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0448\u0438\u0442 \u043f\u0440\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0435 ']' *\/                break;            case ']':            {                int open = stack[sp--]; \/\/ \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 PDA                matrix[i][IN_ZERO] = (Step){next, ACT_NOP};                matrix[i][IN_NZ]   = (Step){open + 1, ACT_NOP};                \/* Back-patching: \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0432\u044b\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 '[' *\/                matrix[open][IN_ZERO] = (Step){next, ACT_NOP};                break;            }        }    }    \/* \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (HALT) \u2014 \u043f\u0435\u0442\u043b\u044f \u043d\u0430 \u0433\u0440\u0430\u0444\u0435 \u0432 \u0441\u0435\u0431\u044f \u0431\u0435\u0437 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f *\/    matrix[n][IN_ZERO] = matrix[n][IN_NZ] = (Step){n, ACT_NOP};    free(stack);    return matrix;}\/\/  \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 FSM \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443void matrix_to_string(Step** matrix, int n_states, char** num_table, char** mnem_table){    char *p_n = *num_table = (char*)malloc(n_states * 64), *p_m = *mnem_table = (char*)malloc(n_states * 128);    for (int i = 0; i &lt; n_states; i++)    {        \/\/ \u0427\u0438\u0441\u043b\u043e\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430: [S_next_0 Act_0] [S_next_1 Act_1]        p_n += sprintf(p_n, \"%3d: [%3d %2d] [%3d %2d]\\n\", i,            matrix[i][0].state, matrix[i][0].action, matrix[i][1].state, matrix[i][1].action);        \/\/ \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a: [IF IN -&gt; NEXT_S, ACTION]        p_m += sprintf(p_m, \"S%03d: [%-4s -&gt; S%03d, %-5s] [%-4s -&gt; S%03d, %-5s]\\n\", i,            IN_NAMES[0], matrix[i][0].state, ACT_NAMES[matrix[i][0].action],            IN_NAMES[1], matrix[i][1].state, ACT_NAMES[matrix[i][1].action]);    }}\/\/------------------------------------------\/\/------------------------------------------\/\/ \u0417\u0410\u0413\u0420\u0423\u0417\u041a\u0410 \u0418 \u0417\u0410\u041f\u0423\u0421\u041a \u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c \u0418\u041d\u0422\u0415\u0420\u041f\u0420\u0415\u0422\u0410\u0422\u041e\u0420\u0410 \u042f\u0417\u042b\u041a\u0410 BRAINFUCK\/\/------------------------------------------unsigned char tape[30000]; \/\/ \u041f\u0410\u041c\u042f\u0422\u042c RAMint main(int argc, char *argv[]){    setlocale(LC_ALL, \"en_US.UTF-8\");    LOG(\"\u0418\u041d\u0422\u0415\u0420\u041f\u0420\u0415\u0422\u0410\u0422\u041e\u0420 \u042f\u0417\u042b\u041a\u0410 BRAINFUCK. \u041a\u041e\u0414 \u041f\u041e\u041c\u0415\u0421\u0422\u0418\u0422\u042c \u0412 \u041a\u0410\u0412\u042b\u0427\u041a\u0418, \u041f\u0415\u0420\u0412\u042b\u041c \u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420\u041e\u041c \u041f\u0420\u0418 \u0417\u0410\u041f\u0423\u0421\u041a\u0415 \u041f\u0420\u0418\u0413\u0420\u0410\u041c\u041c\u042b. \u041f\u0420\u0418\u041c\u0415\u0420: brainfuck.exe \\\"++.\\\"\");    char* code = \"++++++++[&gt;++++[&gt;++&gt;+++&gt;+++&gt;+&lt;&lt;&lt;&lt;-]&gt;+&gt;+&gt;-&gt;&gt;+[&lt;]&lt;-]&gt;&gt;.&gt;---.+++++++..+++.&gt;&gt;.&lt;-.&lt;.+++.------.--------.&gt;&gt;+.&gt;++.\";    if (argc &gt; 1) code = argv[1];    \/\/------------------------------------------    \/\/ 1. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441 \u0423\u041c\u0422    \/\/------------------------------------------    memset(tape, 0, sizeof(tape));    int n_states;    Step** FSM = bf_to_matrix(code, &amp;n_states); \/\/ BF code -&gt; FSM table    \/\/ \u0412\u044b\u0432\u043e\u0434 \u0442\u0430\u0431\u043b\u0438\u0446\u044b FSM \u043d\u0430 \u044d\u043a\u0440\u0430\u043d    char *num_table, *mnem_table;    matrix_to_string(FSM, n_states, &amp;num_table, &amp;mnem_table);    LOG(\"\\n\u0422\u0410\u0411\u041b\u0418\u0426\u0410 \u041f\u0415\u0420\u0415\u0425\u041e\u0414\u041e\u0412 \u0423\u041c\u0422:\\n%s\\n\\nFSM:\\n%s\\n\\nFSM \u041c\u041d\u0415\u041c\u041e-\u041a\u041e\u0414:\\n%s\", code, num_table, mnem_table);    free(num_table); free(mnem_table);    LOG(\"\\n\u0417\u0410\u0413\u0420\u0423\u0416\u0410\u042e \u0422\u0410\u0411\u041b\u0418\u0426\u0423 BF FSM \u0412 \u0423\u041c\u0422\");    UTM utm;    utm.ROM = FSM;    utm.REG_S = 0;    LOG(\"\\n\u0417\u0410\u041f\u0423\u0421\u041a\u0410\u042e \u0414\u041e\u041c\u0415\u041d\u041d\u0423\u042e \u041c\u0410\u0428\u0418\u041d\u0423\\n\");    BF_DSM bfm;    bfm.RAM = tape;    bfm.head = 0;    bfm.n_states = n_states;    BF_Physical_Interface(&amp;utm, &amp;bfm);    \/\/------------------------------------------    getch();    return 0;}\/\/------------------------------------------<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>6. \u0421\u0412\u042f\u0417\u042c: CPU, \u0421\u0422\u0415\u041a\u0418, \u042f\u0417\u042b\u041a\u0418<\/strong><\/p>\n<p>\u2584\u2500\u2500\u2500\u2584<br \/> \u2588\u2580\u2588\u2580\u2588<br \/> \u2588\u2584\u2588\u2584\u2588<br \/> \u2500\u2588\u2588\u2588\u2500\u2500\u2584\u2584<br \/> \u2500\u2588\u2588\u2588\u2588\u2590\u2588\u2500\u2588<br \/> \u2500\u2588\u2588\u2588\u2588\u2500\u2500\u2500\u2588<br \/> \u2500\u2580\u2580\u2580\u2580\u2580\u2580\u2580<\/p>\n<p>CPU, \u0441\u0442\u0435\u043a\u0438, \u044f\u0437\u044b\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u043d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u043a\u0443, \u0438 \u043c\u044b \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u0435\u0451, \u0434\u0430\u0436\u0435 \u043d\u0435 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044f \u043e\u0431 \u044d\u0442\u043e\u043c.<br \/> \u0422\u0430\u043a, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LIFO-\u0441\u0442\u0435\u043a CPU. \u0415\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0446\u0438\u043a\u043b\u043e\u043c \u0438 \u0441\u0442\u0435\u043a\u043e\u043c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<br \/> \u0421\u0442\u0435\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438 \u043f\u0440\u0438 \u043e\u0431\u0445\u043e\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u043b\u0438\u0431\u043e \u043f\u0440\u0438 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u044f\u0437\u044b\u043a\u0435 \u0431\u0435\u0437 \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a, \u0432 Basic ZX Spectrum \u043d\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u0432 \u0421. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430 \u043d\u0451\u043c \u0441\u0442\u0435\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0427\u0442\u043e \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u00ab\u0441\u0442\u0435\u043a\u00bb \u2013 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u044d\u0442\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>0 REM \u041f\u0420\u0418\u041c\u0415\u0420 \u0421\u041e\u0417\u0414\u0410\u041d\u0418\u042f\u0415 \u0421-\u041f\u041e\u0414\u041e\u0411\u041d\u041e\u0413\u041e \u041c\u0415\u0425\u0410\u041d\u0418\u0417\u041c\u0410 \u041f\u0415\u0420\u0414\u0410\u0427\u0418 \u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420\u041e\u0412 \u0412 BASIC  1 REM \u0424\u0423\u041d\u041a\u0426\u0418\u042f ADD() \u041f\u041e\u041b\u0423\u0427\u0410\u0415\u0422 2 \u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420\u0410, \u0421\u041a\u041b\u0410\u0414\u042b\u0412\u0410\u0415\u0422 \u0418\u0425 \u0418 \u0412\u041e\u0417\u0412\u0420\u0410\u0429\u0410\u0415\u0422 \u0420\u0415\u0417\u0423\u041b\u042c\u0422\u0410\u0422    10 DIM s(16): LET  sp = 0: REM \u0421\u0442\u0435\u043a \u043d\u0430 16 \u0447\u0438\u0441\u0435\u043b \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c  20 LET v = 5: GOSUB 500: REM \u041a\u043b\u0430\u0434\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e  30 LET v = 10: GOSUB 500: REM \u041a\u043b\u0430\u0434\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0435 \u0447\u0438\u0441\u043b\u043e  40 GOSUB 1000: REM \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f  50 GOSUB 600: REM \u0417\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043e \u0441\u0442\u0435\u043a\u0430  60 PRINT \"Result: \"; v  70 STOP     500 REM --- PUSH (\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c v \u043d\u0430 \u0441\u0442\u0435\u043a) ---  510 LET  sp =  sp + 1: LET s( sp) = v: RETURN     600 REM --- POP (\u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0435\u043a\u0430 \u0432 v) ---  610 LET v = s( sp): LET  sp =  sp - 1: RETURN     1000 REM --- FUNCTION: ADD ---  1010 GOSUB 600: LET a = v: REM \u0412\u0437\u044f\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0435  1020 GOSUB 600: LET b = v: REM \u0412\u0437\u044f\u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u0435  1030 LET v = a + b: GOSUB 500: REM \u041f\u043e\u043b\u043e\u0436\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442  1040 RETURN  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>7. \u041f\u0420\u0410\u041a\u0422\u0418\u041a\u0410: \u0417\u0410\u041c\u0415\u041d\u0410 \u0420\u0415\u041a\u0423\u0420\u0421\u0418\u0418 \u0426\u0418\u041a\u041b\u041e\u041c<\/strong><\/p>\n<p>\u042f\u0437\u044b\u043a\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. BF \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u0441 \u043a \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043b\u0435\u043d\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430.<br \/> \u041d\u0438\u0436\u0435 \u0434\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 BF. \u0418\u0445 \u043a\u043e\u0434 \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 (\u043e\u043d\u043e \u0434\u0430\u043d\u043e \u0432\u044b\u0448\u0435). \u041f\u0435\u0440\u0432\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430 CPU, \u0432\u0442\u043e\u0440\u0430\u044f \u2013 \u0441\u0442\u0435\u043a\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<br \/> \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u044e \u0438\u043b\u0438 \u0441\u0442\u0435\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435 BF \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0431\u043e\u043a <code>[ [   ] ]<\/code>.<\/p>\n<p><strong>8. \u0420\u0415\u041a\u0423\u0420\u0421\u0418\u0412\u041d\u042b\u0419 \u0421\u041f\u0423\u0421\u041a (RECURSIVE DESCENT)<\/strong><\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u0438\u043c\u0435\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0441 \u0434\u0432\u0443\u043c\u044f \u0432\u0435\u0442\u043a\u0430\u043c\u0438: \u0432 \u043e\u0434\u043d\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u0435\u0431\u044f, \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u2013 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0438\u0437 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438.<\/p>\n<pre><code>\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0435\u0439  int factorial(int n) \/\/ &lt;- \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u044f\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0441\u0442\u0435\u043a CPU   {      if(n &gt; 1) return n * factorial(n - 1); \/\/ &lt;- \u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0441\u0442\u0435\u043a CPU       else return 1; \/\/ \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 n \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e 1 \u0438\u043b\u0438 0,                     \/\/ \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b.  }  <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 <code>interpret_bf_recursive()<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0434\u0435\u0440\u0435\u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0430\u0440\u0430 \u0441\u043a\u043e\u0431\u043e\u043a \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442.<br \/> \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e: \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0430\u0440\u0430 <code>[   ]<\/code> \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0444\u0440\u0435\u0439\u043c \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 C \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u0432\u044b\u0437\u043e\u0432\u043e\u0432.<br \/> \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c: \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a \u043f\u043e \u0434\u0435\u0440\u0435\u0432\u0443 (AST). \u041a\u0430\u0436\u0434\u043e\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u2013 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0438\u0436\u0435 \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u043e\u0440\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p><strong>9. \u0418\u0422\u0415\u0420\u0410\u0426\u0418\u042f \u0421 \u042f\u0412\u041d\u042b\u041c \u0421\u0422\u0415\u041a\u041e\u041c (EXPLICIT STACK)<\/strong><\/p>\n<p>\u0412 <code>interpret_bf_stack()<\/code> \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d LIFO-\u0441\u0442\u0435\u043a \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0441\u043a\u043e\u0431\u043e\u043a.<br \/> \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u044d\u0442\u043e PDA \u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u0441 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e: \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0435\u043a\u043e\u0432\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430. \u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442. \u0421\u043e\u0447\u0435\u0442\u0430\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u043d\u0430\u0434 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438 (\u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d).<\/p>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u0435: \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435 \u043a\u043e\u0434, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>main()<\/code>, \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438, \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438, \u043f\u043e\u043d\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0442\u0435\u043a\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/\/ bf_2.cpp#include &lt;stdlib.h&gt;#include &lt;conio.h&gt;#include &lt;string.h&gt;#include &lt;locale.h&gt;#define LOG printf\/\/------------------------------------------\/\/ \u0420\u0415\u041a\u0423\u0420\u0421\u0418\u0412\u041d\u042b\u0419 \u0410\u041b\u0413\u041e\u0420\u0418\u0422\u041c \u0418\u041d\u0422\u0415\u0420\u041f\u0420\u0415\u0422\u0410\u0422\u041e\u0420\u0410 BRAINFUCK \u041d\u0410 \u0421 \u0421\u0422\u0415\u041a\u0415\/\/------------------------------------------void interpret_bf_recursive(char* pc, unsigned char** head) \/\/ &lt;- \u0417\u0434\u0435\u0441\u044c \u0441\u0442\u0435\u043a CPU \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043d\u0435\u044f\u0432\u043d\u043e{    \/\/ char* pc - \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \"\u043b\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430\"    \/\/ char** head - \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \"\u043b\u0435\u043d\u0442\u0435 \u043f\u0430\u043c\u044f\u0442\u0438\", \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d **, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \"\u043e\u0431\u0449\u0443\u044e \u0433\u043e\u043b\u043e\u0432\u043a\u0443\", \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u0432\u0438\u0433\u0430\u044e\u0442 \u0432\u0441\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b    while (*pc &amp;&amp; *pc != ']')    {        switch (*pc++)        {            case '&gt;': ++*head; break; \/\/ \u0418\u043d\u043a\u0440\u043c\u0435\u043d\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438            case '&lt;': --*head; break; \/\/ \u0414\u0435\u043a\u0440\u043c\u0435\u043d\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438            case '+': ++**head;  break; \/\/ \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u044f\u0447\u0435\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438            case '-': --**head;  break; \/\/ \u0414\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u044f\u0447\u0435\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438            case '.': putchar(**head); break;            case ',': **head = (unsigned char)getchar(); break;            case '[':            {                if (**head)                {                    while (**head) interpret_bf_recursive(pc, head);                }                \/\/ \u041f\u0440\u043e\u043f\u0443\u0441\u043a \u0442\u0435\u043b\u0430 \u0446\u0438\u043a\u043b\u0430 \u0434\u043b\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430                for (int l = 1; l; pc++) { l += (*pc == '[') - (*pc == ']'); }                break;            }        }    }}\/\/------------------------------------------\/\/------------------------------------------\/\/ \u0418\u0422\u0415\u0420\u0410\u0422\u0418\u0412\u041d\u042b\u0419 \u0410\u041b\u0413\u041e\u0420\u0418\u0422\u041c \u0418\u041d\u0422\u0415\u0420\u041f\u0420\u0415\u0422\u0410\u0422\u041e\u0420\u0410 BRAINFUCK\/\/------------------------------------------void interpret_bf_stack(char* in, unsigned char* head_){    unsigned char* head = head_;    int stack[8192], sp = -1;    for (int i = 0; in[i]; i++)    {        switch (in[i])        {            case '&gt;': ++head; break;            case '&lt;': --head; break;            case '+': ++*head; break;            case '-': --*head; break;            case '.': putchar(*head); break;            case ',': *head = getchar(); break;            case '[':                if (*head) stack[++sp] = i;                else for (int l = 1; l; ) { char c = in[++i]; l += (c == '[') - (c == ']'); }                break;            case ']':                if (*head) i = stack[sp];                else sp--;                break;        }    }}\/\/------------------------------------------unsigned char tape[30000]; \/\/ \u041f\u0410\u041c\u042f\u0422\u042c RAMint main(int argc, char *argv[]){    setlocale(LC_ALL, \"en_US.UTF-8\");    LOG(\"\u0418\u041d\u0422\u0415\u0420\u041f\u0420\u0415\u0422\u0410\u0422\u041e\u0420 \u042f\u0417\u042b\u041a\u0410 BRAINFUCK. \u041a\u041e\u0414 \u041f\u041e\u041c\u0415\u0421\u0422\u0418\u0422\u042c \u0412 \u041a\u0410\u0412\u042b\u0427\u041a\u0418, \u041f\u0415\u0420\u0412\u042b\u041c \u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420\u041e\u041c \u041f\u0420\u0418 \u0417\u0410\u041f\u0423\u0421\u041a\u0415 \u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u042b. \u041f\u0420\u0418\u041c\u0415\u0420: brainfuck.exe \\\"++.\\\"\\n\");    char* code = \"++++++++[&gt;++++[&gt;++&gt;+++&gt;+++&gt;+&lt;&lt;&lt;&lt;-]&gt;+&gt;+&gt;-&gt;&gt;+[&lt;]&lt;-]&gt;&gt;.&gt;---.+++++++..+++.&gt;&gt;.&lt;-.&lt;.+++.------.--------.&gt;&gt;+.&gt;++.\";    if (argc &gt; 1) code = argv[1];    \/\/------------------------------------------    \/\/ 1. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0435\u0439 (\u0421 \u0441\u0442\u0435\u043a)    \/\/------------------------------------------    LOG(\"\\n\u0421\u0422\u0410\u0420\u0422: interpret_bf_recursive\\n\");    memset(tape, 0, sizeof(tape));    unsigned char* head = tape; \/\/ \u041e\u0442\u0434\u0430\u0442\u044c \u044f\u0447\u0435\u043a\u0443 \u0441 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0433\u043e\u043b\u043e\u0432\u043a\u0438    interpret_bf_recursive(code, &amp;head);    \/\/------------------------------------------    \/\/------------------------------------------    \/\/ 2. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u0435\u0437 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438    \/\/------------------------------------------    LOG(\"\\n\u0421\u0422\u0410\u0420\u0422: interpret_bf_stack\\n\");    memset(tape, 0, sizeof(tape));    interpret_bf_stack(code, tape);    \/\/------------------------------------------    getch();    return 0;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><strong>10. \u041a\u041e\u0414\u0418\u0420\u041e\u0412\u0410\u041d\u0418\u0415 \u041d\u0410 BF<\/strong><\/p>\n<p>\u041d\u0435\u0433\u043b\u0430\u0441\u043d\u0430\u044f \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 Brainfuck: \u0432\u0441\u044f\u043a\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 BF \u2013 \u044d\u0442\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 (\u0438\u0434\u0435\u0438). \u041d\u0430 BF \u043d\u0435 \u043f\u0438\u0448\u0443\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u044d\u0442\u043e \u2013 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0438\u0446\u0430.<br \/> \u0412 Readme-\u0444\u0430\u0439\u043b\u0435 \u043a \u044f\u0437\u044b\u043a\u0443 1993 \u0433. \u041c\u044e\u043b\u043b\u0435\u0440 \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u0444\u0440\u0430\u0437\u0443, \u0441\u0442\u0430\u0432\u0448\u0443\u044e \u0434\u0435\u0432\u0438\u0437\u043e\u043c BF-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432: \u00abWho can program anything useful with it? :)\u00bb \u0423\u043b\u044b\u0431\u043a\u0430 \u0432 \u043a\u043e\u043d\u0446\u0435 \u2013 \u0441\u0443\u0442\u044c \u044d\u0442\u043e\u0439 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438.<br \/> \u041b\u044e\u0431\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 \u043a\u043e\u0434\u0435, \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u043d\u0430\u0431\u043e\u0440 \u0438\u0437 8 \u043a\u043e\u043c\u0430\u043d\u0434 <code>&gt;&lt;+-.,[]<\/code>, \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c. \u0425\u043e\u0440\u043e\u0448\u0438\u043c \u0441\u0442\u0438\u043b\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0434, \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u043a\u043e\u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u0434 BF \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c (obfuscated by design), \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u043d\u0430\u0431\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u0441 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u043f\u0430\u043c\u044f\u0442\u0438.<br \/> \u041a\u043e\u0434\u0438\u0440\u0443\u044f \u043d\u0430 BF, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u0440\u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u0430:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u043e \u0432\u0441\u0435\u0445 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u2013 \u043d\u0443\u043b\u0438, \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043d\u043e\u043b\u044c.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u044f\u0447\u0435\u0435\u043a \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u00ab\u0435\u0437\u0434\u0438\u0442\u044c\u00bb \u043a \u043d\u0438\u043c \u0438 \u043e\u0442 \u043d\u0438\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0438, \u0447\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u00ab\u043f\u0440\u043e\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0443\u0442\u0435\u0439\u00bb \u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0432\u0440\u043e\u0434\u0435 <code>&lt;&lt;&lt;&lt;&lt;<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u044f\u0447\u0435\u0439\u043a\u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0442\u0440\u0435\u0442\u0438\u0432 <code>[<\/code> BF \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u043d\u0443\u043b\u044e \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443, \u0438 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u044c \u0431\u043b\u043e\u043a\u0430 \u043b\u0438\u0431\u043e \u043d\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 <code>]<\/code> \u2013 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: \u2013 \u044d\u0445\u043e-\u043f\u0435\u0447\u0430\u0442\u044c (Echo) \u041a\u043e\u0434 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u0442\u0443\u0442 \u0436\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0435\u0433\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. <code>,[.,]<\/code> \u2013 \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 <code>[-]<\/code> \u2013 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 BF<\/p>\n<\/li>\n<\/ol>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<pre><code> [ This program prints Sierpinski triangle on 80-column display. ]                                  &gt;                                     + +                                    +   +                                   [ &lt; + +                                  +       +                                 + +     + +                                &gt;   -   ]   &gt;                               + + + + + + + +                              [               &gt;                             + +             + +                            &lt;   -           ]   &gt;                           &gt; + + &gt;         &gt; &gt; + &gt;                          &gt;       &gt;       +       &lt;                         &lt; &lt;     &lt; &lt;     &lt; &lt;     &lt; &lt;                        &lt;   [   -   [   -   &gt;   +   &lt;                       ] &gt; [ - &lt; + &gt; &gt; &gt; . &lt; &lt; ] &gt; &gt; &gt;                      [                               [                     - &gt;                             + +                    +   +                           +   +                   + + [ &gt;                         + + + +                  &lt;       -                       ]       &gt;                 . &lt;     &lt; [                     - &gt;     + &lt;                ]   +   &gt;   [                   -   &gt;   +   +               + + + + + + + +                 &lt; &lt; + &gt; ] &gt; . [              -               ]               &gt;               ]             ] +             &lt; &lt;             &lt; [             - [            -   &gt;           +   &lt;           ]   +           &gt;   [           - &lt; + &gt;         &gt; &gt; - [         - &gt; + &lt;         ] + + &gt;          [       -       &lt;       -       &gt;       ]       &lt;       &lt;         &lt; ]     &lt; &lt;     &lt; &lt;     ] +     + +     + +     + +     + +        +   .   +   +   +   .   [   -   ]   &lt;   ]   +   +   +   +   +       * * * * * M a d e * B y : * N Y Y R I K K I * 2 0 0 2 * * * * *      <\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 [26], [27], [28].<\/p>\n<p><strong>\u041b\u0418\u0422\u0415\u0420\u0410\u0422\u0423\u0420\u0410<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>***<\/summary>\n<div class=\"spoiler__content\">\n<p>[1] <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AF%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\" rel=\"noopener noreferrer nofollow\">https:\/\/ru.wikipedia.org\/wiki\/\u042f\u0437\u044b\u043a\u043e\u0432\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435_\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a><br \/> [2] <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0\" rel=\"noopener noreferrer nofollow\">https:\/\/ru.wikipedia.org\/wiki\/\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f_\u043c\u0430\u0448\u0438\u043d\u0430<\/a><br \/> [3] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Traf-O-Data\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Traf-O-Data<\/a><br \/> [4] Microsoft: \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442 <a href=\"https:\/\/osp.ru\/cw\/2001\/03\/8982\" rel=\"noopener noreferrer nofollow\">https:\/\/osp.ru\/cw\/2001\/03\/8982<\/a><br \/> [5] \u0411\u0438\u043f\u0435\u0440\u043d\u044b\u0435 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 Z80 <a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/926140\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/926140\/<\/a><br \/> [6] \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u00ab\u043c\u0443\u0437\u044b\u043a\u0430\u043b\u043a\u0438\u00bb AY-3-8910 \u0438 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043d\u0430 Arduino <a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/884436\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/884436\/<\/a><br \/> [7] <a href=\"https:\/\/github.com\/l29ah\/ayfly\/blob\/master\/doc\/API.README\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/l29ah\/ayfly\/blob\/master\/doc\/API.README<\/a><br \/> [8] \u041f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u0437\u044f\u0442 \u0438\u0437 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b Google \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442<br \/> [9] <a href=\"http:\/\/mamedev.org\" rel=\"noopener noreferrer nofollow\">http:\/\/mamedev.org<\/a><br \/> [10] <a href=\"https:\/\/en.wikipedia.org\/wiki\/SCUMM\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/SCUMM<\/a><br \/> [11] <a href=\"https:\/\/en.wikipedia.org\/wiki\/GrimE\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/GrimE<\/a><br \/> [12] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Lua\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Lua<\/a><br \/> [13] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Turing_machine\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Turing_machine<\/a><br \/> [14] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Finitary_relation\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Finitary_relation<\/a><br \/> [15] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_(discrete_mathematics)\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Graph_(discrete_mathematics)<\/a><br \/> [16] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Finite-state_machine\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Finite-state_machine<\/a><br \/> [17] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Pushdown_automaton\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Pushdown_automaton<\/a><br \/> [18] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stack_(abstract_data_type)\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Stack_(abstract_data_type)<\/a><br \/> [19] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Random-access_memory\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Random-access_memory<\/a><br \/> [20] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linear_bounded_automaton\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Linear_bounded_automaton<\/a><br \/> [21] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Von_Neumann_architecture\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Von_Neumann_architecture<\/a><br \/> [22] <a href=\"https:\/\/en.wikipedia.org\/wiki\/State-space_representation\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/State-space_representation<\/a><br \/> [23] <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82\" rel=\"noopener noreferrer nofollow\">https:\/\/ru.wikipedia.org\/wiki\/\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439_\u0430\u0432\u0442\u043e\u043c\u0430\u0442<\/a><br \/> [24] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cartesian_product\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Cartesian_product<\/a><br \/> [25] <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bijection\" rel=\"noopener noreferrer nofollow\">https:\/\/en.wikipedia.org\/wiki\/Bijection<\/a><br \/> [26] <a href=\"https:\/\/esolangs.org\/wiki\/Brainfuck\" rel=\"noopener noreferrer nofollow\">https:\/\/esolangs.org\/wiki\/Brainfuck<\/a><br \/> [27] <a href=\"https:\/\/www.muppetlabs.com\/~breadbox\/bf\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.muppetlabs.com\/~breadbox\/bf\/<\/a><br \/> [28] <a href=\"https:\/\/esoteric.sange.fi\/brainfuck\/bf-source\/prog\/\" rel=\"noopener noreferrer nofollow\">https:\/\/esoteric.sange.fi\/brainfuck\/bf-source\/prog\/<\/a><\/p>\n<\/div>\n<\/details>\n<p>\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2590\u2588\u258c\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2580\u2588\u2590\u2580\u2588\u2591\u2588\u2591\u2588\u2590\u2580\u2588\u2591\u2591\u2591\u2588\u2588\u2580\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2588\u2590\u2580\u2588\u2591\u2580\u2584\u2580\u2590\u2588\u2584\u2591\u2584\u2588\u2588\u2580\u2580\u2580\u2588\u2588\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2580\u2580\u2580\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2500\u2584\u2584\u2590\u2580\u2588\u2590\u2580\u2588\u2590\u2580\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2584\u2588\u2588\u2590\u2584\u2588\u2590\u2584\u2588\u2590\u2584\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2588\u2588\u2580\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2590\u2588\u2590\u2580\u2588\u2590\u2584\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2588\u2588\u2584\u2580\u2591\u2590\u2580\u2588\u2591\u2584\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588<br \/> \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1029848\/\">https:\/\/habr.com\/ru\/articles\/1029848\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043d\u0430\u0443\u043a \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0443\u0447\u0451\u0431\u044b(\u0421\u0435\u0440\u0438\u044f: \u0421\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u0443\u0447\u0438\u0442\u0435\u043b\u044e \u0432 \u043f\u043e\u043c\u043e\u0449\u044c)\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435***\u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0427\u0430\u0441\u0442\u044c I. \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Brainfuck \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0420\u0430\u0437\u0434\u0435\u043b: \u0418\u0441\u0442\u043e\u0440\u0438\u0438 \u0438 \u0438\u0434\u0435\u0438 VM\u0413\u0434\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b\u0418\u0441\u0442\u043e\u0440\u0438\u044f Microsoft \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0447\u0438\u043f\u0442\u044e\u043d \u043c\u0443\u0437\u044b\u043a\u0438\u0411\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u0432\u0430\u044f VM \u0432 ZX SpectrumForth: DSL, VM \u0438 RTOS \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u043e\u0442\u0435\u043b\u0435\u0441\u043a\u043e\u043f\u043e\u043cMame, Cumm \u0420\u0430\u0437\u0434\u0435\u043b: \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b\u041c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430-\u043d\u0430\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0420\u0430\u0437\u0434\u0435\u043b: \u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u00ab\u041b\u0438\u043c\u043e\u043d\u0430\u0434-\u043c\u0442\u00bb\u0422\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430\u041a\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043d\u0430 \u0421\u0411\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u0433\u0440\u0430\u0444\u0443 \u043a\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u043d\u0430 \u0421\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430 \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u041c\u0422VM \u0423\u041c\u0422 \u043d\u0430 \u0421\u0422\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u044f\u0446\u0438\u044f: FSM-\u0442\u0430\u0431\u043b\u0438\u0446\u0430 -&gt; \u0421\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440: FSM-\u0433\u0440\u0430\u0444 -&gt; \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0418\u0441\u0442\u043e\u0440\u0438\u044f: \u043c\u043e\u043d\u0435\u0442\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0438 \u0420\u0430\u0437\u0434\u0435\u043b: \u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 \u0438 VM Brainfuck\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u044b \u0423\u041c\u0422\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435: \u043a\u043e\u0434 BF -&gt; \u0442\u0430\u0431\u043b\u0438\u0446\u0430 FSM (\u0430\u043d\u0430\u043b\u0438\u0437)\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435: \u043a\u043e\u0434 BF -&gt; \u0442\u0430\u0431\u043b\u0438\u0446\u0430 FSM (\u043f\u0440\u0430\u0432\u0438\u043b\u0430)\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 BF \u043d\u0430 \u0421\u0421\u0432\u044f\u0437\u044c: CPU, \u0441\u0442\u0435\u043a\u0438, \u044f\u0437\u044b\u043a\u0438\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430: \u0437\u0430\u043c\u0435\u043d\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u0446\u0438\u043a\u043b\u043e\u043c\u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a (Recursive descent)\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441 \u044f\u0432\u043d\u044b\u043c \u0441\u0442\u0435\u043a\u043e\u043c (Explicit stack)\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 BF \u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430\u041c\u041e\u0422\u0418\u0412\u0410\u0426\u0418\u042f\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588 \u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2593\u2592\u2592\u2593\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2591\u2588 \u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2592\u2592\u2593\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2584\u2584\u2592\u2593\u2592\u2592\u2591\u2588\u2591\u2584\u2584 \u2592\u2592\u2584\u2580\u2580\u2584\u2584\u2588\u2591\u2592\u2592\u2592\u2592\u2592\u2592\u2593\u2592\u2592\u2592\u2592\u2588\u2591\u2591\u2580\u2584\u2584\u2584\u2584\u2584\u2580\u2591\u2591\u2588 \u2592\u2592\u2588\u2591\u2591\u2591\u2591\u2588\u2591\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588 \u2592\u2592\u2592\u2580\u2580\u2584\u2584\u2588\u2591\u2592\u2592\u2592\u2592\u2593\u2592\u2592\u2592\u2593\u2592\u2588\u2591\u2591\u2591\u2588\u2592\u2591\u2591\u2591\u2591\u2588\u2592\u2591\u2591\u2588 \u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2592\u2593\u2592\u2592\u2592\u2592\u2593\u2592\u2592\u2592\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2580\u2591\u2591\u2591\u2591\u2591\u2588 \u2592\u2592\u2592\u2592\u2592\u2584\u2584\u2588\u2591\u2592\u2592\u2592\u2593\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2588\u2591\u2591\u2588\u2584\u2584\u2588\u2584\u2584\u2588\u2591\u2591\u2588 \u2592\u2592\u2592\u2592\u2588\u2591\u2591\u2591\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588\u2591\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588 \u2592\u2592\u2592\u2592\u2588\u2584\u2584\u2588\u2591\u2591\u2588\u2584\u2584\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2584\u2584\u2588\u2591\u2591\u2588\u2584\u2584\u2588\u041a\u0443\u0440\u0441 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u0430 \u043a\u0440\u0430\u0442\u043a\u043e \u0438 \u044f\u0441\u043d\u043e \u0434\u0430\u0441\u0442 \u043d\u043e\u0432\u0438\u0447\u043a\u0443 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u0438. \u0423 \u043a\u0443\u0440\u0441\u0430 3 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438: \u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u042f\u0437\u044b\u043a\u0438 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b, \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u044b \u0438 \u043b\u043e\u0433\u0438\u043a\u0430. \u041f\u0435\u0440\u0432\u0430\u044f \u0438 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u0438 \u2013 \u0446\u0435\u043b\u043e\u0435, \u0431\u0435\u0437 \u043d\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. \u0422\u0440\u0435\u0442\u044c\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0442\u0435\u043c, \u043a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043b\u043e\u0433\u0438\u043a\u0438 \u043b\u0438\u0431\u043e \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0432\u043b\u0430\u0434\u0435\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u043c. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u0430\u043d\u044b \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 \u044f\u0437\u044b\u043a\u0430 \u042199. \u0413\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438: https:\/\/github.com\/myfoundation\/EvolutionaryEngineering\/book_it_begins\/\u0412 \u043f\u0430\u0431\u043b\u0438\u043a \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c\u0435 \u00ab\u041d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb, \u044f \u0432\u0435\u0434\u0443 \u0448\u043a\u043e\u043b\u0443 \u0438 \u0434\u0430\u044e \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u041d\u043e\u0432\u0438\u0447\u043a\u0430\u043c, \u0443\u0447\u0430\u0449\u0438\u043c\u0441\u044f, \u0438 \u043f\u0440\u043e\u0444\u0438 \u2013 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c https:\/\/t.me\/abnormal_programming .\u0412\u0421\u0422\u0423\u041f\u041b\u0415\u041d\u0418\u0415\u042f \u043f\u0440\u0430\u043a\u0442\u0438\u043a \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u043e\u0432\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f [1]. \u0412 \u043d\u0451\u043c \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0435\u0448\u0430\u044e\u0442 \u0442\u0440\u043e\u0439\u043a\u043e\u0439: \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 VM, \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DSL \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043d\u0430 \u043d\u0451\u043c. \u0412 \u044d\u0442\u043e\u043c \u043a\u0443\u0440\u0441\u0435 \u0443\u0434\u0430\u0447\u043d\u044b\u043c\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0421 \u0442\u0435\u043e\u0440\u0438\u0435\u0439, \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438. \u0412\u0441\u044f \u043d\u0430\u0448\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 VM, DSL, EBNF, \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u0438 \u0433\u0440\u0430\u0444\u043e\u0432. \u041c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0442 \u0432\u043c\u0435\u0441\u0442\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0438 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0412 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u043c \u0434\u0435\u043b\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043d\u0430\u0443\u043a\u0435, \u0440\u0438\u0442\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a \u0434\u0435\u0442\u0430\u043b\u044f\u043c \u2013 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u043c. \u0421\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u0440\u0435\u0435\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u0439 \u0432\u0430\u0436\u043d\u0430 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b \u043c\u044b\u0441\u043b\u0438.\u0427\u0410\u0421\u0422\u042c I. \u041a\u041e\u041d\u0415\u0427\u041d\u042b\u0415 \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u042b. \u0423\u041d\u0418\u0412\u0415\u0420\u0421\u0410\u041b\u042c\u041d\u0410\u042f \u041c\u0410\u0428\u0418\u041d\u0410 \u0422\u042c\u042e\u0420\u0418\u041d\u0413\u0410. \u0418\u041d\u0422\u0415\u0420\u041f\u0420\u0415\u0422\u0410\u0422\u041e\u0420 BRAINFUCK.\u0412\u0418\u0420\u0422\u0423\u0410\u041b\u042c\u041d\u042b\u0415 \u041c\u0410\u0428\u0418\u041d\u042b\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2580\u2584\u2588\u2580\u2588\u2580\u2588\u2584\u2580\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 \u2591\u2591\u2580\u2580\u2588\u2588\u2588\u2580\u2580\u2591\u2591\u2591\u2588\u2588\u2584\u2588\u2584\u2588\u2588\u2591\u2591 \u2591\u2588\u2580\u2588\u2588\u2588\u2588\u2588\u2580\u2588\u2591\u2588\u2580\u2588\u2588\u2588\u2588\u2588\u2580\u2588\u2591 \u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2584\u2588\u2588\u2588\u2584\u2591\u2588\u2591 \u2591\u2580\u2591\u2580\u2588\u2580\u2588\u2580\u2591\u2580\u2591\u2580\u2591\u2580\u2588\u2580\u2588\u2580\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 VM (Virtual Machine) \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0438\u043b\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 FSM (Finite State Machine). \u0418\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043a\u043e\u0434 (\u0431\u0430\u0439\u0442-\u043a\u043e\u0434, \u0448\u0438\u0442\u044b\u0439 \u043a\u043e\u0434, p-\u043a\u043e\u0434). \u0418\u043c\u0435\u0435\u0442 \u0446\u0438\u043a\u043b \u0432\u044b\u0431\u043e\u0440\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434. \u0411\u0430\u0439\u0442-\u043a\u043e\u0434 (Bytecode) \u2013 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 VM. \u041a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 1 \u0431\u0430\u0439\u0442 (\u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435), \u0437\u0430 \u043d\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0438\u0434\u0442\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442 \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, .pyc \u0434\u043b\u044f Python \u0438\u043b\u0438 .class \u0434\u043b\u044f Java). VM \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0435\u0439 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0448\u0438\u0442\u043e\u043c \u043a\u043e\u0434\u0435 (Threaded Code) \u2013 \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u043d\u0435 \u00ab\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u00bb \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 switch, \u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430. \u041f\u0440\u0438\u043c\u0435\u0440: \u044f\u0437\u044b\u043a Forth, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f ZX Spectrum. P-\u043a\u043e\u0434 (Pascal Code \/ Portable Code) \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0435\u0434\u043e\u043a \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 Pascal. \u042d\u0442\u043e \u043a\u043e\u0434 \u0434\u043b\u044f \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b (P-machine). \u0418\u0434\u0435\u044f: \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 P-\u043a\u043e\u0434, \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 P-\u043c\u0430\u0448\u0438\u043d\u044b. \u041f\u0440\u0438\u043c\u0435\u0440: UCSD Pascal. VM \u043c\u043e\u0436\u0435\u0442 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 (\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c RAM, \u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u0434\u0438\u0441\u043a, BIOS). \u0418\u0434\u0435\u044f VM \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u044f\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f DEC VAX\/VMS, IBM VM\/CMS \u0438 \u0435\u0451 \u0430\u043d\u0430\u043b\u043e\u0433 \u0432\u0440\u0435\u043c\u0451\u043d \u0421\u0421\u0421\u0420 \u2013 \u0421\u0412\u041c [2].\u0420\u0410\u0417\u0414\u0415\u041b: \u0418\u0421\u0422\u041e\u0420\u0418\u0418 \u0418 \u0418\u0414\u0415\u0418 VM1. \u0413\u0414\u0415 \u041f\u041e\u041b\u0415\u0417\u041d\u042b \u0412\u0418\u0420\u0422\u0423\u0410\u041b\u042c\u041d\u042b\u0415 \u041c\u0410\u0428\u0418\u041d\u042b\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 VM \u043f\u043b\u043e\u0434\u043e\u0442\u0432\u043e\u0440\u043d\u043e:\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u043c \u0441 \u0438\u0445 \u043a\u043e\u0434\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438.\u0414\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e; \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0435\u0433\u043e \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f.\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f HAL (Hardware Abstraction Level) \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e API \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0433\u043e \u043e\u0442 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0438\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u0437\u043a\u043e\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 VM.2. \u0418\u0421\u0422\u041e\u0420\u0418\u042f MICROSOFT \u0418 \u0412\u0418\u0420\u0422\u0423\u0410\u041b\u042c\u041d\u042b\u0415 \u041c\u0410\u0428\u0418\u041d\u042b\u0418\u0441\u0442\u043e\u0440\u0438\u044f Microsoft \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0430\u0441\u044c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f VM \u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u2026 \u0423\u0447\u0435\u043d\u0438\u043a\u0430\u043c \u0448\u043a\u043e\u043b\u044b \u041b\u0435\u0439\u043a\u0441\u0430\u0439\u0434 \u0432 \u0421\u0438\u044d\u0442\u043b\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e. \u042d\u0442\u043e \u0443\u0447\u0435\u0431\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u0432\u0435\u043b\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0439 \u043a\u0443\u0440\u0441. \u0412 1968 \u0433\u043e\u0434\u0443, \u0432 \u043c\u0438\u0440\u0435 \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u0440\u0443\u043f\u043d\u043e\u0433\u0430\u0431\u0430\u0440\u0438\u0442\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b IBM \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u043c\u0438\u043d\u0438-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u043a\u043e\u043b\u044c\u043d\u0438\u043a\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u0430\u0437\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u0440\u0435\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u043d\u044b\u043c. \u0412\u043e\u0441\u044c\u043c\u0438\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a \u0413\u0435\u0439\u0442\u0441, \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b\u043b\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u0432 \u0448\u043a\u043e\u043b\u0435, \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043b\u0441\u044f \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 DEC PDP-10 (Programmed Data Processor \u043c\u043e\u0434\u0435\u043b\u044c 10) \u0438 \u0432\u0441\u043a\u043e\u0440\u0435 \u0441\u0442\u0430\u043b \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0430\u0441\u043e\u043c, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0448\u043a\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u0438 \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 (\u0437\u0430 \u0447\u0442\u043e \u0431\u044b\u043b \u043e\u0442\u043b\u0443\u0447\u0435\u043d \u043e\u0442 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0430 \u0433\u043e\u0434). \u041f\u043e\u043b \u0410\u043b\u043b\u0435\u043d \u0431\u044b\u043b \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u044c\u043e\u043d\u043e\u043c. \u041d\u0430 PDP \u043e\u043d\u0438 \u0438\u0437\u0443\u0447\u0430\u043b\u0438 Fortran, Lisp \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0443\u0447\u0451\u0431\u044b \u0411\u0438\u043b\u043b \u0438 \u041f\u043e\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u043e\u0440\u043e\u0436\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 Traf-O-Data \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u0436\u0438 \u043c\u0435\u0441\u0442\u043d\u044b\u043c \u043e\u0440\u0433\u0430\u043d\u0430\u043c \u0432\u043b\u0430\u0441\u0442\u0438 \u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430\u043c \u0448\u0442\u0430\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0438\u0445 \u0434\u0435\u043d\u044c\u0433\u0438 \u0438 \u0432\u0440\u0435\u043c\u044f. \u041f\u043e\u043f\u0435\u0440\u0451\u043a \u0434\u043e\u0440\u043e\u0433\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0435\u0437\u0438\u043d\u043e\u0432\u044b\u0435 \u0442\u0440\u0443\u0431\u043a\u0438. \u041f\u0440\u0438 \u043f\u0440\u043e\u0435\u0437\u0434\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u0442\u0440\u0443\u0431\u043a\u0430 \u0441\u0436\u0438\u043c\u0430\u043b\u0430\u0441\u044c \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0430 \u0432\u043e\u0437\u0434\u0443\u0448\u043d\u044b\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441. \u0418\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u043d\u0430 \u043f\u0435\u0440\u0444\u043e\u043b\u0435\u043d\u0442\u0435 \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0410\u043b\u043b\u0435\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Intel 8008 \u043d\u0430 DEC, \u0430 \u0411\u0438\u043b\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0417\u0430\u0442\u0435\u043c \u0441\u0442\u0443\u0434\u0435\u043d\u0442-\u044d\u043b\u0435\u043a\u0442\u0440\u0438\u043a \u041f\u043e\u043b \u0413\u0438\u043b\u0431\u0435\u0440\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0434\u043b\u044f \u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 (hardware) \u043d\u0430 Intel 8008, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0435\u0440\u0444\u043e\u043b\u0435\u043d\u0442\u044b \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u0442\u0447\u0451\u0442\u044b \u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0440\u043e\u0433. 1974 \u0433\u043e\u0434\u0443 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u0431\u044b\u0432\u0430\u043b\u043e\u0435 \u2013 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 Altair \u043d\u0430 \u0431\u0430\u0437\u0435 Intel 8080. \u041c\u0438\u0440\u043d\u0430\u044f \u0436\u0438\u0437\u043d\u044c \u0440\u044b\u043d\u043a\u0430, \u0433\u0434\u0435 \u0446\u0430\u0440\u0438\u043b\u0438 IBM \u0438 DEC, \u0431\u044b\u043b\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 MITS \u0438\u0437 \u0410\u043b\u044c\u0431\u0443\u043a\u0435\u0440\u043a\u0435, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439 Altair \u2013 \u043c\u0430\u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e. \u041e\u043d\u0430 \u0448\u043b\u0430 \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u0442\u0438\u043f\u0430 \u00ab\u0441\u0434\u0435\u043b\u0430\u0439 \u0441\u0430\u043c\u00bb. \u0418\u0437 \u043d\u0435\u0433\u043e \u0442\u0435\u0440\u043f\u0435\u043b\u0438\u0432\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u044f\u043b\u044c\u043d\u0438\u043a\u0430 \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0432 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u0410\u043b\u043b\u0435\u043d, \u043f\u0435\u0440\u0432\u044b\u043c \u0443\u0437\u043d\u0430\u0432\u0448\u0438\u0439 \u043e\u0431 Altair, \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0448\u0430\u043d\u0441 \u0443\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u041e\u043d \u0431\u0435\u0437 \u0442\u0440\u0443\u0434\u0430 \u0443\u0431\u0435\u0434\u0438\u043b \u0413\u0435\u0439\u0442\u0441\u0430 \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u041a\u043e\u043c\u043f\u0430\u043d\u044c\u043e\u043d\u044b \u043f\u043e\u0437\u0432\u043e\u043d\u0438\u043b\u0438 \u0433\u043b\u0430\u0432\u0435 MITS \u042d\u0434\u0443 \u0420\u043e\u0431\u0435\u0440\u0442\u0441\u0443 \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u043b\u0438, \u0447\u0442\u043e \u0438\u043c\u0435\u044e\u0442 \u0411\u0435\u0439\u0441\u0438\u043a, \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f Altair. \u0420\u043e\u0431\u0435\u0440\u0442\u0441 \u043d\u0435 \u0441\u0447\u0435\u043b \u044d\u0442\u043e \u0437\u0430 \u0440\u043e\u0437\u044b\u0433\u0440\u044b\u0448. \u041e\u043d \u0436\u0434\u0430\u043b \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0437\u0432\u043e\u043d\u043a\u043e\u0432, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u043d\u0438\u043c\u0430\u043b, \u0447\u0442\u043e \u0435\u0433\u043e \u0434\u0435\u0442\u0438\u0449\u0435, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043e\u0431\u0440\u0443\u0448\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u0443\u0441\u043f\u0435\u0445, \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0435\u043c \u0443\u0442\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0443\u043c\u0431\u043b\u0435\u0440\u043e\u0432. \u0418\u0442\u0430\u043a, \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 \u0431\u044b\u043b\u043e \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0415\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0443\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u0434\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u0430\u043c \u0437\u0430\u0432\u044f\u0437\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0441 MITS. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u0430\u043c\u043e\u0433\u043e Intel 8080. \u0417\u0430\u0442\u043e \u0431\u044b\u043b \u043e\u043f\u044b\u0442 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0447\u0438\u043f\u0430 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 Traf-O-Data. \u0418\u0437\u0443\u0447\u0438\u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Intel \u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 Popular Electronics, \u0413\u0435\u0439\u0442\u0441 \u0438 \u0410\u043b\u043b\u0435\u043d \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0410ltair \u043d\u0430 PDP-10. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0411\u0435\u0439\u0441\u0438\u043a\u0443, \u0441\u043e\u043e\u0431\u0449\u0438\u0432 \u0420\u043e\u0431\u0435\u0440\u0442\u0441\u0443, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430, \u0430 \u043d\u0435 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Microsoft. \u0417\u0438\u043c\u043e\u0439 1975 \u0433\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430\u0441\u044c \u043b\u0438\u0447\u043d\u0430\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430 \u042d\u0434\u0430 \u0420\u043e\u0431\u0435\u0440\u0442\u0441\u0430 \u0438 \u041f\u043e\u043b\u0430 \u0410\u043b\u043b\u0435\u043d\u0430 \u0432 \u0410\u043b\u044c\u0431\u0443\u043a\u0435\u0440\u043a\u0435. \u0410\u043b\u043b\u0435\u043d \u043f\u0440\u0438\u0432\u0435\u0437 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0411\u0435\u0439\u0441\u0438\u043a \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u0432 \u0433\u043b\u0430\u0437\u0430. \u041a \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e \u0413\u0435\u0439\u0442\u0441\u0430 \u0438 \u0410\u043b\u043b\u0435\u043d\u0430 \u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0430\u0441\u044c \u0438 \u043f\u0440\u043e\u0448\u043b\u0430 \u0432\u0441\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f. \u0420\u043e\u0431\u0435\u0440\u0442\u0441 \u0431\u044b\u043b \u0433\u043e\u0442\u043e\u0432 \u043d\u0435\u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u0433\u043e\u0432\u043e\u0440. \u0417\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 BASIC \u0434\u0440\u0443\u0437\u044c\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0435 \u043e\u0442\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f. \u0423\u0441\u043f\u0435\u0445 \u0411\u0435\u0439\u0441\u0438\u043a\u0430 \u0434\u043b\u044f Altair \u043f\u043e\u043c\u043e\u0433 \u0413\u0435\u0439\u0442\u0441\u0443 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0431\u044b\u043b\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438. \u041e\u043d \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0413\u0430\u0440\u0432\u0430\u0440\u0434 \u0438 \u043e\u0442\u0434\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u2013 Microsoft. Micro \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b, \u0430 Soft \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 [3][4].3. \u0418\u0421\u0422\u041e\u0420\u0418\u042f \u041e\u0420\u0418\u0413\u0418\u041d\u0410\u041b\u042c\u041d\u041e\u0413\u041e \u041f\u0420\u041e\u0418\u0413\u0420\u042b\u0412\u0410\u0422\u0415\u041b\u042f \u0427\u0418\u041f\u0422\u042e\u041d \u041c\u0423\u0417\u042b\u041a\u0418\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2584\u2591\u2588\u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2588\u2580\u2588\u2580\u2580\u2580\u2588\u2580\u2588\u2580\u2580\u2580\u2588\u2591\u2584\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2584\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2580\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2584\u2591\u2580\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2584\u2591\u2591\u2591\u2591 \u2584\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2584\u2588\u2584\u2588\u2584\u2588\u2584\u2584\u2584\u2588\u2584\u2584\u2584\u2588\u2584\u2588\u2584\u2584\u2584\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2584 \u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551 \u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551\u2591\u2588\u2591\u2588\u2591\u2551 \u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551\u2591\u2551 \u255a\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u255d\u00ab\u0424\u0438\u0437\u0438\u043a\u0430\u00bb \u2013 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c, \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u0440\u043e\u0442\u0435\u043a\u0430\u0435\u0442 \u0432 \u043c\u0438\u0440\u0435 \u0444\u0438\u0437\u0438\u043a\u0438. \u0417\u0432\u0443\u043a \u2013 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445. \u0427\u0438\u043f\u0442\u044e\u043d (chiptune) \u2013 \u043c\u0443\u0437\u044b\u043a\u0430, \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u0432\u043e\u043b\u043d\u044b \u0438 \u0448\u0443\u043c\u043e\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u043b\u0438\u0431\u043e \u0442\u0440\u0435\u043a\u0435\u0440\u0430\u043c\u0438 (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438 \u0438\u0437 \u00ab\u0441\u0435\u043c\u043f\u043b\u043e\u0432\u00bb \u2013 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u0433\u043e\u043b\u043e\u0441\u0430 \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0437\u0432\u0443\u043a\u0430) [5][6]. \u0421 1970-\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0435 \u0432\u0437\u043b\u043e\u043c\u0449\u0438\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0438 \u0432 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0435 \u0438\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0435\u0433\u0443\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0447\u0438\u043f\u0442\u044e\u043d \u0438 \u0432\u0438\u0434\u0435\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u00ab\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u043c\u0438\u00bb. \u0412 \u0441\u0432\u043e\u0451 \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u044b \u043f\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u00ab\u0434\u0435\u043c\u043e\u043a\u00bb. AY-3-8910 \u2013 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 1978 \u0433\u043e\u0434\u0430 \u043e\u0442 General Instruments \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0437\u0432\u0443\u043a\u0430 \u0438 \u043c\u0443\u0437\u044b\u043a\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 \u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Sinclair ZX Spectrum 128\u041a \u0441 8 \u0431\u0438\u0442\u043d\u044b\u043c \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Zilog Z80 1976 \u0433\u043e\u0434\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430. \u0420\u0435\u0441\u0443\u0440\u0441\u044b ZX&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-478016","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/478016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=478016"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/478016\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=478016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=478016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=478016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}