Re[10]: Ультракороткий язык программирования RS
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.10 06:44
Оценка:
Здравствуйте, Mamut, Вы писали:

PC_>>Ну какими макросами Немерла такое реализуешь ?


M>Такое даром никому не надо.

Явно имеется в виду неявное распространение NULL. Частично реализовано в C#; для полного щастя надо бы реализовать lifted member access operator, известный под псевдонимом ".?". Который вместо бросания NRE возвращает null.
Народ его жаждет довольно-таки часто, т.к. это позволяет намного реже писать явные сравнения с null.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 06:55
Оценка:
PC_>>>Цель получить и короткий и понятный язык.

M>>Угу. И этоговорит человек, который выдумывает


M>>
M>>E 1..5\*
M>>


M>>Это, видимо, понятнее, чем в q/j/k, ага



PC_>>>Никаких шуток, есть рабочий транслятор и рабочий набор примеров и еще не вспаханое поле аспектного программирования.

PC_>>>Я хочу это неклюжее ООП заменить исключительно гибкой структурой построеной на распозновании классов.

M>>Чего-чего?


PC_>Ну ты даешь. Конечно это мегапонятно.


PC_>1..5 генерит массив 1,2,3,4,5

PC_>А операция \* сворачивает по умножению
PC_>А еще можно писать вот так

PC_>1..5\<

PC_>сворачивает по операции меньше — получаем минимум
PC_>или

PC_>1..5\>

PC_>Получили максимум. И всего то 6 байт !

И чем это отличается от закорючек в j? Да ничем.


dmitriid.comGitHubLinkedIn
Re[5]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 06:56
Оценка:
PC_>>>Никаких шуток, есть рабочий транслятор и рабочий набор примеров и еще не вспаханое поле аспектного программирования.
PC_>>>Я хочу это неклюжее ООП заменить исключительно гибкой структурой построеной на распозновании классов.

M>>Чего-чего?


KV>Это он про свое видение параметрического полиморфизма, похоже


KV>Знаете, товарищ Мамут, у меня складывается странное ощущение, что нас тут сегодня жестоко оттроллили, но обосновать, увы не могу


Не страшно Не в превый раз и не в последний


dmitriid.comGitHubLinkedIn
Re[6]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 06:59
Оценка:
PC_>>>>Никаких шуток, есть рабочий транслятор и рабочий набор примеров и еще не вспаханое поле аспектного программирования.
PC_>>>>Я хочу это неклюжее ООП заменить исключительно гибкой структурой построеной на распозновании классов.

M>>>Чего-чего?


KV>>Это он про свое видение параметрического полиморфизма, похоже


PC_>Не просто параметрического. Это инстанцирование классов в зависимости от обстоятельств.

PC_>Только у данных обладающих определенными свойствами должни появляться такие понятия как Класс.
PC_>Одни блоки данных могут свободно мигрировать по мере работы программы от одних классов к другим.

prototype-based OOP как в js + динамика


dmitriid.comGitHubLinkedIn
Re[13]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 07:06
Оценка:
PC_>Если тебе нужно заполнить массив до половины ( до 5го элемента ), то можешь сделать примерно так:

PC_>
PC_>Х.(I<5?I) := I
PC_>



Нихрена непонятно. Зачем там ?I

X.(I<5) := I


Так короче и — главное! — понятнее


dmitriid.comGitHubLinkedIn
Re[12]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 07:07
Оценка:
PC_>>>Слушайте, вы выглядите как минимум смешно.
PC_>>>Один высмыкнул пример сортировки пузыря из контекста, всего лишь строчку, остальные как хорьки весело подхватили и принялись комментировать, клея несуразное.
PC_>>>Обьясняю еще для тех кто в танковой дивизии, код пузырька приведен в первом посте этой теме.

VD>>Смотри, все харьки, задают глупые вопросы и не понимают твоего кода.

VD>>А между прочим ты обещал, что "Кодить на нем будет действительно просто и быстро". Какой же кодить, если люди даже понять его не могут?

PC_>они все понимают, даже уже разбирают код, просто притворяются.


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


dmitriid.comGitHubLinkedIn
Re[11]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 07:09
Оценка:
PC_>>>Спасибо, но это не Квик сорт. Это его пародия.
PC_>>>Алгоритм Квик сорт включает перемещение элементов на "одном участке" памяти.
PC_>>>Тоесть не требует дополнительных ресурсов памяти.

