Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новинки компьютерных книг ->> Программирование для Linux


Служба Рассылок Subscribe.Ru

Visit our site Visit our site

Программирование для Linux
Профессиональный подход

Марк Митчелл, Джеффри Оулдем, Алекс Самьюэл

 
Библиография

Данная книга в основном посвящена программированию в среде GNU/Linux. Авторы применяют обучающий подход, последовательно излагая самые важные концепции и методики использования расширенных возможностей системы GNU/Linux в прикладных программах. Читатели научатся писать программы, к интерфейсу которых привыкли пользователи Linux; освоят такие технологии, как многозадачность, многопотоковое программирование, межзадачное взаимодействие и взаимодействие с аппаратными устройствами; смогут улучшить свои программы, сделав их быстрее, надежнее и безопаснее; поймут особенности системы GNU/Linux, ее ограничения, дополнительные возможности и специфические соглашения. Книга предназначена для программистов, уже знакомых с языком C и имеющих базовый опыт работы в GNU/Linux.

Введение

Операционная система Linux вихрем ворвалась в мир компьютеров. Было время, когда выбор пользователей был ограничен коммерческими операционными системами и приложениями. У пользователей не было возможности исправлять или улучшать эти программы, и часто они были вынуждены принимать довольно жесткие лицензионные условия. С появлением GNU/Linux и других систем с открытым кодом все изменилось. Теперь в распоряжении пользователей, администраторов и разработчиков есть бесплатная операционная система с множеством утилит, приложений и со всеми исходными текстами.

Большая доля успеха GNU/Linux приходится на открытую природу этой системы. Поскольку исходные тексты программ общедоступны, любой может принять участие в их разработке, либо путем исправления незначительной ошибки, либо путем распространения целого приложения. Это подвигло тысячи разработчиков во всем мире на создание новых программных компонентов и улучшение операционной системы до такой степени, что она сравнялась по своим возможностям с любой коммерческой ОС. В дистрибутивы Linux входят тысячи программ и приложений.

Своим успехом ОС Linux обязана также философии UNIX. Многие программные компоненты, появившиеся в AT&T UNIX и BSD UNIX, продолжили свое существование в Linux и заложили основу для написания новых программ. Философия UNIX, заключающаяся в организации взаимодействия множества небольших утилит командной строки, является главным принципом организации ОС Linux, делающим эту систему столь мощной. Даже когда программы оснащены пользовательским интерфейсом, лежащие в их основе команды доступны для написания сценариев автоматизации. Множество сложных задач можно решить, объединяя существующие команды и программы в простых сценариях.

GNU и Linux

Операционная система Linux названа в честь Линуса Торвальдса, ее автора и создателя ядра системы. Ядро - это программа, которая выполняет основные функции операционной системы. Оно взаимодействует с аппаратными устройствами, выделяет память и другие ресурсы, позволяет нескольким программам работать одновременно, управляет файловыми системами и т.д.

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

В системах GNU/Linux большинство таких программ разработано в рамках проекта GNU. Многие из них были написаны раньше, чем появилось ядро Linux. Цель проекта GNU - "создание полноценной операционной системы наподобие UNIX, оснащенной бесплатным программным обеспечением" (цитата с Web-узла www.gnu.org).

Ядро Linux и GNU-программы составляют очень мощную комбинацию, которую чаще всего называют просто "Linux". Но без GNU-программ система не будет работать, как и без ядра. Поэтому во многих случаях мы говорим GNU/Linux.

Общая лицензия GNU

Исходные тексты программ, приведенные в этой книге, распространяются на условиях общей лицензии GNU (GPL, GNU General Public License), которая приведена в приложении Е, "Общая лицензия GNU". Таким же способом лицензируется большинство бесплатных программ, особенно в рамках GNU/Linux, например ядро системы. Прежде чем использовать представленные исходные тексты, ознакомьтесь с условиями данной лицензии.

