Мифы о FreeBSD. FreeBSD не поддерживает виртуализацию

Доброго времени суток!

Желание написать данную статью появилось после прочтения поста Перегрузка C++ операторов , потому что в нём не были раскрыты многие важные темы.

Самое главное, что необходимо помнить - перегрузка операторов, это всего лишь более удобный способ вызова функций, поэтому не стоит увлекаться перегрузкой операторов. Использовать её следует только тогда, когда это упростит написание кода. Но, не настолько, чтобы это затрудняло чтение. Ведь, как известно, код читается намного чаще, чем пишется. И не забывайте, что вам никогда не дадут перегрузить операторы в тандеме со встроенными типами, возможность перегрузки есть только для пользовательских типов/классов.

Синтаксис перегрузки

Синтаксис перегрузки операторов очень похож на определение функции с именем operator@, где @ - это идентификатор оператора (например +, -, <<, >>). Рассмотрим простейший пример:
class Integer { private: int value; public: Integer(int i): value(i) {} const Integer operator+(const Integer& rv) const { return (value + rv.value); } };
В данном случае, оператор оформлен как член класса, аргумент определяет значение, находящееся в правой части оператора. Вообще, существует два основных способа перегрузки операторов: глобальные функции, дружественные для класса, или подставляемые функции самого класса. Какой способ, для какого оператора лучше, рассмотрим в конце топика.

В большинстве случаев, операторы (кроме условных) возвращают объект, или ссылку на тип, к которому относятся его аргументы (если типы разные, то вы сами решаете как интерпретировать результат вычисления оператора).

Перегрузка унарных операторов

