Этюды для программистов Microsoft Word

Up ] Ресурсы ] Единицы измерения ] Словарь терминов ] Шаблоны и безопасность ] Полезные ссылки ]


Введение

Visual Basic был (а, возможно, и остается) самым успешно продаваемым языковым продуктом всех времен...

Джоэл Спольски [1]

Моим основным и любимым языком программирования уже много лет является C++ (здесь хотелось бы, пользуясь случаем, выразить признательность Брайану Кернигану и Деннису Ритчи за язык программирования С и книгу [2], Бьорну Строуструпу за язык программирования С++ и книгу [3], а также Андрею Александреску за удивительную книгу [4]). Среди созданных и поддерживаемых мной клиентских приложений особое место занимает плагин для Microsoft Word, для создания которого использован язык программирования VBA, встроенный во все программы семейства Microsoft Office. Именно этюды для программистов, использующих Microsoft Word в своей работе, и представлены в этой книге.

Все этюды, вошедшие в книгу, основаны на реальных задачах разной степени сложности. Решения задач в некоторых этюдах намеренно не доведены до конца. В таких случаях в конце соответствующей главы сформулированы задания для читателей перфекционистов, которым наверняка захочется сделать приведенные в книге программы ещё лучше. Хотя VBA позволяет легко расширять возможности Microsoft Word практически до бесконечности, часто для контакта с внешним миром приходится использовать динамические библиотеки. Поэтому в некоторых этюдах используются дополнительные динамические библиотеки или небольшие программы, написанные на C++. Завершает книгу элегантный этюд "Звуковой Транскрайбер".

Предлагаемые вниманию читателя этюды весьма разнообразны. Есть совсем короткие этюды и, напротив, очень длинные. Главное же в том, что усердный читатель при желании может непрерывно совершенствовать предлагаемые решения. Тут самое главное – вовремя остановиться. Разные этюды практически не связаны друг с другом, поэтому можно просматривать их в любом порядке. Даже самые длинные этюды, по существу, очень просты, если не сказать легкомысленны. Рассматриваемые задачи далеки по сложности от решения задачи поиска в растущей базе данных или реализации алгоритма Тоома-Кука. Все приведенные этюды ориентированы на изучение возможностей (часто малоизвестных), предоставляемых объектной моделью Microsoft Word, на примере задач, максимально приближенных к реальности.

Очевидное влияние на структуру изложения материала оказала блестящая книга Чарльза Уэзерелла "Этюды для программистов" [5]. Наряду с существующим уже десятилетия массовым производством товаров, ценность работ, выполненных мастерами своего дела, только возрастает. Похожая ситуация складывается и в программировании. Несмотря на появление и развитие всевозможных инструментов, предназначенных для массового производства программ, хорошие программы встречаются не так часто, как хотелось бы. Даже в пределах одной корпорации выпускаются программы разной степени надежности. Так, например, судя по моему личному опыту, надёжность Microsoft Excel и Microsoft Access неизмеримо выше надёжности Microsoft Word, который, от версии к версии, время от времени падает на больших документах. Наличие же в текстовом процессоре функции восстановления документов после падения программы вообще представляется неприличным. И это несмотря на то, что Microsoft Word является самой старой и самой массовой из упомянутых программ.

Подразумевается, что пользователь, желающий разобраться с приведенными в книге программами на VBA, имеет хотя бы первоначальные знания о редакторе Visual Basic Editor, встроенном в Microsoft Word. Для пользователей, желающих разобраться с приведенными в книге программами на C++, требуется хотя бы поверхностное знакомство с Visual Studio версии 7 или более поздней.

Каждая глава книги посвящена решению конкретной задачи. Решение каждой задачи оформляется в виде шаблона Microsoft Word (файл с расширением .DOT), в котором содержатся все макросы, необходимые для решения задачи, а также пользовательский интерфейс (панель инструментов с несколькими кнопками), с помощью которой вызываются требуемые макросы. Как правило, перед использованием шаблон нужно поместить в папку автозагрузки Microsoft Word. Если в этюде используются динамические библиотеки, то их следует скопировать в системную папку Windows. Тогда после запуска Microsoft Word панель инструментов будет доступна при редактировании любого документа. Каждая глава начинается с постановки задачи. Описываются требования к шаблону (кнопки панели инструментов) и к макросам. По существу, постановка задачи имеет вид краткой функциональной спецификации, описывающий внешний вид пользовательского интерфейса (чем больше картинок, тем лучше!) и его функциональность [6]. После этого описывается реализация поставленной задачи, приводится и комментируется код используемых VBA макросов. В конце главы формулируются выводы. После выводов обычно формулируются задания для самостоятельной работы, выполнение которых даст возможность улучшить приведенные в книге решения.

