Аннотация
Пособие посвящено заданию практикума, которое предполагает написание TCP-сервера, реализующего многопользовательскую игру "Менеджмент". Задание состоит из двух основных частей: собственно сервера и программируемых искусственных игроков (роботов), имитирующих поведение игрока-человека. Первая часть предназначена к выполнению на языке Си под ОС Unix с использованием TCP-сокетов; сервер предлагается реализовать как событийно-ориентированное приложение на базе системного вызова select
. Вторая часть предполагает использование языка Си++ и применение основ теории формальных грамматик. На ф-те ВМК МГУ им. М.В.Ломоносова задание применялось в поддержку лекционных курсов "Операционные системы" (первая часть задания) и "Системы программирования" (вторая часть задания).
В пособии приведено подробное описание правил игры и постановка задачи; подробно описаны все необходимые системные вызовы ОС Unix; даются указания по методике реализации.
Бумажные публикации
Пособие впервые опубликовано Издательским отделом ф-та ВМК МГУ им. М.В.Ломоносова в 2005 году. ISBN 5-89407-220-4
Электронная версия
Доступна здесь: http://www.stolyarov.info/books/pdf/gameserv.pdf
Статус бумажной версии
Первое издание пособия поступало в свободную продажу, но было очень быстро распродано. В настоящее время имеется только в библиотеке факультета ВМК МГУ.
Опечатки
Стр. 16, 4-я строка сверху - опечатка в слове "подлежащих".
Стр. 19, 10-я строка сверху - опечатка в слове "вызвавший".
Стр. 38, 16-я строка снизу - опечатка в слове "наличии".
Да там опечаток
Да там опечаток как слонов, их бесполезно вылавливать — если я когда-нибудь вернусь к этой книжке (что крайне маловероятно), я её перелопачу всю всё равно.
Нужно Ваше авторитетное мнение
Андрей Викторович, не могли бы вы посоветовать приемлемый,
с Вашей точки зрения, вариант совмещения изучения Вашей серии книг (включая том по С++) и создания программы по данному методическому пособию?
И какие ещё учебные пособия было бы неплохо привлечь для успешного выполнения всех заданий? Например, в методичке упоминается теория формальных грамматик. Объясните, пожалуйста, для чего и в какой степени она тут нужна, а также по каким учебникам стоит ей заниматься (если стоит).
Спасибо!
Совмещение
Вопрос не вполне понятно сформулирован, но я всё же попробую ответить. Для реализации этого задания в объёме первых трёх глав методички требуется знать по меньшей мере язык Си, уметь работать с системными вызовами Unix и немножко понимать компьютерные сети. Следовательно, требуется из имеющегося трёхтомника освоить по меньшей мере второй том и две из четырёх частей третьего (где про Unix и про сети). Возможно ли освоить второй том без первого — для меня вопрос открытый, не уверен в полной невозможности этого, но субъективно я бы этого не советовал. Формальные грамматики тут не требуются.
Для выполнения той части задания, которая описана в четвёртой части методички, нужны C++ и — ага — формальные грамматики. Что посоветовать для их изучения, не знаю; классической книгой в этой области считается двухтомник Ахо-Ульмана, но он по своему объёму раз в десять превышает то, что нужно в этом задании. Собственно говоря, здесь нужны только конечные автоматы для лексического анализа по регулярным грамматикам и метод рекурсивного спуска для синтаксического анализа. Больше ничего не требуется.
Опечатка
Доброго времени суток,
в электронной версии, стр. 46, описание ?manufactured и ?result_raw_sold одинаковые.
Спасибо
Ошибка, в принципе, уже известна, так что, если когда-нибудь дело дойдёт до переиздания этой методички, то в новом варианте ошибка будет исправлена. Пока вроде никто её переиздавать не собирается, увы.
Осознал.
Спасибо за рекомендацию и совет.
Для начала
Для начала рекомендую осознать, что перед запятой пробел не ставят, тогда как после запятой пробел обязателен. Кроме того, частица "ли" отделяется пробелом, а не дефисом.
Посоветуйте пожалуйста, какую версию ОС выбрать
Любой Unix, с которым вы сможете справиться. Скачать можно буквально где угодно. Ubuntu, конечно, подходит, и даже в качестве первой системы вполне адекватна, но лучше быть морально готовым к переходу на что-то более программистское. Из Линуксов, по возрастанию сложности, посоветую: Debian (собственно, Ubuntu сделана на основе Debian, но в Debian не так радеют за запудривание пользователю мозга всякими красивостями), Slackware (это уже для сильных духом), Owl (если справитесь с ней, можете идти работать сисадмином), Gentoo и, наконец, Linux From Scratch (после этого можете считать себя познавшим Дао).
2)Для программирования на ассемблере и С++.
Не думаю, что такой набор языков можно считать удачным. Начальному программированию лучше учиться на Паскале, затем обязательно чистый Си (без плюсов), а вот дальше уже можно куда угодно.
3)Для создания многопользовательского игрового сервера.
С этой точки зрения между юниксами вообще нет никакой разницы. Вот разве что вам в голову взбредёт вместо select использовать kqueue, этого вроде в линуксе нет, тогда только FreeBSD :-)
Многопользовательский игровой сервер
Здравствуйте!
Огромное Вам спасибо ,за возможность скачать ,и учиться по книгам.
Посоветуйте пожалуйста, какую версию ОС выбрать и где скачать:
1)Для изучения самой операционной системы.
2)Для программирования на ассемблере и С++.
3)Для создания многопользовательского игрового сервера.
Я немного "знаком" с Ubuntu , подойдет-ли она для интересующих меня целей?