Накипело. RegExp.

Я считаю, что регулярные выражения надо законодательно запретить. Наряду с xml. Хотя нет, xml не нужно запрещать, надо только ограничить область его использования. Но об этом я как-нибудь в другой раз напишу. А пока вернемся к регулярным выражениям.

Взгляните, к примеру, на это уебище:

/(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=?@\[\]+]*)/is

Ни один, сука, человек в здравом уме не сможет сказать с первого взгляда, что делает эта поебень, и, главное, правильно ли она это свое дело делает.
Надо, блять, копаться, посимвольно разбирая, что ловит каждая группа, чтобы только понять, что это регулярное выражение находит в тексте url и разбирает его на части.

Но это еще хуйня. Самый секс с regexp’ами - отладка. Блядь, у меня в башке звенит, когда я пытаюсь понять, что в этой каше надо изменить, чтобы эта хуйня работала правильно. Кстати, приведенный пример бажный - он не учитывает, что в строке параметров может быть запятая.

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

Короче. Программирование - тяжелая штука. Лучшие умы бьются над тем, чтобы упростить написание программ, чтобы минимизировать затраты времени на получение работающего, безбажного, легкоподдерживаемого и расширяемого кода. В принципе, все, что происходит в мире программирования (и всякие там ООП, и паттерны проектирования, и всякие гибкие методики разработки, и новые языки, и фреймворки) нацелено на решение именно этой задачи - “Как бы нам так изъебнуться, чтобы поменьше ебаться?“. И я искренне надеюсь, что в какую-нибудь светлую голову (вроде моей:) стукнет идея, чем можно заменить, не потеряв в мощности и гибкости, регулярные выражения. А для того, чтобы эта идея поскорее катапультировалась с далекой звезды и ебнула кого-нибудь по темечку я предлагаю пока что законодательно ограничить использование regexp’ов - ну там, к примеру, не больше одной регулярки на приложение - если больше, то плати штраф. Если клиент настаивает - пускай закладывает в бюджет размер штрафа. Как-то так, рублем подгонять исследовательскую мысль.

Viewing 5 Comments

    • ^
    • v

    Неверно. В корне.
    Регекспы одна из самых мощных возможностей поиска/парсинга строк.
    А неспособность сказать что делает конкретный регексп - это из-за недостаточного опыта работы с ними.
    Аналогично и с XML - что в нем мегаплохого? Да ничего. Это вполне состоявшаяся технология. И как и каждая другая имеет свои определенные плюсы и минусы.

    • ^
    • v

    @DM Мы же оба понимаем, что я с легкостью могу привести пример действительно нечитаемой регулярки - строк эдак на шесть (при ширине строки в 80 символов), которую действительно сложно прочитать, даже имея большой опыт работы с ними.


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


    А про XML я завтра напишу, там тоже есть немало косяков.

    • ^
    • v

    Ну на C/C++/Ruby/PHP/Perl/... можно тоже написать текст в одну строку - и тоже он будет страшно неудобоваримым. Какие же они все плохие, эти C/C++/Ruby/PHP/Perl/...


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


    Оружие - не зло само по себе. Вот кто как его использует в конкретном случае уже можно охарактеризовать. Как в следующем посте про ХМЛ.

    • ^
    • v

    Будущее в любом случае не за мощным, но сложным в освоении и использовании инструментом.


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



    Те же арбалеты вместо лучников и рыцарей, те же мушкеты против арбалетов и холодного оружия и т.д. и т.п. Рано или поздно появится более простая альтернатива, которая убъет регулярки. Пусть даже она и будет не столь мощная, главное, чтобы она была проще в освоении.

    • ^
    • v

    Хуита. А какая альтернатива?
    "Мы же оба понимаем, что" если использовать инструмент по назначению, то все будет хорошо. Проблемы возникают от недостатка знаний\опыта.

 
close Reblog this comment
blog comments powered by Disqus