Re[60]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 26.12.10 01:07
Оценка: :)
Здравствуйте, samius, Вы писали:

E>>Самый прямой путь, кстати -- завести ещё один переборщик -- переборщик перестановок. Но это будет чит, хотя и практически ценный.

S>Переборщик перестановок, переборщик сочетаний, с повторами, без, ой-ой. Язык должен уметь создавать пользовательские переборщики. Иначе он ограничен.

Ну кое-какую библиотеку стоит иметь, таки. Многие, кстати, можно будет через эти выразить.

E>>Но, у нас же может быть сколь угодно умный язык. То есть правило может быть сложнее, чем "буквы не повторяем"...

S>Сколь-угодно умный язык превращается в сколь-угодно долгий цикл разработки. И не мертвый язык, но и не рожденный. Не нужен.

Прошу прощения. Тут под "язык" имелось в виду "множество строк итерируемое переборщиком"...


S>Даже если дизайн языка устаканится и дело дойдет до реализации — там будет срача в разы больше. Со-мной уж точно. Это я гарантирую

Нашёл чем хвастаться...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[67]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 26.12.10 01:09
Оценка:
Здравствуйте, samius, Вы писали:

S>Я рад за тебя. Мне этот перечень не известен, особенно в языке общего назначения.

Ну типа учебник по структурам данных и алгоритмам какой берём. Хоть бы и Кнута. И смотрим что вообще эффективного на последовательностях можно сделать... Не так уж и много можно на самом деле.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[59]: про пять случайных букв.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:10
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Нами с тобой. Автору-то до них дела нет

E>Во-первых, он предложил нам подумать/договориться, а он пока занят.
E>Во-вторых, какая разница?
Ну против его воли же ничего не вставится.

S>>Пути в графе это примерно то же самое, что и пути в гиперкубе. Берется алгоритм поиска путей в графе (их много, но возьмем любой конкретный, возвращающий множество путей, а не один) и пишется в форме генератора.


E>Ну вот, положим есть у меня какой-то способ описать генератор путей в графе. Я хочу из обычного сделать А*, например. Как всё это надо устроить?

А, ты про A-Star??? Соль в том, что тебе придется иметь и то и другое одновременно, и одно из другого ты вряд ли получишь. Либо оба закладывать в ядро, либо давать возможность использования пользовательских генераторов, либо объяснять пользователям почему ты включил тот а не другой.
E>Я понимаю, что очень похожая задача, но конкретно вот записать пока не могу. И понять, что можно на такой записи делать, а что нет -- тоже.
Похожи, но есть значительные тонкости в реализации.

S>>А что за алгоритм A* ?

E>Ну есть такой. Гуглится. Типа как алгоритм Дейкстры для поиска пути, но целенаправленный. Мы имеем для каждой точки априорную оценку пути до конца. Постепенно строим апостериорные цены путей до точек. На каждом шаге достраиваем продолжения через вершину, в которой сумма апостериорной цены от начала и априорной цены до конца оптимальна.
E>Елси надо подробнее, то скорее всего в вики есть.
Я недавно читал о нем, просто по названию не понял. У AlenaCpp в докладе был!

S>>До сих пор обсуждалась возможность вставки функций вообще. И последнюю неделю ТС был против любых функций/грушек вообще. И только сейчас он заговорил о полиморфных функциях.

E>Да нет. Он то же, что и я говорит. Просто непонятно.

E>-1 -- это в RND

там было вроде 'z'-'a' + 1. Если -1 — то мои извинения.

S>>Речь шла об уникальности символов в пароле. В какой это было форме конкретно — я уже не помню. А найти уже не просто.

E>Ну я пока что про задачу с повторениями толькл видел.
E>И решение ТС с Eval, тоже с повторениями было.
Я найду

S>>КС-грамматики? Чему это поможет?

E>Ну это более интересный переборщик строк, чем размещение без повторений...


S>>Я плохо и давно учился в шклое. Слово тензор помню, а что в него вкладывается — нет.

E>Забей. Просто выражения RS похожи очень на тензоры.

S>>Это прежде всего к тому, что операции над перебощиками не должны быть встроены в ядро. Язык должен быть заточен на удобное использование таких операций — это да. Т.е. сахарок. Но сами операции в ядро — это ограничение гибкости.


E>Зато эффективность. Но это не важно всё.


E>В общем надо подумать.
Re[42]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:12
Оценка:
Здравствуйте, PC_2, Вы писали:

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


PC_>>>нужно написать такойже свой велосипед и заменить буквально одну строчку

S>>Ты говоришь о хреновой функции и только.

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

PC_>Но главное что "вылечить" эту функцию может только целый комплект бубнов с всяки разными IComparable, доп. классом, дополнительной
PC_>функцией и другими бубнами. И всеравно функция не лечится до конца. Предусмотреть сортировку в одном месте для всех случаев в жизни практически
PC_>невозможно
А кто говорил об одной функции на все случаи?
Re[61]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:13
Оценка:
Здравствуйте, PC_2, Вы писали:

E>>>Циклами-то можно же записать? Так что можно и нерекурсивно, я думаю.

S>>Циклами можно. Но сейчас RS умеет только декартово произведение счетчиков. Т.е. вложенные for-ы, которые он отрабатывает от начала и до конца. Дополнительные ветвления есть — условие на вход в итерацию, но больше ничего. На мой взгляд — этого недостаточно для решения размещений без повторений.

PC_>Там мона делать вот так, вы просто еще не все пасхальные яйца там знаете


PC_>Тоесть вложены циклы есть, можно их строить любой причудливой формы.

PC_>Правда конструкция не ахти.

Ты меня убил. Не знать что такое декартово произведение — это несмываемый позор даже для школьника 5-го или какого там класса.
Re[45]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 26.12.10 01:14
Оценка:
Здравствуйте, samius, Вы писали:

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

S>Либо ты недоговариваешь, либо на sql нет людей, знакомых с LSP. Я как-то склоняюсь к первому.

Ну так расскажи какой должна быть иерархия в идеальном виде.
Пока здесь
http://www.sql.ru/forum/actualthread.aspx?tid=800476&hl=%ea%e2%e0%e4%f0%e0%f2
и здесь
http://www.sql.ru/forum/actualthread.aspx?tid=802380&hl=%ea%e2%e0%e4%f0%e0%f2

S>Задача непростая

о чем и речь,
классика аспектности.

PC_>>Почитай про аспектную парадигму в википедии.

S>Знаешь что аспекты работают в рантайме, то есть после компиляции?

так я эксепшины и ошибки вроде тоже как ловлю в рантайме.
вот и хочу распечатывать ошибки и останавливаться в программе по определенным правилам,
а не решитить код кодами возврата или трай кетчами.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[78]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:15
Оценка: :)
Здравствуйте, Erop, Вы писали:

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


E>Ну принято иметь функции, вроде take map или toArray. И что?

E>Вот как ты предлагаешь организовать размещения без повторов, например?
Писать генератор размещений без повторов. При его написании могут быть использованы эти функции. Но одними только ими вряд ли обойдется.

S>>Выглядит будто ты придумал. Но я пытался сказать о том же


E>Господи! Да какая разница кто что придумал?

Действительно, если концепции 30 лет...
Re[62]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 26.12.10 01:17
Оценка: :)
S>Ты меня убил. Не знать что такое декартово произведение — это несмываемый позор даже для школьника 5-го или какого там класса.

я знаю что такое декартовое, просто подкинул вам еще одну синт. конструкцию, которая кстате
уже давненько так работает. Может она вам поможет в размышлениях
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[61]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:18
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Это очень удобно.

E>Что именно удобно? Как ты функцию f писать будешь. Например мы хотим только такие строки, которые удовлетворяют какому-то регэкспу. И?
Комбинатор Where.
MyStrings.Where(s=>RegExp.Match(s, "pattern"));

S>>Паттерн 'итератор' чистой воды.

E>И?
Забыл контекст. Пора спать.
S>>Из прикольного что он предложил — неявный забег по нескольким итераторам из блока выражений в том же блоке выражений (спрятал for/foreach). Но получение декартового произведения итераторов — фишка известная и используемая в мэйнстриме и в частности в C#.

E>не, в С# всё-таки всё не так...

да, там декартово произведение убирается из двойного цикла в один явный. А он спрятал и один явный. Вот и все отличие.
Re[68]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:19
Оценка:
Здравствуйте, Erop, Вы писали:

E>Ну типа учебник по структурам данных и алгоритмам какой берём. Хоть бы и Кнута. И смотрим что вообще эффективного на последовательностях можно сделать... Не так уж и много можно на самом деле.


не согласен
Re[46]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:21
Оценка:
Здравствуйте, PC_2, Вы писали:

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


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

S>>Либо ты недоговариваешь, либо на sql нет людей, знакомых с LSP. Я как-то склоняюсь к первому.

PC_>Ну так расскажи какой должна быть иерархия в идеальном виде.

PC_>Пока здесь
PC_>и здесь
не сейчас

PC_>>>Почитай про аспектную парадигму в википедии.

S>>Знаешь что аспекты работают в рантайме, то есть после компиляции?

PC_>так я эксепшины и ошибки вроде тоже как ловлю в рантайме.

Дак а чего ты мне их суещь при некомпилируемом коде?
Re[63]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:22
Оценка:
Здравствуйте, PC_2, Вы писали:

S>>Ты меня убил. Не знать что такое декартово произведение — это несмываемый позор даже для школьника 5-го или какого там класса.


PC_>я знаю что такое декартовое, просто подкинул вам еще одну синт. конструкцию, которая кстате

PC_>уже давненько так работает. Может она вам поможет в размышлениях
не устал америки открывать? декартово произведение он мне подкинул
Re[60]: про пять случайных букв.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:35
Оценка:
Здравствуйте, samius, Вы писали:

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


S>>>Речь шла об уникальности символов в пароле. В какой это было форме конкретно — я уже не помню. А найти уже не просто.

E>>Ну я пока что про задачу с повторениями толькл видел.
E>>И решение ТС с Eval, тоже с повторениями было.
S>Я найду

http://www.rsdn.ru/forum/flame.comp/4093458.1.aspx
Автор: PC_2
Дата: 25.12.10

Следовательно если я изменю условия так,
"Перебрать все пароли от a-z с длиной 5 символов,
причем дважды одна и таже буква не может встречаться в пароле"

или

"Перебрать все пароли от a-z c длиной 5 символов,
а вот пароли начинающиеся на A не должни быть больше 3 символов"


Там две задачи
Я решал одну, ты другую
Re[46]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 01:43
Оценка: +1
Здравствуйте, PC_2, Вы писали:

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


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

S>>Либо ты недоговариваешь, либо на sql нет людей, знакомых с LSP. Я как-то склоняюсь к первому.

PC_>Ну так расскажи какой должна быть иерархия в идеальном виде.

PC_>Пока здесь
PC_>http://www.sql.ru/forum/actualthread.aspx?tid=800476&hl=%ea%e2%e0%e4%f0%e0%f2
PC_>и здесь
PC_>http://www.sql.ru/forum/actualthread.aspx?tid=802380&hl=%ea%e2%e0%e4%f0%e0%f2

капитан tchingiz вставил правильную ноту во втором сообщении по первой ссылке. О чем там дальше срались мне малоинтересно. Здесь тоже срались по этому поводу, но этот факт не отменяет LSP и необходимость его понимания при ООП разработке.
Что бы не сказать большего удаляюсь спать.
Re[47]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 26.12.10 02:43
Оценка: :)
S>капитан tchingiz вставил правильную ноту во втором сообщении по первой ссылке. О чем там дальше срались мне малоинтересно. Здесь тоже срались по этому поводу, но этот факт не отменяет LSP и необходимость его понимания при ООП разработке.
S>Что бы не сказать большего удаляюсь спать.

Ты про это чтоли ?
почему в примере Роберта Мартина с квадратами и прямоугольниками нельзя делать наследование.

Ну во-первых, для ООП это не очевидно, значит что-то не так в консерватории. И две темы споров на эту тему о чемто говорят, всеже просмотри, хотябы картинки наследований.

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

Короче говоря по той модели о которой я говорил, что классы сами инстанцируются в зависимости от свойств данных, все красиво и очевидно работает
ООП же эта христоматийная задача с фигурами не совсем по зубам.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[48]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 07:06
Оценка: +1
Здравствуйте, PC_2, Вы писали:

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

S>>Что бы не сказать большего удаляюсь спать.

PC_>Ты про это чтоли ?

PC_> почему в примере Роберта Мартина с квадратами и прямоугольниками нельзя делать наследование.
не дочитал до этой фразы

PC_>Ну во-первых, для ООП это не очевидно, значит что-то не так в консерватории. И две темы споров на эту тему о чемто говорят, всеже просмотри, хотябы картинки наследований.

Для ООП это очевидно. Еще очевидна твоя поизиця по поводу ООП — "не читал но осуждаю", что для гуру языкостроения весьма пикантно.

PC_>Во-вторых, в принципе любая функция которая умеет работать с прямоугольником должна уметь работать с квадратом в ООП,

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

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

