- 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/