Общая лицензия GNU обсуждается на Web-узле www.gnu.org/copyleft наряду с другими лицензиями на бесплатное распространение программного обеспечения. Найти информацию о лицензиях на распространение программ с открытым кодом можно по адресу http://www.opensource.org/licenses/index.html.

Для кого предназначена эта книга

Эта книга предназначена для трех категорий читателей.

  • Возможно, наш читатель является разработчиком, имеющим опыт создания программ для GNU/Linux и стремящимся узнать о более сложных возможностях и особенностях системы. Таких читателей заинтересуют главы, посвященные программированию процессов и потоков, а также межзадачному программированию и взаимодействию с аппаратными устройствами. Мы поможем им сделать свои программы быстрее, надежнее и безопаснее.
  • Возможно, наш читатель является разработчиком, имеющим опыт программирования для другой UNIX-системы и желающим создавать программы для GNU/Linux. Такой читатель уже знаком со стандартными API-функциями, и ему нужно узнать об особенностях системы, ее ограничениях, дополнительных возможностях и специфических соглашениях.
  • Возможно, наш читатель является разработчиком, пришедшим в среду UNIX из другой платформы, например Win32. Такой читатель знаком с общими принципами разработки программного обеспечения, но ему нужно узнать о специфических методиках, применяемых в Linux-программах для взаимодействия с операционной системой и другими программами. Ему нужно научиться писать программы, которые ведут себя так, как того ожидают пользователи Linux.

Эта книга не является исчерпывающим руководством или справочником по программированию в GNU/Linux. Мы применяем обучающий подход, последовательно излагая самые важные концепции и методики и приводя примеры их использования. В разделе 1.5, "Поиск дополнительной информации", указано, где можно найти дополнительную информацию по данной теме.

Поскольку в книге рассматриваются довольно сложные вопросы, мы предполагаем, что читатели знакомы с языком программирования C и знают, как использовать функции стандартной библиотеки языка C. Этот язык является основным средством разработки программного обеспечения для GNU/Linux. Большинство команд и функций, описанных в книге, а также большая часть ядра Linux написаны на C.

Изложенная в книге информация в равной степени применима к программам, написанным на C++, так как этот язык является надмножеством языка C. Библиотечные функции языка C являются основным "средством общения" в среде GNU/Linux.

Те, кто уже программировали в UNIX, возможно, сталкивались с низкоуровневыми функциями ввода-вывода (open(), read(), stat() и т.д.). Они отличаются от стандартных библиотечных функций языка C (fopen(), fprintf(), fscanf() и др.). Оба семейства функций находят применение в GNU/Linux, поэтому мы не будем делать акцент на каком-то одном семействе. Низкоуровневые функции описаны в приложении Б, "Низкоуровневый ввод-вывод".

В книге отсутствует вводная информация об операционной системе Linux. Мы предполагаем, что читатели имеют общее представление о том, как взаимодействовать с системой и выполнять базовые операции в графической среде и в режиме командной строки.

Мы писали программы в Red Hat Linux версии 6.2. В этот дистрибутив входит ядро Linux версии 2.2.14, GNU-библиотека языка C версии 2.1.3 и семейство компиляторов EGCS версии 1.1.2. Приведенные программы в общем случае должны работать и в других версиях Linux, в частности в ядре версии 2.4 и с GNU-библиотекой языка C версии 2.2.

Об авторах

Марк Митчелл получил степень бакалавра вычислительной техники в Гарвардском университете в 1994 году и степень магистра - в Станфордском университете в 1999 году. Его научные исследования касались теории сложности вычислений и компьютерной безопасности. Марк принимал участие в разработке коллекции GNU-компиляторов (GCC).

Джеффри Оулдем получил степень бакалавра вычислительной техники в университете Райс в 1991 году. После работы в Центре исследования параллельных вычислений он получил степень доктора философии в Станфордском университете в 2000 году. Его научные исследования касались теории алгоритмов. В настоящее время он продолжает разработку коллекции GNU-компиляторов и пишет программы для научных расчетов.

Алекс Самьюэл окончил физический факультет Гарвардского университета в 1995 году. Он работал инженером-программистом в компании BBN, после чего вернулся к изучению физики в Станфордском университете. Алекс является администратором проекта Software Carpentry и занимается рядом других проектов, в частности оптимизацией коллекции GCC.

Марк и Алекс основали компанию CodeSourcery LLC в 1999 году. Джеффри пришел в компанию в 2000 году. Целями компании являются создание средств разработки для GNU/Linux и других операционных систем; превращение семейства GNU-утилит в стандартный набор средств разработки промышленного качества; выполнение работ под заказ и предоставление консультаций. Адрес Web-узла компании: www.codesourcery.com.

О научных консультантах

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

Гленн Бекер (Glenn Becker) имеет много научных степеней, все в области театрального искусства. В настоящее время он работает онлайн-продюсером в SCIFI.COM - интерактивном компоненте канала SCI FI в Нью-Йорке. Дома у него установлена система Debian Linux, и он интересуется такими темами, как системное администрирование, безопасность, локализация программного обеспечения и XML.

Джон Дин (John Dean) получил степень бакалавра естественных наук в Шеффилдском университете в 1974 году. В 1986 г. он получил степень магистра систем автоматического управления в Институте наук и технологий в Кранфилде. Работая в компании Roll Royce and Associates, Джон разрабатывал программное обеспечение для систем автоматизированного управления ядерной техникой. После ухода из компании в 1978 г. он работал в нефтехимической промышленности, занимаясь созданием систем управления технологическими процессами. С 1996 по 2000 гг. Джон был добровольным разработчиком компании MySQL, после чего перешел на работу в эту компанию. Джон занимается переносом MySQL в Windows и написанием нового графического клиента MySQL для платформ Windows и X-11.

Благодарности

Мы выражаем глубокую признательность Ричарду Сталлману (Richard Stallman), без которого никогда не было бы проекта GNU, и Линусу Торвальдсу (Linus Torvalds), без которого никогда не было бы ядра Linux. Огромное число людей внесло свой вклад в операционную систему Linux, и мы благодарим их всех.

Мы благодарим преподавателей университетов Гарварда, Станфорда и Райс, которые учили нас. Без них мы никогда не рискнули бы учить других!

Ричард Стивенз (W. Richard Stevens) написал три великолепные книги по программированию в UNIX, которыми мы постоянно пользуемся. Роланд Маграт (Roland McGrath), Ульрих Дреппер (Ulrich Drepper) и многие другие написали GNU-библиотеку языка C и превосходную документацию к ней.

Роберт Бразил (Robert Brazile) и Сэм Кендалл (Sam Kendall) просмотрели ранние наброски нашей книги и дали советы по ее направленности и содержанию. Наши научные консультанты и рецензенты (особенно Гленн Бекер и Джон Дин) находили ошибки и оказывали нам техническую поддержку. Естественно, оставшиеся ошибки - целиком на нашей совести!

Благодарим сотрудников издательства New Riders: Энн Куинн (Ann Quinn) - за решение всех вопросов, связанных с публикацией книги; Лору Ловолл (Laura Loveall) - за то, что помогла нам уложиться в сроки; Стефани Уолл (Stephanie Wall) - за то, что вдохновила нас на написание этой книги.

От издательства

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

Мы ждем ваших комментариев и надеемся на них. Вы можете прислать электронное письмо или просто посетить наш Web-сервер, оставив свои замечания, - одним словом, любым удобным для вас способом дайте нам знать, нравится или нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более подходящими для вас.

Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш e-mail. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию последующих книг. Наши координаты:

E-mail:info@williamspublishing.com

WWW:http://www.williamspublishing.com

Вернуться к начальной странице



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное