Re[18]: Функциональное программирование в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.05.07 20:50
Оценка:
Здравствуйте, <Аноним>, Вы писали:

VD>>Вот это она и есть софистика или иными словами демогогия.

А>А почему определения разные в википедии для софиситики и демагогии?

Потому что это два разных термина. По смыслу они почти-что идентичны.

А>Гм, а мне казалось, софизм, софисты и софистика — разные слова, пусть и однокоренные.


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

А>Что интересно, слово софистика есть в википедии, однако две приведенные ссылки, ссылаются на другие слова.

А>

Софи́стика (греч. σοφιστική — умение хитро вести прения)


Продолжашь пытаться применять демогогию? В этот раз пошел цитаты вырванные из контекста подсовывать.

ОК. Разобьем и эту демогогию. Для этого буквально нужно процетировать пару абзацев далее:

Софистика (греч. ????????? — умение хитро вести прения)

1. Философское течение в Древней Греции, созданное софистами.
2. Рассуждение, основанное на преднамеренном нарушении законов логики, на употреблении ложных доводов.

Остальные, кто еще не знаком ни с течением, ни с его последствиями могут прочитать всю статью целиком.
http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%84%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0

Хреново ты владешь одным предметом.

А>Стоит-то стоит, только оно такое обширное, что под троллингом может пониматься практически все. Кстати сравнение оппонента с животным это тоже троллинг.


Вот ты попал. И если не закочишь свои упражнения на этом сайте, то прийдется твои айпишники в бан-лист складывать.

А>

Демаго́г (др.-греч. δημαγωγός, «предводитель народа»)

А>Как ни крути, предводитель народа, без самого народа — это вряд ли демагог. Даже если понятие народа трактовать широко.

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

А>Осторожно напоминаю, что речь шла о том, что я убил читабельность в коде на Nemerle.


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

А>А где ссылка на википедию?


Вот она.
... << RSDN@Home 1.2.0 alpha rev. 637>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Функциональное программирование в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.05.07 20:50
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Кажется, regexp есть. Кажется они везде есть. Для всех случаев может и не сделать (хотя сильно над этим я еще не думал особенно в контексте C# 3.0), а для определенной иерархии классов вполне себе.


Когда кажется, крестись. Регекспов в Шарп нет. Есть библиотека выполняющая их в рантайме. Сами регулярные выражения являются отдельным языоком.
... << RSDN@Home 1.2.0 alpha rev. 637>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Функциональное программирование в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.05.07 22:18
Оценка: :)
Здравствуйте, FDSC, Вы писали:

FDS>P.S. Кстати, вы случайно не преднамеренно путаете этимологию слова (его происхождение) с толкованием (значением) слова?

FDS>(это я по поводу этого
Автор:
Дата: 21.05.07
вашего сообщения, я так понимаю, это тоже вы)


Вспомнился анекдот:

---------------------
— Вы случайно не еврей?
— Вы знаете? Совершенно случаяно...

... << RSDN@Home 1.2.0 alpha rev. 637>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Функциональное программирование в Nemerle
От: Аноним  
Дата: 22.05.07 07:59
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>Это догма. Догмы до добра не доводят.

Насчет догм считаю также. Насчет кода AST нет.

WH>Ну про то что тебе еще надо написать

WH>
WH>return converter(new Plus(first.Convert(converter), second.Convert(converter)));
WH>
ты как обыно забыл...

Разговор шел про пользу intellisence для Nemerle, а не для C#.
Тем не менее по вышеприведенному коду:
набираю ret, мне подсказывают return
набираю con, мне подсказывают converter
круглая скобка — список параметров
new Pl — подсказывают, new Plus
fir — подсказывают first
точка — выбираю метод Convert из списка.
con — converter