Рассмотрим примеры перегрузки унарных операторов для определенного выше класса Integer. Заодно определим их в виде дружественных функций и рассмотрим операторы декремента и инкремента:
class Integer { private: int value; public: Integer(int i): value(i) {} //унарный + friend const Integer& operator+(const Integer& i); //унарный - friend const Integer operator-(const Integer& i); //префиксный инкремент friend const Integer& operator++(Integer& i); //постфиксный инкремент friend const Integer operator++(Integer& i, int); //префиксный декремент friend const Integer& operator--(Integer& i); //постфиксный декремент friend const Integer operator--(Integer& i, int); }; //унарный плюс ничего не делает. const Integer& operator+(const Integer& i) { return i.value; } const Integer operator-(const Integer& i) { return Integer(-i.value); } //префиксная версия возвращает значение после инкремента const Integer& operator++(Integer& i) { i.value++; return i; } //постфиксная версия возвращает значение до инкремента const Integer operator++(Integer& i, int) { Integer oldValue(i.value); i.value++; return oldValue; } //префиксная версия возвращает значение после декремента const Integer& operator--(Integer& i) { i.value--; return i; } //постфиксная версия возвращает значение до декремента const Integer operator--(Integer& i, int) { Integer oldValue(i.value); i.value--; return oldValue; }
Теперь вы знаете, как компилятор различает префиксные и постфиксные версии декремента и инкремента. В случае, когда он видит выражение ++i, то вызывается функция operator++(a). Если же он видит i++, то вызывается operator++(a, int). То есть вызывается перегруженная функция operator++, и именно для этого используется фиктивный параметр int в постфиксной версии.

Бинарные операторы

Рассмотрим синтаксис перегрузки бинарных операторов. Перегрузим один оператор, который возвращает l-значение, один условный оператор и один оператор, создающий новое значение (определим их глобально):
class Integer { private: int value; public: Integer(int i): value(i) {} friend const Integer operator+(const Integer& left, const Integer& right); friend Integer& operator+=(Integer& left, const Integer& right); friend bool operator==(const Integer& left, const Integer& right); }; const Integer operator+(const Integer& left, const Integer& right) { return Integer(left.value + right.value); } Integer& operator+=(Integer& left, const Integer& right) { left.value += right.value; return left; } bool operator==(const Integer& left, const Integer& right) { return left.value == right.value; }
Во всех этих примерах операторы перегружаются для одного типа, однако, это необязательно. Можно, к примеру, перегрузить сложение нашего типа Integer и определенного по его подобию Float.

Аргументы и возвращаемые значения

Как можно было заметить, в примерах используются различные способы передачи аргументов в функции и возвращения значений операторов.
  • Если аргумент не изменяется оператором, в случае, например унарного плюса, его нужно передавать как ссылку на константу. Вообще, это справедливо для почти всех арифметических операторов (сложение, вычитание, умножение...)
  • Тип возвращаемого значения зависит от сути оператора. Если оператор должен возвращать новое значение, то необходимо создавать новый объект (как в случае бинарного плюса). Если вы хотите запретить изменение объекта как l-value, то нужно возвращать его константным.
  • Для операторов присваивания необходимо возвращать ссылку на измененный элемент. Также, если вы хотите использовать оператор присваивания в конструкциях вида (x=y).f(), где функция f() вызывается для для переменной x, после присваивания ей y, то не возвращайте ссылку на константу, возвращайте просто ссылку.
  • Логические операторы должны возвращать в худшем случае int, а в лучшем bool.

Оптимизация возвращаемого значения

При создании новых объектов и возвращении их из функции следует использовать запись как для вышеописанного примера оператора бинарного плюса.
return Integer(left.value + right.value);
Честно говоря, не знаю, какая ситуация актуальна для C++11, все рассуждения далее справедливы для C++98.
На первый взгляд, это похоже на синтаксис создания временного объекта, то есть как будто бы нет разницы между кодом выше и этим:
Integer temp(left.value + right.value); return temp;
Но на самом деле, в этом случае произойдет вызов конструктора в первой строке, далее вызов конструктора копирования, который скопирует объект, а далее, при раскрутке стека вызовется деструктор. При использовании первой записи компилятор изначально создаёт объект в памяти, в которую нужно его скопировать, таким образом экономится вызов конструктора копирования и деструктора.

Особые операторы

В C++ есть операторы, обладающие специфическим синтаксисом и способом перегрузки. Например оператор индексирования . Он всегда определяется как член класса и, так как подразумевается поведение индексируемого объекта как массива, то ему следует возвращать ссылку.
Оператор запятая
В число «особых» операторов входит также оператор запятая. Он вызывается для объектов, рядом с которыми поставлена запятая (но он не вызывается в списках аргументов функций). Придумать осмысленный пример использования этого оператора не так-то просто. Хабраюзер AxisPod в комментариях к предыдущей статье о перегрузке рассказал об одном .
Оператор разыменования указателя
Перегрузка этих операторов может быть оправдана для классов умных указателей. Этот оператор обязательно определяется как функция класса, причём на него накладываются некоторые ограничения: он должен возвращать либо объект (или ссылку), либо указатель, позволяющий обратиться к объекту.
Оператор присваивания
Оператор присваивания обязательно определяется в виде функции класса, потому что он неразрывно связан с объектом, находящимся слева от "=". Определение оператора присваивания в глобальном виде сделало бы возможным переопределение стандартного поведения оператора "=". Пример:
class Integer { private: int value; public: Integer(int i): value(i) {} Integer& operator=(const Integer& right) { //проверка на самоприсваивание if (this == &right) { return *this; } value = right.value; return *this; } };

Как можно заметить, в начале функции производится проверка на самоприсваивание. Вообще, в данном случае самоприсваивание безвредно, но ситуация не всегда такая простая. Например, если объект большой, можно потратить много времени на ненужное копирование, или при работе с указателями.

Неперегружаемые операторы
Некоторые операторы в C++ не перегружаются в принципе. По всей видимости, это сделано из соображений безопасности.
  • Оператор выбора члена класса ".".
  • Оператор разыменования указателя на член класса ".*"
  • В С++ отсутствует оператор возведения в степень (как в Fortran) "**".
  • Запрещено определять свои операторы (возможны проблемы с определением приоритетов).
  • Нельзя изменять приоритеты операторов
Как мы уже выяснили, существует два способа операторов - в виде функции класса и в виде дружественной глобальной функции.
Роб Мюррей, в своей книге C++ Strategies and Tactics определил следующие рекомендации по выбору формы оператора:

Почему так? Во-первых, на некоторые операторы изначально наложено ограничение. Вообще, если семантически нет разницы как определять оператор, то лучше его оформить в виде функции класса, чтобы подчеркнуть связь, плюс помимо этого функция будет подставляемой (inline). К тому же, иногда может возникнуть потребность в том, чтобы представить левосторонний операнд объектом другого класса. Наверное, самый яркий пример - переопределение << и >> для потоков ввода/вывода.

Литература

Брюс Эккель - Философия C++. Введение в стандартный C++ .

Теги: Добавить метки

