crypt of decay - какого хера? [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

какого хера? [Nov. 26th, 2014|06:48 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
вот какого хера ни одна из распространённых библиотек регулярных выражений не имеет потокового API? все свято уверены, что данные лежат в памяти, причём одним куском. поэтому — у тебя текстовый редактор, который хранит текст в виде хитрого дерева? всё, соси хуй, делай себе регулярки сам. и прочее.

в имаксе к glibc'шным регуляркам добавили вызов re_search_2(), который умеет скипать дырку в данных. сука, на этом месте должен был не просто звонок звенеть в башке, а ёбаные сирены орать: «regexp API needs fuckin' stream interface!» но нет, мы перетащим весь движок регулярок в имакс и захачим туда несколько функций.

сука, ты всё равно работаешь же по указателям и позиции! ну так замени прямое чтение на несколько макросов и реализуй всё на потоках! да, потоки должны быть сикабельные — ну и что? сделай ты API, где seek() и getrune() обязательны, а в дополнение можно определить быстрые аналоги memcmp(), memchr() и ты пы. всё, блядь, поиск в непрерывной области памяти становится тупо частным случаем, и с расширеным API даже нихуя не медленней, чем без stream API.

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

нет, идите в жопу, не буду я это писать.

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

интересно, хотя бы лет через двадцать кто-нибудь допрёт до stream API? думаю, что нет: так и будут таскать по проектам и вхачивать хуйню.
Linkmeow!

Comments:
From:(Anonymous)
Date:November 28th, 2014 - 03:15 am
(Link)
Нахуя хранить текст в виде дерева? Ебанутым нет покоя.
[User Picture]
From:[info]ketmar
Date:November 28th, 2014 - 04:16 am
(Link)
подрастёшь — узнаешь.
From:[info]lpauzner
Date:November 29th, 2014 - 01:26 am
(Link)
а если вместо потока давать массив указателей, типа как в writev ?
[User Picture]
From:[info]ketmar
Date:November 29th, 2014 - 01:30 am
(Link)
зачем? кто вообще сказал, что я обязан глифы хранить как utf-8, или utf-16, или ucs-4? кто сказал, что у меня рядом с глифами какие-то мои интимные атрибуты не должны лежать? не дохуя на себя берут, нет?
[User Picture]
From:[info]ketmar
Date:November 29th, 2014 - 01:32 am
(Link)
ну, и дурацкое дублирование данных, конечно. если у меня есть поток текста, где я искать хочу — то с вероятностью почти единица у меня уже есть код, который умеет по этому потоку перемещаться. зачем мне создавать массивы указателей? с таким же успехом я могу тогда уже выделить кусок памяти и высрать туда очищеный utf-8, например. именно этого я и хотел бы избежать.
From:[info]lpauzner
Date:November 29th, 2014 - 01:49 am
(Link)
Если вы редактируете текст где-то в середине, то очевидно есть деление на строки или что-то подобное, чтобы при добавлении одного символа изменилась лишь одна "строка". То есть эти указатели уже есть под рукой.

Но если вдруг текст хранится не как текст а требует специальной очистки, то перед поиском нужна спец обработка, и без потока тогда совсем некрасиво.
[User Picture]
From:[info]ketmar
Date:November 29th, 2014 - 02:32 am
(Link)
«текст» — это совершенно не обязательно «текст» вообще во внутреннем представлении же. я к тому и веду, что именно для таких случаев — опаньки.

соответственно, делать ещё один костыль (набор указателей и длин) вместо универсального stream API никакого смысла нет: stream API попросту перекрывает фичи набора.
[User Picture]
From:[info]polytheme
Date:November 30th, 2014 - 11:27 pm
(Link)
не знаю, как в D, а в C++ есть интерфейс регекса, принимающий итератор. а сделать итератор из потока (а тем более из дерева) - как нехуй делать. правда, итератор нужен bidirectional, но можешь на -- exception бросать, если backtracking не используешь, заодно посмотришь, дурак C++ или нет
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:10 am
(Link)
вот уж на чём я точно ничего писать не буду — это на крестах. пусть там даже мегасупербиблиотеки есть.

в крестах ниасилили стандартизировать mangling и строение объектов, поэтому кресты дружно идут нахуй: я ещё помню байтораздирающие радости пересборки всех крестовых библиотек с переходом gcc2->gcc3 и gcc3->gcc4. спасибо. уносите нахуй, пожалуйста.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:14 am
(Link)
а что, из D2 можно D1-библиотеку дергать ?
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:16 am
(Link)
D1 и D2 — это не разные версии компилятора, это два разных языка вообще. от разных языков я не требую взаимодействия.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:17 am
(Link)
так и C++98, C++03, C++11 и C++14 - четыре разных языка
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:20 am
(Link)
если gcc4 собирает мой крестовый код, который раньше точно так же собирал gcc3 — это один и тот же язык.

D2 не собирает код от D1, и D1 не собирает код от D2.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:21 am
(Link)
просто ты пишешь на маленьком общем подмножестве, оно наверняка и у D1 с D2 тоже есть. у всех нормальных людей не собирает, конечно, потому что там новые ключевые слова появляются
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:33 am
(Link)
>просто ты пишешь на маленьком общем подмножестве
и что? стандарты си/крестов задуманы так, чтобы прошлый код кое-как собирался. это фича. поэтому язык — один и тот же. всё. точка.

D2 даже не задумывался как superset D1. это разные языки.

и да, даже «приветмир» от D1 — и тот не соберётся. пичалечка.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:36 am
(Link)
ты хочешь сказать, что не существует приветмира, который собирается D1 и D2 ? несколько сомневаюсь, ибо существует приветмир, который соберётся free pascal и g++.
хотя это, конечно, казуистика.
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:37 am
(Link)
если долго выёбываться, то написать можно всё. но мы же не об этом.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:39 am
(Link)
а что, привинтить к D С++-библиотеку никак нельзя ? можно же инстанциировать шаблон с твоим аргументом, типа typedef regexp<хуй_type, пизда_type, ебать_type> ёбаный_regexp и указатели на функции ?
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:49 am
(Link)
это уебанство. можно, конечно, но уебанство. не хотет уебанства.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:56 am
(Link)
да уж. спасибо, папанечка, что зашил меня навек. это и к следующему каменту тоже

кстати, js вот для чего хороший: он позволяет, например, вообще не делать ссылки на разные странички, а шуровать UI прямо аяксом на одной. веб же не только из текста состоит, там ещё всякие калькуляторы, онлайн попробовать новые языки, чятик чтобы спросить про ноутбук, который хочешь купить, у продавца, и всякое хуё-моё. уебдваноль, блеать !
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 01:01 am
(Link)
>он позволяет, например, вообще не делать ссылки на разные странички, а шуровать
>UI прямо аяксом на одной

убивать. сразу. без дальнейших разбирательств.
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:35 am
(Link)
p.s. и вообще, разговор был про разные версии gcc. ок, я делаю так:

-std=c++98. в gcc3 и в gcc4. всё, язык один и тот же, я явно указал, какой. а библиотеки вот не совмещаются. или все gcc3 собирать, или все gcc4. вот после таких финтов — неинтересно.
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:36 am
(Link)
p.p.s. а вот сишные библиотеки, собраные gcc2, отлично подключаются и работают в gcc4. без перекомпиляции. поэтому си — ок, кресты — говно.
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:11 am
(Link)
ах, да. после слова «boost» программа отправляется в помойку без дальнейших разбирательств.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:13 am
(Link)
это ты тоже себе буратино, но вроде бы тут слово "буст" ты сам сказал, как больное - тащем-та это стандартная библиотека
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:17 am
(Link)
неюзабельная больше нигде, потому что вся на шаблонах. толку мне с неё.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:19 am
(Link)
так и стандартные коллекции на шаблонах. ещё раз: это не буст, это C++ stdlib
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:20 am
(Link)
шота я никак не вижу в c++ stdlib регулярок. никаких вообще.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:23 am
(Link)
en.cppreference.com/w/cpp/regex
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:38 am
(Link)
хм. я был уверен, что в stl этого нет. ок, обосрался.
[User Picture]
From:[info]polytheme
Date:December 1st, 2014 - 12:43 am
(Link)
хинт: ты с 11 года в C++ не заглядывал :)
[User Picture]
From:[info]ketmar
Date:December 1st, 2014 - 12:50 am
(Link)
да, стараюсь. демоны берегут, не приходится.