<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Machine Head - Александр О</title><subtitle>Заметки инженера о AI, разработке приложений и строительства технологичного бизнеса</subtitle><author><name>Machine Head - Александр О</name></author><id>https://teletype.in/atom/spaceguest</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/spaceguest?offset=0"></link><link rel="alternate" type="text/html" href="https://machine-head.ru/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=spaceguest"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/spaceguest?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-07-14T00:36:41.894Z</updated><entry><id>spaceguest:skillforce-for-codex-and-claude-code</id><link rel="alternate" type="text/html" href="https://machine-head.ru/skillforce-for-codex-and-claude-code?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=spaceguest"></link><title>Скиллы для Codex и Claude Code</title><published>2026-06-04T12:26:24.617Z</published><updated>2026-06-04T12:31:35.520Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/2b/40/2b407ebb-e8af-467d-b18f-bab55e50adca.png"></media:thumbnail><category term="ai" label="AI"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/7e/b3/7eb35205-fca7-405e-9246-dba7df644615.png&quot;&gt;3 этих скилла в 10х прокачают ваш рабочий процесс разработки. Протестрован в бою на больших production проектах с сотнями тысяч строк кода.</summary><content type="html">
  &lt;p id=&quot;APr6&quot;&gt;3 этих скила в 10х прокачают ваш рабочий процесс разработки. Протестрован в бою на больших production проектах с сотнями тысяч строк кода.&lt;/p&gt;
  &lt;p id=&quot;fqF9&quot;&gt;В наборе 3 скилла:&lt;/p&gt;
  &lt;ul id=&quot;pmkP&quot;&gt;
    &lt;li id=&quot;G3iR&quot;&gt;&lt;code&gt;brainstorm&lt;/code&gt; - помогает структурировать идеи как реализовать ту или иную вещь. Не форсит, подсказывает, легко возвращает агента в канву разговора даже если вы отвлеклись на пару других вопросов. На выходе профессионально составленный дизайн документ.&lt;/li&gt;
    &lt;li id=&quot;d4hR&quot;&gt;&lt;code&gt;planner&lt;/code&gt; - скормите ему дизайн документ и получите четко структурированный план разработки, разбитый по спринтам. Запускайте каждый спринт в отдельной сессии по очереди - контекстного окна в 97% случаев хватит, чтобы выполнить спринт целиком. &lt;/li&gt;
    &lt;li id=&quot;s1yo&quot;&gt;&lt;code&gt;code-review&lt;/code&gt; - скилл специально заточен на проверку спринта. Просто укажите в промпте ссылку на дизайн-документ и план разработки и получите детальное ревью, сфокусированное на проверке точности следования указаниям и продуманному дизайну. &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;IELN&quot;&gt;Пользуйтесь с удовольствием! Обратная связь приветствуется!&lt;br /&gt;Ссылка на скилы на Github - &lt;a href=&quot;https://github.com/pridees/skillforce&quot; target=&quot;_blank&quot;&gt;https://github.com/pridees/skillforce&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Оставайтесь на связи и подключайтесь к сообществу в Тг &lt;a href=&quot;https://t.me/machine_head_ru&quot; target=&quot;_blank&quot;&gt;MachineHead&lt;/a&gt;.&lt;/p&gt;