  • Перевод

FreeBSD хороша для серверов, но не для настольных компьютеров

У FreeBSD есть полнофункциональная звуковая подсистема c низкой задержкой, а смешивание в ядре позволяет нескольким приложениям воспроизводить звуки одновременно (с независимыми настройками громкости) без дополнительных настроек. Дефолтные настройки включают в себя X.org и настройки рабочего стола, такие как KDE или GNOME, это так же просто как выбрать метапакет в зависимости от того, какой вы предпочитаете.

Если даже это кажется слишком сложным, PC-BSD - полнофункциональная настольная система, созданная поверх FreeBSD с простым в использовании установщиком и опцией коммерческой поддержки.

FreeBSD использует модель закрытого развития

FreeBSD развивают более 400 разработчиков по всему миру, все они имеют полный доступ ко всей системе и данным этой ОС. Третьи лица так же зачастую фиксят родные патчи. Если Вы хотите увидеть количество исправленных патчей, вы можете поискать "Submitted by" в логах фиксации.

Нет никаких жестких рамок для FreeBSD. Решения приняты людьми готовыми сделать работу. Если все же возникают споры, то они разрешаются группой разработчиков, которые избираются каждые два года. Обязательным критерием, по которому избираются разработчики, является обязательное исправление или доработка кода проекта в прошлых годах.

FreeBSD - Просто OS X без красивого GUI интерфейса

Это такой же миф про OS X, как и про FreeBSD: OS X просто FreeBSD с красивым графическим интерфейсом. Эти две операционных системы действительно совместно используют часть кода, например большинство утилит пользовательского пространства и библиотека C по OS X получены из версий FreeBSD. Часть этого кода развивается в разное время и в разных направлениях, например FreeBSD 9.1 позднее включила стек C++ и компилятор, который первоначально были разработаны для OS X сотрудниками Apple. Так же есть и кардинально разные детали.

Ядро XNU, которое используется на OS X включает в себя несколько подсистем из более старых версий FreeBSD, но в основном считаются независимой реализацией. Но все же за счет своего сходства продукты реализованные на OS X значительно проще адаптировать под FreeBSD. Например libdispatch и libc ++ были записаны для OS X и работали на FreeBSD раньше, чем на любой другой ОС.

В FreeBSD все необходимо компилировать с исходного кода

Коллекция портов FreeBSD представляет собой очень мощный способ установки программного обеспечения, что позволяет настраивать параметры для различных сторонних программ и библиотек. Однако, это не единственный способ установки программного обеспечения на FreeBSD. Всегда можно установить программное обеспечение из бинарных пакетов. Проект pkgng добавил новый формат пакета и инструмент управления пакетами, обеспечив современный набор инструментов для двоичного управления.

Вы можете установить pkgng из портов (ports-mgmt/pkg) на более старых версиях FreeBSD. Она включена по умолчанию на FreeBSD 9.1 и более поздние версии.

FreeBSD это UNIX из 90-х (или 80-ых)

FreeBSD - линейный потомок исходного UNIX через Распределение программного обеспечения Беркли, но она продолжала развиваться отдельно. За последние несколько лет мы видели, что ZFS становится значительно производительней: поддержка 10 ГБ, 40 ГБ и 100 ГБ канала, улучшеная звуковая подсистема, поддержка 802.11n и других улучшений.

Это не означает, что FreeBSD отказалась от своих UNIX корней. Есть много причин, почему UNIX системы стали популярными. Они включают в себя свободно распространяемую систему, которую легко портировать на новые платформы, набор простых инструментов и ядро, которое хорошо зарекомендовало себя на различных платформах. FreeBSD поддерживает эти традиции.

Весь хороший код в FreeBSD родом из Solaris

FreeBSD импортировала две функции высокого профиля из OpenSolaris: DTrace и ZFS. Обе теперь хорошо поддерживаются FreeBSD. ZFS, в частности, находится в центре внимания многих разработчиков FreeBSD, в том числе тех, которые используются iXsystems, компанией, которая поддерживает развитие FreeNAS и продает коммерческие NAS устройства на базе FreeBSD. Разработчики FreeBSD также работают в тесном сотрудничестве с разработчиками Illumos, одной из веток с открытым исходным кодом Solaris, для улучшения обеих этих функций.

Несмотря на преимущества ZFS, это по-прежнему относительно небольшая часть общей системы. ZFS и DTrace составляют менее чем 4% кода в ядре, которое равно почти 10% кода в основной системе. Если считать, что только 0.4% FreeBSD хороши, то система не приобрела бы такой популярности.

FreeBSD не имеет драйверов

Это проблема, с которой сталкиваются все операционные системы, - даже новые версии Windows. Большую часть времени пользователи не заботятся об общем количестве драйверов, только если драйверы уже установлены по умолчанию. Есть некоторые упущения с точки зрения поддержки драйверов, но FreeBSD поддерживает широкий спектр сетевых карт (в том числе 802.11n чипсеты), большинство звуковых карт AMD, Intel и графические процессоры NVIDIA.

Поддержка аппаратных средств - это та часть реализации, которая требует постоянной доработки, потому что нельзя просто сказать производителям аппаратных средств, чтобы они подождали пару лет, пока разработчики ПО их догонят. Обеспечение поддержки новых устройства занимает время для настройки, хотя некоторые производители сами обеспечивают драйверы, например Nvidia обеспечивает драйверы для их GPU и Intel для новейших сетевых контроллеров. Другие производители обеспечивают помощь в разработке драйверов FreeBSD, включая Broadcom, JMicron, HP, Mellanox, Chelsio и Solarflare. Если Вы знаете устройства, которые не поддерживаются FreeBSD, лучше сообщить про это разработчикам и производителям устройств. Как правило, лучшим толчком для решения проблемы со стороны производителей - сообщение о том, что их клиенты не могут использовать их продукты.

FreeBSD 4.x лучшее из всего что было

4.x релиз был самым стабильным и FreeBSD гордились тем, что они смогли реализовать такой продукт. Многие пользователи продолжали использовать его на протяжении многих лет. Серия 5.x вышла во время перехода к оптимизации многопоточности. Эта включало замену одной блокировки вокруг ядра с рядом меньших блокировок, которые используются отдельными подсистемами. Это требовало большого куска работы, что не могло не привести к некоторым ошибкам. 5.x поставлялась с двумя реализациями поточной обработки, а это еще больше осложняло ситуацию. Первые два выпуска в серии 5.x были отмечены «только разработчикам», но 5.2 была нацелена на более широкую аудиторию и не оправдала ожиданий пользователей системы FreeBSD. Ряд крупных пользователей решили не менять серию 4.x.

Серия 5.x была болезненным уроком для проекта. В серии 6.x восстановили стабильность выпуска 4.x., а в серии 7.x восстановили производительность одного процессора. Во время выпуска серии 8.x можно было увидеть ряд опубликованных третьими лицами тестов, которые продемонстрировали лучшую масштабируемость FreeBSD на многопроцессорных системах, чем любая другая операционная система.

Все эти релизы имели значительное количество улучшений, такие как улучшенная звуковая подсистема, ZFS, DTrace, ведение журналов UFS и многое другое, но стабильность и производительность остались ключевыми задачами системы FreeBSD.

Недостатки программного обеспечения FreeBSD

Коллекция FreeBSD в настоящее время содержит более 26 000 единиц программного обеспечения. Трудно сравнить это число с другими репозиториями, потому что программы разделены по-другому (например, GCC порт в FreeBSD устанавливает программы и библиотеки, которые разделены между 6-10 пакетами в Debian, в зависимости от версии GCC), но большинство вещей Вы все же можете там найти. Одной из причин, по которой пользователи выбирают FreeBSD является тот факт, что набор портов обеспечивает определенную, относительно неясную часть программного обеспечения, в котором она нуждается, в то время как другие системы этого не делают.

Большая часть программного обеспечения в наборе портов работает исходно на FreeBSD. Большая часть программного обеспечения с открытым исходным кодом - агностик относительно ОС и требует, чтобы минимальная модификация была скомпилирована и работала на FreeBSD. Есть исключения такие как Valgrind, которые требуют детального понимания системы. Проприетарное программное обеспечение может быть более серьезной проблемой. Некоторые разработчики, такие как Opera, обеспечивают FreeBSD своим исходным кодом.

Другое программное обеспечение должно работать в режиме эмуляции. Например, бинарные файлы Linux могут работать на уровне Linux ABI, где системные вызовы Linux переводятся на их эквиваленты FreeBSD. Единственный изъян - немного увеличенная нагрузка системных вызовов; обычно сложно измерить различие в производительности между выполнением программ Linux на Linux и на FreeBSD: в некоторых случаях программы работают быстрее на FreeBSD, чем на Linux из-за более эффективных реализаций базовых вызовов. Например, версия Linux Flash-плагина может работать, используя NSPluginWrapper на уровне Linux ABI с собственным веб-браузером.

Аналогичное решение существует для запуска Windows приложений.

FreeBSD не поддерживает виртуализацию

FreeBSD 9 работает как гость Xen (domU) и на x86, и на x86-64, включая Amazon EC2. Благодаря работе, проделанной совместно с Microsoft, NetApp и Citrix, FreeBSD можно запускать на Hyper-V гипервизора Microsoft. FreeBSD 11 будет включать Dom0 поддержку управления домена.

FreeBSD также поддерживает VirtualBox и в качестве гостя и в качестве хоста. Вы можете найти гостевые дополнения VirtualBox, а затем и сам гипервизор в наборе портов. FreeBSD 10 также работает в качестве хоста операционной системы для гипервизора BSD, давая множество возможностей для запуска FreeBSD виртуальных машин на базе FreeBSD.

И наконец, если Вам не требуется полная виртуализация, то для выполнения изолированных пространств пользователя FreeBSD (или даже пространств пользователя Linux, используя уровни Linux ABI) на одном ядре FreeBSD Вы можете использовать подсистему контейнеров. Контейнеру можно даже предоставить их собственный независимый сетевой стек и т.д., и таким образом, одна машина может использоваться, чтобы эмулировать целый парк машин.

Лицензия BSD способствует взаимному сотрудничеству

Пока разработчики кода FreeBSD не подадут на вас иск о нарушении авторских прав, Вы вольно можете его использовать. Но, если верить утверждениям самих разработчиков, такого не произойдет.

Некоторые компании, почти наверняка возьмут наш код, изменят его и никогда ничего не предоставят взамен.

Рассмотрим в качестве примера случай двух крупнейших интернет-компаний: Google и Yahoo! Прежде их внутренняя инфраструктура основывалась на операционной системе GPL, в то время как более поздние версии уже используют FreeBSD. Поскольку Google не распределяет их измененную операционную систему, они могут сохранить к примеру GoogleFS в частной собственности. В таких случаях как этот, где программное обеспечение разработано для внутреннего использования, по лицензионному соглашению компания не обязана раскрывать свои доработки для разработчиков FreeBSD.

Существуют, однако, некоторые проблемы с соединением: например, нельзя использовать библиотеку с лицензией GPL, если уже используется BSD.

На протяжении многих лет не мало компаний внесло значительный вклад в FreeBSD. И вызвано это не только чувством альтруизма, ведь поддержка любого проекта, который быстро развивается, очень дорогое удовольствие.

Сегодня Рунет перемалывает впечатления от , а тут я снова попробую толочь свою воду в ступе высоких технологий. Да, российский общественно-политический прогресс велик, говорю это без всякой злой иронии, отчасти даже с восхищением, не все так вот могут взять да и . Даже тяжело себе представить, что ждет Россию в 2012 году с такими темпами развития гражданского общества.

Ну да ладно, это я немного отвлёкся, а теперь про FreeBSD-родимую.

Когда-то я был заядлым фидошником , кроме того у меня была (и отчасти осталась) мания коллекционировать книги. Совмещая эти два факта воедино: когда-то давным-давно в эхе ru.unix.bsd был соответствующий по теме этой конференции , где был мой развернутый ответ с описанием всех русскоязычных книг по FreeBSD.

Это такой частый вопрос у новичков: что посоветуете почитать для быстрого и комфортного входа в тему? Поскольку выбор книг на русском есть, да и относительная популярность у системы также имеется, а вопрос этот как-то постоянно всплывает, — я и решил тогда добить его, последовательно описав все книги на русском по FreeBSD, которые у меня были на тот момент (а были у меня все изданные книги).

Давеча, прошло уже более 4 лет с тех пор, а вижу я по статистике поисковых запросов люди все идут и идут на то старенькое описание, вот я и решил обновить его по состоянию на 2011 год.

Итак, тема этого поста: что есть из изданных книг на русском по FreeBSD сейчас + и краткое моё описание их достоинств и недостатков, равно как и их целевой группы.

Я также решил выставить бал для каждой из книг, конечно, это во многом субъективное мнение — но я решил хоть как-то оценить их относительную практическую ценность. Ещё раз повторюсь — эта оценка с позиций сегодняшнего дня, ибо есть там и классные по-настоящему книги, но сегодня устаревшие просто в дупель. Из-за моих перфектционистких претензий я не оценил ни одну из книг в 5 баллов, и отдельно подчеркиваю — подавляющее большинство этих книг предназначено для новичков, здесь не нужно строить никаких иллюзий.

Итак, на данный момент в моем описании ниже последовательно приводятся и описываются ВСЕ книги по FreeBSD на русском языке, которые были изданы на конец 2011 года. Поехали!

Лучшие книги по FreeBSD

1) Брайан Таймэн, Майкл Эбен «FreeBSD. Администрирование: искусство достижения равновесия. Энциклопедия пользователя», 2003 и 2005 годы.

Мне известны как минимум три издания этой, одной из первых книги на русском по FreeBSD — за 2003 год и два за 2005 год. На тот момент они смотрелись достаточно неплохо, была очень хорошая динамика продаж и популярность (даже не знаю, от того что очень хороши были, или от того, что просто на тот момент не было им никаких альтернатив), но вот с точки зрения 2011 года — все эти издания очень устарели.

Все издания ориентируются на начинающих пользователей. Последовательное изложение и описание основных служб и понятий в FreeBSD. Я оцениваю её практическую ценность в 2 балла — это устаревшая книга для новичков.

2) Брайан Таймэн, «FreeBSD 6. Полное руководство», 2009

В 2009 году вышла гораздо более качественная, объемная и систематизированная книга от одного из авторов вышеописанной книги — Брайана Таймэна, только называется она теперь «FreeBSD 6. Полное руководство ». Книжка очень даже неплохая. Скажу честно, мне очень нравится книжная серия Unleashed , в которой она и вышла. В этой серии всегда издают всеобъемлющие руководства, с максимальным упором на универсальность и подробность изложения.

По структуре, это, конечно, скорее справочник, чем учебник. Смотрится до сих пор она относительно неплохо в качестве подробного введения в тему. Я оцениваю её практическую ценность в 4 балла — книга для новичков и среднего уровня.

Кстати говоря, буквально совсем недавно вышло её , пока только на английском, вот его-то я бы и посоветовал как идеальную исходную точку для изучения системы, если английский для вас не барьер.

3) Федорчук А. Торн, А. «FreeBSD. Установка, настройка, использование», 2003

