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

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


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

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


S>>Как же? А если рекурсивная декларация определяется внутри другой рекурсивной декларации? Ссылаешься на что, а на что именно — как понять?

E>Ну пока никто не предложил никакого формализма. Ни для сложной рекурсии, ни для простой...
Давай запишем хотя бы рекурсивный факториал, а ты скажешь, что тебе в нем не нравится
f n = n==1 ? 1 : n * f (n-1)

Если впереди добавить let, то это будет ML
Если ?: заменить на if/then/else, получится Haskell


S>>Возьмем пример с Фибоначчи. Без двух начальных значений он не поедет.

E>Их тоже можно задать прямо в том же выражении...
Для них — можно. А генератор размещений нуждается в множестве и числе размещений. Зашьешь — закроешь путь к реюзу.
Re[128]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.12.10 11:37
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Не понимаю, что именно ты хочешь от меня увидеть.

E>Вот и я не понимаю.
S>>
S>>let list2 = list.Take(2);
S>>

E>Это бессодержательно, к сожалению...
Я не понял, какое содержание тебя интересует. Может найдешь здесь.

S>>Меня короткость не пугает. Меня пугает именно то, что непонятно что и как догадывается о том в каком диапазоне перебирать. Почему там 10 значений оказалось, а не 1000? Или наоборот, хотели 1000, а получили Int32.MaxValue


E>Ну из простого предиката всё добывается как раз.

А где грань между простым и сложным?

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

Меня эта запись не напрягает, потому что я знаю что никакой сверх ИИ оптимизатор не начнет совать туда любой X и не зациклится на этом удовольствии. Математическая запись не ресурсоемка в отношении памяти/CPU и т.п. Она вообще бесплатна.
Re[71]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.12.10 11:43
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>А откуда РС берет, там взять библиотека не сможет? Из деклараций...


E>Где она возьмёт код?

Из деклараций, которые комбинировали некоторые примитивы библиотеки. Синтаксис будет отличаться, а семантику можно сохранить.
1..5\*
и
Range(1,5).Product()
и
Range(1,5).Aggregate((x,a)=> x*a, 1);
Все это одно и то же
Re[124]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.12.10 11:45
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Enumerable.Range(1, 10).Where(x => x%2==0);

S>>Множество и маска в разных слоях. Или я что-то не понял?

E>Да, это то, только это очень просто. Если захотеть задачку посложнее, уже начнутся проблемы.

Рэйтрейсинг на LINQ достаточно сложная задача?
Парсер-интерпретатор ML на LINQ достаточно сложная задача?
Re[129]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 29.12.10 11:58
Оценка:
Здравствуйте, samius, Вы писали:

S>А где грань между простым и сложным?


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

S>Давай запишем хотя бы рекурсивный факториал, а ты скажешь, что тебе в нем не нравится

S>
S>f n = n==1 ? 1 : n * f (n-1)
S>

S>Если впереди добавить let, то это будет ML
S>Если ?: заменить на if/then/else, получится Haskell

S>Для них — можно. А генератор размещений нуждается в множестве и числе размещений. Зашьешь — закроешь путь к реюзу.

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

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


S>>А где грань между простым и сложным?


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

Этого очень и очень мало для языка с претензией на общее назначение. Как ты будешь пользователям объяснять?
Типа пишите декларативно, это круто, но оптимизируются только переборы по линейным неравенствам и равенствам, а остальное брутфорсится?
Re[111]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.12.10 12:10
Оценка:
Здравствуйте, Erop, Вы писали:

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

S>>Для них — можно. А генератор размещений нуждается в множестве и числе размещений. Зашьешь — закроешь путь к реюзу.
E>Для генератора именно размещений можно иметь встроеннуб конструкцию. Чтобы на пустом месте не парить оптимизатор. Но хотелось бы иметь возможность написать его и на языке. Ну, то есть не не против встроенных функций, но они должны бы быть принципиально выразимы на языке. Ну такая же ситуация в С, например.
За это я бился пол топика
Re[110]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 29.12.10 12:37
Оценка:
Здравствуйте, samius, Вы писали:

S>Давай запишем хотя бы рекурсивный факториал, а ты скажешь, что тебе в нем не нравится

S>
S>f n = n==1 ? 1 : n * f (n-1)
S>

S>Если впереди добавить let, то это будет ML
S>Если ?: заменить на if/then/else, получится Haskell