вот примерно, что придется набрать с клавиатуры:
ret con(new Pl(fir.(con), sec.(con));
Что придется набрать с клавиатуры в случае Nemerle пусть напишут знатоки Nemerle.
А код такой примерно:
| Plus(first, second) => converter(Plus(first.Convert(converter), second.Convert(converter))

WH>Вот только тут собрались флеймеры со стажем и так просто нас не провести...

Неужели из хода дискуссии не видно, что я тоже флеймер со стажем?

WH>Мелкая бага. Заметь поправка не изменила колличество строк.

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

WH>Типа тут гдето от тебя есть конструктив? Извини не вижу.

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

WH>Легкость это полное переписывание? Ну да когда 200-300 строк то переписать действительно легко, а когда больше...

Тогда, естественно, тяжелее. Впрочем пока тут речь шла, как раз о программе из 200-300 строк.

А>>А я не про методы, я про классы. В иерархию добавляется новый класс, в нем реализуется метод для посетителя. Но в самом посетителе, например для представления в виде строки, не добавляется проверка на новый класс. Ошибка вылетает только во время выполнения. Как, кстати, и в Nemerle в некоторых случаях.

WH>Ясно. С тем как реализуются посетители не знаком.
WH>Объясняю для тех кто не знает как реализуют посетитель:
Ключевое слово у меня иерархия. А у вас класс C, не в иерархии
using System;

interface IVisitor
{
    void accept(Expr expr);
}

interface IVisitable
{
    void visit(IVisitor visitor);
}

class Expr: IVisitable
{
    public virtual void visit(IVisitor visitor) { visitor.accept(this); }
}

class WriteVisitor: IVisitor
{
    public void accept(Expr expr)
    {
        Console.WriteLine("This is Expr");
    }
}

class Oper: Expr, IVisitable
{
    public override void visit(IVisitor visitor) { visitor.accept(this); }
}

class Program
{
    public static void Main(string[] arguments)
    {
        Expr expr = new Expr();
        WriteVisitor visitor = new WriteVisitor();
        expr.visit(visitor);
        Oper oper = new Oper();
        oper.visit(visitor);
    }
}

Программа компилируется, а работает неправильно.
А все потому, что в для IVisitor не добавили еще один метод.
Компилятор ничего не подсказывает.

WH>И где в коде Влада неуместные сокращения?


WH>Код читают чаще чем пишут. Следовательно код должен легко читаться так что твои сравнения без ведущих пробелов и тп просто не имеют отношения к жизни.

А лично я читаю не посимвольно, и ведущие пробелы отсекаю сходу.

А>>А у меня есть мнение, что не одна строка на Nemerle, а четыре,

WH>А у меня есть мнение что при правильном форматирование не 7 строк на C#, а 22
WH>
WH>class Minus : Oper
WH>{
WH>    public Minus(Expr first, Expr second)
WH>        : base(first, second)
WH>    {}
    
WH>    public override string ToString()
WH>    {
WH>        return first.ToString() + "-" + second.ToString();
WH>    }
    
WH>    public override double Eval()
WH>    {
WH>        return first.Eval() - second.Eval();
WH>    }
    
WH>    public override Expr Convert(Converter converter)
WH>    {
WH>        return converter(new Minus(first.Convert(converter), second.Convert(converter)));
WH>    }
WH>}
WH>

А я тогда, что на Nemerle 11
| Minus 
  { 
      expr1 : Expr;   
      expr2 : Expr; 
  }
| Minus(expr1, expr2) 
    with oper = "-" 
| Minus(expr1, expr2) 
    => expr1.Eval() - expr2.Eval()
| Minus(expr1, expr2) 
    => transform(Minus(expr1.Convert(transform), expr2.Convert(transform)))

2 * 11 = 22
Это я еще не добавил для отбивки пустые строки как в C#, пожалел.

WH>Не размазаны, а сгрупированны по действию. Но не по объекту.

WH>Просто другой принцип группировки. Иногда (например в данном случае) болие предпочтительный.
А иногда (например в данном) более предпочитетельны по объекту. Например можно меньше внутренних полей через свойства выставлять.

WH>Почему 4 понятно, а вот почему 2 * 4 уже нет.

Я много раз писал, что преимущество по объему кода лишь двухкратное.

WH>2)Попробуй написать аналог этого

WH>
WH>| Call("max", [Mul(Literal(x), Literal(m)), Div(Literal(y), Literal(d))]) => Literal(Math.Max(x * m, y / d))
WH>

Всегда пожалуйста
Max max; Mul mul; Div div; Lit x, m, y, d;
if (expr.Match<Max, Mul, Lit, Lit, Div, Lit, Lit>(out max, out mul, out x, out m, out div, out y, out d))
    return new Lit(Math.Max(x * m, y / d);
Re[14]: Функциональное программирование в Nemerle
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 22.05.07 08:31
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Насчет догм считаю также. Насчет кода AST нет.


Много рабочих компиляторов написал? Ссылки в студию, плиз. И попрошу не оправдываться. Если нечем подтвердить свою компетентность в данном вопросе, попрошу демагогии не разводить.

WH>>Ну про то что тебе еще надо написать

WH>>
WH>>return converter(new Plus(first.Convert(converter), second.Convert(converter)));
WH>>
ты как обыно забыл...

А>Разговор шел про пользу intellisence для Nemerle, а не для C#.
[skip]
А>вот примерно, что придется набрать с клавиатуры:
А>ret con(new Pl(fir.(con), sec.(con));
А>Что придется набрать с клавиатуры в случае Nemerle пусть напишут знатоки Nemerle.
А>А код такой примерно:
А>| Plus(first, second) => converter(Plus(first.Convert(converter), second.Convert(converter))

Где-то так:

| Pl(fi, se) => con(Pl(fir.Conv(conv), sec.Conv(conv))


Только тут сразу происходит сопоставление по шаблону. А у тебя только возвращается результат.

И вообще, надо не забывать, что код труднее читать, чем писать. Я на сниппетах тебе такого нагородить на brainfuck могу, что ты потом всю оставшуюся жизнь в нём разбираться будешь.

А>>>А у меня есть мнение, что не одна строка на Nemerle, а четыре,

WH>>А у меня есть мнение что при правильном форматирование не 7 строк на C#, а 22
WH>>
WH>>class Minus : Oper
WH>>{
WH>>    public Minus(Expr first, Expr second)
WH>>        : base(first, second)
WH>>    {}
    
WH>>    public override string ToString()
WH>>    {
WH>>        return first.ToString() + "-" + second.ToString();
WH>>    }
    
WH>>    public override double Eval()
WH>>    {
WH>>        return first.Eval() - second.Eval();
WH>>    }
    
WH>>    public override Expr Convert(Converter converter)
WH>>    {
WH>>        return converter(new Minus(first.Convert(converter), second.Convert(converter)));
WH>>    }
WH>>}
WH>>

А>А я тогда, что на Nemerle 11
А>
А>| Minus 
А>  { 
А>      expr1 : Expr;   
А>      expr2 : Expr; 
А>  }
А>| Minus(expr1, expr2) 
А>    with oper = "-" 
А>| Minus(expr1, expr2) 
А>    => expr1.Eval() - expr2.Eval()
А>| Minus(expr1, expr2) 
А>    => transform(Minus(expr1.Convert(transform), expr2.Convert(transform)))
А>

А>2 * 11 = 22
А>Это я еще не добавил для отбивки пустые строки как в C#, пожалел.

Во-первых, хватит сравнивать тёплое с мягким. Во-вторых, варианты изначально так спроектирваны, чтобы поля опций записывались на одной строке с объявлением опции. Это потому, что много писать не приходится. И потому, что описание опции варианта гораздо более ёмкое, чем описание класса. Это не то же самое, что описание публичных полей в классе. В классе обычно приходится описывать очень много разных вещей, помимо нескольких полей, так что в одну строчку ты класс не запишешь.

В третьих, with — это неотъемлемая часть образца, так что её не стоит выносить на отдельную строку. Наконец, если образцы достаточно короткие, то допустимо записывать их на одной строке.

И отбивки между образцами никто не ставит. Это всё равно, что ставить отбивки между if-ом и его телом или меджу различными case'ами в switch'е.

Вообще, читабельность — понятие субъективное. Так что стиль кодирования вырабатывается не на основе теоретических положений, а ради обеспечения удобства большинства. Вот большинству кажется более удобным читать код на Nemerle в том виде, в котором его привёл VladD2, а код на C# — в том виде, как его привёл Wolfhound.

Кстати, допустимо всё это записать и так:

|
Minus
{
expr1
:
Expr
;
и т.д.


и

class Minus:Oper{public Minus(Expr first,Expr second):base(first, second){}public override string ToString(){return first.ToString()+"-"+second.ToString();}public override double Eval(){return first.Eval()-second.Eval();}public override Expr Convert(Converter converter){return converter(new Minus(first.Convert(converter),second.Convert(converter)));}}


Так что твоя арифметика никому ничего не доказывает.

WH>>2)Попробуй написать аналог этого

WH>>
WH>>| Call("max", [Mul(Literal(x), Literal(m)), Div(Literal(y), Literal(d))]) => Literal(Math.Max(x * m, y / d))
WH>>

А>Всегда пожалуйста
А>
А>Max max; Mul mul; Div div; Lit x, m, y, d;
А>if (expr.Match<Max, Mul, Lit, Lit, Div, Lit, Lit>(out max, out mul, out x, out m, out div, out y, out d))
А>    return new Lit(Math.Max(x * m, y / d);
А>


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

PS: модераторы, куда вы смотрите. Это же явная провокация. Не сомневаюсь, что это очередное воплощение Kolhoz/GNU Zaurus. Баньте его к чёртовой матери!
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[15]: Функциональное программирование в Nemerle
От: WolfHound  
Дата: 22.05.07 08:59
Оценка: +1 :))) :))
Здравствуйте, konsoletyper, Вы писали:

K>PS: модераторы, куда вы смотрите. Это же явная провокация.

А нам пофлеймить охота.

K>Не сомневаюсь, что это очередное воплощение Kolhoz/GNU Zaurus. Баньте его к чёртовой матери!

Это точно не Колхоз. Колхоз гораздо умнее.
И уж точно Колхоз не станет защищать C#. Про C# Колхоз скорее скажет что-то типа: "Недоязычек для быдлокодеров."
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[16]: Функциональное программирование в Nemerle
От: rameel https://github.com/rsdn/CodeJam
Дата: 22.05.07 09:43
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Это точно не Колхоз. Колхоз гораздо умнее.

WH>И уж точно Колхоз не станет защищать C#. Про C# Колхоз скорее скажет что-то типа: "Недоязычек для быдлокодеров."

А как же широта взглядов и лекгость к изменениям Re[9]: Функциональное программирование в Nemerle
Автор:
Дата: 19.05.07

Отнюдь, я просто показал широту своих взглядов и легкость к изменениям.

... << RSDN@Home 1.2.0 alpha rev. 677>>
Re[15]: Функциональное программирование в Nemerle
От: Lloyd Россия  
Дата: 22.05.07 14:05
Оценка:
Здравствуйте, konsoletyper, Вы писали:

А>>Насчет догм считаю также. Насчет кода AST нет.


K>Много рабочих компиляторов написал? Ссылки в студию, плиз.


А ваши компиляторы можно посмотреть?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Функциональное программирование в Nemerle
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 22.05.07 15:02
Оценка:
Здравствуйте, Lloyd, Вы писали:

А>>>Насчет догм считаю также. Насчет кода AST нет.


K>>Много рабочих компиляторов написал? Ссылки в студию, плиз.


L>А ваши компиляторы можно посмотреть?


Вообще-то Аноним спорил с Wolfhound'ом, у которого был опыт написания компиляторов (это мягко сказано), так что словам Wolfhound'а верится охотнее. А вот Аноним кидается словами по поводу AST, никак их не обосновывая. Кстати, небольшой опыт написания парсеров есть и у меня. Здесь
Автор: konsoletyper
Дата: 31.03.07
находится описание проекта, в котором так или иначе парсится текст. Причём синтаксис языка будет посложнее "A+B*C".
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[15]: Функциональное программирование в Nemerle
От: Аноним  
Дата: 22.05.07 16:27
Оценка: :)
Здравствуйте, konsoletyper, Вы писали:

