{"id":76903,"date":"2020-04-06T01:42:17","date_gmt":"2020-04-05T23:42:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/samye-zamechatelnye-programmy-unix"},"modified":"2020-04-06T01:42:17","modified_gmt":"2020-04-05T23:42:17","slug":"samye-zamechatelnye-programmy-unix","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/samye-zamechatelnye-programmy-unix","title":{"rendered":"The Most Wonderful Unix Programs","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>The article's author, Douglas McIlroy, is an American mathematician, engineer, and programmer. He is best known for developing the pipeline in the Unix operating system, principles of component-oriented programming, and several original utilities: spell, diff, sort, join, speak, tr.<\/i> <\/p>\n<p>Sometimes you come across truly remarkable programs. Digging through my memory, I've compiled a list of genuine Unix gems over the years. For the most part, these are quite rare and not particularly necessary programs. But what sets them apart is their originality. I can't even imagine having come up with any of them myself.<\/p>\n<p>Share which programs have amazed you as well?<\/p>\n<h1>PDP-7 Unix<\/h1>\n<p>\nTo begin with, the PDP-7 Unix system itself. Its simplicity and power made me switch from a powerful mainframe to a tiny machine. Here lies the quintessence of a hierarchical file system, a distinct shell, and user-level process management, which Multics on mainframes couldn't achieve even after hundreds of person-years of development. The shortcomings of Unix (like record structure in the file system) were as enlightening and liberating as its innovations (like input-output redirection in the shell).<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>dc<\/h1>\n<p>\nThe mathematical library for the desktop calculator with variable precision by Robert Morris used reverse error analysis to determine the precision needed at each step to achieve the user-specified accuracy of the result. At the NATO Software Engineering Conference in 1968, in my talk about software components, I proposed standard procedures that could yield results of any desired accuracy, but I didn't know how to implement them in practice. dc remains the only program I know capable of such.<\/p>\n<h1>typo<\/h1>\n<p>\nTypos arrange words in text based on their similarity to the rest of the text. Mistakes like 'hte' tend to appear at the end of the list. Robert Morris proudly stated that the program would work just as well for any language. Although typos do not help identify phonetic errors, they have been a real boon for anyone typing text, providing significant benefits before the less interesting but more accurate dictionary-based spell check emerged.<\/p>\n<p>Typo is as unexpectedly organized on the inside as it is on the outside. The similarity measurement algorithm is based on the frequency of trigrams, which are considered within a 26\u00d726\u00d726 array. In the tiny memory, there was barely enough space for single-byte counters, so a scheme was implemented to compress large numbers into small counters. To avoid overflow, the counters were updated on a probabilistic basis, maintaining a logarithmic estimate of the counter's value.<\/p>\n<h1>eqn<\/h1>\n<p>\nWith the advent of eqn, it became possible, though terribly tedious, to produce classical mathematical notation. Lorinda Cherry decided to develop a higher-level description language, and soon Brian Kernighan joined her. Their brilliant move was to express the oral tradition in written form, making eqn surprisingly easy to learn. The first of its kind preprocessor for a language to describe mathematical expressions, eqn has seen little improvement since.<\/p>\n<h1>struct<\/h1>\n<p>\nBrenda Baker undertook the development of her Fortran-to-Ratfor converter against the advice of her boss \u2014 me. I thought it might lead to special reordering of the source text. It would be free from operator numbers but otherwise no more readable than well-structured Fortran code. Brenda proved me wrong. She found that every Fortran program has a canonically structured form. Programmers preferred the canonical form over what they originally wrote.<\/p>\n<h1>pascal<\/h1>\n<p>\nThe syntax diagnostics in the compiler created by Sue Graham's group at Berkeley were the most useful I've ever seen \u2014 and they were conducted automatically. In the case of a syntax error, the compiler suggests inserting a lexeme to continue syntax analysis. No attempts to explain what went wrong. With this compiler, I learned Pascal in one evening, without having any reference guide at hand.<\/p>\n<h1>parts<\/h1>\n<p>\nHidden within the WWB (Writer's Workbench) package is a module <code>parts<\/code> Lorinda Cherry identifies parts of speech for words in English text based solely on a small dictionary, spelling and grammar rules. Based on this annotation, the WWB program generates stylometric indicators of the text, such as the prevalence of adjectives, subordinate clauses, and complex sentences. When Lorinda interviewed on the Today show on NBC and talked about the innovative grammar-checking in WWB texts, it was the first mention of Unix on television.<\/p>\n<h1>egrep<\/h1>\n<p>\nAlfred Aho hoped that his deterministic regular expression recognizer would outpace Ken's classic nondeterministic recognizer. Unfortunately, the latter was already finishing its pass over complex regular expressions while <code>egrep<\/code> building his deterministic automaton. To win this race, Aho circumvented the curse of exponential growth in the automaton's state table by inventing a way to construct only the entries in the table that are actually visited during recognition.<\/p>\n<h1>crabs<\/h1>\n<p>\nLucia Cardelli's charming meta-program for the Blit window system spawned virtual crabs that roamed the empty space of the screen, increasingly nibbling at the edges of active windows.<\/p>\n<h1>Some general thoughts<\/h1>\n<p>\nAlthough it isn't visible from the outside, theory and algorithms played a crucial role in the creation of most of these programs: typo, dc, struct, pascal, egrep. What is truly surprising is the unusual application of theory.<\/p>\n<p>Almost half of the original authors of the list \u2014 pascal, struct, parts, eqn \u2014 were women, which significantly exceeds the demographic share of women in the field of computer science.<\/p>\n<p><i>Douglas McIlroy<br \/>\nMarch 2020<\/i><br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495550\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 \u0414\u0443\u0433\u043b\u0430\u0441 \u041c\u0430\u043a\u0438\u043b\u0440\u043e\u0439\u00a0\u2014 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a, \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Unix, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442: spell, diff, sort, join, speak, tr. \u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041f\u043e\u043a\u043e\u043f\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0436\u0435\u043c\u0447\u0443\u0436\u0438\u043d Unix \u0437\u0430 \u0432\u0441\u0435 \u0433\u043e\u0434\u044b. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u0438\u0435 \u0438 \u043d\u0435 [&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":[688],"tags":[],"class_list":["post-76903","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 \u0414\u0443\u0433\u043b\u0430\u0441 \u041c\u0430\u043a\u0438\u043b\u0440\u043e\u0439 \u2014 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a, \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442.\" \/>\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\/administrirovanie\/samye-zamechatelnye-programmy-unix\" \/>\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\u0421\u0430\u043c\u044b\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Unix | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 \u0414\u0443\u0433\u043b\u0430\u0441 \u041c\u0430\u043a\u0438\u043b\u0440\u043e\u0439 \u2014 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a, \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/samye-zamechatelnye-programmy-unix\" \/>\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=\"2020-04-05T23:42:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-05T23:42:17+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\udd47The Most Remarkable Unix Programs | ProHoster","description":"The author of the article, Douglas McIlroy, is an American mathematician, engineer, and programmer.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/samye-zamechatelnye-programmy-unix","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\u0421\u0430\u043c\u044b\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Unix | ProHoster","og:description":"\u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 \u0414\u0443\u0433\u043b\u0430\u0441 \u041c\u0430\u043a\u0438\u043b\u0440\u043e\u0439 \u2014 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a, \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/samye-zamechatelnye-programmy-unix","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":"2020-04-05T23:42:17+00:00","article:modified_time":"2020-04-05T23:42:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"76903","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:27:23","updated":"2022-10-08 06:55:30","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\/76903","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=76903"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/76903\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=76903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=76903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=76903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}