
\chapter{Компьютеры в современном мире}
\section{Роль компьютера в научном исследовании}

Компьютерная революция в нашей стране произошла внезапно и захватила 
в расплох как профессионалов, перепрыгнувших с БЭСМ-6 сразу на PC/AT без
промежуточного этапа в виде MicroVAX или ранних моделей Sun, так и
простых исследователей, которые не успев освоить пишущую машинку оказались
перед лицом необходимости готовить свои статьи в Winword.

Наша культура еще не успела сформировать набора правил и стереотипов,
хотя бы такого, какой есть в Западной Европе, где внедрение компьютеров
в быт и работу растянулось на полтора десятилетия.

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

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

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

В качестве примера могу привести мой собственный печальный опыт: когда
я задал студентам V-го курса практическое задание по рассчету корреляционной
матрицы, основная проблема была не в том, что им было сложно 
разобраться с Quattro Pro, а в том, что они не знают, что такое
корреляционная матрица.

Сравните это с требованиями, предъявляемыми редакциями западных 
научных журналов, например {\sl GeoDerma}~--- статья, в которой используется
интерполяция, ну например, содержания гумуса, не будет принята, если
в ней не описано, какая модель вариограммы была использована, почему
предпочтение было отдано именно ей, и какова статистическая оценка 
погрешности как коэффициентов, так и полученной модели поля концентрации.

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

Но уровень математической (в смысле корректного использования методов) и
компьютерной (в смысле адекватного выбора средств для решения поставленной
задачи) культуры с распространением компьютеров в мире сильно возрос и от него
не стоит отставать.

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

А при работе с ГИС не задаться этим вопросом нельзя, поскольку иначе 
созданную карту нельзя будет использовать совместно с другими, разработанными
независимо.

Короче говоря, для ученого, особенно для ученого-естественника, компьютер
это не просто пишущая машинка, умеющая исправлять опечатки. Это основной
инструмент на всех этапах камеральной работы, начиная с
коллекционирования космических снимков из архивов NASA и пересчета 
результатов химических анализов, кончая подготовкой оригинал""-макета
статьи и посылкой его в редакцию.

\section[Роль прогаммипрования]{Программирование и грамотное использование компьютеров}
Автор еще помнит то время, когда слова <<компьютерщик>> и <<программист>>
были синонимами.

Следствием этого времени были курсы программирования расчитанные на
безнадежно устаревшую технику (или вообще на бумаге) и на язык Fortran.
Был даже кандидатский минимум по информатике, который представлял собой
опять же экзамен по Fortran'у.

Сейчас, по закону маятника, наблюдается обратная тенденция: программировать
бесполезно, все что можно было написать~--- уже написано.

Эта точка зрения гораздо ближе к истине. Уже есть у нас в стране развитая
дистрибьюторская сеть, предлагающая по ценам от десятков до тысяч долларов
сотни программных продуктов для решения задач практически в любой области
человеческой деятельности. Есть и отечественные разработки. И море-разливанное
пиратских CD-ROM, на которых за 25000 рублей вам предлагается набор
пакетов общей стоимостью в 25000 долларов.

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

Тем не менее, по мнению автора, {\it грамотного} использования 
компьютеров без программирования не бывает. Важно соблюдать меру между
использованием готового и созданием своего. Этому вопросу посвящена глава
 \ref{progr}.

   
\section{краткий обзор типов компьютеров}
С первого взгляда современная компьютерная индустрия представляет собой
сплошное вавилонское столпотворение~--- смешение языков, операционных систем,
платформ, пакетов.

Тем не менее в основе всех современных компьютеров лежат одни и те же
так называемые принципы фон Неймана, 90\% всех программных пакетов
написана на одном и том же языке C и логика работы всех с компьютером
любого типа более менее одинакова.

Любой компьютер, который может встретиться в современном научном
учереждении, скорее всего можно отнести к одному из следующих пяти
классов:
\begin{itemize}
\item     IBM-совместимые персональные компьютеры
\item     Macintosh
\item     рабочие станции
\item     mainframe и супер-ЭВМ,
\item     транспьютеры.
\end{itemize}
Эти классы далеко не равнозначны как по распространенности, так и по
количеству марок. Не являются они и правильной классификацией по 
производительности. Тем не менее у каждого класса есть что-то общее и
давать краткий обзор удобнее всего именно по такой классификации.

\begin{description}
\item[IBM-совместимые:] наиболее распространенный в мире, а особенно
в нашей стране класс компьютеров. Любая машина, сделанная на основе
процессора фирмы Intel серии x86 (или 8088) относится к этому классу.
Как правило эта машина ассоциируется с операционной системой MS-DOS и
графической оболочкой Windows, но это не значит что на ней нельзя использовать
и другие операционные системы, например Unix.
\item[Macintosh:] В отличие от IBM PC, архитектура которых открыта и которые
производятся сотнями фирм по всему миру, Macintosh~--- продукт одной фирмы~---
Apple Computing Inc. Это означает в общем более высокие цены, несколько
более единый стиль дизайна. До последнего времени это означало и единую
операционную систему~--- MacOS, но в этом году не без помощи Apple Computing
была выпущена версия Linux для Mac. Макинтоши принесли миллионам пользователей
персональных компьютеров графический интерфейс пользователя, поэтому
традиционно считаются более простыми в освоении для нетехнических людей
и лучше приспособленными для издательских задач и компьютерного видео,
хотя по обоим этим критериям IBM-совместимые машины их практически догнали.
\item[Рабочие станции:] В эту группу попадают практически все машины, которые
умещаются на столе (или хотя бы под столом) и не относятся к первым двум 
классам. Это машины, предназначенные для решения профессиональных задач,
и стоят они соответственно в 10-20 раз дороже IBM совместимых.

 К традиционным для них задачам относятся
техническое проектирование, обработка картографической информации,
сложная графика, большие расчетные задачи. Как правило это машины с
операционной системой Unix (точнее с одним из ее клонов).

К этой же группе я отношу и сетевые серверы, поскольку они выпускаются
теми же фирмами, на основе тех же процессоров и с той же Unix.

\item[Mainframe:] динозавры компьютерного мира, пережиток тех времен,
{\it <<когда компьютеры были большими, аналитики считались волшебниками,
а программисты перфорировали карты>>}. В эти машины было в свое время
вложено столько средств, что их будут эксплуатировать до тех пор пока 
они не износятся окончательно. Это наши оборонные организации, лишенные
заказов, могут позволить себе демонтировать EC 1060 и сдать освободившийся
зал коммерческому банку, а в приличной стране так никто не поступит.
\item[Транспьютеры:] Машины предназначенные для специальных целей,
например для моделирования обтекания самолета воздухом. Отличительная 
особенность~--- это то, что транспьютер содержит несколько тысяч процессоров,
которые обрабатывают разные точки регулярной сетки одновременно. 
Выглядеть это может самыми разными способами. Зачастую транспьютер~--- это
просто плата расширения втыкаемая в свободный слот IBM PC совместимого
компьютера.
\item[Прочая экзотика:] Иногда попадаются персональные компьютеры, которые
по мощности не дотягивают до рабочих станций, но тем не менее не совместимы
ни с IBM PC, ни с Macintosh. Естественно, речь идет о машинах, не уступающих
по производительности этим двум классам. Из этой группы наиболее распространены
компьютеры Atari и изделия фирмы Acron, например Archimed. 
\item[{}\${}500 Device:] Вспомнив про Acron, нельзя не упомянуть про недавнюю 
рекламную компанию с участием Acron и Oracle~--- идею сетевого компьютера.
Это всего лишь реанимация старой идеи терминала на новом уровне. Сначала
были просто алфавитно-цифровые терминалы, подключенные к mainframe, потом
графические терминалы, потом X-терминалы, которые по вычислительной мощности
уже сравинимы с 386 IBM-совместимой персоналкой, и вот теперь - Network Computer,
который большую часть вычислений выполняет локально, а все данные и программы
грузит по сети. Мне такие устройства пока не попадались, но может скоро 
появятся.
\end{description} 
\section{Компьютерная субкультура}
Компьютер, как и автомобиль~--- явление социальное. Вокруг компьютеров
уже успел сложиться определенный слой норм поведения, писанных и неписанных
законов, и даже фольклора.

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

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