</content></entry><entry><id>spaceguest:prishlo-vremia-pisat-kod-na-estestvennom-yazike</id><link rel="alternate" type="text/html" href="https://machine-head.ru/prishlo-vremia-pisat-kod-na-estestvennom-yazike?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=spaceguest"></link><title>Раньше мы писали на Assembler, но с современными языками нам не нужно знать как он работает!</title><published>2026-06-02T18:04:04.755Z</published><updated>2026-06-02T18:04:04.755Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/0f/d3/0fd39403-22b7-4ed6-a23f-e8cd656a61dd.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/b8/0a/b80a70e9-4d0c-4ff5-b406-b8755ba6eabe.png&quot;&gt;&quot;...пришло время писать на естественном языке, скармливать его AI и пофиг в какой код он превращается&quot;. Такая аргументация прозвучала от...</summary><content type="html">
  &lt;p id=&quot;J77F&quot;&gt;&lt;strong&gt;&amp;quot;...пришло время писать на естественном языке, скармливать его AI и пофиг в какой код он превращается&amp;quot;&lt;/strong&gt;. Такая аргументация прозвучала от программиста в одной из жарких дискуссий, на утверждение &amp;quot;людям все равно нужно понимать как работает код&amp;quot;.&lt;/p&gt;
  &lt;p id=&quot;Bjei&quot;&gt;Звучит убедительно на первый взгляд, не так ли? Но давайте разберемся.&lt;/p&gt;
  &lt;p id=&quot;ANTx&quot;&gt;За обработку естественного языка отвечает биологическая машина - наш мозг. Естественный язык формируется из картины мира и формирует ее. У нас бы не было проблем договариваться, не существовало фразы &amp;quot;Я тебя неправильно понял&amp;quot; если бы естественный язык на 100% был формален по отношению к сущности передаваемой информации. Он слишком емкий и полагается на многослойный контекст нашего опыта, убеждений, предпочтений и многое другое.&lt;/p&gt;
  &lt;p id=&quot;0jwF&quot;&gt;Современные языки программирования представляют собой формальный способ описать поведение машины. Компиляторы также подчиненны формальной логике. Один и тот же высокоуровневый код скомпилируется в один и тот же машинный (для конкретной архитектуры, естессно). &lt;/p&gt;
  &lt;p id=&quot;Tp2q&quot;&gt;Таким образом, будь у нас компилятор, который случайно бы упустил пару строк или придумал пару других, это сделало бы написание надежных программ невозможным.&lt;/p&gt;
  &lt;p id=&quot;gDUY&quot;&gt;Возвращаясь к AI, даже речи нет, что каждый запрос на генерацию произведет каждый раз одинаковый код. Он будет разным в пределах отдельных запросов к одной модели, и кардинально другим при смене моделей. Одна модель склонна тяготеть к одним кодовым формам, следующая будет тяготеть к совсем другим. &lt;/p&gt;
  &lt;p id=&quot;ljzz&quot;&gt;Вы можете справедливо заметить - мы же пользуемся приемами формализации задачи в спецификации! Да, верно, мы сужаем (как умеем) естественный язык до некоего формального оптимума, комфортного людям разных специализаций. Но и он не лишен двусмысленности. То есть, чтобы AI создал нам определенный код с какой-то гарантией, нам нужно дать прямое указание на генерацию конкретного поведения программы вплоть до отдельных строк. Де-факто, это то же программирование, только без строго синтаксиса. Но даже в этом случае мы не можем (в данный момент) утверждать, что сгенерированный код соответствует ожиданиям. &lt;/p&gt;
  &lt;p id=&quot;ZX0x&quot;&gt;Стартап широко известного в узких кругах Андрея Бреслава CodeSpeak пытается сыграть на этом поле. Его идея как раз в построчном описании генерируемого нейронкой результата. Application.cs.md по задумке должен превратиться в Application.cs, что должно дать выигрыш в уменьшении кодовой базы до нескольких раз и снятия требований к знанию синтаксиса конкретного языка для изменения программы - его смогут читать и понимать не только программисты. Идея интересная, но: &lt;br /&gt;- как дебажить ошибки не связанные с требованиями? Так нам все еще нужно знать асинхронную модель Java или CLR?&lt;br /&gt;- как, не проваливаясь к синтаксису ЯП, связать код объявленный в модуле А с кодом в модуле Б? &lt;br /&gt;- как отлаживать поэтический стиль Пети, который генерирует код с ошибкой?&lt;/p&gt;
  &lt;p id=&quot;0kcw&quot;&gt;И масса других вопросов. &lt;/p&gt;
  &lt;p id=&quot;JDKj&quot;&gt;Если все это требует перехода к формализму синтаксиса ЯП, то выигрыша как будто бы и нет. &lt;/p&gt;
  &lt;p id=&quot;SlcZ&quot;&gt;Перед тем как закруглиться, мне хотелось бы озвучить вот какую мысль. Умная генерация текста, это бесспорно хорошо, где-то мы становимся продуктивнее, очень неравномерно и совсем не в тех местах, о которых талдычат AI-фанатики на каждом углу, не создававшие ничего серьезнее прототипов с кодовым мусором внутри. Как программисты, создающие промышленный код, мы в той же точке, что и до. Чтобы наступило завтра, AI должен стать единственной программой с которой взаимодействуют люди и машины для выполнения любых задач. А изобилие программ и их написание должно уйти в прошлое. Только девайс и AI. Но боюсь это перспектива не ближайших лет.&lt;/p&gt;
  &lt;p id=&quot;lWqJ&quot;&gt;Тизер. В следующем посте обсудим в каком на самом деле состоянии сейчас рынок труда. Оставайтесь на связи с &lt;a href=&quot;https://t.me/machine_head_ru&quot; target=&quot;_blank&quot;&gt;MachineHead&lt;/a&gt;.&lt;/p&gt;

