{"id":53040,"date":"2019-11-22T00:00:00","date_gmt":"2019-11-21T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/yazykovye-sloi"},"modified":"2020-02-18T14:00:54","modified_gmt":"2020-02-18T11:00:54","slug":"yazykovye-sloi","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/yazykovye-sloi","title":{"rendered":"Language Layers","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hello, Habr!<\/p>\n<p>I present to you the translation of the article \u201c<noindex><a rel=\"nofollow\" href=\"https:\/\/clck.ru\/JwFe2\">Language Layers<\/a><\/noindex>\u201d by Robert C. Martin (Uncle Bob).<\/p>\n<p><img decoding=\"async\" alt=\"Language Layers\" src=\"\/wp-content\/uploads\/2019\/11\/7443f8be2481982b85afe6f8368a9e81.jpeg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nI spend time playing an old game called \u201cLunar Lander\u201d from 1969. It was written by Jim Storer, a high school student. He wrote it on a PDP-8 in FOCAL. Here's what the program looks like: <\/p>\n<p><img decoding=\"async\" alt=\"Language Layers\" src=\"\/wp-content\/uploads\/2019\/11\/44821c373bf1285cf7085306e194cc14.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnd here is the source code in FOCAL:<\/p>\n<p><img decoding=\"async\" alt=\"Language Layers\" src=\"\/wp-content\/uploads\/2019\/11\/bcde722861952deb2e7e8e3f7064c992.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJim Storer was quite a talented high school student. Look at this code. It has some interesting Taylor expressions. <\/p>\n<p>In general, I\u2019m conducting a binary search to determine the value of K that will land the ship perfectly with successive uses. So, I modified the program to take only one value, and then apply it several times until the ship either lands or crashes. As I write this, I know the answer lies between 76.40625 and 76.4453125, and I\u2019ll try 76.4257813. I'm beginning to think that I will run out of time before I find the answer. <\/p>\n<p>In the meantime, it occurred to me that I ran this program on an emulator <noindex><a rel=\"nofollow\" href=\"https:\/\/clck.ru\/JwGvr\">PDP-8<\/a><\/noindex>, which I wrote in Lua for the iPad.<\/p>\n<p>So, okay, let\u2019s reflect on this.<\/p>\n<ul>\n<li>The iPad has a chip <noindex><a rel=\"nofollow\" href=\"https:\/\/clck.ru\/JwGxH\">A8X<\/a><\/noindex>, with three cores running at around GHz.<\/li>\n<li>Lua is written in C and compiles to A8X.<\/li>\n<li>My PDP8 emulator is written in Lua, using the <noindex><a rel=\"nofollow\" href=\"https:\/\/clck.ru\/JwGy4\">CODEA<\/a><\/noindex> package from Two Lives Left.<\/li>\n<li>FOCAL was written in the late 1960s on PDP8.<\/li>\n<li>Lunar Lander was written in FOCAL.<\/li>\n<\/ul>\n<p>\nSo that's A8X, C, Lua, PDP8, and FOCAL. Five different languages. Five different mechanisms telling the machine what to do; all layered on top of each other! <\/p>\n<p>What\u2019s going on? Why so many languages? Actually, forget about iPad, PDP-8, C, Lua, and all that. Why are there so many languages? <\/p>\n<p>##\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u043e\u0432? <\/p>\n<p>Think about it! How many programming languages can you name? Here, let me give you a short list:<\/p>\n<ul>\n<li> FORTRAN<\/li>\n<li> ALGOL<\/li>\n<li> COBOL<\/li>\n<li> SNOBOL<\/li>\n<li> LISP<\/li>\n<li> BCPL<\/li>\n<li> B<\/li>\n<li> C<\/li>\n<li> SIMULA<\/li>\n<li> SMALLTALK<\/li>\n<li> EIFFEL<\/li>\n<li> C++<\/li>\n<li> JAVA<\/li>\n<li> C#<\/li>\n<li> PYTHON<\/li>\n<li> RUBY<\/li>\n<li> LOGO<\/li>\n<li> LUA<\/li>\n<li> BASIC<\/li>\n<li> PL\/1<\/li>\n<li> JAVASCRIPT<\/li>\n<li> GO<\/li>\n<li> DART<\/li>\n<li> PROLOG<\/li>\n<li> FORTH<\/li>\n<li> SWIFT<\/li>\n<li> ML<\/li>\n<li> OCCAM<\/li>\n<li> OCAML<\/li>\n<li> ADA<\/li>\n<li> ERLANG<\/li>\n<li> ELIXIR<\/li>\n<li> FOCAL<\/li>\n<\/ul>\n<p>\nYou can certainly think of others that I haven\u2019t mentioned. The question is, why are there so many? There really could be only one answer to that question. The reason there are so many programming languages: <\/p>\n<blockquote><p> <em>We don't like them.<\/em>\n<\/p><\/blockquote>\n<p>\nWell, maybe that's too strong a statement. Perhaps I should say: <\/p>\n<blockquote><p> <em>We were in Hollywood.<br \/>\n We were in Redwood.<br \/>\n We crossed the ocean for the golden code.<br \/>\n We were out of our minds,<br \/>\n It\u2019s such a fine line.<br \/>\n It compels us to seek the golden code.<\/p>\n<p> And we get older.<\/em>\n<\/p><\/blockquote>\n<p> Well, maybe I should speak for myself\u2026 Didn\u2019t you just want to scream at Neil Young to stop complaining, find some sweet girl, and live with her? Didn\u2019t you want to tell him that the search for a golden heart was pointless? Tell me, what would he do with it if he found it? <\/p>\n<p>And what would we do with the perfect language if we found it?<\/p>\n<blockquote><p><em>We created PDP-8 and FOCAL emulators to play the &#187; Lunar Lander&#187; game, written by a high school student in 1969!<\/em>\n<\/p><\/blockquote>\n<p> <b>Here\u2019s what I think.<\/b><\/p>\n<p>Face it. Stop searching. There is no perfect language. We looked everywhere. We looked up and down. We looked inside and out.<\/p>\n<blockquote><p> <em>We examined languages from both sides.<br \/>\n Inside and out<br \/>\n and still somehow.<br \/>\n Let\u2019s remember that these are linguistic illusions.<\/p>\n<p>We really don\u2019t understand anything about languages\u2026<br \/>\n\u2026 at all.<\/em>\n<\/p><\/blockquote>\n<p> Yes, today is an unusual day.<\/p>\n<p>But still, the point is:<\/p>\n<blockquote><p> <em>We don\u2019t need another language.<br \/>\n We don\u2019t need to know the way home.<br \/>\n All we want is to transcend life.<br \/>\n S.Q.L.<\/em>\n<\/p><\/blockquote>\n<p> Yes, a strange day.<\/p>\n<p>So, there\u2019s one thought. Maybe we need to stop creating new languages and just settle down and pick one or two that are really good. That would make life much simpler, wouldn\u2019t it?<\/p>\n<p>And if you\u2019re curious, 76.43844461 gives you a pretty good landing at 2.23 MPH.<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/476644\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abLanguage Layers\u00bb \u0430\u0432\u0442\u043e\u0440\u0430 Robert C. Martin (Uncle Bob). \u042f \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u0432\u0440\u0435\u043c\u044f, \u0438\u0433\u0440\u0430\u044f \u0432 \u0441\u0442\u0430\u0440\u0443\u044e \u0438\u0433\u0440\u0443 \u00abLunar Lander\u00bb 1969 \u0433\u043e\u0434\u0430. \u041e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0414\u0436\u0438\u043c\u043e\u043c \u0421\u0442\u043e\u0440\u0435\u0440\u043e\u043c, \u0443\u0447\u0435\u043d\u0438\u043a\u043e\u043c \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0448\u043a\u043e\u043b\u044b. \u041e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0435\u0435 \u043d\u0430 PDP-8 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 FOCAL. \u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430: \u0410 \u0432\u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 FOCAL: \u0414\u0436\u0438\u043c \u0421\u0442\u043e\u0440\u0435\u0440 \u0431\u044b\u043b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-53040","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abLanguage Layers\u00bb \u0430\u0432\u0442\u043e\u0440\u0430 Robert C.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/yazykovye-sloi\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0441\u043b\u043e\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abLanguage Layers\u00bb \u0430\u0432\u0442\u043e\u0440\u0430 Robert C.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/yazykovye-sloi\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-11-21T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Language Layers | ProHoster","description":"Hello, Habr! I present to you the translation of the article \"Language Layers\" by Robert C.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/yazykovye-sloi","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0441\u043b\u043e\u0438 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abLanguage Layers\u00bb \u0430\u0432\u0442\u043e\u0440\u0430 Robert C.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/yazykovye-sloi","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-11-21T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"53040","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 05:50:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:32:31","updated":"2026-01-24 05:50:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/53040","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=53040"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/53040\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=53040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=53040"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=53040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}