kb
29.11.2011 19:11
Понял, что даже простенький стриминг-парсер для BSON не могу написать. Точнее как правильно не знаю, а как я сейчас сделаю я таки придумал (ну, конечный автомат простенький построю и делов, хуле).
>BSON
>конечный автомат
специалисты ойти в чати!
что не нравится?
отсутствие понимания матчасти. BSON — нерегулярная хуйня же.
Я вот недавно тоже поймал себя на такой мысли. Теперь иногда заглядываю на codeforces.
Надо будет ещё на каком-нибудь SPOJ зарегаться и порешать задачи :)
я вот чего-то не понимаю, что ли. вот я взял и описал BSON при помощи конечного автомата на бумажке себе. ЧЯДНТ? ну там по мере достижения состояния еще дёргаются внешние штуки (для, собственно, построения документа постепенного), но из вне ничего не приходит.
ладно, пойду начну имплементировать, может таки уткнусь во что.
ну значит в итоге не конечный автомат получился.
достаточно например стек добавить.
вообще я хуею с этих работоблядей.
я вот уже который месяц не могу работу найти.
хотя может вы все за полторы риски миса работаете, хуй вас знает.
всем же работодатели вдолбили в голову что раскрывать свою зарплату — "неприлично"
у меня будет стек для вложенных документов, ага, но это отношение к автомату не имеет. вот я описал автомат (пока без вложенных документов, но смысл тот же)
а ниже уже будут "триггеры" при достижении тех или иных состояний. или не выйдет чего?
при чем здесь работа вообще я не знаю, но ладно. зарплату могу свою в приват сообщить, не жалко, но я не сенийор девелопер и не архитектор никакой, потому может тебе это и миской риса покажется.
ну и на developers.org.ua таки есть опросы зарплатные, смотри сколько угодно, сравнивай чего надо
ну вот чтобы вложенные документы переваривать и нужен стек.
код — пиздец конечно. такую избыточность как справа даже в жабе не встретишь.
и нафига ты вообще взялся, когда есть реализации уже?
рикомендую сделать примерно так:
есть обьекты(классы или функции, неважно) которые читают примитивные компоненты. т.е. откусывают например один байт от входа, на выходе отдают остаток входа и байт, логически сконвертированный в осмысленный обьект из результата парсинга.
и есть функции, которые их обьединяют — последовательное чтение, или попытаться прочитать вторым если первый зафейлил. на выходе они дают опять теже обьекты, которые можно сного обьединять.
итого нахуячится иерархия обьединения таких штук , которая будет читать весь документ.
вообщем как в парсеке.
>If you don't know how parsing works, you'll do it badly with regular expressions, or if you don't know those, then with hand-rolled state machines that are thousands of lines of incomprehensible code that doesn't actually work.
совершенно случайно, параллельно я читаю вот это: http://steve-yegge.blogspot.com/2007/06/...
да, вот только что в душе был и таки понял, что без стека ну никак нельзя. даже тупым кажется, что до этого сам не дошел. и я благодарен тому, что матчасти не знаю — хоть мозги размял.
"нафига взялся" — собственно, потому что не знаю, потому и взялся. хотел сделать "как придумаю", а потом сравнить с "как правильно".
метод, который ты предложил — примерно так и работает драйвер bson питоновский. я думал, что можно без всех этих диких рекурсий и так далее, чтоб оптимальнее. ошибся в корне, как мы видим теперь (хотя наверняка можно ограничить вложенность просто и всё, но тогда код реально придется генерировать, или рекурсии делать, чего не хочется)
собственно, весь этот Bloated из-за попытки именно конечный автомат сделать и за один проход распарсить документ, а не копировать сто раз строки (хотя снова таки, могу ошибаться). хотя можно схитрить в данном случае, так как у BSON вначале документа стоит его размер — рекурсивно скармливать документ себе же. тогда только от вложенности будем страдать.
да, так и сделаю. и утру нос по производительности всем этим "правильным парсерам" (или сосну хуйца от незнания матчасти, как обычно)
Автомат с магазинной памятью в этот тред. И вливание курса по лексическим анализаторам.
Кхм, это называется "чисто инженерный подход" :)
В принципе, если к моему автомату прикрутить стек то получится таки даже без рекурсии. Стек нужен будет, по сути, только для того, чтоб возвращаться из вложенных документов обратно. Это оно?
:)
Учи похапэ^W^W Значит конкретно твои знания не востребованы сейчас на рынке или ты ищешь чего-то с неебической зарплатой, а по мнению работодателя до такой не дотягиваешь :)
не прямо оно, но сводится к нему)
Просто МА умеет парсить любой КС язык, а КА только регулярные языки. Регулярные языки вложены в КС языки.
Я после универа тоже чуток соснул, когда начал ходить по собеседованиям. Везде были нужны йоба-программисты со стажем.
что-то @rtsome отказывается срывать покровы о том, чего же он такого неебического ищет
Ну фактически ты ручками реализуешь рекурсию :)
ну типа того, но не совсем. главное отличие от рекурсии — один проход.
Мне в этом плане повезло больше: когда закончу универ, у меня будет около 3 лет опыта работы по смежной специальности.
Он хочет нихуя не делать и получать дохрена.
К.О.
и что тут неебического?) давай различать дохуя и слишком дохуя. ну, меня интересует среди текущих вакансий — сильно слабые вакансии или мало платят.
И тот задний...
на ерланге надо писать. там есть бинарный паттерн-матчинг
Ты ещё скажи на окамле, он заточен под всякий парсинг и прочую фигню.