Главная Форум Файлы Статьи
Меню сайта
Категории раздела
Мобильный Софт\Mobile Soft [1127]
АвтоСофт\AvtoSoft [124]
Эксклюзивный Софт\Esclusiva Soft [1]
Полезный Софт\Software utile [501]
Книги: Фантастика [11]
Книги: Программирование [73]
Книги: О компьютерах [68]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Главная | Регистрация | Вход
Алгоритмические трюки для программистов - 16 Марта 2010 - Эксклюзивный портал

Главная » 2010 » Март » 16 » Алгоритмические трюки для программистов
20:03
Алгоритмические трюки для программистов
"Алгоритмические трюки для программистов: Пер. с англ." Уоррен Г.С.

Знаете ли Вы Первый закон творческого программирования? Он используется в качестве эпиграфа в книге Уоррена и звучит так:

Cтоимость сопровождения программного обеспечения пропорциональна
квадрату творческих способностей программиста.
Роберт Д. Блисc
Это, конечно, шутка, но в ней, как всегда, есть изрядная доля правды. Я эту книжку мог бы купить даже за один эпиграф! Но Вы - это не я, поэтому расскажу, о чем в книге написано. Уже по оглавлению можно судить о содержании. Множество изящнейших решений задач, которые время от времени появляются в форуме "Этюды для программистов". Уже на первой странице первой главы есть несколько простых формул. Одна из них

x & (x-1)

Как вы думаете, для чего она может пригодиться? Оказывается, так можно обнулить крайний справа единичный бит. И таких формул - море! Но книжка ценна не только простыми формулами. Здесь огромное количество алгоритмов. Например, в главе 11 приводится аппаратный алгоритм вычисления целочисленного квадратного корня, в котором используются только операции вычитания, сдвига вправо, и логического или (- >> | в нотации С). Считать все алгоритмы я не стал, но то, что их больше сотни - это факт! Алгоритмы написаны в одной из двух нотаций: либо на псевдо-С (очень похож на настоящий), либо в кодах гипотетической трехадресной RISC-машины, которая (ИМХО) сильно похожа на кнутовскую MMIX. В первой главе Уоррен приводит полное ее описание. В общем, понятно написано.

В книжке СОВСЕМ нет никакой воды - сплошная информация. Читать ее в автобусе или в метро - трудно. Если хочешь понять, почему работает, то надо вдумчиво, за столом разбирать много примеров. Изучение (не чтение, нет) этой книги существенно повысит понимание встроенных типов данных (особенно целых) и многих нюансов работы процессора. Для большинства алгоритмов приводится математическое доказательство корректности - для некоторых это может быть интересно. Книгу можно использовать и при разработке компилятора - тут прямо приводятся оптимизационные формулы и алгоритмы. Например, на странице 206 приводится алгоритм вычисления 2^n в компиляторе IBM XL Fortran. Полезна книга окажется и для разработчиков систем реального времени, где критично время вычислений. Да и в обычных приложениях найдется, где можно применить что-нибудь из этой книжки.

И напоследок. В 80-е годы в сборнике Уэзерелла "Этюды для программистов" была опубликована наверное самая знаменитая задача (по крайней мере, в России): написать программу, которая выводит свой собственный текст. Файлы использовать нельзя. Автор приводит САМУЮ КОРОТКУЮ программу на С, из известных ему, содержащую всего 64 символа. Написана Владом Таировым и Рашидом Фахреевым.

main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}

Печатает саму себя - проверено в Borland C++ 3.1 в режиме трансляции С-программ без отладочной информации для UNIX V. Конечно, с высоты современных стандартов это уродец, но в данном случае это неважно. Книга содержит и учит находить такие нестандартные решения. Почитайте - не пожалеете.

depositfiles.com
10.3 Mb

Категория: Книги: Программирование | Просмотров: 260 | Добавил: CHESTER | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

 


Профиль
Гость

Сообщения:

Группа:
Гости
Время:03:52

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!
Поиск
Календарь
«  Март 2010  »
Пн Вт Ср Чт Пт Сб Вс
1234567
891011121314
15161718192021
22232425262728
293031
Архив записей


Виконав студент групи ІНБ 1\06 Ігор Пиляй