[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



> Aleksey Cheusov wrote:
 >> awk - это отдельная парадигма программирования. Называется data-driven
 >> или "программирование от состояний". Лично мне она ОЧЕНЬ нравится.
 >> И она тоже есть, и она отлично работает. Даже сегодня.
 >> Не смотря на очевидные ограничения этого языка.
 >> Особенно, если к awk-у добавить модули, как есть у всех современных ЯП.
 >> См. мой проект http://sf.net/projects/runawk
 >> 
 >> И с Ериком Реймондом здесь я не согласен. Категорически.

> А что Реймонд говорил по поводу awk, напомните пожалуйста?
http://www.catb.org/~esr/writings/taoup/html/ch08s02.html#awk

Есть там и разумные мысли, но я не согласен с некоторыми вещами.

Главная из них:

Modern minilanguages can either be general but noncompact, or
specialized but very compact; specialized but noncompact simply won't
compete.

Это, я извиняюсь, полный бред.

Еще:

A case study of awk is included to point out that it is not a model for
emulation; in fact, since 1990 it has largely fallen out of use. It has
been superseded by new-school scripting languages—notably Perl, which
was explicitly designed to be an awk killer. The reasons are worthy of
examination, because they constitute a bit of a cautionary tale for
minilanguage designers.

С первой половиной согласен, конечно. Perl его в значительной степени
действительно вытеснил. Не согласен с последним предложением. У него нет
ни одного аргумента против minilanguages.  Просто словоблудие. Миниязыки
- это очень красивая и хорошо работающая на практике концепция.  Есть
тому куча примеров.

Дальше:

The awk language was originally designed to be a small, expressive
special-purpose language for report generation. Unfortunately, it turns
out to have been designed at a bad spot on the complexity-vs.-power
curve. The action language is noncompact, but the pattern-driven
framework it sits inside keeps it from being generally applicable —
that's the worst of both worlds.

По поводу "generally applicable". Никто не отменял
   BEGIN {
       print "Hello world!"
   }
Это во-первых.

Во-вторых, pattern/action схема - это отдельная парадигма
программирования, и она ОЧЕНЬ удобна для обработки текста, в чем
собственно и заключается задача AWK. Остальные задачи решаются очень
просто. Все превращаем в текст и, как в моем любимом анекдоте, "сводим
задачу к предыдущей"(С). Конечно, это шутка, но все знают, что в каждой
шутке есть доля шутки. Я на AWK решаю очень широкий класс задач.
У меня к нему вагон претензий, но уж на перл и питон я его точно не
променяю. Фу.

В плане дизайна к AWK, конечно, можно придраться, и есть вполне
достойные более мощные альтернативы, при этом вполне легковесные. И об
этом можно было бы сказать. Но товарищ Эрик сделал это весьма неумело,
просто навалился на его "легковесность".

-- 
Best regards, Aleksey Cheusov.

Reply to: