1

Тема: LXF139/140 янв 2011 - Регэкспы (с.84-87)

Замысел статьи "Программируем: регэкспы" хороший.
Исполнение - не очень.

Во-1-х, слабенькие и какие-то "абстрактные" примеры. (Ну, это к Грэму Моррисону) smile

Во-2-х, не слишком удачный перевод. Как-то "коряво" по-русски изложено. Постоянно "спотыкаешься" при чтении.

Теперь - конкретно:

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

Пользователи будут очень счастливы... smile

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

Здесь претензии к стилю. "Не по-русски" написано. Понять смысл можно, но...

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

А вот здесь уже смысл "не виден". Это про что? Здесь - "догадайся сам". Новички точно не поймут.

"Знак доллара соответствует символам в конце входной строки..."

Это неверно. Знак доллара соответствует позиции ("признаку") конца строки.

Дж.Фридл "Регулярные выражения. Библиотека программиста" (стр.30):

"Специфика символов ^ и $ заключается в том, что они совпадают с определённой позицией строки, а не с символами текста."

Та же ошибка - во врезке в нижней части страницы "Актёры и роли".

Про команду tr написано весьма расплывчато. "Вводит понятие списка" - а для чего?
Почему бы не уточнить, что "наиболее общим случаем применения утилиты tr является замена каждого символа первой строки (списка) соответствующим ему символом второй строки (списка)" (Тим О'Рейли)

И пример немного странный (это мелочь, но всё же!). Зачем усложнять:

cat file.txt | tr '[(abc|dog)]' '[efg]' > file_tr.txt

если можно написать проще:

tr '[(abc|dog)]' '[efg]' < file.txt > file_tr.txt

без вызова "лишней команды" cat и создания конвейера.

"Полюбопытствуем фрагментами регулярного выражения в скобках..."

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

Перечислил только самые "яркие" образцы. В статье есть ещё более мелкие погрешности и несуразности.

PS: И почему-то в статье не упоминается книга Дж.Фридла "Регулярные выражения. Библиотека программиста". Даже прочтение 1 и 2 глав этой книги даст пользователю несравненно больше, чем критикуемая статья. Да и изложение в книге гораздо проще и понятнее.

2

Re: LXF139/140 янв 2011 - Регэкспы (с.84-87)

AlexS пишет:

И пример немного странный (это мелочь, но всё же!). Зачем усложнять:

cat file.txt | tr '[(abc|dog)]' '[efg]' > file_tr.txt

если можно написать проще:

tr '[(abc|dog)]' '[efg]' < file.txt > file_tr.txt

без вызова "лишней команды" cat и создания конвейера.

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

"Если думаешь, говоришь, пишешь и подписываешь - не удивляйся." (с)

3

Re: LXF139/140 янв 2011 - Регэкспы (с.84-87)

Val пишет:

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

Именно в случае сложных команд - здесь я с Вами согласен.

Если можно ограничиться одной командой, то я предпочитаю перенаправление потоков ввода/вывода - видимо, сказывается многолетняя "старая школа Unix" :-)

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

PS: Извините, Валентин, но не могу удержаться от обращения к Вам, как к Главному Редактору: немного снизилось качество статей/переводов. Это беспокоит. И ещё: почему в январском номере не было Андрея Боровского? Вот уж он-то - "знак качества". smile

4

Re: LXF139/140 янв 2011 - Регэкспы (с.84-87)

AlexS пишет:

PS: Извините, Валентин, но не могу удержаться от обращения к Вам, как к Главному Редактору: немного снизилось качество статей/переводов. Это беспокоит. И ещё: почему в январском номере не было Андрея Боровского? Вот уж он-то - "знак качества". smile

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

Что касается второго - то Андрей Боровский никуда не делся. Он готовит очередной "хитрый" материал и появится в одном из следующих выпусков LXF.

"Если думаешь, говоришь, пишешь и подписываешь - не удивляйся." (с)

5

Re: LXF139/140 янв 2011 - Регэкспы (с.84-87)

Мебель фабрики Пеликан

6

Re: LXF139/140 янв 2011 - Регэкспы (с.84-87)

Мебель фабрики Три Я