Поворчу

2 сентябрь, 2010 - 12:25Андрей Зубинский

Задумал вчера почитать книгу. Хорошую. Михаила Успенского. Благо, на lib.ru она есть. Но читать с экрана браузера я не люблю. Для чтения есть более подходящие программы.

У текстов на lib.ru есть одна особенность. Форматирование. Переводы строки ставятся не в конце абзаца, а так, чтобы строка "попадала" в формат алфавитно-цифрового терминала. Посему я текст очищаю от разметки и объединяют строки, сохраняя переводы строки только в конце абзацев. Делаю это, естественно, не вручную, а текстовым редактором, поиском-заменой с использованием регулярных выражений. Скажем, html-разметку легко удалить заменой <[^>]+> на ничто. А, благодаря специфике разметки строк и абзацев, соединить строки и сохранить структуру текста в абзацах можно одной операцией замены \n([^\s]) на пробел и найденное то, что в скобках (чаще всего в регулярных выражениях это обозначается \1). Впрочем, это несущественные нюансы. Потому что не о них речь.

Итак, запустил я Notepad++. Это, пожалуй, самый популярный open source текстовый редактор для Windows. Пользовательская аудитория у него - тьма-тьмущая. Проект с долгой историей. Тривиальное (очитка от разметки) - всё ок. А вот с переводом строки вышел конфуз. Не понимают регулярные выражения Notepad++ символ \n. Только расширенный поиск понимает. Но в расширенном поиске нельзя пользоваться найденным во вставке. Так это ещё не всё. И явного задания символа перевода строки, ни \x0A при ANSI-кодировке текста, ни \x0A00, Notepad++ тоже не понимает.

Ладно, это известное ограничение (как оказалось). Набираю в гугле "best freeware plain text editor" и вот тут начинаются взрослые танцы. Ставлю редакторы, понимающие регулярные выражения, один за другим. И у всех одна и та же особенность. С переводом строки.

Иными словами, mission impossible (я уже молчу про замену нескольких подряд переводов строки одним - это суперзадача из мира аэкрокосмических технологий).

Как я себе понимаю, виновник всего этого веселья - реализация библиотеки regexp, которую пользуют все "потому что она хорошая". Хорошая-то она хорошая, но вот не позволяет решить простейшую совершенно законную правильно сформулированную задачу. Откуда растут ноги этой проблемы - понятно. Код regexp-библиотеки писался когда-то давно в Unix (точнее, в Linux, потому что это GNU-код), потом многократно адаптировался.

Тут вспоминаю о Java. В Java унаследованных проблем с текстом быть не должно. Вспоминаю редактор jEdit. Он на вид неказистый, но. Ставлю его и тремя действиями (первое - уточняю в документации синтаксис регулярных выражений) делаю то, что все редакторы, использующие злополучную regexp библиотеку, вынуждали меня делять руками. А именно - удалять в тексте из 3642 строк символы перевода строк так, чтобы не терялись абзацы.

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

И ещё об одном очевидном. Когда-то давно я осмелился сказать, что клоны ОС Unix - это в том числе и оружие, ослабляющее позиции самой ОС Unix и потому расчищающее рынок для конкурирующих систем (в первую очередь, серверных ОС Microsoft). Чем вызвал возбуждение и возмущение в рядах пламенных борцов за осовобождение не знаю кого от не знаю чего. Но вот время прошло, освобождения так и не наступило, а IDC опубликовала отчёт о рынке серверов во втором квартале этого года. И что мы из него видим? А видим мы из него (по сравнению со вторым кварталом 2009 г.) 35,3% рост объёмов продаж Windows-серверов на фоне 7,2% спада продаж Unix-серверов и 30% роста Linux-сектора. Если же смотреть в денежном эквиваленте, то картина ещё интереснее - 5 млрд. продаж серверов с Windows, 2,9 млрд - с Unix и всего 1,8 млрд - с Linux. Эти денежки, вопреки вере пламенных борцов, тратятся не только на мерседесы для менеджеров среднего звена. А ещё и на R&D, на работы по сопровождению ПО и т.д. Короче говоря, кто их больше тратит на это всё - тот дальше убегает вперёд.

Такие примерно дела. Ссылки на то, что можно найти гуглем одним движением, не ставил.