Чтение онлайн

на главную - закладки

Жанры

Свободные программы и системы в школе
Шрифт:

Редакторы

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

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

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

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

«Vi» и «Emacs»

Два, по-видимому, первых экранных редактора, созданных в начале семидесятых, и явились родоначальниками «семейств» таких программ, до сих пор наиболее популярных в профессиональной среде. Это «vi» (читается «ви-ай») Билла Джоя (тогда аспиранта Университета Калифорнии в Беркли, а затем основателя Sun Microsystems) и «Emacs» (читается «и-макс») Ричарда Столлмена (тогда сотрудника Лаборатории искусственного интеллекта Массачуссетского технологического института, а ныне – президента Фонда свободного программного обеспечения и лидера проекта GNU). Оба они, по сути, происходят от экранных режимов работы популярных тогда редакторов «ed» и «TECO», соответственно.

Первый ныне стандартизован и, в той или иной реализации (наиболее популярна, видимо, «vim» Брама Мооленаара) доступен в составе любой стандартной операционной системы (в том числе, свободных), а также – отдельно – для многих альтернативных ОС. Второй под названием «GNU Emacs» поддерживается Фондом свободного ПО (www.fsf.org) и выдержал уже более двадцати изданий (релизов), он обычно входит в поставки ОС «ГНУ/Линукс» и доступен для прочих (открытых и альтернативных) ОС.

Исходная идеология и эргономическая модель этих двух выдающихся разработок несколько различается, что служит поводом для шутливой «священной войны» между их приверженцами. «vi(m)» относится к так называемым «многорежимным» редакторам. В режиме редактирования оператор вводит и исправляет текст. Перемещение по тексту, контекстный поиск и замена, более сложные операции выполняются в командном режиме. Между этими режимами (а также редко применяющимся режимом построчного редактирования) нужно явное переключение нажатием клавиатурной комбинации. Зато большинство команд привязаны к нажатиям одной клавиши, и даже перемещаться по тексту в командном режиме можно, не сбрасывая кисть руки на дополнительную клавиатуру со стрелками, а нажимая алфавитные клавиши в центре клавиатуры. Адепты «vi» – программисты и системные администраторы – очень серьезно относятся к экономии времени и энергии за счет минимизации движения пальцев.

«Emacs» – пример «безрежимного» или, если угодно, «однорежимного» редактора: пользователь всегда находится в режиме непосредственного редактирования текста в точке курсора, а команды издает, нажимая сложные сочетания клавиш и, при необходимости, вводя параметры команд в отдельном окне. Из-за стремления

обеспечить прямую клавиатурную привязку как можно большему количеству команд и следующей из нее сложности используемых клавиатурных сочетаний был даже пущен слух о том, что «Emacs» расшифровывается как «Esc-Meta-Alt-Control-Shift» (хотя на деле, конечно, клавиатурные аккорды все же не так сложны, а «Emacs» – это просто «Editing MACroS», т.е. «макрокоманды редактирования»).

В действительности, различие это скорее идеологическое, чем прагматическое: в современных версиях «vi» в большинстве случаев также можно осуществить привязку часто употребляемых команд к клавиатурным комбинациям и выполнять их из режима редактирования, а в «Emacs» можно достаточно точно (если кому-то это потребуется) имитировать командный режим, характерный для многорежимных редакторов.

Дидактика редакторов

Реальное очень значимое отличие заключается в том, что по своей архитектуре «vi» – более или менее монолитная программа (с вытекающей отсюда компактностью), а «Emacs» – на самом деле, расширяемая (программируемая) коллекция макрокоманд редактирования, написанных на «Emasc Lisp» (диалекте известного языка функционального программирования). Лишь интерпретатор самого «Emacs Lisp» и небольшое количество часто выполняемых (и требовательных к ресурсам) команд встроены в саму программу и написаны на компилируемом C, большинство же команд написаны на «Lisp» и могут изменяться или дополняться пользователями (или профессиональными программистами по заказу пользователей).