Не обольщайтесь наличием конкуренции. Основная цель этой индустрии~---
продать вам программу подороже, требующую возможно более мощного 
компьютера. А насколько вам удобно этим пользоваться~--- дело ваше.
Индустрию интересует среднестатистический пользователь, то есть
кассир в банке или девочка-секретарша в комерческой фирме.

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

Но, как и любая мода~--- она не лучше.

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

 


\section{О праве собственности}
Компьютеры привнесли в  нашу жизнь такое новое явление, как простота
копирования. Если раньше практически любая вещь, в которую вложен
интеллектуальный труд, например книга, была устроена так, что ее проще
честно купить, чем незаконно скопировать, то с программами это не так.

В результате сейчас большая часть российских пользователей компьютеров
работает на краденом\footnote{Я намерено не употребляю термин <<пиратство>>,
поскольку в нем присутствует определенный налет романтики.} программном обеспечении.

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

Почему же у него не вызывает угрызений совести оформление этой статьи
в копии Winword, зарегистрированной неизвестно на кого?

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

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

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

Самое удивительное состоит в том, что это утверждение абсолютно не соответствует
истине.

Еще в 70-х годах Ричарду Сталлману пришла в голову мысль о том, что
искуственно ограничивать право человека на пользование необходимыми 
программами неправильно.

За двадцать лет, прошедших с тех пор, основанный Сталлманом Фонд Свободных
Программ и тысячи других людей по всему миру разработали столько хороших
рабочих инструментов, что только маленькая толика пуританства нужна для
того, чтобы пользоваться для решения любых задач лишь теми программами,
которые вы {\bf официально} имеете право копировать и распространять
бесплатно.

В принципе все программы делятся на три больших класса:
\begin{description}
\item[properitary:] Программы, все права на которые принадлежат автору или
фирме разработчику. Для того чтобы поставить такую программу себе на
компьютер, вы обязаны получить на нее лицензию. Иногда программа имеет
встроенную защиту, например кодовый номер или аппаратный ключ, но чаще
автор (точнее владелец авторских прав) полагается на честное слово
своих пользователей.

Преимуществом таких программ является то, что они обычно сопровождаются
подробной документацией. Более того, крупные фирмы""-разработчики обычно
сообщают пользователям <<горячий телефон>> службы поддержки, куда можно
позвонить и задать вопрос, если что-то не получается.

Разработчики сложных систем, например ГИС, часто организуют конференции
и курсы пользователей, и даже издают специальные журналы, посвященные
своим продуктам.
\item[shareware:] Как следует из названия, это программы, которыми
вы можете поделиться (share) со своими друзьями. Обычно автор программы
указывает в документации срок (около месяца), в течении которого вы
можете пользоваться программой бесплатно, для того, чтобы определить,
нужна ли она вам\footnote{Иногда аналогичную возможность предоставляют
и крупные фирмы, торгующие коммерческими (properitary) программами}.
 Если вам она понравилась, то вы должны ее зарегистрировать,
заплатив разработчику определенные, обычно небольшие деньги.

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

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

Кроме того только официальным пользователям разработчики shareware
предоставляют поддержку по телефону и электронной почте.
\item[freeware:] Программы, автор которых отказался от идеи брать деньги со
своих пользователей. Существуют несколько вариантов, отличающихся мелкими
тонкостями типа доступности исходных текстов и права на их модификацию.

Бывают также программы, которые являются freeware для одних категорий
пользователей и shareware для других. Кстати, научные организации и 
особенно университеты, обычно в такой ситуации находятся в привелигерованном
положении.
\end{description}

\section{Как осваивать незнакомую программу}
\label{NewProgr}
\subsection{Не бойтесь новой программы.}
Одна из основных проблем, которые встают перед начинающим пользователем,
это необходимость освоения все новых и новых программных пакетов.

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

С этим желанием надо бороться, во всяком случае на начальном этапе.
Если вы владеете по крайней мере одним продуктом из каждого класса программ,
вам действительно стоит три раза подумать, прежде чем переходить на
другой продукт того же класса, но время, потраченное на освоение нового
класса программ, обычно окупается в течение месяца, а то и недели,
если вам {\it действительно} нужна программа этого класса.

К тому же программы обычно достаточно похожи друг на друга,
и сходные операции выполняются одинаково в самых разных программах,
особенно в таких средах как Windows или MacOS.

Самый главный принцип, которым стоит руководствоваться при освоении
новой программы: {\bf компьютер нельзя испортить неправильным нажатием
на клавиши.}

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

И то, как правило, при попытке совершить что-то страшное, программа
задает дополнительный вопрос. Так что, если, увидев сообщение на
пол-экрана с кнопочками Yes и No внизу, вы не жмете автоматически на
Enter, а пытаетесь прочитать и понять, что от вас хотят, можете
считать себя гарантированным от подобных бедствий.
 
\subsection{Стандартные соглашения о клавишах}
Если вам приходилось наблюбать как опытный пользователь общается
с совершенно новой для него программой, то вы могли обратить
внимание, что приблизительно половину операций он выполняет сходу,
совершенно не думая.

Это происходит потому, что некоторые клавиши практически всегда
(во всяком случае в той же операционной системе) означают одно и то же.
Например, в Windows {\bf Alt-F4}~--- это всегда закрытие текущего окна,
в том числе и всей программы (и даже всей системы Windows, если текущее
окно - Program Manager).

<<Ну вот,~--- скажете вы.~--- И здесь пошли магические знаки, которыми
пестрят все книги о компьютерах. У меня на клавиатуре есть клавиша
{\bf Alt}, есть {\bf F4}, а клавиши {\bf Alt-F4}~--- нет.>>

И будете правы. Потому что я начал пользоваться стандартными обозначениями,
не объяснив их.

Давайте вернемся немого назад. На клавиатуре компьютера есть всего
около ста клавиш~--- на рабочей станции Sun чуть больше, на портативном
компьютере класса notebook~--- чуть меньше. Если учесть, что около
пятидесяти из них заняты под буквы и знаки препинания, то для разнообразных
команд клавиш явно не хватает.

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

В этой книге мы будем использовать такое соглашение:

Если названия двух клавиш написаны через дефис, например {\bf Alt-F4},
то нажимать их надо одновременно, точнее, нажав и удерживая клавишу
{\bf Alt}, нажать и отпустить {\bf F4}.

Если же названия написаны через пробел, например {\bf ESC !}, то надо
нажать и отпустить клавишу {\bf ESC}, а затем нажать {\bf !}.

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

Некоторые клавиши на клавиатуре компьютера всегда используются как
{\it модификаторы}, то есть клавиши, которые надо нажимать одновременно
с какой-либо другой клавишей, так же, как на пишушей машинке нажимается
клавиша верхнего регистра, когда надо получить заглавную букву.

На клавиатуре IBM PC это клавиши {\bf Shift, Control и Alt}.
На Macintosh есть еще клавиша Command, обозначенная на клавиатуре
как $\ae$.

На некоторых Unix-терминалах встречается еще и клавиша {\bf Meta}.
Но с ней ситуация несколько сложнее, поскольку она есть далеко не
на всех клавиатурах. Поэтому обычно комбинация ``{\bf Meta-}клавиша'' 
заменяется на комбинацию ``{\bf Esc} клавиша''.

В отличие от модификаторов, клавиши которые надо нажать и отпустить перед
нажатием другой клавиши, называются {\it префиксными} клавишами.

В таблице \ref{Modifiers} приведена сводка наиболее распространенных
модификаторов.