Спорить с вами konsoletyper, иногда все равно, что отнимать конфету у ребенка, слишком легко.
Вот назадавали мне кучу вопросов, а в конце, потребовали от модераторов, чтобы они меня забанили.
Зачем вопросы задавали, спрашивается, если ответов не хотели услышать? Ладно, предположу, что все-таки хотели.

K>Много рабочих компиляторов написал? Ссылки в студию, плиз.

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

K>И попрошу не оправдываться. Если нечем подтвердить свою компетентность в данном вопросе, попрошу демагогии не разводить.

Судья спрашивает у подсудимого — вы признаете себя виновным? И попрошу не оправдываться.
Да и что такого сложного в написании компилятора, в общем смысле, раз уж вы не уточнили какого именно?
И по-моему, в любом программистском ВУЗе, одна из курсовых, обязательно написание компилятора.

K>Где-то так:


K>
K>| Pl(fi, se) => con(Pl(fir.Conv(conv), sec.Conv(conv))
K>

Оп-па, по количеству ввода Nemerle даже превзошел C#.

K>Только тут сразу происходит сопоставление по шаблону. А у тебя только возвращается результат.

Странно почему вам не пришло в голову, как же так возвращается результат, а сопоставление с образцом не происходит. Как же тогда работает программа, если результат возвращается не понятно, при каких условиях? Или все таки и у меня в данном случае есть сопоставление с образцом, только образец простой?

K>И вообще, надо не забывать, что код труднее читать, чем писать. Я на сниппетах тебе такого нагородить на brainfuck могу, что ты потом всю оставшуюся жизнь в нём разбираться будешь.

Код труднее читать, чем писать, могу написать на редком языке, трудно понимаемую программу.
Гм. Не понял. Трудно понимаемую можно и на многих распространенных языках написать.

K>Во-первых, хватит сравнивать тёплое с мягким.

Надо было пояснить, что теплое, а что мягкое. Подозреваю, что одно из них Nemerle, а другое C#. Путать, тогда, действительно не надо.

K>Во-вторых, варианты изначально так спроектирваны, чтобы поля опций записывались на одной строке с объявлением опции.

Понимаю, хорошие варианты хорошо спроектированы, им можно на одной строке. Плохие классы не так спроектированы — им нельзя.
class Mul { public Expr expr1, expr2; }

K>В третьих, with — это неотъемлемая часть образца, так что её не стоит выносить на отдельную строку. Наконец, если образцы достаточно короткие, то допустимо записывать их на одной строке.

Такую часть можно и в классах добавить.
class Oper: Expr
{
  public Oper(Expr expr1, Expr expr2, string sign) {...}
  public override ToString() { return expr1 + sign + expr2;}
}
class Plus: Oper
{
  public Plus(Expr expr1, Expr expr2): base(expr1, expr2, "+") {}
}

тогда для операторов не надо переопределять ToString — 1 строка экономии.
а в Nemerle тем не менее надо еще учесть выражение после => хоть оно и одно для четырех операторов.
Так что, соотношение между размером кода останется тоже.

K>И отбивки между образцами никто не ставит. Это всё равно, что ставить отбивки между if-ом и его телом или меджу различными case'ами в switch'е.

Почему же ставят и часто, при определенном стиле форматирования.
if (условие)
{
    тело
}


K>Вообще, читабельность — понятие субъективное.

Слава богу, я так и думал.

K>Кстати, допустимо всё это записать и так:

K>Так что твоя арифметика никому ничего не доказывает.
Ситуация обратная. Сначала мне приводят форматирование на C# (например с множеством пустых строк), а я просто применяю примерно такой же стиль к Nemerle (что уже оказывается особо тяжким преступлением). Стили же приведенных вами фрагментов практически диаметрально противоположны.

K>Всё-таки ты невменяемый.

Сумашедший гений? Что вы на гениальности не настаиваю, хотя видеть подобный крен в эпитетах приятно.
Впрочем, припоминаю, вы кажется уже хвалили мое умение искусно вести спор.

K>Что-то его функциональность сильно напоминает телепатию.

Не решились сказать, что напоминает сопоставление с образцом, решили сказать, что напоминает телепатию?

K>Кстати, очередные крики, что этот метод можно реконструировать, буду считать неконструктивом. Потому что нужно отвечать на вопрос, а не оправдываться.

Не все могут реконструировать, это я признавал.
Re[20]: Функциональное программирование в Nemerle
От: Аноним  
Дата: 22.05.07 17:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это алогоритм — это дисер на Ph.D.

Кандидатская или докторская?

VD>Его с нуля не написать ни мне, ни тебе не многим другим.

А кто в наше время пишет с нуля?

VD>Ты его можешь только содрать.

А что если и правда содрал и реализовал на C# для C#? Шучу, шучу.

VD>Вообще, забавно, что тактика на смену темы пошла уже совсем открыто.

Ни стыда, ни совести, у этих скептиков Nemerle.

VD>Если ты обделался в одном вопросе,

А если нет?

VD>Вот только в них ты тоже можешь так же обделаться.

Ну волков бояться... Я уже даже написал, что у меня не короче.


VD>Ага. Вот одни всю жизнь 2 раза по 50, а другие 10 по 110. А некторые 10 по 200. Причем, как и в программировании все определяют гены.

Ставки повышены, не в пять раз N > C#, а в 10 или даже а 20. Рисковано.
Re[19]: Функциональное программирование в Nemerle
От: Аноним  
Дата: 22.05.07 17:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Когда кажется, крестись. Регекспов в Шарп нет. Есть библиотека выполняющая их в рантайме. Сами регулярные выражения являются отдельным языоком.

Регэкспов нет, а есть библиотека, которая выполняет их в рантайме. Их, которых нет. Загадочно.
Похоже имеется ввиду, что регэкспы есть, просто они не преобразовываются в готовый код при компиляции класса.
Re[16]: Функциональное программирование в Nemerle
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 22.05.07 17:51
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Спорить с вами konsoletyper, иногда все равно, что отнимать конфету у ребенка, слишком легко.


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

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

А>Зачем вопросы задавали, спрашивается, если ответов не хотели услышать? Ладно, предположу, что все-таки хотели.

Да потому что тебя давно забанить пора. Но так просто от тебя не отделаться. А то вона как какой-нибудь 15-летний молокосос начитается твоих бредней и будет потом всю жизнь Nemerle ненавидеть. А вдруг из него лет через 10-15 вышел бы крутой спец по ФЯ? Нет, либо тебя надо банить с полным отсечением ветки, либо дискредитировать. Правда, последнее вряд ли получится, т.к. ты ведёшь спор нечестными методами.

K>>И попрошу не оправдываться. Если нечем подтвердить свою компетентность в данном вопросе, попрошу демагогии не разводить.

А>Судья спрашивает у подсудимого — вы признаете себя виновным? И попрошу не оправдываться.
А>Да и что такого сложного в написании компилятора, в общем смысле, раз уж вы не уточнили какого именно?
А>И по-моему, в любом программистском ВУЗе, одна из курсовых, обязательно написание компилятора.

Да какой компилятор они там пишут? Так, поделки. И то, компилятор — это в лучшем случае. А так — интерпретатор какого-нибудь недопаскаля. Да и пишут они по старинке на каком нибудь C++.

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

А>Считаю, что код надо хранить поближе к данным, которые он обрабатывает.
WH>Это догма. Догмы до добра не доводят.
WH>Иногда это так. Иногда иначе.
WH>В случае с АСТ однозначно иначе.
A>Насчет догм считаю также. Насчет кода AST нет.


можно смело доверять опыту Wolfhound'у, а не тебе. Так же можно доверять опыту, например, разработчиков Nemerle, которые до него спроектировали не один язык и написали компиляторы для них.

K>>Где-то так:


K>>
K>>| Pl(fi, se) => con(Pl(fir.Conv(conv), sec.Conv(conv))
K>>

А>Оп-па, по количеству ввода Nemerle даже превзошел C#.

См. ниже.

K>>Только тут сразу происходит сопоставление по шаблону. А у тебя только возвращается результат.

А>Странно почему вам не пришло в голову, как же так возвращается результат, а сопоставление с образцом не происходит. Как же тогда работает программа, если результат возвращается не понятно, при каких условиях? Или все таки и у меня в данном случае есть сопоставление с образцом, только образец простой?

У тебя отсутствует код сопоставления с образцом. В версии для Nemerle он присуствует. Будь добр, добавь к своему коду сопоставление с образцом и покажи, что ты набираешь.

K>>И вообще, надо не забывать, что код труднее читать, чем писать. Я на сниппетах тебе такого нагородить на brainfuck могу, что ты потом всю оставшуюся жизнь в нём разбираться будешь.

А>Код труднее читать, чем писать, могу написать на редком языке, трудно понимаемую программу.
А>Гм. Не понял. Трудно понимаемую можно и на многих распространенных языках написать.

Вот ты как раз и даешь пример трудно понимаемого кода на C#.

K>>Во-вторых, варианты изначально так спроектирваны, чтобы поля опций записывались на одной строке с объявлением опции.

А>Понимаю, хорошие варианты хорошо спроектированы, им можно на одной строке. Плохие классы не так спроектированы — им нельзя.
А>class Mul { public Expr expr1, expr2; }

Классы не плохие, варианты — не хорошие. Они просто спроектированы для решения определённых задач.

K>>И отбивки между образцами никто не ставит. Это всё равно, что ставить отбивки между if-ом и его телом или меджу различными case'ами в switch'е.

А>Почему же ставят и часто, при определенном стиле форматирования.
А>
А>if (условие)
А>{
А>    тело
А>}
А>


Нет уж, согласно твоему подходу должно быть так:

if (cond1)
{

    body
    
}



K>>Кстати, допустимо всё это записать и так:

K>>Так что твоя арифметика никому ничего не доказывает.
А>Ситуация обратная. Сначала мне приводят форматирование на C# (например с множеством пустых строк), а я просто применяю примерно такой же стиль к Nemerle (что уже оказывается особо тяжким преступлением). Стили же приведенных вами фрагментов практически диаметрально противоположны.

Вот именно, что ты применяешь такой стиль формально. Фактически, ты нарушаешь своим подходом читадельность.

K>>Всё-таки ты невменяемый.

А>Сумашедший гений? Что вы на гениальности не настаиваю, хотя видеть подобный крен в эпитетах приятно.

Про гениальность никто не говорил. Это твои собственные домыслы. На лицо неограниченное самомнение и мания величия.

А>Впрочем, припоминаю, вы кажется уже хвалили мое умение искусно вести спор.


Не искусно, а нечестно.

K>>Что-то его функциональность сильно напоминает телепатию.

А>Не решились сказать, что напоминает сопоставление с образцом, решили сказать, что напоминает телепатию?

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

Твоя функция напоминает телепатию, т.к. слижком уж она угадывает твои желания, которые ты непосредственно в коде никак не описываешь.

И про паттерн-матчинг я тебе объяснять не собираюсь. Что это такое, и так прекрасно описано в статье.

K>>Кстати, очередные крики, что этот метод можно реконструировать, буду считать неконструктивом. Потому что нужно отвечать на вопрос, а не оправдываться.

А>Не все могут реконструировать, это я признавал.

Да, все мы идиоты, а один ты Великий! Куда уж нам, ничтожным, до вас, до изобретателей паттерн-матчинга для C#. До вас даже Роберт Милнер не дотягивает — ему вон для паттерн матчинга специальный язык пришлось придымывать — ML называется.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[19]: Функциональное программирование в Nemerle
От: Аноним  
Дата: 22.05.07 17:56
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, <Аноним>, Вы писали:


VD>Потому что это два разных термина. По смыслу они почти-что идентичны.

По смыслу они почти противоположны.

Демагогия, это обращение к народу, причем с аргументами, которые понятны и нравятся народу (впрочем, попробовал бы кто обратится с аргументами, которые бы народу не понравились). В каком-то смысле упрощение спора. Для народа, напоминаю, в широком смысле.

Например: Голосуйте за меня, каждый получит по квартире.

А софистика, это в каком-то смысле усложнение спора, введение новых более сложных понятий, возможно плохо связанных с предметом спора. Тонкая (то есть не всякий сразу еще и поймет) подмена предмета спора.

VD>Ага. Разные. Одно означает один из методов выработанный течением, второе приверженцов оного течения, а третье само течение.

Да, причем мне сказали, что я занимаюсь софистикой и ссылка именно на это слово отсутствовала в приведенных вами ссылках.

VD>Продолжашь пытаться применять демогогию? В этот раз пошел цитаты вырванные из контекста подсовывать.

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

Софист, это мудрец. Софистика разговор мудреца. Неустранимых противоречий с последующими определениями не вижу.

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

VD>Мы перешли на древне греческий? Если нет, то тебе прийдется пользоваться значениями слов из Русского языка.

Если бы мы перешли на древнегреческий, то все слова были бы древнегреческими.
Тем не менее происхождение слов помогает понять и их значение.
Re[15]: Функциональное программирование в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.05.07 22:53
Оценка: +2
Здравствуйте, konsoletyper, Вы писали:

K>PS: модераторы, куда вы смотрите. Это же явная провокация. Не сомневаюсь, что это очередное воплощение Kolhoz/GNU Zaurus. Баньте его к чёртовой матери!


Смотрим сюда. Я уже перестал отвечать этому троллю и забанил его первый IP-шник. Но товаришь похоже лезет или через прокси прошлый IP был 213.221.57.*, а предыдущий, забаненый 85.249.254.*. Правда все из Питера. Так что может просто динамика.

В общем, проще снести все к черту и не обращать внимание на этого тролля.
... << RSDN@Home 1.2.0 alpha rev. 637>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Функциональное программирование в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.05.07 22:53
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Это точно не Колхоз. Колхоз гораздо умнее.

WH>И уж точно Колхоз не станет защищать C#. Про C# Колхоз скорее скажет что-то типа: "Недоязычек для быдлокодеров."

Да, надо признать, при все троллевости и экстримизме Колхоза он хотя бы понимает, что защищает. Он точно не балб.
... << RSDN@Home 1.2.0 alpha rev. 637>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Функциональное программирование в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.05.07 22:53
Оценка:
Здравствуйте, rameel, Вы писали:

R>А как же широта взглядов и лекгость к изменениям Re[9]: Функциональное программирование в Nemerle
Автор:
Дата: 19.05.07

R>

Отнюдь, я просто показал широту своих взглядов и легкость к изменениям.


Ну, если только Колхоз решил намерянно дуру включить и по быдлее по защищать C#. Типа игра от обратного. У нас тут на форуме были такие "руссукие" быдляцки мешающие с дерьмом украинцев, но с украинскими IP-ишниками.

В общем, то у меня тоже такое подозрение возникло. Товарищь как-будтно специльно подставляется.
... << RSDN@Home 1.2.0 alpha rev. 637>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Функциональное программирование в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.05.07 22:53
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>А ваши компиляторы можно посмотреть?


Compiler-compiler
Автор: konsoletyper
Дата: 31.03.07

Где искать мой ты и сам догадашся. Плюс можешь еще мне записать работу над тем же Немерловым компилятором.

Что дальше?
... << RSDN@Home 1.2.0 alpha rev. 637>>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Функциональное программирование в Nemerle
От: Аноним  
Дата: 23.05.07 06:58
Оценка: +1 -1 :)
Здравствуйте, konsoletyper, Вы писали:

K>Здравствуйте, <Аноним>, Вы писали:


А>>Спорить с вами konsoletyper, иногда все равно, что отнимать конфету у ребенка, слишком легко.


K>А вот твои "вы" воспринимаются как ироничное снисхождение, попытка выставить себя интеллигентом.

Продолжу неконструктивно обращаться на вы. Кстати, что мешает, столь же иронично снисходительно отвечать и мне?

K>А то вона как какой-нибудь 15-летний молокосос начитается твоих бредней и будет потом всю жизнь Nemerle ненавидеть. А вдруг из него лет через 10-15 вышел бы крутой спец по ФЯ?

Да ну, если одной ветки от Анонима достаточно для дискредитации Nemerle и ФЯ, значит язык и сам подход слабые.
Я, кстати, так не считаю.

K>Нет, либо тебя надо банить с полным отсечением ветки, либо дискредитировать. Правда, последнее вряд ли получится

Спасибо за похвалу.

K>Да какой компилятор они там пишут? Так, поделки. И то, компилятор — это в лучшем случае. А так — интерпретатор какого-нибудь недопаскаля. Да и пишут они по старинке на каком нибудь C++.


K>Это я распознаю как уход от ответа. Вместо ответа на вопрос начинаются уточнения "что конкретно имели в виду?". Так играть можно до бесконечности. Хотя суть вопроса была всем ясна — тут высшей математики. Так что я делаю единственный возможный вывод — ты полный профан в плане написания компиляторов. Так что в таком споре:

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

K>можно смело доверять опыту Wolfhound'у, а не тебе. Так же можно доверять опыту, например, разработчиков Nemerle, которые до него спроектировали не один язык и написали компиляторы для них.

Wolfhound в своей защите не участвует, поэтому вам для начала, надо было бы указать какие компиляторы он разработал.
Что касается разработчиков Nemerle, то легко скачать исходный код Nemerle. И что мы там видим, например, в AST.n?
И варианты разносят на несколько строк, и данные инкапсулируют в классах. Так что многие разработчики Nemerle за меня в этих двух вопросах.
Версия Nemerle майская если что.

K>У тебя отсутствует код сопоставления с образцом. В версии для Nemerle он присуствует. Будь добр, добавь к своему коду сопоставление с образцом и покажи, что ты набираешь.

Я набираю over и выбираю какой метод переопределить. Описание метода вставляется по нажатию enter.

K>>>И вообще, надо не забывать, что код труднее читать, чем писать. Я на сниппетах тебе такого нагородить на brainfuck могу, что ты потом всю оставшуюся жизнь в нём разбираться будешь.

K>Вот ты как раз и даешь пример трудно понимаемого кода на C#.
Мысль то была в другом. Да код чаще читают, чем пишут, но разве код при написании и при чтении должен совпадать?
Вот уже приводилось, что набирается с клавиатуры при использовании intellisence.
ret con(new Pl(fir.(con), sec.(con));

Если ввести этот текст непосредственно в notepad разве можно легко понять что имеется ввиду? Особенно, через некоторое время.
Тем не менее в среде с intellisence он трансформируется во вполне читаемый код.
Также например и с вводом тел метода в одну строчку, после написания можно его автоматически отформатировать в нужный вид.
Мало, что ли форматтеров доступно...


K>Нет уж, согласно твоему подходу должно быть так:

K>
K>if (cond1)
K>{

K>    body
    
K>}
K>

Согласно моему? А где я приводил такой код?

K>>>Кстати, допустимо всё это записать и так:

K>>>Так что твоя арифметика никому ничего не доказывает.
А>>Ситуация обратная. Сначала мне приводят форматирование на C# (например с множеством пустых строк), а я просто применяю примерно такой же стиль к Nemerle (что уже оказывается особо тяжким преступлением). Стили же приведенных вами фрагментов практически диаметрально противоположны.

K>Вот именно, что ты применяешь такой стиль формально. Фактически, ты нарушаешь своим подходом читадельность.

Понял, когда форматируют мой код на C# поступают неформально, когда я форматирую также код на Nemerle, я поступаю формально.
Хотя если посмотреть на код AST.n можно ужаснуться количеству формалистов, среди разработчиков Nemerle.

K>Про гениальность никто не говорил.

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

K>Это твои собственные домыслы. На лицо неограниченное самомнение и мания величия.

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

K>У тебя уже неоднократно просили привети код метода Match, а ты этого не сделал, как всегда, ловко уйдя от ответа.

Как я уже писал, этот код помогает мне ощущать интеллектуальное превосходство.
Впрочем, может быть сделаю ASP.NET приложение, в котором можно будет вводить выражение, образец для сопоставления и выводить итог сопоставления.

K>А это значит только одно — никакого паттерн-матчинга ты не изобрёл.

А я где-то говорил, что изобрел? Отнюдь, просто реализовал.

K>В том числе, твоё утверждение про то, что ты понял паттерн-матчинг лучше нас

Пока у меня есть к этому основания. Пока тут ключевое слово. Вполне может быть, что меня опровергнут, пока же опровержения очень слабы типа
K> — откровенная ложь.

K>И про паттерн-матчинг я тебе объяснять не собираюсь. Что это такое, и так прекрасно описано в статье.

Так ли прекрасно? Я волне допускаю, что он нечто более сильное. То же, что описано в статье и на C# доступно.

K>Да, все мы идиоты, а один ты Великий!

Почему один? Я же писал, что многие могут восстановить.

K>Куда уж нам, ничтожным, до вас, до изобретателей паттерн-матчинга для C#.

Какой же изобретатель? Скромный реализатор.
Re[17]: Функциональное программирование в Nemerle
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 23.05.07 07:58
Оценка:
Здравствуйте, rameel, Вы писали:

R>А как же широта взглядов и лекгость к изменениям Re[9]: Функциональное программирование в Nemerle
Автор:
Дата: 19.05.07

R>

Отнюдь, я просто показал широту своих взглядов и легкость к изменениям.


Ага, а ещй вот это:

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


Помнится, Колхоз тоже бравировал тем, что понаписал кучу компиляторов и наизусть знает книгу дракона.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.