За четверть века существования «Emacs», благодаря свободной модели лицензирования и открытой модели разработки, «оброс» невероятным количеством макрокоманд, «затачивающих» его под синтакcические особенности различных формальных языков (включая, но не ограничиваясь языками программирования и языками разметки), а также реализующих приложения, традиционно слабо ассоциируемые с «просто редакторами». Например, не выходя из «Emacs», можно работать с электронной почтой и службами новостей USENET (а также с гипертекстом со страничек WWW).

Или – что не менее интересно – не выходя из Emacs, можно прогнать текст программы через компилятор и подсветить синтаксические ошибки или предупреждения, воспользоваться символьным отладчиком или профилировщиком (реально, «Emacs» образует оболочку интегрированной среды разработки программ, и в этом качестве является вдохновителем и предшественником всех прочих интегрированных сред разработки (IDE)). И это лишь пара примеров.

Фактически, регулярно используемый «Emacs» позволяет реализовать (чисто в текстовом режиме, даже в системах, вообще не поддерживающих графику) метафору «рабочего стола», более известную по позднейшим графическим пакетам. Он реализует множественность окон (неперекрывающихся) на одном экране («фрейме»), а в графической среде способен работать со многими «фреймами» (окнами в терминах менеджера окон). Пакет «Emacspeak» добавляет к функциональности «Emacs» речевой вывод, предоставляя мощную поддержку для незрячих и слабовидящих пользователей 59 .

59 Функциональность «Emacspeak» пока доступна лишь англоязычной аудитории.

Все это (доступность, расширяемость, интегрируемость) делает его серьезным претендентом на организацию «учебного» рабочего пространства программиста (и, на самом деле, есть университетские курсы, так и построенные). Можно ли это использовать в сегодняшней школе?

Однозначного ответа на этот вопрос у нас нет. Дело в том, что нам неизвестны такие (ориентированные на среду на основе «Emacs») курсы для школ вообще. А что касается России (и русскоязычного сообщества), то нам неизвестны примеры школьных курсов, вводящих на достаточно раннем этапе идеи функционального программирования. А без последнего – увы – расширяемость «Emacs» остается чисто теоретической.

Поделиться:
Популярные книги

Жена проклятого некроманта

Рахманова Диана
Фантастика:
фэнтези
6.60
рейтинг книги
Жена проклятого некроманта

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

Демон

Парсиев Дмитрий
2. История одного эволюционера
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Демон

30 сребреников

Распопов Дмитрий Викторович
1. 30 сребреников
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
30 сребреников

Небо в огне. Штурмовик из будущего

Политов Дмитрий Валерьевич
Военно-историческая фантастика
Фантастика:
боевая фантастика
7.42
рейтинг книги
Небо в огне. Штурмовик из будущего

Осознание. Пятый пояс

Игнатов Михаил Павлович
14. Путь
Фантастика:
героическая фантастика
5.00
рейтинг книги
Осознание. Пятый пояс

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Блокада. Знаменитый роман-эпопея в одном томе

Чаковский Александр Борисович
Проза:
военная проза
7.00
рейтинг книги
Блокада. Знаменитый роман-эпопея в одном томе

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Книга 4. Игра Кота

Прокофьев Роман Юрьевич
4. ОДИН ИЗ СЕМИ
Фантастика:
фэнтези
боевая фантастика
рпг
6.68
рейтинг книги
Книга 4. Игра Кота

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Новый Рал 2

Северный Лис
2. Рал!
Фантастика:
фэнтези
7.62
рейтинг книги
Новый Рал 2

Низший 2

Михайлов Дем Алексеевич
2. Низший!
Фантастика:
боевая фантастика
7.07
рейтинг книги
Низший 2

Под маской, или Страшилка в академии магии

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.78
рейтинг книги
Под маской, или Страшилка в академии магии