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

E>>Не верю.

S>а ему?
Так верю. Я обратное отношение ((26/30)*(27/30)*(28/30)*(29/30)) прикидывал. Но всё равно ошибся. Таки 30%,а не 20...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[86]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 22:08
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

E>>И как вычислим свёртку? Что имеется в виду?


AV>А с чего ты решил, что там обязательно свертка? Лишь потому что для примера я предложил сложить все выбранные числа? Но если ты внимательно прочитаешь условия, то это было лишь только для примера. А так выбранные данные могут быть данными для обсчета какой-то модели или финансового инструмента.


Не совсем понимаю, как так всё устроено. Типа инструменту на вход надо сформировать какую-то поодпоследовательность первого массива?

У вас там в питонском коде, кстати, косяк небольшой. От сворачиваемой операции требуют наличия нуля. По идее это лишнее.

AV>Есть одна принципиальная разница. Автор. И это не переход на личности. Но подход, который был продемонстрирован до сих пор не дает никаких оснований считать, что из этого языка выйдет что-то. Готов поставить сотню баксов, что в язык будет долго и мучительно добавляться очередная "фича" и достаточно быстро эти фичи удавят друг друга.

Этого я вообще не понимаю. Если тебе интересно САМОМ играться, то ты можешь добавить фичу сам. А если тебе хочется обсудить PC_2, то я тебе ещё раз предлагаю завести отдельный топик...


AV>Если она такая простая, то пару десятков секунд можно и потратить.

Зачем? Вот я потратил. И думаешь меня это радует?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[97]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 22:09
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Мне кажется ровно наоборот. Явные комбинации генераторов не нуждаются в оптимизации. Тем более что они не исключают оперирование предикатами.

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

S>>Не проблема. Могу написать так, что для конечного алфавита любая конечная строка может быть достигнута за конечное время. И это будет эффективно, да и коду не сильно больше чем в размещениях. Просто я буду не фильтровать алфавит, а расширять его при переходе к вложенным генераторам. Если попросишь таки показать — займет какое-то время. Мгновенно не напишу, но ничего невозможного не вижу.

E>Про расширять алфавит не понял совсем. Очевидно что в таких строчках на первом месте может быть любая буква. Куда там дальше расширять-то?
Алфавит, надеюсь, не из одной буквы? Если нет, то первым делом берем все двухбуквенные строчки с вида 'aa','bb',..., потом 'aaa', 'bba', ... 'aab', 'bbb', ... и вперед.
Можно и для бесконечного алфавита организвать.

S>>В свою очередь прикинь (писать не надо) как ты эффективно сделаешь переборщик (IsPrime(I)?I) где IsPrime — пользовательская функция

E>Ну если это просто функция от просто позиции переборщика, то это никак и никогда не оптимизируешь ни на каком языке. Если же речь идёт о каких-то комбинациях, ну, например, мы хотим написать переборщик возрастающих последовательностей простых чисел, то очень даже напишу...
А где это у тебя написано, что там возрастающая последовательность простых чисел? Тебе дали предикат общего вида IsPrime::'a -> bool. А в нем условия, те же переборы, накопление и анализ результата...

S>>
S>>Enumerable.Range(0, oo)      /// генератор чисел 0..оо где бесконечность условная
S>>    .Select(x => x*2 + 1)    /// отображаем числа в нечетные
S>>    .Where(x => IsPrime(x)); /// выбираем только простые из них.
S>>

S>>Все стандартное для дотнета кроме IsPrime. Range можно переписать и для BigInt-ов, если что.
S>>И эта штука на фильтрации работает как минимум в 2 раза быстрее чем (IsPrime(I)?I).

E>Ну это первый шаг решета Эратосфена. Никто не мешает так же профильтровать и на RS: (i%2==0&&i%3==0&&i%5==0&&i%%7==0&&IsPrime(I)?I)

И до каких пор фильтровать?

S>>Хочешь я эту штуку продолжу до генерации пар простых с разницей в 2 — (3,5),(5,7),(11,13),...

S>>либо только тех пар простых, сумма цифр которы четна?

E>Так на RS это тоже легко сделать, и при том оно наверное и оптимизироваться будет хорошо...

наверное, или будет?

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


E>Я не против комбинации генераторов. Я просто не понимаю, что конкретно ты предлагаешь? Я же тебе предлагал записать переборщики нескольких множеств разных...

Напомни. Я помню только о строках с повторами, и о строках удовлетворяющих регекспу с балансом скобок.

E>Без примера не понятно о чём речь.

Я же вроде привожу примеры
Re[113]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 22:09
Оценка:
Здравствуйте, samius, Вы писали:

S>наверно без разницы. А вот находить нужную комбинацию состояний итераторов будет сложнее. Особенно после изменения алфавита.


Если изменится алфавит, то изменится и нумерация...

S>Ты решительно отвергаешь необходимость paging-а для такой задачи?

Нет. Просто я не думаю, что эта задача полезна для развития языка.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[97]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 22:11
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Мне кажется ровно наоборот. Явные комбинации генераторов не нуждаются в оптимизации.


E>Кстати, почему? По идее, на разных архитектурах надо по разному перебирать одни и те же множества...

Не понимаю, в чем проблема. Можно и по-разному.

E>У генераторов, если я правильно понимаю о чём речь, есть недостаток -- в них намертво вбит порядок итерации множества. А ведь это не обязательно надо...

Нет, не намертво. Сомневаешься что можно написать Enumerable.Range(start, count) который разбивает диапазон и скармливает разным вычислителям?
Re[99]: Ультракороткий язык программирования RS
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 28.12.10 22:12
Оценка: +2 :)))
Здравствуйте, samius, Вы писали:

S>На 42


Черт, я теперь кажется догадываюсь на чем было написано ПО Deep Thought
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[65]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 22:17
Оценка:
Здравствуйте, Erop, Вы писали:

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


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


E>Ну просто пример.


E>Вот у нас есть матрица M и вектор V мы записываем их произведение:


E>M.I.J*V.J\J\+


E>Что и как тут сделает библиотека?

не знаю, что делает \J, но допустим так

var M = RS.CreateArray(width, height);
var V = RS.CreateArray(length);

var expression = (M.I.J*V.J).FoldJ().Sum();
var result = RS.Eval(expression);
Re[87]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 22:25
Оценка:
Здравствуйте, Erop, Вы писали:

E>>>И как вычислим свёртку? Что имеется в виду?


AV>>А с чего ты решил, что там обязательно свертка? Лишь потому что для примера я предложил сложить все выбранные числа? Но если ты внимательно прочитаешь условия, то это было лишь только для примера. А так выбранные данные могут быть данными для обсчета какой-то модели или финансового инструмента.


E>Не совсем понимаю, как так всё устроено. Типа инструменту на вход надо сформировать какую-то поодпоследовательность первого массива?


Например есть у нас такой инструмент как swap. Нам надо обсчитать его на одних и тех же данных, но при разном кол-ве лет. В массиве хранятся данные для обсчета. И в конце добавлены годы. То есть первый массив представляет собой примерно такое [x1, x2, x3, x4 , 1, 2, 3, 4, 5, 10, 25, 50]. Где x1-x4 данные для обсчета, а 1, 2, 3, 4, 5, 10, 25, 50 — длительность в годах. Второй массив представляет собой что-то типа [((1,4), (5,)), ((1,4), (6,)), ((1,4), (7,)) ...] Функция worker просто тупо обсчитывает один своп имея в своем распоряжении данные (x1-x4) и длительность (1 год или 2 года или 3 года и т.д.). То есть будет что-то типа [x1, x2, x3, x4, 1], [x1, x2, x3, x4, 2], [x1, x2, x3, x4, 3] и т.д. И вот эти расчеты мы вполне может распараллелить.

E>У вас там в питонском коде, кстати, косяк небольшой. От сворачиваемой операции требуют наличия нуля. По идее это лишнее.


Функция писалась человеком, который Питон только-только начал изучать. Да и функция worker использовалась для тестирования. В реальности там совсем другие расчеты были. Да и функция process со временем значительно усложнилась.

AV>>Есть одна принципиальная разница. Автор. И это не переход на личности. Но подход, который был продемонстрирован до сих пор не дает никаких оснований считать, что из этого языка выйдет что-то. Готов поставить сотню баксов, что в язык будет долго и мучительно добавляться очередная "фича" и достаточно быстро эти фичи удавят друг друга.

E>Этого я вообще не понимаю. Если тебе интересно САМОМ играться, то ты можешь добавить фичу сам.

Как я уже писал ТС, я считаю данное действие бессмысленным. Потому что это все равно ничего не изменит. Тем более, что насколько я понял, то язык пишется не на основании какой-то спеки, а фичи добавляются отбалды.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[116]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 22:29
Оценка:
Здравствуйте, Erop, Вы писали:

S>>Что подразумевается под балансом скобок? Совпадение открытых и закрытых и их порядка?


E>Ну скобки в нужном порядке и парами

E>Ну типа ()()([]) -- баланс есть
E>А ()()([)] -- баланса нет.
Понятно. Генератор таких строк — не вопрос. С регекспом сложнее.

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

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

Допустим.
Вот тебе еще один пример: Есть некая хорошая монотонная функция с корнем, пусть даже заданна аналитически в виде некой формулы. И есть последовательность ординат, полученная в результате поиска корня некоторым методом, который тоже задан на языке RS декларативно. Интересующая меня последовательность перебора — те точки этой последовательности, синус которых > 0.
Я высосал это из пальца, реального применения такой чуши придумывать не стану, но вот очень сомневаюсь, что ты сможешь построить сколько-нибудь эффективный перебор таких точек.
А комбинация генераторов его легко переберет
Re[98]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 22:30
Оценка:
Здравствуйте, samius, Вы писали:

S>За задачу эффективной генерации строк по заданному регекспу я не возьмусь только для того что бы что-то доказать.

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

S>Алфавит, надеюсь, не из одной буквы? Если нет, то первым делом берем все двухбуквенные строчки с вида 'aa','bb',..., потом 'aaa', 'bba', ... 'aab', 'bbb', ... и вперед.

а 'abb' где будет?

S>А где это у тебя написано, что там возрастающая последовательность простых чисел? Тебе дали предикат общего вида IsPrime::'a -> bool. А в нем условия, те же переборы, накопление и анализ результата...

Я так понял, что у меня просто есть функция отображающая числа на bool?


E>>Ну это первый шаг решета Эратосфена. Никто не мешает так же профильтровать и на RS: (i%2==0&&i%3==0&&i%5==0&&i%%7==0&&IsPrime(I)?I)

S>И до каких пор фильтровать?
Ну вот ты остановился на первом шаге -- выкинул все чётные...

S>наверное, или будет?

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

E>>Без примера не понятно о чём речь.

S>Я же вроде привожу примеры

Нет, без примера комбинации переборщиков, о которой ты говоришь.

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

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


S>>наверно без разницы. А вот находить нужную комбинацию состояний итераторов будет сложнее. Особенно после изменения алфавита.


E>Если изменится алфавит, то изменится и нумерация...

Только если изменится длина алфавита

S>>Ты решительно отвергаешь необходимость paging-а для такой задачи?

E>Нет. Просто я не думаю, что эта задача полезна для развития языка.
Возможно и бесполезна. Но если она не может быть эффективно решена на неком языке, то это как-бы отдаляет язык от позиции общего назначения.
Настаивать на продолжении с номера не стану.
Re[88]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 22:37
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

