Марк Митчелл - Программирование для Linux. Профессиональный подход
- Название:Программирование для Linux. Профессиональный подход
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:2002
- Город:Москва
- ISBN:5-8459-0243-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Марк Митчелл - Программирование для Linux. Профессиональный подход краткое содержание
Данная книга в основном посвящена программированию в среде GNU/Linux. Авторы применяют обучающий подход, последовательно излагая самые важные концепции и методики использования расширенных возможностей системы GNU/Linux в прикладных программах. Читатели научатся писать программы, к интерфейсу которых привыкли пользователи Linux; освоят такие технологии, как многозадачность, многопотоковое программирование, межзадачное взаимодействие и взаимодействие с аппаратными устройствами; смогут улучшить свои программы, сделав их быстрее, надежнее и безопаснее; поймут особенности системы GNU/Linux, ее ограничения, дополнительные возможности и специфические соглашения.
Книга предназначена для программистов, уже знакомых с языком С и имеющих базовый опыт работы в GNU/Linux.
Программирование для Linux. Профессиональный подход - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
При изложении материала всей книги мы предполагаем, что читатели знакомы с языком программирования С и C++ и наиболее распространенными функциями стандартной библиотеки языка С. Тексты программ в книге написаны на С, за исключением случаев, когда рассматривается конкретная особенность программирования на C++. Мы также предполагаем, что читатели умеют выполнять базовые операции в интерпретаторе команд Linux, в частности создавать каталоги и копировать файлы. В связи с тем что многие Linux-программисты начинали свой путь в среде Windows, мы иногда будем указывать на сходства и различия между двумя операционными системами.
1.1. Редактор Emacs
Редактор — это программа, используемая для модификации исходных текстов. В Linux множество редакторов, но, очевидно, наиболее популярный и многофункциональный среди них — GNU Emacs.
Emacs — нечто гораздо большее, чем просто редактор. Это необычайно мощная программа, работая в которой можно, к примеру, читать и отправлять электронные сообщения. Способы настройки и расширения ее функциональных возможностей столь обширны, что заслуживают написания отдельной книги. Представьте, что, находясь в Emacs, вы можете путешествовать в Internet!
Впрочем, мы не ограничиваем свободу читателей, привыкших работать в другом редакторе. Ни один из примеров книги не зависит от использования Emacs. Представленный ниже небольшой вводный курс предназначен для тех из вас, кто еще не успел выбрать свой любимый редактор в Linux.
1.1.1. Открытие исходного файла C/C++
Чтобы запустить редактор Emacs, наберите emacs
в окне терминала и нажмите . Появится окно редактора, в верхней части которого имеется строка меню. Перейдите в меню Files, выберите команду Open Files и наберите имя требуемого файла в строке "мини-буфера" в нижней части экрана. [2] Пользователи, не работающие в X Window, должны нажать , чтобы получить доступ к меню.
При создании исходного файла на языке С используйте расширения .с
или .h
. В случае C++ придерживайтесь расширений .cpp
, .hpp
, .С
или .H
. Когда файл будет открыт, введите нужный текст и сохраните результат, выбрав команду Save Bufferв меню Files. Чтобы выйти из редактора, воспользуйтесь командой Exit Emacsв меню Files.
Те, кто испытывают раздражение от необходимости постоянно щелкать мышью, могут воспользоваться клавиатурными сокращениями, ускоряющими открытие и сохранение файлов, а также выход из редактора. Операции открытия файла соответствует сокращение C-x C-f
. (Запись C-x
означает нажатие клавиши с последующим нажатием клавиши .) Чтобы сохранить файл, введите C-x C-s
, а чтобы выйти из Emacs — C-x C-c
. Лучше узнать о возможностях редактора можно с помощью встроенного учебника, доступного через команду Emacs Tutorialв меню Help. В нем приведено множество советов, которые помогут пользователям научиться эффективнее работать с Emacs.
1.1.2. Автоматическое форматирование
Программисты, привыкшие работать в интегрированной среде разработки, оценят имеющиеся в Emacs средства автоматического форматирования кода. При открытии исходного файла, написанного на C/C++, редактор самостоятельно определяет наличие в нем программного кода, а не просто текста. Если нажать клавишу в пустой строке, редактор переместит курсор в нужную позицию, определяемую положением предыдущей строки. Когда клавиша нажимается в строке, содержащей какой-то текст, сдвигается вся строка. Предположим, к примеру, что набран такой текст:
int main() {
printf("Hello, world\n");
}
Нажатие клавиши в строке вызова функции printf()
приведет к следующему результату:
int main() {
printf("Hello, world\n");
}
По мере работы с редактором Emacs читатели изучат и другие средства форматирования. Особенность редактора заключается в том. что он позволяет программировать практически любые операции, связанные с автоматическим форматированием. Благодаря этому были реализованы режимы редактирования множества видов документов, разработаны игры [3] Введите команду M-x dunnet , если хотите поиграть в старомодную приключенческую игру.
и даже СУБД.
1.1.3. Синтаксические выделения
Помимо форматирования программного кода Emacs упрощает чтение файлов, написанных на C/C++, выделяя цветом различные синтаксические элементы. Например, ключевые слова могут быть выделены одним цветом, названия встроенных типов данных — другим, а комментарии — третьим. Подобный подход облегчает нахождение некоторых широко распространенных синтаксических ошибок.
Чтобы включить режим цветовых выделений, откройте файл ~/.emacs
и вставьте в него такую строку:
(global-font-lock-mode t)
Сохраните файл, выйдите из Emacs и перезапустите редактор. Теперь можете открыть нужный исходный файл и наслаждаться!
Внимательные читатели, возможно, обратили внимание на то, что строка, вставленная в файл .emacs
, выглядит написанной на языке LISP. Это и есть LISP! Большая часть редактора Emacs реализована именно на этом языке. На нем же можно писать расширения к редактору.
1.2. Компиляторы GCC
Компилятор превращает исходный текст программы, понятный человеку, в объектный код. исполняемый компьютером. Компиляторы, доступные в Linux-системах, являются честью коллекции GNU-компиляторов, известной как GCC (GNU Compiler Collection). [4] Дополнительную информацию о GCC можно получить по адресу http://gcc.gnu.org .
В нее входят компиляторы языков С, C++, Java, Objective-C, Fortran и Chill. В этой книге нас будут интересовать лишь первые два.
Предположим, имеется проект, в который входят два исходных файла: один написан на С ( main.c
; листинг 1.1), а другой — на C++ ( reciprocal.cpp
; листинг 1.2). После компиляции оба файла компонуются вместе, образуя программу reciprocal
, [5] В Windows исполняемые файлы обычно имеют расширение .exe , а в Linux - вообще не имеют его. Поэтому в Windows эквивалент данной программы будет, скорее всего, называться reciprocal.exe .
которая вычисляет обратное заданного целого числа.
#include
#include "reciprocal.hpp"
int main(int argc, char **argv) {
int i;
i = atoi(argv[1]);
printf("The reciprocal of %d is %g\n", i, reciprocal(i));
return 0;
}
#include
#include "reciprocal.hpp"
double reciprocal (int i) {
// Аргумент не должен быть равен нулю
assert(i != 0);
return 1.0/i;
}
Есть также файл заголовков, который называется reciprocal.hpp
(листинг 1.3).
#ifdef __cplusplus
Интервал:
Закладка: