- PVSM.RU - https://www.pvsm.ru -
Пятая лекция курса «Сетевое программирование в UNIX» от специалистов SkyDNS [1] и компании «Айдеко» [2] уже ждет своих слушателей.
Александр Патраков [3] объясняет, как перевести обычную сетевую программу в программу, основанную на конечном автомате.
О том, что такое конечный автомат, вы узнаете под хабракатом.
Эту лекцию обязательно нужно прослушать, чтобы понять следующую. Откроем тайну, тема следующей лекции – функция select(), которую в большинстве случаев невозможно использовать без автомата. Разработчик курса Александр Патраков пояснил, что обе темы являются достаточно сложными, поэтому рассказывать про select() и конечный автомат в рамках одной лекции не следует.
Конечный автомат определяется математиками как множество состояний, множество входных символов и таблица переходов. Программисты же употребляют это выражение не в строгом математическом смысле, а как название для способа организации программы, при котором она разбивается на куски, каждый из которых обдумывает входные данные и решает, какой кусок будет следующим.
Александр подчеркивает, что обработчики переходов между состояниями автомата не должны содержать в себе операции сетевого ввода -вывода, кроме одного вызова функции reсv() или send(). Она должна быть вызвана в самом начале. Это означает, что цикл по дочитыванию из сокета, который обсуждался на прошлой лекции, не следует использовать в автоматной программе. Автомат может справиться с этой задачей сам, о чем Александр Патраков и Марк Коренберг рассказывают, начиная с 34-ой минуты видео.
На этой лекции студенты получили задание – переделать астрологический сервер на использование конечного автомата.
«Эта тема, я считаю, одна из самых сложных во всем курсе, и должен признать, что студенты с ней в большинстве своем справились, — говорит Александр Патраков. — Отмечу еще один важный момент: использование конечного автомата без select() — это искусственная задача. В реальных программах использование конечного автомата без select(), как правило, нецелесообразно и только запутывает код».
А вы сможете не запутаться? Мы уверены, что сможете, ведь в видео снова появились слайды, которые помогут усвоить материал.
Кстати, Александр Патраков с удовольствием объяснит то, что осталось непонятным после просмотра лекции. Оставляйте свои вопросы в комментариях. Также рассказывайте, чем интересна была данная лекция и что стоило бы добавить. Нам важно ваше мнение!
Предыдущие лекции:
1. Курс для тех, кто не боится UNIX и C [4]
2. Каждому клиенту по процессу [5]
3. Реализуем протокол или как работают астрологи [6]
4. О том, как читать до конца [7]
Автор: AdMonster
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/7592
Ссылки в тексте:
[1] SkyDNS: http://www.skydns.ru
[2] «Айдеко»: http://ideco.ru
[3] Александр Патраков: http://patrakov.blogspot.com/
[4] Курс для тех, кто не боится UNIX и C: http://habrahabr.ru/company/ideco/blog/138322/
[5] Каждому клиенту по процессу: http://habrahabr.ru/company/ideco/blog/138706/
[6] Реализуем протокол или как работают астрологи: http://habrahabr.ru/company/ideco/blog/139926/
[7] О том, как читать до конца: http://http://habrahabr.ru/company/ideco/blog/143701/
Нажмите здесь для печати.