{"id":357499,"date":"2024-05-20T23:52:07","date_gmt":"2024-05-20T23:52:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=357499"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=357499","title":{"rendered":"<span>Open-source \u0431\u043b\u043e\u043a\u043d\u043e\u0442 Wolfram Language \u0438\u043b\u0438 \u043a\u0430\u043a \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e Mathematica \u043d\u0430 Javascript \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u043f\u0440\u043e\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u043b\u0438 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c-\u043a\u043e\u043f\u0438\u044f\u0445 Wolfram Mathematica, \u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u043a\u0430\u043a, \u0441\u043a\u0430\u0436\u0435\u043c, <a href=\"https:\/\/habr.com\/ru\/companies\/itsumma\/news\/699932\/\" rel=\"noopener noreferrer nofollow\">Mathics<\/a>. \u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 <a class=\"mention\" href=\"\/users\/itsumma\">@ITSumma<\/a>\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435<\/p>\n<blockquote>\n<p>\u041d\u0430 Mathics \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437\u00a0<a href=\"https:\/\/codegolf.stackexchange.com\/a\/44683\/9570\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430<\/a>\u00a0\u0442\u043e\u0436\u0435 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u0412\u043e\u043e\u0431\u0449\u0435, \u0434\u043b\u044f Wolfram Language (WL) \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0430\u0442\u0435\u043b\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0412\u043e\u043b\u044c\u0444\u0440\u0430\u043c\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u043d\u043e.\u00a0<\/p>\n<\/blockquote>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043f\u043e\u0440\u0438\u0442\u044c \u0441 \u044d\u0442\u0438\u043c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c, \u043e\u0434\u043d\u0430\u043a\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0435 \u0436\u0435 &#171;\u0440\u0435\u0448\u0430\u0442\u0435\u043b\u0438&#187;, \u043d\u043e \u0441 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u043e\u0439 open-source \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u0441\u043d\u0430\u0440\u0443\u0436\u0438. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 Mathematica \u0441 \u043d\u0443\u043b\u044f, \u043d\u043e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0434\u0430\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u0447\u0435\u0440\u0442\u0438\u043b \u0435\u0433\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0421\u0442\u0438\u0432\u0435\u043d \u0412\u043e\u043b\u044c\u0444\u0440\u0430\u043c, \u0441\u043e\u0437\u0434\u0430\u0432 \u044d\u0442\u0443 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 30-\u0442\u0438 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434.<\/p>\n<p><em>::: \u042d\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0438 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0430 Wolfram Mathematica<\/em><\/p>\n<p><strong>\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f<\/strong><\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ffe\/7d4\/e75\/ffe7d4e75ca72b11dc7a6ee57ec2dda4.png\" alt=\"\u0411\u043e\u0440\u043e\u0437\u0434\u044f\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u044b \u043a\u043e\u0440\u0430\u0431\u043b\u044c, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 WL. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, RTX \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 Intel UHD \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.\" title=\"\u0411\u043e\u0440\u043e\u0437\u0434\u044f\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u044b \u043a\u043e\u0440\u0430\u0431\u043b\u044c, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 WL. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, RTX \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 Intel UHD \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.\" width=\"1600\" height=\"794\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ffe\/7d4\/e75\/ffe7d4e75ca72b11dc7a6ee57ec2dda4.png\"\/><\/p>\n<div><figcaption><a href=\"https:\/\/jerryi.github.io\/wljs-docs\/docs\/interpreter\/intro\" rel=\"noopener noreferrer nofollow\"><strong>\u0411\u043e\u0440\u043e\u0437\u0434\u044f\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u044b \u043a\u043e\u0440\u0430\u0431\u043b\u044c,<\/strong> <\/a>\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 WL. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, RTX \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 Intel UHD \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u043b\u0435\u0447\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u044d\u0442\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u0440\u0430\u0431\u043b\u0438\u043a\u043e\u043c. \u0422\u043e, \u043d\u0430 \u0447\u0435\u043c \u043e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d, &#8212; \u044d\u0442\u043e \u043d\u0438 \u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043a\u0430\u043a Wolfram Language \u0438 \u0442\u043e, \u0433\u0434\u0435 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441, &#8212; \u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 (\u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/docs\/interpreter\/intro\" rel=\"noopener noreferrer nofollow\">\u043a\u043b\u0438\u043a\u043d\u0443\u043b \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443<\/a>).<\/p>\n<p><a href=\"#%D0%AF%D0%BA%D0%BE%D1%80%D1%8C\" rel=\"noopener noreferrer nofollow\"><strong>TLDR \u042f\u043a\u043e\u0440\u044c<\/strong><\/a><\/p>\n<blockquote>\n<p><a href=\"https:\/\/github.com\/JerryI\/wolfram-js-frontend\" rel=\"noopener noreferrer nofollow\"><strong>\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/jerryi.github.io\/wljs-docs\/\" rel=\"noopener noreferrer nofollow\"><strong>\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/strong><\/a><strong> <\/strong>(\u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f)<\/p>\n<\/blockquote>\n<p>\u041d\u043e \u044f \u043e\u0431\u043c\u0430\u043d\u0443\u043b \u0412\u0430\u0441, \u044d\u0442\u043e \u043d\u0435 open-source \u0431\u043b\u043e\u043a\u043d\u043e\u0442, \u0430 \u043d\u0435\u0447\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435, \u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u0435, \u043e \u0447\u0435\u043c \u0412\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u043e\u0437\u0436\u0435 \u0432 \u0441\u0435\u043a\u0446\u0438\u044f\u0445 \u043d\u0438\u0436\u0435. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432&#8230;<\/p>\n<h3>\u0411\u043b\u043e\u043a\u043d\u043e\u0442? \u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u043d\u043e\u0436<\/h3>\n<p>\u041a\u043e\u0434, \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, data-science, \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 &#8212; \u0432\u0441\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u043a\u0435\u0432\u043e\u043c\u043e\u0440\u0444\u0438\u043e\u0437\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 &#8212; \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/696\/371\/ec0\/696371ec062d41bed01da591fe1ded8c.png\" alt=\"Wolfram Blog. 30y anniversary\" title=\"Wolfram Blog. 30y anniversary\" width=\"620\" height=\"461\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/696\/371\/ec0\/696371ec062d41bed01da591fe1ded8c.png\"\/><\/p>\n<div><figcaption>Wolfram Blog. 30y anniversary<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d38\/880\/084\/d388800844f2d3db5f4eec1487378987.png\" alt=\"Jupyter Notebook\" title=\"Jupyter Notebook\" width=\"1194\" height=\"826\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d38\/880\/084\/d388800844f2d3db5f4eec1487378987.png\"\/><\/p>\n<div><figcaption>Jupyter Notebook<\/figcaption><\/div>\n<\/figure>\n<p>\u042f\u0447\u0435\u0439\u043a\u0438 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u044d\u0442\u043e \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u0430 Markdown, \u043a\u043e\u0433\u0434\u0430 \u0435\u0433\u043e &#171;\u043f\u0440\u0438\u0432\u0435\u0437\u0443\u0442&#187; \u0432 Wolfram Mathematica &#8212; \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f09\/091\/75d\/f0909175db5ba106a7a3849af5045b9a.png\" alt=\"\u0411\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0432 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 Markdown\/Wolfram\" title=\"\u0411\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0432 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 Markdown\/Wolfram\" width=\"1177\" height=\"771\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f09\/091\/75d\/f0909175db5ba106a7a3849af5045b9a.png\"\/><\/p>\n<div><figcaption>\u0411\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0432 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 Markdown\/Wolfram<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u043e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u044b \u0435\u0449\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u043e\u0437\u0436\u0435.<\/p>\n<h3>\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u044b\u0440<\/h3>\n<p>\u0412\u0430\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044f\u0442\u044c Wolfram Language \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 &#8212; Wolfram Mathematica. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u0435\u0440\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a Wolfram Mathematica \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a \u043d\u0435\u043c\u0443 (\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434), \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u044b \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. <\/p>\n<p><strong>(\u041e\u043a\u043e\u043b\u043e-)\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044f\u0437\u044b\u043a\u0430<\/strong> (\u0441\u043c. <a href=\"https:\/\/habr.com\/ru\/articles\/767490\/#comment_26068622\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438<\/a> \u043f\u0440\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f)\u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 &#8212; \u044d\u0442\u043e <a href=\"https:\/\/www.wolfram.com\/engine\/\" rel=\"noopener noreferrer nofollow\"><strong>Wolfram Engine<\/strong><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u043e \u041f\u0438\u0442\u043e\u043d\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043a \u0447\u0435\u043c\u0443-\u0443\u0433\u043e\u0434\u043d\u043e. <\/p>\n<h3>\u041e\u0442\u043b\u0438\u0447\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043e\u0432 Mathematica \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445<\/h3>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e, \u043e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0430\u043c \u0444\u0430\u043a\u0442 \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0430. \u0422\u0430\u043a\u043e\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0430\u0439\u0442\u0438 \u0432 Jupyter, Obsevable (d3-express), VSCode Notebook API.<\/p>\n<h4>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440<\/h4>\n<p>\u0412\u043e\u0437\u0432\u0435\u0434\u0435\u043c \u0438\u0434\u0435\u044e \u0444\u043e\u0440\u043c\u043e\u0447\u0435\u043a \u0441 \u0446\u0432\u0435\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0438\u0434\u044f\u0442 \u0432 Visual Studio Code, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044f \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c CSS \u0446\u0432\u0435\u0442\u0430<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/365\/d67\/a8d\/365d67a8dfdf9a34504fb721a945e453.png\" alt=\"\u0425\u043b\u0435\u0431 \u0441 \u043c\u0430\u0441\u043b\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435\u0440\u0430\" title=\"\u0425\u043b\u0435\u0431 \u0441 \u043c\u0430\u0441\u043b\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435\u0440\u0430\" width=\"311\" height=\"118\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/365\/d67\/a8d\/365d67a8dfdf9a34504fb721a945e453.png\"\/><\/p>\n<div><figcaption>\u0425\u043b\u0435\u0431 \u0441 \u043c\u0430\u0441\u043b\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0432 <strong>\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c<\/strong> \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c<\/p>\n<pre><code class=\"haskell\">Graphics3D[Sphere[]] % \/. Sphere -> Cuboid<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/39f\/3b5\/89d\/39f3b589df8092732897b435a4761336.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430, \u0434\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0434\u043e 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430, \u0434\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0434\u043e 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438\" width=\"414\" height=\"402\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/39f\/3b5\/89d\/39f3b589df8092732897b435a4761336.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430, \u0434\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0434\u043e 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0430\u043c \u0433\u0440\u0430\u0444\u0438\u043a \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b &#8212; \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041a\u043e\u0433\u0434\u0430 \u043e\u043d \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 &#8212; \u044d\u0442\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u0410 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u0443\u0431 &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e <strong>\u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0439<\/strong>.<\/p>\n<h4>\u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 &#8212; \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b<\/h4>\n<p>\u042f \u043d\u0435 \u0437\u043d\u0430\u044e \u043f\u043e\u0447\u0435\u043c\u0443, \u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442 \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f1f\/154\/619\/f1f1546194729e819437f9f1f35a9ef1.png\" alt=\"ObservableHQ. \u0412\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430\" title=\"ObservableHQ. \u0412\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430\" width=\"416\" height=\"163\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f1f\/154\/619\/f1f1546194729e819437f9f1f35a9ef1.png\"\/><\/p>\n<div><figcaption>ObservableHQ. \u0412\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/77c\/622\/ad5\/77c622ad5aaa5de1ffdffdf8c15e5afb.png\" alt=\"Jupyter Notebook. \u041d\u0443 \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043e\u043d\u043e \u0432\u044b\u0432\u0435\u043b\u043e, \u0443\u0436\u0435 \u043f\u043b\u044e\u0441.\" title=\"Jupyter Notebook. \u041d\u0443 \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043e\u043d\u043e \u0432\u044b\u0432\u0435\u043b\u043e, \u0443\u0436\u0435 \u043f\u043b\u044e\u0441.\" width=\"629\" height=\"185\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/77c\/622\/ad5\/77c622ad5aaa5de1ffdffdf8c15e5afb.png\"\/><\/p>\n<div><figcaption>Jupyter Notebook. \u041d\u0443 \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043e\u043d\u043e \u0432\u044b\u0432\u0435\u043b\u043e, \u0443\u0436\u0435 \u043f\u043b\u044e\u0441.<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 &#8212; \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445? <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043d\u0430 \u0431\u043b\u0430\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0430\u043b\u043e.<\/p>\n<h4>\u0414\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0432\u043e\u0434<\/h4>\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u044f\u0432\u043d\u043e \u043f\u0440\u0435\u0434\u0432\u0437\u044f\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0444\u0438\u0437\u0438\u043a\u043e\u043c-\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a\u043e\u043c. \u0427\u0442\u043e \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435?<\/p>\n<pre><code>1\/Sqrt[2]<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{1}{\\sqrt{2}}\" alt=\"\\frac{1}{\\sqrt{2}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/512\/a30\/fb4\/512a30fb4ad767e1038f1427f57a637f.svg\" width=\"33\" height=\"51\"\/><\/p>\n<p>\u0412 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0425\u0430\u0431\u0440\u0430 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0438\u043a\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 LaTeX, &#8212; \u044d\u0442\u043e \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0435\u0441\u043b\u0438 \u043e\u0431\u043e\u0431\u0449\u0438\u0442\u044c \u044d\u0442\u043e, \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0417\u0430\u0447\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c<\/h2>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u0432\u0435\u0434\u044c \u0440\u044b\u043d\u043e\u043a \u0443\u0436\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 WRI. \u0412\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438<\/p>\n<ul>\n<li>\n<p>Wolfram Mathematica<\/p>\n<ul>\n<li>\n<p><s>\u041f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\/\u0441\u0440\u0435\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\/\u0430\u044f \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0440\u043e\u0433\u043e<\/s><\/p>\n<\/li>\n<li>\n<p><strong>\u0422\u044f\u0436\u0435\u043b\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/strong> (\u0432 \u043f\u043b\u0430\u043d\u0435 \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0441\u0442\u0438), \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 UI (<strong>\u043a\u0440\u0430\u0448<\/strong>, <strong>\u0444\u0440\u0438\u0437<\/strong> \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0434\u0435\u043b\u043e)<\/p>\n<\/li>\n<li>\n<p>\u041a\u043b\u0438\u0435\u043d\u0442 \u0438 \u0441\u0440\u0435\u0434\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u044b, \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u0435\u0441\u0442\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\/\u0442\u043e\u0441\u0442\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435\u043b\u044c\u0437\u044f \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430\u043c\u0438 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438<\/strong><\/p>\n<\/li>\n<li>\n<p>\u041a\u0440\u0438\u0432\u043e\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 PDF \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438\/\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u043b\u044c\u0437\u044f \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u043d\u0430 \u0441\u0430\u0439\u0442\/\u0431\u043b\u043e\u0433<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Wolfram Cloud<\/p>\n<ul>\n<li>\n<p><strong>\u0422\u044f\u0436\u0435\u043b\u044b\u0439 \u0438 \u0442\u043e\u0440\u043c\u043e\u0437\u043d\u043e\u0439 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434<\/strong>, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0437\u0430\u0434\u044b\u0445\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u0434\u0430\u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u044f\u0447\u0435\u0435\u043a. \u041d\u0435\u043b\u044c\u0437\u044f \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 3-5 \u044f\u0447\u0435\u0435\u043a \u0432\u043d\u0443\u0442\u0440\u044c \u0431\u043b\u043e\u0433\u0430\/\u0441\u0430\u0439\u0442\u0430 \u043a\u0430\u043a iframe.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c: \u043b\u0438\u0431\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430, \u043b\u0438\u0431\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430<\/strong><\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u044b\u043a\u0432\u0443 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 WRI (Wolfram Research Inc)<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u041d\u0435\u0443\u0436\u0435\u043b\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 &#171;\u0445\u043e\u0440\u043e\u0448\u043e&#187;. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 Jupyter Notebook, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443. \u0422\u0430\u043c \u043d\u0435\u0442 \u044d\u0442\u0438\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432, \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f \u0432 \u0435\u0434\u0438\u043d\u044b\u0439 HTML \u0444\u0430\u0439\u043b<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/736\/23d\/d7d\/73623dd7d88f2d132bc8d1996982a75b.png\" alt=\"HTML \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 Jupyter. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 JupyterLab \u0441\u043b\u043e\u043c\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 ;)\" title=\"HTML \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 Jupyter. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 JupyterLab \u0441\u043b\u043e\u043c\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 ;)\" width=\"1024\" height=\"477\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/736\/23d\/d7d\/73623dd7d88f2d132bc8d1996982a75b.png\"\/><\/p>\n<div><figcaption>HTML \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 Jupyter. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/www.blog.pythonlibrary.org\/2018\/10\/09\/how-to-export-jupyter-notebooks-into-other-formats\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043e<\/a>, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 JupyterLab \u0441\u043b\u043e\u043c\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \ud83d\ude09<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u0430 \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u043b\u0435\u0433\u043a\u043e\u0441\u0442\u044c \u0437\u0430\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0430. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 Observable, \u0433\u0434\u0435 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u043e\u0439, \u0447\u0435\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432 Jupyter<\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9cb\/c24\/8d0\/9cbc248d07eaa372ac8948aa0e45b71f.gif\" alt=\"Curve Fitting. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043b\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0444\u043e\u0440\u043c \u0432\u0432\u043e\u0434\u0430 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438.\" title=\"Curve Fitting. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043b\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0444\u043e\u0440\u043c \u0432\u0432\u043e\u0434\u0430 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438.\" width=\"600\" height=\"565\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9cb\/c24\/8d0\/9cbc248d07eaa372ac8948aa0e45b71f.gif\"\/><\/p>\n<div><figcaption>Curve Fitting. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043b\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0444\u043e\u0440\u043c \u0432\u0432\u043e\u0434\u0430 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438.<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c Observable &#8212; \u043b\u044e\u0431\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439. \u042d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0431\u044b \u0432 Wolfram Mathematica \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u0431\u044b\u043b \u0432\u043d\u0443\u0442\u0440\u0438<code>DynamicModule<\/code>.<\/p>\n<h2>\u0422\u0435\u0440\u043d\u0438\u0441\u0442\u044b\u0439 \u043f\u0443\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h2>\n<blockquote>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0433\u043b\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043f\u043e\u0440\u0438\u0442: \u0425\u0430\u0431\u0440 &#8212; \u0442\u043e\u0440\u0442, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435.<\/p>\n<\/blockquote>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.<\/p>\n<h3>WebGUI \u043a \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/h3>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <a href=\"https:\/\/www.wolfram.com\/engine\/\" rel=\"noopener noreferrer nofollow\">Wolfram Engine<\/a> &#8212; \u044d\u0442\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0435 <code>stdin<\/code>\/<code>stdout <\/code>\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0441\u043e\u043a\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u0430\u0440\u043e\u0447\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f OpenCL \u0438 CUDA \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439. \u041f\u0440\u0438\u043c\u0435\u0440 Jupyter \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e HTTP \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 WebSockets \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 TCP-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0440\u0443\u0442\u043e. \u0415\u0441\u0442\u044c \u043b\u0438 HTTP \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f Wolfram Language?..<\/p>\n<p>\u041d\u0435\u0442, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u042d\u0442\u0430 <strong>\u0433\u0435\u0440\u043e\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430<\/strong> \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430 \u0441 \u043d\u0443\u043b\u044f <a class=\"mention\" href=\"\/users\/kirillbelovtest\">@KirillBelovTest<\/a>. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/community.wolfram.com\/groups\/-\/m\/t\/3002947\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0440\u0438\u0447\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u043e \u0438 \u043f\u0440\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 (sockets), \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438\u043c \u0436\u0435 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c \u0421\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u043d\u0438\u044e \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0441\u0430 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u0431\u0430 \u0431\u043b\u043e\u043a\u043e\u0432<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e90\/49e\/fff\/e9049efff11974a08b28126e53722e48.png\" alt=\"\u0411\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430\" title=\"\u0411\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430\" width=\"1014\" height=\"298\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e90\/49e\/fff\/e9049efff11974a08b28126e53722e48.png\"\/><\/p>\n<div><figcaption>\u0411\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b <a href=\"https:\/\/github.com\/JerryI\/wl-wsp\" rel=\"noopener noreferrer nofollow\"><strong>WSP<\/strong><\/a> (Wolfram Script Pages) \u043a\u0430\u043a PHP-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Wolfram Language. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u0449\u0435\u043d \u0435\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u043e\u043c <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/wlx\" rel=\"noopener noreferrer nofollow\"><strong>WLX<\/strong><\/a> (Wolfram Language XML), \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c JSX.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c <\/p>\n<pre><code class=\"haskell\">(* package manager to make sure you will get the right version *) PacletInstall[\"JerryI\/LPM\"]; &lt;&lt; JerryI`LPM`  PacletRepositories[{     Github -> \"https:\/\/github.com\/KirillBelovTest\/Objects\",     Github -> \"https:\/\/github.com\/KirillBelovTest\/Internal\",     Github -> \"https:\/\/github.com\/JerryI\/CSocketListener\",     Github -> \"https:\/\/github.com\/KirillBelovTest\/TCPServer\",     Github -> \"https:\/\/github.com\/KirillBelovTest\/HTTPHandler\",     Github -> \"https:\/\/github.com\/KirillBelovTest\/WebSocketHandler\",     Github -> \"https:\/\/github.com\/JerryI\/wl-misc\",     Github -> \"https:\/\/github.com\/JerryI\/wl-wlx\" }]  (* packages for HTTP server *) &lt;&lt;KirillBelov`Objects` &lt;&lt;KirillBelov`Internal` &lt;&lt;KirillBelov`CSockets` &lt;&lt;KirillBelov`TCPServer` &lt;&lt;KirillBelov`HTTPHandler` &lt;&lt;KirillBelov`HTTPHandler`Extensions`  (* WLX scripts *) &lt;&lt;JerryI`WLX` &lt;&lt;JerryI`WLX`Importer` &lt;&lt;JerryI`WLX`WLJS`  (* setting the directory of the project *) SetDirectory[If[StringQ[NotebookDirectory[]], NotebookDirectory[], DirectoryName[$InputFileName]]]  Print[\"Staring HTTP server...\"];  tcp = TCPServer[]; tcp[\"CompleteHandler\", \"HTTP\"] = HTTPPacketQ -> HTTPPacketLength; tcp[\"MessageHandler\", \"HTTP\"] = HTTPPacketQ -> http;  (* main app file *) index := ImportComponent[\"index.wlx\"];  http = HTTPHandler[]; http[\"MessageHandler\", \"Index\"] = AssocMatchQ[&lt;|\"Method\" -> \"GET\"|>] -> Function[x, index[x]]  SocketListen[CSocketOpen[\"127.0.0.1:8010\"], tcp@# &amp;];  StringTemplate[\"open http:\/\/``:``\/\"][httplistener[[1]][\"Host\"], httplistener[[1]][\"Port\"]] \/\/ Print;  While[True, Pause[1]];<\/code><\/pre>\n<p>\u0433\u0434\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430<\/p>\n<p><strong>index.wlx<\/strong><\/p>\n<pre><code class=\"xml\">Main = ImportComponent[\"main.wlx\"]; &lt;Main Request={$FirstChild}\/><\/code><\/pre>\n<p>\u0410 \u0442\u0430\u043a\u0436\u0435 \u0444\u0430\u0439\u043b \u0441 \u0441\u0430\u043c\u0438\u043c &#171;\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c&#187;<\/p>\n<p><strong>main.wlx<\/strong><\/p>\n<pre><code class=\"xml\">(* \/* HTML Page *\/ *)  &lt;html>      &lt;head>         &lt;title>WLX Template&lt;\/title>         &lt;link href=\"https:\/\/unpkg.com\/tailwindcss@^1.0\/dist\/tailwind.min.css\" rel=\"stylesheet\"\/>                &lt;\/head>       &lt;body>          &lt;div class=\"min-h-full\">             &lt;header class=\"bg-white shadow\">                 &lt;div class=\"flex items-center mx-auto max-w-7xl px-4 py-6 sm:px-6 lg:px-8\">                     &lt;h1 class=\"text-3xl font-bold tracking-tight text-gray-900\">Title&lt;\/h1>                 &lt;\/div>             &lt;\/header>             &lt;main>                 &lt;div class=\"mx-auto max-w-7xl py-6 sm:px-6 lg:px-8\">                     Local time &lt;TextString>&lt;Now\/>&lt;\/TextString>                 &lt;\/div>             &lt;\/main>         &lt;\/div>     &lt;\/body> &lt;\/html><\/code><\/pre>\n<p>\u0417\u0430\u0439\u0434\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 <a href=\"http:\/\/127.0.0.1:8010\" rel=\"noopener noreferrer nofollow\">127.0.0.1:8010<\/a>, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2bd\/374\/829\/2bd3748297d4e8c54831ccdf0e68f58e.png\" alt=\"\u0421\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Wolfram Engine\" title=\"\u0421\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Wolfram Engine\" width=\"686\" height=\"416\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2bd\/374\/829\/2bd3748297d4e8c54831ccdf0e68f58e.png\"\/><\/p>\n<div><figcaption>\u0421\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/community.wolfram.com\/groups\/-\/m\/t\/3002947\" rel=\"noopener noreferrer nofollow\">\u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/a> \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Wolfram Engine<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439  \u043e\u0431\u044b\u0447\u043d\u044b\u0435 HTML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u0442\u0435\u0433\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b, \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 Wolfram Language<\/p>\n<pre><code class=\"xml\">&lt;TextString>&lt;Now\/>&lt;\/TextString><\/code><\/pre>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 &#171;\u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f&#187;. \u0414\u0430\u043b\u0435\u0435 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0442\u044f\u043d\u0435\u0442 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e. <\/p>\n<h3>\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 Wolfram \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435<\/h3>\n<p>\u0417\u0430\u0447\u0435\u043c? \u041e\u043d \u0436\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c!<\/p>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u043b 300$ WRI. \u041e\u0442\u043a\u0440\u043e\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0432\u0432\u0435\u0434\u0435\u043c <code>wolframscript<\/code>, \u0437\u0430\u0442\u0435\u043c<\/p>\n<pre><code class=\"haskell\">Plot[x, {x,0,1}]<\/code><\/pre>\n<p>\u0438 \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435<\/p>\n<pre><code>- Graphics -<\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 <\/p>\n<pre><code class=\"haskell\">ExportString[Plot[x, {x,0,1}], \"ExpressionJSON\"]<\/code><\/pre>\n<pre><code class=\"json\">[    \"Graphics\",    [       \"Line\",       [          \"List\",          [             \"List\",             2.040816326530612e-8,             2.040816326530612e-8          ],          [             \"List\",             3.0671792055962676e-4,             3.0671792055962676e-4          ],<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043d\u0438 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a &#171;\u0440\u0435\u0446\u0435\u043f\u0442&#187; \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u044e\u0434\u0430. \u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 <strong>\u043f\u043e\u0432\u0430\u0440\u0430<\/strong>, \u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u041a\u0430\u043a \u0438 \u043d\u0430 \u0447\u0435\u043c? \u041a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0444\u0430\u043a\u0442\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 WebGUI<\/p>\n<pre><code class=\"javascript\">\/\/\u043d\u0430\u0431\u043e\u0440 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 const core = {};  \/\/\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 const interpretate = (expr, env = {}) => {    if (typeof expr === 'string') return expr; \/\/\u0441\u0442\u0440\u043e\u043a\u0430   if (typeof expr === 'number') return expr; \/\/\u0447\u0438\u0441\u043b\u043e    \/\/\u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 WL   const args = expr.slice(1);    return core[expr[0]](args, env); }<\/code><\/pre>\n<p>\u041e\u043a\u0435\u0439, \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>List<\/code>. \u042f \u0434\u0443\u043c\u0430\u044e, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u044f\u0441\u043d\u044b\u043c \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439<\/p>\n<pre><code class=\"javascript\">\/\/async \u044d\u0442\u043e \u043a\u0440\u0443\u0442\u043e! core.List = async (args, env) => {   const list = [];   const copy = {...env};      for (const i of args) {     \/\/\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 WL \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 list     \/\/env \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0433\u043b\u0443\u0431\u043e\u043a\u0430\u044f \u043a\u043e\u043f\u0438\u044f, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0435\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u043b\u0438 \u043d\u0430 \u043e\u0431\u0437\u0435\u043a\u0442\u044b \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0441\u043f\u0438\u0441\u043a\u0430     list.push(await interpretate(i, copy));   }    return list; }<\/code><\/pre>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e? \u041f\u043e\u043a\u0430\u0436\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <code>List<\/code><\/p>\n<pre><code class=\"java\">Graphics[{Red, Point[{-0.5,0}], {Green, Point[{0,0}]}, Point[{0.5, 0}]}]<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/753\/f22\/d06\/753f22d06b83d945fd01bcbfb214f87a.png\" alt=\"\u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u0442\u043e\u0447\u043a\u0438, \u043e\u0434\u043d\u0430 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0437\u0435\u043b\u0435\u043d\u043e\u0439\" title=\"\u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u0442\u043e\u0447\u043a\u0438, \u043e\u0434\u043d\u0430 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0437\u0435\u043b\u0435\u043d\u043e\u0439\" width=\"593\" height=\"93\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/753\/f22\/d06\/753f22d06b83d945fd01bcbfb214f87a.png\"\/><\/p>\n<div><figcaption>\u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u0442\u043e\u0447\u043a\u0438, \u043e\u0434\u043d\u0430 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0437\u0435\u043b\u0435\u043d\u043e\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e <code>{}<\/code> \u0438\u043b\u0438 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 <code>List[]<\/code> \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u0435\u0442 &#171;shared&#187; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0440\u0435\u0434\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 JS \u043c\u044b \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>env<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043e\u043f\u0446\u0438\u0438, \u043a\u0430\u043a \u0446\u0432\u0435\u0442, \u0442\u043e\u043b\u0449\u0438\u043d\u0430, \u0434\u0430 \u0438 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e.<\/p>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c <code>Line<\/code>, <code>RGBColor<\/code>, \u0441\u0430\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>Graphics<\/code> \u0438 \u043c\u044b \u0443\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d <a href=\"https:\/\/github.com\/JerryI\/wljs-interpreter\/blob\/main\/src\/core.js\" rel=\"noopener noreferrer nofollow\"><strong>\u0437\u0434\u0435\u0441\u044c<\/strong><\/a>, \u043e\u0434\u043d\u0430\u043a\u043e \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e-\u044f\u0437\u044b\u043a\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c<\/p>\n<pre><code class=\"javascript\">core.Line = async (args, env) => {   const data = await interpretate(args, env);    env.canvas.putLine(data, env.color);   return null; }  core.RGBColor = async (args, env) => {   const color = await interpretate(args, env);      env.color = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; }<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/56e\/e55\/c54\/56ee55c547642b4b5abcb460d5699ede.png\" alt=\"\u0422\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b\" title=\"\u0422\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b\" width=\"716\" height=\"432\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56e\/e55\/c54\/56ee55c547642b4b5abcb460d5699ede.png\"\/><\/p>\n<div><figcaption>\u0422\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c, \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438 \u0431\u0435\u0433\u0430\u0442\u044c \u043f\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0432\u0435\u0442\u043a\u0435 \u0434\u0440\u0435\u0432\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0439 \u0438 \u0442.\u0434., \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/64f\/81b\/76c\/64f81b76c34b4b1deb6aa6ade86401a6.gif\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e(\u043e\u0439) \u0433\u0440\u0430\u0444\u0438\u043a\u0430(\u043a\u0438) \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 WLJS\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e(\u043e\u0439) \u0433\u0440\u0430\u0444\u0438\u043a\u0430(\u043a\u0438) \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 WLJS\" width=\"480\" height=\"294\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/64f\/81b\/76c\/64f81b76c34b4b1deb6aa6ade86401a6.gif\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e(\u043e\u0439) \u0433\u0440\u0430\u0444\u0438\u043a\u0430(\u043a\u0438) \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 WLJS<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0430\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044f\u0434\u0440\u043e <strong>Wolfram<\/strong> \u0437\u0434\u0435\u0441\u044c \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043e\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0439\u0441\u044f \u0432 <code>Plot<\/code>. \u0416\u0438\u0432\u0443\u044e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u0435\u0441\u043b\u0438 \u043d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c\u0438, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441 <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/docs\/interpreter\/intro\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439<\/a>.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 THREE.js, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438<\/p>\n<pre><code class=\"haskell\">VectorPlot3D[{x, y, z}, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}, VectorColorFunction -> Function[{x, y, z, vx, vy, vz, n}, ColorData[\"ThermometerColors\"][x]]][[1]]; %\/. {RGBColor[r_,g_,b_] :> Sequence[RGBColor[r\/50,g\/50,b\/50], Emissive[RGBColor[r,g,b], 5]],};  Graphics3D[{%, Roughness[0], Sphere[{0,0,0}, 0.9]}, Lighting->None, RTX->True]<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0e4\/7bb\/015\/0e47bb01584e91debbf5871ab62a6fef.png\" alt=\"\u041a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 VectorPlot\" title=\"\u041a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 VectorPlot\" width=\"600\" height=\"370\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e4\/7bb\/015\/0e47bb01584e91debbf5871ab62a6fef.png\"\/><\/p>\n<div><figcaption>\u041a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 VectorPlot<\/figcaption><\/div>\n<\/figure>\n<pre><code class=\"haskell\">Graphics3D[{   Blue, Cylinder[],    Red, Sphere[{0, 0, 2}],   Yellow, Polygon[{{-3, -3, -2}, {-3, 3, -2}, {3, 3, -2}, {3, -3, -2}}] }]<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/85e\/56d\/e6c\/85e56de6cbd53a1a387f0043e7062943.png\" alt=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 Mathematica, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0432 WLJS\" title=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 Mathematica, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0432 WLJS\" width=\"600\" height=\"370\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/85e\/56d\/e6c\/85e56de6cbd53a1a387f0043e7062943.png\"\/><\/p>\n<div><figcaption>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 Mathematica, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0432 WLJS<\/figcaption><\/div>\n<\/figure>\n<h3>\u041a\u0430\u043a \u0441\u0432\u044f\u0437\u0430\u0442\u044c Wolfram Kernel \u0438 Javascript \u043c\u0430\u0448\u0438\u043d\u0443?<\/h3>\n<p>\u041d\u0443\u0436\u0435\u043d \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430, \u043d\u0443\u0436\u0435\u043d API. <\/p>\n<p>\u041c\u043d\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 API, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0441 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c \u0443 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u042f \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e \u043b\u0435\u0433\u043a\u043e\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u043e \u043d\u0435\u043b\u043e\u0432\u043a\u043e\u0441\u0442\u0438, \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044f \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435<\/p>\n<pre><code class=\"javascript\">\/\/\u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435\/\u043a\u043b\u0438\u0435\u043d\u0442\u0435 switch(command) {     'ping':       printf('Pong!');     break;     ... }  \/\/\u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435\/\u0441\u0435\u0440\u0432\u0435\u0440\u0435 send({command: 'ping', payload: []});<\/code><\/pre>\n<p>\u042f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0443\u0442\u0440\u0438\u0440\u0443\u044e, \u043d\u043e \u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043f\u043b\u043e\u0445\u043e\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 Wolfram Language. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0435\u0431\u0441\u043e\u043a\u0435\u0442\u044b \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u0432\u0435\u0440\u043d\u043e?<\/p>\n<pre><code class=\"haskell\">(* \u0441\u0435\u0440\u0432\u0435\u0440 *)  serialize = ExportString[#, \"ExpressionJSON\"]&amp;; WebSocketSend[client, Alert[\"Hello world!\"] \/\/ serialize]<\/code><\/pre>\n<pre><code class=\"javascript\">\/* \u043a\u043b\u0438\u0435\u043d\u0442 *\/ const Socket = new WebSocket(\"ws:\/\/127.0.0.1:port\"); Socket.onmessage = function (event) {   interpretate(JSON.parse(event.data)); };  \/\/\u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0443\u0436\u043d\u0430\u044f \u043d\u0430 \u0444\u0440\u043e\u0435\u043d\u0442\u0435\u043d\u0434\u0435 core.Alert = async (args, env) => {   const text = await interpretate(args[0], env);   alert(text); } <\/code><\/pre>\n<p>\u0420\u0430\u0437\u0432\u0435 \u043d\u0435 \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c? \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0437\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u0441 UI \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u044f\u0437\u044b\u043a\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044f\u0434\u0440\u043e. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0446\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044f\u0447\u0435\u0435\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430, \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0438 \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/p>\n<pre><code class=\"haskell\">FrontEndCreateCell[...] FrontEndDeleteCell[...] FrontEndEvaluate[...] ...<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c JSON, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 JS \u043f\u043e \u043a\u0430\u043d\u0430\u043b\u0443 \u0432\u0435\u0431-\u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Wolfram Kernel \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435<\/p>\n<pre><code class=\"haskell\">ImportString[input, \"JSON\"] \/\/ HandlerFunction<\/code><\/pre>\n<p>\u043b\u0438\u0431\u043e \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043c\u0438\u043d\u0443\u044f JSON<\/p>\n<pre><code class=\"haskell\">input \/\/ ToExpression<\/code><\/pre>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0441\u043a\u0430\u0436\u0443\u0442 \u0411\u0415\u0417\u041e\u041f\u0410\u0421\u041d\u041e\u0421\u0422\u042c, \u043e\u0434\u043d\u0430\u043a\u043e, \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u043d\u0435 \u0432\u0440\u0435\u0434\u043d\u0435\u0435, \u0447\u0435\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442\u044c \u0436\u0438\u0442\u044c \u0443 \u0441\u0435\u0431\u044f NodeJS \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0441, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\/\u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043b\u044e\u0431\u043e\u0433\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.<\/p>\n<h3>\u0415\u0433\u043e \u0432\u0435\u043b\u0438\u0447\u0438\u0435 &#8212; \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440<\/h3>\n<p>\u042d\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0443\u0442\u044c \u043b\u0438 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441\u0435\u0440\u0434\u0446\u0435 \u043b\u044e\u0431\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0421\u0430\u043c\u044b\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043f\u043e\u0447\u0442\u0438 \u043b\u044e\u0431\u044b\u043c JS \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0434\u0430:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 (\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043b\u044e\u0431\u043e\u0433\u043e)<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430\u0445, \u0442\u0430\u043a \u0438 \u0432 Vim<\/p>\n<\/li>\n<li>\n<p>\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043b\u0435\u0433\u043a\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043f\u0440\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a &#171;\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438&#187; \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u044f\u0447\u0435\u0435\u043a.<\/p>\n<h4>\u041a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0434\u0430?<\/h4>\n<p>\u0414\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0442 \u0431\u044b\u043b \u0432\u0432\u0435\u0434\u0435\u043d \u0435\u0449\u0435 \u0434\u0430\u0432\u043d\u043e \u0434\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f JS \u0438 \u0432\u0435\u0431-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u043a\u043e\u0434\u0430, \u043d\u043e \u0432 \u043f\u043e\u043b\u043d\u043e\u0439 \u043c\u0435\u0440\u0435 \u0432\u043e\u043f\u043b\u043e\u0449\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <a href=\"https:\/\/codemirror.net\" rel=\"noopener noreferrer nofollow\">CodeMirror 6<\/a>. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<pre><code class=\"javascript\">\/\/\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0449\u0435\u0442\u0441\u044f \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f const ExecutableMatcher = (ref) => { return new MatchDecorator({   regexp: \/FrontEndExecutable\\[\"([^\"]+)\"\\]\/g,   decoration: match => Decoration.replace({     widget: new ExecutableWidget(match[1], ref),   }) }) };  \/\/\u0441\u0430\u043c \u0432\u0438\u0434\u0436\u0435\u0442 class ExecutableWidget extends WidgetType {   constructor(name, ref) {     super();     this.ref = ref;     this.name = name;   }   eq(other) {     return this.name === other.name;   }   \/\/\u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442   toDOM() {     let elt = document.createElement(\"div\");      \/\/\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0435\u0433\u043e     this.fobj = new ExecutableObject(this.name, elt);     this.fobj.execute()           this.ref.push(this.fobj);      return elt;   }   ignoreEvent() {     return true;    }   destroy() {   } }<\/code><\/pre>\n<p>\u042d\u0442\u043e, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435, <a href=\"https:\/\/codemirror.net\/examples\/decoration\/\" rel=\"noopener noreferrer nofollow\">ReplacingDecorations<\/a>. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0434 \u043d\u0438\u043c\u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u043c, \u0430 \u0434\u0435\u043a\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0437\u0430\u043d\u0438\u043c\u0430\u044f \u043c\u0435\u0441\u0442\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0434\u043b\u044f \u043a\u0430\u0440\u0435\u0442\u043a\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u0430\u043a \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435-&#171;\u043a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430&#187; <code>FrontEndExecutable[\"id\"]<\/code> \u0441 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 JSON, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0446\u0435\u043f\u0442 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c4a\/360\/95b\/c4a36095b6767ecca1ab1335cd38d3fe.png\" alt=\"\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0435\u043b\u0435\u0441\u0442\u044c\" title=\"\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0435\u043b\u0435\u0441\u0442\u044c\" width=\"816\" height=\"135\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c4a\/360\/95b\/c4a36095b6767ecca1ab1335cd38d3fe.png\"\/><\/p>\n<div><figcaption>\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0435\u043b\u0435\u0441\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 JSON.<\/p>\n<p>\u041d\u0435 \u043f\u0443\u0433\u0430\u0439\u0442\u0435\u0441\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043f\u043e\u0437\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 CodeSandbox, \u0433\u0434\u0435 \u044d\u0442\u0438 \u0438\u0433\u0440\u044b \u0441 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c CodeMirror \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0438\u043c.<\/p>\n<h4>\u0427\u0442\u043e \u043d\u0430\u0441\u0447\u0435\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439?<\/h4>\n<p>\u0413\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0434\u0440\u043e\u0431\u044c? \u0410 \u0434\u0440\u043e\u0431\u044c \u0432 \u0434\u0440\u043e\u0431\u0438 \u0432 \u0434\u0440\u043e\u0431\u0438 &#8230; \u042f \u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{1}{\\sqrt{2}}\" alt=\"\\frac{1}{\\sqrt{2}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dca\/de1\/11c\/dcade111c512949d301b2ec50e7c1537.svg\" width=\"33\" height=\"51\"\/><\/p>\n<p>\u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e &#171;\u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c&#187;<\/p>\n<pre><code class=\"haskell\">CMFraction[1, CMSqrt[6]]<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u044d\u0442\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043a\u0430\u043a<\/p>\n<ul>\n<li>\n<p>Editor<\/p>\n<ul>\n<li>\n<p>CMFraction<\/p>\n<ul>\n<li>\n<p>Editor<\/p>\n<\/li>\n<li>\n<p>CMSqrt<\/p>\n<ul>\n<li>\n<p>Editor<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u0447\u0435\u043c \u0442\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e Editor &#8212; \u044f \u0445\u043e\u0442\u0435\u043b \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c \u0438 \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u044c \u0434\u0440\u043e\u0431\u0438, \u043a\u0430\u043a \u0438 \u044f\u0447\u0435\u0439\u043a\u0430 \u043f\u043e\u0434 \u043a\u043e\u0440\u043d\u0435\u043c, \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c\u0438 \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u043a\u0430\u043a \u0438 &#171;\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439&#187; \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/032\/d00\/53d\/032d0053d55632fbc240dbef029069ff.png\" alt=\"\u041d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e, \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0441\u043b\u0435\u0433\u043a\u0430 \u0433\u0443\u043b\u044f\u0435\u0442 \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\" title=\"\u041d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e, \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0441\u043b\u0435\u0433\u043a\u0430 \u0433\u0443\u043b\u044f\u0435\u0442 \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\" width=\"812\" height=\"68\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/032\/d00\/53d\/032d0053d55632fbc240dbef029069ff.png\"\/><\/p>\n<div><figcaption>\u041d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e, \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0441\u043b\u0435\u0433\u043a\u0430 \u0433\u0443\u043b\u044f\u0435\u0442 \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0442\u043e\u0433\u043e \u043d\u0430 \u0442\u0430\u043a\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c 3 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 CodeMirror 6. \u0427\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e. \u0410 \u0447\u0442\u043e \u043d\u0430 \u0441\u0447\u0435\u0442 \u043c\u0430\u0442\u0440\u0438\u0446?<\/p>\n<pre><code class=\"haskell\">CMGrid[{{1,0,0}, {0,1,0}, {0,0,1}}]<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/341\/8f6\/34c\/3418f634c89c80ff9924ecfc16b0dd26.png\" alt=\"\u0422\u043e, \u043a\u0430\u043a \u043e\u043d\u043e \u0432\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0436\u0438\u0432\u0443\u044e\" title=\"\u0422\u043e, \u043a\u0430\u043a \u043e\u043d\u043e \u0432\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0436\u0438\u0432\u0443\u044e\" width=\"808\" height=\"111\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/341\/8f6\/34c\/3418f634c89c80ff9924ecfc16b0dd26.png\"\/><\/p>\n<div><figcaption>\u0422\u043e, \u043a\u0430\u043a \u043e\u043d\u043e \u0432\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0436\u0438\u0432\u0443\u044e<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0442\u043e\u0433\u043e 10 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432! \u0425\u043e\u0442\u0438\u0442\u0435 26? \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<pre><code class=\"haskell\">Table[If[PrimeQ[i], Framed[i, Background->Yellow], i], {i, 1, 100}]<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0441\u043e <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/docs\/frontend\/Reference\/Decorations\/Framed\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a>, \u0433\u0434\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0436\u0438\u0432\u0443\u044e<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a25\/0ce\/e65\/a250cee65909ce3b60d8a3af15763d9a.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 26 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430 CodeMirror 6\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 26 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430 CodeMirror 6\" width=\"928\" height=\"100\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a25\/0ce\/e65\/a250cee65909ce3b60d8a3af15763d9a.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 26 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430 CodeMirror 6<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0447\u0438\u0441\u043b\u043e \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e 50-100, \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0443\u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0432\u0430\u0440\u0438\u0432\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430\u0445.<\/p>\n<p>\u042f \u043e\u0444\u043e\u0440\u043c\u0438\u043b \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 <a href=\"https:\/\/github.com\/JerryI\/codemirror6-mathematica-sugar\/tree\/main\" rel=\"noopener noreferrer nofollow\">NPM \u043f\u0430\u043a\u0435\u0442<\/a>, \u0442\u0430\u043a \u043b\u044e\u0434\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0441 Wolfram Language \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430. <a href=\"https:\/\/codesandbox.io\/s\/priceless-mathematica-jrhlq3\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430<\/a> \u043d\u0430 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443.<\/p>\n<blockquote>\n<p>\u0432 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f  <code>Ctrl+-<\/code>, <code>Ctrl+\/<\/code> \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0443\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0438 \u0434\u0440\u043e\u0431\u044c, \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<\/blockquote>\n<h3>\u041f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0438 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0443\u0436\u0435 &#171;\u0436\u0438\u0432\u0443\u0442&#187; \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0437\u043d\u0430\u0447\u0438\u0442, \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 \u0432 HTML \u0444\u0430\u0439\u043b \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0435\u043a\u0446\u0438\u044f\u0445 \u043c\u044b \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0431-\u0441\u043e\u043a\u0435\u0442\u044b \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 \u0432\u0440\u043e\u0434\u0435<\/p>\n<pre><code class=\"haskell\">commands = {   FrontEndCreateCell[...],   FrontEndCreateCell[...],   ... };<\/code><\/pre>\n<p>\u0438 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Javascript \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 HTML-\u0444\u0430\u0439\u043b\u0430, \u0442\u043e \u044d\u0444\u0444\u0435\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u0438 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0435. \u0412\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043c\u043e\u0436\u043d\u043e &#171;\u0443\u0442\u0430\u0449\u0438\u0442\u044c&#187; \u0442\u0443\u0434\u0430 \u0436\u0435.<\/p>\n<p>\u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/docs\/frontend\/Tutorial\/Dynamics\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/a><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a82\/d80\/89d\/a82d8089d5be99fb3445212829db96e4.gif\" alt=\"\u041f\u0441\u0435\u0432\u0434\u043e\u0436\u0438\u0432\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\" title=\"\u041f\u0441\u0435\u0432\u0434\u043e\u0436\u0438\u0432\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\" width=\"600\" height=\"262\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a82\/d80\/89d\/a82d8089d5be99fb3445212829db96e4.gif\"\/><\/p>\n<div><figcaption>\u041f\u0441\u0435\u0432\u0434\u043e\u0436\u0438\u0432\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0430\u043c \u0444\u0430\u043a\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 &#171;\u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f&#187; \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 Wolfram Language, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c, \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 Wolfram Engine.<\/p>\n<p><a class=\"anchor\" name=\"jakor\" id=\"jakor\"><\/a><\/p>\n<h2>Open-source \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Wolfram Language<\/h2>\n<p>\u0412 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u043d \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c WLJS Frontend. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a? \u042d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0432\u0430\u0436\u043d\u043e.<\/p>\n<blockquote>\n<p><a href=\"https:\/\/github.com\/JerryI\/wolfram-js-frontend\" rel=\"noopener noreferrer nofollow\"><strong>\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/jerryi.github.io\/wljs-docs\/\" rel=\"noopener noreferrer nofollow\"><strong>\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/strong><\/a><strong> <\/strong>(\u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f)<\/p>\n<p><s>paypal<\/s><\/p>\n<\/blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0447\u0430\u0441\u0442\u044f\u0445, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/460\/fc9\/1e5\/460fc91e506abd2e9c0ae1380d2940c5.png\" alt=\"\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0432\u0438\u0434 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 WLJS Frontend \u0434\u043b\u044f \u043c\u0435\u043d\u044f\" title=\"\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0432\u0438\u0434 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 WLJS Frontend \u0434\u043b\u044f \u043c\u0435\u043d\u044f\" width=\"1291\" height=\"712\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/460\/fc9\/1e5\/460fc91e506abd2e9c0ae1380d2940c5.png\"\/><\/p>\n<div><figcaption>\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0432\u0438\u0434 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 WLJS Frontend \u0434\u043b\u044f \u043c\u0435\u043d\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440. \u0410 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 HTML \u0441 \u0441\u0430\u043c\u044b\u043c \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u043c Javascript (\u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 <strong>\u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0438\u043b\u044c \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/strong>;<\/p>\n<\/li>\n<li>\n<p>\u044f\u0434\u0440\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 Javascript \u043a\u043e\u0434 \u043d\u0430 \u043d\u0435\u0439 (\u043f\u0440\u0438\u0432\u0435\u0442 <code>eval()<\/code>);<\/p>\n<\/li>\n<li>\n<p><strong>\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/strong>, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0425\u0430\u0431\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>\u043c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u0432 HTML<\/strong> \u0441 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>\u043e\u043d\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0412\u0430\u043c \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/strong>, \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 <a href=\"https:\/\/github.com\/JerryI\/wolfram-js-frontend\/releases\" rel=\"noopener noreferrer nofollow\"><strong>\u0435\u0441\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044f<\/strong><\/a>, \u0433\u0434\u0435 \u043e\u043d\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u043e \u0432 ElectronJS, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043a \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0443 \u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u043c\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043a\u043e\u043d\u043d\u043e\u043c\u0443 \u043c\u0435\u043d\u044e.<\/p>\n<h3>\u042f\u0447\u0435\u0439\u043a\u0438<\/h3>\n<p>\u0417\u0430\u0447\u0435\u043c \u043c\u0435\u043d\u044f \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0430\u044e\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Wolfram Language, \u043a\u043e\u0433\u0434\u0430 \u044f \u0445\u043e\u0447\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443. \u041c\u043d\u0435 \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f Mermaid<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/426\/256\/f4c\/426256f4cbf47af2bb8e48dd78dddfb7.png\" alt=\"\u041e\u0434\u0438\u043d \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u044f\u0447\u0435\u0435\u043a\" title=\"\u041e\u0434\u0438\u043d \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u044f\u0447\u0435\u0435\u043a\" width=\"1289\" height=\"522\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/426\/256\/f4c\/426256f4cbf47af2bb8e48dd78dddfb7.png\"\/><\/p>\n<div><figcaption>\u041e\u0434\u0438\u043d \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u044f\u0447\u0435\u0435\u043a<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0434\u0435\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 <code>.mermaid<\/code> \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a Markdown <\/p>\n<pre><code class=\"markdown\">.md # Hey, how was your day? I think it was fine. It is &lt;?wsp TextString[Now] ?> and I am still writting my post for Habr<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/993\/1a9\/de9\/9931a9de9834bd9e52c232d3b02691ae.png\" alt=\"Markdown \u044f\u0447\u0435\u0439\u043a\u0438\" title=\"Markdown \u044f\u0447\u0435\u0439\u043a\u0438\" width=\"1289\" height=\"522\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/993\/1a9\/de9\/9931a9de9834bd9e52c232d3b02691ae.png\"\/><\/p>\n<div><figcaption>Markdown \u044f\u0447\u0435\u0439\u043a\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0435\u0442, \u043c\u043d\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f Tailwind, \u0438 \u044f \u0445\u043e\u0447\u0443 \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e<\/p>\n<pre><code class=\"xml\">.html &lt;link href=\"https:\/\/unpkg.com\/tailwindcss@^1.0\/dist\/tailwind.min.css\" rel=\"stylesheet\"\/><\/code><\/pre>\n<pre><code class=\"xml\">.html &lt;ul role=\"list\" class=\"divide-y divide-gray-100\">   &lt;?wsp Table[ ?>         &lt;li class=\"bg-white shadow my-1\">           &lt;span class=\"flex justify-between round gap-x-6 px-3 py-5 hover:bg-sky-100\">             &lt;div class=\"flex gap-x-4\">               &lt;div class=\"min-w-0 flex-auto\">                 &lt;p class=\"text-sm font-semibold leading-6 text-gray-900\">&lt;?wsp RandomWord[] ?>&lt;\/p>                 &lt;p class=\"mt-1 truncate text-xs leading-5 text-gray-500\">&lt;?wsp RandomWord[] ?>&lt;\/p>               &lt;\/div>             &lt;\/div>           &lt;\/span>         &lt;\/li>   &lt;?wsp , {i,10}] ?> &lt;\/ul><\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ea\/e7d\/4f6\/1eae7d4f658080f75b541ecaf4edf49c.png\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044f\u0447\u0435\u0435\u043a \u0442\u0438\u043f\u0430 HTML \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044f\u0447\u0435\u0435\u043a \u0442\u0438\u043f\u0430 HTML \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c\" width=\"1289\" height=\"524\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ea\/e7d\/4f6\/1eae7d4f658080f75b541ecaf4edf49c.png\"\/><\/p>\n<div><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044f\u0447\u0435\u0435\u043a \u0442\u0438\u043f\u0430 HTML \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430 \u0437\u0430\u0447\u0435\u043c \u043c\u043d\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u044f \u0445\u043e\u0442\u0435\u043b \u0433\u0440\u0430\u0444\u0438\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u043d\u043e \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0435\u0433\u043e \u0435\u0449\u0435 \u043f\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c&#8230;<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/64f\/884\/b97\/64f884b97fc5b6f6f549d4dba12b8329.gif\" alt=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 Mathematica \u0442\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u044e\u0442, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e.\" title=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 Mathematica \u0442\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u044e\u0442, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e.\" width=\"600\" height=\"207\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/64f\/884\/b97\/64f884b97fc5b6f6f549d4dba12b8329.gif\"\/><\/p>\n<div><figcaption>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 Mathematica \u0442\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u044e\u0442, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e.<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0435\u0442, \u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0445\u043e\u0442\u0435\u043b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b <\/p>\n<pre><code>filename.txt Hello World<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fa4\/72d\/712\/fa472d71280a352ca065db8eb5d85ecf.png\" alt=\"\u0417\u0430\u043f\u0438\u0441\u044c \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430\" title=\"\u0417\u0430\u043f\u0438\u0441\u044c \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430\" width=\"1289\" height=\"524\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fa4\/72d\/712\/fa472d71280a352ca065db8eb5d85ecf.png\"\/><\/p>\n<div><figcaption>\u0417\u0430\u043f\u0438\u0441\u044c \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<h4>JS Cells<\/h4>\n<p>\u0421\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044f\u0447\u0435\u0439\u043a\u0438 \u0442\u0438\u043f\u0430 <code>.js<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0430\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0430 JS. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b Wolfram Language, \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0438\u043b\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e<\/p>\n<pre><code class=\"javascript\">.js  const element = document.createElement('span'); core.ShowText = (args, env) => {   element.innerText = await interpretate(args[0], env); }  return element;<\/code><\/pre>\n<p>\u0438 \u0437\u0430\u0442\u0435\u043c \u0438\u0437 \u044f\u0447\u0435\u0439\u043a\u0438 WL<\/p>\n<pre><code class=\"haskell\">ShowText[\"This is a text\"] \/\/ FrontSubmit<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0439\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0435\u0449\u0438 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65271217962d8d30c125b6fa\" data-style=\"\" id=\"65271217962d8d30c125b6fa\" width=\"\"><\/div>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <a href=\"https:\/\/github.com\/JerryI\/wljs-esm-support\" rel=\"noopener noreferrer nofollow\">wljs-esm-support<\/a>, \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c Node \u0438 \u0431\u0430\u043d\u0434\u043b\u0435\u0440 ESBuild, \u0442\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441 NPM. \u041a\u0430\u043a \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c <a href=\"https:\/\/www.youtube.com\/watch?v=qhG6PV4NZeA\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Nintendo Pro.<\/a><\/p>\n<h4>LLM Chatbook<\/h4>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0441\u0432\u043e\u0439 \u044f\u0437\u044b\u043a &#8212; \u044d\u0442\u043e \u0431\u0435\u0441\u0441\u043f\u043e\u0440\u043d\u043e, \u043d\u043e \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0440\u0435\u0448\u0430\u0442 \u0437\u0430 \u0442\u0435\u0431\u044f<\/p>\n<pre><code>.llm Plot a butterfly curve using Wolfram Language<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/532\/777\/227\/5327772276394a089449a278d2289038.png\" alt=\"Chatbook\" title=\"Chatbook\" width=\"1293\" height=\"795\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/532\/777\/227\/5327772276394a089449a278d2289038.png\"\/><\/p>\n<div><figcaption>Chatbook<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u043e <a href=\"https:\/\/github.com\/KirillBelovTest\/wljs-chatbook-support\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435<\/a> \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e <a class=\"mention\" href=\"\/users\/kirillbelovtest\">@KirillBelovTest<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e llm \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u044f\u0447\u0435\u0439\u043a\u0430\u043c, \u0438 \u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434 \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u044f\u0447\u0435\u0435\u043a, \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u0438\u043c\u043c\u0435\u0440\u0441\u0438\u0432\u043d\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0447\u0430\u0442-\u0431\u043e\u0442, \u0430 \u043d\u0435\u043a\u0438\u0439 \u0433\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u0431\u0435\u0436\u0430\u043b \u0438 \u043d\u0430\u0431\u0440\u0430\u043b \u0447\u0442\u043e-\u0442\u043e \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0432 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0435.<\/p>\n<h3>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440<\/h3>\n<p>\u041a\u0430\u043a \u0438 \u0431\u044b\u043b\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0440\u0430\u043d\u0435\u0435, \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0432\u043e\u0434 \u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0451\u0434 \u0432 \u043f\u043e\u043b\u043d\u043e\u0439 \u043c\u0435\u0440\u0435 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f CodeMirror 6<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/652713383add7830897450dd\" data-style=\"\" id=\"652713383add7830897450dd\" width=\"\"><\/div>\n<p>\u0412\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c <em>autocomplete<\/em> \u0434\u043b\u044f \u0442\u0435\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c? \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0441 1999 \u0433\u043e\u0434\u0430 \u0432 Wolfram Kernel \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/p>\n<pre><code class=\"haskell\">$NewSymbol = Print[\"Name: \", #1, \" Context: \", #2] &amp;<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e, \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440.<\/p>\n<h3>\u0414\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 Mathematica, \u043d\u0435 \u0438\u043c\u0435\u044f \u0432 \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0438 \u043f\u043e\u043b\u0437\u0443\u043d\u043a\u043e\u0432.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0442. \u041c\u0435\u043d\u044f \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u043b\u0430 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 Mathematica, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u0438 \u043a \u043f\u0430\u0434\u0435\u043d\u0438\u044e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043d\u043e\u0432\u043e, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441\u0435\u043b\u0435\u043a\u0442\u0438\u0432\u043d\u043e<\/p>\n<pre><code class=\"javascript\">core.Line = () => {   \/\/\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435   \/\/\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c   \/\/\u0440\u0438\u0441\u0443\u0435\u043c   canvas.putLine(); }  core.Line.update = () => {   \/\/\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c   canvas.updateLine(); }<\/code><\/pre>\n<p>\u042f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c. \u0418 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438 \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c.<\/p>\n<p>\u041c\u0438\u043d\u0443\u0441\u043e\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e &#171;\u0432\u0430\u0436\u043d\u043e\u0433\u043e&#187; \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b), \u043a\u0430\u043a \u0432 Mathematica \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0434\u0440\u0435\u0432\u0443 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0447\u0442\u043e \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c &#8212; \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u0412\u043e\u0437\u044c\u043c\u0435\u043c \u0441\u043b\u0430\u0439\u0434\u0435\u0440<\/p>\n<pre><code class=\"haskell\">slider = InputRange[-1,1,0.1, \"Label\"->\"Length\"]<\/code><\/pre>\n<p>\u0438 \u043f\u0440\u0438\u0432\u044f\u0436\u0435\u043c \u043a \u043d\u0435\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/p>\n<pre><code class=\"haskell\">EventHandler[slider, Function[l, length = l]]; EventFire[slider, 0]; (* \u0448\u0430\u0440\u0430\u0445\u043d\u0435\u043c \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c *)<\/code><\/pre>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c<\/p>\n<pre><code class=\"haskell\">Graphics[{Cyan,    Rectangle[{ -1,1 }, {length \/\/ Offload, -1}] }] <\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/578\/0f2\/edb\/5780f2edb4d3ff3e8aa71114b664ceed.gif\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043f\u043e\u043b\u0437\u0443\u043d\u043a\u0430\u043c\u0438\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043f\u043e\u043b\u0437\u0443\u043d\u043a\u0430\u043c\u0438\" width=\"600\" height=\"230\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/578\/0f2\/edb\/5780f2edb4d3ff3e8aa71114b664ceed.gif\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043f\u043e\u043b\u0437\u0443\u043d\u043a\u0430\u043c\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u044d\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0434\u0430, \u043e\u0434\u043d\u0430\u043a\u043e, \u0445\u0438\u0440\u0443\u0440\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65271c122fbe8876a61c0be9\" data-style=\"\" id=\"65271c122fbe8876a61c0be9\" width=\"\"><\/div>\n<p>\u0422\u0430\u043a\u0443\u044e \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 Mathematica. \u041b\u0438\u0431\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65271c41e993b17686ab122b\" data-style=\"\" id=\"65271c41e993b17686ab122b\" width=\"\"><\/div>\n<p>\u041e\u0431\u043b\u0430\u0434\u0430\u0442\u0435\u043b\u0435\u0439 Nvidia RTX \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u044d\u0442\u0438 \u0434\u0432\u0435 \u0441\u0444\u0435\u0440\u044b<\/p>\n<pre><code class=\"haskell\">Graphics3D[{     {Emissive[Red], Sphere[{0,0,2}]},      {White, Sphere[]} }, Lighting->None, RTX->True]<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d1\/08c\/f1f\/4d108cf1f8f8906a26fd64cccc3a2179.png\" alt=\"\u041d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043b\u044f \u043d\u0430\u0443\u0447\u043d\u044b\u0445 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439\" title=\"\u041d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043b\u044f \u043d\u0430\u0443\u0447\u043d\u044b\u0445 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439\" width=\"600\" height=\"370\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d1\/08c\/f1f\/4d108cf1f8f8906a26fd64cccc3a2179.png\"\/><\/p>\n<div><figcaption>\u041d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043b\u044f \u043d\u0430\u0443\u0447\u043d\u044b\u0445 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439<\/figcaption><\/div>\n<\/figure>\n<h3>\u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c<\/h3>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432\/\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u0433\u0434\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b \u044f\u0447\u0435\u0435\u043a, \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0445\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044f\u0447\u0435\u0435\u043a, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0442.\u043f. \u0421\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0431\u0440\u0430\u043d \u0438\u0437 \u0431\u043e\u043b\u0435\u0435 10 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c\u0438 \u0438 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. <\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 &#8212; \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 <a href=\"https:\/\/wolfram-language-russian-conference.github.io\" rel=\"noopener noreferrer nofollow\">Wolfram Saint-Petersburg 2023<\/a>, \u0433\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/JerryI\/wljs-interpreter\/tree\/main\" rel=\"noopener noreferrer nofollow\">wljs-interpreter<\/a> &#8212; \u0438\u043d\u0442\u0435\u0440\u043f\u0435\u0440\u0430\u0442\u0430\u0442\u043e\u0440 WL<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/JerryI\/wljs-graphics-d3\" rel=\"noopener noreferrer nofollow\">wljs-graphics-d3<\/a> &#8212; \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b <code>Graphics<\/code><\/p>\n<\/li>\n<\/ul>\n<h4>\u0421\u043b\u0430\u0439\u0434\u044b\/\u041f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432<\/h4>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u044f \u0432 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u043c\u043d\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a \u0434\u043e\u043a\u043b\u0430\u0434\u0430\u043c, \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a? \u041f\u043e\u044f\u0441\u043d\u044e:<\/p>\n<ul>\n<li>\n<p>\u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u0430 A<\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u0430 \u0411<\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0441\u0440\u0435\u0434\u0430 \u0421<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0444\u0430\u0439\u043b, \u0447\u0442\u043e, \u0441\u043a\u0430\u0436\u0435\u043c, \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e. \u0410\u0445 \u0434\u0430, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e<\/p>\n<ul>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \/ \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0445 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u0430\u0439\u0434\u044b<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 open-source \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442, \u0441\u043a\u0430\u0436\u0435\u043c, &#8212; RevealJS \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Markdown. \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438, \u043a\u0430\u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>Markdown \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 HTML \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0437\u043d\u0430\u0447\u0438\u0442, \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0438\u043b\u044f\u043c \u0438 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043a\u0430\u043a <strong>\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438<\/strong>?<\/p>\n<pre><code class=\"xml\">.html &lt;div>   &lt;div style=\"width:50%; float:left\" >1&lt;\/div>   &lt;div style=\"width:50%; float:right\">2&lt;\/div> &lt;\/div><\/code><\/pre>\n<p>\u0411\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442. \u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/wlx\" rel=\"noopener noreferrer nofollow\">WLX<\/a> \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e<\/p>\n<pre><code class=\"haskell\">.wlx Columns[C1_, C2_] := With[{SR = If[NumberQ[Ratio], 100.0 Ratio, 50]},   &lt;div>     &lt;div style=\"width: {SR}%; float:left;\">       &lt;C1\/>     &lt;\/div>     &lt;div style=\"width: {100-SR}%; float:right;\">       &lt;C2\/>     &lt;\/div>       &lt;\/div> ]<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u0441\u043b\u0430\u0439\u0434\u0430\u043c, \u043c\u044b \u0432\u0435\u0434\u044c \u0441 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0438<\/p>\n<pre><code class=\"haskell\">.slide  # Title  &lt;Columns>   &lt;Identity>     First column   &lt;\/Identity>     Second one &lt;\/Columns><\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c76\/25d\/88a\/c7625d88a95c233c1524f23e11bed005.png\" alt=\"\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0430\u0439\u0434\u0430 \u043d\u0430 \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438. \u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043b\u0443\u0447\u0448\u0435\" title=\"\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0430\u0439\u0434\u0430 \u043d\u0430 \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438. \u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043b\u0443\u0447\u0448\u0435\" width=\"1350\" height=\"571\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c76\/25d\/88a\/c7625d88a95c233c1524f23e11bed005.png\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0430\u0439\u0434\u0430 \u043d\u0430 \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438. \u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043b\u0443\u0447\u0448\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 <code>Identity<\/code> \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043d\u0443\u0436\u0435\u043d \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c WL, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0444\u0440\u0430\u0437\u0430 &#8212; \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>Columns<\/code>.<\/p>\n<p>\u0410 \u0447\u0442\u043e \u043d\u0430\u0441\u0447\u0435\u0442 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432?<\/p>\n<pre><code class=\"haskell\">Plt3D = Graphics3D[Cuboid[]];<\/code><\/pre>\n<pre><code class=\"haskell\">.slide  # Embed some figures Even 3D  &lt;div style=\"text-align: center; display: inline-flex;\">   &lt;Plt3D\/> &lt;\/div>  Try to move it using your mouse<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a5\/4a4\/f9e\/4a54a4f9e2fdc653b4344eaaad434af7.gif\" alt=\"\u0412\u0441\u0435, \u0447\u0442\u043e \u0443\u043c\u0435\u0435\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u0441\u043b\u0430\u0439\u0434\u0430\u0445\" title=\"\u0412\u0441\u0435, \u0447\u0442\u043e \u0443\u043c\u0435\u0435\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u0441\u043b\u0430\u0439\u0434\u0430\u0445\" width=\"600\" height=\"221\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a5\/4a4\/f9e\/4a54a4f9e2fdc653b4344eaaad434af7.gif\"\/><\/p>\n<div><figcaption>\u0412\u0441\u0435, \u0447\u0442\u043e \u0443\u043c\u0435\u0435\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u0441\u043b\u0430\u0439\u0434\u0430\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c: \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u0438\u043b\u0438 \u0435\u0433\u043e \u0441\u043c\u0435\u043d\u0430, \u043b\u0438\u0431\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u0432\u043e\u0434\u0430 (\u043f\u043e\u043b\u0437\u0443\u043d\u043a\u0438) \u0438 \u043a\u043d\u043e\u043f\u043a\u0438. \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043d\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430\u0445 \u0432 2023 \u0433\u043e\u0434\u0443<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6527248c72e08276d7afa9f1\" data-style=\"\" id=\"6527248c72e08276d7afa9f1\" width=\"\"><\/div>\n<p>\u041e\u043d\u0430, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u043a\u043e\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e <em>File<\/em> &#8212; <em>Open Examples<\/em>.<\/p>\n<h4>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 WLX<\/h4>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u0438 \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/wlx\" rel=\"noopener noreferrer nofollow\">WLX<\/a>, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a<\/p>\n<pre><code class=\"haskell\">.wlx  LeakyModule[{img, output1, output2, Ev, pipe, EditorRaw, EditorProcessed},   (* \u043f\u043e\u043b\u0435 drop file *)   Ev = InputFile[\"Drop an image here\"];    (* \u0432\u0435\u0448\u0430\u0435\u043c \u043d\u0430 \u043d\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a *)   EventHandler[Ev, Function[file,     (* \u0438\u043c\u043f\u043e\u0440\u0442 \u043f\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0443 \u0438 \u0441\u0430\u043c\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 *)     pipe = ImportByteArray[file[\"data\"]\/\/BaseDecode, FileExtension[file[\"name\"]]\/\/ToUpperCase];     pipe = Binarize[pipe];     pipe = TextRecognize[pipe];     output1 = ToString[pipe, InputForm];      output2 = ToString[(ToExpression \/@ StringSplit[#, \" \"]) &amp;\/@ StringSplit[pipe, \"  \"], InputForm];   ]];    (* \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f *)   output1 = \"- none -\";   output2 = \"- none -\";    (* \u0434\u0432\u0430 \u043f\u043e\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 *)   EditorRaw = EditorView[output1 \/\/ Offload] \/\/ CreateFrontEndObject;   EditorProcessed = EditorView[output2 \/\/ Offload] \/\/ CreateFrontEndObject;    (* \u0448\u0430\u0431\u043b\u043e\u043d \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 HTML (WLX) *)   &lt;div>     &lt;div style=\"display: flex;\">&lt;Ev\/>&lt;\/div>     &lt;p>Raw string&lt;\/p>     &lt;div style=\"margin-top: 0.5em; margin-bottom: 0.5em; display: flex; border: 2px dashed skyblue;\">&lt;EditorRaw\/>&lt;\/div>     &lt;p>Processed string&lt;\/p>     &lt;div style=\"margin-top: 0.5em; margin-bottom: 0.5em; display: flex; border: 2px dashed deepskyblue;\">&lt;EditorProcessed\/>&lt;\/div>       &lt;\/div> ]<\/code><\/pre>\n<p>\u0412\u0438\u0434\u0435\u043e \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6529a3aa3eb8e176bfd8421e\" data-style=\"\" id=\"6529a3aa3eb8e176bfd8421e\" width=\"\"><\/div>\n<h4>\u0412\u044b\u0432\u043e\u0434 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u043e\u043a\u043d\u043e<\/h4>\n<p>\u042d\u0442\u043e \u043f\u043e\u0431\u043e\u0447\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u044b. \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439, \u043a\u043e\u0433\u0434\u0430 \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u041c\u043e\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/df8\/8b9\/5b7\/df88b95b765ff30b2aa91b375f3b30cb.png\" alt=\"\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0431\u0443\u0434\u043d\u0438 \u0444\u0438\u0437\u0438\u043a\u0430-\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a\u0430-\u0437\u0443\u043c\u0435\u0440\u0430\" title=\"\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0431\u0443\u0434\u043d\u0438 \u0444\u0438\u0437\u0438\u043a\u0430-\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a\u0430-\u0437\u0443\u043c\u0435\u0440\u0430\" width=\"1920\" height=\"1200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/df8\/8b9\/5b7\/df88b95b765ff30b2aa91b375f3b30cb.png\"\/><\/p>\n<div><figcaption>\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0431\u0443\u0434\u043d\u0438 \u0444\u0438\u0437\u0438\u043a\u0430-\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a\u0430-\u0437\u0443\u043c\u0435\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<h3>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>\u041e\u0431\u043e\u0439\u0442\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f WRI \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 20-\u043b\u0435\u0442 \u0434\u0432\u0443\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0437\u0430 \u0433\u043e\u0434 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e (\u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0446\u0435\u043b\u0438 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442). WLJS Frontend \u044d\u0442\u043e <strong>\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/strong> \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043c\u0438, \u0433\u0434\u0435 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 \u043e\u0434\u043d\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044b \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445, <strong>\u043d\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0430<\/strong>.<\/p>\n<p> <a class=\"mention\" href=\"\/users\/kirillbelovtest\">@KirillBelovTest<\/a>\u0438 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u043e\u0434\u043d\u0430\u043a\u043e, \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0432\u0441\u0435 \u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0431\u0430\u043d\u043a Issues \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 &#171;\u0433\u043e\u0440\u044f\u0447\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430&#187;, \u0432\u0441\u0442\u0443\u043f\u0430\u0439\u0442\u0435 \u0432 <a href=\"https:\/\/t.me\/+PBotB9UJw-hiZDEy\" rel=\"noopener noreferrer nofollow\"><strong>\u0433\u0440\u0443\u043f\u043f\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438<\/strong><\/a> \u0432 \u0422\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<p>\u0418\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>Circle<\/code> \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 <a href=\"https:\/\/github.com\/JerryI\/wljs-graphics-d3\" rel=\"noopener noreferrer nofollow\">Graphics<\/a>, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d\u0430 \u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 plot-\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 Mathematica \u0438 \u0447\u044c\u0438-\u0442\u043e \u0440\u0443\u043a\u0438 \u043d\u0435 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 JS. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u043e\u0447\u043a\u0430\u043c, \u0443\u0436\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0430 &#8212; \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/docs\/frontend\/Reference\/Plotting\/Plot\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c. \u042d\u0442\u043e <strong>\u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442<\/strong>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Wolfram Mathematica.<\/p>\n<h3>&#171;\u042d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a&#187; \u0438\u0437 \u0446\u0438\u0442\u0430\u0442\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438<\/h3>\n<p>\u0412\u044b\u0437\u043e\u0432 \u0431\u0440\u043e\u0448\u0435\u043d, \u0430 \u043a\u0430\u043a \u0436\u0435 \u043e\u0442\u0432\u0435\u0442? \u0412\u043e\u0442 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0430\u0432\u0442\u043e\u0440<\/p>\n<pre><code class=\"haskell\">d=theta@t-phi@t; sol = NDSolve[{#''@t==-#4#2''[t]Cos@d-##3#2'@t^2Sin@d-Sin@#@t&amp;@@@{{theta,phi,1,.5},{phi,theta,-1,1}},theta@0==2,phi@0==1,theta'@t==phi'@t==0\/.t->0},{theta,phi},{t,0,60}];<\/code><\/pre>\n<pre><code class=\"haskell\">With[{h = {Sin@#@#2,-Cos@#@#2}&amp;},   With[{f = theta~h~u+phi~h~u \/. First[sol], m1 = theta~h~u \/. First[sol]},     LeakyModule[{points,  time = 0., handler, task},       EventHandler[EvaluationCell[], {\"destroy\"->Function[Null, TaskRemove[task]]}];       handler := (points = Table[f, {u, 0., time,0.1}]; pendulum1 = Table[m1, {u, {time}}] \/\/ First; pendulum2 = points \/\/ Last;);       handler;                task = SetInterval[         time = time + 0.1;          handler;              If[time > 59., TaskRemove[task]];       , 70];                 Graphics[{         Line[points \/\/ Offload], PointSize[0.05], Red,         Point[pendulum1 \/\/ Offload],         Point[pendulum2 \/\/ Offload],         Line[{pendulum1 \/\/ Offload, pendulum2 \/\/ Offload}]       }, Controls->True, Axes->True, TransitionDuration->10, TransitionType->\"Linear\"]     ]   ] ]<\/code><\/pre>\n<p>\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0435<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/68e\/91a\/32d\/68e91a32dbf6b1b41721f9f51abf1988.gif\" alt=\"\u0414\u0432\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u044f\u0442\u043d\u0438\u043a\u0430\" title=\"\u0414\u0432\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u044f\u0442\u043d\u0438\u043a\u0430\" width=\"600\" height=\"333\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/68e\/91a\/32d\/68e91a32dbf6b1b41721f9f51abf1988.gif\"\/><\/p>\n<div><figcaption>\u0414\u0432\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u044f\u0442\u043d\u0438\u043a\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 &#171;\u0441\u043d\u0438\u043f\u043f\u0435\u0442&#187; \u0438\u0437 \u0442\u043e\u0439 \u0436\u0435 \u0432\u0435\u0442\u043a\u0438<\/p>\n<pre><code class=\"haskell\">StreamPlot[{x^2,y},{x,0,3},{y,0,3}]<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5b9\/18a\/d09\/5b918ad099b87b2f36c5b6a0dd21fc3f.png\" alt=\"\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\" title=\"\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\" width=\"751\" height=\"395\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b9\/18a\/d09\/5b918ad099b87b2f36c5b6a0dd21fc3f.png\"\/><\/p>\n<div><figcaption>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a<\/figcaption><\/div>\n<\/figure>\n<pre><code class=\"haskell\">LeakyModule[{data, frame, i = 1},   data = CellularAutomaton[{224,{2,{{2,2,2},{2,1,2},{2,2,2}}},{1,1}}, Table[RandomInteger[{0,1}], {x,200}, {y,400}], 50];   frame = 255 data[[i]];   EventHandler[EvaluationCell[], {\"destroy\"->Function[Null, TaskRemove[task]]}];    task = SetInterval[         i = i + 1;          frame = 255 data[[i]];              If[i > 49,            data = CellularAutomaton[{224,{2,{{2,2,2},{2,1,2},{2,2,2}}},{1,1}}, data\/\/Last, 50];           i = 0;         ];   , 50];       Image[frame \/\/ Offload] ]<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/580\/bb0\/c37\/580bb0c3706a5ffd32043e0d03595c5b.gif\" alt=\"\u0418\u0433\u0440\u0430 \u0416\u0438\u0437\u043d\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438\" title=\"\u0418\u0433\u0440\u0430 \u0416\u0438\u0437\u043d\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438\" width=\"494\" height=\"237\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/580\/bb0\/c37\/580bb0c3706a5ffd32043e0d03595c5b.gif\"\/><\/p>\n<div><figcaption>\u0418\u0433\u0440\u0430 \u0416\u0438\u0437\u043d\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/figcaption><\/div>\n<\/figure>\n<pre><code class=\"haskell\">SphericalPlot3D[Re[Sin[\\[Theta]]Cos[\\[Theta]]Exp[2I*\\[CurlyPhi]]],{\\[Theta],0,\\[Pi]},{\\[CurlyPhi],0,2\\[Pi]}] <\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/354\/1d6\/6eb\/3541d66eb544aa8cf31163c15d6320db.gif\" alt=\"\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\" title=\"\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\" width=\"597\" height=\"369\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/354\/1d6\/6eb\/3541d66eb544aa8cf31163c15d6320db.gif\"\/><\/p>\n<div><figcaption>\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a<\/figcaption><\/div>\n<\/figure>\n<p><strong>\u0421\u043f\u0430\u0441\u0438\u0431\u043e<\/strong> \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 ?<\/p>\n<p>UPD: \u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/767490\/\"> https:\/\/habr.com\/ru\/articles\/767490\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u043f\u0440\u043e\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u043b\u0438 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c-\u043a\u043e\u043f\u0438\u044f\u0445 Wolfram Mathematica, \u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u043a\u0430\u043a, \u0441\u043a\u0430\u0436\u0435\u043c, <a href=\"https:\/\/habr.com\/ru\/companies\/itsumma\/news\/699932\/\" rel=\"noopener noreferrer nofollow\">Mathics<\/a>. \u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 <a class=\"mention\" href=\"\/users\/itsumma\">@ITSumma<\/a>\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435<\/p>\n<blockquote>\n<p>\u041d\u0430 Mathics \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437\u00a0<a href=\"https:\/\/codegolf.stackexchange.com\/a\/44683\/9570\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430<\/a>\u00a0\u0442\u043e\u0436\u0435 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u0412\u043e\u043e\u0431\u0449\u0435, \u0434\u043b\u044f Wolfram Language (WL) \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0430\u0442\u0435\u043b\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0412\u043e\u043b\u044c\u0444\u0440\u0430\u043c\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u043d\u043e.\u00a0<\/p>\n<\/blockquote>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043f\u043e\u0440\u0438\u0442\u044c \u0441 \u044d\u0442\u0438\u043c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c, \u043e\u0434\u043d\u0430\u043a\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0435 \u0436\u0435 &#171;\u0440\u0435\u0448\u0430\u0442\u0435\u043b\u0438&#187;, \u043d\u043e \u0441 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u043e\u0439 open-source \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u0441\u043d\u0430\u0440\u0443\u0436\u0438. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 Mathematica \u0441 \u043d\u0443\u043b\u044f, \u043d\u043e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0434\u0430\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u0447\u0435\u0440\u0442\u0438\u043b \u0435\u0433\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0421\u0442\u0438\u0432\u0435\u043d \u0412\u043e\u043b\u044c\u0444\u0440\u0430\u043c, \u0441\u043e\u0437\u0434\u0430\u0432 \u044d\u0442\u0443 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 30-\u0442\u0438 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434.<\/p>\n<p><em>::: \u042d\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0438 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0430 Wolfram Mathematica<\/em><\/p>\n<p><strong>\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f<\/strong><\/p>\n<figure class=\"bordered full-width\">\n<div><figcaption><a href=\"https:\/\/jerryi.github.io\/wljs-docs\/docs\/interpreter\/intro\" rel=\"noopener noreferrer nofollow\"><strong>\u0411\u043e\u0440\u043e\u0437\u0434\u044f\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u044b \u043a\u043e\u0440\u0430\u0431\u043b\u044c,<\/strong> <\/a>\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 WL. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, RTX \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 Intel UHD \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u043b\u0435\u0447\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u044d\u0442\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u0440\u0430\u0431\u043b\u0438\u043a\u043e\u043c. \u0422\u043e, \u043d\u0430 \u0447\u0435\u043c \u043e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d, &#8212; \u044d\u0442\u043e \u043d\u0438 \u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043a\u0430\u043a Wolfram Language \u0438 \u0442\u043e, \u0433\u0434\u0435 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441, &#8212; \u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 (\u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/docs\/interpreter\/intro\" rel=\"noopener noreferrer nofollow\">\u043a\u043b\u0438\u043a\u043d\u0443\u043b \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443<\/a>).<\/p>\n<p><a href=\"#%D0%AF%D0%BA%D0%BE%D1%80%D1%8C\" rel=\"noopener noreferrer nofollow\"><strong>TLDR \u042f\u043a\u043e\u0440\u044c<\/strong><\/a><\/p>\n<blockquote>\n<p><a href=\"https:\/\/github.com\/JerryI\/wolfram-js-frontend\" rel=\"noopener noreferrer nofollow\"><strong>\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/jerryi.github.io\/wljs-docs\/\" rel=\"noopener noreferrer nofollow\"><strong>\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/strong><\/a><strong> <\/strong>(\u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f)<\/p>\n<\/blockquote>\n<p>\u041d\u043e \u044f \u043e\u0431\u043c\u0430\u043d\u0443\u043b \u0412\u0430\u0441, \u044d\u0442\u043e \u043d\u0435 open-source \u0431\u043b\u043e\u043a\u043d\u043e\u0442, \u0430 \u043d\u0435\u0447\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435, \u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u0435, \u043e \u0447\u0435\u043c \u0412\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u043e\u0437\u0436\u0435 \u0432 \u0441\u0435\u043a\u0446\u0438\u044f\u0445 \u043d\u0438\u0436\u0435. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432&#8230;<\/p>\n<h3>\u0411\u043b\u043e\u043a\u043d\u043e\u0442? \u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u043d\u043e\u0436<\/h3>\n<p>\u041a\u043e\u0434, \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, data-science, \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 &#8212; \u0432\u0441\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u043a\u0435\u0432\u043e\u043c\u043e\u0440\u0444\u0438\u043e\u0437\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 &#8212; \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430<\/p>\n<figure class=\"full-width\">\n<div><figcaption>Wolfram Blog. 30y anniversary<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>Jupyter Notebook<\/figcaption><\/div>\n<\/figure>\n<p>\u042f\u0447\u0435\u0439\u043a\u0438 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u044d\u0442\u043e \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u0430 Markdown, \u043a\u043e\u0433\u0434\u0430 \u0435\u0433\u043e &#171;\u043f\u0440\u0438\u0432\u0435\u0437\u0443\u0442&#187; \u0432 Wolfram Mathematica &#8212; \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0411\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0432 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 Markdown\/Wolfram<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u043e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u044b \u0435\u0449\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u043e\u0437\u0436\u0435.<\/p>\n<h3>\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u044b\u0440<\/h3>\n<p>\u0412\u0430\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044f\u0442\u044c Wolfram Language \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 &#8212; Wolfram Mathematica. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u0435\u0440\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a Wolfram Mathematica \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a \u043d\u0435\u043c\u0443 (\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434), \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u044b \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. <\/p>\n<p><strong>(\u041e\u043a\u043e\u043b\u043e-)\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044f\u0437\u044b\u043a\u0430<\/strong> (\u0441\u043c. <a href=\"https:\/\/habr.com\/ru\/articles\/767490\/#comment_26068622\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438<\/a> \u043f\u0440\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f)\u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 &#8212; \u044d\u0442\u043e <a href=\"https:\/\/www.wolfram.com\/engine\/\" rel=\"noopener noreferrer nofollow\"><strong>Wolfram Engine<\/strong><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u043e \u041f\u0438\u0442\u043e\u043d\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043a \u0447\u0435\u043c\u0443-\u0443\u0433\u043e\u0434\u043d\u043e. <\/p>\n<h3>\u041e\u0442\u043b\u0438\u0447\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043e\u0432 Mathematica \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445<\/h3>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e, \u043e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0430\u043c \u0444\u0430\u043a\u0442 \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0430. \u0422\u0430\u043a\u043e\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0430\u0439\u0442\u0438 \u0432 Jupyter, Obsevable (d3-express), VSCode Notebook API.<\/p>\n<h4>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440<\/h4>\n<p>\u0412\u043e\u0437\u0432\u0435\u0434\u0435\u043c \u0438\u0434\u0435\u044e \u0444\u043e\u0440\u043c\u043e\u0447\u0435\u043a \u0441 \u0446\u0432\u0435\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0438\u0434\u044f\u0442 \u0432 Visual Studio Code, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044f \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c CSS \u0446\u0432\u0435\u0442\u0430<\/p>\n<figure class=\"\">\n<div><figcaption>\u0425\u043b\u0435\u0431 \u0441 \u043c\u0430\u0441\u043b\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0432 <strong>\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c<\/strong> \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c<\/p>\n<pre><code class=\"haskell\">Graphics3D[Sphere[]] % \/. Sphere -> Cuboid<\/code><\/pre>\n<figure class=\"\">\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430, \u0434\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0434\u043e 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0430\u043c \u0433\u0440\u0430\u0444\u0438\u043a \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b &#8212; \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041a\u043e\u0433\u0434\u0430 \u043e\u043d \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 &#8212; \u044d\u0442\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u0410 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u0443\u0431 &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e <strong>\u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0439<\/strong>.<\/p>\n<h4>\u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 &#8212; \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b<\/h4>\n<p>\u042f \u043d\u0435 \u0437\u043d\u0430\u044e \u043f\u043e\u0447\u0435\u043c\u0443, \u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442 \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e <\/p>\n<figure class=\"\">\n<div><figcaption>ObservableHQ. \u0412\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>Jupyter Notebook. \u041d\u0443 \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043e\u043d\u043e \u0432\u044b\u0432\u0435\u043b\u043e, \u0443\u0436\u0435 \u043f\u043b\u044e\u0441.<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 &#8212; \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445? <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043d\u0430 \u0431\u043b\u0430\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0430\u043b\u043e.<\/p>\n<h4>\u0414\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0432\u043e\u0434<\/h4>\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u044f\u0432\u043d\u043e \u043f\u0440\u0435\u0434\u0432\u0437\u044f\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0444\u0438\u0437\u0438\u043a\u043e\u043c-\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a\u043e\u043c. \u0427\u0442\u043e \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435?<\/p>\n<pre><code>1\/Sqrt[2]<\/code><\/pre>\n<p>\u0412 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0425\u0430\u0431\u0440\u0430 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0438\u043a\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 LaTeX, &#8212; \u044d\u0442\u043e \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0435\u0441\u043b\u0438 \u043e\u0431\u043e\u0431\u0449\u0438\u0442\u044c \u044d\u0442\u043e, \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0417\u0430\u0447\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c<\/h2>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u0432\u0435\u0434\u044c \u0440\u044b\u043d\u043e\u043a \u0443\u0436\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 WRI. \u0412\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438<\/p>\n<ul>\n<li>\n<p>Wolfram Mathematica<\/p>\n<ul>\n<li>\n<p><s>\u041f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\/\u0441\u0440\u0435\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\/\u0430\u044f \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0440\u043e\u0433\u043e<\/s><\/p>\n<\/li>\n<li>\n<p><strong>\u0422\u044f\u0436\u0435\u043b\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/strong> (\u0432 \u043f\u043b\u0430\u043d\u0435 \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0441\u0442\u0438), \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 UI (<strong>\u043a\u0440\u0430\u0448<\/strong>, <strong>\u0444\u0440\u0438\u0437<\/strong> \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0434\u0435\u043b\u043e)<\/p>\n<\/li>\n<li>\n<p>\u041a\u043b\u0438\u0435\u043d\u0442 \u0438 \u0441\u0440\u0435\u0434\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u044b, \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u0435\u0441\u0442\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\/\u0442\u043e\u0441\u0442\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435\u043b\u044c\u0437\u044f \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430\u043c\u0438 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438<\/strong><\/p>\n<\/li>\n<li>\n<p>\u041a\u0440\u0438\u0432\u043e\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 PDF \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438\/\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u043b\u044c\u0437\u044f \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u043d\u0430 \u0441\u0430\u0439\u0442\/\u0431\u043b\u043e\u0433<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Wolfram Cloud<\/p>\n<ul>\n<li>\n<p><strong>\u0422\u044f\u0436\u0435\u043b\u044b\u0439 \u0438 \u0442\u043e\u0440\u043c\u043e\u0437\u043d\u043e\u0439 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434<\/strong>, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0437\u0430\u0434\u044b\u0445\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u0434\u0430\u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u044f\u0447\u0435\u0435\u043a. \u041d\u0435\u043b\u044c\u0437\u044f \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 3-5 \u044f\u0447\u0435\u0435\u043a \u0432\u043d\u0443\u0442\u0440\u044c \u0431\u043b\u043e\u0433\u0430\/\u0441\u0430\u0439\u0442\u0430 \u043a\u0430\u043a iframe.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c: \u043b\u0438\u0431\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430, \u043b\u0438\u0431\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430<\/strong><\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u044b\u043a\u0432\u0443 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 WRI (Wolfram Research Inc)<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u041d\u0435\u0443\u0436\u0435\u043b\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 &#171;\u0445\u043e\u0440\u043e\u0448\u043e&#187;. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 Jupyter Notebook, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443. \u0422\u0430\u043c \u043d\u0435\u0442 \u044d\u0442\u0438\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432, \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f \u0432 \u0435\u0434\u0438\u043d\u044b\u0439 HTML \u0444\u0430\u0439\u043b<\/p>\n<figure class=\"full-width\">\n<div><figcaption>HTML \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 Jupyter. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/www.blog.pythonlibrary.org\/2018\/10\/09\/how-to-export-jupyter-notebooks-into-other-formats\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043e<\/a>, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 JupyterLab \u0441\u043b\u043e\u043c\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \ud83d\ude09<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u0430 \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u043b\u0435\u0433\u043a\u043e\u0441\u0442\u044c \u0437\u0430\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0430. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 Observable, \u0433\u0434\u0435 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u043e\u0439, \u0447\u0435\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432 Jupyter<\/p>\n<figure class=\"bordered full-width\">\n<div><figcaption>Curve Fitting. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043b\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0444\u043e\u0440\u043c \u0432\u0432\u043e\u0434\u0430 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438.<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c Observable &#8212; \u043b\u044e\u0431\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439. \u042d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0431\u044b \u0432 Wolfram Mathematica \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u0431\u044b\u043b \u0432\u043d\u0443\u0442\u0440\u0438<code>DynamicModule<\/code>.<\/p>\n<h2>\u0422\u0435\u0440\u043d\u0438\u0441\u0442\u044b\u0439 \u043f\u0443\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h2>\n<blockquote>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0433\u043b\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043f\u043e\u0440\u0438\u0442: \u0425\u0430\u0431\u0440 &#8212; \u0442\u043e\u0440\u0442, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435.<\/p>\n<\/blockquote>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.<\/p>\n<h3>WebGUI \u043a \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/h3>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <a href=\"https:\/\/www.wolfram.com\/engine\/\" rel=\"noopener noreferrer nofollow\">Wolfram Engine<\/a> &#8212; \u044d\u0442\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0435 <code>stdin<\/code>\/<code>stdout <\/code>\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0441\u043e\u043a\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u0430\u0440\u043e\u0447\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f OpenCL \u0438 CUDA \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439. \u041f\u0440\u0438\u043c\u0435\u0440 Jupyter \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e HTTP \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 WebSockets \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 TCP-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0440\u0443\u0442\u043e. \u0415\u0441\u0442\u044c \u043b\u0438 HTTP \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f Wolfram Language?..<\/p>\n<p>\u041d\u0435\u0442, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u042d\u0442\u0430 <strong>\u0433\u0435\u0440\u043e\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430<\/strong> \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430 \u0441 \u043d\u0443\u043b\u044f <a class=\"mention\" href=\"\/users\/kirillbelovtest\">@KirillBelovTest<\/a>. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/community.wolfram.com\/groups\/-\/m\/t\/3002947\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0440\u0438\u0447\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u043e \u0438 \u043f\u0440\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 (sockets), \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438\u043c \u0436\u0435 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c \u0421\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u043d\u0438\u044e \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0441\u0430 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u0431\u0430 \u0431\u043b\u043e\u043a\u043e\u0432<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0411\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b <a href=\"https:\/\/github.com\/JerryI\/wl-wsp\" rel=\"noopener noreferrer nofollow\"><strong>WSP<\/strong><\/a> (Wolfram Script Pages) \u043a\u0430\u043a PHP-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Wolfram Language. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u0449\u0435\u043d \u0435\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u043e\u043c <a href=\"https:\/\/jerryi.github.io\/wljs-docs\/wlx\" rel=\"noopener noreferrer nofollow\"><strong>WLX<\/strong><\/a> (Wolfram Language XML), \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c JSX.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c <\/p>\n<pre><code class=\"haskell\">(* package manager to make sure you will get the right version *) PacletInstall[\"JerryI\/LPM\"]; &lt;&lt; JerryI`LPM`  PacletRepositories[{     Github -> \"https:\/\/github.com\/KirillBelovTest\/Objects\",     Github -> \"https:\/\/github.com\/KirillBelovTest\/Internal\",     Github -> \"https:\/\/github.com\/JerryI\/CSocketListener\",     Github -> \"https:\/\/github.com\/KirillBelovTest\/TCPServer\",     Github -> \"https:\/\/github.com\/KirillBelovTest\/HTTPHandler\",     Github -> \"https:\/\/github.com\/KirillBelovTest\/WebSocketHandler\",     Github -> \"https:\/\/github.com\/JerryI\/wl-misc\",     Github -> \"https:\/\/github.com\/JerryI\/wl-wlx\" }]  (* packages for HTTP server *) &lt;&lt;KirillBelov`Objects` &lt;&lt;KirillBelov`Internal` &lt;&lt;KirillBelov`CSockets` &lt;&lt;KirillBelov`TCPServer` &lt;&lt;KirillBelov`HTTPHandler` &lt;&lt;KirillBelov`HTTPHandler`Extensions`  (* WLX scripts *) &lt;&lt;JerryI`WLX` &lt;&lt;JerryI`WLX`Importer` &lt;&lt;JerryI`WLX`WLJS`  (* setting the directory of the project *) SetDirectory[If[StringQ[NotebookDirectory[]], NotebookDirectory[], DirectoryName[$InputFileName]]]  Print[\"Staring HTTP server...\"];  tcp = TCPServer[]; tcp[\"CompleteHandler\", \"HTTP\"] = HTTPPacketQ -> HTTPPacketLength; tcp[\"MessageHandler\", \"HTTP\"] = HTTPPacketQ -> http;  (* main app file *) index := ImportComponent[\"index.wlx\"];  http = HTTPHandler[]; http[\"MessageHandler\", \"Index\"] = AssocMatchQ[&lt;|\"Method\" -> \"GET\"|>] -> Function[x, index[x]]  SocketListen[CSocketOpen[\"127.0.0.1:8010\"], tcp@# &amp;];  StringTemplate[\"open http:\/\/``:``\/\"][httplistener[[1]][\"Host\"], httplistener[[1]][\"Port\"]] \/\/ Print;  While[True, Pause[1]];<\/code><\/pre>\n<p>\u0433\u0434\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430<\/p>\n<p><strong>index.wlx<\/strong><\/p>\n<pre><code class=\"xml\">Main = ImportComponent[\"main.wlx\"]; &lt;Main Request={$FirstChild}\/><\/code><\/pre>\n<p>\u0410 \u0442\u0430\u043a\u0436\u0435 \u0444\u0430\u0439\u043b \u0441 \u0441\u0430\u043c\u0438\u043c &#171;\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c&#187;<\/p>\n<p><strong>main.wlx<\/strong><\/p>\n<pre><code class=\"xml\">(* \/* HTML Page *\/ *)  &lt;html>      &lt;head>         &lt;title>WLX Template&lt;\/title>         &lt;link href=\"https:\/\/unpkg.com\/tailwindcss@^1.0\/dist\/tailwind.min.css\" rel=\"stylesheet\"\/>                &lt;\/head>       &lt;body>          &lt;div class=\"min-h-full\">             &lt;header class=\"bg-white shadow\">                 &lt;div class=\"flex items-center mx-auto max-w-7xl px-4 py-6 sm:px-6 lg:px-8\">                     &lt;h1 class=\"text-3xl font-bold tracking-tight text-gray-900\">Title&lt;\/h1>                 &lt;\/div>             &lt;\/header>             &lt;main>                 &lt;div class=\"mx-auto max-w-7xl py-6 sm:px-6 lg:px-8\">                     Local time &lt;TextString>&lt;Now\/>&lt;\/TextString>                 &lt;\/div>             &lt;\/main>         &lt;\/div>     &lt;\/body> &lt;<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-357499","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/357499","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=357499"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/357499\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=357499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=357499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=357499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}