Книга написана отечественными авторами и для начинающих пользователей. Кто не знает кто такой Федорчук? Это известный «пропагандист» Linux и FreeBSD на территории бывшего СССР, умеет рассказывать сложные вещи понятно и нескучно. Поэтому книга отличается легкой неформальностью своего изложения, что делает её более лёгкой для чтения по сравнению с остальными сугубо техническими текстами. С точки зрения 2011 года — читать, конечно, её можно и даже полезно, но это уже скорее история. Я оцениваю её практическую ценность в 2 балла — устаревшая книга для новичков.

4) Федорчук А. «Доступный UNIX: Linux, FreeBSD, DragonFlyBSD, NetBSD, OpenBSD», 2006.

Вслед за этой книгой вышла уже отдельная, сольная книга Федорчука (смотрите о нем выше), которую лучше выбрать для введения по сравнению с первой его книгой: материал здесь будет и более свежий, и лучше систематизированный. Книга описывает более общие вещи верные для всего мира *BSD, с отдельным указанием отличий свойственных каждому отдельному клону, что весьма полезно для расширения кругозора. Лично мне также очень нравится DragonFlyBSD — очень приятно, что здесь есть и про него, хотя и уже весьма старенькие сведения, ибо система эта ну очень сильно развилась с тех пор.