AV>Например есть у нас такой инструмент как swap. Нам надо обсчитать его на одних и тех же данных, но при разном кол-ве лет. В массиве хранятся данные для обсчета. И в конце добавлены годы. То есть первый массив представляет собой примерно такое [x1, x2, x3, x4 , 1, 2, 3, 4, 5, 10, 25, 50]. Где x1-x4 данные для обсчета, а 1, 2, 3, 4, 5, 10, 25, 50 — длительность в годах. Второй массив представляет собой что-то типа [((1,4), (5,)), ((1,4), (6,)), ((1,4), (7,)) ...] Функция worker просто тупо обсчитывает один своп имея в своем распоряжении данные (x1-x4) и длительность (1 год или 2 года или 3 года и т.д.). То есть будет что-то типа [x1, x2, x3, x4, 1], [x1, x2, x3, x4, 2], [x1, x2, x3, x4, 3] и т.д. И вот эти расчеты мы вполне может распараллелить.


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

Ну и такое выражение тоже на RS легко записать, разумеется.

AV>Как я уже писал ТС, я считаю данное действие бессмысленным. Потому что это все равно ничего не изменит. Тем более, что насколько я понял, то язык пишется не на основании какой-то спеки, а фичи добавляются отбалды.


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

S>Вот тебе еще один пример: Есть некая хорошая монотонная функция с корнем, пусть даже заданна аналитически в виде некой формулы. И есть последовательность ординат, полученная в результате поиска корня некоторым методом, который тоже задан на языке RS декларативно. Интересующая меня последовательность перебора — те точки этой последовательности, синус которых > 0.

Ну я так понял, что мы имеем переборщик каких-то точек, и хотим его профильтровать по условию, что синус > 0. Так?
Ну так в чём проблема?

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

S>А комбинация генераторов его легко переберет

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

E>>Если изменится алфавит, то изменится и нумерация...

S>Только если изменится длина алфавита
Не понимаю. Тебе что ли пофиг какие именно строки перебирать? Главное, чтобы их число совпадал?


S>Возможно и бесполезна. Но если она не может быть эффективно решена на неком языке, то это как-бы отдаляет язык от позиции общего назначения.

Ну вот в С нет генераторов и нет возможности их комбинации, следовательно, а язык общего назначения всё равно
Я вот не понимаю о чём речь. Понятно, что если где-то удобно уметь сочетать переборщики, то надо понять, как их сочетать. Но надо родить какой-то формализм, который позволяет с ними работать. А не абстрактно говорить, что де вот мол есть библиотека. В библиотеке счастья никакого. Надо же иметь средства, для её написания...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[99]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 22:47
Оценка:
Здравствуйте, Erop, Вы писали:

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


E>Ну, вообще-то, регэксп скорее всего сильнее ограничивает множество строчек, чем требование баланса скобок.

E>Но можно пойти по пути просто фильтрации гиперкуба сразу двумя фильтрами.
Два фильтра для комбинации генераторов не проблема.

S>>Алфавит, надеюсь, не из одной буквы? Если нет, то первым делом берем все двухбуквенные строчки с вида 'aa','bb',..., потом 'aaa', 'bba', ... 'aab', 'bbb', ... и вперед.

E>а 'abb' где будет?
Вставим куда-нибудь. Например будем сразу выдавать для каждой строки уникальные перестановки. Это для чего-то важно на данный момент?

S>>А где это у тебя написано, что там возрастающая последовательность простых чисел? Тебе дали предикат общего вида IsPrime::'a -> bool. А в нем условия, те же переборы, накопление и анализ результата...

E>Я так понял, что у меня просто есть функция отображающая числа на bool?
Да. Надеюсь, что пользовательские функции имеют место в РС?

E>>>Ну это первый шаг решета Эратосфена. Никто не мешает так же профильтровать и на RS: (i%2==0&&i%3==0&&i%5==0&&i%%7==0&&IsPrime(I)?I)

