С язык программирования учебник
Язык программирования Си
практический курс
Что это такое?
В свое время (1991-1992 года), выбрав язык Си в качестве основного языка программирования для математических классов, автор столкнулся с проблемой отсутствия нормальных учебников, которые можно было бы рекомендовать школьникам. Это вынудило его написать свой конспект лекций, который можно было бы назвать «Практический курс программирования на Си» — в него вошли те сведения, которые действительно требовались автору на практике. Многолетний опыт преподавания показал, что конспект действительно востребован и широко используется как школьниками, так и выпускниками.
В качестве среды разработки используется бесплатно распространяемая оболочка Dev-C++ с открытым исходным кодом, включающая компилятор GCC.
Автор будет благодарен за отзывы и конструктивную критику по поводу содержания и оформления этих материалов. Если вы заметили ошибку или у вас есть предложения, замечания, жалобы, просьбы и заявления, пишите.
Лицензионное соглашение
Все опубликованные ниже материалы могут быть свободно использованы в некоммерческих целях при условии сохранения авторства.
Скачивание материалов означает, что вы приняли условия этого лицензионного соглашения.
Скачать
Конспект распространяется свободно в формате PDF. Для просмотра требуется бесплатный просмотрщик Acrobat Reader. Конспект курса условно разбит на 4 части:
- Введение в программирование на языке Си (860 Кб)29.03.2014
Изучение основных конструкций языка и приемов написания программ. - Xранение и обработка данных (792 Кб)21.11.2013
Язык Си: массивы, матрицы, структуры, символьные строки, структуры, рекурсия. - Разработка программ на языке Си (937 Кб)01.03.2014
Приемы проектирования программ, структурное программирование, целочисленные алгоритмы, численные методы, моделирование. - Динамические структуры данных в языке Си (666 Кб)11.06.2009
Списки, стеки, деревья, графы.
Презентации
Для преподавателей и учащихся могут быть полезны презентации, построенные на основе этого конспекта. Их можно скачать на странице Презентации.
Методика
В программе предусмотрено изучение языка Си в 7-11 классах:
Часть I представляет собой расширенный конспект курса 7 класса. Введение в язык Си строится на базе алгоритмической подготовки, которую дети получили в 6 классе, работая с исполнителями.
Основная задача — познакомить учащихся с основными конструкциями языка Си: циклами, условными операторами, процедурами. Весьма успешно проходит изучение разделов, связанных с графикой, анимацией.
Для работы с графикой через браузер можно использовать онлайн-сервис Антона Деникина.
Программа включает следующие разделы (в скобках указана часть конспекта): Массивы (II), Работа с файлами (II), Символьные строки (II), Вращение объектов (III), Моделирование (III). Особое внимание уделяется изучению алгоритмов работы с массивами, в том числе поиска, сортировки и т.п. Дается понятие об эффективности вычислительных методов.
Основное внимание уделяется изучению методов разработки программ на языке Си. Учащиеся выполняют индивидуальное задание, в ходе которого учатся строить графики на экране, знакомятся с преобразованиями систем координат, изучают методы решения уравнений, знакомятся с численными методами, учатся правильно оформлять программы (разделы 1-2 части III). Одно из заданий посвящено использованию метода Монте-Карло для вычисления площади сложной фигуры. Из новых разделов изучаются также Матрицы (II), Массивы символьных строк (II). Вводится понятие указателей и изучаются простейшие операции с ними.
Изучения языка Си выходит на более серьезный уровень. Основные темы — Управление памятью (II), Рекурсия (II), Структуры (II). Предусмотрено изучение языка Паскаль в качестве второго языка программирования. С этого момента алгоритмы на теоретических занятиях записываются поочередно на двух языках.
Изучаются не столько особенности языков, сколько алгоритмы. Основные разделы — Численные методы (III), Моделирование (III), Динамические структуры данных (IV).
Книги по языку Си для начинающих и не только
- Книги, 21 марта 2017 в 21:09
- Иван Бирюков
Язык Си — это очень мощный язык программирования, и к тому же один из самых популярных. Он очень гибок и не накладывает на программиста никаких ограничений, но именно это и может стать проблемой при изучении. Поэтому мы подобрали для вас несколько книг, которые помогут разобраться с основами языка, не отстрелив себе пару конечностей 😉
The C Book
Книга «The C Book» предназначена для тех, кто уже имеет опыт программирования на высокоуровневых языках. Она посвящена моментам, характерным именно для Си.
- Введение в Си.
- Переменные и арифметика.
- Логические выражения и условные операторы.
- Функции.
- Массивы и указатели.
- Структуры данных.
- Препроцессор.
- Особенности Си.
- Библиотеки.
- Примеры программ.
Программирование на С для начинающих
«Программирование на С для начинающих» — учебник для максимально быстрого освоения языка, содержащий в себе много практического материала. Изложение четкое и простое, вы узнаете, как организовать программу, хранить и отображать данные, работать с переменными, операторами, вводом/выводом, указателями, массивами, функциями и многими другими вещами.
Пособие содержит всё самое важное, что вам нужно знать для программирования на C:
- Структура программы.
- Логические операторы и выражения.
- Переменные.
- Циклы.
- Встроенные функции.
- Массивы и указатели.
- Тестирование программ.
C Elements of Style
«C Elements of Style» — это полезное руководство, описывающее основы хорошего стиля программирования. Оно научит вас писать код, который будет легко читать, понимать и поддерживать.
В книге вы найдёте советы по написанию комментариев, именованию переменных, форматированию, организации каталогов, созданию сборочных файлов и другим темам.
Изучаем программирование на C
Книга из серии Head First, которая использует те же подходы, что и другие книги цикла. Материал подается в достаточно игровой форме и с использованием огромного количества иллюстраций. В книге рассматриваются:
- основы языка Си;
- динамическое управление памятью;
- указатели и арифметические операции с ними;
- многопоточность;
- сетевое программирование.
Если вы не можете осилить классические учебники по Си, то не отчаивайтесь и попробуйте эту книгу. Она подойдет даже для новичков, не изучавших никогда программирование вообще.
Программирование на C для начинающих
Еще один хороший учебник по Си. Рассчитан на читателей, никогда не писавших кода и стремящихся начать свое знакомство с программированием именно с Си. Написан доступным языком. Из-за нацеленности на новичков книга охватывает не все аспекты языка. Из минусов можно выделить опечатки в тексте и программном коде. Но для настоящих кодеров такое никогда не было проблемой!
Build Your Own Lisp
Изучайте язык Си и одновременно пишите свой язык программирования — минималистскую версию Lisp — меньше чем за 1000 строк кода.
Эта книга предназначена для тех, кто хочет изучить Си и / или написать свой язык программирования. Однако вам явно потребуется какой-то опыт написания кода, поэтому в качестве первой книги мы её не рекомендуем.
The GNU C Reference Manual
«The GNU C Reference Manual» — это шпаргалка по языку Си стандартов C89 ANSI, C99 ISO и расширениям GNU. Она точно не нужна начинающим программистам.
- Лексические элементы.
- Типы данных.
- Выражения и операции.
- Операторы.
- Функции.
- Структура программы и области видимости.
- Пример программы.
The GNU C Programming Tutorial
Руководство «The GNU C Programming Tutorial» понятным образом объясняет читателю основы языка. Оно подробно описывает все основные элементы Си и рассказывает, как писать на нём программы, делая акцент на компиляторе GNU/Linux.
Рассматриваются такие темы, как функции, переменные и их объявление, области видимости, операторы, указатели, циклы, массивы, строки, а также многие другие.
Essential C
Эта книга — небольшая методичка, составленная в Стэнфорде. Она вкратце описывает все основы языка Си. Из-за сжатых объяснений рекомендуется, чтобы у читателя уже был опыт программирования.
Затрагиваются такие темы: переменные, операторы, циклы, функции, ссылки, указатели, структуры, препроцессор и стандартная библиотека.
- Вступление.
- Базовые типы и операторы.
- Условные операторы.
- Сложные типы данных.
- Функции.
- Препроцессор.
- Массивы и указатели.
- Стандартная библиотека.
Beej’s Guide to C Programming
Книга «Beej’s Guide to C Programming» пытается вывести читателя из состояния полного непонимания Си и дать ему понять, что Си — это лучший язык программирования.
- Основы программирования.
- Переменные, выражения и операторы.
- Возвращение к основам.
- Функции.
- Переменные, часть 2.
- Указатели.
- Структуры.
- Массивы.
- Строки.
- Динамическая память.
- Продвинутые фичи.
- Стандартная библиотека ввода / вывода.
- Управление строками.
- Математика.
Modern C
«Modern C» стремится мотивировать читателя повысить свой уровень знания языка. Книга разделена на 5 уровней:
- Первый уровень предоставляет читателю базовые знания о программах Си, их целях и структуре.
- Второй уровень описывает основные принципы и фичи, такие как условные операторы, типы данных и функции.
- Третий уровень ведёт к сердцу Си. Он рассказывает об указателях, модели памяти языка и его стандартной библиотекеe.
- Четвёртый уровень затрагивает такие продвинутые темы, как производительность, атомарность, потоки, и другие.
- Пятый уровень — в нём автор описывает своё видение развития языка.
An Introduction to GCC
Руководство «An Introduction to GCC» рассказывает о C и C++ компиляторах GNU, gcc and g++, являющихся частью GNU Compiler Collection (GCC).
- Вступление.
- Компиляция Си-программы.
- Опции компиляции.
- Использование препроцессора.
- Компиляция для отладки.
- Компиляция с оптимизацией.
- Компиляция CPP-программы.
- Платформо-специфические опции.
- Решение проблем.
- Инструменты.
- Принципы работы компилятора.
- Изучение скомпилированных файлов.
- Типичные ошибки.
- Дополнительные материалы.
Вот ещё несколько бесплатных книг по языку Си:
И, разумеется, не стоит забывать про каноничную книгу Кернигана и Ритчи: The C Programming Language. Сложная, не для начинающих, но по праву признана шедевром.
C / C++
Русский
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ. Энтони Уильямс
В наши дни компьютеры с несколькими многоядерными процессорами стали нормой. .

