Программы в автоматном стиле – трудности перевода

в 12:27, , рубрики: linux, UNIX, Айдеко, Блог компании Айдеко, обучение, Программирование, сетевое программирование, системное программирование, метки: , , , , , ,

Программы в автоматном стиле – трудности перевода

Пятая лекция курса «Сетевое программирование в UNIX» от специалистов SkyDNS и компании «Айдеко» уже ждет своих слушателей.

Александр Патраков объясняет, как перевести обычную сетевую программу в программу, основанную на конечном автомате.

О том, что такое конечный автомат, вы узнаете под хабракатом.

Эту лекцию обязательно нужно прослушать, чтобы понять следующую. Откроем тайну, тема следующей лекции – функция select(), которую в большинстве случаев невозможно использовать без автомата. Разработчик курса Александр Патраков пояснил, что обе темы являются достаточно сложными, поэтому рассказывать про select() и конечный автомат в рамках одной лекции не следует.

Конечный автомат определяется математиками как множество состояний, множество входных символов и таблица переходов. Программисты же употребляют это выражение не в строгом математическом смысле, а как название для способа организации программы, при котором она разбивается на куски, каждый из которых обдумывает входные данные и решает, какой кусок будет следующим.

Александр подчеркивает, что обработчики переходов между состояниями автомата не должны содержать в себе операции сетевого ввода -вывода, кроме одного вызова функции reсv() или send(). Она должна быть вызвана в самом начале. Это означает, что цикл по дочитыванию из сокета, который обсуждался на прошлой лекции, не следует использовать в автоматной программе. Автомат может справиться с этой задачей сам, о чем Александр Патраков и Марк Коренберг рассказывают, начиная с 34-ой минуты видео.

На этой лекции студенты получили задание – переделать астрологический сервер на использование конечного автомата.

«Эта тема, я считаю, одна из самых сложных во всем курсе, и должен признать, что студенты с ней в большинстве своем справились, — говорит Александр Патраков. — Отмечу еще один важный момент: использование конечного автомата без select() — это искусственная задача. В реальных программах использование конечного автомата без select(), как правило, нецелесообразно и только запутывает код».

А вы сможете не запутаться? Мы уверены, что сможете, ведь в видео снова появились слайды, которые помогут усвоить материал.

Кстати, Александр Патраков с удовольствием объяснит то, что осталось непонятным после просмотра лекции. Оставляйте свои вопросы в комментариях. Также рассказывайте, чем интересна была данная лекция и что стоило бы добавить. Нам важно ваше мнение!

Предыдущие лекции:
1. Курс для тех, кто не боится UNIX и C
2. Каждому клиенту по процессу
3. Реализуем протокол или как работают астрологи
4. О том, как читать до конца

Автор: AdMonster


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js