Both sides previous revisionPrevious revisionNext revision | Previous revision |
text:real-programmers-ukrainian [2023/03/13 06:14] – vak | text:real-programmers-ukrainian [2023/03/13 06:46] (current) – [Справжній програміст у грі] vak |
---|
[[https://www.ecb.torontomu.ca/~elf/hack/realmen.html | Copyright © 1982 Ed Post]] | [[https://www.ecb.torontomu.ca/~elf/hack/realmen.html | Copyright © 1982 Ed Post]] |
| |
У старі добрі часи — «золоту еру» комп’ютерів — було легко відрізнити чоловіків від хлопчиків (у літературі їх іноді називають «справжніми чоловіками» та «їдачами [[https://uk.wikipedia.org/wiki/%D0%9A%D1%96%D1%88_(%D0%BF%D0%B8%D1%80%D1%96%D0%B3) | кішу]]»). У цей період «справжні чоловіки» були тими, хто розумівся на комп’ютерному програмуванні, а «їдці кішу» — ні. Справжній комп’ютерний програміст говорив такі речі, як «DO 10 I=1,10» і «ABEND» (вони насправді балакали великими літерами, ви розумієте), а решта світу говорила такі речі, як «комп’ютери надто складні для мене» і «я не можу покладатися на комп’ютери – вони такі знеособлені». ([[https://en.wikipedia.org/wiki/Real_Men_Don%27t_Eat_Quiche | Попередня робота]] вказує на те, що справжні чоловіки ні на що не «покладаються» і не бояться бути знеособленими.) | У старі добрі часи — «золоту еру» комп’ютерів — було легко відрізнити чоловіків від хлопчиків (у літературі їх іноді називають «справжніми чоловіками» та «їдачами [[https://uk.wikipedia.org/wiki/%D0%9A%D1%96%D1%88_(%D0%BF%D0%B8%D1%80%D1%96%D0%B3) | кішу]]»). У цей період «справжні чоловіки» були тими, хто розумівся на комп’ютерному програмуванні, а «їдці кішу» — ні. Справжній комп’ютерний програміст говорив такі речі, як «DO 10 I=1,10» і «ABEND» (вони насправді балакали великими літерами, ви розумієте), а решта світу говорила такі речі, як «комп’ютери надто складні для мене» і «я не можу покладатися на комп’ютери – вони такі знеособлені». ([[https://en.wikipedia.org/wiki/Real_Men_Don%27t_Eat_Quiche | Попередня робота]] вказує на те, що справжні чоловіки ні на що не «покладаються» і не лякаються знеособленості.) |
| |
Але, як завжди, часи змінюються. Сьогодні ми зіткнулися зі світом, у якому маленькі старенькі можуть отримати комп’ютеризовані мікрохвильові печі, 12-річні діти можуть вибивати справжніх чоловіків у грі в Asteroids та Pac-Man, і будь-хто може купити і навіть зрозуміти свій власний персональний комп’ютер. Справжньому програмісту загрожує вимирання, його замінять старшокласники з макбуками! | Але, як завжди, часи змінюються. Сьогодні ми зіткнулися зі світом, у якому маленькі старенькі можуть отримати комп’ютеризовані мікрохвильові печі, 12-річні діти можуть вибивати справжніх чоловіків у грі в Asteroids та Pac-Man, і будь-хто може купити і навіть зрозуміти свій власний персональний комп’ютер. Справжньому програмісту загрожує вимирання, його замінять старшокласники з макбуками! |
Ні, ваш справжній програміст використовує OS/370. Хороший програміст може знайти та зрозуміти опис помилки IJK305I, яку він щойно отримав у своєму скрипті JCL. Чудовий програміст може написати скрипт JCL, взагалі не звертаючись до посібника. Справді видатний програміст може знайти помилки, заховані в 6-мегабайтному дампі ядра, не використовуючи шістнадцятковий калькулятор. (Я дійсно бачив, як це було зроблено.) | Ні, ваш справжній програміст використовує OS/370. Хороший програміст може знайти та зрозуміти опис помилки IJK305I, яку він щойно отримав у своєму скрипті JCL. Чудовий програміст може написати скрипт JCL, взагалі не звертаючись до посібника. Справді видатний програміст може знайти помилки, заховані в 6-мегабайтному дампі ядра, не використовуючи шістнадцятковий калькулятор. (Я дійсно бачив, як це було зроблено.) |
| |
OS/370 — справді чудова операційна система. Є можливість знищити дні роботи одним недоречним місцем, тому заохочується уважність програмістів. Найкращий спосіб отримати доступ до системи – за допомогою перфокарт. Деякі люди стверджують, що існує система поділу часу, яка працює на OS/370, але після ретельного вивчення я дійшов висновку, що вони помиляються. | OS/370 — справді чудова операційна система. Є можливість знищити дні роботи одним недоречним пробілом, тому заохочується уважність програмістів. Найкращий спосіб отримати доступ до системи – за допомогою перфокарт. Деякі люди стверджують, що існує система поділу часу, яка працює на OS/370, але після ретельного вивчення я дійшов висновку, що вони помиляються. |
| |
===== Засоби програмування ===== | ===== Засоби програмування ===== |
Деякі з концепцій у цих редакторах Xerox були включені в редактори, що працюють на операційних системах з більш прийнятними назвами. EMACS і VI, ймовірно, найвідоміші з цього класу редакторів. Проблема з цими редакторами полягає в тому, що справжні програмісти вважають «те, що ви бачите, те й отримуєте» таким же поганим поняттям для текстових редакторів, як і для жінок. Ні, справжньому програмісту потрібен текстовий редактор типу «ви просили, ви це отримали» — складний, загадковий, потужний, невблаганний, небезпечний. TECO, якщо бути точним. | Деякі з концепцій у цих редакторах Xerox були включені в редактори, що працюють на операційних системах з більш прийнятними назвами. EMACS і VI, ймовірно, найвідоміші з цього класу редакторів. Проблема з цими редакторами полягає в тому, що справжні програмісти вважають «те, що ви бачите, те й отримуєте» таким же поганим поняттям для текстових редакторів, як і для жінок. Ні, справжньому програмісту потрібен текстовий редактор типу «ви просили, ви це отримали» — складний, загадковий, потужний, невблаганний, небезпечний. TECO, якщо бути точним. |
| |
Було помічено, що послідовність команд TECO більше нагадує шум лінії передачі, [[https://web.mit.edu/~yandros/doc/craft-text-editing/Appendix-D.html | ніж читаний текст]]. Однією з найцікавіших ігор із TECO є ввести своє імʼя в командний рядок і спробувати вгадати, що воно вчинить. Практично будь-яка можлива помилка друку під час розмови з TECO, ймовірно, знищить вашу програму, або ще гірше - створить тонкі та загадкові помилки в колись працюючій підпрограмі. | Було помічено, що послідовність команд TECO більше нагадує шум лінії передачі, [[https://web.mit.edu/~yandros/doc/craft-text-editing/Appendix-D.html | ніж читаний текст]]. Однією з найцікавіших забав із TECO є ввести своє імʼя в командний рядок і спробувати вгадати, що воно вчинить. Практично будь-яка можлива помилка друку під час роботи в редакторі TECO, ймовірно, знищить вашу програму, або ще гірше - створить тонкі та загадкові помилки в колись працюючій підпрограмі. |
| |
З цієї причини справжні програмісти не бажають фактично редагувати програму, яка майже працює. Їм набагато простіше просто виправити бінарний об’єктний код напряму, використовуючи чудову програму під назвою SUPERZAP (або її еквівалент на машинах не IBM). Це працює настільки добре, що багато робочих програм у системах IBM не мають жодного відношення до оригінального коду Фортран. У багатьох випадках оригінальний вихідний код більше недоступний. Коли настає час виправляти таку програму, жоден менеджер навіть не подумає надсилати нічого, крім справжнього програміста, щоб виконати цю роботу – жоден структурований програміст, що їсть кіш, навіть не знає, з чого почати. Це називається «безпека роботи». | З цієї причини справжні програмісти не бажають фактично редагувати програму, яка майже працює. Їм набагато простіше просто виправити бінарний об’єктний код напряму, використовуючи чудову програму під назвою SUPERZAP (або її еквівалент на машинах не IBM). Це працює настільки добре, що багато робочих програм у системах IBM не мають жодного відношення до оригінального коду Фортран. У багатьох випадках оригінальний вихідний код більше недоступний. Коли настає час виправляти таку програму, жоден менеджер навіть не подумає надсилати нікого, крім справжнього програміста, щоб виконати цю роботу – жоден структурований програміст, що їсть кіш, навіть не знає, з чого почати. Це називається «безпека робочого місця». |
| |
Деякі інструменти програмування, якими НЕ користуються справжні програмісти: | Деякі інструменти програмування, якими НЕ користуються справжні програмісти: |
===== Справжній програміст за роботою ===== | ===== Справжній програміст за роботою ===== |
| |
Де працює типовий справжній програміст? Які ж програми варті зусиль такої талановитої людини? Ви можете бути впевнені, що жоден справжній програміст не буде виснажуватися до смерті, пишучи програми для дебіторської заборгованості в COBOL або сортуючи списки розсилки для журналу People. Справжньому програмісту потрібні завдання карколомної важливості (буквально!): | Де працює типовий справжній програміст? Які ж програми варті зусиль такої талановитої людини? Ви можете бути впевнені, що жоден справжній програміст не буде виснажуватися до смерті, пишучи програми для дебіторської заборгованості на Коболі або сортуючи списки розсилки для журналу "Піпл". Справжньому програмісту потрібні завдання карколомної важливості (буквально!): |
| |
* Справжні програмісти працюють у Лос-Аламоській національній лабораторії, створюючи симулятори атомної бомби для роботи на суперкомп’ютерах Cray I. | * Справжні програмісти працюють у Лос-Аламоській національній лабораторії, створюючи симулятори атомної бомби для роботи на суперкомп’ютерах Cray I. |
Як ви бачите, багато справжніх програмістів у світі працюють на уряд США, переважно на міністерство оборони. Так і повинно бути. Однак нещодавно на горизонті справжнього програміста утворилася чорна хмара. | Як ви бачите, багато справжніх програмістів у світі працюють на уряд США, переважно на міністерство оборони. Так і повинно бути. Однак нещодавно на горизонті справжнього програміста утворилася чорна хмара. |
| |
Здається, деякі високопоставлені їдці кішу в Міністерстві оборони вирішили, що всі оборонні програми мають бути написані якоюсь великою уніфікованою мовою під назвою «ADA» (зареєстрована торгова марка, DoD). Деякий час здавалося, що ADA судилося стати мовою, яка суперечить усім принципам справжнього програмування — мовою зі структурою, мовою з типами даних, жорсткою типізацією та крапками з комою. Коротше кажучи, мова, розроблена для того, щоб понівечити креативність типового справжнього програміста. На щастя, мова, прийнята Міністерством оборони, має достатньо цікавих функцій, щоб зробити її підхожою: вона неймовірно складна, містить методи для лагодження операційної системи та перегрупування пам’яті, і [[https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD660.html | Едсгару Дейкстрі це не подобається]]. (Дійкстра, я певен, що ви знаєте, був автором «GoTos Considered Harmful» — знаменної праці в методології програмування, яку схвалювали як програмісти Pascal, так і ті, хто їсть кіш). Крім того, рішучий справжній програміст може писати фотрановські програми будь-якою мовою. | Здається, деякі високопоставлені їдці кішу в Міністерстві оборони вирішили, що всі оборонні програми мають бути написані якоюсь великою уніфікованою мовою під назвою «ADA» (зареєстрована торгова марка, DoD). Деякий час здавалося, що ADA судилося стати мовою, яка суперечить усім принципам справжнього програмування — мовою зі структурою, мовою з типами даних, жорсткою типізацією та крапками з комою. Коротше кажучи, мова, розроблена для того, щоб понівечити креативність типового справжнього програміста. На щастя, мова, прийнята Міністерством оборони, має достатньо цікавих функцій, щоб зробити її підхожою: вона неймовірно складна, містить методи для лагодження операційної системи та перегрупування пам’яті, і [[https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD660.html | Едсгару Дейкстрі це не подобається]]. (Дейкстра, я певен, що ви знаєте, був автором [[https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf | GoTos Considered Harmful]] — знаменної праці в методології програмування, яку схвалювали як програмісти Pascal, так і ті, хто їсть кіш). Крім того, рішучий справжній програміст може писати фотрановські програми будь-якою мовою. |
| |
Справжній програміст може піти на компроміс зі своїми принципами і працювати над чимось трохи тривіальнішим, ніж знищення життя, яким ми його знаємо, за умови, що на це є достатньо грошей. Наприклад, у Atari є кілька справжніх програмістів, які створюють відеоігри. (Але не граючи в них. Справжній програміст знає, як перемогти машину щоразу: у цьому немає жодного виклику.) Кожен, хто працює в LucasFilm, є справжнім програмістом. (Було б божевіллям відмовити 50 мільйонам шанувальників «Зоряних воєн»). Частка справжніх програмістів у сфері комп’ютерної графіки дещо нижча за норму, здебільшого тому, що ще ніхто не знайшов використання комп’ютерної графіки. З іншого боку, вся комп’ютерна графіка виконується на Фортран, тому існує достатня кількість людей, які займаються графікою, щоб уникнути необхідності писати програми на Коболі. | Справжній програміст може піти на компроміс зі своїми принципами і працювати над чимось трохи тривіальнішим, ніж знищення життя, яким ми його знаємо, за умови, що на це є достатньо грошей. Наприклад, у Atari є кілька справжніх програмістів, які створюють відеоігри. (Але не граючи в них. Справжній програміст знає, як перемогти машину щоразу: у цьому немає жодного виклику.) Кожен, хто працює в LucasFilm, є справжнім програмістом. (Було б божевіллям відмовити 50 мільйонам шанувальників «Зоряних воєн»). Частка справжніх програмістів у сфері комп’ютерної графіки дещо нижча за норму, здебільшого тому, що ще ніхто не знайшов використання комп’ютерної графіки. З іншого боку, вся комп’ютерна графіка виконується на Фортран, тому існує достатня кількість людей, які займаються графікою, щоб уникнути необхідності писати програми на Коболі. |
| |
* На вечірці справжні програмісти в кутку говорять про безпеку операційної системи та про те, як її обійти. | * На вечірці справжні програмісти в кутку говорять про безпеку операційної системи та про те, як її обійти. |
* Під час футбольного матчу справжній програміст – це той, хто порівнює гру зі своїми симуляціями, надрукованими на складеному віялом папері 11 на 14. | * Під час футбольного матчу справжній програміст – це той, хто порівнює гру зі своїми симуляціями, надрукованими на фальцованому папері 11" на 14". |
* На пляжі справжній програміст малює блок-схеми на піску. | * На пляжі справжній програміст малює блок-схеми на піску. |
* Справжній програміст йде на дискотеку дивитися світломузику. | * Справжній програміст йде на дискотеку дивитися світломузику. |
* На похороні справжній програміст каже: «бідний Джордж! у нього процедура сортування майже запрацювала, як його вдарив інсульт». | * На похороні справжній програміст каже: «бідний Джордж! у нього процедура сортування майже запрацювала, як його вдарив інсульт». |
* У продуктовому магазині справжній програміст — це той, хто наполягає саморучно провести товар повз лазерний касовий сканер, бо він ніколи не довіряє операторам, що ті зроблять правильно з першого разу. | * У продуктовому магазині справжній програміст — це той, хто наполягає саморучно провести товар повз лазерний касовий сканер, бо ніколи не довіряє операторам, що ті зроблять як треба з першого разу. |
| |
===== Природне середовище справжнього програміста ===== | ===== Природне середовище справжнього програміста ===== |