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



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

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

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

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

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

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

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

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

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

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



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

    Комментарии 7

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

    Самое читаемое