LINUX.ORG.RU

Нужны вменяемые юзкейсы регеспов.

 , , ,


0

2

Предыстория, типа(можнонечитать):

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

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

Какбэ скомпилить эти регеспы руками и обоссать в 2-5раз эти говнобенчи слишком просто, да и пацан съедет и серанёт.

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

Ну и вот решил я пилить свой жит царский и илитный.

Суть:

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

Либо ещё проще - какие фичи нужны именно вам.

P.S. И да, не обижайте Царя - царь решил сделать пабликпрожектнужныйбабуинам. Тема не для срача, а то я о5 всё свою время просру на срач на лоре.



Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от emulek

Ты не понял. Просто прогоняешь код через препроцессор, он раскрывает наш код в обычный, который ты и скармливаешь обычному компилятору. Дальше все как обычно. Просто еше одна стадия перезаписи. ЕМНИП, твои плюсы именно так и работают, например. Они раскрывают свойт гребаный стрем в обычную сишечку.

anonymous
()
Ответ на: комментарий от TrueTsar1C

что-то за гранью дефолтных в грепе регулярок не могу.

PCRE могут работать в 10000(sic!) раз медленнее обычных. Ты может и не можешь, а пхп обезьяны обожают понтануться своими «глубокими знаниями».

emulek
()
Ответ на: комментарий от emulek

не буду я бредни диванного теоретика читать. Приведи конкретный код. Никто не спорит, что в PRCE есть медленные конструкции, как и везде. Только предполагается, что человек который ими пользуется, знает что делает. А если мы говорим про мартышек, то им ничего кроме ДКА доверять нельзя, да.

anonymous
()
Ответ на: комментарий от anonymous

Ну, раньше так было, щас, наверное перепилили.

«раньше» это в восьмидесятых?

emulek
()
Ответ на: комментарий от anonymous

не буду я бредни диванного теоретика читать. Приведи конкретный код.

до конца дочитай, там есть конкретный код, и временные замеры.

Никто не спорит, что в PRCE есть медленные конструкции, как и везде.

ты совсем альтернативно одарённый? Можешь понять, что NFA выполняется ЗА ОДИН ПРОХОД? А PCRE — как повезёт. Причём цена прохода сопоставима, у NFA даже меньше.

А если мы говорим про мартышек

а где других кодеров брать?

Открой исхоник любой HEX на пхп, увидишь там PCRE, тысячи их. И там в них ВСЁ есть, даже eval в regex'пе. Ну и дырявые они все, как РЕШЕТО.

emulek
()
Ответ на: комментарий от emulek

Открой исхоник любой HEX на пхп, увидишь там PCRE, тысячи их. И там в них ВСЁ есть, даже eval в regex'пе. Ну и дырявые они все, как РЕШЕТО.

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

TrueTsar1C
() автор топика
Ответ на: комментарий от emulek

Можешь понять, что NFA выполняется ЗА ОДИН ПРОХОД?

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

anonymous
()
Ответ на: комментарий от TrueTsar1C

ли pcre или это параша для обезьян бесполезная? Я не могу придумать им применение.

на самом деле, PCRE(и простые RE) — специальный ЯП. Т.е. в них самих нет ничего плохого. Проблема в обезьянах сующих их туда, где они не нужны. А нужны они очень редко. Я регулярок Over9000 написал, здесь они тоже есть.

emulek
()
Ответ на: комментарий от emulek

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

ага, тут есть один поциент с такой же логикой, как у тебя:

1. Я тупой, и не знаю, как сверлят дырки в камнях и как тяжёлые камни подымают.

2. Но я хоть и тупой, но видел дрель и подъёмный кран

3. пирамиды с дырками в камнях существуют

4. из этих трёх фактов следует, что прилетали инопланетяне, и сверлили в камнях дырки дрёлью и камни поднимали краном.

Ваша ошибка в пункте №1, вы тупые и не понимаете. Само по себе это не страшно, страшно, что вы не хотите знать.

Мне нагуглить для тебя особенности реализации обратных ссылок? Или сам? Или продолжишь уподобляться альтернативно одарённым?

emulek
()
Ответ на: комментарий от anonymous

Это потому что ты тупой.

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