\begin{table}
\caption{Клавиши-модификаторы}
\label{Modifiers}
\begin{tabular}{|l|l|l|}
\hline
Модификатор&Где встречается&Обозначения в документации\\
\hline
Shift&везде& Shift-клавиша\\
Control&везде&Ctrl-клавиша, \verb!^!-клавиша,C-клавиша\\
Alt&IBM PC,рабочие станции&Alt-клавиша,{\small(редко)}@клавиша\\
Meta&Некоторые рабочие станции&M-клавиша\\
Command&Macintosh&$\ae$-клавиша\\
\hline
\end{tabular}
\end{table}


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

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

\begin{description}
\item[F1] под DOS и Windows это вызов встроенной подсказки~--- Help.

	На клавиатурах некоторых рабочих станций есть специальная клавиша
        с надписью <<Help>>, поэтому не все программы под Unix понимают,
	что если такой клавиши нет, надо использовать F1.
\item[Esc] название этой клавиши происходит от английского слова {\it Escape}~---
	убегать. Поэтому действие этой клавиши часто сводится к отказу от
	какого-то предложения программы или отмене операции. Еще она
	часто используется как префиксная клавиша в комбинациях клавиш.
\item[Tab] табуляция, переключение между колонками. В главе \ref{Editing}
       мы рассмотрим использование табуляции более детально.
\item[Backspace {\rm или} $\Longleftarrow$] Стирание последнего
	введенного символа, возврат на шаг назад. Эта клавиша
	имеет один и тот же смысл в любой операционной системе.
\item[PgUp,PgDn] Прокрутка текста на страницу вверх или на страницу вниз.
	В некоторых Unix программах, ориентированных на минимальную клавиатуру,
        для прокрутки вперед используется {\bf пробел}, а для прокрутки назад~---
{\bf Ctrl-B} (от слова {\it Backward}). Комбинация этих клавиш с Control часто
работает как переход на самую первую (последнюю) страницу.

Самое сложное в использовании этих клавиш~--- разобраться, когда под 
страницей имеется в виду содержимое экрана, а когда кусок текста, который
будет занимать одну страницу на бумаге.
\item[Home,End] Переход в начало и конец. Обычно имеются в виду начало и
конец строки, а {\bf Ctrl-Home, Ctrl-End} перемещают в начало и конец
текста или страницы.
\item[Delete] Удаление текущего символа (не предыдущего, как {\bf Backspace},
а текущего). Очень часто, если кусок текста был выделен, {\bf Delete} удаляет
весь выделенный фрагмент.
\item[F2-F10] Так называемые функциональные клавиши. Это означает что каждая
программа вольна приписывать им те функции, которые захочет. Сюда же
примыкает и {\bf F1}, но ее функция более-менее стандартизована.
\item[F11,F12] Клавиши, которые присутствуют на клавиатуре IBM PC практически
всегда, но используются очень редко. Дело в том, что на клавиатуре старых
IBM PC XT функциональных клавиш было только 10, а практически все программы
под DOS до сих пор поддерживают совместимость с такими клавиатурами и стараются
эти клавиши не использовать.
\item[Break] Клавиша, на которой сверху написано {\bf Pause}, а сбоку~--- {\bf Break}.
Обычно используется в комбинации с {\bf Control} для прерывания текущего
процесса. Часто эквивалентна комбинации клавиш {\bf Ctrl-C}. Нажатие {\bf Pause}
без {\bf Control} в DOS приводит к прекращению работы машины до тех пор, пока
не будет нажата какая-нибудь другая клавиша.
\item[PrintScreen] В DOS - посылает копию экрана на принтер. К сожалению,
если не принять специальных мер (см. главу \ref{Configuration}), работает
только в текстовых режимах. В Windows обладает гораздо более полезными
функциями - копирует содержимое экрана или текущего окна в ClipBoard, откуда
оно может быть вставлено в документ, редактируемый практически в любой
программе под Windows.
\item[Copy,Cut,Paste] Эти клавиши есть только на клавиатуре некоторых
рабочих станций. Их смысл в том, чтобы копировать(Copy) или вырезать(Cut) выделеные
фрагменты текста или картинки из одного окна, и вклеивать(Paste) в другое окно.
В Windows им эквивалентны такие комбинации клавиш:

\begin{tabular}{|l|l|c|}
\hline
Copy&Ctrl-Insert&Ctrl-C\\
Cut&Shift-Delete&Ctrl-X\\
Paste&Shift-Insert&Ctrl-V\\
\hline
\end{tabular}

\item[Цифры сверху и справа] Начинающих пользователей часто смущает, что
на клавиатуре есть два комплекта клавиш с цифрами~--- над буквенными клавишами,
как на пишущей машинке, и отдельная клавиатура справа, похожая на клавиатуру
калькулятора.

Эта последняя часто очень удобна, когда надо вводить много чисел подряд,
но для того, чтобы она работала как цифры, ее нужно специально включить 
с помощью клавиши {\bf NumLock}. При этом загорается лампочка, подписанная
NumLock. Если лампочка не горит, то эти клавиши работают как второй
комплект (а на старых XT - единственный) клавиш управления курсором.

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

В DOS эти клавиши можно использовать для ввода символа по его десятичному
коду. Для этого надо нажать {\bf Alt} и, удерживая его, набрать на <<калькуляторной>> клавиатуре нужный код. Состояние лампочки NumLock в этом случае не
имеет значения. Единственный символ, который нельзя ввести таким способом,
это символ с кодом 0, который можно ввести только как {\bf Ctrl-@}.

Многие программы под DOS отличают управляющие символы, введенные с помощью
Alt и цифровой клавиатуры, от символов с теми же кодами, введенных как
Ctrl-буква, и интерпретируют последние как управляющие команды, а не как
символы, вставляемые в текст.

\item[Серый ``$+$'' и серый ``$-$''] Клавиши плюс и минус на <<калькуляторной>>
клавиатуре. При вводе текста обычно эквивалентны плюсу и минусу на
клавиатуре <<пишущей машинки>>, но в некоторых программах используются
как управляющие. В этих случаях в документации они описываются именно
как <<Серые>> (Gray) плюс и минус.
\item[Ctrl-Z] В Windows на эту комбинацию клавиши обычно повешена команда
отмены последнего действия (Undo).
\item[Ctrl-D] В Unix это признак конца файла. Если программа,
с которой вы работаете, читает ваши команды с клавиатуры как из файла
(с минимальными возможностями редактирования), то нажатие {\bf Ctrl-D}
она скорее всего воспримет как конец входных данных, и, следовательно
сигнал окончания работы. В DOS этот же смысл имеет символ {\bf Ctrl-Z},
но кроме нескольких встроенных команд никто его как признак конца 
работы не использует.
\item[Alt-X,Alt-Q,Alt-F4] Распространенные комбинации клавиш для выхода
из программ. {\bf Alt-F4}~--- стандарт в Windows, а также и в некоторых
DOS-программах, которые иметируют интерфейс Windows. {\bf Alt-X} (от eXit)
и {\bf Alt-Q} от Quit - распростаненные комбинации в DOS.
В Unix, когда программа воспринимает обычные буквы как команды, командой
выхода часть является просто буква ``Q''.
\end{description}


\subsection{Стандарт CUA}
Кроме стандартных комбинаций клавиш, уже сформировались стандарты на 
внешний вид программы. Особенно это характерно для графических оконных
систем, таких как Windows или MacOS. 

Существует опубликованный стандарт на эту тему, который называется CUA
(Common User Access).

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

Крайняя левая позиция в этом меню должна называться File (возможны варианты~---
Document, Game, но всегда это самый большой объект, с которым работает данная
программа). В этом меню, самой последней позицией должна быть расположена 
команда выхода из программы~--- Exit или Quit.

Рядом с меню File обычно расположены меню Edit и View.
Последнее управляет тем, как программа изображает содержимое текущего окна.
Обычно здесь находятся по меньшей мере команды масштабирования.

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

Здесь также должны быть команды для работы с ClipBoard. ClipBoard в переводе
с английского означает "доска для вырезок"~--- место куда можно временно
положить кусок текста или картинки, чтобы потом вклеить в какой-нибудь
документ. В отличие от работы с бумагой, на компьютере мы всегда можем
не вырезать, а скопировать картинку в ClipBoard. 

Короче, в этом меню обычно присутствуют три команды для работы
с ClipBoard:
\begin{description}
\item[Cut:] вырезать фрагмент из текущего текста и поместить в Clipboard.
\item[Copy:] поместить в ClipBoard копию фрагмента, не изменяя текущего документа.
\item[Paste:] вклеить содержимое ClipBoard в текущий документ.
\end{description}

Последняя позиция главного меню по стандарту CUA должна называться Help и
содержать команды для работы с подсказкой. Иногда слово Help для краткости
заменяют вопросительным знаком.

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

Диалоговые окна обычно {\it модальны}, то есть блокируют работу всей программы,
а то и системы в целом, до тех пор пока не будет получен ответ на 
жизненно важный для программы вопрос, и окно не исчезнет с экрана.

В наиболее простых диалоговых окнах есть только несколько строк текста
(возможно с небольшой картинкой) и две-три {\it кнопки}, представляющие
собой возможные варианты ответа на заданный вопрос.

Выбрать какой-то вариант ответа можно, указав мышью на одну из кнопок,
и нажав левую (или единственную на Macintosh) кнопку мыши.

Кроме того, обычно одна из кнопок тем или иным способом выделен 
(более ярким цветом, рамочкой). Это текущая кнопка, которая сработает, 
если вы нажмете клавишу Enter.

Сделать текущей другую кнопку (говорят: переместить на нее фокус) можно
с помощью клавиш Tab(переместиться на следующий объект) и Shift-Tab (на
предыдущий).

Еще с кнопками как правило связаны <<горячие клавиши>>, позволяющие выбрать
нужный ответ одним ударом по клавиатуре. Обычно это буква, выделенная
в надписи на кнопке цветом или подчеркиванием, хотя можно встретить 
и такой вариант кнопки \fbox{\strut{\bf F4}-Browse}, в котором 
горячей клавишей является {\bf F4}.

Более сложные диалоговые окна могут содержать строки ввода (input lines),
списки (listboxes), комбинации этих двух объектов (comboboxes) и различные
переключатели (checkboxes и radiobuttons). 

Внешний вид этих объектов обычно достаточно ясно указывает, что с ними
делать.

Единственное, о чем стоит предупредить~--- работая со сложным диалоговым
окном, не торопитесь нажимать Enter. Каким бы ни был ваш текущий объект,
нажатие Enter по стандарту CUA приводит к срабатыванию некоторой кнопки,
обычно кнопки \fbox{\makebox[4em]{\underline{O}k}} и закрытию окна.

А переключатели переключаются клавишей пробел.

