Pull to refresh
80
0
arty @arty

User

Send message
я отношусь к тем людям, которые считают, что порой потраченные на удовлетворение компилятора ресурсы мозга можно было бы применить лучшим образом, особенно если отсутствие ошибок уже проверено тестами, но вот это своё мнение я доказывать не буду
Мы все отлично знаем, что защищенность через покрытие — иллюзия. Тесты пишут руками, они по определению менее надежны, чем встроенная в язык система проверки типов.

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

Порадовало, что в тексте много про доверие. Доверие это действительно очень важная смазка общественной жизни, благодаря которой очень многое становится проще и лучше. Конечно, если общество достаточно зрелое, чтобы доверие было обоснованным.
Немного удивлён уже второй раз читать про будильник, потому что у меня с телефоном самсунг будильник прекрасно с часов выключается…
поддерживаю, кольцо – очень удобный интерфейс!
а, точно! Да, я ещё не привык к реалиям IPv6 :) Он на моём Telekom включён.
Странно, я только что из Германии зашёл на gutenberg.org и скачал оттуда книгу Томаса Манна безо всяких предупреждений. Зашёл через крупнейшего немецкого провайдера, диапазоны адресов которого точно должны быть известны.
спасибо! Вот так оно по-хорошему и должно было быть — без разведения дополнительных сущностей.

у него там в комментариях писали, что будто бы у Rust реализация регекспов крутая


впрочем, это неважно, всё равно я вначале предложил оптимизированный регексп на префиксном дереве

Может, но не обязана.

ну так я и написал "если". Проверить этот вариант — дело нескольких минут, но это не было сделано.


А вы попробуйте прокачать скилл и писать крутые штуки на уровне крутых прогеров, почему бы и нет ;)

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


Не уверен, что это верно. Насколько мне известно, Python использует рекурсивный backtracking, откуда растет экспоненциальная сложность.

согласен, это может оказаться неверным. Но это решение было бы сделать (или взять ещё одно готовое) быстрее, чем городить самому. А вот если бы после проверки оно оказалось ещё недостаточно быстрым, то имело бы смысл делать своё.

потому что регексп не магия, какие проверки в него напишешь, те и будут делаться. Поставил флаг i — будет проверка без учёта регистра, а не поставил — не будет её.
Очень распространенное заблуждение.

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


решение имеет лучшую оценку сложности

в данном случае оценка сложности одинакова, потому что алгоритм один и тот же: сравнение строки с префиксным деревом — на регекспе или на питоне


не обязательно: есть же всякие PyPy и прочие

есть, но не всегда используются, поэтому в среднем ускорение всё равно будет

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

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


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


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

ну простой вариант: new RegExp(`\\b(${replacements.join('|')})`)

если же я ошибаюсь в предположении, что реализация сама строит префиксное дерево, то всё равно не сильно сложно

Information

Rating
Does not participate
Registered
Activity