</content></entry><entry><id>spaceguest:zameni-li-ai-programmistov</id><link rel="alternate" type="text/html" href="https://machine-head.ru/zameni-li-ai-programmistov?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=spaceguest"></link><title>Так заменит ли AI разработчиков?</title><published>2026-06-02T17:57:01.498Z</published><updated>2026-06-02T18:33:54.142Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/a0/c3/a0c35779-36d7-426d-89c9-f13983d5d67e.png"></media:thumbnail><category term="ai" label="AI"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/5b/61/5b613cf2-b3d3-40bf-911b-c4d6894150c5.png&quot;&gt;Я сам прошел все стадии от отрицания до принятия. Нам всем очень хочется творить, но не у всех есть ресурсы для этого. AI ощущается как допинг, обещая  пробежать на нем не только спринт прототипа, но и весь марафон.</summary><content type="html">
  &lt;p id=&quot;2Tvu&quot;&gt;Я сам прошел все стадии от отрицания до принятия. Нам всем очень хочется творить, но не у всех есть ресурсы для этого. AI ощущается как допинг, обещая  пробежать на нем не только спринт прототипа, но и весь марафон. &lt;/p&gt;
  &lt;p id=&quot;a4Xw&quot;&gt;Я проработал с агентом почти год. Однозначно позитивные эффекты:&lt;/p&gt;
  &lt;p id=&quot;156X&quot;&gt;1) Время отладки проблем уменьшается на порядки. &lt;br /&gt;2) Время выполнения микрозадач так же на порядки. &lt;br /&gt;3) Время на выполнение средних задач такое же, как если бы я делал руками.&lt;/p&gt;
  &lt;p id=&quot;swdW&quot;&gt;А вот время на выполнение сложных задач увеличилось.&lt;/p&gt;
  &lt;p id=&quot;GjNc&quot;&gt;В подходе к очень большой задаче, программист сначала формирует общую картину, прикидывает дизайн системы целиком, а потом прорабатывает отдельные части, подкладывая под слои интерфейсы, чтобы можно было работать с любым из них. У агента с «прикинуть картину целиком», держа ее в «голове» поработать с отдельными частями - нерешаемая проблема. Если несколько раз запустить агента против «верхнеуровневого описания задачи» получишь каждый раз новую интерпретацию.&lt;/p&gt;
  &lt;p id=&quot;4js0&quot;&gt;Даже если итеративно работать с агентом, он всегда отклоняется от твоего «как надо». Прерывать бесполезно, это оборачивается утерей контекста и откатом к старту.&lt;/p&gt;
  &lt;p id=&quot;ktJX&quot;&gt;В итоге, либо принимаешь код как есть и ревьюишь на уровне отдельных строк, либо делаешь почти всё руками, а значит выигрыша по скорости нет. &lt;/p&gt;
  &lt;p id=&quot;Mxrs&quot;&gt;И всё это ощущается как припарка, но не замена. Не считая минус вайб к программированию в целом. &lt;/p&gt;
  &lt;p id=&quot;biCi&quot;&gt;Я каждый день слышу, что кто-то там дирижирует оркестром claude-кодов, но почему-то не видно продуктов из этой адской кузни. Новости типа той, что claude переписал bun с Zig на Rust не в счет. Невелика заслуга сконвертировать отполированный людьми код с одного языка на другой.&lt;/p&gt;
  &lt;p id=&quot;Pjoh&quot;&gt;Так что нет, не заменит. Не Claude. Ни GPT. Ни кто-либо другой. Также &lt;a href=&quot;https://arxiv.org/abs/2603.15381&quot; target=&quot;_blank&quot;&gt;не будет AGI на llm моделях&lt;/a&gt;. Пора перестать вестись на pre-IPO маркетинг и дозировать допинг с работой головой и руками.&lt;/p&gt;
  &lt;p id=&quot;Eog5&quot;&gt;Подписывайтесь на &lt;a href=&quot;https://t.me/machine_head_ru&quot; target=&quot;_blank&quot;&gt;MachineHead&lt;/a&gt; и делитесь с друзьями! Stay tuned! ✌️&lt;/p&gt;