Программирование на С для начинающих. М. МакГрат
С — это компактный компьютерный язык программирования общего назначения, созданный .

Алгоритмы и программы. Язык С++. Е. Конова, Г. Поллак
При изложении материала авторы используют методику обучения от алгоритмов к .

Expert C Programming: Deep Secrets. P. Linden
C programming is a craft that takes years to perfect. .

Программирование на С для начинающих. 3-е изд. Грег Перри, Дин Миллер
Простое и понятное руководство по программированию на С поможет быстро .

Программирование: учебное пособие. Л.А. Надейкина
В Учебном пособии рассматривается на базе языка С++ одна из .

Введение в язык Си++. А.В.Столяров
Краткое (объём четвёртого издания — 136 страниц) введение в язык .

Объектно-ориентированное программирование в С++. Р. Лафоре
Основная задача этой книги — научить вас создавать программы на .

Введение в C++. 4-ое издание. А. В. Столяров
Краткое введение в язык Си++. Содержание построено по принципу плавного .

Объектно-ориентированное программирование на C++. Пол Айра
Если вы хотите писать качественные приложения, с хорошей архитектурой и .

Язык программирования С. Брайан Керниган, Деннис Ритчи
Книга по программированию от авторов языка C.
В своё .

Метапрограммирование шаблонов C++ в задачах математической физики. М.М. Краснов
Рассматривается применение метапрограммирования шаблонов языка C++ для упрощения записи алгоритмов .
English
The C programming language. 2 ed. B. W. Kernighan, D. M. Ritchie
The computing world has undergone a revolution since the publication .
Test Driven Development for Embedded C. J. W. Grenning
I was first exposed to Test-Driven Development at the first .
C Programming in Linux. David Haskins
So where do we start? A sensible place is “at .
Structured Programming with C++. Kjell Bäckman
The purpose of the course Structured Programming with C/C++ is .
Understanding and Using C Pointers. R. M. Reese
Numerous books have been written about C. They usually offer .
Programming in C. S. G. Kochan
The C programming langguage was pioneered by Dennis Ritchie at .
API Design for C++. Martin Reddy
API Design for C++ provides a comprehensive discussion of Application .
The C++ Standard Library. Nicolai M. Josuttis
The Best-Selling C++ Resource Now Updated for C++11
The .
C++ Templates. David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor
Templates are among the most powerful features of C++, but .
Effective Modern C++. Scott Meyers
Topics include:
The pros and cons of braced initialization, .
Objective-C for Absolute Beginners. Gary Bennett, Brad Lees, Mitchell Fisher
Learn Objective-C and its latest release, and learn how to .
Optimized C++. Kurt Guntheroth
This book is here to help you get your job .
Программирование на С для начинающих, Майк МакГрат, 2016
Программирование на С для начинающих, Майк МакГрат, 2016.
В этой книге с помощью примеров программ и иллюстраций, показывающих результаты работы кода, разбираются вес ключевые аспекты языка С. В этой книге описано даже то, как установить бесплатный компилятор для языка С и работать в нем, — у вас просто не будет шансов ошибиться!
Книга идеально подойдет программистам, переключающимся на работу с другим языком, студентам, изучающим язык С, а также тем, кто только начинает свою профессиональную деятельность и хочет научиться основам процедурного программирования.
Установка компилятора языка С.
Программы на языке С изначально создаются как простые текстовые файлы, сохраняемые с расширением .с. Они могут быть написаны в любом текстовом редакторе, даже в программе Блокнот (Notepad) операционной системы Windows — никакого специального программного обеспечения не требуется.
Для того чтобы выполнить программу, написанную на языке С, необходимо ее «скомпилировать» в байт-код, который компьютер сможет понять. Компилятор языка С считывает оригинальную текстовую версию программы и переводит ее во второй файл, имеющий исполняемый байтовый формат, который сможет распознать компьютер.
Если текст программы содержит синтаксические ошибки, компилятор об этом сообщит, и исполняемый файл не будет построен.
Один из наиболее популярных компиляторов языка С — GNU С Compiler (GCC) — доступен бесплатно под лицензией General Public License (GPL). Он включен во все дистрибутивы операционной системы Linux. GNU С Compiler был использован для компилирования в исполняемый код всех примеров этой книги.
Оглавление.
Введение.
1 Приступаем к работе.
Введение в язык С.
Установка компилятора языка С.
Написание программы на языке С.
Компилирование программы на языке С.
Понимание процесса компилирования.
Заключение.
2 Сохранение значений переменных.
Создание переменных в программе.
Отображение значений переменных.
Ввод значений переменных.
Спецификаторы типов данных.
Использование глобальных переменных.
Размещение переменных в регистрах.
Преобразование типов данных.
Создание массивов переменных.
Описание нескольких измерений.
Заключение.
3 Установка значений переменных.
Объявление констант в программе.
Перечисление значений констант.
Создание константного типа.
Определение констант.
Отладка с помощью определений.
Заключение.
4 Выполнение операций.
Выполнение арифметических операций.
Присваивание значений.
Сравнение значений.
Логические значения.
Проверка условий.
Измерение размера.
Сравнение битовых значений.
Флаги.
Знакомство с приоритетами.
Заключение.
5 Создание утверждений.
Проверка значений выражений.
Ветвление с помощью операции switch.
Зацикливание с помощью счетчика.
Зацикливание с помощью условия.
Досрочный выход из циклов.
Переход к меткам.
Заключение.
6 Использование функций.
Объявление функций.
Передача аргументов.
Рекурсивные вызовы.
Размещение функций в заголовках.
Ограничение доступности.
Заключение.
7 Указатели.
Получение доступа к данным с помощью указателей.
Арифметика указателей.
Передача указателей в функции.
Создание массивов указателей.
Указатели на функции.
Заключение.
8 Работа со строками.
Чтение строк.
Копирование строк.
Объединение строк.
Поиск подстрок.
Валидация строк.
Преобразование строк.
Заключение.
9 Создание структур.
Группирование данных в структуру.
Определение типа данных с помощью структуры.
Использование указателей в структурах.
Указатели на структуры.
Передача структур в функции.
Группирование данных в объединение.
Выделение памяти.
Заключение.
10 Получение результата.
Создание файла.
Чтение и запись символов.
Чтение и запись строк.
Считывание и запись файлов целиком.
Сканирование файловых потоков.
Сообщение об ошибках.
Получение даты и времени.
Запуск таймера.
Генерация случайных чисел.
Отображение диалогового окна.
Заключение.
Справочная информация.
ASCII-коды символов.
Функции ввода и вывода.
Функции проверки символов.
Арифметические функции.
Функции работы со строками.
Вспомогательные функции.
Диагностические функции.
Функции для работы с аргументами.
Функции для работы с датой и временем.
Функции переходов.
Сигнальные функции.
Константы пределов.
Константы с плавающей точкой.
Основы программирования на языке С.
Предметный указатель.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Программирование на С для начинающих, Майк МакГрат, 2016 — fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу
Читать онлайн «Язык Си — руководство для начинающих» автора УЭИТ M. — RuLit — Страница 1
Предисловие редактора перевода
Созданием языков программирования занимаются в большинстве случаев очень квалифицированные люди, часто группы программистов, а иногда даже международные коллективы. Однако подавляющее большинство языков программирования умирало, едва родившись. Лишь к немногим из них был проявлен интерес, и буквально единицы получили действительно широкое распространение. К таким «счастливым» языкам принадлежит язык Си, разработанный Д. Ритчи. Он появился не на пустом месте. Ему предшествовали и оказали на него серьезное влияние язык BCPL, разработанный М. Ричардсоном, и язык Би (В), созданный К. Томпсоном.
Си — это достаточно выразительный язык программирования, предназначенный для описания широкого круга задач и содержащий современные механизмы управления вычислительным процессом и работы с данными. В то же время язык Си очень прост: в него введены некоторые средства, характерные скорее для ассембле-ров, чем для языков высокого уровня. Простота языка не требует создания слишком сложных компиляторов и позволяет получать достаточно эффективный объектный код. Эти свойства языка особенно важны при написании операционных систем, но они могут оказаться очень полезными и при разработке прикладных программ.
Наибольшую популярность язык приобрел у системных программистов. Видимо, этому способствовали как сам факт успешного написания на языке Си переносимой операционной системы UNIX, получившей широкое распространение, так и элегантность и лаконичность языка. Чрезвычайно привлекательными для системных программистов оказались возможность использовать память раз-яичных типов в том числе регистровую, введение указателей, являющихся аналогами косвенных адресов, а также возможность работы со сложными структурами данных, применение препроцессора и Удобство работы с символьными строками.
Прикладные программы пишутся обычно на традиционных языках высокого уровня, например на Фортране. Однако в тех случаях, когда некоторые части таких программ оказываются особенно критичными в отношении времени, их можно писать не на ассемблере, как обычно, а на языке Си. Такой подход сократит время разработки прикладных программ, обеспечит их достаточную эффективность, а во многих случаях и переносимость, т. е. использование одной программы на ЭВМ различных типов.
Предлагаемая читателю книга — учебник по языку Си. Книга написана известными американскими специалистами М. Уэйтом, С. Пратой и Д. Мартином с большим педагогическим и методическим мастерством: излагаемый материал проиллюстрирован многочисленными примерами и задачами. Это обеспечивает легкость понимания и усвоения предмета. Поскольку трансляторы с языка Си появились сейчас на отечественных машинах, книга может представлять интерес не только для широкого круга читателей, впервые знакомящихся с языком Си, но и для системных программистов, инженеров и научных работников.
Перевод выполнили В. С. Явнилович (предисловие, гл. 1–9) и Л. Н. Горинович (гл. 10–15 и приложения).
Э. А. Трахтенгерц
Си — простой, изящный язык программирования, на котором останавливает свой выбор все большее число программистов. Эта книга (если вы не посмотрели на титульный лист) называется «Язык Си. Руководство для начинающих»; она представляет собой простой и хороший учебник по языку Си.
Слова «Руководство для начинающих», стоящие в подзаголовке книги, говорят о том, что нашей целью было дать обзор основ языка Си. В программировании опыт — великий учитель; с этой целью в книге приведено много задач учебного и познавательного характера. Мы пытались использовать рисунки всюду, где, как мы надеялись, они помогут внести ясность. Чтобы вы имели возможность проверить себя, в конце каждой главы приводятся вопросы для самоконтроля (и ответы на них). Мы не предполагаем у вас большого опыта работы на каком-нибудь языке программирования, однако иногда будем сравнивать язык Си с другими языками, ориентируясь на тех читателей, которые знают их.
Мы несколько расширили границы обычного учебника: обсудили ряд более сложных тем, таких, как использование структур, приведение типов, работу с файлами; в приложении мы рассмотрели возможности побитовой обработки на языке Си, а также некоторые расширения языка. Мы описали программную среду компилятора с языка Си, функционирующего как с операционной системой UNIX, так и с программным обеспечением микрокомпьютеров: например, обсудили вопрос переключения ввода-вывода и продемонстрировали использование портов в микропроцессорах INTEL 8086/8088. И наконец, мы включили шутливые рисунки как одно из довольно приятных дополнений.
Мы попытались сделать эту книгу поучительной, понятной и полезной. Чтобы получить максимальную пользу от книги, вы должны работать с ней самым активным образом. Не занимайтесь просто чтением примеров. Вводите их в вашу вычислительную систему и пытайтесь выполнить. Хотя Си и переносимый (или мобильный) язык, вполне возможно, вы найдете различия между тем, как программа работает в вашей системе и у нас. Не бойтесь экспериментировать — измените часть программы, чтобы увидеть, к чему это приведет. Модифицируйте ваши программы, чтобы они слегка отличались от исходных. Попробуйте не обращать внимания на наши иногда встречающиеся предупреждения и посмотрите, что при этом произойдет. Попытайтесь ответить на вопросы и выполнить упражнения. Чем больше вы сделаете самостоятельно, тем большему научитесь.
Мы желаем вам удачи при изучении языка Си. Мы попытались сделать книгу отвечающей вашим потребностям и надеемся, что она поможет вам достичь поставленных целей.
Мы благодарим Роберта Лафора из издательства Waite Group за редакторские советы и Боба Петерсена за техническую помощь. Мы приносим благодарность также компании Lifeboat Associates (в особенности Джошуа Аллену и Тодду Кацу) за возможность использовать компилятор Lattice С. Мы благодарим специалистов компаний C-Systems, Software Toolworks, Telecon Systems и Supersoft за предоставленную нам информацию о своих компиляторах с языка Си. Один из авторов, С. Прата, посвящает свой труд родителям — Вики и Биллу — с любовью.
М. Уэйт, С. Прата, Д. Мартин
ИСТОРИЯ СИ ДОСТОИНСТВА СИ
ЯЗЫКИ КОМПИЛЯЦИИ
Добро пожаловать в мир языка Си. В данной главе мы попробуем подготовить вас к изучению этого мощного языка, завоевывающего все большую популярность. Что вам для этого нужно? Во-первых, интерес к Си, который, по-видимому, у вас уже есть. Но, чтобы усилить его, мы кратко обрисуем некоторые привлекательные стороны данного языка. Во-вторых, вы нуждаетесь в учебнике по языку Си — и учебником послужит вам эта книга. Кроме того, вам нужен доступ к какой-нибудь вычислительной системе, в которой имеется компилятор с языка Си. Это вы должны обеспечить себе сами. Наконец, вам необходимо научиться выполнять Си-программу на вашей вычислительной системе, и мы в конце главы дадим вам несколько советов по этому поводу.
ПРОИСХОЖДЕНИЕ ЯЗЫКА СИ
Сотрудник фирмы Bell Labs Деннис Ритчи создал язык Си в 1972 г. во время совместной работы с Кеном Томпсоном над операционной системой UNIX. Ритчи не выдумал Си просто из головы — прообразом послужил язык Би, разработанный Томпсоном, который в свою очередь…, но это уже другая история. Важным моментом для нас является то, что язык Си был разработан как инструмент для программистов-практиков. В соответствии с этим главной целью его автора было создание удобного и полезного языка.
Мы думаем, что критерий полезности принимался во внимание ПРИ разработке большинства языков программирования, но, кроме того, часто учитывались и другие потребности. Одной из главных Целей при создании языка Паскаль, например, было построение ПРОЧНЫХ основ обучения принципам программирования. Язык Бейсик создавался так, чтобы его синтаксис был близок к синтаксису английского языка; поэтому им легко могли пользоваться студенты, не знакомые с ЭВМ. Все эти цели тоже важны, но они не всегда совместимы с прагматическими, каждодневными требованиями. Предпосылки, послужившие основой создания языка Си как средства программирования, позволили разработать, кроме того, язык, облегчающий труд программиста.