Про то что ты там говорил я не могу судить, т.к. по словам что там что-то куда-от перетекает я даже не уверен, понимаю ли тебя.
PC_>ООП же эта христоматийная задача с фигурами не совсем по зубам.
Пока не выкуришь это не возвращайся к задаче о прямоугольнике и квадрате.
З.Ы. Кроме LSP еть другие принципы, которые ты понарушал в интерпретаторе.
Re[60]: про пять случайных букв.
От: Erop Россия  
Дата: 26.12.10 07:29
Оценка:
Здравствуйте, samius, Вы писали:

S>А, ты про A-Star??? Соль в том, что тебе придется иметь и то и другое одновременно, и одно из другого ты вряд ли получишь. Либо оба закладывать в ядро, либо давать возможность использования пользовательских генераторов, либо объяснять пользователям почему ты включил тот а не другой.

Понятно, что нужно иметь возможность описать генератор, и декларативно и процедурно, если надо.

E>>Я понимаю, что очень похожая задача, но конкретно вот записать пока не могу. И понять, что можно на такой записи делать, а что нет -- тоже.

S>Похожи, но есть значительные тонкости в реализации.

Ну тонкости реализации -- это отдельная тема. Хорошо бы научиться тонкости оставлять транслятору.
S>Я найду
Зачем?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[62]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 26.12.10 07:53
Оценка:
Здравствуйте, samius, Вы писали:

S>Комбинатор Where.

S>MyStrings.Where(s=>RegExp.Match(s, "pattern"));
Но, это же то же самое, что (match(x, "pattern")?x) не?

S>да, там декартово произведение убирается из двойного цикла в один явный. А он спрятал и один явный. Вот и все отличие.


Ну, можно, кроме декартова произведения описать и другие переборщики.
Например переборщик "нижней" части произведения: (I;(I > J?J))
Или размещение по два без повторов: (I;(I!=J?J))
Правда не все такие записи позволяют эффективную интерпретацию на всех платформах. Но именно вот ЗАПИСАТЬ можно много какие переборщики...

Если, например, добавить операцию "взять отрезок переборщика", то (I;(I > J?J)) можно записать и эффективно. Правда не так обобщённо тогда получится.
Потому, что сейчас переборщики устроены так, что не обязаны определять порядок перебора...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[61]: про пять случайных букв.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 07:53
Оценка:
Здравствуйте, Erop, Вы писали:

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


E>>>Я понимаю, что очень похожая задача, но конкретно вот записать пока не могу. И понять, что можно на такой записи делать, а что нет -- тоже.

S>>Похожи, но есть значительные тонкости в реализации.

E>Ну тонкости реализации -- это отдельная тема. Хорошо бы научиться тонкости оставлять транслятору.

Хочешь научить транслятор самостоятельно вставлять эвристики и доказывать что они что-то улучшают в общем виде?
Да, хорошо бы сформулировать транслятору задачу коммивояжёра в терминах полного перебора и что бы он сам допер до эвристической имитации отжига. Но это уже не задача проектирования языка/транслятора. Это замах на ИИ.

(Щас набежит ТС и заявит что всех порвет, чем опять меня насмешит).

S>>Я найду

E>Зачем?

Мне было интересно, вдруг мне причудилось что там без повторений.
Re[63]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 08:02
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Комбинатор Where.

S>>MyStrings.Where(s=>RegExp.Match(s, "pattern"));
E>Но, это же то же самое, что (match(x, "pattern")?x) не?
да, если ввелись функции

S>>да, там декартово произведение убирается из двойного цикла в один явный. А он спрятал и один явный. Вот и все отличие.


E>Ну, можно, кроме декартова произведения описать и другие переборщики.

E>Например переборщик "нижней" части произведения: (I;(I > J?J))
Ты записал полное декартово произведение + фильтр
на C# можно сделать именно часть произведения так:
from i in Enumerable.Range(0, 10)
from j in Enumerable.Range(i+1, j-i)
select new {i,j}

E>Или размещение по два без повторов: (I;(I!=J?J))
from i in Enumerable.Range(0, 10)
from j in Enumerable.Range(0, 10)
where i != j
select new {i,j}

E>Правда не все такие записи позволяют эффективную интерпретацию на всех платформах. Но именно вот ЗАПИСАТЬ можно много какие переборщики...
Вышеприведенные записи предполагают эффективные переборы. Но я не имею в виду куду.

E>Если, например, добавить операцию "взять отрезок переборщика", то (I;(I > J?J)) можно записать и эффективно. Правда не так обобщённо тогда получится.

см выше
E>Потому, что сейчас переборщики устроены так, что не обязаны определять порядок перебора...
Сейчас они перебираются в порядке объявления. И по этому поводу должна быть четкая спецификация. Если порядок будет неопределен, то пользоваться ими не будут.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.