Пятая лекция курса «Сетевое программирование в UNIX» от специалистов SkyDNS и компании «Айдеко» уже ждет своих слушателей.
Александр Патраков объясняет, как перевести обычную сетевую программу в программу, основанную на конечном автомате.
О том, что такое конечный автомат, вы узнаете под хабракатом.
Эту лекцию обязательно нужно прослушать, чтобы понять следующую. Откроем тайну, тема следующей лекции – функция select(), которую в большинстве случаев невозможно использовать без автомата. Разработчик курса Александр Патраков пояснил, что обе темы являются достаточно сложными, поэтому рассказывать про select() и конечный автомат в рамках одной лекции не следует.
Конечный автомат определяется математиками как множество состояний, множество входных символов и таблица переходов. Программисты же употребляют это выражение не в строгом математическом смысле, а как название для способа организации программы, при котором она разбивается на куски, каждый из которых обдумывает входные данные и решает, какой кусок будет следующим.
Александр подчеркивает, что обработчики переходов между состояниями автомата не должны содержать в себе операции сетевого ввода -вывода, кроме одного вызова функции reсv() или send(). Она должна быть вызвана в самом начале. Это означает, что цикл по дочитыванию из сокета, который обсуждался на прошлой лекции, не следует использовать в автоматной программе. Автомат может справиться с этой задачей сам, о чем Александр Патраков и Марк Коренберг рассказывают, начиная с 34-ой минуты видео.
На этой лекции студенты получили задание – переделать астрологический сервер на использование конечного автомата.
«Эта тема, я считаю, одна из самых сложных во всем курсе, и должен признать, что студенты с ней в большинстве своем справились, — говорит Александр Патраков. — Отмечу еще один важный момент: использование конечного автомата без select() — это искусственная задача. В реальных программах использование конечного автомата без select(), как правило, нецелесообразно и только запутывает код».
А вы сможете не запутаться? Мы уверены, что сможете, ведь в видео снова появились слайды, которые помогут усвоить материал.
Кстати, Александр Патраков с удовольствием объяснит то, что осталось непонятным после просмотра лекции. Оставляйте свои вопросы в комментариях. Также рассказывайте, чем интересна была данная лекция и что стоило бы добавить. Нам важно ваше мнение!
Предыдущие лекции:
1. Курс для тех, кто не боится UNIX и C
2. Каждому клиенту по процессу
3. Реализуем протокол или как работают астрологи
4. О том, как читать до конца
Автор: AdMonster