</content></entry><entry><id>spaceguest:MM0h4nN0mq_</id><link rel="alternate" type="text/html" href="https://machine-head.ru/MM0h4nN0mq_?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=spaceguest"></link><title>TL:DR к статье, для тех кто не тимлид и не руководитель, но хочет резко прокачать свою работу с агентами</title><published>2026-06-02T17:54:14.633Z</published><updated>2026-06-02T17:54:14.633Z</updated><category term="ai" label="AI"></category><summary type="html">Я вывел для себя, что мне веселее когда агент не пишет всё сам по одному промпту &quot;сделай хорошо, а плохо постарайся не делать&quot;, а помогает креативить, комплексно искать подходы к реализации фич, подбирать архитектурные решения, собирать спецификацию, которую я одобрил. Где вместо предположения &quot;наверное там всё ок&quot;, я точно знаю потому, что каждый шаг обдумывал и подтвердал.</summary><content type="html">
  &lt;p id=&quot;mkoA&quot;&gt;Я вывел для себя, что мне веселее когда агент не пишет всё сам по одному промпту &amp;quot;сделай хорошо, а плохо постарайся не делать&amp;quot;, а помогает креативить, комплексно искать подходы к реализации фич, подбирать архитектурные решения, собирать спецификацию, которую я одобрил. Где вместо предположения &amp;quot;наверное там всё ок&amp;quot;, я точно знаю потому, что каждый шаг обдумывал и подтвердал. &lt;/p&gt;
  &lt;p id=&quot;PRV0&quot;&gt;Для этого, путем многих итераций был создан скилл brainstorm. Он организует весь этот цикл. Просто попробуйте. Работает в Codex, Claude Code, и более менее других популярных агентах. Обычно, в промпте я триггерю скилл вручную и начинаю фразу &amp;quot;давай спроектируем/продумаем и тд&amp;quot;. Крайне полезно после перечислить UserStory или верхнеуровневые требования. Самая крутая фича этого скила: возможность обсудить проблему/подход/решение с агентом и когда вопрос уточнен, он сам возвращается на прежний трек последовательных вопросов-ответов. Без форка сессии, с сохранением в контексте потока мыслей и гипотез.&lt;/p&gt;
  &lt;p id=&quot;03u7&quot;&gt;Далее. Эту спеку я перекладываю в скилл Planner. Этот скилл разбивает спеку на спринты так, чтобы с 90% вероятностью 1 спринт уложился в 1 контекстное окно и выполнен за 1 заход. Кто бы что ни говорил, а 1М контекста в клоде либо оверюзает токены, либо качество деградирует. Модель держит форму до 400К, но после ... такое себе. GPT 5.5 стал есть драматически меньше токенов и я перестал сталкиваться с ухудшением результатов после автокомпакта.&lt;/p&gt;
  &lt;p id=&quot;3DyA&quot;&gt;На выходе обоих скиллов я получаю 2 артекфакта: спека + план. Далее я приступаю к методичной работе plan-implement используя простейший промпт, как например этот, когда делал дешборды аналитики в Prospect Guide:&lt;/p&gt;
  &lt;p id=&quot;Loek&quot;&gt;&lt;code&gt;Бери в работу Sprint 1 плана content-section-analytics-plan.md&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;Qitl&quot;&gt;И финалочка - скилл code-review. Через него я прогоняю результат работы по спринту. &lt;/p&gt;
  &lt;p id=&quot;y5NR&quot;&gt;&lt;code&gt;/code-review Sprint 1 of content-section-analytics-plan.md&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;KyMv&quot;&gt;Не доверяясь целиком машине, ревьюю глазами, правлю, слежу за полной тестов и тд. В масштабе 1 спринта, делать это комфортно, есть возможность сверяться со спекой. &lt;/p&gt;
  &lt;p id=&quot;h778&quot;&gt;Вы вероятно спросите, почему это лучше популярного набора скилов superpowers, в котором есть brainstorm, write-plan, implement и другие? &lt;/p&gt;
  &lt;p id=&quot;zPyL&quot;&gt;1. Их brainstorm не дает подумать или изменить решение. Задает 3-4 вопроса, зачастую просто подтверждая указанные требования и фиксирует их в спеке. Я хочу, чтобы вопросов было больше, они были глубже, агент фильтровал их по значимости, исследовал код и нашел проблемы, невидимые с поверхности и обсудил и со мной. А потом убедился, что он правильно понял мое намерение. &lt;/p&gt;
  &lt;p id=&quot;TM1x&quot;&gt;2. write-plan пишет готовые вставки куда код воткнуть. Это дичь, которая меня дико бесила. Я хочу, чтобы спека и план формулировали ЧТО я хочу и КАК это лучше сделать, а не впихивали в план готовые куски кода, чтобы потом растасовать их по файлам. Ну и этот план нереально рабивать на куски. Useless вообщем. Хорошо для замены примитивного промптинга, но для серьезной работы никуда не годится.&lt;/p&gt;
  &lt;p id=&quot;yS6q&quot;&gt;Вот мой пак скилов завернутый в набор &lt;a href=&quot;https://github.com/pridees/skillforce&quot; target=&quot;_blank&quot;&gt;Skillforce&lt;/a&gt; на Github, забирайте, пользуйтесь, кидайте идеи и фидбек. Ставятся на изи, стандартным способом в любой репозиторий.&lt;/p&gt;
  &lt;p id=&quot;xmhj&quot;&gt;Подписывайтесь на &lt;a href=&quot;https://t.me/machine_head_ru&quot; target=&quot;_blank&quot;&gt;MachineHead&lt;/a&gt; и делитесь с друзьями! Stay tuned! ✌️&lt;/p&gt;