Несмотря на упоминание Linux в названии, автор сильно тяготеет к обзору именно BSD-систем. Очень хорошее обзорное введение в разные Unix-системы, если вы ещё сами не определились что же вам выбрать. Текст читается легко, книга написана качественно. С этой книги многие мои знакомые начали изучение UNIX’а — как сказал один: ощущение было, что меня ведут за руку — все объяснения точны, ясны, понятны. Я оцениваю её практическую ценность в 3 балла — книга для новичков. Отдельно отмечу, что у текста этой книги есть стиль, а это для многих что-то, да значит.

5) Родерик Смит «Полный справочник по FreeBSD» (FreeBSD: The Complete Reference), 2004.

Это справочник для начинающих, а также для пользователей средней квалификации.

Данная книга не подходит всем тем, кто впервые начинает изучение FreeBSD. Описано очень много всего, но при этом достаточно поверхностно, — подходит только в качестве введения в проблематику. Хм, но, не смотря на всё — это хорошая книга, но честно говоря, в 2011 году это уже совсем не то... лучше использовать для справки другие, — более актуальные сетевые источники. Я оцениваю её практическую ценность именно на сегодня в 3 балла — эта книга для новичков.

6) Майкл Лукас «FreeBSD. Подробное руководство» (Absolute BSD. The Ultimate Guide to FreeBSD), 2004.

