Re[14]: философский вопрос по оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.12.10 15:32
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>>>А что бы делали, если бы оно было далеко от приемлемого или оптимизации не дали бы этого результата ? Естественно, я имею в виду оптимизации на базе схемы : профайлер — изменили — профайлет — изменили...


VD>>Бросили бы эту идею.


PD>И взялись за другую ?


Да. В том же Nemerle уже есть расширяемый парсер. Можно было развивать его. Просто PEG может предоставить большую гибкость.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: философский вопрос по оптимизации
От: Pavel Dvorkin Россия  
Дата: 16.12.10 15:38
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Бросили бы эту идею.


PD>>И взялись за другую ?


VD>Да. В том же Nemerle уже есть расширяемый парсер. Можно было развивать его. Просто PEG может предоставить большую гибкость.


То есть потратили бы силы, время и деньги (возможно) на то, что в итоге отправится в корзину , после чего начали бы все с начала, с определенным шансом получить еще раз то же самое ? А не лучше все же попробовать хоть как-то оценить, можно ли здесь добиться нужного результата. Да, с риском ошибиться.
Я ведь не зря тебе про субоптимизацию говорил и про локальный минимум, прочти. Начиная спуск из неправильно выбранной точки, ты рискуешь попасть в локальный минимум.
With best regards
Pavel Dvorkin
Re[16]: философский вопрос по оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.12.10 16:20
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>То есть потратили бы силы, время и деньги (возможно) на то, что в итоге отправится в корзину ,


Естественно. Это и называется исследовательский процесс.

PD>после чего начали бы все с начала, с определенным шансом получить еще раз то же самое ?


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

PD>А не лучше все же попробовать хоть как-то оценить, можно ли здесь добиться нужного результата. Да, с риском ошибиться.


Да это только ты способен оценивать неизвестное. На пальцах, конечно, и так прикинули.

Вот тут рядом DarkGray дал оценку PEG-e
Автор: DarkGray
Дата: 05.12.10
. Ты этому сообщению поставил оценку, а я смайлик, так как оценка эта не более чем высасанная из пальца фантазия. Никакого отношения к реальности она не имеет. В лучших своих приближениях товарищ ошибся где-то на порядок.

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


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

Что касается ПЕГ-а выбора, точек и прочей муры, то с ним было все очень просто. Где-то пол года Вольфхаунд просто трепался на тему. Потом где-то за день наваял простенький прототип и попробовал его на простенькой грамматике компилятора. Мы немного погутарили и он произвел первый рефакторинг. Результат оказался не то, ни сё. Вроде как работает, но явно с недостаточной скоростью. Плюс он работал с этой скоростью на совсем прсотой грамматике. С другой стороны приемлемый уровень был не так уж заоблачен.

На этом этапе было совершенно не ясно сбудет ли ПЕГ пригоден для разбора реального кода реального ЯП. Тогда Вольфхаунд подстрагал свой прототип так чтобы им можно было хоть как-то пользоваться, а я дописал к нему разбор синтаксиса ПЕГ. Далее был создан ряд простых грамматик, но на их базе получить ответ на наши вопросы мы все же не могли.

Тогда возникла идея создать парсер C#. Это с одной стороны позволило бы нам оценить скорость и другие качества нашей реализации на практике, а с другой дало бы нам возможность подключать имеющийся C#-код к немерловым проектам.

Когда был готов прототип C#-парсера, то Вольфхаунд сел за планомерные переделки и путем множества итераций добился весьма не плохой производительности.

В результате мы и на йоту не приблизились к оценкам DarkGray (так как они не имеют ничего общего с реальностью), но добились примелемой для нас производительности.

Надо заметить, что производительность для данного проекта была функциональным требованием, так как не достигнув хотя бы 2 метров с секунду на современных процессорах мы не смогли бы реализовать качественной поддержки IDE.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: философский вопрос по оптимизации
От: Pavel Dvorkin Россия  
Дата: 17.12.10 05:10
Оценка:
Здравствуйте, VladD2, Вы писали:


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


VD>Ты выдумал себе какую-то ерунду и пытаешься себе же доказать, что это не выдумка. Но большинству то окружающих очевидно ясно что это все же твои выдумки.


Влад, неужели ты не понимаешь, что это не ответ и не аргумент. У теяб какое-то странное поведение. Когда у теяб аргументы есть, ты их выкладываешь, и тебя интересно слушать. А вот когда их нет — ты готов объявить все ерундой, да и не прочь перейти на автора, вместо того, чтобы обсуждать вопрос. Если это ерунда — изволь объяснить почему, но только с аргументами, а не касаясь мой личности.

Еще раз. Ты начинаешь с некоего прототипа, котоый не устраивает пока что по характеристикам. В терминах задач оптимизации — выбор начальной точки для оптимизации. Это ерунда ?
Дальше идет улучшение (профайлер, изменения и т.д.). В терминах задач оптимизации — поиск минимума путем спуска. Это ерунда ?
Действуя таким образом ты рискуешь получить локальный минимум. Иными словами, заложив некую конструкцию, и получив, скажем, 10 условных единиц какой-то характеристики, ты доведешь ее таким образом до 5. Это, несомненно, успех. Но до 3 довести не удастся.
Между тем, выбрав иное начальное приближение, возможно, ты получил бы сразу 2, а потом довел бы до 1.
Что здесь ерунда ? Это тривиальные высказывания из области задач оптимизации. А то, о чем речь идет, и есть задача оптимизации. Почему же применение концепций таких задач к данной задаче вдруг оказывается ерундой ?
With best regards
Pavel Dvorkin
Re[18]: зеркало, павел. зер-ка-ло
От: Mamut Швеция http://dmitriid.com
Дата: 17.12.10 07:34
Оценка:
PD>>>Я ведь не зря тебе про субоптимизацию говорил и про локальный минимум, прочти. Начиная спуск из неправильно выбранной точки, ты рискуешь попасть в локальный минимум.

VD>>Ты выдумал себе какую-то ерунду и пытаешься себе же доказать, что это не выдумка. Но большинству то окружающих очевидно ясно что это все же твои выдумки.


PD>Влад, неужели ты не понимаешь, что это не ответ и не аргумент. У теяб какое-то странное поведение. Когда у теяб аргументы есть, ты их выкладываешь, и тебя интересно слушать. А вот когда их нет — ты готов объявить все ерундой


Странно, но именно так ты себя и ведешь


dmitriid.comGitHubLinkedIn
о PEG-парсерах
От: Klatu  
Дата: 17.12.10 08:59
Оценка:
Здравствуйте, VladD2, Вы писали:

K>>Это не тот парсер, который в Nemerle?


VD>Он самый.


Кстати, подскажите.. существует ли PEG-парсер, который может обрабатывать грамматики с левоей рекурсией? И желательно — без больших потерь в производительности.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: о PEG-парсерах
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.12.10 15:33
Оценка: 1 (1)
Здравствуйте, Klatu, Вы писали:

K>Кстати, подскажите.. существует ли PEG-парсер, который может обрабатывать грамматики с левоей рекурсией? И желательно — без больших потерь в производительности.


Существует алгоритм являющийся видоизмененным Пакратом (сильно усложненным). Быстрым его назвать нельзя.

Реально поддерживающих левую рекурсию парсер-генераторов создающих шустрые парсеры по ПЕГ-грамматикам нет. Но теоритически это возможно.

В PegGrammar используется частичная мемоизация. В принципе ее можно попробовать модифицировать так чтобы она останавливала разбор правил входящих в зацикливание. Это неминуемо замедлит парсер. Но вопрос на сколько. Возможно это будет не очень существенно.

Кому интересно, может сам с этим поэкспериментировать. Общая идея очень прста. Перед началом разбора правила нужно запоминать в переменной некое значение говорящее, что разбор начат. А при повтором входе в него (с той же позицией) проверять это значение и если оно устанолено, просто сразу возвращать ошибку (фэйлить). Тогда разбор продолжится со следующего вхождения OrderedChoice и все будет ОК.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: о PEG-парсерах
От: hardcase Пират http://nemerle.org
Дата: 17.12.10 19:17
Оценка:
Здравствуйте, Klatu, Вы писали:

K>Кстати, подскажите.. существует ли PEG-парсер, который может обрабатывать грамматики с левоей рекурсией? И желательно — без больших потерь в производительности.


Левую рекурсию всегда можно переписать в итерацию. Грамматику C#, которая была записана в леворекурсивной нотацией, я переписал в PEG.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: о PEG-парсерах
От: Klatu  
Дата: 18.12.10 05:32
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Левую рекурсию всегда можно переписать в итерацию. Грамматику C#, которая была записана в леворекурсивной нотацией, я переписал в PEG.


Можно. Но геморно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: о PEG-парсерах
От: hardcase Пират http://nemerle.org
Дата: 18.12.10 11:09
Оценка:
Здравствуйте, Klatu, Вы писали:

K>Здравствуйте, hardcase, Вы писали:


H>>Левую рекурсию всегда можно переписать в итерацию.


K>Можно. Но геморно.


Нужен конкретный пример.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: о PEG-парсерах
От: Klatu  
Дата: 18.12.10 11:16
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Кому интересно, может сам с этим поэкспериментировать. Общая идея очень прста. Перед началом разбора правила нужно запоминать в переменной некое значение говорящее, что разбор начат. А при повтором входе в него (с той же позицией) проверять это значение и если оно устанолено, просто сразу возвращать ошибку (фэйлить). Тогда разбор продолжится со следующего вхождения OrderedChoice и все будет ОК.


Ну в общем да, решение довольно простое. У меня идея была та же.
Но это должно работать довольно быстро.. или я чего-то не понимаю?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: о PEG-парсерах
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.12.10 12:14
Оценка:
Здравствуйте, Klatu, Вы писали:

K>Ну в общем да, решение довольно простое. У меня идея была та же.

K>Но это должно работать довольно быстро.. или я чего-то не понимаю?

"Это" будет вызываться миллионы раз. В худшем случае количество правил грамматики нужно умножить на количество входных символов и еще на некую константу. Так что даже то что тебе кажется быстрым может оказаться не приемлемым.

Короче тут без экспериментов никуда. Привет Дворкину
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: попробую еще раз
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.12.10 17:23
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, gandjustas, Вы писали:


G>>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>>Здравствуйте, samius, Вы писали:


S>>>>А история моя была о том, как дилетанты составляют ТЗ.


PD>>>А ты знаешь, ничего удивительного.


PD>>>Я — студент 4 курса. Нас начинают обучать программированию. Первая лекция по Алголу. И тут преподаватель буквально ошарашивает нас тем, что, оказывается, для того, чтобы решить простенькое линейное уравнение. я должен сам его аналитически решить, формулу записать и после этого программу сделать. Оказывается, не умеют эти машины сами решать уравнения. И интегралы аналитически брать не умеют (Mathcad, как понимаешь, еще в отдаленном будущем).

G>>Вообще говоря для аналитического решения Систем Линейных Алгебраических Уравнений используется вполне численный метод Гаусса, который можно и в программу забить. Есть и более эффективные алгоритмы.

PD>Спасибо, просветил. Как говорил Воланд — без тебя мы бы никак не догадались!




PD>>>Как так ? Я умею, а они не умеют ?

G>>Вообще говоря систему уравнений — это то что компьютер в общем случае решает лучше людей.

PD>У тебя еще много таких банальностей, о которых ты поведаешь нам, или на этом все ?


PD>>>Я же не могу 20 тысяч операций в секунду делать, а они могут, и что же, при этом простенький интеграл взять не могут ?

G>>Я на 4 курсе вполне мог написать парсер и интерпретатор математических выражений. А преобразованием ast вполне можно было сделать "символьное" дифференцирование и\или интегрирование.

G>>Садись двойка.


PD>Ты хоть внимательно прочел бы. Выделено для тебя. До 4 курса я вообще никаким программированием не занимался, так как учился на химическом факультете


Да неважно когда ты программированием заниматься начал.
Ты сам писал:

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

Это бред, причем полный. То что ты тогда только начал программированием заниматься ни в коей мере не оправдывает бредовость твоих слов.
Re[21]: попробую еще раз
От: Pavel Dvorkin Россия  
Дата: 20.12.10 11:28
Оценка:
Здравствуйте, gandjustas, Вы писали:


G>

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

G>Это бред, причем полный. То что ты тогда только начал программированием заниматься ни в коей мере не оправдывает бредовость твоих слов.

О господи! Речь идет о 1976 годе. Все, что есть в наличии на ВЦ — 2 компилятора с Алгола, один с Фортрана и Автокод (ассемблер)
With best regards
Pavel Dvorkin
Re[13]: философский вопрос по оптимизации
От: Yagg Россия  
Дата: 23.12.10 06:16
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Но если не доказано, что он вообще может быть построен с заданными характеристиками — его строить не будут,


Строить будут и строят очень часто, свою природу не переделаешь.

PD>пока не убедятся в том, что это возможно, то есть не оценят его характеристики. Любым способом (расчеты, эксперименты, прототипы), кроме одного — построения действующего образца.


Как минимум один класс технических устройств именно так и делают — сразу "действующий" образец, без каких-либо чертежей. Более того, глупые физики почему-то считают, что доказали теоретическую невозможность создания такого рода устройств, но им всё равно никто не верит и с завидной регулярностью пытаются изготовить эти аппараты.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.