PC_>>>Тоесть банально этот код не решает поставленную задачу. Точка.


VD>>А этот говнобред решает:

PC_>>>>>//7. квик сорт
PC_>>>>>E ( S.I.J<S.I.(S.I.Len/2)?
PC_>>>>> S.(I*2+1):
PC_>>>>> S.(I*2+2)
PC_>>>>> ),=S.I.J

VD>>


VD>>По твоим же объяснениям мы выяснили, что ,= добавляет элемент к массиву. Значит сортировки по месту мы уже не имеем. Так что дальше уже разбираться не в чем.


PC_>я же ответил уже на вопрос на счет квик сорт.

PC_>Во-первых мой пример не работает

Тогда нахрена его приводить?

PC_>Во-вторых доводить до ума не имеет смысла, поскольку также как Немерла не решает поставленной задачи


Он решает поставленную перед квиксортом задачу и — главное — работает


dmitriid.comGitHubLinkedIn
Re[14]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.12.10 07:13
Оценка:
Здравствуйте, Mamut, Вы писали:

PC_>>Если тебе нужно заполнить массив до половины ( до 5го элемента ), то можешь сделать примерно так:


PC_>>
PC_>>Х.(I<5?I) := I
PC_>>


M>Нихрена непонятно. Зачем там ?I

На сколько я понимаю, I<5?I — это кусок тройственного оператора с опущенной частью :NULL

M>
M>X.(I<5) := I
M>

I<5 вернет True/False при использовании его в качестве оператора сравнения. Однако, при свертке он используется как 'min'.
Re[11]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 07:16
Оценка:
PC_>Я много не думаю. Много думать вредно.
PC_>Я просто знаю что существующие языки заставляют неоправданно писать много кода и не являются далеко не идеалом построения систем.
PC_>Поэтому когда программист говорит что я это сделаю за час, лучше говорить что я это сделаю за три часа. Инструмент слишком не совершенен.
PC_>ООП генерит не очень поворотливые конечные автоматы с заменяемыми модулями.

PC_>Каждый язык программирования является "драйверным", поскольку довольно плотно сидит на архитектуре процессора.


Смотрю я на Erlang и не вижу там ни плотноой архитектуры процессора ни ООП.


dmitriid.comGitHubLinkedIn
Re[10]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 07:17
Оценка: +1 :)
PC_>>Да не будет он выглядеть как говнокод, в том то и дело.
PC_>>Тогда профитов у языка никаких не будет и тогда затею можно считать пустой.

PC_>Вот очень приблизительный набросок Шахмат, в 1 кб на РС

PC_>Просьба хорькам не разбирать код, тут еще ничего не работает !


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

PC_>
PC_>//доска состоит из
PC_><B:PawnW y=2 x=1..8 y~=+1 face:="P" W:=1>
PC_><B:PawnB y=2 x=1..8 y~=-1 face:="P" W:=1>
PC_><B:Horse y=1,8 x=2,6 y~=+0..8 x~=+0..8; face:="K" W:=2>
PC_><B:Elephant y=1,8 x=3,5 y~=+0..8 x~=+0..8; face:="S" W:=2>
PC_><B:Rook y=1,8 x=1,8 y~=+0..8 x~=+0..8; face:="L" W:=3>
PC_><B:Queen y=1,8 x=4 y~=+0..8 x~=+0..8; face:="F" W:=4>
PC_><B:King y=1,8 x=5 y~=+0..8 x~=+0..8; face:="KR" W:=10>

PC_>//белые черные
PC_><C:White:B y=1,2 value:=W*1>
PC_><C:Black:B y=7,8 value:=w*-1>

PC_>//оценочная функция
PC_><B:Board:C Key:=sum(value)>

PC_>//просчет
PC_>Layear.Add(White).Add(Black).Add(White).Add(Black).Min().Max().Min().Max()  

PC_>


Дааа. Сразу видно, что это ни разу не говнокод, ага : )))


dmitriid.comGitHubLinkedIn
Re[11]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 22.12.10 07:20
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


PC_>>>Ну какими макросами Немерла такое реализуешь ?


M>>Такое даром никому не надо.