emulek
()
Ответ на: комментарий от emulek

Давай хоть ты помоги мне решить делему.

Есть http://benchmarksgame.alioth.debian.org/u32/performance.php?test=regexdna - надо смешать с говнецом. Суть в том, что смешать с говнецом раз в 10 их можно за 2минуты скомпилив руками регеспы, аля: http://pastebin.com/HFuLbiuB.

Это может сделать любая С/С++ обезьяна. Суть в том, что даже эта реализация говно - можно сделать ещё в 10раз быстрее, ну и заодно сделать вменяемый конпелятор, чтобы какбэ было честно. Но глянув на pcre я аринел от обилия бесполезного говнища в них напиханного.

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

TrueTsar1C
() автор топика
Ответ на: комментарий от emulek

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

zolden ★★★★★
()
Ответ на: комментарий от anonymous

По моим наблюдениям, обезьяны, как правило их либо вообще не знают, либо знают очень хреново

за то у них есть гугл, даже «калькулятор регекспов» существует для совсем тупых. Сам догадаешься, сколько ненужного говна вставляет эта программа?

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

правильное решение обычно одно, неправильных бесконечное множество.

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

повторить ссылку? Конечно реальные проблемы с рандомным текстом маловероятны, а если специально создать проблему?

emulek
()
Ответ на: комментарий от emulek

Ты, для начала, поясни, что ты подразумеваешь под «выполнением за один проход», умник. Есть подозрение, что ты слабо представляешь, о чем ты говоришь.

anonymous
()
Ответ на: комментарий от TrueTsar1C

Сам забенчишь

А мне-то это зачем?

я просто сделаю вид, что не заметил

Да мне пофиг что ты будешь делать, клоун

твой высер?

Хочешь увидеть высер - посмотри в зеркало

anonymous
()
Ответ на: комментарий от emulek

А я попробую решить ту же задачу обычной regex.

Ну давай начнем с простенького. Выпарси текст, с начала строки до end или **(двойной звездочки)


str1="foo bar *** **** ** +++ *** ===="
str2="foo bar end *** **** ** +++ *** ===="

re=/((?!end| \*{2} ).)+/

str1.match(re)[0].show() //  foo bar *** ****
str2.match(re)[0].show() //  foo bar 

anonymous
()
Ответ на: комментарий от emulek

что NFA выполняется ЗА ОДИН ПРОХОД

Ты ничего не путаешь? PCRE реализовано преимущественно на механизме NFA, с небольшими компилтайм плюшками. При этом:

Ключевой особенностью НКА являются «возвраты». От их количества напрямую зависит скорость поиска.

То есть возвраты как-бы не мешают ему быть «однопроходным» по-твоему? Что ты тут вообще за ахинею несешь?

anonymous
()
Ответ на: комментарий от anonymous

Ололо. Ты ж так и не осилил рассказать, где и как твои регёкспы нужны. А знаешь, почему? Потому, что они не нужны вообще, совсем, полностью.

anonymous
()
Ответ на: комментарий от zenden

А пацаны-то не знали. Я ещё в первом посте об этом написал, только компилятся они в говно и работают как говно.

Суть задачи - сведение регеспов в банальный поиск подстроки/чаркласса. Как оптимизация частного случая для текущих реализаций. Эти автоматные реализации для таких случаев убогая и бесполезная параша.

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

TrueTsar1C
() автор топика
Ответ на: комментарий от TheKnight

О боже, я конечно знал, что жабисты аутисты, но чтобы мерить в каких-то «строках в секунду», вместо вменяемых байт - это сильно.

Очень спорно. Обычно любые манипуляции с памятью работают медленнее чем арифметические операции.

О да, я знал конечно, что аудитория хабра - это недалёкие и недобитые нулёвые мрази, но чтоб настолько.

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

TrueTsar1C
() автор топика

Тебе мама опять таблеток не дала?

anonymous
()
Ответ на: комментарий от TrueTsar1C

Учитывая, что все остальное, кроме ника — чистейшей воды унылый тупняк — не смог.

anonymous
()
Ответ на: комментарий от TheKnight

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

emulek
()

автоматизация в интерактивном шелле и быстроскрипитах

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.