Примерная структура главы описана в следующей таблице

Раздел

Краткое описание

Глава XXX

Краткое введение в проблему.

Ресурсы

Ссылка на шаблоны и/или программы, описываемые в текущем этюде.

Спецификация

Постановка задачи. Описание панели инструментов, скриншоты. Описание требуемой функциональности.

Реализация

Краткое описание шаблона и/или программы. Модули, формы и исходные тексты макросов с комментариями автора.

Выводы

Выводы по материалам главы.

Задания

Задания для самостоятельного развития темы.

Хорошо известно, что программисты не любят писать документацию. Написание спецификаций и вовсе не входит в круг их прямых обязанностей. Однако спецификации совершенно необходимы для успеха программных проектов. Даже маленьких проектов. Я надеюсь, что после знакомства с несколькими интересными спецификациями, Вы начнете писать спецификации и для своих собственных программ. Джоэл Спольски утверждает, что "написание спецификаций – это настоящая и подлинная добродетель" [7]. Если говорить честно, то не все спецификации, приведенные в книге, были написаны до написания кода. Некоторые были написаны после. Но они были написаны!

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

Все описанные в книге шаблоны Microsoft Word, написанные на VBA, доступны в исходных текстах на сайте автора http://www.transcriber.ru/etudesrus.

References

1. Joel Spolsky "Joel on Software", Apress, 2004.
Русский перевод - Джоэл Спольски "Джоэл о программировании", СПб, Символ-Плюс, 2006.

Джоэл Спольски стоял у истоков VBA. Именно он, работая в Microsoft, создал первую спецификацию языка. Мало кто в мире может похвастаться службой в израильском спецназе и дипломом Йельского университета. Но самое интересное случилось потом. Джоэл создал собственную софтверную фирму и с 2001 года делится со всем миром секретами успешного софтостроения и своими мыслями (а они у него есть!) о путях развития индустрии программного обеспечения. Всё остальное вы можете прочитать сами на сайте Джоэла http://www.JoelOnSoftware.com

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

 2. Brian W. Kernighan and Dennis M. Ritchie. "The C Programming Language". Prentice Hall. 1972.
Русский перевод – Керниган Б., Риччи Д. "Язык программирования C". Книга также известна как "K&R".

 Абсолютная классика жанра. После этой книги читать учебники по Паскалю было совершенно невозможно.

3. Bjarne Stroustrup. "The C++ Programming Language (3rd Edition) ".
Русский перевод – Строуструп Б. "Язык программирования C++".

Бьярн просто взял и усовершенствовал язык C. Что из этого получилось хорошо известно. Хороший пример того, как один человек может изменить мир к лучшему.

4. Andrei Alexandrescu. "Modern C++ Design: Generic Programming and Design Patterns Applied". Addison Wesley Professional. 2001.
Русский перевод – Александреску А. "Современное проектирование на С++. Серия C++ In-Depth". Вильямс, 2002, 336 с.

В 2001-м году казалось, что в мире C++ всё уже открыто и известно. Александреску приятно удивил всех, показав что это далеко не так.

5. Charles Wetherell. "Etudes for programmers". Prentice Hall. 1978.
Русский перевод – Чарльз Уэзерелл. "Этюды для программистов". Пер. с англ., -М., Мир, 1982 г., 288 с.

Эта прочитанная много лет назад блестящая книга сохранилась у автора до настоящего времени.

6. Joel Spolsky. Painless Functional Specifications - Part 2: What's a Spec? http://www.joelonsoftware.com/articles/fog0000000035.html.

7. Joel Spolsky. Painless Functional Specifications - Part 1: Why Bother? http://www.joelonsoftware.com/articles/fog0000000036.html.

 


Этюды для программистов Microsoft Word. Введение.


© 2000-2009 Евгений Ахунджанов, Все Права Сохранены.
www.transcriber.ru | Послать письмо автору