S>>И до каких пор фильтровать?
E>Ну вот ты остановился на первом шаге -- выкинул все чётные...
В том варианте — да, выкинул четные. А в варианте с эффективным генератором я выкинул все, и более того закэшировал найденные простые, так что проверку очередного числа я смогу сделать эффективнее, чем это сделает IsPrime(Int). Генератор выкидывает все непростые, твой фильтр только до i%%7, а остальное проверяет каждый раз не сильно эффективно.

S>>наверное, или будет?

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

E>Нет, без примера комбинации переборщиков, о которой ты говоришь.


E>Ну, например, есть у меня переборщик. Как устроить перебор размещения пятёрок?

Есть генератор размещений. Если нет — он пишется. Я его приводил на F#. Подсовываешь в него свой переборщик в качестве алфавита, подсовываешь число 5 в качестве длины размещения и на выходе получаешь генератор пяторок твоего переборщика.
var пятерки = permut(myIterator, 5);
Если что — генератор размещений обобщенный, ему поровну чем оперировать, символами, числами, квадратами, табуретками. Единственное условие — элементы алфавита нужно уметь сравнивать.
Re[89]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 22:49
Оценка:
Здравствуйте, Erop, Вы писали:

AV>>Например есть у нас такой инструмент как swap. Нам надо обсчитать его на одних и тех же данных, но при разном кол-ве лет. В массиве хранятся данные для обсчета. И в конце добавлены годы. То есть первый массив представляет собой примерно такое [x1, x2, x3, x4 , 1, 2, 3, 4, 5, 10, 25, 50]. Где x1-x4 данные для обсчета, а 1, 2, 3, 4, 5, 10, 25, 50 — длительность в годах. Второй массив представляет собой что-то типа [((1,4), (5,)), ((1,4), (6,)), ((1,4), (7,)) ...] Функция worker просто тупо обсчитывает один своп имея в своем распоряжении данные (x1-x4) и длительность (1 год или 2 года или 3 года и т.д.). То есть будет что-то типа [x1, x2, x3, x4, 1], [x1, x2, x3, x4, 2], [x1, x2, x3, x4, 3] и т.д. И вот эти расчеты мы вполне может распараллелить.


E>Что-то, как-то, я бы не сказал, что это образец хорошей программы,


Какие претензии? Данный кусок программы прекрасно работает, читаешь и прост в поддержке.

E>и что это вариант исходной задачи, тоже. Например там сначала были коллекции пар чисел, а теперь стали наборы из пары и одного числа.


Это я ступил уже. Голова не варит слегка. второй массив будет примерно таким [((1,4), (5,5)), ((1,4), (6,6)), ((1,4), (7,7)) ...] Прошу прощения за ошибку.

E>Почему бы им просто не быть тройками и всё?


Нет смысла.

AV>>Как я уже писал ТС, я считаю данное действие бессмысленным. Потому что это все равно ничего не изменит. Тем более, что насколько я понял, то язык пишется не на основании какой-то спеки, а фичи добавляются отбалды.


E>Можешь написать спеку, если она тебе кажется нужной на данном этапе...


А толку? Если она все равно не будет соответствовать языку.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[118]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 22:50
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Вот тебе еще один пример: Есть некая хорошая монотонная функция с корнем, пусть даже заданна аналитически в виде некой формулы. И есть последовательность ординат, полученная в результате поиска корня некоторым методом, который тоже задан на языке RS декларативно. Интересующая меня последовательность перебора — те точки этой последовательности, синус которых > 0.

E>Ну я так понял, что мы имеем переборщик каких-то точек, и хотим его профильтровать по условию, что синус > 0. Так?
E>Ну так в чём проблема?
Проблема в том, что ты предлагаешь записывать не комбинации переборщиков, а предикаты. А в таком случае я сомневаюсь о возможности эффективного перебора указанных точек.

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

S>>А комбинация генераторов его легко переберет

E>Ну так тут ничего эффективнее просто перебрать генерируемые этим алгоритмом точки и посчитать синус каждой не просматривается вроде? А именно это сделают и RS и генераторы и т. д...

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

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