</content></entry><entry><id>spaceguest:ai-with-large-engineering-team</id><link rel="alternate" type="text/html" href="https://machine-head.ru/ai-with-large-engineering-team?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=spaceguest"></link><title>ИИ в больших инженерных командах</title><published>2026-06-02T17:50:22.962Z</published><updated>2026-06-02T17:50:22.962Z</updated><category term="ai" label="AI"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/a2/e1/a2e1afbf-2409-411c-85e6-60ce623df78e.png&quot;&gt;В этом гайде — что нужно построить, чтобы синьоры сами выбрали работать с агентом, а через три месяца стали евангелистами</summary><content type="html">
  &lt;p id=&quot;mNyY&quot;&gt;Давно собирался расписать.&lt;/p&gt;
  &lt;p id=&quot;fB60&quot;&gt;В разговорах с тимлидами и CTO постоянно одна и та же картина: дали кодерам ИИ (тот же Cursor), надеялись на буст продуктивности, а бустанули число инцидентов или просто замедлились в тех или иных местах.&lt;/p&gt;
  &lt;p id=&quot;gXDN&quot;&gt;Поначалу я думал, дело в инструментах. Потом в зрелости команд. Потом в моделях. Оказалось, нет. Подход. Административная инициатива &amp;quot;сверху-вниз&amp;quot; без ясного понимания как это будет работать на местах, не работает с разработчиками высоких грейдов.&lt;/p&gt;
  &lt;p id=&quot;E97z&quot;&gt;Расписал, как с этим жить. &lt;/p&gt;
  &lt;p id=&quot;ODAS&quot;&gt;Туториал для IT руководителей как дать ИИ команде, чтобы пересадить ребят на работу с агентами: &lt;/p&gt;
  &lt;p id=&quot;RRu1&quot;&gt;1️⃣ почему решение спущенное сверху-вниз проваливается, &lt;br /&gt;2️⃣ что такое «подчинённая проактивная позиция» агента&lt;br /&gt;3️⃣ три фазы интеграции агентского кодинга. &lt;/p&gt;
  &lt;p id=&quot;bef4&quot;&gt;Там же скилы для агентов и расписанный воркфлоу, как кодить в кодовой базе любого масштаба, которыми я давно хотел поделиться. Наконец-то всё запаковал в статью для удобного восприятия не только разработчиками.&lt;/p&gt;
  &lt;p id=&quot;HekB&quot;&gt;Подписывайтесь на MachineHead и делитесь с друзьями! Stay tuned! ✌️&lt;/p&gt;
  &lt;p id=&quot;ahnv&quot;&gt;&lt;a href=&quot;https://habr.com/ru/articles/1030314&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/articles/1030314&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>spaceguest:end-of-file</id><link rel="alternate" type="text/html" href="https://machine-head.ru/end-of-file?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=spaceguest"></link><title>End of file (EOF)</title><published>2021-04-29T08:51:35.389Z</published><updated>2024-10-14T12:15:26.861Z</updated><category term="programmistskie-zametki" label="Программистские заметки"></category><tt:hashtag>programming</tt:hashtag><summary type="html">Сегодня расскажу об одной загадочной штуке под названием EOF. &quot;Спецсимвол в конце файла!&quot; - воскликнет юный падаван будет не прав. Разберемся, что за мазафака такая.</summary><content type="html">
  &lt;tt-tags id=&quot;vije&quot;&gt;
    &lt;tt-tag name=&quot;programming&quot;&gt;#programming&lt;/tt-tag&gt;
  &lt;/tt-tags&gt;
  &lt;p id=&quot;AdRM&quot;&gt;Сегодня расскажу об одной загадочной штуке под названием EOF. &amp;quot;Спецсимвол в конце файла!&amp;quot; - воскликнет юный падаван будет не прав. Разберемся, что за мазафака такая.&lt;/p&gt;
  &lt;p id=&quot;5Xxb&quot;&gt;&lt;strong&gt;EOF&lt;/strong&gt; - это особая ситуация! Которая может быть проверена с помощью средств стандартных библиотек любого языка программирования. Не существует никого особого символа на манер символа &lt;strong&gt;new line&lt;/strong&gt; &amp;quot;&lt;strong&gt;\n&amp;quot;.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;fk3L&quot;&gt;Чтобы убедиться в этом достаточно вспомнить, что в Unix системах, терминал умеет имитировать ситуацию &lt;strong&gt;EOF&lt;/strong&gt; с помощью сочетания клавиш &lt;strong&gt;Ctrl-D,&lt;/strong&gt; которая прерывает поток ввода более гуманным способом, чем SIGINT. &lt;/p&gt;
  &lt;p id=&quot;rcQG&quot;&gt;Ситуация &lt;strong&gt;&amp;quot;End of file&amp;quot;&lt;/strong&gt; это набор признаков, при которых можно сделать вывод что файл закончился. Если пойти &amp;quot;в лоб&amp;quot; и попытаться читать файл посимвольно, в надежде, что цикл прекратится на последнем символе - то можно обратить внимание, что кол-во прочитанных символов будет больше, чем мы ожидаем. При при отсутствии проверки на &lt;strong&gt;EOF&lt;/strong&gt;, последним символом окажется - &lt;strong&gt;0&lt;/strong&gt;. В этот момент цикл упирается в конец файла и зависает, без передачи управления дальнейшим инструкциям.&lt;/p&gt;
  &lt;p id=&quot;YZQG&quot;&gt;В каком нибудь питоне этот процесс так глубоко спрятан под капот функций чтения из файла, что коренные питонисты, не выходившие за пределы уютных py файлов даже не в курсах, че это ваще.&lt;/p&gt;
  &lt;p id=&quot;ZAFr&quot;&gt;&lt;strong&gt;Читаем файл из Python:&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;python&quot; id=&quot;5app&quot;&gt;with open(&amp;#x27;somefile&amp;#x27;) as openfileobject:
    for line in openfileobject:
        do_something()&lt;/pre&gt;
  &lt;p id=&quot;eCuL&quot;&gt;че вообще? какой EOF. Закончились строки - вышел из цикла.&lt;/p&gt;
  &lt;p id=&quot;FLUJ&quot;&gt;В то же время &lt;strong&gt;Си&lt;/strong&gt;-шнику стоит быть начеку:&lt;/p&gt;
  &lt;pre data-lang=&quot;c&quot; id=&quot;5BIv&quot;&gt;while ((ch != &amp;#x27;\n&amp;#x27;) &amp;amp;&amp;amp; (ch != EOF)) {
// read the next ch
}&lt;/pre&gt;
  &lt;p id=&quot;fEii&quot;&gt;Внимательный юзер заметит что &lt;strong&gt;char&lt;/strong&gt; проверяется на &lt;strong&gt;EOF&lt;/strong&gt;, аналогично &lt;strong&gt;\n, &lt;/strong&gt;будто это символ такой. Как же так? Дело в том что char - беззнаковое число. В случае, если достигнут конец файла &lt;strong&gt;EOF&lt;/strong&gt; вернет &lt;strong&gt;-1. &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;imvI&quot;&gt;Способ проверки концовки файла в разных языках разный. Вот такая загогулина. &lt;/p&gt;

</content></entry></feed>