Мне в нём не нравятся три аспекта.
1) То, что тут нужен вопрос. IMHO, если уж мы поддерживаем рекурентные конструкции, логично бы иметь какой-то прямой способ описать начало последовательности.

2) То, что это обязано быть отдельным оператором, а не выражением.

То есть хотелось бы писать что-то вроде def(f:1, 1,..).i = f.(i-2) + f.(i-1)

3) В записи из (2) мне не нравится то, что нельзя описать семейство переборщиков. Не важно рекурентных или нет.

Ну, то есть, представь себе, что я хочу описать что-то типа семейства факториалов, вида !, !!, !!!, !!!!, ... и т. д.
И потом какую-то итерацию как по самим факториалам, так и по семейству.
Ну например, пусть наше семейство это f.I, соответственно I-й факториал от J -- это f.I.J

А записать мы хотим что-то вроде (I <J?f.I.J
)\I\+ -- тут \I\ — обозначает "свернуть по I"

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




Я, на самом деле, сейчас в пути, и у меня связь всё хуже. Таки снега-снега

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

E>>Да, это то, только это очень просто. Если захотеть задачку посложнее, уже начнутся проблемы.

S>Рэйтрейсинг на LINQ достаточно сложная задача?
S>Парсер-интерпретатор ML на LINQ достаточно сложная задача?

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

S>Типа пишите декларативно, это круто, но оптимизируются только переборы по линейным неравенствам и равенствам, а остальное брутфорсится?

S>

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

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


S>>Давай запишем хотя бы рекурсивный факториал, а ты скажешь, что тебе в нем не нравится

S>>
S>>f n = n==1 ? 1 : n * f (n-1)
S>>

S>>Если впереди добавить let, то это будет ML
S>>Если ?: заменить на if/then/else, получится Haskell

E>Мне в нём не нравятся три аспекта.

E>1) То, что тут нужен вопрос. IMHO, если уж мы поддерживаем рекурентные конструкции, логично бы иметь какой-то прямой способ описать начало последовательности.
Стоп. Это рекурсивная декларация определения факториала, формула. Если тебе нужен генератор последовательных факториалов, то приведенная мной запись вообще никак не подходит для этой цели. Но и генератор последовательности факториалов как бы нафик никому не нужен. Но можно и его попытаться записать. Основная идея в том, что нужно передавать некоторое состояние между обращениями к генератору. Смотри unfold например. Unfold как раз собирает генератор на основе функции, которая принимает старое состояние генератора и возвращает новое состояние + очередное значение.

E>2) То, что это обязано быть отдельным оператором, а не выражением.

E>То есть хотелось бы писать что-то вроде def(f:1, 1,..).i = f.(i-2) + f.(i-1)
Угу

E>3) В записи из (2) мне не нравится то, что нельзя описать семейство переборщиков. Не важно рекурентных или нет.


E>Ну, то есть, представь себе, что я хочу описать что-то типа семейства факториалов, вида !, !!, !!!, !!!!, ... и т. д.


E>И потом какую-то итерацию как по самим факториалам, так и по семейству.

E>Ну например, пусть наше семейство это f.I, соответственно I-й факториал от J -- это f.I.J
Не понял

E>А записать мы хотим что-то вроде (I <J?f.I.J

E>)\I\+ -- тут \I\ — обозначает "свернуть по I"
Может Unfold наведет тебя на какие-то мысли, я пока не понимаю.

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


E>

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

E>Так что я почти пропадаю...

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

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


E>>>Да, это то, только это очень просто. Если захотеть задачку посложнее, уже начнутся проблемы.

S>>Рэйтрейсинг на LINQ достаточно сложная задача?
S>>Парсер-интерпретатор ML на LINQ достаточно сложная задача?

E>А что, они написаны таким образом? То есть при помощи параллельных деклараций?

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

Давай задвинем на рейтрейсинг и интепретацию на LINQ, и посмотрим хотя бы на процесс вычисления площади фигуры ограниченной аналитической формулой. Этот пример можно найти по словам "LINQ площадь круга".
Кстати, мне кажется что это довольно полезный пример для РС.
Re[132]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.12.10 13:25
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Типа пишите декларативно, это круто, но оптимизируются только переборы по линейным неравенствам и равенствам, а остальное брутфорсится?

S>>

E>Ну это обозначает, например, что заданные таким образом границы обрабатываются эффективно...

E>Это уже во многих задачах много даст...
Во многих частных задачах — да. Но язык-то общего назначения.
Re: Ультракороткий язык программирования RS
От: avpavlov  
Дата: 29.12.10 15:02
Оценка:
1) А топик-то на 2м месте теперь в КСВ

http://rsdn.ru/Forum/MsgList.aspx?flat=1&amp;gid=83&amp;rate=1

2) Что, Кочетков таки подкараулил топикстартера и вывел в баню? Или куда он делся?
Re[67]: Ультракороткий язык программирования RS
От: _nn_ www.nemerleweb.com
Дата: 29.12.10 15:28
Оценка:
Здравствуйте, Erop, Вы писали:

E>Так прикольно, конечно. Но это сильно не в любой язык встраивается.

А зачем в другой язык ?
Как раз было бы вообще круто если бы RS мог быть написан на Nemerle в рамках DSL.
Ну или на крайний вариант только парсер на Nemerle написать.

Тогда не писать парсер RS было бы гораздо легче.
Было бы меньше глупых ошибок.
А заодно это бы частично сформировало спецификацию языка.


P.S.
И еще раз бы доказало крутость Nemrele
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[68]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 29.12.10 16:22
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Как раз было бы вообще круто если бы RS мог быть написан на Nemerle в рамках DSL.

Ну так предлагали писать библиотеку, которая встраивается в любой язык.
__>Ну или на крайний вариант только парсер на Nemerle написать.

__>Тогда не писать парсер RS было бы гораздо легче.

__>Было бы меньше глупых ошибок.
__>А заодно это бы частично сформировало спецификацию языка.
Ну если я буду писать парсер, то возможно и попробую. За одно и с N поиграюсь
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[68]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 29.12.10 18:21
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Ну или на крайний вариант только парсер на Nemerle написать.


В смысле, речь о этом исходнике ?
http://code.google.com/p/rsinterpretator/source/browse/trunk/RS/DOM/Common/TextLine.cs?r=50

И что вы хотите там улучшить с помощью Немерле ?

__>P.S.

__>И еще раз бы доказало крутость Nemrele

А еще хорошо бы написать РС на Java и обеспечить кроссплатформенность вплоть до мобильных устройств.

Но всеже,
пишите (с)
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[69]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 29.12.10 18:47
Оценка: :))
Удалена попытка обсуждения действий модератора. Следующий подобный бенефис в публичном форуме приведет к куда более продолжительному бану, равно как и любые попытки троллинга и обсуждения квалификации участников форума

Поэтому Все! Больше никаких "бугагашечек в уютных жежешечках"(с)Мр. Фримен

Только жесткач, жесткач и еще раз жесткач.
Оперативный кодинг, проработка идей, отписывание спек, реализация примеров.

Все, больше никаких парней в велосипедных лосинах.
Больше никаких выпадов низкавалифицированого персонала.

Ой, а у тебя здесь ошибочка ...
Ой, а у него массивы типизированы ...
Ой, а мальчик который учил Питон две недели, ничего не понял в коде РС ...
Ой, а я не знаю что такое i==1000000?...
Ой, а это очень практичная задача Пейджинга для паролей.

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

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

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

Вообщем так

Есть уже мануал на язык, подходит для уровня трех классов Церковно Приходской школы
http://code.google.com/p/rsinterpretator/wiki/Main

Есть уже нетипизированые массивы.
Есть уже пример возвращающий пароль по номеру

!x='A'..'C'
i<3?a+='+x'+i
^('(n+=1)==50?r='+a)
r


Так что вперед господа, мобилизируем же парт ячейку.
Да и я подумываю о создании отдельного раздела для РС
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[70]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 29.12.10 19:07
Оценка: 2 (1)
Кстате спасибо Егору за ответы на в этой теме, особенно пока меня не было,
Егор не только прекрасно понимает приоритеты в дорожней карте языка,
но и с талантом педагога отвечает на часто провокативные вопросы.
При этом не забывает давать отличные предложения по синтаксису,
90% из которых уже внедрены в дисидентской ссылке

Например отличная конструкция, решающая задачу флада с кортежами

x = 1..100
x.(2..5) //забрали диапазон массива с 2 по 5й элемент


и это тоже уже работает в интерпретаторе,
позже выложу версию
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.