E>>>Если изменится алфавит, то изменится и нумерация...

S>>Только если изменится длина алфавита
E>Не понимаю. Тебе что ли пофиг какие именно строки перебирать? Главное, чтобы их число совпадал?
Алгоритму пофиг.
Не важно. Просто я беру алфавит, и прошу показать мне страницу №09872345 с этими паролями. С генерацией от указанного номера это сделать можно, а с генерацией по последнему сохраненному паролю — нет.
Я не настаиваю на условии задачи. Я настаиваю на том что продолжение с номера и продолжение с размещения — это разные задачи и разница может быть значительна.
фтопку пример с паролями

S>>Возможно и бесполезна. Но если она не может быть эффективно решена на неком языке, то это как-бы отдаляет язык от позиции общего назначения.

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

E>Я вот не понимаю о чём речь. Понятно, что если где-то удобно уметь сочетать переборщики, то надо понять, как их сочетать.

То есть ты признал что они полезны?
Тебе не понятно как из сочетать именно в RS? Для других языков вроде бы все понятно...
E> Но надо родить какой-то формализм, который позволяет с ними работать.
Я думаю что он уже рожден. Я не знаю лямбда счисления, но думаю что порывшись там можно найти что-то, что тебя интересует. Или спросить тех кто знает.
E>А не абстрактно говорить, что де вот мол есть библиотека. В библиотеке счастья никакого. Надо же иметь средства, для её написания...
Да я об необходимости средств с самого начала топика вроде как пекусь.
Естественно. На C# эти переборщики написаны на самом C#. Ну почти. Там на самом деле есть трюк в компиляторе, который преобразует код в конечный автомат. Но на том же хаскеле ничего подобного. Спецсинтаксис есть для такого комбинирования генераторов, но он лишь короткая форма записи и только.
Re[100]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 23:10
Оценка:
Здравствуйте, samius, Вы писали:

S>>>Алфавит, надеюсь, не из одной буквы? Если нет, то первым делом берем все двухбуквенные строчки с вида 'aa','bb',..., потом 'aaa', 'bba', ... 'aab', 'bbb', ... и вперед.

E>>а 'abb' где будет?
S>Вставим куда-нибудь. Например будем сразу выдавать для каждой строки уникальные перестановки. Это для чего-то важно на данный момент?

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

S>В том варианте — да, выкинул четные. А в варианте с эффективным генератором я выкинул все, и более того закэшировал найденные простые, так что проверку очередного числа я смогу сделать эффективнее, чем это сделает IsPrime(Int). Генератор выкидывает все непростые, твой фильтр только до i%%7, а остальное проверяет каждый раз не сильно эффективно.

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

S>Есть генератор размещений. Если нет — он пишется.

Как и на чём? На RS? Или это должна быть некая встроенная в язык конструкция?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[90]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 23:17
Оценка:
Здравствуйте, ambel-vlad, Вы писали:


AV>Какие претензии? Данный кусок программы прекрасно работает, читаешь и прост в поддержке.


Ну первый массив, например, вызывает у меня некоторые вопросы...
А про "прост в поддержке" -- это ты загнул, IMHO. Насколько я понял там у вас весь код уже запутался...

AV>Это я ступил уже. Голова не варит слегка. второй массив будет примерно таким [((1,4), (5,5)), ((1,4), (6,6)), ((1,4), (7,7)) ...] Прошу прощения за ошибку.

А! Это вы типа такую подпоследовательность хотите вырезать просто? Ну тоже не сложно на RS записать. Если операция конкатенации переборщиков позволяет свёртку по себе.

x.((y.I.J.1..y.I.J.2)\J\,) -- это у нас переборщик переборщиков исходных подпоследовательностей.


AV>Нет смысла.

Это я согласен. В примере смысл угадывается с трудом

AV>А толку? Если она все равно не будет соответствовать языку.

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