1 * Понятие компьютерной программы. Интерфейс.

Это специфическое понятие и оно будет широко использоваться. Ниже я буду писать "программа" имея в виду компьютерную программу.

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


Итак, основное значение слова "программа" - это нечто связанное, с одной стороны, с компьютером в техническом смысле, с вами - с другой; нечто позволяющее вам что-то делать и обычно имеющее внешнее выражение на дисплее. Оно теоретически может быть разным, практически это почти всегда оконная и унифицированная часть GUI, поэтому возможно написать одну книгу дающую подготовку для работы в разных программах. Вы её читаете. Вот пример простого окна.



С окнами вы познакомитесь ближе потом.

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


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

Пример.

Я написал что обычно программа выражена в оконной части GUI. Однако чтобы привести простой пример я покажу дисплейный интерфейс консольной, а не оконной программы. Для этого опять обратимся к примеру со сложением чисел – из-за его простоты и легкого понимания роли программы. Консольная программа имеет только текстовое выражение на экране.

Чтобы программа выполняла свои функции её надо запустить, как – пока обсуждать не будем. Пусть после запуска такая гипотетическая программа не сразу обрабатывает данные, а ждёт их ввода с клавиатуры (о клавиатуре подробнее поговорим потом).

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


Calculator is ready to work. Enter one number for any ariphmetic operation and press Enter or press Escape for quit: _


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


Calculator3.3

First number or Escape: _


В первой строке программа «представляется», пока не очень понятно для вас, во второй она тоже ожидает ввода числа, но не сообщает что нужно нажатие на клавиатуре Enter так как это банально и очевидно и не сообщает зачем надо нажимать Escape тоже ожидая что вы итак догадаетесь. Все нажатия в этом примере – это нажатия на клавиатуре клавиш которые надписаны как в этом тексте. После того как пользователь ввёл число и нажал Enter вид интерфейса пусть будет в этом примере таким


Calculator3.3

First number or or Escape: 12

Type second number:


Программа ожидает второго числа и сохранила на дисплее первое число. То есть нажатие Enter в данном случае означало для программы что первое число введено и можно перейти к следующему этапу – вводу второго числа. Не написано что ожидается нажатие Escape (как вариант) для выключения программы, но это не означает что такой возможности нет. Примитивизм программы и стандартность нажатий объясняют эту ситуацию. Таких примитивных программ сейчас почти нет. После ввода второго числа и нажатия Enter интерфейс будет таким


Calculator3.3

First number or or Escape: 12

Type second number: 4

12+4=16

12-4=8

12/4=3

12*4=48


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

Какие полезные наблюдения можно сделать? 1) программа была не готова к работе с обозначенным массивом данных (каковым мог бы быть список арифметических примеров) и требовала последовательного ввода, то есть она не позволяла обозначить материал для работы и уйти 2) программа требовала некоторого внимания и запоминания для правильного ввода 3) программа требовала знания типичного значения клавиш и вела себя неожиданно 4) нельзя было исправить ошибку. В этом примере показаны важные свойства программ.

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

Затем, выделив (как – обсуждается в отдельной главе) пример вы можете использовать счётную функцию с помощью оконных, стандартных инструментов или редактировать пример. Если вы сигналите программе чтобы она считала, то она добавляет знак равенства и результат.

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

Вывод что оконные программы понятны неверен. Конкретные оконные программы часто ещё более непонятны чем консольный пример.

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

Чтобы программа выполняла свои функции её надо запустить.

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

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

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

Режим работы программы определяет, как или над чем она работает.

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

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

С другой стороны документация и программа не искажена.

Часто программа имеет в своём составе несколько подпрограмм. Вместе они образуют комплектацию программы. Этим словом мы будем пользоваться для обозначения набора подпрограмм. Одна из них является главной - программным ядром. Для работы какой-то подпрограммы может быть необходима другая подпрограмма или несколько подпрограмм, и всегда требуется наличие программного ядра. Пользователю не требуется отдельно добывать подпрограммы и собирать из них полный набор. Они распространяются вместе и устанавливаются на компьютер одновременно. Подпрограммы также могут иметь название.

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