Есть два издания этой книги — за 2004 и 2009 годы. Майкл Лукас известная личность в мире FreeBSD, активный участник FreeBSD Documentation Project, пишет на эту тему очень много и хорошо. В сети огромное количество его мануалов, интервью и прочего фришного графоманского творчества.

Эта книга — его довольно подробное изложение системы почти на 900 страницах. Очень рекомендую, даже с позиции 2011 года книга смотрится очень даже достойно (но брать нужно обязательно последнее издание за 2009 год — оно гораздо лучше). Я оцениваю её практическую ценность в 4 балла — книга для новичков.

7) Сергей Ивановский «Операционная система UNIX FreeBSD: Простой курс системного администрирования для начинающих и опытных пользователей», 2004.

Второе издание, также как и первое её издание — редкостный отстой. Данный автор с маниакальным упорством переиздаёт одну и туже книгу под разными названиями и оформлениями, например, как «Hаиболее часто задаваемые вопросы по FreeBSD», — смотрите не вляпайтесь, купив такого рода «книгу». Гавно редкостное. Жертва начала 90-ых, когда можно было издать что угодно, в условиях отсутствия интернета у большинства.

В данном случае, это просто сборник корявых и ранних переводов каких-то ужасно старинных рукописей по FreeBSD, howto и faqs — все эти раздельные кусочки бессистемно собраны, перемешаны и изданы в виде «как есть». Я оцениваю её практическую ценность в 1 балл — книга для... даже новичку не советую брать её в руки. Каюсь принародно: это единственная книга в моей жизни, которую я сознательно и цинично сжег (использовал на даче для разогрева камина).