S>Явно имеется в виду неявное распространение NULL. Частично реализовано в C#; для полного щастя надо бы реализовать lifted member access operator, известный под псевдонимом ".?". Который вместо бросания NRE возвращает null.
S>Народ его жаждет довольно-таки часто, т.к. это позволяет намного реже писать явные сравнения с null.

Это не тот NULL который null в шарпе.

Это, стащено с баз данных.
Т.е.

NULL!=NULL

NULL+1 -> NULL
1+10*100-NULL -> NULL

arr:=1..5
arr.10000 -> NULL

и так далее.
Очень удобно, если условие гдето оборачивается в NULL не нужно нигде писать ифы, проверки и тд.
Результирующее условие будет NULL, тоесть будет пропущено. Ибо любая операция с NULL дает NULL
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[15]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 07:21
Оценка:
Здравствуйте, samius, Вы писали:

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


PC_>>>Если тебе нужно заполнить массив до половины ( до 5го элемента ), то можешь сделать примерно так:


PC_>>>
PC_>>>Х.(I<5?I) := I
PC_>>>


M>>Нихрена непонятно. Зачем там ?I

S>На сколько я понимаю, I<5?I — это кусок тройственного оператора с опущенной частью :NULL

А, да, сейчас увидел

M>>
M>>X.(I<5) := I
M>>

S>I<5 вернет True/False при использовании его в качестве оператора сравнения. Однако, при свертке он используется как 'min'.

Думаю, дальше будет веселее


dmitriid.comGitHubLinkedIn
Re[6]: Ультракороткий язык программирования RS
От: frogkiller Россия  
Дата: 22.12.10 08:26
Оценка: :)
Здравствуйте, Pavel Dvorkin, Вы писали:

_>>>А на вашем языке можно закодить шахматы за 1 час студенческой ненабитой рукой?

PC_>>Я к этому иду. Даже есть приблизительные наброски. Код шахмат займет от 300 байт до 1 кб.

PD>Так уже написано. Простая, хорошо понятная и ультракороткая программа.

PD>http://rsdn.ru/forum/philosophy/2445064.1.aspx
Автор: Pavel Dvorkin
Дата: 12.04.07


А вот такое же весом в 1кб, да ещё и с GUI:
http://js1k.com/2010-first/demo/750
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[7]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 22.12.10 08:43
Оценка: -2 :)
Здравствуйте, frogkiller, Вы писали:

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


_>>>>А на вашем языке можно закодить шахматы за 1 час студенческой ненабитой рукой?

PC_>>>Я к этому иду. Даже есть приблизительные наброски. Код шахмат займет от 300 байт до 1 кб.

PD>>Так уже написано. Простая, хорошо понятная и ультракороткая программа.

PD>>http://rsdn.ru/forum/philosophy/2445064.1.aspx
Автор: Pavel Dvorkin
Дата: 12.04.07


F>А вот такое же весом в 1кб, да ещё и с GUI:

F>http://js1k.com/2010-first/demo/750

Когда же вы научитесь наконец читать первую строчку хотябы темы.

А)Простота
Б)Ультракороткость
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[16]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 22.12.10 08:50
Оценка:
Здравствуйте, Mamut, Вы писали:

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


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


PC_>>>>Если тебе нужно заполнить массив до половины ( до 5го элемента ), то можешь сделать примерно так:


PC_>>>>
PC_>>>>Х.(I<5?I) := I
PC_>>>>


M>>>Нихрена непонятно. Зачем там ?I

S>>На сколько я понимаю, I<5?I — это кусок тройственного оператора с опущенной частью :NULL

Даже без мануала можно разобраться, потому что ультрапростой

M>А, да, сейчас увидел


M>>>
M>>>X.(I<5) := I
M>>>

S>>I<5 вернет True/False при использовании его в качестве оператора сравнения. Однако, при свертке он используется как 'min'.

M>Думаю, дальше будет веселее


Что не так ?
Операция свертки "\" принимает вторым операндом операцию. Сейчас допустимые операции *,+,<,>

Поэтому операции вида array\< вполне допустимы