Когда говорится и пишется о «зависании» компьютера, то обычно имеется в виду отсутствие реакции программы. Также вы можете услышать что программа «висит, зависла». Она перестала реагировать – полностью или отчасти. Это понятие надо усвоить, оно часто используется. Имеется в виду не просто медленная реакция а патологическое отсутствие реакции вообще. Отсутствие реакции может быть не патологическим – допустим, когда его и не должно быть. Здесь же оно должно быть но не происходит. Часто при зависании интерфейс программы тоже портится – застывает и стирается с экрана при изменениях изображения. Зависания – серьезный сбой и оставлять его без внимания нельзя. Причины его могут быть самые разные, в том числе не связанные с зависшей программой. Ниже мы будем рассматривать вопросы «лечения» программ. Дефектная в принципе программа не пройдёт этап тестирования.

«Хорошие» и «сложные» программы.

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

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

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

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

Надёжность – это фатальная сторона работы программы. Забегая вперёд скажу что часто сбой обусловлен не дефектом сбившейся программы а ошибками в параметрах системы вообще.

В основном на практике идёт охота за возможностями а не за удобством и пр.

Выдающиеся программы получают виртуальные медали (смотрите рисунок).





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

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

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

Когда речь идёт о сложности программы, имеется в виду сложность работы с ней и\или сложность концепции, стоящей за ней. Это две разные вещи, хотя и сильно связанные между собой. Вернёмся к примеру со сложением чисел за неимением другого столь же понятного и простого. Концепция этой программы в том, что есть числа, которые надо ввести вручную и программа выдаст результат счёта. Если вы несогласны с любым из этих высказываний или несогласны на эти действия психологически то вы можете назвать эту программу плохой (сложной, идиотской, трудной и пр). Если вы согласны и готовы так работать, остаётся ещё вопрос о конкретной реализации счёта, который я условно отделю и отнесу в область сложностей и вообще недостатков работы в этой программе. Когда вы это понимаете то можете разобраться что именно является источником проблем. Возможно, это ваше несогласие вписываться в концепцию работы. Может быть, это просто непонимание этой концепции. Возможно, концепция вас устраивает, а вот её реализация – нет. Реализацию иногда можно более-менее поправить настроив программу. Если вас не устраивает стандартная концепция то и другие программы тоже.

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

Цена мощности программы.

На практике нагрузка на ваш мозг не только не уменьшается при использовании компьютера, но обычно возрастает с увеличением мощности программ. Мощность обычно создаёт необходимость бо'льшего количества умственных действий и запоминания бо'льшего количества обстоятельств. Означает ли это, что сильные программы – для избранных, и что делать вам, если вы себя не относите к числу умственных атлетов? Возможно, вы хотите получить простой и категоричный ответ. Но я вам его не дам. Дело в том, что сложность во многом осваивается благодаря новым понятиям. Понятия будут появляться в вашей жизни по мере образования. То есть вы не должны применять своё мнение об умственных способностях само по себе. С этой оговоркой можно сказать что большинство программ посильно большинству людей. Трудность освоения программ в большой степени зависит от знания.

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

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

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

Если вы пользуетесь программой любого типа то со временем привыкаете к ней. Это естественно. Если программа профессиональная или просто довольно сложно сделана то вы получаете в ней массу инструментов и просто не захотите сменять её. Не имея мотива вы можете долго ей пользоваться. Теперь если вас агитировать сменить программу вы этого не захотите делать поскольку придётся ломать автоматизм действий и представлений.

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

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

OpenSource. Лицензия.

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

Обычные программы вы получаете с лицензией которая не позволяет вам менять программный продукт. Лицензия также часто запрещает вам сдавать его в аренду и пр. С opensource ситуация другая — программа считается вашей собственностью в более широком смысле и вы можете даже её продать.

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

Фактически использование opensource-программ капитально уменьшает расходы. Из-за этого в Германии многих бюрократов перевели в другую рабочую среду – на Linux. Некоторые страны рассматривают или утвердили законы требующие применения opensource в государственных органах.

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

Версии.

Вы столкнётесь с понятием версии программы. Версии программы – это разные её выпуски. Это понятие не пересекается с типом её установки. Так, например, есть версии программ для разноязычных пользователей, называемые в обиходе как русские, английские, немецкие и пр. С другой стороны, версии могут быть профессиональными, облегчёнными, бесплатными и пр. Версии отражают эволюцию программы поэтому используется нумерация версий. Одна и та же фирма выпускает несколько версий. Номер версии косвенно говорит о присутствии программы в массовой эксплуатации, то есть её адекватности запросам текущей рыночной ситуации. Это не следует понимать как свидетельство простоты эксплуатации поскольку многие программы даже изначально задумываются как профессиональные. Обычно последующая версия не отменяет свойств предыдущей, и добавляет новые возможности.