8) Маршалл Кирк МакКузик, Джордж В. Hевилл-Hил «FreeBSD. Архитектура и реализация», 2006.

Оперативный русский перевод уже успевшей стать классической и своего рода единственной книги посвящённой внутреннему устройству современной FreeBSD, написанной знаменитыми в мире *BSD авторами. В книге рассматриваются потроха релиза 5.2, естественно, что книга предназначена главным образом для системных программистов. Но, следует сразу предупредить, что из-за изначально огромного объёма материала книга напоминает скорее последовательный конспект устройства FreeBSD, — и не надейтесь найти в ней исчерпывающую энциклопедию по архитектуре FreeBSD.

Что тут говорить — единственная книга в своем роде, если вы интересуетесь системным программированием в FreeBSD — эта книга MUST HAVE, даже, несмотря на поправку с точку зрения прошедшего времени и утраты актуальности, — это очень-очень важная и классная книга. Я оцениваю её практическую ценность в 4 балла — книга для системных программистов и сочувствующих.

9) А. Дидок «Один на один с FreeBSD », 2006

Это толстая и подробная книженция от украинского автора, — мне она ОЧЕНЬ понравилась. Книжка сильно связана с реальными жизненными ситуациями — много практически-полезных примеров. По-моему, эта книга плохо подходит для новичка, то есть для старта. У нас очень редко выходят такого рода книги: здесь мало теории и банальностей (автор почти на каждой странице отсылает к man’у за подробностями), зато очень много практических примеров, сразу чувствуется опыт работы автора в телекоме .

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

В книге описывается ещё относительно актуальная ветка 6.x (это в любом случае лучше, чем большинство вышеприведенных книг, где речь идет вообще о 4.x-.5.x-системах). Рекомендуется всем новичкам, но только после хорошего овладения теорией. Есть много ошибок в самой верстке книги (например, на странице содержания книги много раз настойчиво повторяется сноска на загадочную страницу 40). Я оцениваю её практическую ценность в 4 балла — книга для среднего уровня специалистов.

10) Д. Колисниченко. «FreeBSD. От новичка к профессионалу», 2011

Это я оставил напоследок. У Дениса, большого универсала, который бабахает книгу за книгой на самый большой диапазон тем, вышло уже две книги по FreeBSD. Издание за 2010 год я не буду рассматривать, просто потому, что уже есть издание за 2011 год, уже с чуть другим названием, расширенное и дополненное.

Ну что тут сказать. У Дениса большой опыт в писательстве, но каких-то откровений и глубины от него . Очень интересно авторское задание-концепция книги, которую сам перед собой ставит в предисловии. Суть в том, что он пытается писать по плану Handbook’a, но дополняя места, которые, по его мнению, там описаны недостаточно подробно или и вовсе опущены. Получается, это своего рода дополнительный смысловой слой, который идеально ложится именно на содержание официального FreeBSD Handbook. Он сам говорит, что прочитав с одной стороны Handbook, а с другой стороны изучив его книгу — все вопросы у читателя-новичка должны быть полностью исчерпаны.

Лично мне эта книга понравилась, хотя на Колесниченко часто и гонят на некоторых форумах, поэтому повторюсь — мнение субъективно, также как понравился и его методологический подход а-ля «расширенные толкования на Handbook». Пожалуй, для новичка и в самом деле это то что нужно, тем более учитывая что эта книга довольно—таки свежая: в ней рассматривается FreeBSD 7. Описывает актуальную систему X-ов и прочие новшества, которые на фоне устаревшей дремучести большинства вышеописанных книг смотрятся очень неплохо. Я оцениваю её практическую ценность в 4 балла — книга идеальная (но обязательно в тесном сочетании с Handbook) для введения в тему начального уровня специалистов.

Дополнительно к описанным книгам чисто по FreeBSD, для более широкого развития рекомендую следующую классику:

11) Hемет Э., Снайдер Г., Сибасс С., Хейн Т. «UNIX. Руководство системного администратора»

Рекомендую 3-ее её издание от 2002 (и в 2008 году тоже было переиздание) — это воистину универсальная книга, она очень известна и уважаема в мире UNIX-администраторов. В ней параллельно описываются все базовые задачи администрирования и сразу для нескольких популярных Unix-систем, в том числе в последнем её 3-ем издании есть прямые рекомендации по администрированию, в том числе и FreeBSD.

Это качественный продукт, написанный очень сжато, без воды, очень универсально. Вероятно, именно поэтому её трудно будет читать новичку, для профи она будет уже неинтересна, получается, что её целевой потребитель — это среднее звено администраторов. В этой среде её часто называют Библией Администратора . Я оцениваю её практическую ценность в 3 балла.

12) Ю. Вахалия. «UNIX изнутри», 2003

Я считаю эту отечественную книгу идеальной для введения в системное программирование на Unix-системах (любых, не только FreeBSD), своего рода отличным подготовительным этапом (прокладкой) при переходе от чистого администрирования к книгам навроде Маршалла Кирк МакКузика «FreeBSD. Архитектура и реализация ». Взять и начать читать последнюю без предварительной подготовки у вас просто не получится, поэтому Вахалия как раз то, что нужно для старта в эту область. Здесь довольно хорошим языком описываются общие и базовые сведения по устройству Unix, которые, думаю, не устареют и через 20 лет. Я оцениваю её практическую ценность в 3 балла.

13) Брайан Керниган и Роб Пайк. UNIX. Программное окружение (The Unix Programming Environment), 2003

Есть несколько изданий этой книги, это тоже своего рода классика по теме. Книга автора языка C, одного из разработчиков Unix. Вот что они сами пишут о своих целях: «Наша задача — показать философию программирования под UNIX. Поскольку эта философия базируется на отношениях между программами, мы должны большую часть этой книги посвятить обсуждению индивидуальных инструментов, но в контексте их совместного использования, в том числе и для построения новых программ». Как по мне, эта книга тонко балансирует на стыке между продвинутым администрированием системы и её программированием, посему она будет точно полезна для обоих названных категорий граждан.

Естественно, те общие концепции, которые описаны в ней, в равной степени касаются и FreeBSD тоже, и не имеют срока давности как такового. Эту книгу как лучшую для введения Константин Белоусов , ныне входящий в FreeBSD Core Team. Я оцениваю её практическую ценность в силу универсальности и цельности материала в 4 балла.

И заключение, напоминаю новичку: кроме рассмотренных сторонних печатных книг у FreeBSD Project есть своё замечательное и подробное руководство — , которое переведено в том числе и на русский (немного не совсем актуальная версия), а для начинающих разработчиков тут есть свой . Ну и конечно не нужно бояться первоисточников — man’ы, man’ы и ещё раз man’ы — это наиболее полный источник всевозможных прикладных деталей.



Понравилась статья? Поделитесь с друзьями!