Выбрать главу
Отладка параллельных приложений

Это отдельная песня. Я не говорю даже о том, что когда в программе запущен не один, а несколько потоков, то пошаговая отладка превращается в настоящий кошмар: контрольные точки «ловят» все треды подряд, а шаг одного потока запросто может сопровождаться полусотней шагов соседнего. Главная проблема в отладке параллельных приложений заключается в том, что возникающие там глюки уникальны. Зачастую они связаны со случайным совпадением каких-то событий в «жизни» слабо связанных друг с другом потоков, а потому проявляются, как говорится, в соответствии с текущей фазой луны, - возникнут раз-другой и бесследно исчезнут. Мало того, иногда присутствие «наблюдателя» (отладочных средств) изменяет результат измерений, поскольку слегка перестраивает «свойства окружающей среды», - вот и вылавливай после этого какой-нибудь плавающий глюк, обусловленный параллельностью.

***

Возможных решений тут всего три. Во-первых, средства, подобные OpenMP, заметно упрощают разработку «параллельных» программ, поскольку устраняют необходимость ручного задания объектов синхронизации. Правда, платить за это приходится еще более суженной функциональностью и производительностью (автоматика особой сообразительностью не отличается), так что изучить объекты синхронизации программисту не помешает. Второй способ - использование «по старинке» большого объема выводимой вручную отладочной информации. И, наконец, третий - использование специальных программ вроде Intel Thread Checker, не только наглядно и доступно отображающих в виде графика ход исполнения программы, но и способных в некоторых случаях находить распространенные ошибки начинающих.

Выводы

Как ни крути, за параллельными приложениями будущее, - а значит, пришла пора осваивать соответствующие приемы программирования и инструментарий. Компания Intel не только обещает завалить рынок недорогими многоядерными процессорами, но и предоставляет весь необходимый инструментарий для полноценного использования своих разработок. И судя по тому, что новейшие продукты Intel на процессорах AMD зачастую отказываются запускаться - AMD как платформе разработчиков вскоре придется неуютно.

Софтерра: Фотографическая чертовщина

В мире программного обеспечения популярны два диаметрально противоположных тезиса. Первый заключается в том, что весь софт должен быть свободным и распространяться с исходными текстами, что только открытый способ разработки приносит плоды, с аппетитом съедаемые конечными пользователями. Против этой идеи выступают некоторые руководители крупных софтверных компаний: они утверждают, что продукция компании должна оплачиваться «нормальным» способом - а именно коммерческой реализацией товара.

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

Чертенок с кисточкой в магазине фототоваров

Инструменты обработки цифровых изображений уже давно выпорхнули из умелых рук профессионалов и прочно обосновались на компьютерах пользователей, которых никто ни разу в жизни не называл «фотографами». Сегодня даже начинающим секретарям-референтам вменяется в обязанность обработка цифровых снимков и рассылка заказчикам. Что уж говорить о нас с вами… горе-специалистах.

Ситуацию усугубляет то, что популяризация цифрового фото привела к огромным продажам маленьких аппаратов с еле заметным глазком объектива, в народе называемых «мыльницами». Их использование можно свести к трем этапам: машинальное нажатие на кнопку спуска, укладка прически после увиденного снимка, обращение за помощью к компьютеру, чтобы как-то исправить отснятый материал. И в этот момент нашей последней соломинкой оказывается ПО для обработки цифровых изображений.

За долгие годы бесшабашного использования разнообразного софта россияне привыкли к тому, что программы бывают только бесплатные, но некоторые нехорошие разработчики зачем-то заставляют пользователей при установке вводить серийный код, созданный ближайшей программой keygen.exe. Однако не за горами тот день, когда в домашних ПК будет жить только лицензионный софт. А раз так, то пора подумать - хватит ли нам возможностей бесплатного ПО для обработки цифровых шедевров или все же придется раскошеливаться?

В связи с особенностями лицензирования ПО в нашей стране поистине народным средством обработки фотографий стал весьма недешевый Adobe Photoshop. Единственным редактором из лагеря бесплатного ПО, сравнимым с этим гигантом, является GIMP, распространяемый по свободной лицензии GPL. Логотип редактора - чертенок с кисточкой в зубах.

Разумеется, Photoshop мощнее. Но его преимущества сводятся к наличию функций, применяемых лишь профессионалами: любителям не понять прелестей преобразования RAW-файлов, работы с изображением в пространстве CMYK и прочих фотографических и полиграфических таинств. Зато масса других возможностей наверняка пригодится пользователям мыльниц.

Построение перед боем

Размер дистрибутива GIMP - 7,5 Мбайт. Установка программы в Windows требует наличия библиотеки GTK+, которая весит 3,6 Мбайт. При этом для нормальной работы в Windows XP «Чертенку» достаточно 128-256 Мбайт оперативной памяти. Интерфейс программы не вполне обычен, к нему нужно привыкнуть - например, правая кнопка мыши вызывает не контекстное меню, отвечающее текущему элементу, а главное, что позволяет быстро вызывать любые функции редактора.

GIMP обладает всеми атрибутами серьезного графического «комбайна»: он умеет работать со слоями, накладывать множество фильтров, а также поддерживает язык Script-Fu, с помощью которого можно сделать из нескольких функций одну новую и получить самые немыслимые результаты.

Adobe Photoshop - дорогой профессиональный инструмент, его дистрибутив занимает один CD. Редактор настойчиво требует хотя бы 512 Мбайт оперативной памяти для комфортной работы. Как средство редактирования фотографий, Photoshop, наверное, является самым мощным продуктом среди конкурентов. Остается решить, а не стреляем ли мы из пушки по воробьям, используя этого «монстра»?

Равноправие цветов

Снимки, получаемые в яркий солнечный день, чаше всего не нуждаются в коррекции цвета, но стоит только оказаться в помещении при свете обычных ламп накаливания, как автоматика наших фотоаппаратов начинает барахлить. Несильные завалы в тот или иной тон исправляются в Photoshop с помощью функции «Цветовой баланс». Обратите внимание, что вы можете менять цветовую гамму раздельно в трех диапазонах яркости - тенях, полутонах и бликах.

Другая возможная проблема - ошибки экспозиции. Если снимок получился «засвеченным» и в некоторых местах яркость такая, что все сливается в единый белый фон, то это уже «не лечится». Слишком темные снимки, напротив, поддаются исправлению. Для корректировки экспозиции следует воспользоваться инструментом «Уровни», с помощью которого вы можете не только установить нужные параметры яркости для снимка, но и окончательно выправить баланс цвета.

Нажатие кнопки «Авто» позволит редактору настроить всю группу параметров по своему усмотрению. Если вас не устраивает работа «автоматики» - добро пожаловать в ручную правку уровней. Выбор черной и белой точек позволяет скорректировать изображение так, чтобы равномерно задействовать на снимке весь диапазон яркости, а с помощью серой можно построить всю цветовую гамму без перекосов в сторону того или иного канала.

Аналогичные функции присутствуют и в GIMP, однако меньшее внимание уделяется «автоматике». В меню «Инструменты цвета» нет ни одного пункта, который бы помог автоматически скорректировать изображение, хотя заветная кнопка «Авто» доступна из окошка «Уровней».