{"id":398495,"date":"2024-06-29T14:06:34","date_gmt":"2024-06-29T14:06:34","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=398495"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=398495","title":{"rendered":"<span>C\u0438 \u0432 \u0440\u043e\u043b\u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/589839\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/fn\/bk\/gb\/fnbkgbpwueorobt3_lz2ka8urm8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/fn\/bk\/gb\/fnbkgbpwueorobt3_lz2ka8urm8.png\"\/><\/div>\n<p><\/a><br \/>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e C\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438. \u0412 \u0445\u043e\u0434\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u0430\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0443\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u042d\u0432\u043a\u043b\u0438\u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0435\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438 gdb. <a name=\"habracut\"><\/a><\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Forth \u0432 KDevelop \u2013 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u043c Forth:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/z9\/fh\/4t\/z9fh4tpe9ec8lwkcypymvtb6obi.png\" data-src=\"https:\/\/habrastorage.org\/webt\/z9\/fh\/4t\/z9fh4tpe9ec8lwkcypymvtb6obi.png\"\/><\/div>\n<p>  \u041a\u0440\u0443\u0442\u043e, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438? \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u0435\u043c-\u0442\u043e \u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 Forth. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u0440\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435 Forth, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043d\u0438\u0436\u0435 \u0441\u0430\u043c\u0438.<br \/>  \u042f \u043f\u043e\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u0432\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043a\u043e\u0434. \u0414\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432 \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432 \u0421\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430 \u0440\u043e\u043b\u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c. \u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u044b \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u2013 \u0442\u0430 \u0436\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 JVM \u0438\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 JS. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c: <\/p>\n<ul>\n<li>\u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c;<\/li>\n<li>\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e;<\/li>\n<li>\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a;<\/li>\n<li>\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (IDE, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432 \u0438 \u0442.\u0434.).<\/li>\n<\/ul>\n<p>  \u0421\u0440\u0435\u0434\u0438 \u044f\u0437\u044b\u043a\u043e\u0432, \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0435\u0441\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435: Scala \u0438 Clojure, \u0447\u044c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 JVM, CoffeeScript \u0438 Dart, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 JavaScript. (\u0415\u0441\u0442\u044c \u0435\u0449\u0435 Java, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, GWT <a href=\"https:\/\/developers.google.com\/web-toolkit\/overview\">\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0432 JavaScript <\/a>\u2013 \u0445\u043e\u0442\u044f \u044d\u0442\u043e \u0432\u0441\u0435 \u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439).<\/p>\n<p>  \u041a\u0430\u043a\u0438\u0435 \u0438\u0437 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c\u0438? \u0411\u0435\u0437 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0421++ \u0438 Objective-C \u2013 \u044f\u0437\u044b\u043a\u0438, \u0447\u044c\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u043e\u0434 \u0421\u0438.<\/p>\n<p>  \u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0421\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u043c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041e\u043d \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u0435\u043d, \u0431\u044b\u0441\u0442\u0440\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043a\u0443\u0447\u0435\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u044f \u0445\u043e\u0442\u0435\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0442\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0443\u043c\u0430\u043b \u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f VM, \u0430 \u043d\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u042f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c LLVM IR, \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e LLVM IR? \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 LLVM IR \u043c\u0435\u043d\u0435\u0435 \u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0435\u043c \u0421\u0438, \u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u0435\u043d, \u0447\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0421\u0438, \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u0435\u043d. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0442\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 LLVM \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, LLVM IR \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 LLVM, \u043d\u043e \u0443\u0436\u0435 \u043d\u0435 GNU \u0438\u043b\u0438 Visual Studio, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u0421\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 LLVM, \u0438 GNU \u0438 VS. \u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 LLVM IR \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 Visual Studio \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0421\u0438, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0435\u0440\u0435\u0437 Visual Studio.<\/p>\n<p>  \u00abC\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430\u00bb \u2014 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0435\u043c, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0434\u0443\u043c\u0430\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442. \u041c\u0435\u0448\u0430\u043b\u043e \u043b\u0438\u0448\u044c \u0442\u043e, \u0447\u0442\u043e \u044f \u0445\u043e\u0442\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0432\u043c\u0435\u0441\u0442\u0438\u043b\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0431\u043b\u043e\u0433\u0430, \u043d\u0438\u043a\u0430\u043a \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>  \u041f\u043e\u043a\u0430 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u0441\u0435\u043d\u0438\u043b\u043e: Forth! \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f <a href=\"http:\/\/yosefk.com\/blog\/my-history-with-forth-stack-machines.html\">\u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0432\u043b\u044e\u0431\u0438\u043b\u0441\u044f (\u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0430\u043d\u0433\u043b.)<\/a>, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0432 \u043c\u043e\u0435\u043c \u0441\u0435\u0440\u0434\u0446\u0435. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438\u0437 Forth \u0432 C. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u043f\u043e\u0441\u0442 \u2013 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0432 \u043d\u0435\u0433\u043e \u0432\u043e\u0439\u0434\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 Forth \u2013 \u0430 \u044d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0435\u043d \u043e\u0442 \u0421\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441. \u0422\u0430\u043a \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0421\u0438 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u0440\u043e\u0434\u0435 \u0421++ \u0438\u043b\u0438 Objective-C. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e, \u043d\u043e \u0432\u044b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u044b \u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0421\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0432\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439.<\/p>\n<p>  \u0427\u0442\u043e \u0436, \u0445\u0432\u0430\u0442\u0438\u0442 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043b\u043e\u0432, \u043f\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0434\u0435\u043b\u0443 \u2013 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0438\u0437 Forth \u0432 C\u0438. \u041f\u043b\u0430\u043d \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0432:<\/p>\n<ol>\n<li>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 Forth.<\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u0441\u0440\u0435\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/li>\n<li>\u041e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 Forth \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e gdb.<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Forth \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 KCachegrind.<\/li>\n<li>\u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0435\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438 gdb.<\/li>\n<li>\u041f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0432 KDevelop, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<\/ol>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 Forth<\/font><\/h2>\n<p>  \u041e\u043f\u0430\u0441\u043d\u044b\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 <code>CREATE\/DOES><\/code>, <code>COMPILE<\/code>, <code>POSTPONE <\/code>\u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e. \u041c\u044b \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u043b\u0438\u0448\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e Forth, \u0447\u0442\u043e\u0431\u044b \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u042d\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 (<code>gcd<\/code>).<\/p>\n<p>  \u0412\u043e\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 Forth \u2013 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\u0412 Forth \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <i>\u0441\u0442\u0435\u043a \u0434\u0430\u043d\u043d\u044b\u0445<\/i>.<\/li>\n<li>\u0412 \u044d\u0442\u043e\u0442 \u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f <i>\u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430<\/i>. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u0432\u043e\u0434\u0438\u043c <code>2 3<\/code>, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f <code>2<\/code>, \u0430 \u0437\u0430\u0442\u0435\u043c <code>3<\/code>.<\/li>\n<li><i>\u0410\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/i> \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044e\u0442 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442 \u0442\u0443\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, <code>6 2 \/<\/code> \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 <code>6<\/code> \u0438 <code>2<\/code>, \u043f\u043e\u043c\u0435\u0449\u0430\u044f <code>6\/2=3<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c <code>2 3 =<\/code> \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 <code>0<\/code> (\u043b\u043e\u0436\u043d\u043e), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <code>2<\/code> \u043d\u0435 \u0440\u0430\u0432\u043d\u043e <code>3<\/code>.<\/li>\n<li><i>\u0421\u043b\u043e\u0432\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u043e\u043c<\/i>. <code>DUP <\/code>\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430: <code>2 DUP<\/code> \u0440\u0430\u0432\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e <code><code>2 2<\/code><\/code>. <code>Swap <\/code>\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043e\u0431\u043c\u0435\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: <code>2 3 SWAP<\/code> \u0440\u0430\u0432\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e <code>3 2<\/code>. <code>Tuck <\/code>\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0434\u0431\u043e\u0440, \u0442.\u0435. \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0432 \u0435\u0433\u043e \u0442\u0440\u0435\u0442\u044c\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e: <code>2 3 TUCK<\/code> \u0440\u0430\u0432\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e <code>3 2 3<\/code>. \u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0435\u0431\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0447\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u043e\u0432, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0434.<\/li>\n<li><i>\u041d\u043e\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430<\/i> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>: MYNAME \u2026code\u2026 ;<\/code> \u0415\u0441\u043b\u0438 \u0434\u0430\u043b\u0435\u0435 \u0432\u044b \u0432\u0432\u0435\u0434\u0435\u0442\u0435 <code>MYNAME<\/code>, \u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u0434 \u0438 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u0442\u043e\u0447\u043a\u0438 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0432\u0435\u0440\u043d\u0435\u0442\u0435\u0441\u044c \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u044b\u0437\u043e\u0432\u0430. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u00ab\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439\u00bb \u043d\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u2013 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0442\u0443\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, <code>: SQUARE DUP * ;<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043b\u043e\u0432\u043e, \u0432\u043e\u0437\u0432\u043e\u0434\u044f\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442; \u0442\u0435\u043f\u0435\u0440\u044c <code>3 SQUARE<\/code> \u0440\u0430\u0432\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e <code>3 DUP *<\/code> \u2013 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 <code>3<\/code> \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0442\u0443\u0434\u0430 <code>9<\/code>.<\/li>\n<li><i>\u0426\u0438\u043a\u043b\u044b<\/i>: <code>BEGIN \u2026 cond UNTIL<\/code> \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d <code>{ \u2026 } while(!cond)<\/code>, \u0438 <code>cond <\/code>\u0432 \u043d\u0435\u043c \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f <code>UNTIL<\/code>. <code>BEGIN \u2026 cond WHILE \u2026 REPEAT<\/code> \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d <code>while(1) { \u2026 if(!cond) break; \u2026 }<\/code>, \u0438 <code>cond <\/code>\u0432 \u043d\u0435\u043c \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f <code>WHILE<\/code>.<\/li>\n<li><i>\u0412\u044b\u0432\u043e\u0434<\/i>: <code>2 .<\/code> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 <code>2<\/code>. <code>CR <\/code>\u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443.<\/li>\n<li>Forth \u043d\u0435\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443*.<\/li>\n<\/ul>\n<p>  <\/p>\n<blockquote><p>*\u041f\u0440\u0438\u043c. \u043f\u0435\u0440.: \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Forth, \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443.<\/p><\/blockquote>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0435 \u2013 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c <code>GCD <\/code>\u0438 \u043d\u0430\u043f\u0443\u0433\u0430\u0442\u044c (\u043d\u0443 \u0438\u043b\u0438 \u043f\u043e\u0440\u0430\u0437\u0438\u0442\u044c) \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u0432\u044b\u043a\u0448\u0438\u0445 \u043a \u0438\u043d\u0444\u0438\u043a\u0441\u0430\u043c \u0434\u0440\u0443\u0437\u0435\u0439.<\/p>\n<h2><font color=\"#3AC1EF\">\u00ab\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438\u00bb<\/font><\/h2>\n<p>  \u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0433\u0440\u043e\u043c\u043a\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u043d\u0430\u0448 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0432\u0442\u0438\u0441\u043d\u0443\u0442\u044b\u0439 \u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u0431\u043b\u043e\u0433\u0430 \u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\u0421\u0442\u0435\u043a \u2013 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 <code>data<\/code>. <code>data <\/code>\u2013 \u044d\u0442\u043e <code>typedef <\/code>\u0434\u043b\u044f <code>long<\/code>.<\/li>\n<li>\u041a\u0430\u0436\u0434\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0441\u043b\u043e\u0432\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0421\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 <code>data*<\/code>, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430 (TOS), \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c TOS.<\/li>\n<li>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c: <code>s=WORD(s)<\/code>.<\/li>\n<li>\u0422\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435 \u0432\u0441\u0435 \u0441\u043b\u043e\u0432\u0430: <code>+<\/code> \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c <code>s=+(s)<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 C\u0438. \u0414\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u043e\u0432 \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435. <code>2<\/code> \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f <code>PUSH(2)<\/code>, <code>+<\/code> \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f <code>OP2(+)<\/code>. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u043b\u043e\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <code>do\/while<\/code>, <code>if<\/code> \u0438 <code>break<\/code>.<\/li>\n<li>\u0421\u0442\u0435\u043a \u0440\u0430\u0441\u0442\u0435\u0442 \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438: \u0435\u0441\u043b\u0438 <code>s[0]<\/code> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 TOS, \u0437\u043d\u0430\u0447\u0438\u0442 <code>s[1]<\/code> \u0431\u0443\u0434\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e\u0434 \u043d\u0438\u043c \u0438 \u0442.\u0434. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>s++<\/code> \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0441\u0442\u0435\u043a, \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044f TOS.<\/li>\n<\/ul>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>gcd <\/code><a href=\"https:\/\/literateprograms.org\/euclidean_algorithm__forth_.html\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>:<\/p>\n<pre><code class=\"bash\">: gcd begin dup while tuck mod repeat drop ;<\/code><\/pre>\n<p>  \u2026\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u0434 \u0421\u0438, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e-\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2013 \u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u00ab\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u00bb \u0438\u043b\u0438 \u00ab\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438\u00bb:<\/p>\n<pre><code class=\"bash\">data* gcd(data* s) { \/\/: gcd   do {               \/\/begin     s=dup(s);        \/\/dup     if(!*s++) break; \/\/while     s=tuck(s);       \/\/tuck     OP2(%);          \/\/mod   } while(1);        \/\/repeat   s=drop(s);         \/\/drop   return s;          \/\/; }<\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0432\u0435\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Python \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 (<code>forth2c.py<\/code>) \u2013 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439:<\/p>\n<pre><code class=\"bash\">#!\/usr\/bin\/python import sys # \"special\" \u0441\u043b\u043e\u0432\u0430 \u2013 \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c s=WORD(s) special = {   ':':'data* ',   ';':'return s; }',   '.':'PRINT();',   'begin':'do {',   'until':'} while(!*s++);',   'repeat':'} while(1);',   'while':'if(!*s++) break;', } # \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b binops='+ - * \/ = &lt; > mod'.split() op2c={'=':'==','mod':'%'}  def forth2c(inf,out):   n = 0   for line in inf:     n += 1     # \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0421\u0438 (\u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432 \u0438 \u0442.\u0434.)     # - \u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u043e\u043f\u0446\u0438\u044f \u0421\u0438 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c:     print >> out,'n#line',\\n,'\"%s\"'%infile     for token in line.lower().strip().split():       if token in special:         print >> out,special[token],       else:         try:           num = int(token)           print >> out, 'PUSH(%d);'%num,         except ValueError:           if token in binops:             print >> out,'OP2(%s);'%op2c.get(token,token),           else:             if defining:               print >> out,token+'(data* s) {',             else: # call               print >> out,'s=%s(s);'%token,       defining = token == ':'  out = open('forth_program.c','w') print >> out, '#include \"forth_runtime.h\"' for infile in sys.argv[1:]:   forth2c(open(infile),out)<\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u00ab\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u00bb, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0435\u0435 \u0442\u0430\u043a \u043d\u0430\u0437\u0432\u0430\u0442\u044c (<code>forth_runtime.h<\/code>). \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043a\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u043e\u043c: <code>s++<\/code>, <code>s--<\/code>, <code>s[0]=something<\/code>.<\/p>\n<pre><code class=\"bash\">#include &lt;stdio.h> typedef long data;  #define PUSH(item) (--s, *s = (item)) #define OP2(op) (s[1] = s[1] op s[0], ++s) #define PRINT() (printf(\"%ld \", s[0]), ++s) #define cr(s) (printf(\"\\n\"), s) #define drop(s) (s+1) #define dup(s) (--s, s[0]=s[1], s) #define tuck(s) (--s, s[0]=s[1], s[1]=s[2], s[2]=s[0], s)  #define MAX_DEPTH 4096 \/\/\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e data stack[MAX_DEPTH]; data* forth_main(data*); int main() { forth_main(stack+MAX_DEPTH); return 0; }<\/code><\/pre>\n<p>  \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0435 Forth \u0435\u0441\u0442\u044c \u0441\u043b\u043e\u0432\u043e \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430 \u2013 <code>forth_main<\/code> \u2013 \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0421\u0438-\u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>main <\/code>\u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0435\u043a. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c Forth \u043d\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430 \u2013 \u043e\u043d \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0434\u043e\u0431\u0435\u043d \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u043c\u0443 \u044f\u0437\u044b\u043a\u0443. \u041e\u0434\u043d\u0430\u043a\u043e \u0445\u0430\u043a \u0441 <code>forth_main<\/code> \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0435! \u0412\u0435\u0441\u044c \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u0441\u044f \u0432 60 \u0441\u0442\u0440\u043e\u043a. \u0421\u0430\u043c\u044b\u0439 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0438\u0437 \u0432\u0441\u0435\u0445 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439.<\/p>\n<h2><font color=\"#3AC1EF\">\u0422\u0435\u0441\u0442<\/font><\/h2>\n<p>  \u041f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 <code>forth2c<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>  <b>countdown.4th<\/b> (<a href=\"http:\/\/galileo.phys.virginia.edu\/classes\/551.jvn.fall01\/primer.htm\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>)  <\/p>\n<pre><code class=\"bash\">: COUNTDOWN   BEGIN     DUP .     1 -     DUP 0 =   UNTIL   DROP ;<\/code><\/pre>\n<p>  <b>gcd.4th<\/b> (\u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2013 \u0441 \u0446\u0435\u043b\u044c\u044e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438):<\/p>\n<pre><code class=\"bash\">: gcd   begin     dup   while     tuck     mod   repeat   drop ;<\/code><\/pre>\n<p>  <b>main.4th:<\/b><\/p>\n<pre><code class=\"bash\"> : forth_main   5 countdown   cr   10 6 gcd .   35 75 gcd .   12856 3248 gcd .   cr ;<\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438:<\/p>\n<pre><code class=\"bash\">.\/forth2c.py countdown.4th gcd.4th main.4th gcc -g -static -Wall -o forth_program forth_program.c .\/forth_program <\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre><code class=\"bash\">5 4 3 2 1 2 5 8<\/code><\/pre>\n<p>  \u0418\u0442\u0430\u043a, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0441\u0447\u0435\u0442\u0430 (<code>countdown<\/code>) \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0442 5 \u0434\u043e 1, \u0430 <code>gcd <\/code>\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u043e\u0431\u0449\u0438\u0439 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c (\u041d\u041e\u0414). \u0412\u0441\u0435 \u043c\u043e\u043b\u043e\u0434\u0446\u044b.<\/p>\n<h2><font color=\"#3AC1EF\">\u041e\u0442\u043b\u0430\u0434\u043a\u0430<\/font><\/h2>\n<p>  \u041e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e <code>gdb<\/code>:<\/p>\n<pre><code class=\"bash\">$ gdb forth_program There is NO WARRANTY!! etc. etc. (gdb) b countdown # \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 Breakpoint 1: file countdown.4th, line 3. (gdb) r # \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c Breakpoint 1, countdown (s=0x804e03c) at countdown.4th:3 (gdb) bt # \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 #0  countdown (s=0x804e03c) \u0432 countdown.4th:3 #1  forth_main (s=0x804e03c) \u0432 main.4th:2 #2  main () \u0432 forth_runtime.h:14 (gdb) l # \u0432\u044b\u0432\u043e\u0434 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 1: COUNTDOWN 2  BEGIN 3    DUP . 4    1 - 5    DUP 0 = 6  UNTIL 7  DROP 8; (gdb)<\/code><\/pre>\n<p>  \u041a\u0440\u0443\u0442\u043e!<\/p>\n<p>  \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0440\u0443\u0442\u043e. \u041c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u0442\u0435\u043a \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u2013 <code>forth_main<\/code>, \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0439 <code>countdown<\/code>, \u0438 \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Forth \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2013 \u0432\u0441\u0435 \u044d\u0442\u043e \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e Forth.<\/p>\n<p>  \u041e\u0442\u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u2013 \u044d\u0442\u043e \u0431\u044b \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u044f\u0437\u044b\u043a\u0435. \u0410 \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 <code>#line<\/code> \u2013 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0441\u0442\u044c \u043d\u0435 \u0432\u0435\u0437\u0434\u0435. <\/p>\n<p>  \u042d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0441\u0445\u0438\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u2013 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>#line<\/code> \u043c\u044b \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\u043c, \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u2013 \u043d\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 \u0421\u0438, \u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439. <\/p>\n<h2><font color=\"#3AC1EF\">\u041f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/font><\/h2>\n<p>  \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>#line<\/code> \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438 \u2013 \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438 \u043a \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c, \u0438 \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0438 \u0442.\u0434.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0432\u044b\u0432\u043e\u0434 KCachegrind, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Forth, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Valgrind:<\/p>\n<pre><code class=\"bash\">valgrind --tool=callgrind .\/forth_program kcachegrind `ls -t callgrind* | head -1`<\/code><\/pre>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/w5\/cf\/ex\/w5cfex7ehuecyjynx1iy_tgeyb8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/w5\/cf\/ex\/w5cfex7ehuecyjynx1iy_tgeyb8.png\"\/><\/div>\n<p>  \u0420\u0430\u0437\u0432\u0435 \u043d\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u043e?<\/p>\n<p>  \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0421\u0438 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435 <code>#line<\/code> \u2013 \u0447\u0435\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0438\u0432 \u0432\u044b\u0434\u0430\u0447\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>do_something<\/code>, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0443 \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u0432\u0438\u043d\u043e\u0432\u043d\u043e\u0439 \u0432 \u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"bash\">main.4th:3: implicit declaration of function \u2018do_something\u2019<\/code><\/pre>\n<p>  \u041e\u0447\u0435\u043d\u044c \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u2013 \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c <code>BEGIN<\/code> \u0431\u0435\u0437 <code>REPEAT<\/code>, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0438\u043c <code>REPEAT <\/code>\u0438\u0437 <code>countdown.4th<\/code>:<\/p>\n<pre><code class=\"bash\">gcd.4th:1: error: expected \u2018while\u2019 before \u2018data\u2019<\/code><\/pre>\n<p>  \u0425\u043c, \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0441\u0435 \u0436\u0435 \u0438\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0430\u0447\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u0447\u0435\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u0442\u043e \u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430.<\/p>\n<h2><font color=\"#3AC1EF\">\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445: \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438 \u0432 gdb<\/font><\/h2>\n<p>  \u0412\u0441\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0421\u0438 \u2013 gdb, Valgrind, KCachegrind \u2013 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438?<\/p>\n<p>  \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0435\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0435\u043a\u0430 gdb \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c TOS \u0432 hex-\u0444\u043e\u0440\u043c\u0430\u0442\u0435: <code>countdown (s=0x804e03c)<\/code>, <code>forth_main (s=0x804e03c)<\/code>, \u0447\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0430\u0447\u043d\u043e.<\/p>\n<p>  \u041d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>s<\/code> \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u2013 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u0442\u0435\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434 gdb \u0432\u0440\u043e\u0434\u0435 <code>p s[0]<\/code> (\u0432\u044b\u0432\u043e\u0434\u0438\u0442 TOS), <code>p s[1]<\/code> (\u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430 TOS) \u0438 \u0442.\u0434. \u041d\u043e \u043d\u0430\u043c \u043a\u0443\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0442\u0435\u043a \u0441\u0440\u0430\u0437\u0443, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434 <code>TUCK <\/code>\u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u0430 \u0432 \u0441\u0442\u0435\u043a.<\/p>\n<h3><font color=\"#3AC1EF\">\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c?<\/font><\/h3>\n<p>  <\/p>\n<ul>\n<li>\u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438. (\u041b\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a <a href=\"http:\/\/www.dreampie.org\">Noam <\/a>\u0441\u043a\u0430\u0437\u0430\u043b \u043c\u043d\u0435 \u043e \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445).<\/li>\n<li>\u0410 \u043f\u043b\u043e\u0445\u0430\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 <code>#line<\/code>, \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e\u00bb \u043f\u0435\u0447\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u00ab<code>#line<\/code> \u0434\u043b\u044f \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438\u00bb \u2014 \u043e\u0447\u0435\u043d\u044c \u0436\u0430\u043b\u044c. <\/li>\n<li>\u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u044b gdb \u0432\u0440\u043e\u0434\u0435 KDevelop \u0438\u043b\u0438 Eclipse \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e\u00bb \u043f\u0435\u0447\u0430\u0442\u044c. (KDevelop \u0441 \u043d\u0435\u0439 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c Eclipse). \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d GUI \u0438\u043b\u0438 \u043d\u0435\u0447\u0442\u043e \u0441\u0442\u043e\u043b\u044c \u0436\u0435 \u0443\u0436\u0430\u0441\u043d\u043e\u0435. \u0414\u043d\u043e \u0441\u0442\u0435\u043a\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u2013 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0437\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c <code>stack[]<\/code>.<\/li>\n<\/ul>\n<p>  (\u0415\u0441\u043b\u0438 \u0431\u044b \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u0438, \u044d\u0442\u043e\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0431\u044b\u043b \u0431\u044b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430, \u043d\u043e \u0441\u043c\u044b\u0441\u043b \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438).<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0432\u043e\u0442 <code>gdb_forth.py<\/code>:<\/p>\n<pre><code class=\"bash\">class StackPrettyPrinter(object):   bottom = None   bot_expr = 'stack + sizeof(stack)\/sizeof(stack[0])'   def __init__(self,s):     self.s = s   def to_string(self):     if not self.bottom:       self.bottom = gdb.parse_and_eval(self.bot_expr)     s = self.s     i = 0     words = []     while s[i].address != self.bottom:       words.append(str(s[i]))       i += 1     return ' '.join(reversed(words))  def stack_lookup_func(val):   if str(val.type) == 'data *':     return StackPrettyPrinter(val)  gdb.pretty_printers.append(stack_lookup_func) print 'loaded Forth extensions'<\/code><\/pre>\n<p>  <code>gdb.pretty_printers<\/code> \u2013 \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0430\u044e\u0442, \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0435 \u0438\u043c <code>gdb.Value<\/code> \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0438\u043f\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. <code>gdb.parse_and_eval<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>gdb.Value<\/code>, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0421\u0438. \u0423 <code>gdb.Value<\/code> \u0435\u0441\u0442\u044c \u0442\u0438\u043f, \u0430\u0434\u0440\u0435\u0441 \u0438 \u0442.\u0434. \u0415\u0441\u043b\u0438 <code>gdb.Value<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a \u0441\u043f\u0438\u0441\u043e\u043a Python: <code>val[ind]<\/code>, \u0430 \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u044c: <code>val['member_name']<\/code> (\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0443 \u043d\u0430\u0441 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442).<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438 gdb, \u0442\u043e \u0432\u043e\u0442 \u043f\u0430\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0439:<\/p>\n<ul>\n<li>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c <code>parse_and_eval<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440. \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a <code>gdb.Value<\/code> \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u0441\u0442\u043e\u0438\u0442.<\/li>\n<li>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u00ab\u043a\u0430\u0440\u0442\u044b\u00bb \u0438\u043b\u0438 \u00ab\u043c\u0430\u0441\u0441\u0438\u0432\u044b\u00bb. \u0422\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f\u00bb \u043f\u0435\u0447\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0440\u0442 STL \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u0432\u0435\u0437\u0435\u0442, \u0438 \u0432\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u0442 \u0441 \u0432\u0438\u0434\u0435\u043d\u0438\u0435\u043c gdb \u2013 \u044f \u0442\u0443\u0442 \u043d\u0430\u0448\u0435\u043b \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u043e\u0434\u0432\u043e\u0445\u043e\u0432 \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445).<\/li>\n<\/ul>\n<p>  \u0427\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438 \u2013 \u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0435\u0435 \u0432 <code>~\/.gdbinit<\/code>:<\/p>\n<pre><code class=\"bash\">python execfile('\/your\/path\/to\/gdb_forth.py')<\/code><\/pre>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c:<\/p>\n<pre><code class=\"bash\">$ gdb forth_program There is NO WARRANTY!! loaded Forth extensions # \u0430\u0433\u0430, \u0432\u043e\u0442 \u043d\u0430\u0448 \u0432\u044b\u0432\u043e\u0434! (gdb) b gcd (gdb) r Breakpoint 1, gcd (s=10 6) # \u0430 \u0432\u043e\u0442 \u0438 \u0441\u0442\u0435\u043a (gdb) python for i in range(4): gdb.execute('c') # \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c 4 \u0440\u0430\u0437\u0430 Breakpoint 1, gcd (s=6 4) Breakpoint 1, gcd (s=4 2) Breakpoint 1, gcd (s=2 0) # \u044d\u0442\u043e \u0431\u044b\u043b\u0438 \u0448\u0430\u0433\u0438 gcd(10,6) Breakpoint 1, gcd (s=35 75) 3           dup # \u043d\u043e\u0432\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 - gcd(35,75). \u041f\u0440\u043e\u0448\u0430\u0433\u0430\u0435\u043c: (gdb) s # \u0448\u0430\u0433 (\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 DUP) 4         while (gdb) p s # \u0432\u044b\u0432\u043e\u0434 s $1 = 35 75 75 # DUP \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b\u0430 75. (gdb) s # \u0448\u0430\u0433 (\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 WHILE) 5           tuck (gdb) p s $2 = 35 75 # ...\u0430 WHILE 75 \u0438\u0437\u0432\u043b\u0435\u043a\u043b\u0430. (gdb) s # \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043c\u043e\u0433\u0443\u0447\u0443\u044e TUCK: 6           mod (gdb) p s $3 = 75 35 75 # \u041f\u043e\u0434\u0431\u043e\u0440 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d! (gdb) bt # \u0430 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0435\u043a \u0434\u0430\u043d\u043d\u044b\u0445 main? #0  gcd (s=75 35 75) \u0432 gcd.4th:6 #1  forth_main (s=75 35) \u0432 main.4th:5 # \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d \u043a\u043e\u0440\u043e\u0447\u0435 \u2013 \u0432\u0440\u043e\u0434\u0435 \u0432 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 # (\u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c TOS \u0432 main \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c, \u043f\u043e\u043a\u0430 gcd \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0442)<\/code><\/pre>\n<p>  \u0421\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e. <code>10 6<\/code>, <code>6 4<\/code>, <code>4 2<\/code>, <code>2 0<\/code> \u2013 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0430 \u043f\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u042d\u0432\u043a\u043b\u0438\u0434\u0430 \u0432 Forth.<\/p>\n<h2><font color=\"#3AC1EF\">KDevelop \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0435\u043a\u0430<\/font><\/h2>\n<p>  \u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 KDevelop (\u0433\u0434\u0435 \u0441\u0442\u0435\u043a, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0432 GUI, \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0448\u0430\u0433\u043e\u043c, \u0447\u0435\u0433\u043e \u043c\u044b \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u043c \u043e\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430). \u0421\u0442\u0435\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0432 \u043e\u043a\u043d\u0435 Variables \u0441\u043b\u0435\u0432\u0430.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/q9\/ka\/k6\/q9kak6w6yuzwzd92fy87fvdtpim.png\" data-src=\"https:\/\/habrastorage.org\/webt\/q9\/ka\/k6\/q9kak6w6yuzwzd92fy87fvdtpim.png\"\/><\/div>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0432 KDevelop, \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0443 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u0430\u043a \u044d\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438 \u0421\u0438.<\/p>\n<h2><font color=\"#3AC1EF\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0421\u0438 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u043e<\/font><\/h2>\n<p>  \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0421\u0438 \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435. \u0415\u0441\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0435 Forth, \u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u044f\u0437\u044b\u043a, \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u0435\u0441\u044c, \u0430 \u043d\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0443, \u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0437\u043e\u0432\u0443\u0442 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u041a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 JavaScript, \u0447\u0435\u043c \u0432 \u0421\u0438. <\/p>\n<p>  \u041d\u043e \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u044b\u0431\u043e\u0440 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0433\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0446\u0435\u043b\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b, \u0442\u043e\u0433\u0434\u0430 \u0438 \u0432\u044b\u0431\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043f\u0430\u0441\u0442\u044c \u043d\u0430 JS, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043b\u043e\u0445\u0438\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u044c\u043e\u043d\u043e\u043c \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u0422\u043e \u0436\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0421\u0438 \u0438\u043b\u0438 JVM, \u0438\u043b\u0438 .NET \u0438 \u0442.\u0434.<\/p>\n<p>  \u041d\u0430 \u0434\u0435\u043b\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0438\u0445 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u2013 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u043f\u043b\u0430\u0432\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u044f\u0437\u044b\u043a\u0430: <b>C<\/b>++, Objective-<b>C<\/b>, Coffe<b>Script<\/b>, Type<b>Script<\/b>. \u041e\u043d\u0438 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u044b\u0431\u0435\u0440\u0443\u0442 \u0438\u0445 \u044f\u0437\u044b\u043a \u0438\u0437-\u0437\u0430 \u0435\u0433\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0447\u0435\u043c \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u0435\u0439 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b. <\/p>\n<p>  \u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e \u0432 \u0421\u0438, \u0438 \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043e\u043f\u0438\u0448\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0440\u0435\u0448\u0438\u0442\u044c:<\/p>\n<ul>\n<li><b>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430<\/b>: \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 <code>call(object,method_id)<\/code> \u0438\u043b\u0438 <code>call(object,\"method_name\")<\/code>, <code>multidispatch(method,obj1,obj2)<\/code> \u2013 \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u0442\u0435. \u0414\u043e\u043b\u0436\u043d\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/li>\n<li><b>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u2013 <code>eval <\/code>\u0438 \u0442.\u0434.<\/b>: \u0432 \u0421\u0438 \u043d\u0435\u0442 <code>eval<\/code>, \u043d\u043e \u0435\u0441\u0442\u044c <code>fopen(\"tmp.c\")<\/code>, <code>fwrite, system(\"gcc -o tmp.so tmp.c \u2026\")<\/code>, <code>dlopen(\"tmp.so\")<\/code> \u0438 <code>dlsym<\/code>. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0432\u0430\u043c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0435 \u043f\u043e\u0434\u043e\u0431\u0438\u0435 <code>eval<\/code>. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434, \u043d\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u0435\u0441\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f <code>eval <\/code>\u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0430\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432\u0430\u0441 \u0443\u0441\u0442\u0440\u043e\u0438\u0442 (\u0447\u0430\u0441\u0442\u043e \u0442\u0430\u043a \u0438 \u0431\u044b\u0432\u0430\u0435\u0442), \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041c\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u043e\u0431\u0430 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0438 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e.<\/li>\n<li><b>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/b>: \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u2013 <code>access(object,\"attr_name\")<\/code> \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0421\u0430\u043c\u043e\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\u0445. \u041e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u2013 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e\u00bb \u043f\u0435\u0447\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u0434\u043b\u044f \u00ab\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u2014 \u044d\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0421\u0438 \u0432 \u0441\u0440\u0435\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043e\u0431\u0449\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 <code>eval<\/code>. <\/li>\n<li><b>\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <code>setjmp\/longjmp<\/code>. \u0414\u0443\u043c\u0430\u044e, \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u043b <code>cfront<\/code>.<\/li>\n<li><b>\u0421\u0431\u043e\u0440 \u043c\u0443\u0441\u043e\u0440\u0430<\/b>: \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u043c\u0435\u0448\u043d\u043e, \u043d\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0414\u043b\u044f \u0421\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0438 \u043c\u0443\u0441\u043e\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"http:\/\/www.hpl.hp.com\/personal\/Hans_Boehm\/gc\/\">Boehm collector<\/a>. \u0420\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043b\u0438 \u043e\u043d\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0421\u0438? \u041d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u2013 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0437\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0442\u0435\u0447\u043a\u0435. \u041d\u043e \u0443 \u0432\u0430\u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0421\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438\u0437 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0443, \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0422\u0430\u043a \u0447\u0442\u043e, \u0445\u043e\u0442\u044c \u0441\u0431\u043e\u0440 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0421\u0438 \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0432\u0435\u0440\u0445 \u0421\u0438.<\/li>\n<li><b>\u0414\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438, \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u0442.\u0434.<\/b>: \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u0435\u043a\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043a\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0432\u043e\u0435 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043b\u0438\u0431\u043e \u0436\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e \u0421++, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043a\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u0438 \u0438\u043c\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 <code>collection&lt;item><\/code> \u0438\u043b\u0438 \u043d\u0435\u0447\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435. (\u0421\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e \u0434\u0435\u043a\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043c\u0435\u043d \u0432 \u0421++ \u043d\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432).<\/li>\n<li><b>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<\/b>: \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u0432\u0441\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u0440\u043e\u043c\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e. \u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043e\u0434\u0430 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\u0445. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e \u0432\u044b\u0437\u043e\u0432\u0430\u0445 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u0430 \u043d\u0435 \u0421\u0438. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u0447\u043d\u0435\u0435, \u0447\u0435\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0440\u0442\u0435\u0436 Python.<\/li>\n<li><b>\u0421\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/b>: (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c <code>(+ (* 2 3) 5)<\/code> \u0432 <code>(+ 6 5)<\/code>, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 <code>11<\/code>): \u043e\u0439-\u043e\u0439. \u0414\u0443\u043c\u0430\u044e, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0421\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e, \u043d\u043e \u043e\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0421\u0438 \u0432\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u044b, \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432 \u0421\u0438, \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432 \u0438 \u0442.\u0434. \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u0430 \u043a \u0421\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0421\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0430\u0448 \u044f\u0437\u044b\u043a. (\u042f \u0438\u043c\u0435\u044e \u0432\u0432\u0438\u0434\u0443 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u0430\u043c \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f <code>(+ 6 5)<\/code> \u0432 \u0441\u0440\u0435\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u2013 \u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c, \u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0421\u0438 \u043d\u0435 \u043f\u043e\u0439\u043c\u0443\u0442 \u0432\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443).<\/li>\n<\/ul>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u0410 \u043a\u0430\u043a \u043d\u0430\u0441\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0421++ \u0432\u043c\u0435\u0441\u0442\u043e \u0421\u0438?<\/font><\/h2>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u044f \u0434\u0430\u0436\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b. \u0412 \u0438\u0442\u043e\u0433\u0435 \u2013 \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e. \u0412\u043c\u0435\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438 \u0441 <code>setjump\/longjump<\/code> \u0432\u044b \u043d\u0430 \u0445\u0430\u043b\u044f\u0432\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0438\u0445 \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u043e\u0431\u0449\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439, \u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 (\u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e RTTI* \u0438\u043c\u0435\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043e\u0431\u0449\u0438\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438). \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0445\u0430\u043b\u044f\u0432\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0432\u0430\u0448 \u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0447\u043d\u043e\u0441\u0442\u044c. <\/p>\n<blockquote><p>*RTTI \u2013 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p><\/blockquote>\n<p>  \u042d\u043b\u0438 \u0411\u0435\u043d\u0434\u0435\u0440\u0441\u043a\u0438 <a href=\"http:\/\/eli.thegreenplace.net\/2011\/11\/30\/how-i-stopped-worrying-and-switched-to-c-for-my-bob-scheme-vm\/\">\u043f\u0438\u0441\u0430\u043b<\/a> \u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u0441 \u0421\u0438 \u043d\u0430 \u0421++ \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b. \u041e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0421++ \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0443\u0436\u0434\u0430\u043c \u0432\u0430\u0448\u0435\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445, \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u043d\u0430 \u0421\u0438. <\/p>\n<p>  \u0412 \u043c\u043e\u0435\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u0432\u043e\u0442 \u043a \u0447\u0435\u043c\u0443. \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b VM \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u043d\u0430 \u0421++. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 VM \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 \u0421++, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0431\u044b\u043b\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043d\u0435\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0421++, \u0447\u0435\u043c \u043a\u043e\u0434 \u0421\u0438. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0421++ \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0431\u0449\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c.<\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438 \u0432\u0430\u0448 \u043e\u043f\u044b\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. \u041e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0421++ \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438 \u0432\u0441\u0435 \u043b\u0443\u0447\u0448\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 STL \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443 \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u043b\u0435\u043d\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430). \u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0441\u043e\u0447\u0435\u0442\u0430\u044e\u0442\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0421++, \u0442\u043e \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<h2><font color=\"#3AC1EF\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u0421\u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0438 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432 \u043d\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043d\u0438 \u0441 Java, \u043d\u0438 \u0441 JavaScript. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e, \u043d\u0435 \u044f \u043e\u0434\u0438\u043d. \u042f\u0437\u044b\u043a, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0432 \u0421\u0438, \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u043c, \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u044b\u043c, \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u043c \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0441 \u0421\u0438, \u0421++ \u0438 Objective-C.<\/p>\n<p>  <a href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=Bright_Translate&amp;utm_content=ci_v_roli_promezhutochnogo_yazyka\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ou\/g5\/kh\/oug5kh6sjydt9llengsiebnp40w.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ou\/g5\/kh\/oug5kh6sjydt9llengsiebnp40w.png\"\/><\/a><\/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\/589839\/\"> https:\/\/habr.com\/ru\/articles\/589839\/<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/589839\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/fn\/bk\/gb\/fnbkgbpwueorobt3_lz2ka8urm8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/fn\/bk\/gb\/fnbkgbpwueorobt3_lz2ka8urm8.png\"\/><\/div>\n<p><\/a><br \/>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e C\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438. \u0412 \u0445\u043e\u0434\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u0430\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0443\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u042d\u0432\u043a\u043b\u0438\u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0435\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439\u00bb \u043f\u0435\u0447\u0430\u0442\u0438 gdb. <\/p>\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-398495","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/398495","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=398495"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/398495\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=398495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=398495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=398495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}