Кстате кто начал смотреть код, вот здесь перечислены все возможные унарные и бинарные операторы.

 public enum OperationType
    {
        None,
        Plus,           //+
        Multiply,       //*
        Subtract,       //-
        Devide,         // /
        DevideWithRest, //%
        Agregate,       //\
        Generate,       //..
        Apply,          //:=
        DoubleApply,    //:=:
        AddApply,       //,=
        Dimension,      //D
        Great,          //>
        Less,           //<
        LessEqual,      //>=
        Equal,          //=
        Add,            //,
        Compare,        //?
        CompareInNot,   //?:
        NotNull,        //:
        Next,           //;
        And,            //&
        Or,             //|
        Point,          //.
        Rational        //./
    }
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[14]: Ультракороткий язык программирования RS
От: Lloyd Россия  
Дата: 22.12.10 08:51
Оценка: +2 :))
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>И правильно ли я понимаю, что выражение "1..5" означает "создать массив из пяти элементов, в котором X[i] = i"? Но ведь тогда, для того, чтобы посчитать факториал 1048576, ваша программа отожрет 1 мегабайт памяти только для формирования индексов, в то время, как в том же немерле можно обойтись по старинке:


KV>def factorial(n){ | 0 | 1 = > 1 | _ => factorial(n — 1)}


Если приведенный код — правильный, то функцию можно упростить до
def factorial(n){ 1 }

Re[12]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 22.12.10 08:53
Оценка:
Здравствуйте, Privalov, Вы писали:

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


PC_>>Просто Квик Сорт я хочу переписать в терминах аспектной парадигмы, которую надеюсь внедрить в этом языке.


P>А теория структурной оптимизации параметрического синтеза стационарных состояний как-нибудь изпользуется при разработке?


а что ето ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[15]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 22.12.10 08:54
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>И правильно ли я понимаю, что выражение "1..5" означает "создать массив из пяти элементов, в котором X[i] = i"? Но ведь тогда, для того, чтобы посчитать факториал 1048576, ваша программа отожрет 1 мегабайт памяти только для формирования индексов, в то время, как в том же немерле можно обойтись по старинке:


KV>>def factorial(n){ | 0 | 1 = > 1 | _ => factorial(n — 1)}


L>Если приведенный код — правильный, то функцию можно упростить до

L>def factorial(n){ 1 }

L>)


Шутка которая повторена в 4й раз в этой теме кажется еще смешнее, не правда ли ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[8]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 08:54
Оценка: +1
PC_>Когда же вы научитесь наконец читать первую строчку хотябы темы.

PC_>А)Простота


Так как тебе постоянно приходится объяснять, что у тебя в коде происходит, простым твой язык не назовешь

PC_>Б)Ультракороткость


Ультракороткость противоположна понятности (см тот же K)

Кстати, все еще ждем объяснений тут: http://rsdn.ru/forum/philosophy/4087739.1.aspx
Автор: VladD2
Дата: 21.12.10


dmitriid.comGitHubLinkedIn
Re[17]: Ультракороткий язык программирования RS
От: Mamut Швеция http://dmitriid.com
Дата: 22.12.10 09:00
Оценка: +1
PC_>>>>>Если тебе нужно заполнить массив до половины ( до 5го элемента ), то можешь сделать примерно так:

PC_>>>>>
PC_>>>>>Х.(I<5?I) := I
PC_>>>>>


M>>>>Нихрена непонятно. Зачем там ?I

S>>>На сколько я понимаю, I<5?I — это кусок тройственного оператора с опущенной частью :NULL

PC_>Даже без мануала можно разобраться, потому что ультрапростой



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

M>>А, да, сейчас увидел


M>>>>
M>>>>X.(I<5) := I
M>>>>

S>>>I<5 вернет True/False при использовании его в качестве оператора сравнения. Однако, при свертке он используется как 'min'.

M>>Думаю, дальше будет веселее


PC_>Что не так ?

PC_>Операция свертки "\" принимает вторым операндом операцию. Сейчас допустимые операции *,+,<,>

PC_>Поэтому операции вида array\< вполне допустимы


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


И? Без объяснения что делает часть из них, а так же приоритета операций этот список даром никому не нужен:


public enum OperationType
{
   Agregate,       //\    аггрегирование чего?
   Generate,       //..   генерация чего?
   Apply,          //:=   может все таки assign?
   DoubleApply,    //:=:  что?
   AddApply,       //,=   что?
   Dimension,      //D    что за размерность?
   Add,            //,    добавление чего?
   Compare,        //?    сравнение чего?
   CompareInNot,   //?:   что?
   NotNull,        //:    что notnull?
   Next,           //;    next что?
   Point,          //.    что?
   Rational        //./   что?
}


dmitriid.comGitHubLinkedIn
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.