Лекторий не хорош для тематики «использование компьютера», вместо лекций лучше тренинги: правильный ответ на вопрос «С чего начать?» — начинать с лёгкой практики. Но времени на это требуется больше.
С чего начать что? В банкомате (любом однофункциональном приборе) всегда понятно, с чего начать, либо уже написана инструкция. Сложный прибор — компьютер — решает много задач, поэтому сперва надо определить, какие задачи решать.
Есть опробованный десятилетиями алгоритм, с чего начинать работу с UNIX-подобной системой.
Из п.2 следует, что множество задач не требует графической оболочки.
На LiveCD — автоматический вход в систему, за пользователя проделали п. 1, 2 и отчасти 3. О безопасности речь не идёт и считается, что удобства LiveCD удобны для всех.
Вопрос из зала: «Я слышал, что есть какой-то броузер, работающий в командной строке. Это что, шутка?» Отчего же? Есть Links, ELinks, Lynx и т. п. Отличаются неподдержкой нестандарта.
Четыре уровня представления информации.
Независимость уровней: командная строка работает даже на электрической печатной машинке, с листом бумаги.
Терминал не использует понятия команды.
Графсистема полностью оторвана от КС.
Рабочий стол может быть реализован любой граф. подсистемой плюс ещё чем угодно.
Командная строка — нечто погонное. Она набирается в одну строку, что находится до этой строки не принимается во внимание. Нечто вроде телетайпа. Главная идея — в том, что компьютер и пользователь общаются на каком-то языке. Даже сегодня устройство, которое распознаёт звуковую речь, ненадёжно и мало распознаёт.
Принцип объединения потока данных и потока управления под единым интерфейсом — по-видимому, реализация принципа фон Неймана: объединение программ и данных.
Обмен текстами =>
есть потребность в утилитах (т. е. «удобностях») для обработки текста: найти подстроку, отсортировать, преобразовать размеченный текст. В любом учебнике по Linux/UNIX много посвящено работе с файлами и работе с текстом, т. к. это основные объекты Linux, чем больше вы в этом разбираетесь, тем быстрее вы решите свои задачи.
Чтение и письмо — наиболее формализованная способность человека, трудно выбрать лучший способ взаимодействия (если выбирать единственный).
Shell триедин: язык программирования высокого уровня, ИКС и оболочка. Я. П. — ориентирован на систему, файлы и тексты, алгоритмич. полный. Работать с ИКС. должно быть удобно: напр. поиск по истории команд, а не повторный набор длинной команды, много другого. Оболочка: shell — не просто ИКС (напр, python — тоже ИКС), а интегратор возможностей системы, средство удобного запуска программ, манипуляции ими, анализа результатов и т. п.
«Универсальной оболочки», лучшей shell, не придумано: если и есть какие-то «конструкторы» другого типа, они либо сами велики, либо минимальная конструкция в них насчитывает десятки объектов, либо и то, и другое.
Итак: маленькие программы, удобная работа в КС, манипуляция компонентами системы.
Недостаток: человек читает текст не по символам, и даже не по словам. Трудно читать бегущую строку, мы читаем областями. Необходимо организовать текст областями, КС этого не предусматривает.
Самое легендарное и мистическое место. Имеет очень извилистую историю. Первый терминал полностью копировал печатную машинку, вплоть до табулостопов.
Но сама идея идеальной пишмашинки с последней страницей бесконечной ленты (можно даже отматывать назад!) — хорошая, так как накладывает очень мало ограничений.
Бумага ничего не помнит, также не помнит и терминал: есть вывод на экран и ввод с клавиатуры, и то, и другое происходит независимо и последовательно. Можно работать в терминах «потоки данных» т. е. файлы (а не «устройства представления данных» с собственными законами). Несмотря на незнание содержимого экрана, мы можем вывести текст в определённое место, перекрашивать, и т. п., используя управляющие последовательности.
Строки, меню, прямоугольные регионы граф. интерфейсов — текстовые элементы.
Разумная организация текста: ограничения на текст (один шрифт и размер, пара-тройка начертаний) достаточные, больше — перебор.
Минимальные технические требования: устройство, которое может принимать и передавать байты, больше ничего: подойдёт и эл. пишмашинка, и программа работы с модемом и т. п.
Ориентировано на чтение+письмо, но не на поиск+выбор. Поиск есть, но это не мгновенный визуальный, а поиск, основанный на чтении, медленный.
Здесь должно было быть два слайда, пришлось впихнуть в один. В книжке этому посвящена лекция, но и лекции мало для граф. подсистемы с самом долгой историей.
Отличие от текстового режима: рисованные (не-текстовые) элементы. У лектора на собственном рабочем столе единственный значимый рисованный элемент — часы без цифр (tclock
).
Двухчастная, клиент-серверная архитектура. Сервер — это программа, которая регистрирует программу-клиент в виде «окна», организует рисование по запросу со стороны клиента и поток событий (от мыши, клавиатуры и т. п.) к клиенту.
Клиент — программа, регистрирующаяся на сервере, подаёт граф. команды, обрабатывает события.
Архитектура сетевая, взаимодействие может происходить через сеть.
С чего мы начали организацию графической оболочки? Завели там терминал (xterm
)1.
Для управления рабочим столом необходимо управлять окнами. Один из клиентов — «окновод» — рисует декорации, меняет наложение, размер и положение. Организует виртуальный рабочий стол. У л. их 4 — основной, для навигатора, для офиса/мультимедиа и для терминалов в режиме суперпользователя.
Окновод если и решает задачи рабочего стола, то не все. Необходимо несколько различных клиентов, каждый делает свою работу. Рабочий стол — задача не для программиста, а для специалиста в области usability (доказательство — Apple и MacOS).
Меню, иконки и пр. — это визуальный поиск с выбором. Удобные решения пользовательских подзадач (быстрый доступ, визуализация, оповещение и пр.).
Однако утилиты командной строки и терминала можно полностью перенастроить, а весь комплекс программ, реализующий метафору «рабочего стола», настраивать от начала до конца очень долго, чаще всего придётся согласиться с готовыми решениями.
Даже простой рабочий стол (на основе ctwm
2 л. настраивал долго и поэтапно. Чаще бывают программы настройки, меняющие отдельные параметры. Почему это недостаток? Задача «рабочего стола» — подстройка под вкусы и привычки хозяина, и любая мелочь, которую подстроить нельзя, может иметь значение.
Ещё один кадр, который следовало разбить на несколько.
Особенности технологические и «социальные» (т. е. в какое состояние вы должны привести себя и окружающих, чтобы удобно работать с Linux). Начинать работать с Linux не стоит без знания особенностей.
Всё строится на командной строке, запуск граф. оболочки и приложений под неё — тоже shell-сценарий. Всё, что делается с системой, делается на shell. Без shell и знания его — тяжело.
Два принципа: «всё — текст» (как минимум одна лекция учебника) и «всё — файл». Нарушаются только вынуждено. Любой объект в системе, если он вообще поддерживает «чтение» и «запись», т. е. потоковую передачу данных, должен быть представлен как файл. Тогда туда можно будет писать и читать оттуда стандартным образом, и именоваться этот объект будет так же, как файл: лежать в каком-то каталоге. Чтоб манипулировать такими объектами, достаточно операций работы с файловой системы (а не БД, классы и объекты я. п.). Если это имеет смысл, файлы должны быть текстовыми. Тогда для изменения внутри файла достаточно программ обработки текстов: например, настроечный файл — это размеченный текст, в нём есть стандартный строки вида переменная=значение
или [секция]
.
Не зная этих принципов тяжело разобраться в работе системы. Настроечные файлы легко править, это «стандартный» способ, а программы-настройщики — «нестандартный», они разные с разным интерфейсом. Даже программы: например, запуск системных служб — это простые сценарии на shell, то есть тексты.
Не просто многопользовательская система, а возможность одновременной работы, потому что терминалов может быть несколько, равно как и программ, обрабатывающих тексты. Есть средства защиты данных при одновременной работе (права доступа и т. п.). Эти проблемы решены ещё в UNIX. Любое «решение на одного» — отступление от такой схемы, формальности многопользовательской работы сложнее отменить, чем выполнить.
UNIX был ориентирован на самостоятельное изучение, на людей с высоким уровнем научной культуры. Linux унаследовал не это, но более общее требование: он ориентирован на самостоятельное решение задач. В UNIX-подобных системах для этого достаточно внимательно изучить документацию, в Linux — не всегда, многое тяжело документировать. Но есть большое структурированное информационное пространство, поиск в котором — главный инструмент. Тяжело осваивать Linux не как систему для самостоятельного решения задач, а как систему, в которой есть всё готовое.
Если пользоваться системой для решения всех своих задач, надо научиться их решать, а не ждать, пока они решаться сами собой. Недостаток: чем больше внимания инструментам, тем меньше внимания готовым решениям. Возможны «профильные» — под набор конкретных задач, но не «всё для всех».
Самостоятельно решать задачи намного проще, чем с помощью закрытых систем, где нет сообщества и недостаточен инструментарий. И вероятность, что найдётся готовое решение, которое можно доработать очень высока. Не надо делать свой веб-движок, свою службу trouble ticketing, можно посмотреть на sourceforge хотя бы первый десяток подобных проектов.
Самостоятельное решение задачи — норма, так что получить помощь есть где.
Но без нужного багажа знаний работать с системой будет сложно.
Попытка запихнуть три слайда в один! Потому что на самом деле это тема целой лекции.С интернетом, так как требование связности информационного пространства.
Отступление на тему переводов и «новой латыни». Перевод документации (особенно той, что идёт вместе с программой) — стрельба по движущейся мишени: сегодня перевели, а завтра — новая версия, опять переводить. Если бы это была программа, которую вы правили, можно было бы применить старые patch-и к новой версии. А перевод — намного более трудоёмкая работа.
Простой язык, похожий на американский — язык международного общения, особенно в компьютерной области. Русскоязычную компьютерную терминологию вытеснила переводная (по сути — макароническая), когда стали копировать и закупать выч. технику вместо отечественной. Причина — американизация, экспорт субкультуры, имперская стадия развития американского общества, когда распространение технологии приносит с собою единый облегчённый вариант культуры, как это было с Римской империей. Даже слово «компьютер» из этого нового словаря, раньше было «ЭВМ»3.
Первая стадия (ей посвящена лекция учебника): извлечение знаний из самой системы (норма для UNIX). Классические способы:
/usr/share/doc
— если нет ни man, ни info... хорошо ли это?Чего там нет? Ошибки, сложные ситуации, сложно формализуемые вопросы. Вторая стадия: брожение вкруг дистрибутива:
Если нет стремленья «дойти до самой сути», то и разговаривать об обучении, наверное, незачем? Как минимум должно быть такое стремление «в работе». Тогда неудивительно, что
1Отступление: «active icon» xterm — вместо иконки — экранчик самым мелким шрифтом, точка или две на букву, прочесть нельзя, но активность вывода видно
2Отступление: функция pushmove, одно окно двигает другое
3Отступление: почему все программисты говорят «control», а не «control»? Непонятно