Единственное исключение~--- диалоговые окна, содержащие внутри себя 
маленький редактор текста. Внутри этого редактора Enter выполняет
свою обычную функцию~--- перевод строки.
\subsection{О мышах}
В предыдущем разделе мы уже упомянули о мыши, без которой трудо представить
себе современный компьютер. Я надеюсь, что вы без дополнительных объяснений
поняли, что речь идет не о пушистом нахальном зверьке\footnote{ Самый лучший
пассаж на эту тему я встретил в документации на игру XQuest:
\begin{quote}
\dots by `mouse' above I 
        meant the little plastic thingys with a ball on the bottom, and 
        not an actual live squeaky-type mouse. Any attempt to physically 
        attach a real mouse to your computer will no doubt result in 
        disappointment for both\footnotemark{} of you. 
\end{quote}}\footnotetext{вообще то в данной операции участвуют трое:``you'',
``real mouse'' и ``your computer''. Почему же ``both of you''?}, а об
устройстве которое можно катать по столу, и при этом по экрану будет перемещаться
курсор (в виде инвертированного символа в текстовом режиме и в виде стрелочки
в графическом). 

Я подозреваю, что вы даже знаете, что мыши бывают двухкнопочные и трехкнопочные.

На самом деле это только часть правды. Мир пользователей компьютеров делится
на три непримиримых клана:
\begin{itemize}
\item<<однокнопочников>>;
\item<<двухкнопочников>>;
\item<<трехкнопочников>>.
\end{itemize} 

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

Оплотом <<Двухкнопочников>> является система Windows. Прадва <<два>> в данной
ситуации это то-ли слишком много, то ли слишком мало, поэтому многие программы
под Windows правую клавишу практически не используют. Там же, где она используется, она обычно вызывает маленькое меню для операций с текущим объектом.

И, наконец Unix, точнее его графическая оболочка - X Window System, ориентирована на трехкнопочную мышь.

В тех случаях, когда клавиш на мыши не хватает, очень часто используется
комбинация кнопки мыши с клавишей-модификатором, например Ctrl.

Мышью можно выполнять две основные операции ``указать'' и ``перетащить''.
Как сделать первое~--- вы наверняка знаете. Что же касается второго,
то надо подвести курсор к объекту, который вы хотите перетащить, нажать
кнопку мыши, и не отпуская ее, переместить мышь к тому месту, куда вы 
хотите <<положить>> этот объект.

По-английски операция перетаскивания мышью обычно называется <<Drag and drop>>~--- 
перетащить и бросить. 

\subsection{Встроенные подсказки}
Как правило, основным источником инормации о новой программе, для пользователя
служит сама эта программа.

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

Кроме главного меню
в программах часто есть строка состояния (Status Line) или линейка с иконками
инструментов. Очень часто, если подвести к какой-нибудь иконке курсор мыши
и нажать правую клавишу (в Windows) или просто подержать курсор там некоторое
время, как бы в нерешительности, то на экране появится маленькое окошко
с пояснением (по-английски это обычно называется Hints). На Macintosh 
эта возможность включается и выключается с
помощью команды <<Balloon help>> в меню <<?>>.

В некоторых программах для DOS, например в Paradox, Hints появляются в нижней
строке экрана, когда вы с помощью клавиатуры подводите курсор к нужной
позиции меню.

\subsection{Когда ничего не помогает, прочитайте наконец документацию}

Почему-то в документацию все привыкли смотреть в последний момент.

Это касается не только компьютеров, это общий феномен нашей технической
цивилизации.

Тем не менее именно в документации обычно содержатся ответы на все <<неразрешимые вопросы>>. Их надо только уметь там найти.

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

Поэтому зачастую осваивать программу стоит не по родной документации,
а по независимо изданному учебнику. При этом стоит заметить следующее:
\begin{enumerate}
\item учебник\footnote{В том числе и этот.} далеко не всегда соответствует
 той версии программы, которую
 используете вы.
\item в учебнике описаны те возможности программы, которые кажутся интересными
и важными автору учебника. Не забывайте, что учебник может сыграть роль
<<испорченного телефона>> между вами и автором программы.
\item В отличие от оригинальной документации, учебник как правило попадает
к вам в переводе. А ошибки перевода компьютерной литературы~--- тема для
отдельной и очень едкой книги.
\end{enumerate}

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

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

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

Типичные примеры такого неадекватного подхода~--- делать абзацный отступ
из пробелов в мощных текстовых процессорах типа Winword, или импортировать
в базу данных таблицу, у которой есть заголовки разделов или повторяющиеся
значения в какой-то колонке заменены на <<\verb!-"-!>>.

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

Не зря же когда вы заплатили довольно крупную сумму за программный продукт
вам выдали за эти деньги десять килограмм книжек и сто грамм дискет.

Если же у вас нет хорошего учебника, то рекомендую все-таки прочитать от
корки до корки хотя бы те тома документации, в названии которых присутствует
слово <<Guide>> или <<Руководство>> и отсутствует слово <<Reference>>.

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

