Re[8]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 16.02.06 15:30
Оценка: 48 (4) -7 :))) :)
Здравствуйте, IT, Вы писали:

WP>> Тоже мне "даже".


IT>А почему "Тоже мне"? Решарпер к 2003 студии по своим возможностям рвёт рефакторинг от MS в 2005 как тузик грелку. А за IDEA я вообще молчу. Так что кто лучше умеет делать IDE — это очень большой вопрос.


Лучшая IDE это Unix. А IDEA — игрушка. Бесполезная.
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: Gaperton http://gaperton.livejournal.com
Дата: 15.02.06 19:14
Оценка: 1 (1) +2 :))) :))) :))) :)
Здравствуйте, WinniePoh, Вы писали:

WP> Я вообще никогда и ни о чём не рассуждаю в терминах популярности. Это для меня новый (и неприятный) стиль мышления.


Философская мысль RSDN на 90% состоит из таких рассуждений. Действительно — о свойствах технологий рассуждать тяжело — читать надо, разбираться, и вообще — знать. Опять же, ляпнешь чего не то — местные пираньи в момент с дерьмом съедят. А о популярности может рассуждать каждый — и умнО, и классиков читать не надо. Удобно, в общем. Вылез очередной умник, а ты ему сразу в лоб — а раз это так хорошо, то почему им индусы не пользуются?! А?!! Захлопает умник глазами, и не найдет чего возразить.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 13:09
Оценка: 27 (4) +5
Здравствуйте, Mirrorer, Вы писали:

VD>> более дальновидные и умные смогут получить конкурентное приемущество используя Нэмерл в своей разработке для массового рынка использующего в основном C#.


M>Просто возникла аналогия http://www.nestor.minsk.by/sr/2003/07/30710.html


Блин, держался, держался, но уже утомили эти ссылки на одну и ту же историю, которую повторяют сотню раз. Да еще умники находятся, которые уровнем эрудиции гордятся, да других попрекают, мол книжки умные читать нужно, просвещаться, слова мудреные знать. Типа они все здесь Полы Грэхемы и это они систему на Lisp-е сбацали, раскрутили и Yahoo продали, да не по одному десятку мегабаксов на этом наварили. АГА! СЧАЗ! Были бы они такие умные, были бы такие бы богатые, как Пол Грэхем и здесь бы не чатились.

Почему-то никто не говорит, что на первом месте стоит не инструмент, не технология. Куда важнее идея, команда, воля, время и место. И большая удача. А инструмент должен быть таким, который позволяет конкретной команде без проблем воплотить конкретную идею. У Поля Грэхема таким инструментом был Lisp. У команды RSDN -- C# (и у RSDN@Home так конкурента на другой технологии нет и не будет).

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

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



Все вышесказанное является субъективным ИМХО.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 15:07
Оценка: 24 (3) +1 :))) :)
Здравствуйте, eao197, Вы писали:

E>Дык в том-то и дело. Когда говорят про макросы, у меня сразу возникает аналогия с макросами C (которые на самом деле часто помогают). Но когда приводишь эту аналогию, сразу возражения -- мол в этот раз все будет по другому, не нужно макросов боятся, это в C все было коряво, а здесь все иначе.


Макросы в Лиспе ничего общего не имеют с макрами в Си (а вот TeX-овые — прямая аналогия, отсюда и проблемы).

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


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

E>Вот Java даже попробовать макросы не дает. И какой эффект!


Отстойный эффект. Вокруг маленького сморщенного кодишки на Жабе наворачивается огромная колбаса из кривенько слева прилепленных макропроцессоров — Ant, Hibernate, JSP.

Озверевшие от отсутсвия макр Java-кодеры выдумывают себе суррогаты — AspectJ, Jatha.

Тогда как программисты, использующие Лисп, легко внедряют функциональность и Ant, и Hibernate, и JSP в сам язык,
да ещё без ущерба другой функциональности и без каких бы то ни было проблем с отладкой (каковые, например, даже в чистеньком AspectJ вылезают конкретно).

Так что вы бы почитали Грэма и Зибеля, полезно очень. Даже если потом всю оставшуюся жизнь на Жабе кодить будете — всё равно ЭТО надо знать.
Re: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 11:32
Оценка: 17 (2) +6
Здравствуйте, IT, Вы писали:

IT>1. Nemerle станет достаточно популярен и отберёт у C# существенную, а со временем возможно и всю нишу. MS будет курить в сторонке.

IT>2. MS прекратит баловаться всякими детскими штучками типа LINQ и начнёт развивать C# по взрослому. Тогда будет два конкурента, что есть гуд.
IT>3. MS купит команду Nemerle и конкуренция будут происходить в самой MS.

Не все так радужно. Как минимум есть еще пара вариантов:
4. Nemerle так и останется известен в очень узком кругу.
5. Когда с его использованием начнут делать большие проекты вылезет какая нибудь доколе неизвестная бяка.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 13:26
Оценка: +1 -1 :))) :)))
Здравствуйте, IT, Вы писали:

IT>Так как я много работаю с рефлекшином, то мне в языке наряду с typeof очень хотелось бы поиметь что-то типа memberof. Что страшного, если я это сделаю?


Ты? Ничего. А вот если нарисуется какой нибудь очередной Александреску и будет утверждать что вот это нагромождение символов — на самом деле легкочитаемая программа — будет страшно.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.06 14:55
Оценка: +2 :))) :)))
Здравствуйте, AndrewVK, Вы писали:

AVK>Я тебе даже больше скажу — AVK довольно широко использует и compile-time генерацию кода, можно сказать собаку на этом съел, потому и так настороженно относится к попыткам встраивать это в язык.


Собак надо есть с умом. Это я вам как потомственный кореец говорю.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.06 19:01
Оценка: 9 (2) :))) :))
Здравствуйте, Дарней, Вы писали:

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

Д>Если бы я не знал, что такое Немерле, я бы тоже какую-нибудь гадость написал

Точто! Надо так...

Мужики!... Тут на днях поручил своему сотруднику сделать сложную работу. Думал он неделю промучается, а он пишел на следующий день и сказал, что все сделано. Я его спрашиваю "Как?", а он мне, падонок такой, говорит, что использовал некий язык Нэмерл.

Что можно придумакть в области языков в 21 веке? Что за мозго...ство?

Толдычит про какие то синтатксические макросы, про каой-то паттерн-матчинг, про (хрен выговоришь) какой-то там Лист компрехеншон. И при этом, говорит, язык не сложнее шарпа.

Помогите вывести урода на чистую воду.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 21:25
Оценка: 3 (2) +5
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Вообще рассуждения о том, что MS не смогла/не хватило времени мне кажутся немного странными.


А полуживой WinFS, постоянная задержка выхода операционок и других продуктов тебе не кажется странной? Или ты думаешь там сидят боги и горшки обжигают, каждый менеджер мастер спорта по нагибанию девелоперов, а любой из архитекторов спроектировал в этой жизни по дюжине эклипсов?

ВВ>Сдается мне что они больше человекочасов потратили на исследование того какой формы должны быть закладки у "доканутых" окошек чем JetBrain на написание рефактора.


Как раз доканутые закладки они купили на стороне. Будешь знать
Если нам не помогут, то мы тоже никого не пощадим.
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.02.06 11:24
Оценка: +2 -3 :))
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Всё равно прийдёт Влад и скажет, что в ST невозможно сделать intellisens, а значит там нет ничего достойного внимания.


Очень часто можно не обращать внимания на Влада и его высказывания (в данной теме полно примеров). Но в том обсуждении ведь не только Влад участвовал
Я например, уже в этой теме, когда говорил, что для языка IDE -- это всего лишь инструмент, всегда хотел сделать комментарий, что Smalltalk в этом плане является исключением.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 15.02.06 13:34
Оценка: 73 (4) +2
Здравствуйте, AndrewVK, Вы писали:


AVK>Этого я и боюсь. В конце концов OpenC++ не вчера появился, а широкого признания все нет.


OpenC++ не работает. Для него проблемой являются даже не самые сложные программы на C++, он их не понимает. Плюс у него очень специфическая модель работы. Ты пишешь расширение на C++ и оно линкуется с OpenC++. В результате получаешь свой собственный уникальный "препроцессор". Я хочу сказать, что крайне негибкая модель. Да и по своему опыту могу сказать, что написать что-то мало-мальски сложное на OpenC++ невозможно. На Nemerle это в десятки раз проще, так как представление AST в OpenC++ слишком низкоуровневое и нет никакой возможности выбить из него больше информации об обрабатываемом коде.

AVK>Впрочем и с функциональщиной все не просто. Она тоже не есть безусловное добро, с ней крайне легко переборщить. Собственно, мне кажется что все (из тех что мне известны) функциональных языков таки переборщили. LINQ вроде бы еще нет.


На Nemerle можно писать полностью в духе C#, в первую очередь благодаря макросам. В core syntax(он фактически не используется, даже в компиляторе им и не пахнет) конечно функциональщины очень много(та же рекурсия вместо циклов). Но существующие макросы нивелируют разницу, а при желании ее еще можно и сократить. Конечно сделать из Nemerle С# 2.0 не выйдет, но значительно приблизить вполне может получиться. Вот только незачем. В Nemerle это настолько гуманный и ненавязчивый вариант, что бог с ним.

Еще меня как я помню раздражало, что у списков есть ряд синтаксических преимуществ по сравнению с другими структурами данных. Т.е. как раз не нравилось отсутствие "функциональщины" в других структурах данных. Списки я так думаю это очень удобно для компилятора(в котором они очень широко применяются), а вот для большинства других приложений не всегда. Да, для околофункциональных языков это общая проблема. Есть мысль, что в Nemerle она исправима на уровне библиотек и макросов.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 20.02.06 19:58
Оценка: 72 (5) -1
Здравствуйте, Воронков Василий, Вы писали:

BB>Так что есть подозрение что это не окажет решающей роли. А решающую роль как обычно может сыграть бОльшая простота языка с сохранением хороших возможностей, более высокая дуракоустойчивость... — в общем все то, благодаря чему си-шарп "лучше" С++. А вот как у Немерле с этим?


Дуракоустойчивость очень высокая. Nemerle вообще как цербер, вытряхивает всю душу разработчика еще на этапе компиляции. Даже зачастую не только указывает на ошибку, но и подсказывает что делать(особенно при написании макросов). Это вообще такая фирменная фишка, в других компиляторах я такого практически никогда не видел. Выводит также очень много разных ворнингов, значительно больше чем в C#. Поэтому скомпилированный без предупреждений и ошибок код обычно работает сразу. В добавок ко всему Nemerle часто вставляет собственные проверки исключительных ситуаций. Например match, продвинутый аналог switch-case, обычно заканчивается исключением если ни один из вариантов не прошел и дефолтного варианта нет(он в этом случае еще и предупреждение при компиляции выдает). Так что у Nemerle компилятор очень строгий и вольностей не любит.

А вот о простоте сложно судить. В ряде случаев язык проще C#, в ряде других такой же, а местами гораздо сложнее. Разработчики пропагандируют совсем другой стиль разработки. Именно поэтому например макросы break, continue и return запрятаны в Nemerle.Imperative. По умолчанию все поля иммутабельные. Для переменных и изменяемых полей используется ключевое слово mutable. В некоторых задачах такой подход дает преимущество, в других не дает.

К тому же надо учитывать, что Nemerle это надмножество C#, т.е. он и без макросов предоставляет большее количество возможностей. Многое просто не с чем сравнить в C#. Естественно, что чем больше возможностей тем больше времени нужно чтобы полностью их изучить. Для человека знающего только языки вроде C# и Java это будет довольно трудно. Для человека знающего хоть один функциональный язык(или другой язык с паттерн-мэтчингом и смежными возможностями, например Prolog) это будет намного проще. Для человека хорошо знающего и C#, и например один из языков семейства ML(я кстати ML знаю только чуть-чуть ) это будет тривиальной задачей.

Должен отметить, что по субъективным ощущениям код получается более читабельным и значительно короче чем на C#. Я думаю Nemerle вообще легко изучать по примерам.

Так что и "простоту" необходимо сравнивать именно на конкретных примерах, причем я считаю что лучше на обычном коде без макросов и прочих наворотов(и здесь Nemerle тоже дает фору C#).Интересного и жизнеспособного примера я придумать не смог(предлагайте свои идеи), но вот один нежизнеспособный, но поучительный мое больное воображение выдало. Конечно это образец плохого дизайна и вообще так писать код не стоит(например используется хардкодинг и публичные поля), но он наглядно демонстрирует некоторые отличия между Nemerle и C#.(Это я к тому, что не надо говорить как можно этот пример оптимизировать и улучшить, я скорее всего в курсе.) Цель примера не в решении какой-то задачи, а в демонстрации различия синтаксиса и возможностей. Пример одинаково неоптимален на обоих языках, так что все по честному.

Пример я сначала написал на Nemerle, а затем перевел на C#. При этом функциональность не идентична. Так JunkFood в Nemerle сделан вариантом, а не перечислением. Использование перечисления сделало бы код даже более кратким, но менее расширяемым(к варианту достаточно легко можно добавить различные свойства и методы). Еще в C# версии вместо списков массивы, но заменить списки массивами в Nemerle очень легко(размер програмы увеличится незначительно, просто со списками чуть-чуть красивее). А так програмы выдают в консоль один и тот же текст. По идее по коду должно быть достаточно легко понятно, что он делает. Но если что непонятно — спрашивайте.

Сначала код на C#(133 строки, 3181 символ):
using System;

enum JunkFood
{
    Hotdog,
    Hamburger,
    Cheeseburger,
    Chips,
    CocaCola
}

enum Currency
{
    USD,
    EUR,
    RUB
}

struct Price
{
    public double amount;
    public Currency currency;

    public Price(double amount, Currency currency)
    {
        this.amount = amount;
        this.currency = currency;
    }

    public Price ConvertTo(Currency otherCurrency)
    {
        // no conversion required
        if (currency == otherCurrency)
            return this;
        switch(otherCurrency)
        {
            case Currency.USD:
                if (currency == Currency.EUR)
                    return new Price(amount * 1.188, Currency.USD);
                else
                if (currency == Currency.RUB)
                    return new Price(amount / 28.22, Currency.USD);
            break;
            case Currency.RUB:
                if (currency == Currency.USD)
                    return new Price(amount * 28.22, Currency.RUB);
                else
                if (currency == Currency.EUR)
                    return new Price(amount * 33.52, Currency.RUB);
            break;
            case Currency.EUR:
                if (currency == Currency.USD)
                    return new Price(amount / 1.188, Currency.EUR);
                else
                if (currency == Currency.RUB)
                    return new Price(amount / 33.52, Currency.EUR);
            break;

        }
        throw new Exception("Convertion from " + currency.ToString() 
                + " to " + otherCurrency.ToString() + " not supported!");
    }

    public override string ToString()
    {
        string priceStr = amount.ToString();
        switch(currency)
        {
            case Currency.USD:
                 priceStr = "$" + priceStr;
            break;
            case Currency.RUB:
                priceStr = priceStr + " Rub.";
            break;
            case Currency.EUR:
                priceStr = priceStr + " Euro";
            break;
            default:
                throw new Exception("Invalid currency code: " + currency.ToString());
        }
        return priceStr;
    }
}

class JunkPrice
{
    public JunkPrice(JunkFood junk, Price price)
    {
        this.junk = junk;
        this.price = price;
    }
    public JunkFood junk;
    public Price price;
}

class Test
{
    delegate JunkPrice JunkPriceConvertor(JunkPrice junk);
    public static void Main()
    {
        JunkPrice[] prices =
            new JunkPrice[]
                 {
                     new JunkPrice(JunkFood.Hotdog,       new Price(0.4, Currency.EUR)),
                     new JunkPrice(JunkFood.Hamburger,    new Price(1.3, Currency.USD)),
                     new JunkPrice(JunkFood.Cheeseburger, new Price(38 , Currency.RUB)),
                     new JunkPrice(JunkFood.Chips,        new Price(0.3, Currency.EUR)),
                     new JunkPrice(JunkFood.CocaCola,     new Price(0.5, Currency.USD))
                 };

        foreach(JunkPrice junk in prices)
            Console.WriteLine("(\"{0}\", {1})", junk.junk, junk.price);

        Console.WriteLine("-------------------");

        JunkPrice[] rubPrices =
            Array.ConvertAll<JunkPrice,JunkPrice>(prices, 
            delegate(JunkPrice junk)
            {
                return new JunkPrice(junk.junk, junk.price.ConvertTo(Currency.RUB));
            });
        foreach(JunkPrice junk in rubPrices)
            Console.WriteLine("(\"{0}\", {1})", junk.junk, junk.price);
        try
        {
            Price intentionalFailure = new Price(0.5, (Currency) 55);
            intentionalFailure = intentionalFailure.ConvertTo((Currency) 32);
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
}


Теперь Nemerle(93 строки, 2220 символов, ~ в 1.4 раза меньше по обоим параметрам):
using System;

variant JunkFood
{
    | Hotdog
    | Hamburger
    | Cheeseburger
    | Chips
    | CocaCola
    public override ToString() : string
    {
        match(this)
        {
            | Hotdog => "\"Hotdog\""
            | Hamburger => "\"Hamburger\""
            | Cheeseburger => "\"Cheeseburger\""
            | Chips => "\"Chips\""
            | CocaCola => "\"CocaCola\""
        }
    }
}

enum Currency
{
    | USD
    | EUR
    | RUB
}

[Record]
struct Price
{
    public amount : double;
    public currency : Currency;
    public ConvertTo(otherCurrency : Currency) : Price
    {
        match((otherCurrency, currency))
        {
            // no convertion required
            | (_, _) when (otherCurrency == currency) => this
            | (USD, EUR) => Price(amount * 1.188, Currency.USD)
            | (USD, RUB) => Price(amount / 28.22, Currency.USD)
            | (RUB, USD) => Price(amount * 28.22, Currency.RUB)
            | (RUB, EUR) => Price(amount * 33.52, Currency.RUB)
            | (EUR, USD) => Price(amount / 1.188, Currency.EUR)
            | (EUR, RUB) => Price(amount / 33.52, Currency.EUR)
            | _ => throw Exception($"Convertion from $currency to $otherCurrency not supported!")
        }
    }

    public override ToString() : string
    {
        match(currency)
        {
            | USD => $"$$$amount"
            | RUB => $"$amount Rub."
            | EUR => $"$amount Euro"
            | _   => throw Exception($"Invalid currency code $currency")
        }
    }
}

module Main
{
    Main() : void
    {
        def prices = [(JunkFood.Hotdog(),       Price(0.4, Currency.EUR)),
                      (JunkFood.Hamburger(),    Price(1.3, Currency.USD)),
                      (JunkFood.Cheeseburger(), Price(38,  Currency.RUB)),
                      (JunkFood.Chips(),        Price(0.3, Currency.EUR)),
                      (JunkFood.CocaCola(),     Price(0.5, Currency.USD))];

        foreach(junk in prices)
            Console.WriteLine(junk.ToString());

        def rubPrices =
            prices.Map(fun(junk, price) { (junk, price.ConvertTo(Currency.RUB)) });

        Console.WriteLine("-------------------");

        foreach(junk in rubPrices)
            System.Console.WriteLine(junk.ToString());
        try
        {
            mutable intentionalFailure = Price(0.5, 55 :> Currency);
            intentionalFailure = intentionalFailure.ConvertTo(32 :> Currency);
        }
        catch
        {
            | ex => Console.WriteLine(ex.ToString());
        }
    }
}
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 17.02.06 18:20
Оценка: 50 (2) +4
Здравствуйте, AndrewVK, Вы писали:

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


Тогда должно быть страшно прямо сейчас. Уже сейчас многие хотят метапрограммирование в .NET, но использовать для этого приходится Reflection.Emit (ну некоторые ещё R# для этого пишут или уже "писали"?...). И вот код для runtime code generation на C# имхо получается гораздо страшнее, чем макросы Nemerle... про отладку я вообще молчу.

Я это к тому, что люди всё равно хотят обобщать и будут это делать любыми доступными средствами. Так что Nemerle даже с точки зрения красоты "кода, генерирующего код" получается гораздо приятнее того же C#.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.02.06 13:29
Оценка: 25 (3) +1 :))
Здравствуйте, WinniePoh, Вы писали:

WP> Вы меня пугаете. Какое такое всё? Это за пару семестров вдалбливается тривиально. А если человек уже отучился, мозги натренировал, то за пару месяцев.

Парадигму на пустом месте не впихнешь. Человек — не машина, ему надо за что-то зацепиться. Заучить конспекты лекций за два семестра — можно. Понять программирование можно исключительно при помощи практики. Иначе мы получим бодхисатву, "которому не надо программировать для воплощения своих идей". А проку от такого бодхисатвы с его Внутренним Неисчерпаемым Адресным Пространством ровно нуль, т.к. внешних проявлений у него не наблюдается.
WP> Время надо было раньше тратить. Когда оно было.
А когда оно было? Нет, теперь мне конечно кажется, что во время учебы я неприлично много отдыхал... Тем не менее, вряд ли можно было существенно увеличить эффективность проведения того времени без значительных потерь для других аспектов моей личности. К примеру, теперь я читаю около десятка художественных книг в год. В студенчестве — около 100.
WP> Как уже тут обсуждалось, работающий студент — пропавший для общества студент. Отработанный материал. Социальный труп...
Ну, студенту рано или поздно все-таки придется начать работать. Ибо иначе мы опять получаем много-много эффективно усвоенных знаний на входе и полный нуль на выходе.
WP> Перевернут. Всё это вместе убьёт индусов. Кодирование станет настолько простым и автоматизируемым делом, что недоучки из программирования вылетят, улицы подметать пойдут или бигмаками торговать. И это будет радость великая!
Забавно. Я лично в это не верю, т.к. исторический опыт показывает обратный эффект. Упрощение программирования впустит на этот рынок тех, кто до сих пор не может освоить даже настройку радиоприемника. Тот миллион индусов, которые сейчас пишут код для нашего с вами развлечения, станут мега-архитекторами в командах их умственно отсталых, и будут по вечерам рассказывать страшные истории, как в 2005 они писали исходные тексты на неподъемно страшно сложном VB.NET!
Если народ уже теперь жалуется на то, что дотнет, дельфи и ВБ недостаточно сложны для отсечения недоумков, то что же начнется, когда программирование станет еще более простым и автоматизируемым делом?
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[30]: Новая версия макроса
От: Vermicious Knid  
Дата: 22.02.06 12:35
Оценка: 23 (1) +5
Здравствуйте, eao197, Вы писали:

E>В C++ для подобных экспериментов изобрели Boost. В .NET-е, похоже, Nemerle с макросами.

E>Впечатление почему-то от исходников того и другого одинаковое

На мой взгляд ты слишком предвзят. Увидел строчек 30 простейшего кода(из которых половину можно вынести в нормальный реюзабельный класс/функцию) и сравниваешь с бустом, где в тридцати строчках вообще ничего приличного не реализовать. В Nemerle весь компилятор, вместе со всеми стандартными макросами это всего-лишь 1.5 Mb кода, сравни с десятками мегабайт буста. Я уже не говорю о том, что этот макрос делает то, что в других языках(не будем вспоминать о Lisp) просто принципиально невозможно. И вообще boost это прикладной код. Если сравнивать Nemerle и C++ по прикладному коду, то по читабельности это как небо и земля.

Да и о чем ты говоришь, когда Oyster написал этот код буквально по исходникам компилятора, да еще только что начав изучать сам язык. Ты кстати изучал когда-нибудь исходники GCC? Ты в состоянии за пару часов набросать такое расширение синтаксиса для C++ изменив GCC? Я думаю ты возразишь, что написать макрос и поменять код компилятора это не тоже самое. Но для Nemerle это практически тоже самое, так как макросы это по сути плагины для компилятора. И расширяемость архитектуры компилятора не в последнюю очередь говорит в пользу Nemerle.

Кстати люди обычно годами осваивают C++, мне например понадобилось почти пять для того чтобы научиться свободно читать исходники буста и писать аналогичный шаблонный код. У меня кстати даже эти самые исходники буста не вызывают никакого отторжения(код там достаточно простой и понятный, просто когда пишешь что-то сложное на C++ приходится писать слишком много мусорного кода. Сложность там в первую очередь возникает из-за количества, а не качества кода), но тем не менее любой код на Nemerle в разы проще и понятнее.

Твои сравнения просто смешны. Если ты не хочешь писать макросы на/в Nemerle — не пиши их. Если ты найдешь инструмент лучше Nemerle, то используй его. Я такого инструмента не знаю. Если тебе не нравится что-то конкретное — обсуди это с разработчиками языка. Если тебе не нравится все, тогда напиши лучше. Если не можешь написать лучше или сказать что-то конструктивное, то займись чем-нибудь более полезным.
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 21:31
Оценка: +1 :))) :))
Здравствуйте, WinniePoh, Вы писали:

WP> И тут же появится форк. Такое много раз было.


Из чего следует вывод — Nemerle бессмертен
Если нам не помогут, то мы тоже никого не пощадим.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 03:54
Оценка: 49 (4) +1
Здравствуйте, McSeem2, Вы писали:

IT>>Тут другой случай — исходнички то вот они


MS>Есть в этом поинт. Но с другой стороны, как показывает практика? Как только основная движущая сила удовлетворяет свой желудочный инстинкт, проект постепенно загибается, несмотря ни на какие исходники.


Похоже что этим занимаются не простые опенсоурщики типа меня в свободное вместо работы время, а серьёзные ребята из Варшавского университета и занимаются этим фултайм. Если проект пойдёт в массы, то дальше заиграют амбиции и желающих преобщиться будет в избытке. А пойти может. Очень всё удачно выбрано. Практически всё напоминает историю с C++:

1. Похожий синтаксис уже массово-раскрученного языка (C/C++, C#/Nemerle), что даст лёгкий порог вхождения для широких масс.
2. Море готового к использованию кода (бинарная совместимость C++ с C и весь .NET код в распоряжении Nemerle).
3. Наличие мелких, но очень приятных вещей из-за которых уже не хочется обратно. Я начинал писать на плюсах в стиле С, но пока въезжал в ООП уже использовал такие феньки, как объявление локальных переменных по месту Мелочь, а приятно. В Nemerle такими феньками поначалу может стать, например, вывод типов.
4. Наличие новой парадигмы, которая, в отличии от других реализующих такую же парадигму языков, становится ненавязчиво доступной и может постигаться постепенно, а не требовать сначала досконально себя изучить. В плюсах это был ООП, в Nemerle — функциональщина и макросы.

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

В общем, пока всё выглядит в радужном свете. Фактически, дело осталось только за поддержкой IDE. Влад правильно сказал, в нотепаде сегодня такие мегафичи нафик никому не нужны.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 16.02.06 10:42
Оценка: 41 (4) +1
Здравствуйте, eao197, Вы писали:

E>А не напомнишь (подскажешь?) эти макросы каким-нибудь по пространствам имен можно распределить?

Можно. Собственно даже встроенные макросы часто сидят в специально отведенных для них пространствах имен. Например есть пространство Nemerle.Imperative(там лежит например return), или скажем Nemerle.Extensions.

Если речь идет о макросах c custom-синтаксисом, то если их определение находится внутри пространства имен, их нужно подключать через using, иначе они вообще недоступны(например пресловутые return, break и continue). Если речь идет о макросах, вызывающихся напрямую(т.е. как функции или атрибуты), то можно в вызове указывать полный путь до макроса. Например Nemerle.Extensions.DefaultValue, или например Nemerle.DesignPatterns.Proxy.

E>И вот третьий разработчик пытается использовать две предыдущие библиотеки в своем проекте и оказывается, что ему нужно в одном контексте использовать оба declare_stable_attr. Как он может их индентифицировать (например, lib_one.declare_stable_attr и lib_two.declare_stable_attr) и не будет ли здесь проблем?

Если это не расширение синтаксиса, то проблем не будет. С расширениями синтаксиса все несколько сложнее. Если они конфликтуют друг с другом, то совместно их использовать невозможно, а подключать пространства имен можно только на уровне пространств имен/единиц трансляции(так как такие макросы изменяют логику парсера). Как дела обстоят с разрешением конфликтов для макросов со спец-синтаксисом я не в курсе(пока необходимости не было).

Т.е. например если у нас два разных макроса var(например в My.Sugar и Dudes.Sugar), то можно только так:
namespace X
{
    using My.Sugar;
    module M
    {
        f() : void
        {
            var x = 0;
        }
    }
}
using Dudes.Sugar;
module M
{
    f() : void
    {
        var x : int "pseudo-comment, a pseudo-neat feature in dude's var macro";
    }
}


А вот если бы макрос var определялся бы как обычный макрос(просто macro var(body), без syntax) и было бы два таких макроса, то все было бы намного проще:
My.Sugar.var(x = 0);
Dudes.Sugar.var(x : int "pseudo-comment, bla-bla-bla");
Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 02:18
Оценка: 38 (3) +1 :)
Здравствуйте, McSeem2, Вы писали:

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


MS>А знаешь почему? Потому что ни грамотные менеджеры, ни грамотные программисты банально не выгодны. Они — как белые вороны. Индустрии выгоден дилетантизм и профанация.


Да прекращай ты народ и самого себя запугивать. Ничего никому не выгодно. Всё течёт и развивается своим естественным путём. Посмотри хоть на проект Nemerle. У этого проекта есть только три варианта развития:

1. Nemerle станет достаточно популярен и отберёт у C# существенную, а со временем возможно и всю нишу. MS будет курить в сторонке.
2. MS прекратит баловаться всякими детскими штучками типа LINQ и начнёт развивать C# по взрослому. Тогда будет два конкурента, что есть гуд.
3. MS купит команду Nemerle и конкуренция будут происходить в самой MS.

Но, в любом случае, у MS нет шансов остановить этот процесс. Через год-два на Nemerle начнут делаться большие проекты, через три-пять функциональщина и макросовщина начнут становиться такой же привычной вещью в мейнстриме, какой 15 лет назад становился ООП. Те, кому выгодна профанация остановить это не смогут. Да и невыгодна она никому.

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

Но это не потому что нас окружили со всех сторон злобные инопланетяне, и патаются внедрить в индустрию делетантов. Это нет от их большого ума. Это от технической малограмотности менеджеров. Им нужен банальный лекбез, тогда и делетантов с землекопами уменьшится и глупых выводов насчёт злобных марсиан не будет появлятся.
... << RSDN@Home 1.2.0 alpha rev. 0>>

15.02.06 13:29: Ветка выделена из темы Поштучно говоришь...
Автор: McSeem2
Дата: 13.02.06
— VladD2
Если нам не помогут, то мы тоже никого не пощадим.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 21.02.06 09:50
Оценка: 34 (2) +1 -2
Здравствуйте, Vermicious Knid, Вы писали:

VK>Пример я сначала написал на Nemerle, а затем перевел на C#. При этом функциональность не идентична. Так JunkFood в Nemerle сделан вариантом, а не перечислением. Использование перечисления сделало бы код даже более кратким, но менее расширяемым(к варианту достаточно легко можно добавить различные свойства и методы). Еще в C# версии вместо списков массивы, но заменить списки массивами в Nemerle очень легко(размер програмы увеличится незначительно, просто со списками чуть-чуть красивее). А так програмы выдают в консоль один и тот же текст. По идее по коду должно быть достаточно легко понятно, что он делает. Но если что непонятно — спрашивайте.


VK>Сначала код на C#(133 строки, 3181 символ):

/.../
VK>Теперь Nemerle(93 строки, 2220 символов, ~ в 1.4 раза меньше по обоим параметрам):
/.../

Ключевое слово — выделено. Даже в С#, как и в других (квази)-ООЯ, можно воспользоваться встроенными механизмами для сокращения всех этих switch. Например (это скорее непроверенный псевдо-код, к модификаторам доступа и типам попрошу не придираться):
class Currency {
    static public Currency UAH = new Currency("UAH", 1.0);
    static public Currency USD = new Currency("USD", 5.05);
    static public Currency EUR = new Currency("EUR", 6.06);

    Decimal rate;
    String isoName;

    public Currency(String isoName, Decimal rate) {
        this.isoName = isoName;
        this.rate = rate;
    }
    
    public ToString() {
        return isoName + "/" + rate;
    }
}

class JankFood {
    String name;
    public JankFood(String name) {
        this.name = name;
    }
    
    public ToString() {
        return name;
    }
}


class Price {
    JunkFood food;
    Currency currency;
    Decimal amount;

    public Price(JunkFood food, Currency currency, Decimal amount) {
        this.food = food;
        this.currency = currency;
        this.amount = amount;
    }
    
    public Price ToCurrency(Currency newCurrency) {
        return new Price(food, newCurrency, amount*currency.rate/newCurrency.rate);
    }
    
    public String ToString() {
        return food.name + ": " + amount + " " + currency.isoName;
    }
}


Тут я схалявил — просто отдельный класс для Price и для JunkFoodPrice мне писать лень. Идея понятна и без этого. Кстати, курсы не забиты гвоздями-сотками в код, но при желании можно сделать и это .
Я не знаю как ты считал строчки кода, но в любом случае, это лучше чем тот кусок спагетти, что привёл ты.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[24]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.06 18:35
Оценка: 33 (2) +2 :)
Здравствуйте, Sinclair, Вы писали:

S>Более того, как я понимаю, немерле позволяет абстрагироваться на уровне отдельного исходника. Отлично — хочется тебе применить сразу два расширения к одному классу — так вперед, partial class и дело в шляпе. Ситуация, когда тебе захочется иметь два противоречивых расширения в пределах одного метода, по моему мнению возникнуть не может. Она сродни желанию придать одновременно два смысла оператору +. Так что на первый взгляд есть полный набор средств защиты от нежелательного секса. Все, как в жизни:



Кстати, а кто мешает используя один макрос создать еще одни оберточный? Ну, мало ли пересеклись у нас имена. Ну, создам обертку для чужого макроса.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 20.02.06 08:09
Оценка: 32 (2) +3
Здравствуйте, AndrewVK, Вы писали:

AVK>Я не понимаю чем тут восторгаться. Ты Форт выдел? Там то же самое, даже еще круче. И это его и убило.


Нет, в Форте не то же самое. Форт — язык интерпретируемый, без строгой типизации. И без синтаксиса — там просто есть слова, работающие с двумя стеками — и всё. А определение нового слова — всего лишь добавление строки в словарик.

В Nemerle совсем не так всё сделано — тут тебе и строгая типизация, и проверка корректности макросов на этапе компиляции, и вменяемые диагностические сообщения... И никакой чехарды со стеком.

Имхо один из ключевых недостатков Форта — необходимость постоянно держать стек в мозгу при кодировании (на Форте почти всегда приходится писать состояние стека после операции в комментах к операции, чтобы не запутаться). Кстати, у Лиспа подобный недостаток, только в голове приходится держать AST (снова имхо).
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 12:33
Оценка: 1 (1) +2 :))
Здравствуйте, GlebZ, Вы писали:

IT>>Но, в любом случае, у MS нет шансов остановить этот процесс. Через год-два на Nemerle начнут делаться большие проекты, через три-пять функциональщина и макросовщина начнут становиться такой же привычной вещью в мейнстриме, какой 15 лет назад становился ООП.

GZ>Лиспу это не помогло

А что с ним стало то? Живет он, да чтоб я так жил. Секретное оружие крутых разработчиков. Мощный инструмент и не
должен быть популярным — не каждый индусик им адекватно воспользуется.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 17.02.06 01:09
Оценка: 1 (1) :))) :)
Здравствуйте, WinniePoh, Вы писали:

WP> Лучшая IDE это Unix.


Во-во. Особенно меня там возбуждает рефакторинг ядра при добавлении в систему каждого нового драйвера.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 17.02.06 07:46
Оценка: 1 (1) +4
Здравствуйте, VladD2, Вы писали:

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


Это была не самоцель, а не обходимость. Увы и ах, сказывается отсутсвие нормальной ньюсо-читалки под виндоус.

VD>Ну, вот я один из них. Меня совершенно не пугаюта возможности, а синтаксис, точнее его отсуствие пугает. Ну, не хочу я программировать в AST. И думаю, что 99% других людей тоже не захотят.


VD>В общем, разговор про Лисп нужно закрыть.


Это форум "Философия программирования" нужно закрыть. Кому какой язык кому нравится, пусть берёт и пользуется, и молчит себе в тряпочку.

VD>Этот язык существует 50 лет и не завоевал реальной популярности. И не нужно искать проблемы в головах людей попутно оскорбляя их.


Влад, "философия" и подразумевает поиск проблемы в голове, а не в клозете.

VD> Если тебе нравится Лисп и ты считашь его подходящим для тебя, то бери и пользуйся им. Я этого делать принципиально не хочу.


Кесарю — кесарево.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 21.02.06 11:06
Оценка: 1 (1) +1 :)))
Здравствуйте, eao197, Вы писали:

ANS>>А разница могла бы быть в процессе разработки.


E>Интересная ссылочка. Ее бы в тему Проектирование и рефакторинг
Автор: VladD2
Дата: 09.02.06
...


Всё равно прийдёт Влад и скажет, что в ST невозможно сделать intellisens, а значит там нет ничего достойного внимания.

Кстати, по теме
Автор: VladD2
Дата: 17.09.05
:

ANS> Проще новый язык разработать без старого багажа.

Не, ну, нужно все же более трезво смотреть на реальность. Что проще? Он уже есть!

ANS> Типа Z#, а C# объявить устаревшим Это как раз вписывается в популярную в нынешней индустрии схему "раз в пять-сем лет — новый язык".

Дык есть C# 1.х, есть C# 2.х, и будет C# 3.х. Это три разных языка имеющие обратную совместимость сверху вниз. При этом ты можешь писать на C# 1.х используя компилятор и среду от 3.х. Что еще нужно? Тебя же никто не заставляет использовать неудобные или непонятные по твоему мнению констркции?


И вот через полгода, мы узнаём, что C#3 устарел, смысла ждать C#4 нет и вообще. С буковкой я, конечно, ошибся, но использование "N" вместо "Z" вполне логично — остаётся еще куча буковок на развитие.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: vitaly_spb Россия  
Дата: 15.02.06 17:46
Оценка: +4 :)
IT>Вам не повезло с американской стороной. Правильные американские стороны сегодня пишут в объявлениях на работу — расзаботчиков с ВБ бэкграундом просьба не беспокоить.

Правильные — это те что деньги правильные платят Так что повезло
...Ei incumbit probatio, qui dicit, non qui negat...
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 16.02.06 15:23
Оценка: -1 :))) :)
Здравствуйте, eao197, Вы писали:

WP>> Некоторые и на ровном месте ноги ломают. Что теперь, всем на всякий случай на костылях ходить?


E>

E>Забавно, что все начинающие курильщики так и думают. По себе знаю
E>Ну ладно, с этим пора заканчивать.

Да понимаете ли в чём дело. Я далеко не начинающий. Кстати, курить 2.5 года назад бросил.

И мой опыт подсказывает, что макры рулят. А этого опыта очень даже не мало.

WP>> Нет. Они ремесленники, или лабухи. Если сравнивать маляра Вову Сидорова и Анри Матисса, то профессионалом я первого не назову, пусть он даже любимец всего ЖЭКа.


E>Если говорить конкретно про Матисса, то... как бы это помягче... В общем, Вова Сидоров может оказаться и более талантливым.


Матисса надо живьём смотреть, а не в репродукциях. Это важно.

E>И что ты можешь мне здесь возразить? Что Матисс популярен и широко признан как талантливый художник?


Я сам над ним посмеивался (а над Малевичем и сейчас угораю, хоть и видел живьём как минимум 5 его квадратов). Но когда посмотрел в натуре (в Tate Modern, в San Francisco Museum of Modern Arts, в Помпиду) — очень даже проникся.

Если не нравится конкретно Матисс — заменим на Шагала, или на моего любимого Дали.

E>>>Но если мы хотим выпустить инструмент для разработчиков (IDE к примеру), то на что нам нацеливаться? На небольшой рынок средств разработки для Lisp, OCaml или Smalltalk (где и так конкуренция серьезная). Или же на постоянно растущий рынок мейнстримовых языков? Та же Java, тот же C#. Так уж повелось, что чем больше рынок, тем он привлекательнее. Хотя и не для всех.


WP>> Я глубоко убеждён, что рынка средств разработки вообще не существует. Не место тут рынку.


E>А разве IDEA -- это бесплатный продукт? Или Visual Studio?


Они умрут. Скоро.

E>Может быть я ошибаюсь, но разве большинство промышленных средств разработки для Smalltalk не являются коммерческими?


Нишевой продукт.

E>Одна из лучших оконных библиотек для C++, Qt, далеко не бесплатна.


Умрёт.

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


Это несколько иной рынок.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 16.02.06 15:29
Оценка: :))) :))
Здравствуйте, VladD2, Вы писали:

VD>У Лиспа одна проблема. Читать код на нем практически не возможно.


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

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

VD> Плюс язык с динамической типизацией и кучей своих жучковв.


Кто запретил приделать к Лиспу строгую типизацию? Лично мне никто не запрещал, чем и пользуюсь цинично.

VD>В прочем, те кто счел все это не существнным с удовольствием пользуется Лиспом и считает его лучшим средством. Проблема толко в том, что они в меньшенстве на протяжении уже 50 лет.


Профессионалы всегда в меньшенстве. Лабухов-ремесленников гораздо больше.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 17.02.06 01:09
Оценка: +5
Здравствуйте, WinniePoh, Вы писали:

WP>Вам просто не хватило способностей для того чтобы перестроить своё мышление.


Вот, опять началось! "Ты такой умный, тебе череп не жмёт?" (c)
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 12:13
Оценка: +5
Здравствуйте, VladD2, Вы писали:

AVK>>А ты сам что, возьмешься эту грань определять?


VD>Я могу делиться своими ощущениями. И то что я уже наблюдаю мне кажется не очень объективным мнением. Возможно я ошибаюсь.


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

AVK>>Чего ж не сказал какой? Неужели LISP. Или ты за таковое шаблоны С++ принимаешь?


VD>Два ты уже назвал сам. Еще есть ОКамл и Нэмерл.


ОКамл я бы мейнстримом не назвал. А Nemerle пока еще на уровне экспериментов и уж точно не мейнстрим.

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


VD>Я ничего не считаю идеалом.


Чего же тогда не ответил на вопрос, какие есть недостатки у Nemerle как языка?

VD> Ни C#, ни Nemerle, ни что другое. Я делюсь мнением полученым на базе собственного аналиа. А вот твой скепсис основан на твоем скепсие, ведь у тебя нет времени... Тогда что выражать мнение основанное не на чем?


Мое мнение основано на том, что тут приводили и прочтении нескольких страниц на nemerle.org. Ты сам о многих языках знаешь немногим больше, тем не менее тебя это почему то не смущает.

VD> Глядишь разберешся и наши мнения совпадут.


А если нет?

VD>Меня настораживает другое. Ты уже начал воспринимать его в штыки даже не поглядев его как следует.


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

VD> Ну, это же явная предвзятость.


Нет Влад, это явная флеймовость — воспринимать все через призму за/против.

VD>Мот ты и прав, и Нэмерл никуда не годен


Заметь, я такого никогда не говорил.

VD>А так мы ограничиваем просто из-за своего скепсиса.


Каким это образом?
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[24]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.06 18:35
Оценка: :))) :))
Здравствуйте, eao197, Вы писали:

E>Самое забавное в данном обсуждении то, что ярыми защитниками Nemerle являются те, кто на нем еще не пишет (видимо, это способ самовнушения о правильности собственного выбора). Насколько я помню, Vermicious Knid (кто реально щупал Nemerle) прогнозов как раз не делает.


Что характерно ярые противники Nemerle вообще на нем ни строчки не написали.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 17.02.06 17:02
Оценка: 84 (4)
Здравствуйте, eao197, Вы писали:

E>И как теперь твои слова воспринимать?

E>Речь шла о том, что какой-то безобидный код:
E>
E>namespace X
E>{
E>    using Your.Sugar;
E>    module M
E>    {
E>        f() : void
E>        {
E>            def persistence_marker = 0;
E>            ...
E>        }
E>    }
E>}
E>

E>работал себе нормально до тех пор, пока не обновили версию Your.Sugar, в которой за именем persistence_marker вдруг оказался спрятан синтаксический макрос. И что? Браться за рефакторинг?

Произойдет ошибка компиляции, а что ты ожидал?(кстати почти все макросы которые я приводил содержат в том числе и контроль ошибок, и обычно выводят вполне понятное и читабельное сообщение об ошибке) Ведь persistence_marker это теперь ключевое слово(если это просто имя макроса, то ошибки не будет). Ты ведь не удивляешься если C++ компилятору не понравится что-нибудь вроде int break = 0;

Но у меня есть ряд замечаний и по сути обсуждаемой темы:

Во-первых ты как-то превратно понимаешь термин "синтаксический макрос". В Nemerle практически все макросы можно назвать синтаксическическими(так же как и макросы лиспа и схемы), так как они все могут читать и изменять AST. То, что ты имеешь в виду это не синтаксический макрос, а скорее непосредственное внедрение в логику парсера языка.

Отвлечение от темы:

Есть в Nemerle еще более ужасный ужас — произвольные операторы, переопределение операторов и макро-операторы(вообще работает как убер-переопределение), вот с ними мама не горюй что можно наворотить. Кстати на самом деле существует множество языков с подобными возможностями. Например Prolog или Haskell. Не знаю в чем дело, но на их присутствие никто никогда не жаловался. Возможно потому, что это не так часто используется как ты думаешь и в основном для ряда проверенных временем идиом. Например parser combinators в Haskell или DCG в Прологе.

Есть пара вещей, которые ты возможно не знаешь и потому не берешь в расчет.

1. Сложный макрос не так просто написать и использовать. В C++ ты пишешь макрос непосредственно в единице трансляции и alles kaput, эффект затрагивает весь остальной текст.

В Nemerle ты пишешь макрос обычно отдельно от прикладного кода, компилируешь в отдельную сборку. Т.е. никакого случайного макроса в third-party сборке быть не может(если это не библиотека макросов), конечно если она не не использует весь компилятор Nemerle(и как следствие тащит за собой Nemerle.Compiler.dll, Nemerle.dll, Nemerle.Macros.dll, нехилая зависимость между прочим). Преждая потенциальный вопрос скажу — то, что имена пространств имен могут совпадать в разных сборках это конечно засада, но это неотъемлемая фича.NET. Может быть разработчиком следовало бы пересмотреть модульную систему для макросов.

2. Если ты хочешь написать нечто гарантированно ломающее компиляцию — ты это напишешь. Я думаю даже на C# можно подсуетиться. Там например есть условная компиляция.

3. Даже макросы внедряющиеся в парсер бывают разные. Например custom-модификатор для классов гарантированно не всплывет в параметрах, объявлениях методов или в теле функций.

4. Даже сами разработчики в большинстве случаев не добавляют custom-синтаксис, а ограничиваются лишь обычным макросом и я с ними полностью солидарен.

Я начал писать макросы еще начиная с лохматой версии 0.2x(кстати до сих пор старый код прекрасно компилируется в текущей версии). За это время я написал лишь один макрос с custom-синтаксисом(да, тот самый var) и то это было в начальной стадии ознакомления с языком, просто mutable изначально вызывало отторжение(да и var является мягко говоря более распространенным ключевым словом среди современных языков). Еще я написал пару макро-операторов, только один из которых использую по сей день(не совсем оператор, скорее моя версия лямбды вместо встроенного макроса(не очень краткого) и анонимных функций. выглядит примерно так: x -> x*x, я даже постил этот код, правда под другим аккаунтом).

Остальные эксперименты и хелперы касаются в первую очередь изменения и генерации типов, поэтому custom-синтаксис там как собаке пятая нога. Что есть он, что его нет — ничего это не меняет и особой погоды не делает. Я пришел к выводу, что в большинстве случаев он не нужен. В том числе и макросы над выражениями прекрасно обходятся без специального синтаксиса(т.е. выглядят как вызов функций) и вызывают значительно меньше потенциальных проблем. Если ты считаешь, что это нужно контроллировать на уровне компилятора — поделись мнением с разработчиками, они очень любят получать feedback на свой mailing list. Отвечают они очень быстро и по существу. И кстати ничуть не стесняются вносить улучшения в язык(правда с недавних пор они следят за тем, чтобы не сломать своими нововведениями уже работающий код на Nemerle, т.е. период глобальных переделок уже практически закончился).
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка: 40 (3) +1
Здравствуйте, Quintanar, Вы писали:

Q>Да, можно (написать макрос конвертер, например). Но не сам С, естественно. Прямого доступа в память нет.


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

Как я понимаю, в макросах Нэмерла два клавных новшества по сравнению с макросами лиспа — 1) гигиеничность (взятая, аравда из клона Лиспа — Схемы), 2) доступ к семантической информации предоставляемой компилятором и доступ к разным стадиям компиляции.

В макросах Лиспе этого нет. И стло быть макросы Нэмерла уже шаг вперед.

Ну, и не надо забывать, что программирование на Лиспе — это программирование в AST. Что конечно дает гибкость, но чертовски неудобно. Нэмерл же привносит макросы в язык с полноценным синтаксисом. Хотя тут он тоже не первым. Первым был ОКамловский прероцессор.

Лично я не говтов к переходу на ОКамл и темболее Лисп. А вот на Нэмерел, при наличии хорошей среды я скорее всего перейду с удовольствием. Ведь при этом я не жертвую ничем. Импиратив в нем не хуже чем в C#. Читается он тоже очень неплохо. Возмжности ФП мало чем отличаются от МЛ-ьных. Макросы лучше чем в Схеме. В общем, пока что я вижу кучу плюсов с только одним минусом — нет поддержки хорошей IDE и пожалуй документация еще слабовата. Хотя в общем-то туториалов лично мне хватает.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 13:39
Оценка: 4 (3) +1
Здравствуйте, IT, Вы писали:

IT>Наоборот народ сейчас начинает во всю кричать о DSL'ях, даже JetBrain этим серьёзно увлекается.


Кричать -- одно, применять на практике -- другое, применять на практике успешно -- третье, долго и часто применять на практике успешно -- совсем другое.

Вообще, по поводу языков, которые позволяют строить собственные DSL-и, мне кажется, можно привести вот эту цитату:

Lisp is so bendable as a language that a particular Lisp developer(s) will tend to create a style/library that fits the way they think. A different Lisp person may come along and be really annoyed by the techniques and styles employed. Personal preferences are magnified under Lisp. This is perhaps why it is called a "hacker language". Corporations like consistent standards and conventions because they want easily-exchangable developers. A "creative" language makes this harder.

SocialProblemsOfLisp


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[24]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 18:10
Оценка: 1 (1) +3
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Хорошо я спрошу так — считаешь ли ты что язык достаточного уровня сложности (С++, си-шарп, немерле...) для того чтобы он считался полноценным (т.е. его использование могло бы считаться таковым) необходимо наличие дебагера?


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

Все остальное нужно разработчикам. Причем разным разработчикам различные инструменты нужны с разной степенью нужности (прости за тафтологию). Чем больше инструментов, хороших и разных, тем лучше разработчикам. Эти инструменты не делают полноценным язык. Они делают полноценным процесс разработки на этом языке для большинства пользователей.

Например, для Ruby нет нормальных IDE, сравнимых с таковыми для Java или Smalltalk-а. Это не мешает Ruby завоевывать популярность, а уж вокруг Ruby On Rails сейчас вообще дурдом начинается.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 07:40
Оценка: +4
Здравствуйте, Sinclair, Вы писали:

S>Что характерно, большинство из них крайне хреново заточены под написание текстов. Я, конечно, слабо знаком с юниксовым миром — там есть какой-то аналог грамматики из Ворда?


Грамматика из Ворда -- это что?

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


Ух ты! А я и не знал, что vim -- это уже почти готовая IDE. Там еще компиляцию можно запускать, а затем по списку ошибок прыгать.

S> а еще дальше мы увидим выделение кода в метод, переименование класса и прочие рефакторинги.


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

S>А двигаясь назад, мы обнаружим, что даже автоиндент не является непременным свойством просто текстового редактора. И эффективность труда в таком редакторе близка к эффективности все той же copy con> test.c.


В таком, который по возможностям не дальше Notepad -- да, эффективность будет не большой. А если в vim или emacs -- то ты сам поразишься. Для меня набор текста в vim сейчас удобнее, чем в каком-нибудь виндовом редакторе. Вот McSeem2 в своих мемурах сетовал:

Например, в K52 была такая обобщенная функция — "повторить операцию N раз". Соответственно, была не нужна специальная команда "Goto line", все обеспечивалось обобщенными средствами. Скажите, можно ли в современном редакторе найти 18-е по счету слово с начала файла? Думаете не надо? А вот надо — это как парадигма в программировании — когда привыкнешь к хорошему, начинаешь критически смотреть на вещи. До сих пор мне подобной простой функции очень не хватает.

Так вот в vim команда "повторить операцию N раз" есть! Так же, как и команда "повторить последнюю операцию". Действительно, однажды привыкнув, обойтись без них уже тяжело. И вообще, работа в vim-е иногда напоминает программирование (типа программируешь написание программы). Мне, как заядлому программисту, нравится.

S>Поэтому мне совершенно непонятно, зачем бороться с инструментом, который объективно ускоряет написание кода. Может, конечно, это языки такие убогие; но я не знаю языка, который бы не выиграл от внятного редактора. Даже HP-GL я бы предпочел с раскраской синтаксиса и операциями типа scale fragment


Почему-то меня не точно понимают. Я не против внятных редакторов, наоборот -- двумя руками за! Редакторы для программистов должны быть специализированными и отличаться от, например, текстовых процессоров. Вот только не обязательно редактор должен быть IDE (с отладчиком, редактором ресурсов, дизайнером форм и сотнями настроечных диалогов).

Я лишь думаю, что имея хороший редактор (класса vim, emacs, кому-то jedit нравится, ...) и мегафичевый язык (вроде Nemerle), не обязательно ждать появления специализированной под Nemerle IDE. Можно использовать мегафичи языка на полную катушку сразу.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: Quintanar Россия  
Дата: 15.02.06 12:21
Оценка: +3 :)
Здравствуйте, eao197, Вы писали:

>> Как это произошло с Lisp или TeX (знаю я, что это вполне себе успешные языки/инструменты, но погоду они не делают).


ТеХ не делает погоды??? Большинство научных статей на нем пишутся. И не надо сравнивать его с Вордом, он разрабатывался для конкретной области и в ней он крайне успешен, а жалкие конкуренты типа MSEquation отдыхают в сторонке.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 16:52
Оценка: +4
Здравствуйте, AndrewVK, Вы писали:

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


AVK>Этого я и боюсь. В конце концов OpenC++ не вчера появился, а широкого признания все нет.


А что в OpenC++ принципиального, чтобы его широко признали?

AVK>Впрочем и с функциональщиной все не просто. Она тоже не есть безусловное добро, с ней крайне легко переборщить. Собственно, мне кажется что все (из тех что мне известны) функциональных языков таки переборщили. LINQ вроде бы еще нет.


По-моему, LINQ — это баловство. Лучше бы они время на что-нибудь другое потратили. Сделали бы лучше макросы и этот LINQ на них можно было бы делать в качестве домашнего задания студентам.
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: Mirrorer  
Дата: 16.02.06 13:48
Оценка: +1 :)))
Здравствуйте, eao197, Вы писали:

E>Просто твое письмо стало N+1 упоминанием истории Грэхема на моей памяти.


Что-то мне подсказывает далеко не последним
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 17:30
Оценка: :))) :)
Здравствуйте, VladD2, Вы писали:

VD>Ввести var вместо mutable — задача на две минуты. Один простейший макрос. def же нечто большее. Ты можешь определять с его помощью куски кода. Это как бы такой хитрый const замораживющий не только данные, но и куски кода. Так что его не надо трогать. Это одна из вкусностей Нэмерла которой просто нет в C# и вообще в императивных языках. Это то что императивщик не может прочувствовать пока не поварится в соку подходов Нэмерла чуть-чуть.


Copy&Paste. встроенный в язык? Хринеть
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 03:10
Оценка: -1 :)))
Здравствуйте, eao197, Вы писали:

E>Кстати об изменении синтаксиса. Живой пример из C++. Был у меня проект, в котором одно из вложенных пространств имен называлось main. Подключил сейчас к нему еще один подпроект, который потянул за собой ACE. И надо же случиться -- ACE объявляет main через #define! И конструция namespace main раскрывается во что-то невообразимое. О, сюжет!


E>Имхо, на подобные грабли можно и в Nemerle наткнуться, когда внезапно безобидный идентификатор, скажем, persistence_marker, вдруг окажется злобным синтаксическим макросом из новой версии third-party библиотеки.


О! Дожили С++-ники делятся своим гемороем.
Мужики, геморой плюсов настколько сложно воссоздать, что его по прау можно считать уникальным явлением.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 17.02.06 19:06
Оценка: -4
Здравствуйте, Vermicious Knid, Вы писали:

VK>Произойдет ошибка компиляции, а что ты ожидал?(кстати почти все макросы которые я приводил содержат в том числе и контроль ошибок, и обычно выводят вполне понятное и читабельное сообщение об ошибке)


Я ожидал, что случайно залетевший дятел не вызовет гибель всей цивилизации

В C++ я так же получил вполне понятное сообщение и сразу понял, что произошло. Проблема была в том, что был взят корректный и работающий код A (мой) и корректный работающий код B (библиотека ACE). Но вот простая компиляция A вместе с B привела к ошибке. Ошибке, которую никто не ждал и не предполагал. В результате мне пришлось переделывать мой код из-за того, что какой-то дятел в ACE сделал main макросом.

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

Все в истории развивается по спирали.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 21:19
Оценка: -3 :)
Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>Это была не самоцель, а не обходимость. Увы и ах, сказывается отсутсвие нормальной ньюсо-читалки под виндоус.


Звучит не очень здорово. Ну, да не будет обсуждать количество читалок новостей доступных в Виндовс.

VD>>В общем, разговор про Лисп нужно закрыть.


ANS>Это форум "Философия программирования" нужно закрыть.


Не вопрос. Закрой окно и для тебя его не будет.

ANS> Кому какой язык кому нравится, пусть берёт и пользуется, и молчит себе в тряпочку.


Замечательно. Вот и пользуйтесь своим Лиспом, но не нужно меня убеждать, что я тоже им должен пользоваться. Для меня — это синоним внеполовых извращений.

ANS>Влад, "философия" и подразумевает поиск проблемы в голове, а не в клозете.


Поиск проблем в голове — это не философия, а психиатрия. Мне она вроде пока не нужна.

VD>> Если тебе нравится Лисп и ты считашь его подходящим для тебя, то бери и пользуйся им. Я этого делать принципиально не хочу.


ANS>Кесарю — кесарево.


Ну, вот и считай себя кесорем. Я вроде все сказал. Если не согласен со мной — это твои проблемы. Если не веришь в то, что Лиспу не стать мэйнстримом, то можешь спросить об этому у этого самого мэйнстрима по средствам голосования.

Что спорить то?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[27]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 17.02.06 23:20
Оценка: :))) :)
Здравствуйте, VladD2, Вы писали:

VD>Я же не тебе отвечал.


Да не, конечно. Просто интересно было посмотреть, как вопрос о спеллчекере в выбенет превратился в обсуждение грамматики С++ в топике который называется "Снова о Nemerle..."
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.02.06 06:37
Оценка: +3 :)
Здравствуйте, VladD2, Вы писали:

E>>
E>>18w
E>>

E>>это все.

VD>Ага. Гениально.


Имхо, близко к тому.
18 -- это количество повторений. Количество повторений может предшествовать очень большому количеству команд vim-а.
w -- это команда перехода на начало следующего слова.

VD>А 123b будет у нас означать отослать 123 писма по мылу.


Нет, поскольку b -- это команда перехода на начало слова, то 123b будет означать возврат на 122 (или 123, в зависимости от того, где находится курсор сейчас) слов назад.

Если тебе это кажется маразмом, то что ты скажешь на то, что передвижение по тексту осуществляется клавишами h, j, k и l? Ты думаещь -- это дико?
На самом деле дико удобно. И это сразу ощущается после небольшой практики.

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.02.06 16:58
Оценка: :))) :)
Здравствуйте, pavel_turbin, Вы писали:

_>а шел бы ты лесом со своими советами.


Исполнено! Два дня бана.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.02.06 05:08
Оценка: -3 :)
Здравствуйте, VladD2, Вы писали:

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


Зашибись. Клиент покупает навороченную либу у одного поставщика за N килобаксов, затем у другого за M килобаксов. А затем еще тратит свое время на написание оберток для конфликтующих макросов. И следит за тем, чтобы LifeStyle не заканчивались. Хотя единственное желание у клиента, потратившего N+M собственных денежков, чтобы траха вообще не было.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.02.06 21:02
Оценка: -4
Здравствуйте, Andrei N.Sobchuck, Вы писали:

...
ANS>Я не знаю как ты считал строчки кода, но в любом случае, это лучше чем тот кусок спагетти, что привёл ты.

Привел отрывок какой-то хрени и делашь далеко идущие выводы. Человек привел аналогичный код. Ты же хрен знает что.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[31]: Новая версия макроса
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 12:52
Оценка: +1 -3
Здравствуйте, Vermicious Knid, Вы писали:

VK>Твои сравнения просто смешны.


Это и было целью. Там даже смайлик стоял.

VK>Если тебе не нравится что-то конкретное — обсуди это с разработчиками языка.


Что-то конкретное не нравится -- ажиотаж, который здесь вокруг Nemerle возник. Видишь ли, я не физик, я лирик, поэтому руководствуюсь впечатлениями. А впечатления от Nemerle очень неоднозначные, скорее даже негативные (может быть из-за поднятой здесь шумихи). И своим впечатлениям я привык доверять.
Поэтому конкретно с разработчиками мне осуждать не чего. А вот поиронизировать над некоторыми местными сообщениями считаю не грех.

VK>Если тебе не нравится все, тогда напиши лучше.


Пишу, знаешь ли. Только не в области языкостроения.

VK>Если не можешь написать лучше или сказать что-то конструктивное


Извини за нескромность, но много ли в данной теме конструктива? Кроме восторженных ахов и охов вокруг маленьких фрагментов кода особо ничего и нет. Даже критику (которую я пытался сделать) и то долго всерьез не принимали, хотя и признали в конце-концов, что не мешало бы чего-нибудь в языке подправить. ИМХО, здесь не столько конструктив нужен, сколько трезвый взгляд на происходящее.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[28]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 08:21
Оценка: 66 (3)
Здравствуйте, Vermicious Knid, Вы писали:

VK>Record это только для публичных полей(т.е. строго говоря для описания конструкторов структур). Accessor у меня использовать не получилось. Он его почему-то не опознает. Возможно это из-за того, что он обычно выполняется на более раннем этапе компиляции, или по другим причинам. Нужно спросить разработчиков языка.


Блин... я наконец-то понял Вот как у меня получилось:

def builder = ctx.Env.Define(<[ decl: [Record] public class $(className : name) { [Nemerle.Utility.Accessor] mutable test : int; } ]>);

Т.е. все макросы болжны быть в куске AST, переданном в env.Define. А Record не работал потому, что при вызове env.Define у класса ещё не было полей.

Т.е. надо просто собрать AST заранее
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 20.02.06 06:22
Оценка: 32 (2) :)
Здравствуйте, Oyster, Вы писали:

AVK>>Неужели ты не видишь разницы между библиотеками и синтаксисом языка?


O>Не вижу. Библиотеки макросов — это библиотеки макросов, которые мы вольны не использовать.


+1. Я бы даже сказал так библиотеки != "библиотеки макросов", это разные понятия. И вовсе необязательно, что они будут менять синтаксис. И без измения синтаксиса можно очень многое сделать.

O>Да, сейчас кто-нибудь может мне ответить, что в MS изучают тенденции, прощупывают индустрию, добавляют только самое нужное, самое правильное... Это всё не так. Настоящая правда заключается в том, что в MS разленились и тормозят.


Не совсем согласен. Загляни на досуге на сайт Microsoft Research. У них "под колпаком" например уже давно трудится один из основных имплементаторов и дизайнеров Haskell, Simon Peyton-Jones. Под эгидой MSR разрабатывается целая куча разных исследовательских языков и других проектов. Тому же Nemerle выделили финансирование в рамках Rotor Funding Project 2, хотя он и не разрабатывается в рамках MSR. Для всех проектов, профинансированных таким образом устроили в сентябре прошлого года workshop(нечто вроде конференции).

Так что Microsoft ни в коем случае не упускает возможность изучить современные тенденции и недостатка в "исследовательском материале", который можно использовать по назначению у них явно нет. Да и вообще то, что будет представлять из себя C# 3.0 это уже большой прорыв вперед для mainstream языков. Я думаю в Microsoft даже слегка опасаются, что C# 3.0 не поймут и далеко не все новвоведения одобрят.

O>PS: Пусть немного патетично, зато оптимистично


Ты наверное хотел сказать пафосно. "Патетичный" означает жалкий, трогательный.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 20.02.06 17:08
Оценка: 27 (1) +2
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Да я о другом немножко. Вот представь ты объясняешь топ-менеджменту зачем нужен Немерле. Макросы там синтаксические и прочее. При этом большая часть штата, которая на настоящий момент пишет на си-шарпе, делает круглые глаза, услышав всякие страшные слова типа "перегрузка операторов".


Ты сам когда-нибудь пересаживал народ с одной технологии на другую и представляешь себе как это реально делается?

ВВ>Tо, что можно написать "def" вместо "const int" — это конечно мощное преимущество, но представь себе — бедным людям придется еще запоминать что есть такой загадочный "def". Так что есть подозрение что это не окажет решающей роли. А решающую роль как обычно может сыграть бОльшая простота языка с сохранением хороших возможностей, более высокая дуракоустойчивость... — в общем все то, благодаря чему си-шарп "лучше" С++. А вот как у Немерле с этим?


Чушь. Уж привыкнуть к def — дело пары минут. Гораздо болезненнее будет проходить ломка сознания при переходе от императивного подхода к функциональному. Но вот что забавно, этого не требуется в обязательном порядке. К тому же ты наверняка знаешь, что .NET позволяет легко совмещать языки. В одном солюшине могут быть проекты на VB для более простой работы с COM, на C++/CLI для работы с WinAPI, на Nemerle для замены того, что сейчас генерируется в precompile- и run-time, на C# для всего остального. Для начала Nemerle может прочно занять нишу о которой я говорю, а уже переходить на него или нет полностью покажет время.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[24]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 21.02.06 17:22
Оценка: 26 (3)
Здравствуйте, eao197, Вы писали:

E>Может не нужно сразу сложную, а проще что-нибудь, знакомое публике? Например, вот эта задача
Автор: AndrewVK
Дата: 13.07.05
.


E>Причем интересно как с парсингом XML-я (может быть даже в compile-time), так и создание специализированного DSL на макросах специально для этой задачи.


В общем, я решил попробовать написать такой макрос. Сильно не пинать — первый опыт, можно сказать.

Макрос генерит класс в compile-time в соответствии с постановкой задачи. Конструктор вот только пока что не создаётся (уже домой бежать надо — завтра, надеюсь...). Используется макрос вот так:

using Oyster;

metaclass TestClass {
    prop1 : int;
    prop2 : string
}

Код макроса (повторяю — писать на Nemerle я пока не умею, так что сильно не ругайте):

using Nemerle.Collections;

namespace Oyster
{
    macro metaclass(className, body)
    syntax ("metaclass", className, body)
    {
        // Тут я зачем-то вытаскиваю идентификатор, а потом его снова вставляю в AST.
        // Криво (?), но как иначе - не знаю
        def className = match (className) { | <[ $(x : name) ]> => x };
        
        // Разбираем "свойства"
        def props = match (body) {
            | <[ { .. $props } ]> => List.Map(props, fun(prop) { | <[ $(n : name) : $(t : name) ]> => (n, t) })
            | _ => []
        };
        
        // http://nemerle.org/Defining_types_from_inside_macros
        def ctx = Nemerle.Macros.ImplicitCTX();
        def builder = ctx.Env.Define(<[ decl: public class $(className : name) {} ]>);
        
        // Добавляем поля для начала.
        // Если я тут ничего не верну, то компилятор чего-то на меня обидится :(
        List.ForAll(props, fun(n, t) { builder.Define(<[ decl: mutable $(n.NewName("_" + n.Id) : name) : $(t : name) ; ]>); true });
        
        // Добавляем свойства
        List.ForAll(props, fun(n, t) {
            builder.Define(
                <[ decl:
                    public $(n.NewName(n.Id.Substring(0, 1).ToUpper() + n.Id.Substring(1)) : name) : $(t : name)
                    {
                        get { $(n.NewName("_" + n.Id) : name) }
                    };
                ]>);
            true });
            
        // Добавляем конструктор
        // TODO

        builder.Compile();
        <[ () ]>
    }
}
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.02.06 05:55
Оценка: 9 (1) +2
Здравствуйте, AndrewVK, Вы писали:
AVK>А как надо? Ты считаешь что каждый программист способен сделать грамотное изменение синтаксиса языка? ИМХО для этого нужна квалификация и объем работ, на голову больший, нежели разработка API.
Кстати, хорошим, ИМХО, примером может служить Borland C++ Builder. Вроде тоже пацаны не самые тупые делали — я так полагаю, написать компилятор плюсов это не для средних умов задача. И что же мы видим? Банальные свойства приклеить они так и не сумели. Стоило объявить свойство ссылочного типа, как у компилятора начинало нехорошо рвать крышу. А если сделать свойство типа, у которого перегружен оператор []... У меня был как раз такой проект — я был молодой и учился программировать. Больше всего мне понравилось то, что компилятор одинаковый код компилировал как бог на душу положит. В одной строчке += означало вызов сеттера (чего, собственно, и хотелось), а в другой — вызывался геттер, а затем выполнялась inplace-модификация временного объекта. Красота. Я бы понял, если бы компайлер счел такую ambiguity ошибкой. Так ведь нет...
После этого я понял, что придумать язык типа С++ еще тяжелее, чем реализовать. Потому что нужно учесть очень много вот таких побочных эффектов. Шаг вправо/шаг влево, и твой компилятор начинает принимать совершенно неожиданные решения.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[26]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 21.02.06 20:14
Оценка: 7 (2) +1
E>Только вот о вкусах, конечно, можно спорить, но мне этот код красивым не показался. В особенности <[ и ]> -- путаюсь к чему что относится.

Ну во-первых нет "правильной" подсветки синтаксиса. А во-вторых мне многое в том коде показалось не совсем "красивым", просто потому что человек писал такое впервые. Посмотри лучше мой вариант его кода. А чтобы окончательно не путаться — почитай лучше документацию. Вообще Nemerle как язык это лучше, чем Nemerle как компилятор и библиотека. И первое, и второе на мой взгляд оставляют желать лучшего. И это не в последнюю очередь сказывается на коде. К сожалению я не застал первый компилятор C++, CFront(я в начале восьмидесятых только родился ), но думаю что он был тоже не самого хорошего качества. Если бы он предоставлял коду доступ к своим внутренностям, то я думаю повеситься можно было бы, т.к. ничего приличного написать бы не удалось.

E>

E>То что технически грамотно должно быть как минимум красиво.


Самого "классика"(c-smile) я уважаю, а вот эти его слова не очень. Тогда можно и шаблоны C++ считать технически неграмотными(да и любого неподготовленного к такому зрелищу человека от них просто выворачивает). Да и красота вещь весьма относительная, ни у кого нет единого взгляда на этот вопрос. Вот "классик" считает Форт эталоном красивости и технической грамотности, а по мне так это доисторический мусор и ужасно некрасивый.

Правда на Форте я не писал. Но пробовал писать на его "последователях" — Postscript и Joy, особенно на Postscript. Оба эти языка более высокоуровневые чем Форт, но программирование на них это весьма специфическое занятие, чем-то похожее на программирование на ассемблере. Я вообще ради развлечения люблю попрограммировать на самых разных языках, но за деньги я бы не стал касаться ни одного из вышеперечисленных языков, собственное время дороже.

А вообще "классику" следовало бы поближе познакомиться с Lisp, а еще лучше Rebol, он имхо покрасивее будет. Но все это не имеет никакого отношения к Nemerle. И вот почему.

В Nemerle все усилия приложены к тому, чтобы скомпилировался только такой макрос, который хотя бы генерирует синтаксически и семантически правильный код. Отсюда куча необходимых преобразований кода, явные указания типа для фрагментов AST итд. Все для того, чтобы компилятору не пришлось затрачивать дополнительное время на парсинг и валидацию кода во время исполнения макроса, ведь они могут исполняются по ходу компиляции тысячи, а то и десятки тысяч раз. Конечно можно было "красиво" и по простому — макрос работает как текстуальный. Только вот никаких приличных сообщений об ошибке он вывести не сможет, вывести типы выражений не сможет, в половине случаев будет выдавать абсолютно некорректный код(и выяснить это можно будет только на этапе компиляции самой программы, а не макроса) и все это дело при таком количество встроенных макросов как в Nemerle будет жутко тормозить.

Я больше скажу — не такая уж проблема полностью текстуально генерировать код в Nemerle, а затем парсить его(благо компилятор под боком, может и твиков в его код не придется делать) Тогда код который привел Oyster сократиться раза в два, а его надежность в три.

E>Еще одна мысль по поводу compile-time генерации vs precompile-time. В случае precompile-time можно нагенерировать обычный класс с комментариями. Он может быть обработан инструментом типа javadoc и программисту будет предоставлена документация о том, что в TestClass кроме prop1 и prop2 будут еще геттеры-сеттеры. А вот такой DSL как документировать?


Хороший вопрос. В Nemerle встроенная поддержка xml документации как и в C#. Я думаю простейшую информацию о сгенерированном типе он в xml скорее всего выводит. С xml комментариями наверное будет проблема, т.к. разработчики об этом даже не думали. Но я внимательно посмотрел исходники компилятора и с ходу придумал как это можно добавить. Так что технически это не проблема.
Re[25]: Снова о Nemerle или профанация не пройдет :)
От: vdimas Россия  
Дата: 22.02.06 09:17
Оценка: 6 (2) +1
Здравствуйте, Oyster, Вы писали:

O>Ну и кто будет писать на Форте в таком стиле?


Речь не только в стиле.

Форт в свое время покорил многих примерно тем же чем и Лисп. Форт — это не просто язык программирования, это СРЕДА программирования. Среда, в которой эксперимент, проектирование, кодирование, отладка и верификация гармонично совмещены. Любые твои наработки тут же становятся частью СРЕДЫ. В ней легко писать слова (подпрограммы), тут же запускать их в произвольной комбинации, тестировать, переписывать и снова запускать и т.д.

Никакой подход юнит-тестирования для совремнных языков и сред даже и близко не стоит по степени отдачи от программирования непосредственно в СРЕДЕ.

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

Форт — это некая идеология. Изначально ты имеешь некую среду, затем в процессе нескольких итераций постепенно затачиваешь среду разработки и сам язык под конкретную прикладную область. Затем пишешь программу именно в терминах и на языке (на своем видении языка) целевой прикладной области. Таких сочных, надежных и компактных программ, которые мне удавалось писать на Форте я так и не научился писать ни на одном другом языке программирования (С++ отдаленно позволял приблжаться к терминам прикладной области, но в сравнении с Фортом — слишком отдаленно) . Иногда, читая про Smalltalk, мне кажется, что их идеология близка к только что описанной, с той лишь разницей, что там все с упором не на функциональную, а на объектную декомпозицию.

O>Это уже вопрос идеологии — никто не будет так писать на Форте, так же как никто не будет писать в императивном стиле на Лиспе (LOOP не в счёт — не всем нравится).


Вопрос в количестве выражений с польской или обычной записью далеко не принципиален для Форта, там принципиальны несколько другие вещи.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 13:41
Оценка: 1 (1) +1 -1
Здравствуйте, Vermicious Knid, Вы писали:

VK>OpenC++ не работает. Для него проблемой являются даже не самые сложные программы на C++, он их не понимает. Плюс у него очень специфическая модель работы. Ты пишешь расширение на C++ и оно линкуется с OpenC++. В результате получаешь свой собственный уникальный "препроцессор". Я хочу сказать, что крайне негибкая модель. Да и по своему опыту могу сказать, что написать что-то мало-мальски сложное на OpenC++ невозможно. На Nemerle это в десятки раз проще, так как представление AST в OpenC++ слишком низкоуровневое и нет никакой возможности выбить из него больше информации об обрабатываемом коде.


Согласен. Но вот перевесят ли эти достоинства недостатки синтаксических макросов — вопрос остается открытым.

VK>На Nemerle можно писать полностью в духе C#, в первую очередь благодаря макросам. В core syntax(он фактически не используется, даже в компиляторе им и не пахнет) конечно функциональщины очень много(та же рекурсия вместо циклов). Но существующие макросы нивелируют разницу, а при желании ее еще можно и сократить.


А зачем тогда выбирать Nemerle? Ты пойми — C# уже есть и он вобщем то устраивает. За исключением ряда довольно нечасто встречающихся случаев. Перевесят ли достоинства Nemerle то, что на нем можно писать сильно нечитаемый код, пока неясно. Идеям синтаксических макросов и функциональных языков 100 лет в обед, но до сих пор ни один из них не стал мейнстримом. И лично я не берусь утверждать что станет той точкой кипения, которая перевернет мир программирования.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 14:36
Оценка: 1 (1) +2
Здравствуйте, Programmierer AG, Вы писали:

PA>Понятно, снисходительное отношения лисперов к C++ раздражает, если ты специализируешься именно на C++, а с другой стороны, снисходительное отношение C++ — программистов к VB тебя же не возмущает?


Меня вообще раздражает снисходительно-назидательно-поучительное отношение одних людей к другим. Языки программирования здесь не причем. Это всего лишь еще один способ деления людей по сортам (наряду с ростом, весом, цветом волос, вероисповеданием, местом проживания и пр.).

PA>Как минимум, надо задуматься, почему для решения подобных задач выбирают неудобный Лисп, с его ужасными скобками. Должна быть более веская причина, чем снобизм разработчиков.


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

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

Чуть-чуть другая ситуация, когда предметная область только-только формируется (как веб-программирование во время удачи Пола Грэхема). Но и тогда можно вполне спрогнозировать, удобным ли будет твой любимый инструмент или нет. Грэхем это проделал с Lisp-ом, Lisp справился. Но в этом нет ничего особо сложного -- нужно всего лишь обладать здравым смыслом. Совсем не факт, что если бы Грэхем был увлечен Smalltalk-ом, а не Lisp-ом, то он провалил бы свой проект. Совсем не факт.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 19.02.06 07:13
Оценка: 1 (1) +2
Здравствуйте, eao197, Вы писали:

IT>>Тем не менее, не смотря на все эти A, B и C ты продолжаешь писать на C++ и всячески его защищать. Значит это не такая уж и большая проблема


E>Продолжаю писать потому, что много чего на C++ сделано и проще продолжать писать на C++, чем переходить на что-то другое.


Много чего сделано не только на C++, но я тебя понимаю. Действительно проще продолжать писать на том, что хорошо знаешь и к чему привык.

E>Защищаю потому, что заинтересован в его существовании и привлечении в C++ новых толковых людей (диктуется предыдущим пунктом). А так же тем, что наезды на C++ какие-то... оголтелые, что ли.


Оголтелый означает несдержанный, низкий, крикливый. Ты наверное хотел сказать безосновательный?

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

E>И, кстати, подходила бы для моих задач производительность Ruby, перешел бы на Ruby.


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

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


Тут уже не раз было сказано, что макросы C/C++ и макросы Nemerle объединяет только лишь название, и за это название макросы Nemerle можно действительно покритиковать. Больше между ними нет ничего общего. Макросы C — это примитивная текстовая постановка, которая выполняется даже не самим компилятором, а препроцессором. Макросы Nemerle — это управление compile-time генерацией кода, которая не опаснее всё более и более широко применяемого эмита в .NET, но лишена большинства его недостатков.

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


Проблемы в языке, которые вы с AVK пытаетесь найти — это поиски чёрной кошки в тёмной комнате, которой там нет. Это всё смешно и несерьёзно. Compile-time генерация кода — это как раз то, чего сейчас так не хватает мейстримовым языкам. Надеюсь преимущества compile-time генерации перед run-time генерацией кода очевидны и их не надо объяснять. А run-time генерация сейчас используется всё шире (даже тем же AVK), т.к. это верный способ добиться максимального уровня декларативности и возложить основную часть работы на генератор, который множество раз сделает всё так, как один раз в него заложил разработчик.

E>В C/C++, как я уже говорил, тяжесть этой проблемы снижена за счет дисциплины и соглашения об именовании макросов. Но и в C/C++ макросы -- это детские игрушки по сравнению с макросами Nemerle.


Игрушки — это точно, только с другим знаком. Твоя проблема с main (описываемая тобой несколькими постами выше) просто не может случится в Nemerle. Даже в C++ она надумана. Во-первых, тому кто додумался до такого бреда место на http://www.thedailywtf.com/. А во-вторых, достаточно одной строчки #undef после #include чтобы эту проблему решить. В Nemerle же такая ситуация может случится только если ты этого захочешь сам. В общем, ваши с AVK аргументы пока высосаны из пальца и на серьёзное исследование проблем языка не тянут. Боюсь, что они больше рассчитаны на публику, но даже в этом пока не нашли поддержки.

E>Вообще утомило меня слово Nemerle в последнее время. Как Сергей Губанов для многих сделал антирекламу Оберона и Вирта, так здесь для меня сделали антирекламу Nemerle. Нужно взять тайм-аут на годик. Глядишь, вопрос сам собой и проясниться.


Аналогия не верна. Умозаключения СГ больше основаны на фанатизме. Умозаключения поклонников Nemerle (в том числе и мои) — на практицизме.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[26]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 21.02.06 23:59
Оценка: 1 (1) +2
Здравствуйте, eao197, Вы писали:

E>Зашибись. Клиент покупает навороченную либу у одного поставщика за N килобаксов, затем у другого за M килобаксов. А затем еще тратит свое время на написание оберток для конфликтующих макросов. И следит за тем, чтобы LifeStyle не заканчивались. Хотя единственное желание у клиента, потратившего N+M собственных денежков, чтобы траха вообще не было.


Если траха не будет, то и LifeStyle не нужны.

Вообще мне кажется что ты преувеличиваешь проблему. Т.е. она конечно есть, но напрямую с макросами не связана и существует в той или иной степени во всех известных мне языках программирования. Да и в принципе трудоемкость при написании макроса-враппера ненамного больше чем при написании, скажем, тайп-алиаса в си-шарпе. К тому же насколько часто это придется делать? Вероятность того, что ты купишь две библиотеки в которых будут тысячи макросов и все они будут пересекаться ничтожна мала — не уверен, что это можно выразить в математической форме, но мне кажется, что вероятность того, что два гуида подряд одинаковые сгенерятся и то выше
Здесь мне кажется есть другой момент — если-таки продолжать гнуть линию партии — как раз касающийся этой самой "тысячи" макросов. Так как появится возможность оформлять функционал в виде макросов, и ей, скажем, начнут активно пользоваться, то перед изучением новых библиотек для сотрудников надо будет проводить специальные психо-трейнинги и убрать на это время из офиса все колюще-режущие предметы. Вот представь себе библиотеку для работы, скажем, с серийным портом всю написанную на макросах. По суть вместо некого КОМ-порт АПИ у нас будет специальный язык под это дело, причем еще не факт что удачного спроектированный. И таких библиотек на большом проекте могут быть десятки. Причем в 90 случаях из 100 эти макросы не будут предлагать ничего по сравнению с обычным АПИ кроме другой формы записи.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 12:02
Оценка: +2 -1
Здравствуйте, Дарней, Вы писали:

Д>а макросы в Немерле использовать никто не заставляет, там и без того есть много вкусного


Не заставляют, но и не ограничивают. А это значит, что с их помощью насоздают столько слабосовместимых между собой языков (при пессиместическом раскладе), что мама не горюй. Обилие макропакетов для TeX-а тому пример.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 17:24
Оценка: :)))
Здравствуйте, eao197, Вы писали:

E>Со Smalltalk-еров пример нужно брать -- милейшие люди, никого не обижают

E>Может это Smalltalk благостному расположению духа так способствует?

Единственный смолтокер здесь, vovin, по агрессивности может дать фору даже McSeem и СГ
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 21:16
Оценка: :)))
Здравствуйте, eao197, Вы писали:

WP>> Так это не проблема. Это правильный подход. Одни набьют шишки и станут Васо Пупидзе, другие станут Грэмами, ван Россумами и прочими Зибелями и Кнутами.


E>Проблема есть: народ все время гонится за успешным опытом, и не замечает отрицательный.


Некоторые и на ровном месте ноги ломают. Что теперь, всем на всякий случай на костылях ходить?

E>Так что здесь обсуждается то, что говорят посетители RSDN, а не разработчики Nemerle. И я бы сильно удивился, если бы авторы Nemerle вслух называли свое детище C++ killer.


А... Ну так чукча не читателя.

WP>> Зачем ему широкое распространение? Это язык для профессионалов. А профессионалов ничтожно малое количество. Остальным же нужна ограниченная, забитая со всех сторон Java.


E>Какой-то легкий запах снобизма...


Нет.

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


Нет. Они ремесленники, или лабухи. Если сравнивать маляра Вову Сидорова и Анри Матисса, то профессионалом я первого не назову, пусть он даже любимец всего ЖЭКа.

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


Именно.

E> Если мы представляем из себя небольшую, сплоченную команду продвинутых специалистов, то вполне можем выбрать для себя Lisp или OCaml, или Smalltalk. Заказчик платит, нам нужен инструмент, который позволит проще и дешевле выполнять работу нам.


Верно. Это условия, в которых работают профессионалы.

E>Но если мы хотим выпустить инструмент для разработчиков (IDE к примеру), то на что нам нацеливаться? На небольшой рынок средств разработки для Lisp, OCaml или Smalltalk (где и так конкуренция серьезная). Или же на постоянно растущий рынок мейнстримовых языков? Та же Java, тот же C#. Так уж повелось, что чем больше рынок, тем он привлекательнее. Хотя и не для всех.


Я глубоко убеждён, что рынка средств разработки вообще не существует. Не место тут рынку.

WP>> Я вообще никогда и ни о чём не рассуждаю в терминах популярности. Это для меня новый (и неприятный) стиль мышления.


E>Да стиль мышления здесь не при чем. Разговор начался с предположения, что Nemerle посоперничает с популярностью C#. Т.е. разговор изначально был о популярности.


Ясно, я это просто упустил.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка: +3
Здравствуйте, eao197, Вы писали:

У Лиспа одна проблема. Читать код на нем практически не возможно. Плюс язык с динамической типизацией и кучей своих жучковв.

В прочем, те кто счел все это не существнным с удовольствием пользуется Лиспом и считает его лучшим средством. Проблема толко в том, что они в меньшенстве на протяжении уже 50 лет.

Языки типа Нэмерала — это попытка переноса приемуществ языков типа Лисп в среду языков завоявавших популярность и применяемых для нужд промышленной разработки софта.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 16.02.06 15:16
Оценка: -3
Здравствуйте, VladD2, Вы писали:

ANS>>Кстати, имхо, г-н де Иказа не довёл до ума ни одного проекта. Да и Novel умеет всё просырать не хуже Борланда. Так что вероятность того, что mono вечно будет, но не доделано — есть.


VD>Можно уже зарелизен.


На сарае написано ..., заглянул, а внутри дрова.

VD>Так что речь можно вести только об отставании от МС.


Это всё равно, что сказать, что выпускающие прививки от грипа, чуть-чуть отстают в темпе от мутаций грипа.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 15:30
Оценка: :)))
Здравствуйте, WinniePoh, Вы писали:

WP> Да понимаете ли в чём дело. Я далеко не начинающий. Кстати, курить 2.5 года назад бросил.

А я в 93-м.

WP> И мой опыт подсказывает, что макры рулят. А этого опыта очень даже не мало.


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

WP> Я сам над ним посмеивался (а над Малевичем и сейчас угораю, хоть и видел живьём как минимум 5 его квадратов). Но когда посмотрел в натуре (в Tate Modern, в San Francisco Museum of Modern Arts, в Помпиду) — очень даже проникся.


Завидую.

WP> Если не нравится конкретно Матисс — заменим на Шагала, или на моего любимого Дали.


Лучше на Дали.

WP> Они умрут. Скоро.


Пока есть VladD2 -- не умрут. Они без IDE не сможет.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 15:16
Оценка: -2 :)
Здравствуйте, eao197, Вы писали:

E>Расскажи, чем Nemerle защищает от подобных проблем при использовании синтаксических макросов (которые через syntax описываются).


Там таких проблем в принципе быть не может. Это не текстуальные замены. Макросы гигиенические. Все идентификаторы в макросах уникальны в рамках конкретного применения макроса. Объявляются макросы в пространствах имен. Плюс работа ведется на базе AST с выдачей довольно нехилой диагностики. Ну, и имется возможность анализировать все что нужнои выдавать собственную диагностику.

В общем, сравниать нечего. Твои слова очень похожи на суждение бывшего владельца запарожца о новеньком мерседесе "Дерьмо этот мерс. Гремит, каптит, глохнет...".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 17.02.06 18:31
Оценка: +3
Здравствуйте, AndrewVK, Вы писали:

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


Да не случится этого, не случится. Те, кто хотят метапрограммирование и прямо сейчас, используют Emit несмотря ни на что. Те, кто этого не хотят (или боятся) — не используют. Такая же ситуация будет и в Nemerle.

Возьмём, к примеру, всё те же многострадальные шаблоны C++. Да — многие начали их использовать везде, где только можно, но язык имхо от этого не пострадал. Наоборот — была хоть какая-то возможность писать обобщённый код.

И то, что в Nemerle этих возможностей больше, никак не может спровоцировать "рассыпание культуры", как это не случилось с теми же C++ (шаблоны) и C# (runtime code generation).
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 17.02.06 20:37
Оценка: +3
Здравствуйте, AndrewVK, Вы писали:

AVK>Глаз вот только всего два. Согласись — последствия запускания козла в огород, в котором на грядки высажен C#, и онного же, но с высаженным C++, разительно отличаются. Вопрос в том куда ближе Nemerle

Я всетки думаю что к C#. Причем значительно ближе к C#.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 17.02.06 20:51
Оценка: +3
Здравствуйте, AndrewVK, Вы писали:

AVK>Да и бог с ним. Макросы Nemerle То же та еще птичья вязь. Вопрос в использовании. Покуда все ограничивается атрибутами — все сравнительно контролируемо. А вот когда у нас язык начинает меняться ... С появлением сторонних библиотек количество ключевых слов начнет стремительно расти. И, волей неволей, программа с использованием нескольких таких библиотек будет представлять собой программу, написанную на уникальном языке с беспрецедентным количеством ключевых слов. Это при том что даже в стандартной библиотеке их уже больше, чем в шарпе. Боюсь я, что такой код будет понятен только тем, кто очень долго в котле его разработки варился.

Дело в том что пока не напишешь using Lib.Macro; ключевые слова из этого пространства имен добавлены не будут. Короче тут опять вопрос в культуре программирования. Разрушительные последствия кривой либы даже быз синтаксических макросов будут не на много меньше.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 23:02
Оценка: +3
Здравствуйте, AndrewVK, Вы писали:

AVK>Если бы. Ты foreach в стиле boost видел? Или парсер на boost::spirit, который ты мне показывал? Я хорошо помню ощущение вылавливания клецок BNF из борща скобочек и закорючечек.


Классная аргументация. То есть проблема в том, что в С++ не удалось изменить синтаксис как надо? Теперь в самый раз обсудить вопрос опасности изменения синтаксиса. А то ведь в нэмерле ты бы получил чистый EBNF и стал сетовать, что язык изменен до неузнаваемости.

В общем, это смахивает на попытки найти проблемы любой ценой.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.02.06 10:08
Оценка: +1 -2
Здравствуйте, Vermicious Knid, Вы писали:

VK>Еще раз повторяю, макросы как расширение парсера, это в первую очередь фича для разработчиков языка.


Еще раз повторю свою мысль -- если что-то не запрещено к использованию, оно будет использоваться. И обязательно так, как разработчика даже представить себе не могли. В C++ примеров на эту тему полно.

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


Тоже самое можно сказать про макросы C/C++, про голые указатели в C++, про навороченные шаблоны там же. Никто не заставляет их использовать. Но итог в том, что C++ является переусложненным языком, от которого некоторые здесь присутствующие до сих пор отплевываются.

Все что я вижу в разговорах про Nemerle пока наводит на подобные аналогии с C++. И аргументы такие же: "Это крайне редко используется... Мне не приходилось... У меня проблем нет..."

E>>
E>>VLADD2_FOREACH_IN_HASH( k, h; hash ) { ... }

E>>EAO197_DECLARE_PERSISTENT_ATTR v : some_type;
E>>


VK>Извини, но это какой-то идиотизм и бред.


Извини, но идиотизм в том, чтобы цеплятся к конкретным примерам. Ну пришло мне в голову при написании только FOREACH, его и написал. Будь уверен, в реальной жизни возникнет соблазн сделать еще и не такое. А например, вот так бы я себе представил то, что мне интересно:
agent_class LoadBalancer
  message MsgAddNode { ... }
  message MsgRemoveNode { ... }
  message MsgTakeNodeStat { ... }
  message MsgPing { ... }
  event EvtAddNode( m : MsgAddNode ) { ... } autosubscribe MsgAddNode priority 0
  event EvtRemoveNode( m : MsgRemoveNode ) { ... } autosubscribe MsgRemoveNode priority 0
  event EvtTakeNodeStat( m : MsgTakeNodeStat ) { ... } autosubscribe MsgTakeNodeStat priority 0
  event EvtReconfigure( m : Configurator.MsgConfig ) { ... } autosubscribe MsgConfig form Configurator.AgentName() priority 1;


Вот что-нибудь такое.
И есть у меня определенные сомнения, что задание подобных вещей через атрибуты будет удобнее переопределения синтаксиса. И если я смогу сделать такие вещи на атрибутах, то зачем вообще с Nemerle связываться, если есть C#? Но это уже риторический вопрос, даже больше эмоции.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.02.06 08:14
Оценка: -2 :)
Здравствуйте, IT, Вы писали:

IT>Ты и сам знаешь ответ на этот вопрос. Это будет означать, что тебе крупно не повезло и надо выбросить одну из используемых библиотек. А лучше обе. Та же проблема существует и в других языках. В более современных она решается явным указанием пространства имён. В устаревших не решается никак.


В C++ такой проблемы в таких масштабах просто не существует. А правила использования макросов регламентируются хотя бы соглашениями об именовании и постоянными напоминаниями, что макросы -- это зло. В Ruby такой проблемы нет в принципе (в Python, насколько понимаю, так же). В Java ее так же нет. В C#, если не ошибаюсь, нет.

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

В общем, цель всего этого дела была понят для себя, возможны ли подобные проблемы в Nemerle. Оказалось, что возможны. Все, вопросов больше не имею.

Только впечатление осталось: в C++ есть указатели. Со всеми вытекающими последствиями. Хотя у многих программистов с указателями проблем нет. Но C++ за указатели ругают. Имхо, если заменить C++ на Nemerle, а 'указатели' на 'макросы', то получится вполне точно.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[23]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.02.06 09:51
Оценка: +1 :))
Здравствуйте, eao197, Вы писали:
E>Блин, ну вот опять... Да со стандартными расширениями я свой DSL подружить всегда смогу.
E>Но я не смогу органичивать пользователей своего DSL от совместного использования моего DSL с чужими DSL. В одном файле, в одном контексте.
E>А когда у пользователей из-за моего DSL возникают проблемы в их коде -- они сделают то, что ты раньше и предлагал -- выбросят мою библиотеку. А вот это уже не допустимый сценарий.
Ну, я бы на самом деле не стал по этому поводу сильно плакать. Синтаксические расширения — это, фактически, введение своего диалекта.
Дотнет сам по себе специально заточен для межъязыковой интеграции. Считай, что у тебя появится возможность писать проекты на чуть большем количестве языков. В самом хреновом случае — когда у тебя есть легаси проект на диалекте, которого ты не знаешь и не хочешь знать, всегда есть возможность изолировать это чудо в отдельный проект и линковаться с ним на уровне сборки.
Более того, как я понимаю, немерле позволяет абстрагироваться на уровне отдельного исходника. Отлично — хочется тебе применить сразу два расширения к одному классу — так вперед, partial class и дело в шляпе. Ситуация, когда тебе захочется иметь два противоречивых расширения в пределах одного метода, по моему мнению возникнуть не может. Она сродни желанию придать одновременно два смысла оператору +. Так что на первый взгляд есть полный набор средств защиты от нежелательного секса. Все, как в жизни:
— можно просто не спать с незнакомыми
— если припрет, то можно спать, но в разных комнатах
— если совсем припрет, можно спать хоть в одной кровати, но с LifeStyles наготове
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.02.06 11:22
Оценка: :)))
Здравствуйте, AndrewVK, Вы писали:

AVK>Ты недооцениваешь возможности Nemerle. Они позволяют, к примеру, эмулировать синтаксис Питона.

Замечательно. А чем это отличается от применения Python.NET в рамках solution? Выбор языков остается на совести архитектора. Если ты считаешь, что оно оправдано — применяешь. Если не считаешь — не применяешь. Случайно попитонить вряд ли получится; девелоперам до пятого дана писать синтаксические макры нужно запретить под страхом перевода в ночной суппорт.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[26]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.02.06 14:56
Оценка: +1 :))
Здравствуйте, eao197, Вы писали:

E>Никому ничего не навязывая и не высказывая в адрес Nemerle никаких обвинений.


Ага, забавный кстати эффект. И я и ты по большей части задавали вопросы, как Nemerle поведет себя в той или иной ситуации. И при этом я уже не раз слышал, что я ругаю Nemerle.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 20.02.06 22:00
Оценка: +1 :))
Здравствуйте, Vermicious Knid, Вы писали:

VK>
VK>// так возможно будет понятнее
VK>prices.Map(fun((junk, price)) { (junk, price.ConvertTo(Currency.RUB)) });[/
VK>


Ты погоди.. Я пока еще твой предыдущий пост не дочитал
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[26]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 21.02.06 05:22
Оценка: +3
Здравствуйте, eao197, Вы писали:

E>Зашибись. Клиент покупает навороченную либу у одного поставщика за N килобаксов, затем у другого за M килобаксов. А затем еще тратит свое время на написание оберток для конфликтующих макросов. И следит за тем, чтобы LifeStyle не заканчивались. Хотя единственное желание у клиента, потратившего N+M собственных денежков, чтобы траха вообще не было.


Это уже откровенные придирки. Решить обозначенную тобой проблему предложенным Владом способом — дело получаса. Фактически речь идёт о рапере. Ты разве никогда не писал раперов для купленных за N килобаксов либ? Не смеши нас, пожалуйста
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[34]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 21.02.06 15:07
Оценка: +3
Здравствуйте, Oyster, Вы писали:

O>То вот такой код не прокатит:

O>
O>Company1.printer --> 25
O>Company2.printer --> 25
O>

Вобщем разработчикам надо написать чтобы такой вариант прокатывал.
Ну чтобы еще и такой прокатывал
using c1 = Company1;
using c2 = Company2;
c1.printer --> 25
c2.printer --> 25

Тогда и проблемы не будет.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 07:57
Оценка: +3
Здравствуйте, VladD2, Вы писали:

VD>Ну, и как расценивать эти слова? Не обращать на них внимания?


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

Чтобы уточнить о чем идет речь: в данной теме было не одно твое сообщение (в основном препирательства с AVK), в котором не было конструктива. Именно их я и имел в виду. И вообще у тебя есть привычка общаться с собеседником в духе "Ты ничего не понимаешь, попробуй, сам все увидишь". Многие твои сообщения в подобном тоне так же можно безболезнено игнорировать.

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 22.02.06 12:51
Оценка: :)))
Здравствуйте, WinniePoh, Вы писали:

IT>> Так вот если её решить один раз для Nemerle (я не знаю как, не спрашивайте ),


WP> Господи, да чего тут не знать. Тривиально. XML-ных отображений графических языков — полно. Сделать макру, разворачивающую XML в код — тривиально. Я такое для Glade и Common Lisp делал, часов 6-8 где-то потратил на всё, с отладкой и пивом.


Сделай. Заодно и интеллисенс с автокомплитом прикрути. Пиво с меня.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[29]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 15:16
Оценка: :)))
Здравствуйте, VladD2, Вы писали:

VD>К тому же код банально не здорово написан. В нем не произведена декомпозиция. Но на любом языке можно свалить все в кучу и получить птичий язык. Это не проблема зяыка.


Да чего все решили, что меня качество кода беспокоит? Качество кода в большистве случаев выявляется тестами и профайлером.
Я вот об этом говорю:
| <[ { .. $props } ]> =>
   props.Map(fun(_) { | <[ $(n : name) : $(t : name) ]> => (n, t) })


ты посчитай, сколько на идентификаторы приходится всяких скобочек, палочек и долларов. Если ты надеешься, что Nemerle сможет стать мейнстримом и потеснить C#, то представь, что на нем будут делать люди, которые даже в менстримовой Java умудряются выдавать такое: http://thedailywtf.com/forums/61026/ShowPost.aspx

Standard:
Initialize all variables at the point of declaration; null is prefered for reference types and strings while min- and max- values are preferred for value types, e.g. DateTime.MinValue.

Code:

string docOwnerUsername = "null";



E>>C++ шаблоны для меня так же не являются верхом изящества. Поэтому от трехэтажных шаблонов в C++ меня начинает отворачивать уже даже по эстетическим соображениям.


VD>На шаблонах С++ подобные задачи не решаемы. Так что оставим этот разговор.


Разговор бы не о том, решаема ли на C++ подобная задача или нет. И решаема ли она в других языках. Разговор был о том, насколько читабельны выглядят решения на шаблонах в C++ или реализации макросов в Nemerle.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[29]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 23.02.06 00:58
Оценка: :)))
Здравствуйте, AndrewVK, Вы писали:

AVK>>>Документация не самое страшное. А вот если понадобится сгенерить SQL или какой нибудь WSDL, то тут уже придется задуматься.

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

AVK>В момент компиляции? А нафига?


Чтобы докладать количество сгенерированных строк манагеру.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.02.06 22:45
Оценка: +1 :))
Здравствуйте, vdimas, Вы писали:

V>вышла версия 2.19 — вполне стабильна


Ага, стабильно глючит на больших проектах.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 17.02.06 17:54
Оценка: 68 (2)
Здравствуйте, VladD2, Вы писали:

AVK>>Чего же тогда не ответил на вопрос, какие есть недостатки у Nemerle как языка?


VD>Дык, потому что сам пока его только изучаю. Из того что я уже видел могу назвать довольно медленную загрузку компилятора и отсуствие поддержки IDE.


Посмотри есть ли у тебя в GAC нэтивный образ Nemerle.Compiler.dll. Я не инсталлировал новую версию, запускал бинарники из дистрибутива исходников(там есть компилятор для осуществления self-бута). У меня он жутко тормозил, пока я через ngen вручную не сгенерировал образы для Nemerle.Compiler.dll и Nemerle.Macros.dll. Правда обрабатывать Nemerle.dll(стандартная библиотека) он вообще отказался. Возможно он JIT'ит его каждый раз при запуске и это сказывается негативно.

Вообще во времена .NET 1.1 и эмуляции дженериков компилятор работал гораздо быстрее. Что изменилось я не в курсе, но оптимизацию(в том числе и кодогенератор улучшить) и профилинг разработчикам делать определенно надо. Еще возможно это из-за того, что разработчики используют преимущественно Mono(т.е. ориентируются на него при оптимизации и т.п.). Насколько мне известно они даже засабмитили несколько патчей в Mono, в том числе связанных с производительностью. Так что это может быть результатом такой вот однобокой оптимизации.

VD>Так же мне показалось странным, что в метод с параметром типа IList<T> нельзя передать массив типа T[]. Приходится выполнять приведение типов. Что странно при таком мощьном механизме вывода типов что есть в языке. Возможно это баг.


Возможно это пресловутое отсутствие поддержки ковариантности, меня самого жутко раздражает. Тут лучше спросить у самих разработчиков. Может к версии 1.0 что-нибудь придумают.

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

А вообще AVK с его скепсисом определенно прав. У меня например совершенно другие цели в отношении этого языка(и соответственно подход к нему) и мне в общем пока все равно приобретет ли он широкую популярность или нет. Если он продвинется дальше экспериментальной фазы хорошо. Если нет, то ничего страшного. Вообще все зависит от разработчиков и от того сумеет ли они создать community. То, что они сделали мне уже кажется большим достижением(особенно учитывая, что это всего лишь кучка польских студентов, а не какие нибудь уберлюдей ). И если они не дай бог добьются какого-то признания и начнут напрямую конкурировать с C#, то индустрии можно только посочувствовать. Она перевернется с ног на голову, а вместо Страуструпа и Андерса "как-там его" мировой знаменитостью в области дизайна языков станет Москаль(в прямом смысле этого слова). Если хорошенько подумать, то не очень веселая перспектива.
Re[34]: Макрос заместо TypeAccessorBuilder
От: Oyster Украина https://github.com/devoyster
Дата: 26.02.06 17:49
Оценка: 67 (2)
Здравствуйте, IT, Вы писали:

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

Прежде всего, кода получилось меньше и он получился более интуитивным, чем код, используюший emit. Это, в общем-то, неудивительно, поскольку практически везде для описания генерируемых классов/методов/полей используются quoted declaration, т.е. фактически код на Nemerle в <[ ]>.

Это всё, конечно, говорит о мощности языка, но для кодинга "прямо сейчас" Nemerle, возможно, не очень подходит. Перечислю то, что мне не понравилось больше всего:


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


Теперь собственно макрос. Использование его выглядит следующим образом:

using Nemerle.Utility;
using BLToolkit.Nemerle;
using BLToolkit.Reflection;

public class MyFactory : IObjectFactory
{
  public CreateInstance(_ : TypeAccessor, _ : InitContext) : object implements IObjectFactory.CreateInstance
  {
    null
  }
}

[TypeAccessorHolder]
[ObjectFactory(typeof(MyFactory))]
public class MyBO
{
  [Accessor]
    _name : string = "Hello there!";
    
    mutable public HeyHey : int = 1;
}

_ = MyBO().GetTypeAccessor()

Перед тем, как привести код самого макроса, хочу заметить, что в текущем состоянии он не заработает из-за присутствия этого замечательного бага: http://nemerle.org/bugs/view.php?id=626. Для того, чтобы макрос заработал, надо или скачать пофиксаную версию компилятора (когда исправят баг), или закомментировать регион "CreateInstance()" в самом макросе, или закомментировать (переименовать) следующие методы в классе TypeAccessor:

public static T CreateInstance<T>();
public static T CreateInstance<T>(InitContext context);

Проблема в том, что из-за бага Nemerle не может override методы CreateInstance() из-за того, что в классе присутствуют статические generic-методы с таким же именем и сигнатурой.

Для компиляции макроса и примера необходимо подключить сборку BLToolkit.2.dll (что, в общем-то, очевидно).

А вот и код макроса:

using System;
using System.Reflection;
using Nemerle;
using Nemerle.Collections;
using Nemerle.Compiler;
using BLToolkit.Reflection;

namespace BLToolkit.Nemerle
{
  // BO will automatically implement this interface using macro TypeAccessorHolder
  public interface ITypeAccessorHolder
  {
    // Retrieve singleton TypeAccessor instance for given class
    GetTypeAccessor() : TypeAccessor;
  }
  
  
  // We must add interface to BO on this stage
  [MacroUsage(MacroPhase.BeforeInheritance, MacroTargets.Class, Inherited = true)]
  macro TypeAccessorHolder(t : TypeBuilder)
  {
        t.AddImplementedInterface(<[ ITypeAccessorHolder ]>);
  }
  
  // Here code for TypeAccessor is actually generated
  [MacroUsage(MacroPhase.WithTypedMembers, MacroTargets.Class, Inherited = true)]
  macro TypeAccessorHolder(t : TypeBuilder)
  {
    // Some oftenly used values
    def tname = t.ParsedTypeName;
    
        // Will hold TypeAccessorImpl constructor code
    mutable nestedCtorCode = [ <[ base(); ]> ];
    
    #region Accessor$
    
    // Function which generates Accessor$ class for all members in collection
    def genMemberAccessor['a](members : list['a], getMemberParam, genGetter, genSetter) where 'a: IMember {
      // Function which returns field/property accessing AST
      def useMember(m) { <[ (o :> $(tname)).$(m.Name : usesite) ]> };
      
      foreach (m in members) {
        def mname = m.Name;
        def accTypeName = Macros.UseSiteSymbol("Accessor$" + mname);
        
        // Define Accessor$ class with constructor
        def accType = t.DefineNestedType(<[ decl:
          class $(accTypeName : name) : MemberAccessor
          {
            public this(ta : TypeAccessor, mi : MemberInfo)
            {
              base(ta, mi)
            }
          } ]>);
        
        // Add code into TypeAccessorImpl ctor which will create Accessor$
        nestedCtorCode ::= <[ AddMember($(accTypeName : name)(this, GetMember($(getMemberParam : int), $(mname : string)))); ]>;
        
        // Add getter/setter methods
        when (genGetter(m)) {
          accType.Define(<[ decl: override public GetValue(o : object) : object { $(useMember(m)) } ]>);
          accType.Define(<[ decl: override public HasGetter : bool { get { true } } ]>);
        }
        
        when (genSetter(m)) {
          accType.Define(<[ decl:
            override public SetValue(o : object, v : object) : void
            {
              $(useMember(m)) = v :> $(Macros.TypedChoose(m.GetMemType()))
            } ]>);
          accType.Define(<[ decl: override public HasSetter : bool { get { true } } ]>);
        }
        
        accType.Compile();
      }
    };
    
    // Generate accessors
    genMemberAccessor(
      t.GetFields(BindingFlags.Public | BindingFlags.Instance),
      1,
      fun(_) { true },
      fun(m) { m.IsMutable });
    genMemberAccessor(
      List.Filter(t.GetProperties(BindingFlags.Public | BindingFlags.Instance), fun(m) { !m.IsIndexer }),
      2,
      fun(m) { m.GetGetter() != null },
      fun(m) { m.IsMutable });
    
    #endregion Accessor$
    
    #region IObjectFactory
    
    // Add factory initialization code if according attribute is present
    when (t.HasAttribute(Macros.GetIfIsType(t.GlobalEnv, <[ ObjectFactoryAttribute ]>).Value)) {
      nestedCtorCode ::= <[ ObjectFactory = (TypeHelper.GetFirstAttribute(typeof($tname), typeof(ObjectFactoryAttribute)) :> ObjectFactoryAttribute).ObjectFactory ]>
    }
    
    #endregion IObjectFactory
    
    // Define nested TypeAccessor implementation
    def nested = t.DefineNestedType(<[ decl:
      class TypeAccessorImpl : TypeAccessor
      {
        public this() { ..$(nestedCtorCode.Reverse()) }
      } ]>);
    
    #region CreateInstance()
    
    // Determine if BO class contains constructors in required form
    mutable defCtor = null;
    mutable initCtor = null;
    foreach (ctor in t.GetConstructors(BindingFlags.Public | BindingFlags.Instance)) {
      match (ctor.GetParameters()) {
        | [] => defCtor = ctor
        | [ param ] => when (param.SystemType.Equals(typeof(InitContext))) initCtor = ctor
      }
    }
    
    // Check obtained constructors
    when (defCtor == null && initCtor == null) {
      Message.FatalError($"The $t type must have public default or init constructor.")
    }
    
    // Declare CreateInstance() override
    def ctorParams = if (defCtor != null) [] else [ <[ null ]>] ;
    nested.Define(<[ decl: override public CreateInstance() : object { $(t.ParsedTypeName)( .. $ctorParams ) } ]>);
    
    // Declare CreateInstance(InitContext) override
    def ctorParams = if (initCtor != null) [ <[ ctx ]> ] else [];
    nested.Define(<[ decl: override public CreateInstance(ctx : InitContext) : object { $(t.ParsedTypeName)( .. $ctorParams ) } ]>);
    
    #endregion CreateInstance()
    
    #region Type/OriginalType
    
    // In this macro Type == OriginalType for me
    def defineTypeProp(n) { nested.Define(<[ decl: override public $(n : usesite) : Type { get { typeof($(t.ParsedTypeName)) } } ]>); };
    defineTypeProp("Type");
    defineTypeProp("OriginalType");
    
    #endregion Type/OriginalType
    
    // TypeAccessor implementor is ready - compile it
    nested.Compile();
    
    // Define static field which holds TypeAccessor implementation instance and method which returns it
    t.Define(<[ decl: static _typeAccessor : TypeAccessor = TypeAccessorImpl(); ]>);
    t.Define(<[ decl:
      public GetTypeAccessor() : TypeAccessor implements ITypeAccessorHolder.GetTypeAccessor
      {
        _typeAccessor
      } ]>)
  }
}

На всякий случай привожу ещё код, сгенерированный макросом на основании примера (регион "CreateInstance()" был закомментирован; код получен с помощью Reflector.FileDisassembler):

using BLToolkit.Nemerle;
using BLToolkit.Reflection;
using Nemerle.Internal;
using System;
using System.Reflection;

[ObjectFactory(typeof(MyFactory)), Macro("BLToolkit.Nemerle.TypeAccessorHolder:type:postscan", 0, "")]
public class MyBO : ITypeAccessorHolder
{
    static MyBO()
    {
        MyBO._typeAccessor = new TypeAccessorImpl();
    }

    public MyBO()
    {
        this._name = "Hello there!";
        this.HeyHey = 1;
    }

    public sealed override TypeAccessor GetTypeAccessor()
    {
        return MyBO._typeAccessor;
    }


    public string Name
    {
        get
        {
            return this._name;
        }
    }


    [Immutable]
    private string _name;
    [Immutable]
    private static TypeAccessor _typeAccessor;
    public int HeyHey;


    private class Accessor$HeyHey : MemberAccessor
    {
        public Accessor$HeyHey(TypeAccessor ta, MemberInfo mi) : base(ta, mi)
        {
        }

        public override object GetValue(object o)
        {
            return ((MyBO) o).HeyHey;
        }

        public override void SetValue(object o, object v)
        {
            ((MyBO) o).HeyHey = (int) v;
        }


        public override bool HasGetter
        {
            get
            {
                return true;
            }
        }

        public override bool HasSetter
        {
            get
            {
                return true;
            }
        }

    }

    private class Accessor$Name : MemberAccessor
    {
        public Accessor$Name(TypeAccessor ta, MemberInfo mi) : base(ta, mi)
        {
        }

        public override object GetValue(object o)
        {
            return ((MyBO) o).Name;
        }


        public override bool HasGetter
        {
            get
            {
                return true;
            }
        }

    }

    private class TypeAccessorImpl : TypeAccessor
    {
        public TypeAccessorImpl()
        {
            base.AddMember(new MyBO.Accessor$HeyHey(this, base.GetMember(1, "HeyHey")));
            base.AddMember(new MyBO.Accessor$Name(this, base.GetMember(2, "Name")));
            this.ObjectFactory = ((ObjectFactoryAttribute) TypeHelper.GetFirstAttribute(typeof(MyBO), typeof(ObjectFactoryAttribute))).ObjectFactory;
        }


        public override System.Type OriginalType
        {
            get
            {
                return typeof(MyBO);
            }
        }

        public override System.Type Type
        {
            get
            {
                return typeof(MyBO);
            }
        }

    }
}
Re[29]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 22.02.06 17:17
Оценка: 41 (2)
Здравствуйте, VladD2, Вы писали:

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


Так оно и есть. Посмотри комментарии к баг-репорту на bugs.nemerle.org, который я отправил.

VD>Кстати, пока баг не поправлен... А нельзя ли как-то определять, что класс с таким именем уже добавлен и, просто не генерировать класс повторно, а обходиться банальной выдачей предупреждения? (в смысле уже сейчас)


Можно. Самый простой способ наверное это Nemerle.Compiler.Macros.IsTypeName.
using Nemerle.Compiler;
macro test()
{
      // False True
    System.Console.WriteLine($"$(Macros.IsTypeName(<[Test]>)) $(Macros.IsTypeName(<[System.String]>))");
    <[ ]>
}


VD>И еще одно. В рпоцессе возни с макросами я пришел к выводу, что самой большой прооблемой при их написании/отладке является то, что мы не видим генерируемого АСТ. С выражениями все просто, они прекрасно преобразуются в строку и печатаются банальным Console.WriteLine() из тела макроса. А вот с чем-то по сложнее (дкларациями и типами) это не прокатывает. Их ToString() выдает имя класса. Это явная недоработка.


Это несложно добавить. Посмотри Parsing/Parsetree.n. Всего-то нужно реализовать ToString для каждого из вариантов.

VD>Ну, и хотелось бы иметь возможность распечатать весь сгенерированный код или выборочные его куски (например, класс по имени).


А вот это можно. Во-первых есть ключ -dt правда работает он на мой взгляд неважно. Еще теоретически можно написать макрос который будет проходиться по всем типам и дампить их код(например в файлах). Единственная проблема заставить этот макрос сработать после выполнения всех остальных макросов. Функцию для итерации по типам я где-то видел.

Во-вторых есть интересный макрос Nemerle.Macros.pretty_print_expr. Вот пример использования:
using Nemerle.IO;
using Nemerle.Macros;
def nums = array[1, 2, 3];
pretty_print_expr({ foreach(n in nums) printf("%d\n", n) }, true);

А вот что он выведет:
def cached_collection = nums;
def _N_994 = cached_collection.Length;
def _N_993 = (0 :> int);
block (_N_break) :  
   def []_N_for_1135 () : void {
    when (<.s (_N_993, _N_994)) {
      (block (_N_continue) :        
      match (cached_collection [_N_993]) {
          | (_) as n =>
            def _N_1146 = (n : int);
            System.Console.Write (_N_1146);
            System.Console.Write ("\n");
            ()
          | _ =>
            ()
        };
      ();
      _N_993 = ++.i4.s (_N_993);
      _N_for_1135 () : void)
    }
  }
  _N_for_1135 ()


Конечно безобразие, но макросы очень непростые и их здесь аж два.
Re[33]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 24.02.06 07:42
Оценка: 31 (2)
Здравствуйте, VladD2, Вы писали:

VD>Хм. Можно пример рабочего кода?


Вуаля:

macro TestPrint(n)
{
    def x = <[ System.Console.WriteLine($n) ]>;
    def ctx = Some(Nemerle.Macros.ImplicitCTX());
    Nemerle.Compiler.PrettyPrint.PrintExpr(ctx, x);
    x
}

// Вызов
def x = "Hello";
TestPrint(1234);
TestPrint(x);

// Печатает вот что
System.Console.WriteLine (1234)
System.Console.WriteLine (x)
Re[32]: Новая версия макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.06 19:54
Оценка: 27 (1) +1
Здравствуйте, eao197, Вы писали:

E>Что-то конкретное не нравится -- ажиотаж, который здесь вокруг Nemerle возник.


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

Я не уверен, что Нэмерел завоющет популярность и темболее не уверен, что он снесет С++ и C# с пьедестала мэйнстрим-языков. Но я уверен, что Нэмерл, точнее его идеи — это очень грамотное и востребованное многими решение.

Конечно всегда будут те, кто предпочтет Васик/Яву и 10 000 индусов. Но точно так же всегда будут команды вроде ID Software или JetBrains которые микроскопическими коллективами будут противостоять мощьным и могучим монстрам вроде MS/IBM. И противопоставить тупой силе или количеству можно только ум и проворство. Вот в Нэмереле я вжу этот самый ум и проворство. Это та иновация которая может позволит одному русскому уделать 10 000 индусов. И очень хочется, чтобы подобный инструмент стал удобным и безглючным.

Вот потому и весь этот ажиотаж.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 21.02.06 19:03
Оценка: 25 (2)
Здравствуйте, Oyster, Вы писали:

O>В общем, я решил попробовать написать такой макрос. Сильно не пинать — первый опыт, можно сказать.


Очень неплохо для первого опыта. Хотя и не без ляпов конечно. Сразу становится понятно, что Nemerle достаточно простой в освоении язык.

O>Конструктор вот только пока что не создаётся (уже домой бежать надо — завтра, надеюсь...).


С конструктором вообще и параметрами функций там все не так просто. В общем я добавил создание конструктора и упростил/улучшил некоторые моменты. Вот пример того, как это все работает:
using Oyster;
using Nemerle.IO;

metaclass zuper
{
    test : int;
    anotherProperty : string;
}

def z = zuper(1, "crazy test");
printf("%d %s\n", z.Test, z.AnotherProperty);


Вот улучшенный код(комментировать было лень, да и код в общем недалеко ушел):
using Nemerle.Collections;
using Nemerle.Macros;
using PT = Nemerle.Compiler.Parsetree;

namespace Oyster
{
    macro metaclass(className, body)
    syntax ("metaclass", className, body)
    {
        def props = match (body) {
            | <[ { .. $props } ]> =>
                props.Map(fun(_) { | <[ $(n : name) : $(t : name) ]> => (n, t) })
            | _ => []
        };
                
        def ctx = ImplicitCTX();
        def builder = ctx.Env.Define(<[ decl: public class $(className.ToString() : usesite) {} ]>);

        mutable constrParams = [] : list[PT.Fun_parm];
        mutable constrCode = [] : list[PT.PExpr];

        foreach((n, t) in props)
        {
            def prop = n.NewName("_" + n.Id);
            def accessor = n.NewName(n.Id.Substring(0, 1).ToUpper() + n.Id.Substring(1));
            builder.Define(<[ decl: mutable $(prop : name) : $(t : name) ; ]>);
            builder.Define(
                <[ decl:
                    public $(accessor : name) : $(t : name)
                    {
                        get { $(prop : name) }
                    };
                ]>);
            def paramType = ctx.BindType(<[ $(t : name) ]>);

            constrParams = <[ parameter: $(n : name) : $(paramType : typed) ]> :: constrParams;
            constrCode = <[ this.$(prop : name) = $(n : name); ]> :: constrCode;
        }
        builder.Define(
            <[ decl:
                public this(.. $(constrParams.Reverse())) { .. $constrCode }
            ]>);
        builder.Compile();
        <[ () ]>
    }
}
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 22.02.06 13:38
Оценка: 8 (2)
Здравствуйте, little_alex, Вы писали:

WP>> Когда это нужно — есть тот же самый Хиндли-Милнер, который работает и для Лиспа. Есть несколько реализаций, да и своя пишется на коленке за пол часа.


_>А ссылку на рабочую библиотеку для CL можно?


Например, вот тута: http://www.cliki.net/TypeL
Re[27]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.02.06 12:56
Оценка: 7 (2)
Здравствуйте, Oyster, Вы писали:

O>

O>... у Nemerle есть синтаксис и он позволяет не писать на "птичьем" языке, в то время как Форт с Лиспом буквально требуют этого — вот отличие. ...


Да, против этого возражений нет. Хотя что получится из Nemerle, когда народ начнет макросы ваять в огромных количествах (именно макросы, не только расширения синтаксиса), интересно будет посмотреть.

O>

O>... (видимо, это способ самовнушения о правильности собственного выбора). ...


Но ведь складывается такое впечатление

O>Речь о других "выводах" которые меня задели. См. выше.


Вообще по поводу выводов: имхо, следует взять тайм-аут на годик и вернуться к рассмотрению Nemerle через это время.
И еще одно впечатление, не только по поводу Nemerle. Для раскрутки языка нужен killer app. Вот еще год назад про Ruby особо и не слышно было. Да, есть что-то типа Perl или Python, не более того. Даже RSS-фиды по Ruby были относительно вяленькие. Но после шумихи вокруг RubyOnRails какое-то помещательство началось (либо это мне, как Rubyist-у так кажется). В основном по поводу RoR, но и Ruby внимания перепадает. Я это к тому, что если бы на Nemerle вышло какое-то killer app, которое бы привлекло внимание к Nemerle (мол, это оказалось возможным только благодаря фишкам Nemerle), это бы более точно выявило реальные достоинства Nemerle и его потенциальную стартовую область применения.

Есть ли такой killer app для Nemerle?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 14:53
Оценка: 2 (2)
Здравствуйте, AndrewVK, Вы писали:

AVK>Я вобще то не скептик, на в данном уравнении слишком много неизвестных. Пока нет ни одного мейнстрим-языка, допускающего изменение синтаксиса и как Nemerle поведет себя на реальном спектре проектов не знает никто.


Кстати об изменении синтаксиса. Живой пример из C++. Был у меня проект, в котором одно из вложенных пространств имен называлось main. Подключил сейчас к нему еще один подпроект, который потянул за собой ACE. И надо же случиться -- ACE объявляет main через #define! И конструция namespace main раскрывается во что-то невообразимое. О, сюжет!

Имхо, на подобные грабли можно и в Nemerle наткнуться, когда внезапно безобидный идентификатор, скажем, persistence_marker, вдруг окажется злобным синтаксическим макросом из новой версии third-party библиотеки.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 16.02.06 08:27
Оценка: 1 (1) +1
Здравствуйте, eao197, Вы писали:

E>>>Но если мы хотим выпустить инструмент для разработчиков (IDE к примеру), то на что нам нацеливаться? На небольшой рынок средств разработки для Lisp, OCaml или Smalltalk (где и так конкуренция серьезная). Или же на постоянно растущий рынок мейнстримовых языков? Та же Java, тот же C#. Так уж повелось, что чем больше рынок, тем он привлекательнее. Хотя и не для всех.


WP>> Я глубоко убеждён, что рынка средств разработки вообще не существует. Не место тут рынку.


E>А разве IDEA -- это бесплатный продукт? Или Visual Studio?


Средства разработки это не только ИДЕ, но и, например, профайлеры. Или всякие продвинутые клиенты к БД (с автокомплитами и пр.). Рынок их, имхо, имеет место быть.

E>Может быть я ошибаюсь, но разве большинство промышленных средств разработки для Smalltalk не являются коммерческими?


Промышленные — коммерческие. Имхо их осталось всего 4 — VisualWorks + ObjectStudio, VAST, MT, Dolphin. Если туда же посчитать и GemStone/S — тогда 5.

E>Одна из лучших оконных библиотек для C++, Qt, далеко не бесплатна.

E>И даже если отдельные продукты распространяются свободно как OpenSource, то это не значит, что за них не приходится затем платить службам техподдержки или за обучение.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 16.02.06 16:15
Оценка: 1 (1) +1
Здравствуйте, eao197, Вы писали:

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


Боюсь, тут не место философии. Это наука. "Менеджмент" называется.

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


"Менеджмент софтовых проектов" релевантнее.

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


А меня это никогда не волновало. Я беру людей, которых можно обучить быстро. Хороший специалист изучит до уровня въезжания в проект новый язык и новую технологию за пару дней, максимум за неделю. Те, кто привязан к одной единственной технологии, для меня интереса не представляют в большинстве случаев. Они и в рамках этой единственной технологии напортачат, в силу узколобости и недообразованности.

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


Ну, вам виднее, у вас своя кадровая политика, у меня своя... Хрен его знает, чья лучше. У меня тут всё же крутой университет под боком, свежие кадры буквально на дороге валяются.
Re[21]: Снова о Nemerle или профанация не пройдет :)
От: z00n  
Дата: 17.02.06 21:00
Оценка: 1 (1) +1
Здравствуйте, eao197, Вы писали:

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


_W>>
_W>>        For i = 1 To 18
_W>>            DTE.ActiveDocument.Selection.WordRight()
_W>>        Next
_W>>


E>Сравним?

E>
E>18w
E>

E>это все.

Как вы понимаете, у нас тоже как-то так:
alt-18 <command>
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 05:20
Оценка: :))
Здравствуйте, IT, Вы писали:

IT>В общем, пока всё выглядит в радужном свете. Фактически, дело осталось только за поддержкой IDE. Влад правильно сказал, в нотепаде сегодня такие мегафичи нафик никому не нужны.


Ошибаешься, нужны. Мегафичи и IDE -- это ортогональные понятия (если язык нормальный). А если язык такой, что на нем можно только в супер-пупер IDE мышкой возюкать, тогда да, без IDE никак.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 11:34
Оценка: -1 :)
Здравствуйте, IT, Вы писали:

IT>1. Nemerle станет достаточно популярен и отберёт у C# существенную, а со временем возможно и всю нишу. MS будет курить в сторонке.


Nemerle в таком случае может оказаться официальным .NET-языком. Для MS в их бизнес-модели наоборот каждый сторонний
.NET-язык не конкурент, а добрый друг. И сами Microsoft с усами, F# разрабатывают.

IT>3. MS купит команду Nemerle и конкуренция будут происходить в самой MS.


Глупо говорить о конкуренции языков. Каждому языку своё применение найдётся.

IT>Но, в любом случае, у MS нет шансов остановить этот процесс. Через год-два на Nemerle начнут делаться большие проекты, через три-пять функциональщина и макросовщина начнут становиться такой же привычной вещью в мейнстриме, какой 15 лет назад становился ООП. Те, кому выгодна профанация остановить это не смогут. Да и невыгодна она никому.


Она выгодна сейчас, на локальном уровне. Мне проще купить 10 индусов чем одного оксбриджа.
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: denis_krg Казахстан  
Дата: 15.02.06 11:44
Оценка: +1 -1
Здравствуйте, AndrewVK, Вы писали:

AVK>Не все так радужно. Как минимум есть еще пара вариантов:

AVK>4. Nemerle так и останется известен в очень узком кругу.
AVK>5. Когда с его использованием начнут делать большие проекты вылезет какая нибудь доколе неизвестная бяка.

Причем наиболее вероятен исход под номером 4. Вне зависимости от степени крутизны и превосходности языка. Просто может оказаться, что переходить на этот язык индустрии экономически не оправдано. И будет узкий круг энтузиастов на нем лабать всяки мелочи.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 15.02.06 12:14
Оценка: +2
Здравствуйте, denis_krg, Вы писали:

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


AVK>>Не все так радужно. Как минимум есть еще пара вариантов:

AVK>>4. Nemerle так и останется известен в очень узком кругу.
AVK>>5. Когда с его использованием начнут делать большие проекты вылезет какая нибудь доколе неизвестная бяка.

_>Причем наиболее вероятен исход под номером 4. Вне зависимости от степени крутизны и превосходности языка. Просто может оказаться, что переходить на этот язык индустрии экономически не оправдано. И будет узкий круг энтузиастов на нем лабать всяки мелочи.


Все так. Но не факт, что для энтузиастов это будет "экономически не оправдано". .NET компоненты например это свободный рынок и совершенно все равно на чем ты "слабаешь" эту мелочь. Если "мелочь" будет востребована на рынке и конкурентноспособна, то плевать этим энтузиастам на узкость их круга, лишь бы качество инструментов разработки было достаточно хорошее.

Никого кстати не удивляет, что такое убожество как VB.NET кем-то используется для коммерческих проектов(о масштабах этого явления и размерах проектов мне прадва ничего не известно)? Я думаю хуже чем VB.NET, Nemerle никак не может быть.

А вообще по-поводу "мелочей" и больших проектов. Я наверное всем уже уши прожужжал, но Nemerle self-booting компилятор, т.е. написан на Nemerle и собирает себя сам. Большой ли это проект или нет судить вам, но 1.5mb исходников это компилятор + около 2mb занимает библиотека(в основном встроенные макросы), примеры, тесты. Наверное не настолько большой, чтобы можно было поставить точку на утверждении о "неизвестной бяке", но достаточно большой, чтобы понять в каких проектах "бяки" возникнуть не должно.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 13:41
Оценка: +2
Здравствуйте, Vermicious Knid, Вы писали:

VK>А вообще по-поводу "мелочей" и больших проектов. Я наверное всем уже уши прожужжал, но Nemerle self-booting компилятор, т.е. написан на Nemerle и собирает себя сам. Большой ли это проект или нет судить вам, но 1.5mb исходников это компилятор + около 2mb занимает библиотека(в основном встроенные макросы), примеры, тесты. Наверное не настолько большой, чтобы можно было поставить точку на утверждении о "неизвестной бяке", но достаточно большой, чтобы понять в каких проектах "бяки" возникнуть не должно.


Когда я говорил о бяках, то речь шла не о бяках в коде компилятора, а о бяках в концепциях.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 16:25
Оценка: -2
Здравствуйте, AndrewVK, Вы писали:

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


WP>> Тоже мне "даже". Вот то, что Microsoft к следующей MSVS готовит свой DSL Tool — это уже да, это дело.


AVK>Почему к следующей? Вполне может быть и к этой. Да и потом — DSL MS имеет ввиду графический, а не текстовый.


Без разницы. Те же макры, только простейшие, одноуровневые. Как в Си и Техе.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 17:49
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

IT>>По-моему, LINQ — это баловство. Лучше бы они время на что-нибудь другое потратили. Сделали бы лучше макросы и этот LINQ на них можно было бы делать в качестве домашнего задания студентам.


AVK>Нет, LINQ не баловство, а промышленное решение, которое можно будет использовать уже сейчас.


Использовать для чего?

AVK>А рукопашные фокусы с AST пока еще не вылезли из научно-исследовательских штанишек.


Про штанишки я не в курсе, но уже сейчас интенсивно использую run-time кодогенерацию (примеры я уже неоднократно приводил) и не собираюсь от этого отказываться даже несмотря на некоторые серьёзные недостатки. Фокусы с AST могли бы эти недостатки ликвидировать и я бы получил практически идеальное решение.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 20:17
Оценка: +2
Здравствуйте, GlebZ, Вы писали:

IT>>1. Nemerle станет достаточно популярен и отберёт у C# существенную, а со временем возможно и всю нишу. MS будет курить в сторонке.

GZ>Скорее в С# вделают некоторые фичи языка.

Ты думашеь я против? Я только за!

GZ>Насчет LINQ IMHO Самым важным в LINQ не upgrate языка, а то что он представляет конкуренцию стандартам типа JSR1700 Явы. То есть, возможность построения репозитория.


Вот лично я без понятия что там за стандарты, поэтому, конкурирующая с чем-то мне неизвестным фича меня мало интересует, если она мной не востребована. В LINQ для себя я не вижу серьёзного применения. Красивая игрушка, nice to have, не более того. В своих приложениях я по прежнему буду писать запросы в QA, смотреть их план, после чего складывать их в сохранённые процедуры, т.к. это мне удобнее и серверу процентов на 20 производительнее.

IT>>3. MS купит команду Nemerle и конкуренция будут происходить в самой MS.

GZ>Это юридически сложно сделать.

Команда Mono работает в Novel, эклипса в IBM (кажись). Что сложного?

IT>>Но, в любом случае, у MS нет шансов остановить этот процесс. Через год-два на Nemerle начнут делаться большие проекты, через три-пять функциональщина и макросовщина начнут становиться такой же привычной вещью в мейнстриме, какой 15 лет назад становился ООП.

GZ>Лиспу это не помогло

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

Код на Nemerle я понимаю, по крайней мере в рамках императивности, и это понимание подстёгивает во мне интерес к этому языку, к его заявленным мегафичам. Это понимание и заинтересованность в какой-то момент способны побороть лень и нехватку времени и вот я уже читаю введение в язык, знакомлюсь с примерами. Мне не нравятся такие вещи как def и mutable, я бы предпочйл var, но по прочтении введения я уже к ним привык. Я готов писать на Nemerle и готов его использовать в своих проектах не беспокоясь о том, что мне придётся выкинуть всё, что уже наработано и начинать старую песню о главном в очередной раз. С этого момента вхождение в язык осуществлено, на это мне потребовалось несколько часов.

А Лиспу не помогло, это правильно. И не могло помочь. Nemerle на самом деле ещё тоже пока не помогло, но заявка на победу уже сделана

GZ>Да никто не будет переходить на Nemerle.


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

GZ>Будет узкоспециализированным языком. Потому как нужен маркетинг(в маркетинг Java и С# были вложены огромные средства). Потому как нужны люди которые бы умели фичи пользовать. А таковых единицы.


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

Впрочем, как я сказал в самом начале, если Nemerle уготована судьба всего лишь подтолкнуть разработчиков C# к более радикальным действиям, то меня это тоже вполне устроит
Если нам не помогут, то мы тоже никого не пощадим.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 15.02.06 22:20
Оценка: :))
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Напрасно. В частности, целый ряд возможностей был исключен из релиза Visual Studio 2005 именно по этой причине. Например, class designer для C++:

ПК>http://blogs.msdn.com/r.ramesh/archive/2005/03/03/384772.aspx
ПК>http://blogs.msdn.com/classdesigner/archive/2005/03/04/384764.aspx

Интересное обсуждение надо сказать
Иногда мне начинает казаться что у них какой-то стратегический интерес обижать С++ — особенно в плане дизайнеров.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: c-smile Канада http://terrainformatica.com
Дата: 16.02.06 07:16
Оценка: +1 -1
Здравствуйте, WinniePoh, Вы писали:

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


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


IT>>>Но, в любом случае, у MS нет шансов остановить этот процесс.


MS>>Ой, не говори так категорично. У MS очень даже есть шансов. Как в свое время Oracle купил People Soft, после чего всех сократил (читай — распылил конкурента).


WP> Открытый проект нельзя купить. Что Linux что Nemerle.


Открытый проект просто можно прекратить финансировать.
Практика показывает что после этого все умирает.

WP> Будет форк, будет новая команда разработчиков, всего делов то.


Форк означает что кто-то еще взялся финансирвать проект.
Ежели никого не нашлось — все — проект умэр, пойте песни.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 16.02.06 08:07
Оценка: +2
Здравствуйте, c-smile, Вы писали:

CS>Открытый проект просто можно прекратить финансировать.

CS>Практика показывает что после этого все умирает.

Это с проектами без "внутреннего стержня". Вот кто, например, emacs финансирует?

WP>> Будет форк, будет новая команда разработчиков, всего делов то.


CS>Форк означает что кто-то еще взялся финансирвать проект.

CS>Ежели никого не нашлось — все — проект умэр, пойте песни.

Кстати, имхо, г-н де Иказа не довёл до ума ни одного проекта. Да и Novel умеет всё просырать не хуже Борланда. Так что вероятность того, что mono вечно будет, но не доделано — есть.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: Programmierer AG  
Дата: 16.02.06 14:43
Оценка: +2
Здравствуйте, eao197, Вы писали:

PA>>Понятно, снисходительное отношения лисперов к C++ раздражает, если ты специализируешься именно на C++, а с другой стороны, снисходительное отношение C++ — программистов к VB тебя же не возмущает?

E>Меня вообще раздражает снисходительно-назидательно-поучительное отношение одних людей к другим. Языки программирования здесь не причем. Это всего лишь еще один способ деления людей по сортам (наряду с ростом, весом, цветом волос, вероисповеданием, местом проживания и пр.).
+1, ничего положительного в снобизме нет. Я скорее хотел подчеркнуть, что инструмент хоть и вторичен по отношению к человеку, списывать со счета его нельзя.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 16:26
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

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


Александреску потому и нарисовался, что в С++ небло шататных средств метапрограммирования, а насущьная потребность в метапрограммировании была. И, кстати, он не назвал свое творчество легким в понимании. Он наоборот сетовал на то, что если бы в языке были соотвествующие конструкции, то голову не пришлось бы ломать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 16:26
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

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


Тут оно как. Никто не замечает как переходит грань между здравой осторожносью и черезмерным скепсисом.

AVK> Пока нет ни одного мейнстрим-языка, допускающего изменение синтаксиса


Дык, как бы есть.

AVK> и как Nemerle поведет себя на реальном спектре проектов не знает никто.


Согласен. Но если сразу забросать его скепсисом и подозрениями, то мы так никогда и не узнаем, как он себя поведет. Не так ли?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 17.02.06 00:53
Оценка: :))
Здравствуйте, Programmierer AG, Вы писали:

PA>Можно пойти еще дальше. Если язык хороший и предназначен для "настоящих индейцев", ему ни компилятор, ни стандартная библиотека не нужны, главное — идея! А если идея хорошая, фанаты и сами все реализуют.


А если язык очень хороший, то ему и фанаты не нужны. И программисты не нужны. Вообще никто не нужен.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: Programmierer AG  
Дата: 17.02.06 09:36
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

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

Да, Влад, примени этот подход к Окамлу с Хаскелем, и снова наступит баланс Силы .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 17.02.06 18:11
Оценка: +2
Здравствуйте, WinniePoh, Вы писали:

WP> Уверяю вас, это вовсе не так. Вам просто не хватило способностей для того чтобы перестроить своё мышление.


Почему же тогда, к примеру, Пол Грэхэм, один из великих евангелистов Лиспа, считает, что синтаксис таки нужен (в своих размышлениях об Arc)?

Может быть, потому, что насиловать себя там, где этого можно не делать, ни к чему?...
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 20:30
Оценка: +1 -1
Здравствуйте, Oyster, Вы писали:

O>Тогда должно быть страшно прямо сейчас. Уже сейчас многие хотят метапрограммирование в .NET, но использовать для этого приходится Reflection.Emit (ну некоторые ещё R# для этого пишут или уже "писали"?...).


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

O> И вот код для runtime code generation на C# имхо получается гораздо страшнее, чем макросы Nemerle... про отладку я вообще молчу.


Да и бог с ним. Макросы Nemerle То же та еще птичья вязь. Вопрос в использовании. Покуда все ограничивается атрибутами — все сравнительно контролируемо. А вот когда у нас язык начинает меняться ... С появлением сторонних библиотек количество ключевых слов начнет стремительно расти. И, волей неволей, программа с использованием нескольких таких библиотек будет представлять собой программу, написанную на уникальном языке с беспрецедентным количеством ключевых слов. Это при том что даже в стандартной библиотеке их уже больше, чем в шарпе. Боюсь я, что такой код будет понятен только тем, кто очень долго в котле его разработки варился.
Собственно именно из-за этого имхо помер Форт.

O>Я это к тому, что люди всё равно хотят обобщать и будут это делать любыми доступными средствами. Так что Nemerle даже с точки зрения красоты "кода, генерирующего код" получается гораздо приятнее того же C#.


Только мне почему то больше нравится решение, когда DSL узок, чисто декларативен и, желательно, в графическом или GUI представлении. Т.е. понимание и пользование его легко даже неспецу, контроль предельно жесткий. Создание DSL на базе большого и гибкого языка не кажется мне бесспорной идеей.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 17.02.06 21:09
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

AVK>ИМХО очень даже пострадал. Если уж народ всерьез пишет гору жутких закорючек и утверждает что жэто простой код, то ненулевая вероятность что то же мы увидим на Nemerle.

Подавляющие число закорючек находятся в библиотеках. И ноги у них ростут из того что метапрограммирование в С++ эмулируется шаблонами и текстовыми макросами(вот где копипаст в языке...), а использовать эти библиотеки обычно довольно просто.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: Дарней Россия  
Дата: 18.02.06 03:13
Оценка: +1 :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Пока я задаю вопросы. Например — очевидно что язык, в котором ключевых слов много, да еще и их набор может изменяться (в том числе и неявно) значительно сложнее при прочих равных языка с зафиксированным набором ключевых слов. Как с этим бороться? У тебя есть ответ на этот вопрос?

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

На самом деле твои предпосылки просто неверны. Структура программы — это просто реализация мыслей программиста. В идеале язык должен как можно точнее отражать понятия, которыми оперирует программист (а совсем не наоборот ). Поэтому более сложным окажется не тот язык, в котором больше ключевых слов. А тот, в котором отсутствующие в нем понятия эмулируются при помощи не предназначенных для этого конструкций. В этом отношении переплюнуть С++ с его трюками не удастся уже никому. И не надо
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.02.06 06:50
Оценка: -1 :)
Здравствуйте, VladD2, Вы писали:

VD>И что? Если у тебя конфликтуют названия функций, ты тоже их использовать не сможешь. Что же тебя это не огорчает?

VD>Макросы немерла подчиняются тем же самым ограничениям, что и функции в С

Для уточнения названий функций я могу использовать идентификаторы пространств имен. А в C, где пространств имен не было, применялись префиксы для имен функций (SSL_, curl_, ACE_ и пр.). А для макросов выработано правило, чтобы имена макросов задавались только заглавными буквами и так же имели свой уникальный префикс.
Забавно, надо полагать, будет выглядеть код на Nemerle, если в нем будут синтаксические конструкции вида:
VLADD2_FOREACH_IN_HASH( k, h; hash ) { ... }

EAO197_DECLARE_PERSISTENT_ATTR v : some_type;


Очень далеко мы ушли от C, не правда ли?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.02.06 09:22
Оценка: +2
Здравствуйте, VladD2, Вы писали:

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


VD>Аргументация точно такая же как противников C#. Они тоже дружно вторят "покажи мне серьезнео приложение...".


Только вот на C# их хватает, а на Nemerle пока нет. Это не значит что NEMERLE плохой, это значит что его использование влечет за собой очень высокий риск.

AVK>>У меня сейчас нет времени на что то более менее крупное, а мелкие примерчики на мои вопросы ответа не дадут.


VD>Да за время пока мы трепимся можно было бы что-нить написать и поделиться опытом.


У меня и так полно дел. Статью, к примеру, писать нужно.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: Дарней Россия  
Дата: 18.02.06 09:52
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Дарней, Вы писали:


Д>>На самом деле твои предпосылки просто неверны. Структура программы — это просто реализация мыслей программиста. В идеале язык должен как можно точнее отражать понятия, которыми оперирует программист (а совсем не наоборот ).


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


Если в программе нет никаких неизвестных терминов, но они записаны неявно, "подразумеваются" под горами классов и методов — это по твоему проще, что ли?
Реальный код, который скрывается под неизвестными терминами, можно просто посмотреть рефлектором. Наверняка есть и более прямые способы. А вот восстановить исходные понятия из под гор кода (в особенности оптимизированного) — очень сложная и нетривиальная задача.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: Дарней Россия  
Дата: 18.02.06 09:56
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

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


Не идиотизм. Просто инертность, упрямство и косность мышления. Чем еще можно объяснить ситуацию с указателями на методы объектов, например?

AVK>Т.е. таки серебряная пуля?


когда Брукс писал про "серебряную пулю", он имел в виду совсем другое
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.02.06 11:10
Оценка: +1 :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Только вот на C# их хватает, а на Nemerle пока нет.


1. "Они" под серьезным приложением явно понимаю некий Ворд от МС целиком написанный на дотнете. Януса им явно мало, а некие корпоративне продукты не так то просто показать.
2. Nemerle сейчас находится в стадии аналогичной C#-у в 2001. То есть, язык уже сформироан, но пока числится в бэтах. Что-то я не припоминаю засилия C#-программ, да еще и серьезных в 2001 году. Вот через 5 лет можно будет серьезно обсудить этот вопрос.

AVK>Это не значит что NEMERLE плохой, это значит что его использование влечет за собой очень высокий риск.


Конечно все новое влечет определенный риск. Но что-то в данном случае я особого риска не наблюдаю. Слишком хорошая подстраховка в виде дотнета есть. Да и язык сильно эмулирует C#. Так что приемственность очень высока.

Кстати, почитал их макросы поставляемые с компилятором... Оказывается C# содран только на уровне описания классов. Все statments и expressions в основном присуствуют в виде макросов. Я оифигел когда увидел, что даже операторы &&, ++, += и т.п., в общем, осная куча, реализованы в качестве макросов!

Макросами реализованы и буквально все операторы языка. Даже if/else и то макрос.

Это смешно, но во всем языке есть только пара операторов среди которых главных — это match. match-ем они эмулируют буквально все. И при этом, используя язык фиг подумашь, что все синтаксическое богатсвто — это всего лишь эмуляция! Блин, а ведь кто-то тут рассуждал о сложности языка! Да по сравнению с Нэмерлом Васик — это переусложненный язык.

В общем, я не перестаю фигеть с грамотности проектирования этого языка.

AVK>У меня и так полно дел. Статью, к примеру, писать нужно.


Это да. Я вот разрываюсь сейчас на 3 фронта. Нэмерлом в основном занимаюсь по ночам. Надо переходить на статьи о Нэмерле. Тогда глядишь и время разгрузится.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.02.06 11:10
Оценка: +1 -1
Здравствуйте, AndrewVK, Вы писали:

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


VD>>Классная аргументация. То есть проблема в том, что в С++ не удалось изменить синтаксис как надо?


AVK>А как надо?


Надо под делу. Без проецировния проблем одного языка на другой.

AVK> Ты считаешь что каждый программист способен сделать грамотное изменение синтаксиса языка?


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

AVK> ИМХО для этого нужна квалификация и объем работ, на голову больший, нежели разработка API.


Ну, API — это ты перебарщивашь. Погляди на макросы идущие в поставке Нэмерала. Все их API умещается в тех же файлах где объявлены макросы.

А вот опты конечно нужен. Ну, так новичет просто не поймет как получить доступ к макросам. А сами макросы получит.

К примеру, согласить круто вместо:
string.Formar("Имя: {0} Фамилия: {0}", name, lastname)

писать:
$"Имя: $name Фамилия: $lastname",

Причем ошибиться нигде нельзя! Если ты впишешь неверное имя переменной в текст, то тебя остановит компилятор! А в C# ты рискушь получить ошибку во время выполнения (неверный форма или еще что).

Так что грамотно написанный макрос способен сделать код даже надежнее. И уж точно он делает код более кратким.

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

VD>>В общем, это смахивает на попытки найти проблемы любой ценой.


AVK>Влад, если ты будешь опять переходить на наезды как только кто то посмеет высказать мнение, не совпадающее с твоим, я буду игнорировать твои топики.


Нет уж. Ты меня извини, но ты пыташся защитить свой ничем не обоснованный скепсис. Я с этим скепсисом в корне не согласен. Причем именно потому, что он ничем не обоснован. Это все из серии "как бы чего не вышло". И ведь не выйдет, если зачмарить хорошую вешь в зачатке.

У меня нет никаких средств как оппонировать к необоснованности данных суждений.
Так что не стоит рассказвать тут о переходе на личности. Тебя я не обсуждаю. Я говорю о твоем ничем не обоснованном скепсисе.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 18.02.06 11:37
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

AVK>Есть кардинальное отличие между кодогенерацией или там постобработкой сборок и правкой синтаксис а языка. Последнее затрагивает значительно более глубинные слои.


Сверху всё выглядит одинаково. Переопределяешь ли ты поведение в отнаследованном классе или добавляешь его в класс — какая разница? Оба подхода служат одной цели...

Кстати, использование Reflection.Emit приводит, например, к таким "приятным" мелочам, как создание инстанса только через фабрику. В Nemerle же можно переопределить поведение класса и создавать его с помощью new. Ещё одна приятная мелочь в копилку языка.

AVK>Да и бог с ним. Макросы Nemerle То же та еще птичья вязь. Вопрос в использовании. Покуда все ограничивается атрибутами — все сравнительно контролируемо. А вот когда у нас язык начинает меняться ... С появлением сторонних библиотек количество ключевых слов начнет стремительно расти. И, волей неволей, программа с использованием нескольких таких библиотек будет представлять собой программу, написанную на уникальном языке с беспрецедентным количеством ключевых слов. Это при том что даже в стандартной библиотеке их уже больше, чем в шарпе. Боюсь я, что такой код будет понятен только тем, кто очень долго в котле его разработки варился.


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

object bizObj = _f._c<_b>();

Что ж это получается — C# тоже вреден, раз позволяет так писать? Да нет — это скорее означает, что никто моей библиотекой не будет пользоваться — всего и делов. И культура, образовавшаяся вокруг C#, не пострадает от моего корявого кода.

Точно так же и с Nemerle — пусть в нём гораздо больше вкусностей, но писать на нём будут тоже люди, которым тоже не чуждо всё прекрасное

AVK>Собственно именно из-за этого имхо помер Форт.


Я не знаю, из-за чего он помер, и помер ли вообще. Насколько знаю я, Форт до сих пор используется во всяких там телескопах. Да и PostScript от него отпочковался... В общем-то он не умер, а занял свою нифу, ибо он имхо и не стремился стать повсеместно используемым.

Кстати, писать на Форте мне очень даже нравилось. Почему-то я его понял практически сразу, в отличие от Лиспа и Хаскеля (которых я так и не смог побороть — гения, видно, не хватило ).

AVK>Только мне почему то больше нравится решение, когда DSL узок, чисто декларативен и, желательно, в графическом или GUI представлении. Т.е. понимание и пользование его легко даже неспецу, контроль предельно жесткий. Создание DSL на базе большого и гибкого языка не кажется мне бесспорной идеей.


Ну... на DSL свет клином не сошёлся. Макросы Nemerle это имхо средство метапрограммирования вообще, а не средство написания DSL-ей. На Nemerle можно легко юзать AOP, писать всякие там O/R-Mapping tools, расширять функциональность классов... в общем, делать всё то, что сейчас в шарпе делается немножко через это самое.

Ну а возможность создать свой синтаксис имхо тоже может пригодиться. Опять же — для уменьшения объёма конечного кода. LINQ же тебя не пугает?

PS: Нет, конечно, всегда можно написать какую-то птичью бяку на любом языке (см. мой пример на C#), но Nemerle к этому не обязывает (как, например, язык регулярных выражений, Perl или Lisp). А раз не обязывает и раз у него есть нормальный синтаксис (так похожий на C#), то люди вряд ли будут делать из него что-то неудобочитаемое.
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.02.06 14:25
Оценка: :))
Здравствуйте, eao197, Вы писали:

E>Для уточнения названий функций я могу использовать идентификаторы пространств имен. А в C, где пространств имен не было, применялись префиксы для имен функций (SSL_, curl_, ACE_ и пр.).


Технологп проста таки 23-го века!
Стиль называется "багус пронус програму". Или "бессоннус ночоус".

E>Забавно, надо полагать, будет выглядеть код на Nemerle, если в нем будут синтаксические конструкции вида:

E>
E>VLADD2_FOREACH_IN_HASH( k, h; hash ) { ... }

E>EAO197_DECLARE_PERSISTENT_ATTR v : some_type;
E>


Да было бы забанов. По этому очень приятно, что их от ныне не будет.

E>Очень далеко мы ушли от C, не правда ли?


Да — это радует не подетски. И для тех кто не в теме поясню, как раз гигиеничность макросов Нэмерла устраняет такую проблему. В макросах нэмерла ты можешь пересечься с именами внешней области видимости только если сам специально этого захочешь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.02.06 18:08
Оценка: -1 :)
Здравствуйте, VladD2, Вы писали:

VD>К примеру, согласить круто вместо:

VD>
VD>string.Formar("Имя: {0} Фамилия: {0}", name, lastname)
VD>

VD>писать:
VD>
VD>$"Имя: $name Фамилия: $lastname", 
VD>


Ничего крутого я не вижу.

VD>Я уже устал повторять, что создание макросов можно эффектино контролировать, так как они создаются отдельно и на отдельной стадии. Случайно залететь тут нельзя.


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

[демагогия поскипана, — за нее]
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re: Снова о Nemerle или профанация не пройдет :)
От: VladGalkin Украина  
Дата: 19.02.06 19:28
Оценка: :))
Очень понравился мне комментарий одного товарища из ЖЖ на мою публикацию о Nemerle, так понравился, что рука к нагану потянулась:

Кхм... Помню высказывание одно очень умное. Точнее дословно не помню и автора с хожу не назову, но суть такая — чем активнее используются макросы в языке программирования, тем хуже и менее функционален этот язык. Уже из этого следует, что Nemerle — полный отстой! А если вы всё-таки хотите ну совсем другую парадигму, а ещё лучше — программирование без парадигм, то посмотрите в сторону ассемлера! Самый чудесный язык программирования на мой взгляд!


Ей Богу, откуда такие персонажи беруться?
... << RSDN@Home 1.1.4 stable rev. 510>>
ДЭ!
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.02.06 09:51
Оценка: +2
Здравствуйте, Дарней, Вы писали:

Д>Просто потому, что это удобно. Я лучше поработаю над плагином, чем буду снова писать код в плоском текстовом редакторе и собирать проект make-файлом


[offtopic]
Проские текстовые редакторы, имхо, сейчас еще поискать нужно. Называть emacs, vim, jedit, и пр. обычными редакторами как-то язык не поворачивается.
Да и make сейчас уже вчерашний день. Наверное, только упертые unix-оиды ими пользуются. И то, те, кому кроссплатформенность не нужна. Остальные же переходят на Scons, Boost.Build, Ant, CMake, MPC и пр.
[/offtopic]


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[26]: Снова о Nemerle или профанация не пройдет :)
От: Дарней Россия  
Дата: 21.02.06 05:21
Оценка: +2
Здравствуйте, eao197, Вы писали:

E>Зашибись. Клиент покупает навороченную либу у одного поставщика за N килобаксов, затем у другого за M килобаксов. А затем еще тратит свое время на написание оберток для конфликтующих макросов. И следит за тем, чтобы LifeStyle не заканчивались. Хотя единственное желание у клиента, потратившего N+M собственных денежков, чтобы траха вообще не было.


А в плюсах не так, что ли?

Давайте лучше временно придушим свою страсть к критиканству, и подумаем, как можно решить эту проблему лучше. Я полагаю, разработчики языка будут рады любым дельным предложениям.
Написание оберток мне тоже не очень нравится, хотя это и должно работать.
Другой вариант — это разграничивать область действия макросов в явном виде, когда это необходимо.
Например:
use macrolib AAA
{
    // do some stuff
};

use macrolib BBB
{
    // do another stuff
};

Есть еще идеи?
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: little_alex  
Дата: 21.02.06 10:13
Оценка: +1 :)
Здравствуйте, yrashk, Вы писали:


Y>Чем Вам A не параметр? Мне передан параметр A, я потребовал, чтобы он был INTEGER. Хотите узнавать а не требовать? TYPE-OF/CLASS-OF к Вашим услугам. Ы?


Нужно:
(mymacro 10) =>; ok
(mymacro (+ 1 2)) =>; ok
(mymacro "bla-bal") =>; error (причем во время распахивания макроса)
(mymacro (substr "bla-bla" :start 0 :end 2)) =>; error (причем во время распахивания макроса)
(mymacro (cosh (+ 1 2 3 (* 10 20))) =>; ok
(let ((x 10))
  (declare (type number x))
    (mymacro x))) =>; ok

(let ((x "bla-bla"))
  (declare (type string x))
    (mymacro x))) =>; error

Напишешь такое ?
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 21.02.06 10:33
Оценка: +2
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Ключевое слово — выделено. Даже в С#, как и в других (квази)-ООЯ, можно воспользоваться встроенными механизмами для сокращения всех этих switch. Например (это скорее непроверенный псевдо-код, к модификаторам доступа и типам попрошу не придираться).


Ты в состоянии читать внимательно? Я просил не приводить советов по улучшению кода, мне это даром не нужно.

Это не пример ООП/ООД и рефакторинга, это пример и сравнение switch/case и match. У меня не было цели решить конкретную задачу(у меня и задачи то не было). У меня была цель продемонстрировать конкретный синтаксис. В данном случае синтаксис match. Поверь мне я в состоянии самостоятельно отрефакторить этот код не хуже чем ты. Но просто суть в том, что в этом коде неважно, что конкретно делается, важно какими средствами.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 21.02.06 10:43
Оценка: -2
Здравствуйте, Vermicious Knid, Вы писали:

ANS>>Ключевое слово — выделено. Даже в С#, как и в других (квази)-ООЯ, можно воспользоваться встроенными механизмами для сокращения всех этих switch. Например (это скорее непроверенный псевдо-код, к модификаторам доступа и типам попрошу не придираться).


VK>Ты в состоянии читать внимательно? Я просил не приводить советов по улучшению кода, мне это даром не нужно.


VK>Это не пример ООП/ООД и рефакторинга, это пример и сравнение switch/case и match. У меня не было цели решить конкретную задачу(у меня и задачи то не было). У меня была цель продемонстрировать конкретный синтаксис. В данном случае синтаксис match. Поверь мне я в состоянии самостоятельно отрефакторить этот код не хуже чем ты. Но просто суть в том, что в этом коде неважно, что конкретно делается, важно какими средствами.


Сферический конь в вакууме? Ну-ну. Важно то, для чего какие средства есть.
Подсказка: паттерн-матчинг != switch/case. Соответсвенно, весь пример не репрезентативен. Что и было проиллюстрировано.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[23]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.02.06 13:23
Оценка: +2
Здравствуйте, Vermicious Knid, Вы писали:

VK>Пока конкретных предложений я не услышал.


Может не нужно сразу сложную, а проще что-нибудь, знакомое публике? Например, вот эта задача
Автор: AndrewVK
Дата: 13.07.05
.

Причем интересно как с парсингом XML-я (может быть даже в compile-time), так и создание специализированного DSL на макросах специально для этой задачи.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 21.02.06 17:42
Оценка: :))
Здравствуйте, IT, Вы писали:

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


IT>Знать всё невозможно.


Вы меня пугаете. Какое такое всё? Это за пару семестров вдалбливается тривиально. А если человек уже отучился, мозги натренировал, то за пару месяцев.

IT> К сожалению. На это просто не хватит времени.


Время надо было раньше тратить. Когда оно было.

IT> Хотя нет, всё же знать очень много можно, если только тем и заниматься, что постоянно изучать всё новое. Но тогда не останется времени на работу. Если же только и делать что работать, то не будешь ничего знать. Как обычно руль посередине


Как уже тут обсуждалось, работающий студент — пропавший для общества студент. Отработанный материал. Социальный труп...

WP>> Легко: ADT, pattern matching, list comprehensions, annotations (уже есть в примитивном виде — контракты, но грядёт скоро вообще полная щастя), Pi calculus (в свете XBox360 и Cell — мегаактуально, так что скоро всем индусам придётся эту математику изучать), ну и всенародно любимые DSL-и, конечно же. Они и так внедрены, но пока народ не знает, как это называется, и формальными методами не владеет. Скоро завладеют.


IT>Многое из этого уже есть и давно широко используется, кое что появляется (в том же Nemerle) и будет скоро широко использоваться. Но всё это мелочи (кроме пожалуй DSL), техники, на технологии и парадигмы никак не тянут. Мир они не перевернут и даже особенного шороха не наделают.


Перевернут. Всё это вместе убьёт индусов. Кодирование станет настолько простым и автоматизируемым делом, что недоучки из программирования вылетят, улицы подметать пойдут или бигмаками торговать. И это будет радость великая!
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 09:36
Оценка: +2
Здравствуйте, vdimas, Вы писали:

V>Блин, столько писать... Да проще уже "по-честному" это проперти нарисовать. Можно подумать, что это — принципиально.


Не принципиально. Но проще ли? Сравниваем:

// Делай раз
[Accessor(WantSetter = true)]
mutable _somePropery : int;

// Делай два
private mutable _somePropery : int;

public SomePropery : int
{
  get { _somePropery }
  set { _somePropery = value; }
}

А ещё "делай раз" рефакторить проще. Да и соглашения об именовании соблюдаются автоматически А если не нравятся такие соглашения, можно явно указать property name или взять сорсы Accessor и написать свой макрос по мотивам.
Re[29]: Новая версия макроса
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 11:26
Оценка: -1 :)
Здравствуйте, Oyster, Вы писали:

O>В общем, в итоге мне удалось решить Re[28]: Вопрос
Автор: Oyster
Дата: 22.02.06
, но какой ценой...:


В C++ для подобных экспериментов изобрели Boost. В .NET-е, похоже, Nemerle с макросами.
Впечатление почему-то от исходников того и другого одинаковое


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 12:22
Оценка: +2
Здравствуйте, WinniePoh, Вы писали:

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


А мне его великолепный синтаксис не понравился почему-то.

WP>Почем не стал популярным ML?


Тут не знаю.

WP>Почему стал популярным Perl, не смотря на ужасный синтаксис?


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

Кстати, не настолько уж он и популярен — наверное, даже PHP популярней.

WP>Почему стал популярным кривой и страшный PHP?


У него как раз C-подобный синтаксис

WP>Почему не стал популярным Лисп с синтаксисом Паскаля (R-Lisp)?


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

WP> Популярность от качеств технологии не зависит вообще. Популярность — это как мода, трудноанализируемая и иррациональная гадость.


Но ведь не появляется популярность из воздуха, правда? Хочешь, я открою тебе маленькую тайну — как правило, популярной в данной области становится технология, позволяющая решать задачи из этой области эффективнее всего. Вот и всё. Лисп такой технологией не стал, потому что не все могут ломать себе мозг. Я не могу, например, — видно, таланта не хватает.

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


Кто ж это такие — эти "серьёзные люди", которым наплевать? Я бы на их месте задумался, почему PHP так популярен, прежде чем начинать новый проект сайта на Perl.

WP>Так что мне просто противно когда ту или иную технологию начинают оценивать с позиций популярности.


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

WP>Это ведь ровно то же самое, что опустить себя на уровень серых обывателей, низших слоёв общества. Не боязно вам испачкаться, начиная такие сомнительные штудии о вкусах и предпочтениях серых масс?


Не, мне не страшно пачкаться. Да и не буду я себя опускать на уровень этой серой массы — я и так на этом уровне И все мы на этом уровне, просто кто-то рвёт тельняжку на груди и кричит "Абсент фарева", а кто-то тихо себе пьёт более эффективную и выгодную водку.

В итоге-то мы все пишем софт для других людей — всего и делов.
Re[33]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 23.02.06 01:03
Оценка: :))
Здравствуйте, VladD2, Вы писали:

VD>Сейчас попробую...

VD>Попробовал. Твой код работат.

Вы чё там пишите? Машину времени? Да... всё-таки pattern matching великая сила
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[30]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.02.06 22:47
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>Вот T-SQL или PL-SQL как раз полноценные языки, так как это обычные императивные ЯП с встроенным SQL.


Сделаешь хеш-табличку на T-SQL?
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 24.02.06 02:36
Оценка: -1 :)
Здравствуйте, vdimas, Вы писали:

V>Давайте лучше Лисп (а еще лучше — Схему) для дотнет напишем.


И появится философский вопрос: нафига козе баян, то есть — зачем Лиспу бакенд в виде .Net?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[39]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 24.02.06 12:57
Оценка: +1 :)
Здравствуйте, Oyster, Вы писали:

O>Совершенно верно — макросы Nemerle работают во время компиляции. Но я не уверен, что это минус


Для меня, как бы, толи очевидна, толи "философски обоснована" ограниченность возможностей времени компиляции.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[34]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 24.02.06 20:28
Оценка: :))
Здравствуйте, VladD2, Вы писали:

VD>За штуку баксов (на спор) я готов написать реализацию хэш-таблицы на T-SQL. Если не страшно можешь поставить свою штуку против моей?


Готов посудействовать за 25%. Ну что бы всё было честно
Если нам не помогут, то мы тоже никого не пощадим.
Re[28]: Новая версия макроса
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 11:07
Оценка: 27 (1)
Здравствуйте, Vermicious Knid, Вы писали:

В общем, в итоге мне удалось решить Re[28]: Вопрос
Автор: Oyster
Дата: 22.02.06
, но какой ценой...:

using Nemerle.Compiler;
using Nemerle.Compiler.Parsetree;
using Nemerle.Collections;
using Nemerle.Macros;
using Nemerle.Utility;

namespace Oyster
{
    macro metaclass(className, body)
    syntax ("metaclass", className, body)
    {
        def ctx = ImplicitCTX();
        mutable code = [];
        match (body)
        {
            | <[ { .. $props } ]> =>
                foreach(<[ $(n : name) : $(t : name) ]> in props)
                {
                    code ::= <[ decl:
                        [Accessor]
                        mutable $(n.NewName("_" + n.Id) : name) : $(t : name) ;
                    ]>;
                }
            | _ => Message.FatalError($"Invalid metaclass syntax, expected properties definition, got $body");
        }
        
        // Вот тут начался настоящий изврат - делаем новый TypeDeclaration.
        // Может, можно как-то иначе?
        // Правда, этот код можно написать один раз и реюзать...
        def typedecl = <[ decl: [Record] public class $(className.ToString() : usesite) {} ]>;
        def newTopdecl = TopDeclaration.Class(
            typedecl.Location,
            typedecl.name,
            typedecl.modifiers,
            typedecl.td.typarms,
            (typedecl.td :> TopDeclaration.Class).t_extends,
            code.Reverse());
        def builder = ctx.Env.Define(ClassMember.TypeDeclaration(
            typedecl.Location,
            typedecl.name,
            typedecl.modifiers,
            newTopdecl));
        builder.Compile();
        <[ () ]>
    }
}
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка: 23 (1)
Здравствуйте, AndrewVK, Вы писали:

AVK>Впрочем и с функциональщиной все не просто. Она тоже не есть безусловное добро, с ней крайне легко переборщить. Собственно, мне кажется что все (из тех что мне известны) функциональных языков таки переборщили.


Познакомься по ближе со Скалой и Нэмерлом тогда обсудим что там перебор, а что нет.

AVK>LINQ вроде бы еще нет.


LINQ — это тупиковая идея. Они делают не универсально то, что можно сделать универсально.
Эти скупые попые попытки ввести в язык лямбды, деревья выражения (реально AST) и в итоге DSL для одной специфической задачи есть скорее ошибки дизайров вызванные боянью и не решительностью нежели рельными достижениями. Достижениями это все выглядит только на фоне совсем не развивающихся языков.

Нэмерл сегодня рвет в клочья то что будет в C# 3.0 через хрен знает сколько времени.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[29]: Новая версия макроса
От: Vermicious Knid  
Дата: 22.02.06 12:39
Оценка: 22 (1)
Здравствуйте, Oyster, Вы писали:

O>В общем, в итоге мне удалось решить Re[28]: Вопрос
Автор: Oyster
Дата: 22.02.06
, но какой ценой...


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

На самом деле ты опередил меня ровно на один шаг, я сам хотел предложить такой вариант. Правда я хотел засунуть весь этот код в оберточный класс.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 21.02.06 10:16
Оценка: 13 (1)
Здравствуйте, eao197, Вы писали:

ANS>>Я не знаю как ты считал строчки кода, но в любом случае, это лучше чем тот кусок спагетти, что привёл ты.


E>+1


E>Андрей, а ты мог бы этот же пример на Smalltalk написать? Хоть это и оффтопик в данной ветке, но лично мне очень интересно чистое ОО решение увидеть.


В конкретно данном случае, когда логики почти нет, а есть одни аксесоры, то код объектной модели такой же и будет Только без декларации типов, модификаторов и пр. (я там vitual забыл расставить). А разница могла бы быть в процессе разработки.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 07:57
Оценка: 10 (1)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Н-да, так розгарячился, что не ту ссылку привёл . Имелся в виду вариант со switch
Автор: Vermicious Knid
Дата: 20.02.06
ес-сно.


[Офф]
В автомодерилке можно своё сообщение "удалить как ошибочное". Это такой вариант правки сообщений для простых смертных
[/Офф]
Re[31]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 27.02.06 16:16
Оценка: 10 (1)
Здравствуйте, Andir, Вы писали:

A>Откуда это взято? Я вроде как слежу за развитием монодевелопера, но ни разу не слышал о том, что он отпочковался от SharpDevelop ...


Честно говоря точно не скажу. Точно попадалось на сайте шарп-девелопера да и на go-mono по-моему было. На icsharpcode.net можно еще вики посмотреть — там помнб была какая-то трогательная история о том, как они хотели сделать шарп-девелоп межплатформенным и что из этого вышло.
А вообще мне казалось, что это общеизвестный факт. Даже вот на википедии пишут — http://en.wikipedia.org/wiki/MonoDevelop
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.03.06 14:40
Оценка: 7 (1)
Здравствуйте, Oyster, Вы писали:

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


O>Именно что странного ибо студия такого не поддерживает. А чем тебя не устраивают несколько проектов на разных языках в одном solution (в 2003-й и того не было)?


Ошибаешся. Студия теперь поддерживает все что хочешь, так как компилирует файлы она с помощью MSBuild. На сайте есть моя статья по MSBuild. Прочти ее внимательно и все поймешь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.03.06 10:44
Оценка: 7 (1)
Здравствуйте, Oyster, Вы писали:

O>Там нет "удобств"... Отсутствие Intellisense бесит, конечно, но его сейчас вообще нигде нет для Nemerle. Главное — там есть дебаг.


Отладчик можно и отдельно запускать.

Кстати, расширение в VS лучше с С++ ассоциировать. Подсветка будет по приличнее. А ключевые слова можно попробовать в качестве определяемых ползователем задать. Раньше студия это допускала.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[41]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.02.06 15:47
Оценка: 6 (1)
Здравствуйте, IT, Вы писали:

IT>Чем ограничена?


Желанием сделать что-то очень тормозное.

Если серьезно, Нэмереловцы работают над рантайм-кодогенерацией. Но лично мне за глаза хватило бы компайл-тайм решений.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.06 23:53
Оценка: 5 (1)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Увы, слова про "хрень" — действительно "как обычно". И, таки так, восхищения у меня они не вызывают.


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

ANS>Влад, сопостовление с образцом это средство связывания данных с кодом их обрабатывающим, можно сказать средство создания контекста выполнения. Вот тебе пример из A Gentle Introduction to Haskel:

...

Спасибо, я знаю что такое сопоставление с образцом.
Что бы не трепаться почем зря, сделаем по другому. Я приведу кусок кода, а ты его перепишешь. ОК?
Вот на сайте Нэмерла в примерах лежит реализация LL-парсера:
http://nemerle.org/phpBB/viewtopic.php?t=13
Попробуй переписать его используя "другие способы как передачи управления, так и связывания кода с данными". Птом сравним результат.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Снова о Nemerle или профанация не пройдет :)
От: vdimas Россия  
Дата: 24.02.06 17:56
Оценка: 5 (1)
Здравствуйте, VladD2, Вы писали:

VD>http://www.lsharp.org/

VD>http://dotlisp.sourceforge.net/dotlisp.htm (Схема)
VD>http://www.cs.indiana.edu/~jgrinbla/ (Схема)
VD>C:\Program Files\Microsoft.NET\SDK\v1.1\Tool Developers Guide\Samples\clisp
VD>http://www.ccs.neu.edu/home/jrm/download.html

VD>И это далеко не все.


VD>То что тебя не устраивают разные там диалекты или еще что — это твои личные проблемы. В мире Лиспа это норма.


Ты правильно сделал, что поставил смайлик напротив SDK\...\Samples\clisp, надеюсь это от того, что ты все-таки заглянул туда и посмотрел на то, что там лежит.

Насчет остального — списочек маловат, у меня в несколько раз поболе будет, но картина от этого не меняется. Есть стандарт, скажем, на Схему. Есть несколько замечательных реализаций на С/С++ (гнутая в т.ч.), есть даже одна неплохая реализация для Java (остальные для Java опять же — слишком неполно реализовали стандарт, по-сути тянут на чьи-то несерьезные эксперименты). Так вот, для дотнета НЕТ НИ ОДНОГО проекта, который бы реализовал стандарт R5SR (текущий стандарт Схемы).

Переходим к Лиспу... (Хотя, Схема мне импонирует больше).
В мире Лиспа есть CommonLisp. И куча его совместимых реализаций, т.е. не тулько гнутая. Это означает, что программы на Лиспе можно распространять хотя бы в исходниках. Для дотнета НЕТ ПОДОБНОЙ РЕАЛИЗАЦИИ.

Особенность CommonLisp-а в том, что для того, чтобы его реализовать, ядро Лисп-системы должно имплементировать совсем небольшой список возможностей, все остальные либы и стандартные процедуры Лиспа затем уже пишуться на самом Лиспе, начиная от этих самых тривиальных процедур ядра. Понимаешь теперь, о чем речь? Все эти реализации не предоставляют достаточный список даже базовых возможностей. О диалекте речь не идет, ибо диалекты Лиспа в основном отличаются набором "стандартных" процедур. Т.е., взяв некое самодостаточное ядро Лиспа, на нем можно накатать кучу диалектов.

Но это не вся проблема. Проблема в непонимании того, как системы типа Лиспа должны использовать VM.Net для получения приемлимой эффективности. Я видел только один (!!!) проект, в котором разработчики подошли к этому вопросу грамотно (компилятор Схемы пишут). Проект очень неплох, но еще очень сырой. К тому же, у них основной упор — это использование Майкрософтного оптимизирующего бакенда компилятора ("феникс" вроде) для построения оптимизирующего компилятора Схемы. интерпретатор в их системе даже и не планируется. А для меня этот пункт — самый важный.

Вот такое положение дел пока. Я уверен, что через пару лет кое-что может измениться, но пока именно так.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[29]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 17.02.06 20:10
Оценка: 4 (1)
Здравствуйте, eao197, Вы писали:

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

E>Но моя исходная мысль была в другом. Когда появляется интересный и удобный язык (именно язык), обычно для него нет IDE и продвинутых инструментов (насколько помню, даже с Java у Sun была подобная ситуация). Сначала язык пробуют разработчики-экстремалы (может быть в чем-то типа меня).

Вот интересно получается. О чем вы тогда с Владом спорите? Влад тоже экстремал который пробует новый язык Nemerle, не имеющий на настоящий момент времени IDE и даже не особенно законченный. Сдается мне что "эффект пандоры" здесь коренится в самом понятии "пробовать". Пробовать — не значит использовать. С удовольствием пробовал/пробую экспериментальные языки программирования. Да и "блокнотом с подсветкой" я не прочь иногда попользоваться, чтобы потестировать какие-нибудь алгоритмы — причем это зачастую бывает куда удобнее чем возиться с тяжелой и неповоротливой студией. Однако я никогда стану воспринимать язык программирования "всерьез" пока вокруг него не образуется так называемая "development environment", которая — хорошо ли это или плохо — необходима разработчикам для продуктивного использования этого языка.
Т.е. можно сказать, что есть 1) разработчик, вполне конкретный человек со своими вкусами, предпочтениями и "тараканами" в голове, а есть 2) разработчикам, серая масса, "community", приведенная к некоему общему знаменателю, которой нужен и дебагер, и студия, и двадцать четыре других удобства — и промышленное распространение языка возможно лишь в том случае, когда получится угодить не просто разработчику, а именно разработчикам. В противном случае у нас останется просто диздок или слегка глючащий компилятор, с которым мы будем играться в свободное от работы время.

E>Пример с C#, имхо, чуть выбивается из общей массы. Но он и не такой уж типичный. Ведь со одной стороны, C# толкала Microsoft со всеми ее возможностями и опытом в средствах разработки. С другой стороны, C# не настолько уж сильно отличается от C++ и Java, что так же способствует более быстрому возникновению спроса на IDE. И, кстати, для C# есть автономная IDE не от MS?


Есть, хотя и не состоявляющие особой конкуренции студии. Например, SharpDevelop и отпочковавшийся от него в свое время MonoDeveloper, позицируемый как среда под юникс-системы. Борланд одно время развивал свой C# Builder, но потом забил на него и смержил это дело с какой-то новомодной версией Дельфы. Была еще как минимум одна межплатфоменная среда для C#, но сейчас уже не вспомню ее названия.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 25.02.06 04:34
Оценка: 2 (1)
Здравствуйте, vdimas, Вы писали:

V>Не Лиспу, а мне, то бишь девелоперу. Машина Лиспа представляет из себя практически идеальный механизм построения эффективных интерпретаторов.


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

V>Мне нужно именно последнее, плюс возможность использовать этот интерпретатор в дотнете (не обязательно с Лиспа, почитай ниже мой ответ eao197).


Я почитал, но, ИМХО, это неудачное использование Lisp. Я думаю, что лучше было бы генерировать Lisp-машиной исходный текст интерпретатора, который потом скармливать тому же C# и деплоить сборку с готовым к употреблению интепретатором. Даже лучше будет, если учесть, что таким образом ты избавляешься, как минимум, от необходимости писать собственный отладчик Lisp-а, заниматься вопросами интеграции самой Lisp-машины с .Net и решать проблемы с незащищённостью Lisp-кода.

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

Притом обрати внимание, если ты озабочен защитой интерпретатора и среды исполнения от несанкционированого воздействия/чтения и т.п., то всё равно придёшь к необходимости генерировать объектный код в том или ином виде. Результат можно выдать в виде асссемблера или квазиассемблера. Prolog и Lisp одно время модно было компилировать в C, поскольку этих компиляторов везде предостаточно. А чем будет генерироваться такой код, совершенно неважно. Это может сделать и написаный тобой .Net-Лисп, и, скажем, Common Lisp, поскольку тут главная проблема — переложить Лисповские выверты вроде самомодификации программы (ещё точнее — игрища с eval/apply) на семантику целевой машины. Кстати, AFAIK, компиляторы Lisp так и поступают — при подозрении на самомодификацию программы просто пихают вместе с объектным кодом исходники на Лиспе или сам компилятор. Какой-то из ранних Lisp-ов некоторые программы вообще не мог компилировать.

Да и вообще, лучше сначала с самим языком "для бухгалтеров" определиться, бо здесь можно наступить на грабли с большими, тяжелыми и остро заточенными ручками. Такие аспекты, как синтаксис, грамматика и семантика языка по-любому придётся прорабатывать — и в случае DSL, интепретирумого Lisp-ом, и в случае, описанном мной.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 14:03
Оценка: 1 (1)
Здравствуйте, IT, Вы писали:

IT>На Лиспе можно воспроизвести синтаксис ну хотя бы C?


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

Но проблема с расширяемыми языками и DSL, в частности, в том каждый может придумать свой язык для решения своей задачи. И язык будет удобен только ему. А другой разработчик может решить, что эту же задачу нужно решать по другому. И все это дело нужно будет сопровождать. И системы, которые будут написаны на таких расширениях/DSL так же нужно будет сопровождать. А изменить DSL, когда на его основе написано пару сотен тысяч строк кода будет уже не просто. И еще хуже, что на расширяемых языках можно создавать DSL не для декларативных описаний, а для программирования. Вот сделает кто-нибудь собственный вариант foreach-а и попробуй затем от него избавиться.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.02.06 17:50
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD>И все же проблем более чем достатчно. Например:

VD>1. Если захчется вставлять рукописыный код, то гемороя сразу становися масса, так как для твоего генератора код является простым текстом.

Я тоже раньше так думал. И думал что без парсеров и встраивания в язык нормальная кодогенерация невозможна.
А потом оказалось что потребность руками что то дописывать в автогенеренный код свидетельствует на некачественном разделении на аспекты. К примеру добавлять метод WriteXml к объекту графа не есть правильно, потому что завтра понадобится еще куда нибудь сериализовать — что ж, менять публичный интерфейс и генераторы? Куда разумнее сделать генератор внешним классом, а для классов графа сделать модель, позволяющую сериализовать этот граф некоторому абстрактному сериализатору. В этом случае никакого желания править автогенеренный код сериализатора не возникнет, как не возникает желание править код, который сейчас генерит фреймворковский XmlSerializer.
Disclaimer: все вышесказанное, разумеется, основано на моих задачах. На других задачах все может быть по другому.

VD>5. Такой подход годится только для генерации обособленных модулей. Он не годится для встраивания микро-DSL-ей в базовый язык.


Не годится. Но меня собственно сама идея этих DSL, встроенных в основной языке, смущает.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re: Снова о Nemerle или профанация не пройдет :)
От: VladGalkin Украина  
Дата: 21.02.06 09:27
Оценка: 1 (1)
Здравствуйте, IT, Вы писали:

IT>3. MS купит команду Nemerle и конкуренция будут происходить в самой MS.

Собственно, в доке "Meta-programming in Nemerle", нашел следующую сноску:

The Nemerle project is supported by Microsoft Research ROTOR2 grant.

Так что конкуренция и происходит среди разработчиков, спонсируемых MS.
... << RSDN@Home 1.1.4 stable rev. 510>>
ДЭ!
Re[24]: Снова о Nemerle или профанация не пройдет :)
От: vdimas Россия  
Дата: 23.02.06 07:50
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD>Хм. Динамически компилировать генерируемый код только для того, чтобы один раз его выполнить? А будет ли это быстрее интерпретации?


Классичесский Лисп — это и не компилятор и не интерпретатор в майнстримовом понимании. По мне — это скорее компилятор, но компилятор не в нативный или там байт-код, а в Pair(Cons)-списки данных. Тело процедуры — это цепочка Лисп-объектов, т.е. данные, и эти данные выполняются (в терминах Лиспа — вычисляются). Базовые примитивы Лисп-машины написаны обычно на некоем языке, близком к машинному (С/С++/С#), а весь остальной Лисп — это именно в таком виде скомпилированные процедуры, символы и атомы. Оптимизирующие компиляторы Схемы потому и могут генерировать оптимизированный код, что во время исполнения доступны тела процедур.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[21]: Снова о Nemerle или профанация не пройдет :)
От: vdimas Россия  
Дата: 24.02.06 09:39
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

V>>Давайте лучше Лисп (а еще лучше — Схему) для дотнет напишем.


VD>Уже давно написаны.


-1

Стоило ли так подставляешься громкими высказываниями, не имея ни малейшего представления о существе вопроса?

V>> А то все то, что есть на сегодняшний момент для дотнет немного сыро и криво.


VD>-1


В отличие от, я просмотрел ВСЕ имеющиеся на сегодняшний момент под дотнет реализации Схемы и Лиспа (интересует больше Схема, разумеется, т.к. в отличие от Лиспа имеет стандарт и более четко определенные границы философии языка). Единственное более-менее нормальная реализация Схемы поддерживала прошлый стандарт R4SR, что меня совершенно не устроило. Так же есть пара неплохихи компиляторов со Схемы в дотнетный байт-код, но это опять же не то, что мне надо. Мне нужна система, в которой есть и компилятор и интерпретатор и нормальная поддержка стандарта R5S5. Такой системы на сегодняшний день нет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[40]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.02.06 13:09
Оценка: 1 (1)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

O>>Совершенно верно — макросы Nemerle работают во время компиляции. Но я не уверен, что это минус


ANS>Для меня, как бы, толи очевидна, толи "философски обоснована" ограниченность возможностей времени компиляции.


+1

Ага, динамические языки накладывают отпечаток на мировосприятие



SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: xhalt Украина  
Дата: 06.03.06 13:08
Оценка: 1 (1)
Здравствуйте, Дарней, Вы писали:

Д>Правда, предварительно нужно будет добить до мало-мальски пригодного состояния плагин для VS.

Д>Про всякие автокомплиты и рефакторинги мечтать пока рано, но хотя бы
Д>обеспечить возможность редактировать/компилировать/запускать/отлаживать
Д>в студии — это обязательно.
Программа минимум (в перечисленной тобой функциональности) доступна хоть сейчас,
причём без плагинов.
В пакете с Nemerle идут .targets для MSBuild.
Делается ручной хак .csproj-файла путём замены targets от C# на Nemerle'вские.
Для файлов .n не забываем ставить Build Action — Compile.
В качестве редактора — настраиваем на .n-файлы встроенный "Script Editor".
Подсветка не ахти, но лучше чем ничего.

Отладка получается полноценная — с бреакпойнтаими, просмотром/модификацией переменных и т.п. Ну, разве что, Edit&Continue нету.

P.S. Кому не лень и свободное время есть — можно сделайть простенький темплейт проекта.
Хотя более практичнее было бы помочь основной команде с разработкой плагина.
... << RSDN@Home 1.2.0 alpha rev. 0>>


Предлагаю работу в Киеве
Автор:
Дата: 04.05.06
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.03.06 14:40
Оценка: 1 (1)
Здравствуйте, Oyster, Вы писали:

O>Здравствуйте, Дарней, Вы писали:


O>>>Дык зачем обрабатывать? Я уже всё сделал вроде...


Д>>прямо-таки всё?


O>Да, это есть. Просто у студии в таком случае встаёт вопрос — как компилировать? У неё один проект соответствует одному MSBuild-проекту,


Не "соотвествует", а "является"...

O> соответственно один проект == один build target, насколько я понял.


А вот это не верно. Target-ов может быть любое количество. Как, по-твоему, в студии ресурсы компилируются? В каждом Шарповском проекте присутствует вот такая строчка:
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->

Как ты думашь, что она означает?

O>Вот поддержка нескольких модулей в сборке — совсем другое дело, как писал xhalt
Автор: xhalt
Дата: 07.03.06
.


С MSBuild-ом можно все! Это ведь натуральный скрипт. А чтобы студия открывала проекты нужно всеголишь не удалять из них ссылку на Microsoft.CSharp.targets.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.02.06 05:57
Оценка: +1
Здравствуйте, eao197, Вы писали:
E>Ошибаешься, нужны. Мегафичи и IDE -- это ортогональные понятия (если язык нормальный). А если язык такой, что на нем можно только в супер-пупер IDE мышкой возюкать, тогда да, без IDE никак.
По-моему, это слишком узкое понимание сути процесса. Я вот насколько знаю, первый редактор текстов требовал ручного стирания нужных пикселов для получения глифа каждой буквы.
Однако программисты быстро поняли, что даже команда copy con > test.c слабовата для написания программ. И были придуманы всяческие текстовые редакторы. (Что характерно, большинство из них крайне хреново заточены под написание текстов. Я, конечно, слабо знаком с юниксовым миром — там есть какой-то аналог грамматики из Ворда?)
Действия, поддерживаемые этими редакторами, все больше подходят для написания программ.
И тут мы начинаем задаваться вопросом: а что такое текстовый редактор? Какие его функции влияют на производительность пользователя?
Как ни странно, окажется, что полезны те функции, которые позволяют адекватно оперировать предметом редактирования. Проще говоря, чем ближе терминология редактора к языку программирования — тем лучше. Та же самая контекстная замена слабо полезна, если не умеет быть case-sensitive или insensitive в соответствии с соглашениями языка.
Галочка find whole words only крайне облегчает работу, если понятия редактора и компилятора о границах слов совпадают.

Двигаясь дальше в эту сторону, мы обнаружим в хорошем редакторе для произвольного ЯП основные черты современной IDE. Тут будет и свертка регионов, и раскраска синтаксиса, и интеллисенс, и навигация по коду, а еще дальше мы увидим выделение кода в метод, переименование класса и прочие рефакторинги.
А двигаясь назад, мы обнаружим, что даже автоиндент не является непременным свойством просто текстового редактора. И эффективность труда в таком редакторе близка к эффективности все той же copy con> test.c.

Поэтому мне совершенно непонятно, зачем бороться с инструментом, который объективно ускоряет написание кода. Может, конечно, это языки такие убогие; но я не знаю языка, который бы не выиграл от внятного редактора. Даже HP-GL я бы предпочел с раскраской синтаксиса и операциями типа scale fragment
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 12:17
Оценка: +1
Здравствуйте, eao197, Вы писали:

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


Этого я и боюсь. В конце концов OpenC++ не вчера появился, а широкого признания все нет.
Впрочем и с функциональщиной все не просто. Она тоже не есть безусловное добро, с ней крайне легко переборщить. Собственно, мне кажется что все (из тех что мне известны) функциональных языков таки переборщили. LINQ вроде бы еще нет.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re: Снова о Nemerle или профанация не пройдет :)
От: GlebZ Россия  
Дата: 15.02.06 12:31
Оценка: +1
Здравствуйте, IT, Вы писали:


IT>Да прекращай ты народ и самого себя запугивать. Ничего никому не выгодно. Всё течёт и развивается своим естественным путём. Посмотри хоть на проект Nemerle. У этого проекта есть только три варианта развития:


IT>1. Nemerle станет достаточно популярен и отберёт у C# существенную, а со временем возможно и всю нишу. MS будет курить в сторонке.

Скорее в С# вделают некоторые фичи языка.
IT>2. MS прекратит баловаться всякими детскими штучками типа LINQ и начнёт развивать C# по взрослому. Тогда будет два конкурента, что есть гуд.
Насчет LINQ IMHO Самым важным в LINQ не upgrate языка, а то что он представляет конкуренцию стандартам типа JSR1700 Явы. То есть, возможность построения репозитория.
IT>3. MS купит команду Nemerle и конкуренция будут происходить в самой MS.
Это юридически сложно сделать.

IT>Но, в любом случае, у MS нет шансов остановить этот процесс. Через год-два на Nemerle начнут делаться большие проекты, через три-пять функциональщина и макросовщина начнут становиться такой же привычной вещью в мейнстриме, какой 15 лет назад становился ООП.

Лиспу это не помогло
IT>Те, кому выгодна профанация остановить это не смогут. Да и невыгодна она никому.
Язык — это не только средство производства. Язык — это политика. Это средство влияния. Залез на Net, большая вероятность что будеш использовать другие средства Microsoft.


Да никто не будет переходить на Nemerle. Будет узкоспециализированным языком. Потому как нужен маркетинг(в маркетинг Java и С# были вложены огромные средства). Потому как нужны люди которые бы умели фичи пользовать. А таковых единицы.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 13:21
Оценка: +1
Здравствуйте, eao197, Вы писали:

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


Наоборот народ сейчас начинает во всю кричать о DSL'ях, даже JetBrain этим серьёзно увлекается.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 15:40
Оценка: :)
Здравствуйте, WinniePoh, Вы писали:

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


WP> Опыт примитивных кодеров никого не интересует. Опыт Грэма или Зибеля гораздо интереснее чем опыт Васаяты Пупапрамабрахмы из солнечной Индии.


У программистов (как и у начинающих курильщиков) есть большая проблема -- мы все думаем, что умнее других, и что для нас важнее опыт Грэма или Зибеля, чем Васи Пупкина из соседней комнаты. Мы ведь не будем всякой фигей страдать, мы знаем что мы делаем.

WP> Отстойный эффект. Вокруг маленького сморщенного кодишки на Жабе наворачивается огромная колбаса из кривенько слева прилепленных макропроцессоров — Ant, Hibernate, JSP.


Давай определимся о предмете спора. Как я понимаю, изначально Nemerle предрекали успех и широкое распространение (C++ killer, следующий после C# язык и пр.). Т.е., что по популярности Nemerle начнет тягаться с Java. В это я не верю. Если тебе так не кажется, то опиши, почему ты думаешь, что Nemerle ждет широкое распространение. Это интересно, серьезно, без подколок и провокаций.

То, что на Lisp-е можно делать (и делают) что-то удобнее и проще, чем на Java -- да ради бога. Против этого я не возражал. Но факт остается фактом, по популярности Lisp с Java не сравнится (хорошо это или плохо -- другой вопрос, меня вообще больше C++ и Ruby интересуют, так уж сложилось). И я думаю, что при удачном для Nemerle стечении обстоятельств он достигнет той же популярности, что и Lisp. И одной из причин, по которой он не сможет тягаться с популярностью Java или C# -- это как раз макросы.

WP> Так что вы бы почитали Грэма и Зибеля, полезно очень. Даже если потом всю оставшуюся жизнь на Жабе кодить будете — всё равно ЭТО надо знать.


Да у меня тут репутация воинствующего безграммотного чукчи-писателя, а не читателя. У меня больше времени отнимает собственное изобретательство, чем чтение классиков



Вообще интересно, почему представители отдельных направлений (Lisp-оведы, функциональщики, C++ники, некоторые дотнетчики) такие вспыльчивые? Чуть что -- сразу на дыбы...
Со Smalltalk-еров пример нужно брать -- милейшие люди, никого не обижают
Может это Smalltalk благостному расположению духа так способствует?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 15.02.06 15:48
Оценка: +1
Здравствуйте, WinniePoh, Вы писали:

IT>>Но, в любом случае, у MS нет шансов остановить этот процесс. Через год-два на Nemerle начнут делаться большие проекты, через три-пять функциональщина и макросовщина начнут становиться такой же привычной вещью в мейнстриме, какой 15 лет назад становился ООП. Те, кому выгодна профанация остановить это не смогут. Да и невыгодна она никому.

WP> Она выгодна сейчас, на локальном уровне. Мне проще купить 10 индусов чем одного оксбриджа.
Тут не все так однозначно. Например на моей прошлой работе продукт пишут 2 практически не зависимые комманды. Одна состоит из индусов, а вторая из оксбриджей.(с поправкой на то что во России ни тех ни других нету)
А сделано так по тому что в одном случае нужно пидалить очень много простого кода, а вотором меньше но очень сложного.
Посадить оксбриджа пидалить бизнес логику дорого да и оксбридж будет очень не счатлив, а посадить индуса писать сервер приложений... он там тАкого напишет...
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 17:12
Оценка: -1
Здравствуйте, IT, Вы писали:

AVK>>Этого я и боюсь. В конце концов OpenC++ не вчера появился, а широкого признания все нет.


IT>А что в OpenC++ принципиального, чтобы его широко признали?


Те самые синтаксические макросы.

AVK>>Впрочем и с функциональщиной все не просто. Она тоже не есть безусловное добро, с ней крайне легко переборщить. Собственно, мне кажется что все (из тех что мне известны) функциональных языков таки переборщили. LINQ вроде бы еще нет.


IT>По-моему, LINQ — это баловство. Лучше бы они время на что-нибудь другое потратили. Сделали бы лучше макросы и этот LINQ на них можно было бы делать в качестве домашнего задания студентам.


Нет, LINQ не баловство, а промышленное решение, которое можно будет использовать уже сейчас. А рукопашные фокусы с AST пока еще не вылезли из научно-исследовательских штанишек.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 17:43
Оценка: :)
Здравствуйте, vitaly_spb, Вы писали:

_>Насчет проекта — проект пока может быть и не слишком крупный, но для серьезного заказчика и в будущем по планам должен сильно развиться. Выбран VB.NET был т.к. американская сторона не знала .NET и синтаксис VB был для них хоть сколько-то понятен.


Вам не повезло с американской стороной. Правильные американские стороны сегодня пишут в объявлениях на работу — расзаботчиков с ВБ бэкграундом просьба не беспокоить.
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 15.02.06 18:21
Оценка: :)
Здравствуйте, IT, Вы писали:

IT>А почему "Тоже мне"? Решарпер к 2003 студии по своим возможностям рвёт рефакторинг от MS в 2005 как тузик грелку. А за IDEA я вообще молчу. Так что кто лучше умеет делать IDE — это очень большой вопрос.

Нет это не вопрос вобще...
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 15.02.06 20:48
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Поведай нам свою версию


Ну дык.. делиться надо в том числе и возможностью сделать рефакторинг для студии.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 20:58
Оценка: +1
Здравствуйте, Воронков Василий, Вы писали:

IT>>Поведай нам свою версию


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


Тогда зачем они добавили рефакторинг в 2005?
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 21:34
Оценка: :)
Здравствуйте, GlebZ, Вы писали:

WP>> А что с ним стало то? Живет он, да чтоб я так жил. Секретное оружие крутых разработчиков.

GZ>Именно секретное. Большинство разработчиков, кроме такого слова Lisp, и сказать то ничего не могут.

Ну, это не разработчики, а так, ремесленники. Любители. Разработчики — это кто computer science формально учил, а тут уж мимо Лиспа пройти никак не получится, нет таких программ обучения, где не было бы Лиспа.

GZ> И еще, в Lisp когда-то были вложены большие бабки(Lisp-машины). Но не пошло. Хотя Lisp тогда был немного другим.


Не потянуло то железо. Дорогое слишком. По той же причине много другого хорошего железа померло — и Лисп тут не при чём. Было например такое железо как NeXT — после него Objective C остался, DPS остался, NeXTstep остался — а железо скопитилось. Так и Лисп машины, и, увы, транспьютеры (по ним скорблю я более всего, их реально жаль). Лисп остался, Оккам остался, а железо скопитилось. Были кстати и Java-машины. Не те примочки к ARM, которые имеем сейчас, а настоящие. Скопытились. А Java осталась, чтоб ей пусто было.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 22:12
Оценка: +1
Здравствуйте, WinniePoh, Вы писали:

WP> Ну это уж совсем неверный подход — языки по синтаксису оценивать.


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

WP> А зря. По секрету скажу, что опережать мейнстрим на несколько шагов — очень выгодно. И никаких особых интеллектуальных усилий не требуется — достаточно поглядывать, чем академическая Computer Science занимается. Это попадёт в мейнстрим акуурат так лет через 15-20, так что смело смотрим на науку 10-летней давности, устоявшуюся, проверенную, и готовимся к её внедрению в мейнстрим.


Может приведёшь нам список таких скорых внедрений?

WP> Разработчики C# и без того совсем не глупые люди. И что такое Лисп, и что есть Haskell они знают получше многих прочих.


Знать и хотеть, а ещё лучше чувствовать что под тобой стул горит — это разные вещи.
Если нам не помогут, то мы тоже никого не пощадим.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 16.02.06 01:16
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Ошибаешься, нужны. Мегафичи и IDE -- это ортогональные понятия (если язык нормальный). А если язык такой, что на нем можно только в супер-пупер IDE мышкой возюкать, тогда да, без IDE никак.


Ошибаешься. Или понимаешь о чём речь, но прикидываешься
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: anton_t Россия  
Дата: 16.02.06 04:37
Оценка: :)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Ну да, времени на чтобы к VB.NET спеллчекер прикрутить у них хватило, а на С++ уже нет?

ВВ>В общем приоритет задач ИМХО вполне прослеживается..

АФАИК грамматика С++ на порядок сложнее грамматики васика, соответственно и спеллчекер прикрутить к нему сложнее.
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 16.02.06 05:42
Оценка: +1
IT>Мне не нравятся такие вещи как def и mutable, я бы предпочйл var, но по прочтении введения я уже к ним привык.

Я тут уже приводил свой макрос для var. Единственная его проблема — он не работает для членов класса и параметров(для них нужно писать отдельные макросы), но меня это устраивает — пусть они называются мутабельными, это более точно соответствует их сути. В самом коде же лучше писать var и def. Кстати не сказал бы, что def совсем уж бесполезная штука, он иногда помогает лучше передать суть происходящего.

Вот улучшенная и дополненная версия моего макроса:
//  примеры использования:
//    var x = 0;
//    var x : int;
macro mutable_definition (body) 
syntax ("var", body) 
{
    match (body)
    {
        | <[ $(id : name) = $val ]> => <[ mutable $(id : name) = $val ]>
        | <[ $(id : name) : $(typename : name) ]> => <[ mutable $(id : name) = Nemerle.Extensions.DefaultValue($(typename : name)) ]>
        | _ =>  Message.FatalError ($"wrong syntax in 'var' declaration, expected var name = value; or var name : type;\n got $body"); <[ ]>
    }
}
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: Mirrorer  
Дата: 16.02.06 08:34
Оценка: :)
Здравствуйте, IT, Вы писали:

IT>Кстати, JetBrain'овцы поднимают вопрос о гуях к DSL как об одной из самых серьёзных проблем. Так вот если её решить один раз для Nemerle (я не знаю как, не спрашивайте ), то значит она будет решена для всех построенных на нём DSL'ях.


Макрос, который по грамматике строит GUI ?
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 11:35
Оценка: :)
Здравствуйте, eao197, Вы писали:

E>Ошибаешься, нужны.


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

E>Мегафичи и IDE -- это ортогональные понятия (если язык нормальный). А если язык такой, что на нем можно только в супер-пупер IDE мышкой возюкать, тогда да, без IDE никак.


Опять глупые наезды.

Пойми, то что тебе не нужно не значит, что другим не нужно. А то что другим нужно не говорит об ущербности их или языка. Просто они живут по другому. И пока ты не докажещь, что жить с ноупэдом и бумахкой лучше чем с IDE и дизайнерами, то не стоит оскорблять чувства других людей. Ну, а доказать это практически н реально, так как те кому ты пыташся что-то доказать провали так и так и их выбор совершенно осознанный.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 11:41
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Не все так радужно. Как минимум есть еще пара вариантов:

AVK>4. Nemerle так и останется известен в очень узком кругу.
AVK>5. Когда с его использованием начнут делать большие проекты вылезет какая нибудь доколе неизвестная бяка.

Все так. Но это не более чем взгяд скептика — перестраховка.
Хотя п. 4 как раз и может случиться из-за массовой перестраховки.

Но я согласен с Vermicious Knid. Это .net-язык и если не случится п. 5, то более дальновидные и умные смогут получить конкурентное приемущество используя Нэмерл в своей разработке для массового рынка использующего в основном C#.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: Gaperton http://gaperton.livejournal.com
Дата: 16.02.06 12:10
Оценка: :)
Здравствуйте, WinniePoh, Вы писали:

WP> Похоже на правду.

Дык.

WP> Но ведь это не конструктивно!

Ага.

WP> Вроде бы потенциально умные люди собрались, должны бы понимать, что при таком подходе и колеса не изобретёшь, а изобретя — не внедришь (на четвереньках бегать популярнее!).

Конечно. Но ты нас тоже пойми. Умные все стали вокруг, пнимаешь, сил нет. Словеса умные говорят, не понятно ничего, дураком себя чувствуешь. Обидно.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 13:28
Оценка: :)
Здравствуйте, EXO, Вы писали:

EXO>Темы по архитектурам например, обсуждаются куда слабее. Особенно по своим архитектурам, своих реальных проектов.


Обсуждаются, просто форум другой читать нужно.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: Mirrorer  
Дата: 16.02.06 13:31
Оценка: +1
Здравствуйте, eao197, Вы писали:

VD>>> более дальновидные и умные смогут получить конкурентное приемущество используя Нэмерл в своей разработке для массового рынка использующего в основном C#.


M>>Просто возникла аналогия http://www.nestor.minsk.by/sr/2003/07/30710.html


E> Типа они все здесь Полы Грэхемы и это они систему на Lisp-е сбацали, раскрутили и Yahoo продали, да не по одному десятку мегабаксов на этом наварили. АГА! СЧАЗ!

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

E> Куда важнее идея, команда, воля, время и место. И большая удача. А инструмент должен быть таким, который позволяет конкретной команде без проблем воплотить конкретную идею. У Поля Грэхема таким инструментом был Lisp. У команды RSDN -- C# (и у RSDN@Home так конкурента на другой технологии нет и не будет).

+1

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


+1
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: Programmierer AG  
Дата: 16.02.06 14:02
Оценка: +1
Здравствуйте, eao197, Вы писали:

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

Бесспорно. Все в первую очередь зависит от команды, в том числе 1) задача, за которую команда взялась, и 2) выбор инструмента. Понятно, снисходительное отношения лисперов к C++ раздражает, если ты специализируешься именно на C++, а с другой стороны, снисходительное отношение C++ — программистов к VB тебя же не возмущает?

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

+1

E>уже утомили эти ссылки на одну и ту же историю, которую повторяют сотню раз.

Согласен. Поэтому приведу другую ссылку: http://aot.ru (это пример не коммерчески успешного продукта, а сложной задачи). Команда реализовала комплекс инструментов для анализа ЕЯ — библиотеки дял графематического, морфологического, синтаксического и даже местами семантического анализа.
Из работы, посвященной морфологическому и предсинтаксическому анализу:

Программная реализация системы первоначально выполнена на языке LISP, а затем переведена на C++.


Как минимум, надо задуматься, почему для решения подобных задач выбирают неудобный Лисп, с его ужасными скобками. Должна быть более веская причина, чем снобизм разработчиков.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Нет это не вопрос вобще...


До тех пор пока ДжетБрэйнс не доделает РеШарпер для 2005-ой студии еще вопрос. Так как я предочту на сегодня менее навороченный, но стабильный варинт от МС.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Согласен. Но вот перевесят ли эти достоинства недостатки синтаксических макросов — вопрос остается открытым.


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

VK>>На Nemerle можно писать полностью в духе C#, в первую очередь благодаря макросам. В core syntax(он фактически не используется, даже в компиляторе им и не пахнет) конечно функциональщины очень много(та же рекурсия вместо циклов). Но существующие макросы нивелируют разницу, а при желании ее еще можно и сократить.


AVK>А зачем тогда выбирать Nemerle? Ты пойми — C# уже есть и он вобщем то устраивает.


Вообще-то не всех. Этак и С++ есть и устраивает... многих.
Недостатков у C# хватает. Они правда не там где их видят С++-ники, но все же есть.

И то что я увидил в Нэмерл как раз устраняет эти недостатки.

AVK> За исключением ряда довольно нечасто встречающихся случаев.


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

AVK> Перевесят ли достоинства Nemerle то, что на нем можно писать сильно нечитаемый код, пока неясно.


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

Вопрос скорее нужно ставить так. Подталкивает ли Нэмерл писать более понятно? Есть ли у него средства позволяющие делать код более понятным?
Мой опыт программирования на Нэмерле пока микроскопический, но вроде как пока что я отвечаю на оба вопроса положительно.

AVK> Идеям синтаксических макросов и функциональных языков 100 лет в обед, но до сих пор ни один из них не стал мейнстримом.


Это не так. Синтаксические макросы реально появились на горизонте относительно недавно. Причем появились они в довольно обособленном мире Лиспа. Ко всему прочему у них был серьезный недостаток невозможность использования из них семантики.

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

Лично мне все время не нравилось в C# то, что функциональный подход сделан не очень качественно. И уж точно совсем не нравится то, что он приводит к замедлению кода. Я порой вынужден отказаться от функционального кода в C# не потому, что это неудобно, а потому, что банально проиграю в производительности. В Нэмерле же таких проблем нет, так как он специально затачивался под это.

AVK> И лично я не берусь утверждать что станет той точкой кипения, которая перевернет мир программирования.


Я тоже. И как и ты разделяю скепсис. Но не стоти превращать скепсис в главный аргумент против нового. Пусть говорят аргументы, а не скепсис!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 15:01
Оценка: :)
Здравствуйте, VladD2, Вы писали:

AVK>>Согласен. Но вот перевесят ли эти достоинства недостатки синтаксических макросов — вопрос остается открытым.


VD>Хм. А они есть?


А что, их нет? Совсем совсем?

AVK>>А зачем тогда выбирать Nemerle? Ты пойми — C# уже есть и он вобщем то устраивает.


VD>Вообще-то не всех.


А я про всех и не говорил.

VD>Недостатков у C# хватает. Они правда не там где их видят С++-ники, но все же есть.


Можно тебе задать один вопрос? Спасибо. Есть у Nemerle недостатки (я сейчас не говорю о отсутсвии IDE, глюках etc, а только о самом языке)?

AVK>> За исключением ряда довольно нечасто встречающихся случаев.


VD>Ну, вот я лично вижу, что как раз часто мог бы писать куда боле кратко и понятно если бы у меня в руках были фишки из Нэмерла.


Ни капельки не сомневаюсь в этом.

AVK>> Идеям синтаксических макросов и функциональных языков 100 лет в обед, но до сих пор ни один из них не стал мейнстримом.


VD>Это не так. Синтаксические макросы реально появились на горизонте относительно недавно.


Ну да, всего то лет 30 назад

VD>Что касается функциональщины, то как видишь она потихоничку проникает в тот же C#.


Это хорошо что потихонечку.

VD>Я тоже. И как и ты разделяю скепсис. Но не стоти превращать скепсис в главный аргумент против нового. Пусть говорят аргументы, а не скепсис!


Ты чего от меня хочешь? Чтобы я воздал Nemerle хвалу? Или еще что то?
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 16.02.06 15:41
Оценка: :)
Здравствуйте, eao197, Вы писали:

E>Пока есть VladD2 -- не умрут. Они без IDE не сможет.


Прошу Вас, только без членовредительства...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 16:26
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Потому что свои синтаксические конструкции это страшно, намного страшнее чем плюсовые шаблоны.


Да, да. Я бы сказал ужасно. Вот хороший список страшных синтаксических конструкций введенных в Нэмерле через макросы:
foreach
for
while
lock

А ведь есть еще более страшные. Например, помнишь мы мечтали о декларативных свойствах? Вот пример того как эти мечты реализуются на Нэмерли с помощью встроенных средств:
[Accessor]
mutable _somePropery : int;

// Эквивалентно следующей конструкции: 
private mutable _somePropery : int;

public SomePropery : int 
{
  get { _somePropery }
  set { _somePropery = value; }
}


[Accessor (SomeField, flags = Internal)]
mutable some_field : int;
 
// Эквивалентно следующей конструкции: 
mutable internal_field : int;

internal InternalField : int 
{
  get { internal_field }
}


Правда ужас?!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 16:26
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Для разработки. Например об SQL, который бы работал в наших терминах, а не в терминах реальных таблиц я думал как об хорошем но отдаленном будущем. Теперь это вполне реально. Ну и эффект от var и лямбд будет виден сразу.


Зашибись. А ничего, что в Нэмерел уже год как есть тот самый встроенный SQL, а лямбда и var (точнее def и mutable) были изначально еще в 2004-ом или даже раньше?

AVK>Я то же. Но возможность делать подобное легко меня пока пугает.


Ну, усложнить всегда проще.

AVK> Программы из-за этого непринужденно могут превратиться в нечитаемую кашу.


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

AVK> Ну и, если предположить что мы с тобой реально круты, то стоимость рефакторинга решения, которое глубоко насыщено такими макросами. Сдается мне для задач RFD куда больше по идеологии подходит CTR вобще и Phoenix в частности.


Нда. И в чем по-твоему разница между CTR и макросами Нэмерла?
От себя отвечу... Разница в том, что в Нэмерле все продумано и гладко, а CTR родилось как заплатка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 16:26
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Мне не нравятся такие вещи как def и mutable, я бы предпочйл var, но по прочтении введения я уже к ним привык.


Ввести var вместо mutable — задача на две минуты. Один простейший макрос. def же нечто большее. Ты можешь определять с его помощью куски кода. Это как бы такой хитрый const замораживющий не только данные, но и куски кода. Так что его не надо трогать. Это одна из вкусностей Нэмерла которой просто нет в C# и вообще в императивных языках. Это то что императивщик не может прочувствовать пока не поварится в соку подходов Нэмерла чуть-чуть.

Кстати, выбор mutable был обусловлен от части и тем, что народу бдет влом писать длинный "mutable" и он от лени будет пользоваться более безопасным def, а def — в применении к объявлению переменных — это налог const в С++, то есть несколько более безопасное средство. Так что разработчики Нэмерла хитрые бестии.

IT> Я готов писать на Nemerle и готов его использовать в своих проектах не беспокоясь о том, что мне придётся выкинуть всё, что уже наработано и начинать старую песню о главном в очередной раз. С этого момента вхождение в язык осуществлено, на это мне потребовалось несколько часов.


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

IT>А Лиспу не помогло, это правильно. И не могло помочь. Nemerle на самом деле ещё тоже пока не помогло, но заявка на победу уже сделана


Согласен. На Лисп и даже ОКамл у меня надежды нет. Они не прорвались много лет назад, не прорвутся и в будущем. Их плюсы снабжены кучей минусов. Пусть эти минусы выглядят смешными для тех кто уже принял Лисп или ОКамл, но для очень многих эти минусы куда весомее чем все достоинства.

Так что я задним местом чую, что язык вроде Нэмерла может проскачить и стать той самой революцией которую многие так ждут. А Лисп и ОКамл сделали свой вклад в историю, что само по себе здорово.

IT>Маркетинг никогда не помешает, тем не менее, существует масса открытых проектов, которые достаточно популярны и обошлись без профессионального пиара.


Согласен. Темболее, что мы сами по сему нехилый пиар. И если RSDN вдруг перейдет на Нэмерл, то не равен, час, что это сделает минимум процентов 30% всего российского рынка который сейчас сидит на C#/VB.NET.

IT>Впрочем, как я сказал в самом начале, если Nemerle уготована судьба всего лишь подтолкнуть разработчиков C# к более радикальным действиям, то меня это тоже вполне устроит


Согласен. Думаю, что лямбды уже были введены с подачи подобных проектов. Вот еще бы макросы и паттерн матчинг... А писать "int x" вместо "x : int" мне даже привычнее.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 16.02.06 16:35
Оценка: +1
Здравствуйте, WinniePoh, Вы писали:

WP>P.S. А тут вообще есть возможность давать нормальные ссылки сразу на тему? Очень сложно искать весь тред по таким ссылкам...

&only=1 из ссылки удали. А вобще лучше поставь Янус. ИМХО на много удобней любого WEB интерфейса.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 17:19
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Зашибись. А ничего, что в Нэмерел уже год как есть тот самый встроенный SQL, а лямбда и var (точнее def и mutable) были изначально еще в 2004-ом или даже раньше?


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

AVK>> Программы из-за этого непринужденно могут превратиться в нечитаемую кашу.


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


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

AVK>> Ну и, если предположить что мы с тобой реально круты, то стоимость рефакторинга решения, которое глубоко насыщено такими макросами. Сдается мне для задач RFD куда больше по идеологии подходит CTR вобще и Phoenix в частности.


VD>Нда. И в чем по-твоему разница между CTR и макросами Нэмерла?


Тем, что CTR не ломает синтаксис языка. Те макросы Nemerle, которые вызываются атрибутом или как функция, они вполне понятны, хотя тоже не без проблем. А вот собственные ключивые слова просто таки провоцируют на написание собственных языков под каждую задачу. Я не считаю что это хорошо, ибо ведет к рассыпанию некоей культуры вокруг языка.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 17:25
Оценка: +1
Здравствуйте, VladD2, Вы писали:

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


VD>Тут оно как. Никто не замечает как переходит грань между здравой осторожносью и черезмерным скепсисом.


А ты сам что, возьмешься эту грань определять?

AVK>> Пока нет ни одного мейнстрим-языка, допускающего изменение синтаксиса


VD>Дык, как бы есть.


Чего ж не сказал какой? Неужели LISP. Или ты за таковое шаблоны С++ принимаешь?

AVK>> и как Nemerle поведет себя на реальном спектре проектов не знает никто.


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


А если сразу считать его идеалом, то очень легко потерять трезвость оценки. Тебе хорошо, ты занимаешься программированием исключительно ради развлечения, мне же приходится им заниматься профессионально. И кидаться из стороны в сторону, не будучи достаточно уверенным, мне нельзя.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[25]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 16.02.06 18:59
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Попробую объяснить еще раз.

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

Извини, но это демагогия.
Язык — это не вещь-в-себе, он существует не сам по себе, а для людей, которые его используют. И вопрос полноценности/неполноценности языка как любого инструмента нельзя рассматривать отдельно от применения этого инструмента.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 16.02.06 20:34
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

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


Такие языки принято называть DSL.
Если нам не помогут, то мы тоже никого не пощадим.
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: Павел Кузнецов  
Дата: 16.02.06 21:15
Оценка: :)
Здравствуйте, Воронков Василий, Вы писали:

ПК>>Выбор в IDE для C++ на тот момент был следующим: либо исправлять intellisence, либо доделывать class designer. Выбрали первое.


ВВ>Ты серьезно считаешь что они "исправили" интеллисенс в С++? Посмотри как он работает в шарпе или в выбенет и сравни.


Они исправляли его не по сравнению с C# или VB.Net, и даже не по сравнению с VC++7.1. В момент принятия обсуждаемого решения речь шла конкретно о следующем: исправлять ошибки и доделывать Intellisence или C++ Class Designer, т.к. в том виде, как оно было в тогдашних билдах, выпускать было никак нельзя, а и то, и другое уже исправить не успевали. Выбрали Intellisence. Недоделанный C++ Class Designer, соответственно, остался ждать будущего релиза.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 02:23
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

VD>>У Лиспа одна проблема. Читать код на нем практически не возможно.


ANS>Только это проблема не Лиспа...


Лиспа, Лиспа.

ANS>Влад, мне хватило пары дней что-бы нормально ориентироваться в структуре elisp-программ даже без ИДЕ. Заметь, я даже почти ничего не писал, а только разбирался.


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

Работа на Лисп выливается в то, что часть траслятора будет работать в голове. А зачем мне забивать свою голову лишней работй? Я лучше забью ее более сложной задачей.

VD>>Языки типа Нэмерала — это попытка переноса приемуществ языков типа Лисп в среду языков завоявавших популярность и применяемых для нужд промышленной разработки софта.


ANS>Да. Есть только один момент, может промышленных разработчиков пугает не синтаксис, а возможности лиспа?


Ну, вот я один из них. Меня совершенно не пугаюта возможности, а синтаксис, точнее его отсуствие пугает. Ну, не хочу я программировать в AST. И думаю, что 99% других людей тоже не захотят.

В общем, разговор про Лисп нужно закрыть. Этот язык существует 50 лет и не завоевал реальной популярности. И не нужно искать проблемы в головах людей попутно оскорбляя их. Если тебе нравится Лисп и ты считашь его подходящим для тебя, то бери и пользуйся им. Я этого делать принципиально не хочу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 03:10
Оценка: :)
Здравствуйте, WinniePoh, Вы писали:

WP> Если не нравится конкретно Матисс — заменим на Шагала, или на моего любимого Дали.


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

Хотя с мем, что все мы скоро умерм не поспоришь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 03:10
Оценка: :)
Здравствуйте, WinniePoh, Вы писали:

E>>Пока есть VladD2 -- не умрут. Они без IDE не сможет.


WP> Сможет. Вроде не дурак.



Не дурак... Потому не захочет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 11:49
Оценка: -1
Здравствуйте, Дарней, Вы писали:

AVK>>А что, их нет? Совсем совсем?


Д>их точно не больше, чем у сишных макросов.


Это не ответ.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 14:19
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

AVK>>Вот я и боюсь как бы возможности Nemerle не стали применять не по назначению.

WH>А если "соколы" из смежной комманды в место тебя начнут сервер приложений писать что будет?

Да ничего страшного вобщем то. Другое дело что они не возьмутся. Я не таких соколов боюсь, им что скажут то они и будут делать. Я боюсь молодых да зеленых, которые получают игрушку в руки и начинают ее крутить.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 15:16
Оценка: :)
Здравствуйте, GlebZ, Вы писали:

GZ>В то время не было Шарпа. Он стал популярным благодаря совмещению быстрого С и объектных технологий о которых говорили на каждом углу как о панацее. Кстати — Турбо-Ассемблер был тоже объектно-ориентированным. Правда популярным он не стал. Не пойму почему.


Как не стал? Ты о Дельфи не слышал?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 17.02.06 15:33
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Там таких проблем в принципе быть не может. Это не текстуальные замены. Макросы гигиенические. Все идентификаторы в макросах уникальны в рамках конкретного применения макроса.


Судя по плюсику, который ты поставил на ответ Vermicious Knid
Автор: Vermicious Knid
Дата: 16.02.06
, ты должен был это видеть:

Если это не расширение синтаксиса, то проблем не будет. С расширениями синтаксиса все несколько сложнее. Если они конфликтуют друг с другом, то совместно их использовать невозможно, а подключать пространства имен можно только на уровне пространств имен/единиц трансляции(так как такие макросы изменяют логику парсера).


И как теперь твои слова воспринимать?
Речь шла о том, что какой-то безобидный код:
namespace X
{
    using Your.Sugar;
    module M
    {
        f() : void
        {
            def persistence_marker = 0;
            ...
        }
    }
}

работал себе нормально до тех пор, пока не обновили версию Your.Sugar, в которой за именем persistence_marker вдруг оказался спрятан синтаксический макрос. И что? Браться за рефакторинг?

Напомню тебе еще одно мнение по этому поводу
Автор: WinniePoh
Дата: 16.02.06
:

Как я уже сказал, на уровне языка такие грабли сложно давить (разве что подход как в Template Haskell или Jatha, где макры явно отмечены синтаксически и с другими элементами синтаксиса их не спутать никак). Нужна правильная дисциплина кодирования и проектирования.



SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[26]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 17.02.06 16:09
Оценка: +1
Здравствуйте, Воронков Василий, Вы писали:

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


ВВ>Извини, но это демагогия.


Не извиню.

ВВ>Язык — это не вещь-в-себе, он существует не сам по себе, а для людей, которые его используют. И вопрос полноценности/неполноценности языка как любого инструмента нельзя рассматривать отдельно от применения этого инструмента.


Можно. Не нужно забывать, что написанная программа дальше может жить без участия программиста. Например, выкачивая tgz какой-нибудь софтины в исходниках я делаю просто:
./configure
./make
./make install

и дальше пользуюсь программой. Для этого процесса не нужен ни дебаггер, ни профайлер, ни редактор, ни хелп. Вот тебе применение инструмента. Есть язык (в виде компилятора и стандартной библиотеки) и есть программа на этом языке. Все.

Средства разработки нужны разработчикам. Большинству разработчиков. Но не языку.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: _Winnie Россия C++.freerun
Дата: 17.02.06 16:38
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

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

AVK>Не все так радужно. Как минимум есть еще пара вариантов:
AVK>4. Nemerle так и останется известен в очень узком кругу.
Уже нет.
AVK>5. Когда с его использованием начнут делать большие проекты вылезет какая нибудь доколе неизвестная бяка.
Волков боятся — в лес не ходить.
Правильно работающая программа — просто частный случай Undefined Behavior
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: _Winnie Россия C++.freerun
Дата: 17.02.06 16:40
Оценка: :)
Здравствуйте, eao197, Вы писали:

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


E>

E>Например, в K52 была такая обобщенная функция — "повторить операцию N раз". Соответственно, была не нужна специальная команда "Goto line", все обеспечивалось обобщенными средствами. Скажите, можно ли в современном редакторе найти 18-е по счету слово с начала файла? Думаете не надо? А вот надо — это как парадигма в программировании — когда привыкнешь к хорошему, начинаешь критически смотреть на вещи. До сих пор мне подобной простой функции очень не хватает.

E>Так вот в vim команда "повторить операцию N раз" есть! Так же, как и команда "повторить последнюю операцию". Действительно, однажды привыкнув, обойтись без них уже тяжело. И вообще, работа в vim-е иногда напоминает программирование (типа программируешь написание программы). Мне, как заядлому программисту, нравится.

        For i = 1 To 18
            DTE.ActiveDocument.Selection.WordRight()
        Next
Правильно работающая программа — просто частный случай Undefined Behavior
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 17.02.06 18:52
Оценка: :)
Здравствуйте, _Winnie, Вы писали:

_W>
_W>        For i = 1 To 18
_W>            DTE.ActiveDocument.Selection.WordRight()
_W>        Next
_W>


Сравним?
18w

это все.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 21:04
Оценка: +1
Здравствуйте, Oyster, Вы писали:

O>Да не случится этого, не случится.


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

O>Возьмём, к примеру, всё те же многострадальные шаблоны C++. Да — многие начали их использовать везде, где только можно, но язык имхо от этого не пострадал.


ИМХО очень даже пострадал. Если уж народ всерьез пишет гору жутких закорючек и утверждает что жэто простой код, то ненулевая вероятность что то же мы увидим на Nemerle.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 21:18
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Подавляющие число закорючек находятся в библиотеках.


Если бы. Ты foreach в стиле boost видел? Или парсер на boost::spirit, который ты мне показывал? Я хорошо помню ощущение вылавливания клецок BNF из борща скобочек и закорючечек.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 21:19
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Для добавления хинтов в SQL совсем не обязательно ломать синтаксис языка.


Не понял. А где нужно ломать синтаксис? И что нужно сделать в ЛИНКе для добавления тех самых хинтов?

ЗЫ

Заметь многие восприняли ЛИНК в штыки именно потму, что это довольно не универсальное и не естественное расширение языка. Если лы бы это было сделано на макрсоах, то вряд ли кто стал бы возмущаться. Ведь тогда решение было бы универсальным.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 21:19
Оценка: -1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это абсолютно несущественно в контексте данного обсуждения. Оба положения совершенно эквивалентны в качестве подтверждения ограниченности ресурсов MS,


Существенно то, что ресурсов у МС как раз выше крышы. Просто сложность задачи запредельная для человека и/или современных машин. Вот и все. Если же язык сразу проектировался в рассчете на дизайнеры, то и сложность укладывается в разумные пределы.

VD>>Я конечно понимаю, что ты снова сочтешь мои слова за новую потытку унизить С++, но еще раз повторюсь. При разработке С++ его дизайнером небыло уделено внимания важным аспектам вроде модульности и предсказуемости.


ПК>Не так.


Ладно. Разводить очередной спор желания нет. Давай закроем тему.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 22:15
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

AVK>Влад, когда вместо предмета разговора переходят на обсуждение личности собеседника это сам знаешь как называется. Так что заканчивай. Если есть что сказать по делу — говори, а нет, нечего в ступе воду толочь.


Забвно, ты значит начинашь себя обсуждать, а я виноват?

VD>>Лично я с удовольствием послушел бы тебя если ты действительно попробовал бы и высказал бы реальну критику. А так...


AVK>Я пока что не критикую, потому что пока не ясна ситуация. Я пока СПРАШИВАЮ. Знаки вопросов в исходном топике видишь? Вот они как раз это и означают.


Странно ты спрашивашь. Уж больно скепсис сквозить сильный.

AVK>С удовольствием услышал твое мнение о себе. А вот ответов на заданные вопросы не услышал, одни лозунги и заверения, что все будет хорошо.


Какие у тебя вопросы?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 22:15
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

VD>>Ну, дык за чем дело? Пробуем и высказываем свои ощущения.


AVK>Проблема в том, что как только я высказал ощущения,


Ты забыл предварительно попробовать.

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


Не вопрос. Если хочешь обсудить устрицы не пробова их, то вперед.

VD>> Ну, да могу согласиться. Значит Нэмерел станет первы.


AVK>Только вот пока не стал. Следовательно никто в этом мире не способен предсказать проблемы языков с изменяемым синтаксисом на тяжелых и долгих приложениях.


Стоп. Он не стал просто потму, что молод. Остальное твои домыслы.

AVK> Даже классической Java понадобилось очень немало времени, чтобы наработать опыт реального применения (хотя заметь, абсолютно новых идей там не было, просто они были необкатаны). Шарпу было проще — он в целом Java соответствовал. С Nemerle же ситуация повторяется — широкого опыта применения использованных технологий нет, никому не известны все взбрыки и проблемы, которые могут возникнуть.


Зашибись. А чем же Nemerle тут от Шарпа то отличается? Точно так же привносит новое в уже готовую среду.

AVK>Знаешь чем мне нравится C# Team — они очень долго обсасывают каждое изменение в языке.


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

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

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


Ага. Самое надежное решение тут будет ничего не делать. Вон в С++ так и поступают. Промежутон между стандартами более 10 лет...

VD>>Дык, потому что сам пока его только изучаю.


AVK>То есть ты сам пока не можешь с уверенностью сказать что это мегарулез без недостатков?


Не могу. Как не мог сказать этого в 2001 про C#. Но то что я вижу намного лучше чем Шарп. И особых недостатков в глаза не бросается. В общем, поводов для скепсиса не вижу.

AVK>Я специально два раза дописал, что речь о языке. IDE И компилятор меня пока не интересуют, это дело наживное. В языке недостатки есть?


Ну, вот в языке все пока что выглядит очень гладно. ОО 1:1 как в C#. И вообще многе из него взято. Функциональщина взята из ML, т.е. тоже проверенное решение. Макросы из Схемы. Рантайм — дотнет. В итоге получается композиция проверенных решений.

VD>> Если из самого языка, то есть те же проблемы, что в C#. То же обобщенное программирование сделано через дженерики.


AVK>А как надо? Шаблонами? А чем тогда шаблоны лучше макросов?


Ты просил сказать о проблемах. Для меня это не особо проблема. Но это компромис. Так что о нем следует скзать.

VD>> Но это общие для дотнетных языков особенности. К тому же есть макросы решающие проблемы в этой области если что.


AVK>Т.е. недостатков в языке ты не видишь?


Так чтобы бросались в глаза пока не вижу.

AVK>>>Мое мнение основано на том, что тут приводили


VD>>Это что конкретно?


AVK>Все топики, посвященные Nemerle или где его сильно затрагивали. Я их все прочел.


Хм. Реальное мнение о Нэмерли тут приводили те кто его использует. И но мягко говоря радужное. А то и просто восторженное. Ты же явно настрен скептически.

AVK>Пока я задаю вопросы. Например — очевидно что язык, в котором ключевых слов много,


Много? А откуда ты это взял? Ключевых слов не больше чем в Шарпе.

AVK> да еще и их набор может изменяться (в том числе и неявно)


Это как не явно? Макросы, в том числе и синтаксические находятся в пространствах имен и сборках. Как типы в C#. Неявно ничего сделать нельзя.

AVK> значительно сложнее при прочих равных языка с зафиксированным набором ключевых слов. Как с этим бороться? У тебя есть ответ на этот вопрос?


Есть. Ответ один — неверные предпосылки. Ключевые слова ты волен не вводить. Если ты их воодишь, то ты делашь это для облегчения своей жизни, а не для усложнения. Ты делашь себе DSL который упрощает восприятие кода предметной области или вводишь более высокоуровневый оператор. Если ты не болен на голову, то не будешь вводить что-то усложняющее восприятие.

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

AVK>Я бы, если бы мне пришлось писать проект на Nemerle, зафиксировал бы набор ключевых слов (очень небольшой список) и вводить новые запретил бы под страхом смертной казни, а все макросы бы писал таким образом, чтобы не менять синтаксис.


Если ты лидер проекта, то это твое право. Контроль этого элементарен. Ведь макросы обязаны быть в отдельных сборках. Случаяно они не заводятся. Это не С++.

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


Тут рядом
Автор: Vermicious Knid
Дата: 17.02.06
Vermicious Knid поделился опытом использования макросов. Он говорит, что вообще не вводит макросы изменяющие синтаксис, так как оно особо не надо, да и не так просто. А обычные макросы ничем не отличаются от функций с точки зрения перекрытия имен.

AVK>Мне больше интересен рассказ о недостатках. А бенефиты создатели языка не скрывают, их можно на первой же страничке увидеть.


Хм. Мне тоже. Вот только пока что-то не видать их.

AVK>Читай внимательнее — информации о практической применимости. Много ты знаешь мало мальски долгоживущих проектов на Nemerle окромя его самого?


А зачем же его самого то исключать? Прокт огромный и сложный.

AVK> С какими проблемами столнулись их (проектов) создатели? Что выгадали на практике, а не в теории?


Можно спросить у того же Vermicious Knid. Он вроде бы уже что-то пописал на нем.

AVK>А конкретные конструкции мне изучать пока не интересно, я еще не дозрел.


А зря. Глядишь и те самые недостатки обнаружил бы.

AVK>Не думаю что мое мнение как то скажется на судьбе проекта, так что не переживай.


Я думаю, что любое мнение скажется. Сумма мнений и есть признание или не признание.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: c-smile Канада http://terrainformatica.com
Дата: 18.02.06 05:00
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>Кстати, имхо, г-н де Иказа не довёл до ума ни одного проекта. Да и Novel умеет всё просырать не хуже Борланда. Так что вероятность того, что mono вечно будет, но не доделано — есть.


VD>Можно уже зарелизен.


Это вообще на каком языке.
Особенно интересует значение слова "зарелизен" в данном контексте.

VD>Так что речь можно вести только об отставании от МС.


Не понимаю назначение проекта Mono если честно ...
Зачем оно вообще? Какие принципиальные проблемы решает кроме
того что уже умеет Java лет эдак пять шесть уже?
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 18.02.06 07:59
Оценка: +1
Здравствуйте, eao197, Вы писали:

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


VD>>И что? Если у тебя конфликтуют названия функций, ты тоже их использовать не сможешь. Что же тебя это не огорчает?

VD>>Макросы немерла подчиняются тем же самым ограничениям, что и функции в С

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


Для макросов Nemerle тоже. Еще раз повторяю, макросы как расширение парсера, это в первую очередь фича для разработчиков языка. Без них язык бы выглядел по другому(мягко говоря не очень похоже на C#). Если ты их используешь, то будь готов к проблемам и к их решению.

Вот например во что примерно раскладывается типичный цикл while(это просто для иллюстрации, реальный код скорее всего совсем другой, но идея та же):
def @__someMangledName45dfsdf(cond)
{
    // match это основная конструкция языка для всего, что связано с бранчингом
    // его использует if и другие подобные конструкции
    match(cond)
    {
        | true => /* here goes while body */ blaBlaBla(); x--; @__somemangledName45dfsdf(x > 0)
        | false => ()
    }
}
@__someMangledName45dfsdf(x > 0);


Кодогенератор потом делает из него обычный императивный цикл(как можно убедиться посмотрев результирующий IL код), но это выходит за рамки данного объяснения.

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

E>
E>VLADD2_FOREACH_IN_HASH( k, h; hash ) { ... }

E>EAO197_DECLARE_PERSISTENT_ATTR v : some_type;
E>


Извини, но это какой-то идиотизм и бред. Во-первых встроенный foreach прекрасно справляется с хэш-таблицами и разными другими контейнерами. А в будущем не исключенно, что будет отлично работать с любыми произвольными типами(в смысле неотнаследованными от интерфейсов коллекций итп) и будет достаточно добавить пару атрибутов описывающих что-именно нужно делать с экземпляром этого типа в foreach.

Во-вторых ничто не мешает пользоваться традиционными атрибутами .NET(aka метаданные). Например в Nemerle есть несколько макросов для контрактного программирования. Они бы тебе не понравились, так как имеют custom-синтаксис.

Но вместо вот этого:
using Nemerle.Assertions;

class Test
invariant obj != null
{
    mutable obj : object;
    public this(obj : object)
    {
        this.obj = obj;
    }
}


Вполне можно использовать и вот это:
[Nemerle.Assertions.Invariant(obj != null)]
class Test
{
    mutable obj : object;
    public this(obj : object)
    {
        this.obj = obj;
    }
}
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 18.02.06 10:25
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Извини, но идиотизм в том, чтобы цеплятся к конкретным примерам. Ну пришло мне в голову при написании только FOREACH, его и написал. Будь уверен, в реальной жизни возникнет соблазн сделать еще и не такое. А например, вот так бы я себе представил то, что мне интересно:

А в чем проблема то? Берешь и пишешь сборку с этими макросам. Потом в отдельном файле пишешь using MyCoolMacroNamespace; и описываешь. Если не написать using MyCoolMacroNamespace; то этих макросов не будет.

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

Пожалуйста не путай атрибуты в C# и то что мфкрос можно использовать с темже синтаксисом что и атрибуты. Это разные вещи.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 18.02.06 12:06
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

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


Если Nemerle (или его идеи — речь о них) и завоюет популярность, то этому будет предшествовать долгий процесс интеграции в среду разработчиков. За это время, я думаю, очень много чего всплывёт на поверхность. Индустрия что попало не примет, т.к. в ней денежка крутится.

AVK>Или ты все таки считаешь что серебраные пули есть?


Серебрянных пуль нет, но более мощные языки существуют. И не пользоваться ими (если они предоставляют те же фичи, что и существующие, — тут речь и о синтаксисе тоже — плюс ещё много чего полезного) значит ограничивать себя.

Кстати, тут очень к месту эпиграф с сайта http://nemerle.org/ из Урсулы Ле Гуин
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 18.02.06 12:06
Оценка: +1
Здравствуйте, Воронков Василий, Вы писали:

ВВ>А ничего если я спрошу? (без тени скепсиса )


Ничего, если отвечу и я? (освещённость скепсиса аналогична)

ВВ>Какие бенефеты ты лично видишь от использования Немерле при разработке бизнес-приложений?


Лично я лично на моём проекте, будь он написан на Nemerle, убрал бы нафик всю ту кодогенерацию в рантайме, которая там сейчас делается, ибо обобщённый код оставить хоцца, но кодогенерация в рантайме... см. выше Т.е. это тот минимум, который мне бы стазу дал Nemerle.

Ещё бы я активно использовал вывод типов (писать что-то вроде Dictionary<int, MenuTreeNode> по много раз задалбывает). Больше с ходу ничего не придумывается.

Ну и очередная мечта — имхо на Nemerle получилось бы написать неплохую O/R-Mapping tool... Это я говорю как человек, измученный NHibernate Только вот где ж стока времени-то валяется...
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: Nickolay Ch  
Дата: 18.02.06 12:38
Оценка: +1
Здравствуйте, WinniePoh, Вы писали:


WP> Лучшая IDE это Unix. А IDEA — игрушка. Бесполезная.


Чем выкрикивать бессмысленные лозунги, не лучше ли задуматься над тем, почему кто то делает "бессмысленные игрушки"(пользующиеся популярностью), да еще и зарабатывает на этом деньги.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.02.06 14:25
Оценка: :)
Здравствуйте, Vermicious Knid, Вы писали:

VK>типа JetBrains MPS или Camlp4 например).


Camlp4 уже в подметки не годится тому что есть, а вместо MPS нужно просто сделать поддержку интелисенса и рефакторинга.

Если это будет, то уверяю тебя больше ничего не понадобится. Пойдет массовый слив в помойку драфтов будущих спецификаций имеющихся языков.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: pavel_turbin  
Дата: 18.02.06 16:11
Оценка: :)
Здравствуйте, VladD2, Вы писали:

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


_>>а смысл гоняться за модой?! Мне на C++ очень хорошо.


VD>А какой смысл было учить С++ когда тебе было бы куда лучше на Коболе?



а шел бы ты лесом со своими советами.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.02.06 21:00
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>Как ты там говоришь?

VD>Слив засчитан.

Слив чего?

VD>Я тебе задал вопрос:

VD>

Является ли Нэмерел панацеей? А является ли ею C#? Нет? Ну, вот и Нэмерел — нет. Что в прочем не мешает ему рвать C# и все остальные языки как тузик грелку.

VD>Ответь на него, и вопросов вроде "А при чем тут C#?" не возникнет.

Ты это. еврея из себя не строй. Я первым вопрос задал.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[21]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.02.06 21:49
Оценка: +1
Здравствуйте, VladD2, Вы писали:

AVK>>Агащасблин. И БД сервера это миф. И сеть никому не нужна. И интероп придумали враги. А уж СОМ, так его точно нет, это ж фантастика.


VD>Ни, что из перечисленного во втором фрэймворке не изменилось.


ADO.NET изменился, именно с ним мы поймали 2 баги. В интеропе много изменений. В СОМ-интеропе были проблемы, пришлось код править. Одно из изменений — теперь, при публикации .NET класса публикуются все его базовые типы. У нас базовые типы были не ComVisible — получили глюки и исключения. Кое что изменилось в XsltTransform, пришлось править некоторые шаблоны. Была еще куча мелких проблем, всего не упомнишь.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 19.02.06 01:12
Оценка: :)
Здравствуйте, eao197, Вы писали:

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


Тем не менее, не смотря на все эти A, B и C ты продолжаешь писать на C++ и всячески его защищать. Значит это не такая уж и большая проблема
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.02.06 05:45
Оценка: :)
Здравствуйте, IT, Вы писали:

IT>Тем не менее, не смотря на все эти A, B и C ты продолжаешь писать на C++ и всячески его защищать. Значит это не такая уж и большая проблема


Продолжаю писать потому, что много чего на C++ сделано и проще продолжать писать на C++, чем переходить на что-то другое.
Защищаю потому, что заинтересован в его существовании и привлечении в C++ новых толковых людей (диктуется предыдущим пунктом). А так же тем, что наезды на C++ какие-то... оголтелые, что ли.
И, кстати, подходила бы для моих задач производительность Ruby, перешел бы на Ruby.

А про проблему с макросами я говорю потому, что мне кажется, что Nemerle ее повторяет. И когда тут утверждают, что в Nemerle все классно и даже макросы гигиенические (это же нужно было такой термин придумать, видимо не знает человек, куда гигиенические средства засовывают), то мне кажется, что в общем восторге от Nemerle намерено не замечается большая проблема языка.

В C/C++, как я уже говорил, тяжесть этой проблемы снижена за счет дисциплины и соглашения об именовании макросов. Но и в C/C++ макросы -- это детские игрушки по сравнению с макросами Nemerle.



Вообще утомило меня слово Nemerle в последнее время. Как Сергей Губанов для многих сделал антирекламу Оберона и Вирта, так здесь для меня сделали антирекламу Nemerle. Нужно взять тайм-аут на годик. Глядишь, вопрос сам собой и проясниться.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 19.02.06 14:21
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Нет, осований для критики C++ более чем достаточно. Просто сейчас, имхо, слишком часто критикой C++ занимаются те, что либо ушел с C++ на другой язык, либо собирается. И выглядит это не красиво.


Некрасиво по 10 лет не принимать стандарты и закрывать глаза на то, что язык устаревает, надеятся на то, что раз уж язык стал мейнстримом, то никуда программисты, пишущие на нём не денутся. Вот это всё — некрасиво. А критика... как справедливая критика может быть некрасивой?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.06 14:55
Оценка: -1
Здравствуйте, IT, Вы писали:

IT>Я вот одного не пойму. О каких именно проблемах ты говоришь? Ты можешь их хотя бы сформулировать или это всё игра на публику?


Это похоже излюбленная тактика ретроградов. Сами они всерьез новое пробоавать не хотят и пытаютя найти проблемы теоритически.

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

Из того что я виже хоть как-то попробовав макросы Нэмерла и основываясь на не малом опыте полученом при работе над R#-ом могу ометить только одно. Все что связано с модификацией семантики является весьма отвественной работой. Если кажущася с виду простенькая функция внутри создает неообразимые под уму побочные эффекты, то пользоваться ею решится только маньяк. Макросы принципиально предназначены для модицикации/генирации кода и ими как нельзя просто создать "удивительные" решения.

Оданако макросы Нэмерла предоставляют полный контроль над происходящим и позволяют создавать надежные решения.

Так что если рассматривать макросы как мощьное средства расширения возмостей команды, а не как игрушку котрую можно использовать ради смеха, то и проблем они создать не могут.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.02.06 15:54
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Это всё меняет кардинально. precompile-time без partial классов вообще штука слабоприменимая.


Мне применять удавалось. Но это неважно. Проблемы с интеграцией очевидны и столь же очевидно, что Nemerle их способен решить. Но это ведь не единственные проблемы. Модели у меня сейчас чаще всего представлены ввиде XML. Под каждую задачку своя модель. Проблема в том, что задачки растут, модельки усложняются. В результате фактически под каждую задачу рождается свой язык. И если я их еще правлю вполне эффективно, то другой народ из команды делает это очень неохотно, чаще просят меня что нибудь подправить.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: WolfHound  
Дата: 19.02.06 16:05
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>И если я их еще правлю вполне эффективно, то другой народ из команды делает это очень неохотно, чаще просят меня что нибудь подправить.

Ибо долбаться с этим угробищем ака XSLT никто не хочет. Немерле в этом плане значительно дружественней.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 19.02.06 20:51
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>С чего бы это?


Ну смотри. Вот переопределяем мы поведение класса с помощью Reflection.Emit. Сделать это мы можем только сгенерировав класс-наследник и переопределив поведение в нём. И этот класс появится только во время выполнения, т.е. на этапе написания кода мы не можем создать его экземпляр. Поэтому нам приходится заводить фабричный метод, который по типу базового класса создаёт нам экземпляр прокси-типа, сгенерированного в рантайме, т.к. если мы будет использовать обычный new, то получим экземпляр базового класса без функциональности, добавленной с помощью Reflection.Emit. Например, при использовании моей библиотеки пользователям приходится писать такой код:

// Тут неявно создаётся экземпляр наследника, созданного в рантайме
BizEntity ent = BizFactory.Instance.Create<BizEntity>();

// Если мы напишем так, то переопределение функциональности BizEntity,
// выполненное с помощью runtime code generation, потеряется
BizEntity ent = new BizEntity();

Надеюсь, объяснил доходчиво...

AVK>Неужели ты не видишь разницы между библиотеками и синтаксисом языка?


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

AVK>LINQ не позволяет менять синтаксис.


Да, согласен — LINQ вообще не добавляет ничего нового, кроме кучки синтаксического сахара, подслащённого усердными промоутерами. Ещё раз замечу, что Nemerle лишь даёт возможность добавлять новые синтаксические конструкции, а программисты могут как использовать, так и не использовать эти возможности.

Вообще я тебя не понимаю. Добавляют MS по щепотке новых ключевых слов раз в несколько лет — рулез, даёт Nemerle эту же возможность всем желающим — сакс... Да, сейчас кто-нибудь может мне ответить, что в MS изучают тенденции, прощупывают индустрию, добавляют только самое нужное, самое правильное... Это всё не так. Настоящая правда заключается в том, что в MS разленились и тормозят.

Да, ещё кто-то может добавить, что опасно давать мощь макросов Nemerle в руке челяди (типа поломают всё, нехорошие люди, и нас по миру пустят), но я на такие слова решительно возражу, что эволюцию ещё никто не отменял. Кривые библиотеки сдохнут и Nemerle никогда не станет вторым Пёрлом (если выживет) просто потому, что всем будет легче использовать библиотеки, не навязывающие какой-то свой синтаксис. Но вот в некоторых случаях это таки чертовски удобно (LINQ, "XML без кавычек") и поэтому так здорово то, что с Nemerle (или другим языком, предоставляющим столь же изящную технологию метапрограммирования под .NET) мы можем не ждять, пока добрые дяди из Редмонда напишут LINQ 2.0, а экономить собственное время прямо сейчас.

PS: Пусть немного патетично, зато оптимистично
Re[21]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 20.02.06 06:04
Оценка: +1
Здравствуйте, eao197, Вы писали:

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


Я пока не могу сказать насколько далеко могут завести макросы Немерле, но пока остаётся впечатление, что довольно далеко. Так как расширения синтаксиса подключаются включением пространства имён, то особых проблем пересечения в твоём случае быть не должно. Т.е. если твой DSL не будет пересекаться со стандартным расширением, то его вполне можно будет использовать совместно.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: Дарней Россия  
Дата: 20.02.06 06:19
Оценка: +1
Здравствуйте, VladGalkin, Вы писали:

VG>Очень понравился мне комментарий одного товарища из ЖЖ на мою публикацию о Nemerle, так понравился, что рука к нагану потянулась:


не надо писать в таких восторженных тонах, а то у большинства это вызывает сильное отторжение. Потому что срабатывает анти-маркетинговый фильтр
Если бы я не знал, что такое Немерле, я бы тоже какую-нибудь гадость написал
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[24]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.02.06 07:57
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Кстати, этими клавишами я пользовался только из-под телнета в Win95. Во всех других терминалах прекрасно работают стрелки.


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 20.02.06 11:18
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Ты недооцениваешь возможности Nemerle. Они позволяют, к примеру, эмулировать синтаксис Питона.


Не надо демонизировать Nemerle. Эмуляция синтаксиса Питона сделана не через макросы. Это неотъемлемая часть компилятора. Макросами это сделать абсолютно невозможно. А то c какой легкостью эта фича была добавлена в компилятор лишь демонстрирует расширяемость исходников компилятора, не более того.
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 20.02.06 11:43
Оценка: +1
Здравствуйте, FR, Вы писали:

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


Да нет уж. Я уже тут где-то писал, что у Nemerle есть синтаксис и он позволяет не писать на "птичьем" языке, в то время как Форт с Лиспом буквально требуют этого — вот отличие. И вот почему Nemerle не станет кучкой диалектов — потому что у него уже есть основной диалект, который будет только расширяться.
Re[23]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.02.06 11:51
Оценка: :)
Здравствуйте, Oyster, Вы писали:

O>Да нет уж. Я уже тут где-то писал, что у Nemerle есть синтаксис и он позволяет не писать на "птичьем" языке, в то время как Форт с Лиспом буквально требуют этого — вот отличие. И вот почему Nemerle не станет кучкой диалектов — потому что у него уже есть основной диалект, который будет только расширяться.


Самое забавное в данном обсуждении то, что ярыми защитниками Nemerle являются те, кто на нем еще не пишет (видимо, это способ самовнушения о правильности собственного выбора). Насколько я помню, Vermicious Knid (кто реально щупал Nemerle) прогнозов как раз не делает.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 20.02.06 15:27
Оценка: +1
Здравствуйте, VladD2, Вы писали:

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


Да я о другом немножко. Вот представь ты объясняешь топ-менеджменту зачем нужен Немерле. Макросы там синтаксические и прочее. При этом большая часть штата, которая на настоящий момент пишет на си-шарпе, делает круглые глаза, услышав всякие страшные слова типа "перегрузка операторов".
Tо, что можно написать "def" вместо "const int" — это конечно мощное преимущество, но представь себе — бедным людям придется еще запоминать что есть такой загадочный "def". Так что есть подозрение что это не окажет решающей роли. А решающую роль как обычно может сыграть бОльшая простота языка с сохранением хороших возможностей, более высокая дуракоустойчивость... — в общем все то, благодаря чему си-шарп "лучше" С++. А вот как у Немерле с этим?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[28]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.06 18:35
Оценка: :)
Здравствуйте, eao197, Вы писали:

E>Есть ли такой killer app для Nemerle?


Надесю на Nemerle никогда не будет создано killer app-ов, так как надесю, что Nemerle не станет очередным экзотическим извращением.
Nemerle имеет все шансы стать мэйнстрим-языком. Он как бы является попыткой исправить ошибки C++ и C#.
По сравнению с С++ Nemerle является типобезопасным языком с кратким и выразительным синтаксисом. C# был вынужден отказаться от некоторых возможностей С++ только для того чтобы обеспечить простоту. Nemerle же похоже нашел лазейку в вопросе как обеспечить простоту при этом не отказываясь от многих мощьных возможностей.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[27]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.06 18:35
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

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


Ты занимашся неконструктивной критикой. Вмпесто того чтобы говорить "как бы чего не вылшо..." лучше бы действительно придумал бы ситуациию в которой могли быть проблемы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.06 18:35
Оценка: -1
Здравствуйте, VladGalkin, Вы писали:

VG>Очень понравился мне комментарий одного товарища из ЖЖ на мою публикацию о Nemerle, так понравился, что рука к нагану потянулась:

VG>

VG>Кхм... Помню высказывание одно очень умное. Точнее дословно не помню и автора с хожу не назову, но суть такая — чем активнее используются макросы в языке программирования, тем хуже и менее функционален этот язык. Уже из этого следует, что Nemerle — полный отстой! А если вы всё-таки хотите ну совсем другую парадигму, а ещё лучше — программирование без парадигм, то посмотрите в сторону ассемлера! Самый чудесный язык программирования на мой взгляд!


VG>Ей Богу, откуда такие персонажи беруться?


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

Надо понимать, что эту фразу произнес клинический бамл-программист. С высоты своих познаний он в принципе не может оценить ни языка, даже умного высказывания которое он процитировал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: Снова о Nemerle или профанация не пройдет :)
От: VladGalkin Украина  
Дата: 20.02.06 18:43
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Что характерно ярые противники Nemerle вообще на нем ни строчки не написали.

"Вай, так нэ лублу, что савсэм пысат на нём нэ магу. Проста нэ-на-вы-жу!!!"
... << RSDN@Home 1.1.4 stable rev. 510>>
ДЭ!
Re[30]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 20.02.06 18:47
Оценка: :)
Здравствуйте, VladD2, Вы писали:

O>>А вообще я уже писал, что мне лично хотелось бы увидеть написанным на Nemerle... А именно — O/R-Mapping tool.


VD>IT! Это по твоей части. Слабаешь?


Легко. Там и нужно-то всего сгенерировать аксессоры для геттеров и сеттеров для обхода рефлекшина. Для остального Nemerle не нужен.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 20.02.06 18:58
Оценка: +1
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Игорь, ты прочитай мой исходный вопрос. Что, RFD — это типичный пример бизнес-приложения? Я лично десять раз готов подписаться под тем, что синтаксические макросы это круто, но вопроса это не меняет.


RFD используется в самых что ни на есть типичных бизнес приложениях. Причём подход, используемый в BLToolkit/RFD способен навсегда закрыть тему DAL и свести разработку этого лэйера к декларативному описанию. Причём к декларативному описанию не в XML или других чуждых форматах, а непосредственно в терминах языка разработки приложения, что позволяет гибко совмещать декларативноть с императивными расширениями.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.06 19:01
Оценка: -1
Здравствуйте, Воронков Василий, Вы писали:

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


Создается ощущение, что ты пропустил пару классов и пришел в 8-ой из 5-го. При этом начинашь задавать кучу вопросов.

Я конечно могу обяснить в чем разница между текстукльными макросами и модификацией АСТ на базе квази-цитирования. Но это уже сто раз обсуждалось. Не проще ли сделать поиск?

ВВ>Вот что такого в немерле что он позволяет делать меньше ошибок и ускорить работу мне пока не понятно.


Прочти хотя бы описание языка. Ведь мне не пришлось задавать эти вопросы. Может и тебе не прийдется.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 21.02.06 05:24
Оценка: +1
E>Зашибись. Клиент покупает навороченную либу у одного поставщика за N килобаксов, затем у другого за M килобаксов. А затем еще тратит свое время на написание оберток для конфликтующих макросов. И следит за тем, чтобы LifeStyle не заканчивались. Хотя единственное желание у клиента, потратившего N+M собственных денежков, чтобы траха вообще не было.

Ты видимо никогда не был клиентом(или плохо знаком с этим зверьком) и поэтому не совсем разбираешься в том как это работает. Если для "клиента" проблема написать макрос-обертку или ему вообще не пришла в голову эта идея, то он обычно трезвонит в саппорт компаний-поставщиков, чтобы они оправдали потраченные (N+M+1) килобаксов и исправили проблему(ну или накрайняк подсказали, причем желательно в виде работающего кода, бескомпромиссное решение проблемы).

Я вот имел счастье наблюдать за тем как ведут себя клиенты, купившие либу всего лишь за (N+1) сотен баксов. Ведут они себя мягко говоря нагло, так как клиент всегда прав. Не думаю, что в случае больших сум будет иначе. Вообще хороший саппорт это залог успеха, даже если количество потенциальных проблем в продукте достаточно велико.

P.S. И вообще раз уж ты объявил, что сделаешь перерыв на год в обсуждении Nemerle, то уж будь добр потверждай свои слова(или опровергай). Есть куда более интересные темы для разговоров, чем проблемы высосанные из пальца.
Re[27]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.02.06 05:58
Оценка: :)
Здравствуйте, Vermicious Knid, Вы писали:

VK>Ты видимо никогда не был клиентом(или плохо знаком с этим зверьком) и поэтому не совсем разбираешься в том как это работает. Если для "клиента" проблема написать макрос-обертку или ему вообще не пришла в голову эта идея, то он обычно трезвонит в саппорт компаний-поставщиков, чтобы они оправдали потраченные (N+M+1) килобаксов и исправили проблему(ну или накрайняк подсказали, причем желательно в виде работающего кода, бескомпромиссное решение проблемы).


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[27]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.02.06 06:20
Оценка: -1
Здравствуйте, IT, Вы писали:

IT>Это уже откровенные придирки.


Это не придирки. Это способ показать, что мне не навится предложенное решение.
Хотя бы потому, что сначала могла быть куплена либа A и с ней не было проблем. Затем была куплена либо B, с которой так же не было проблем, пока кому-то не пришлось в одном месте объединить использование A и B. Когда здесь враперы делать? Сам же писал недавно про историю, когда в условиях цейтнота на косяки в конфигурации наткнулись. Хотел бы лично ты в таких условиях враперы для каких-то либ писать?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 21.02.06 10:59
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Сферический конь в вакууме? Ну-ну. Важно то, для чего какие средства есть.


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

ANS>Подсказка: паттерн-матчинг != switch/case. Соответсвенно, весь пример не репрезентативен. Что и было проиллюстрировано.


Подсказка: В Nemerle паттерн-мэтчинг == switch/case. Пример демонстрирует то с каким успехом паттерн-мэтчинг в Nemerle заменяет и switch/case, и if/else(который в отличие от switch/case в языке все же есть), и некоторые другие конструкции.

Согласись, что то что на C# выглядит просто отвратительно(в каком-то смысле я намеренно писал плохой код) на Nemerle выглядит намного читабельнее. Опять таки легче провести рефакторинг Nemerle кода, просто потому, что смысл более понятен.
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 21.02.06 11:19
Оценка: -1
Здравствуйте, Vermicious Knid, Вы писали:

VK>Приведи свой пример. Хотя бы на Smalltalk, я его чуть-чуть знаю и попытаюсь переписать на Nemerle и C#. И чем больше будет логики тем лучше, голого ООП не нужно. Правда наверное Smalltalk по краткости вполне может дать фору обоим, но все равно интересно будет сравнить.


Я же и привёл. Вот его и нужно сравнивать с Nemerle.

ANS>>Подсказка: паттерн-матчинг != switch/case. Соответсвенно, весь пример не репрезентативен. Что и было проиллюстрировано.


VK>Подсказка: В Nemerle паттерн-мэтчинг == switch/case.


В любом источнике, где объясняется сопоставление с образцом, сказано, что он используется для разложения типа на составляющие.
Вот тебе ссылка с сайта Nemerle:

Matching is a way of destructuring complex data structures


Доступ к составляющим сложного типа это никак не область применения switch. Для этой цели используются объекты+методы.

VK>Пример демонстрирует то с каким успехом паттерн-мэтчинг в Nemerle заменяет и switch/case, и if/else(который в отличие от switch/case в языке все же есть), и некоторые другие конструкции.


Я не спорю, что припомощи набора if & goto можно смоделировать вызов процедур, но это не значит, что вызов процедур == if.

VK>Согласись, что то что на C# выглядит просто отвратительно(в каком-то смысле я намеренно писал плохой код)


"На любом языке можно писать как на Фортране" (с).

VK> на Nemerle выглядит намного читабельнее. Опять таки легче провести рефакторинг Nemerle кода, просто потому, что смысл более понятен.


Твой пример нормальный. Только его нужно писать с помощью родных средств C#. Вот еще вариант — функциональщики обычно хвастаются с какой лёгкостью делаются деревья на pattern matching. Вот и нужно сделать дерево на простое объектах и на pattern-matching.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.02.06 12:01
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Просто он изначально разрабатывался не как язык, не как библиотека, и не как ИДЕ, пусть и скриптуемая сама из себя, а как комплексная среда помогающая человеку. То есть вначале принципы, потом язык, стандартные библиотеки классов, оболочка. И всё это цельно увязано друг с другом. Можно писать и на ST без "живой" среды, например в emacs на Gnu ST. Но зачем?


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[31]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 21.02.06 13:46
Оценка: +1
Здравствуйте, Oyster, Вы писали:

O> О конфликте имён макросов?


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

Я собственно ему это и сообщил, и примеры давал, просто обсуждение Nemerle слишком разрослось и сложно все сообщения прочитать. Думаю пора завязывать с этой веткой.

Вообще не понимаю сколько эту тему можно обмуссоливать. Тем более, что до таких масштабов применения, чтобы библиотеки макросов создавались и продавались на коммерческой основе популярность Nemerle скорее всего никогда не дорастет. Для этого нужна такая же популярность, как у C++ в начале-середине девяностых, а побить его удалось пока только Джаве, да и то не во всех отраслях IT.
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 21.02.06 18:34
Оценка: :)
Здравствуйте, VladD2, Вы писали:

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


Ни фига бы не упростило. Если ты единственный чувак на проекте, который может что-то поправить, то твоя ценность как специалиста сильно увеличивается
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.02.06 21:02
Оценка: -1
Здравствуйте, eao197, Вы писали:

ANS>>Я не знаю как ты считал строчки кода, но в любом случае, это лучше чем тот кусок спагетти, что привёл ты.


E>+1


E>Андрей, а ты мог бы этот же пример на Smalltalk написать? Хоть это и оффтопик в данной ветке, но лично мне очень интересно чистое ОО решение увидеть.


Он и так кон повторить не смог. Если он его так же повторит на Смолтоке то ты в очередной раз сможень порадоваться очередной профанации.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.02.06 21:02
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Очень часто можно не обращать внимания на Влада и его высказывания


Ну, и как расценивать эти слова? Не обращать на них внимания?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 22.02.06 00:30
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Вот только МС предлагает не совсем средство для создания DSL. Рельно они предлагают под этой вывиской средство для создания визуальных дизайнеров. Причем реально автоматизируют только их создание. Все что связано с самим языком и механизом его интерпретации/компиляции/трансформации они или вообще опускют, или предлагают очень поверхносные решения.


Даже это можно обозвать словом DSL.

VD>К тому же МС предлагает средство для создания так называемых внешних DSL.


VD>В Нэмерел же предлагает практически законченную концепцию создания внутренних DSL.


Не законченную. Нет главного (как и в Лиспе) — языка описания языков. Пока ещё приходится писать DSL-ы на слишком низком уровне...

VD>Думаю, что возможно, что в паре с Нэмерел DSL Tools может оказаться куда более мощьным оружием. Так что они не противопоставлют друг-друга, а скорее дополняют.


Дык. Идеология LOP к тому и сводится, что всё, что есть, друг друга дополняет. Пусть расцветут все цветы, и всё такое...

Я тут посмотрел на DSL-и, реализованные поверх F# — очень интересно. Если даже с динамическим метапрограммированием такая мощща доступна, то уж со статическим тем более можно многое заполучить почти на халяву. Даже подумываю, уж не прикрутить ли мне к F# фичи, аналогичные MetaOCaml-у... Исходники уже доступны, toplevel там есть полноценный, так что почему бы и нет?
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.02.06 03:46
Оценка: +1
Здравствуйте, VladD2, Вы писали:
VD>К примеру, согласить круто вместо:
VD>
VD>string.Formar("Имя: {0} Фамилия: {0}", name, lastname)
VD>

VD>писать:
VD>
VD>$"Имя: $name Фамилия: $lastname", 
VD>

VD>Причем ошибиться нигде нельзя! Если ты впишешь неверное имя переменной в текст, то тебя остановит компилятор! А в C# ты рискушь получить ошибку во время выполнения (неверный форма или еще что).
Не, Влад, так — не круто. Приложения должны поддаваться локализации; а это означает переменный порядок "вставленных" слов во фразе. Неслучайно в Delphi/Builder был применен вариант сишного формата, в котором можно было указывать аргументы не в порядке следования. И неслучайно в дотнете единственный необходимый параметр формата — это номер аргумента.
С учетом того, что ToString() вморожено прямо в object, возможные ошибки сводятся к недостаточному количеству аргументов либо ссылок на них. Если удастся встроить их проверку, то будет круто.
Кстати, я вот еще думал в свое время над синтаксисом типа такого:
string.Format("Имя: {Name} Фамилия: {LastName} Возраст: {Age}, Место работы: {Employment.CompanyName} ", person);

Тут гораздо труднее ошибиться. Но представления не имею, как это можно проверить в компайл-тайме (особенно с учетом вышесказанного насчет локализации, т.е. выносе строковых констант за пределы кода).
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[27]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 05:13
Оценка: +1
Здравствуйте, Oyster, Вы писали:

O>Да ты просто задокументируй сам макрос — делов то. Всё равно дока будет автоматом сгенерирована и полезной информации в ней будет мало. Мне, кстати, генерация в compile-time гораздо больше нравится — нет никакой возни с поддержкой кода, сгенерированного в precompile-time (класть/не класть в VSS/CVS/SVN, как следить за тем, чтобы никто ничего не модифицировал и т.д.).


Я придерживаюсь мнения, что результаты генерации вообще в VCS попадать не должны. Там должны быть только исходники, из которых производится генерация. Например, для yacc-а под контроль версий нужно укладывать .y-файлы, но вот полученные из них .c-файлы помещать под контроль версий смысла нет.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 05:16
Оценка: :)
Здравствуйте, WinniePoh, Вы писали:

VD>> Так вот макросы Нэмерла избавлены от оных недостатков. И они просто являются мощным инструментом к злу не относящемуся.


WP> Увы, не избавленны. Только что проверки ради создал работающую, но абсолютно нечитабельную и отладке не подлежащую макру. Показать?


Да.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[21]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 08:07
Оценка: :)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Или после появления ответов уже поздняк метаться?


Именно
Re[25]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 22.02.06 08:12
Оценка: :)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>О том, что XSLT неполноценный ЯП. Вся арифметика там вроде есть


Более того, я видел пару реализаций машины тьюринга на XSLT.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[30]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 08:13
Оценка: -1
Здравствуйте, Oyster, Вы писали:

O>Ты про Лисп? Там именно так и случилось, но только язык популярным не стал.


Еще и про макросы в C/C++.

O>Или ты про шаблоны C++? Так их проще педалить, да и предназначены они имхо для совсем иных задач были. Они, собственно, и не позволяют делать всё то, что возможно с помощью макросов Nemerle.


У меня вообще впечатление, что нынешние шаблоны в C++ это только начало длинного пути их превращения во что-то другое.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[31]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 08:23
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>У меня вообще впечатление, что нынешние шаблоны в C++ это только начало длинного пути их превращения во что-то другое.


Возможно. Типа опробовали, теперь можно и посерьёзней забабахать. Только комитет чего-то долго возится...
Re[28]: Вопрос
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 09:55
Оценка: +1
Здравствуйте, Vermicious Knid, Вы писали:

Кстати, а можно поинтересоваться — а как предварительно сформировать список полей, а потом его вставить в объявление класса? Я попытался поменять твой код, чтобы использовать макросы внутри. Код, естественно, не работает:

using Nemerle.Compiler;
using Nemerle.Collections;
using Nemerle.Macros;
using Nemerle.Utility;

namespace Oyster
{
    macro metaclass(className, body)
    syntax ("metaclass", className, body)
    {
        def ctx = ImplicitCTX();
        mutable code = [];
        match (body)
        {
            | <[ { .. $props } ]> =>
                foreach(<[ $(n : name) : $(t : name) ]> in props)
                {
                    code ::= <[ decl:
                        [Accessor]
                        mutable $(n.NewName("_" + n.Id) : name) : $(t : name) ;
                    ]>;
                }
            | _ => Message.FatalError($"Invalid metaclass syntax, expected properties definition, got $body");
        }
        // Что надо писать тут?
        def builder = ctx.Env.Define(<[ decl: [Record] public class $(className.ToString() : usesite) { .. $code } ]>);
        builder.Compile();
        <[ () ]>
    }
}
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 11:57
Оценка: +1
Здравствуйте, WinniePoh, Вы писали:

WP> Синтаксис нужен, но не важен. Синтаксис можно какой угодно приделать. Из того же Лиспа можно в несколько строчек сделать язык с любым синтаксисом. Но делать это надо на поздних стадиях, а пока пишутся макры — писать лучше в AST. Так проще и понятней выходит.


Если синтаксис не важен, то почему Лисп не стал популярным?
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 22.02.06 13:01
Оценка: +1
Здравствуйте, Oyster, Вы писали:

V>>Блин, столько писать... Да проще уже "по-честному" это проперти нарисовать. Можно подумать, что это — принципиально.


O>Не принципиально. Но проще ли? Сравниваем:


В данном случае я согласен с vdimas. Макро для объявления пропертей хотя выглядит и логично, но довольно громоздко и коряво.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 13:08
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>В данном случае я согласен с vdimas. Макро для объявления пропертей хотя выглядит и логично, но довольно громоздко и коряво.


Да, пожалуй тут синтаксический макрос смотрелся бы веселее.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 22.02.06 14:44
Оценка: +1
Здравствуйте, genre, Вы писали:

G>при выборе платформы для реального большого проекта популярность имеет довольно большое значение. а серый обыватель или не серый и его слой общества никакого значения не имеет.


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

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

Как, продолжим аналогии, или попробуем совместно рассчитать расходы и риски на примере какого либо типичного индустриального софтового проекта?
Re[28]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.06 14:47
Оценка: :)
Откровенно говоря очень чешутся руки засунуть свои подлые рученки в их компилятор.

Как они смотрят на впускание в проект новых людей? Если мы создадим рбэнч в их проекте и покалдуем над ним, они не обидятся? В смысле права дадут?

Как варинт, скопировать их проект создать клон у нас. А когда будем находить и исправлять ошибки, или добавлять фичи будем рапортовать орлам, чтобы они тоже вставляли.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Новая версия макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.06 14:47
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>В C++ для подобных экспериментов изобрели Boost. В .NET-е, похоже, Nemerle с макросами.

E>Впечатление почему-то от исходников того и другого одинаковое

Шаблоны С++, а стло бытьи Буст по этому поводу нервно курит в сторонке.

Если сможешь с помощью С++-шаблонов сгенерировать код конструктора и эксесор-методы для полей, то я сниму перед тобой шляпу.

Что до внешенго вида, то мы просто наткнулись на проблему которую хорошо было бы решить. А код подобного макроса мог бы выглядеь так:
def propInfos = Impl.GetMemberDefs(body);
def ctx = ImplicitCTX();
def builder = ctx.Env.Define(<[ decl: public class $(className.ToString() : usesite) { } ]>);

MacroLib.DefineCtor(builder, propInfos);
MacroLib.DefineProps(builder, propInfos);

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

Как ты понимашь, функции GetMemberDefs, DefineCtor и DefineProps можно написать один раз универсально и использовать потом где нужно (в том числе и в макросах типа Accessor и Record).

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

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

Это просто мега-фича. Она способна сделать язык офигительно выразительным.

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

ЗЫ

Эх. Как бы заставить обратить внимание МС на этот проект?! Ведь сейчас проекту нехватает гарммотного коммерческого подхода. Сейчас нужно было бы произвести ревизию фич, заморозить проект и довести, что назвается, его до релиза! Ведь щастье так близко, но все может погубить отсуствие коммерческой жилки у проекта.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.06 14:47
Оценка: :)
Здравствуйте, eao197, Вы писали:

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


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

В общем, оппонируй к словам, а не к тем кто их высказывает. Иначе к твоим словам уже никто не будет прислушиваться по соврешенно объективным причинам.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 15:05
Оценка: :)
Здравствуйте, genre, Вы писали:

G>О! может для примера RSDN@Home взять? благо про его разработку известно довольно много.



И кроссплатформенную реализацию, чтобы все разговоры про RSDN@Home for Linux разом закрыть.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 22.02.06 16:45
Оценка: +1
AVK>>Ты недооцениваешь возможности Nemerle. Они позволяют, к примеру, эмулировать синтаксис Питона.

VK>Не надо демонизировать Nemerle. Эмуляция синтаксиса Питона сделана не через макросы. Это неотъемлемая часть компилятора. Макросами это сделать абсолютно невозможно. А то c какой легкостью эта фича была добавлена в компилятор лишь демонстрирует расширяемость исходников компилятора, не более того.


Да, это сделано не через макросы. Но! Макросами это сделать возможно, да ещё и тривиально. Hint: ничто не мешает засунуть в макру парсер.
Re[29]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 17:35
Оценка: :)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Т.е. SQL тоже неполноценный язык программирования? Если я пойду и скажу это нашим базовикам, ты мне припарки делать будешь?


В смысле неуниверсальный имхо. Я тоже к своим с таким заявлением не сунусь — хинтов в одно место насуют
Re[30]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 22.02.06 18:03
Оценка: :)
Здравствуйте, Oyster, Вы писали:

O>Ну вот ты, я думаю, напишешь такую библиотеку, с которой не будет проблем


Что-то у меня как-то сразу желание спорить пропало
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[27]: Снова о Nemerle или профанация не пройдет :)
От: vdimas Россия  
Дата: 22.02.06 18:30
Оценка: :)
Здравствуйте, Oyster, Вы писали:


O>Я знаю о том, что такое Форт, я писал код на Форте и даже писал свою Форт-машину.


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

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

O>Не понравилось — с трудом представляю себе, как на Форте написать корпоративное приложение, например.


Так же как и на других языках, это возможно только в случае наличия высокоуровневых библиотек. Давай я отберу у тебя ремоутинг, сериализацию, TCP каналы, ASP.Net и Windows.Forms и ты напишешь корпоративное приложение на C#.

Кстати, "объектные" примочки под Форт содержат мета-информацию, достаточную для сериализации. Более того, программы прикладного уровня на Форте — это данные, а не код. Их в некотором виде можно гонять по сети

O>Резюме: видимо, я так и не научился писать на Форте.


И почему многие начинают изучать Форт с попыток написать Форт-машину? (ко многим любителям Лиспа это тоже относится, Лисп написать не намного сложнее).

На подобных задачах можно изучить механику процесса компиляции/интерпретации, но не возможно изучить идеологию применения инструмента.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 22.02.06 19:01
Оценка: :)
Здравствуйте, WinniePoh, Вы писали:

WP> Я не понимаю вообще как оно должно выглядеть. Если вы такое видели — приведите пример. Ну, допустим, автокомплит в каком либо UML-редакторе.


Ты вместо пива водки с него потребуй, тогда сразу поймешь
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.06 21:16
Оценка: +1
Здравствуйте, WinniePoh, Вы писали:

WP> А почему Haskell с его великолепным синтаксисом не стал популярным? Почем не стал популярным ML? Почему стал популярным Perl, не смотря на ужасный синтаксис? Почему стал популярным кривой и страшный PHP? Почему не стал популярным Лисп с синтаксисом Паскаля (R-Lisp)?


По-моему очевидно... у популярных языков блоки выделяются фигурными скобками.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.06 22:33
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>В данном случае я согласен с vdimas. Макро для объявления пропертей хотя выглядит и логично, но довольно громоздко и коряво.


Авторы тяготеют к функциональщике. Функциональщика к неизменяемым объектам. Так что не судренно, что по умолчанию самая простая запись для неизменяемых свойств. Для них она проста и логична:
[Accessor] mutable _somePropery : int;

Короче уже особо некуда.

Уж с полным объявлением свойства не сравнить. Были бы такие макросы разве стал бы я каждое свойстко регионом окутывать, чтобы схлопнуть его?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 23.02.06 00:53
Оценка: :)
Здравствуйте, Дарней, Вы писали:

IT>>Всё так. Осталось только это растолковать интеграции VSS с VS.


Д>можно один раз добавить эти файлы в VSS, затем удалить, но не делать purge


Согласен, это решение. Редкостной извращённости, но решение.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.02.06 02:32
Оценка: +1
Здравствуйте, VladD2, Вы писали:
VD>Хм. И даже если я пишу утилиту командной строки для собственных целей?
Влад, твои утилиты командной строки никому не интересны. Кроме тебя же самого. Меня интересует разработка для заказчика, а не для меня.
VD>И что мне помешает сделать такой макрос?
Я не знаю. Я пока вообще немерле не смотрел — у меня linq то проверить времени нету.
VD>Ну, а зачем номер?
Чтобы в другом порядке можно было аргументы поставить.
VD>И что значи в дотнете? Нэмерл тоже дотнет, но в нем я волен оперировать именами переменных из текущей области видимости.

VD>И чем, раскажи на милость, это отличается от:

VD>
VD>$"Имя: $(person.Name) Фамилия: $(person.LastName) Возраст: $(person.Age), Место работы: $(person.Employment.CompanyName_ "
VD>

Рассказываю: Я могу написать вот так:
string.Format(Resources.PersonReportHeaderString, person);

В итоге person (бизнес-данные) берется из одного места, а формат (презентация) — из другого. Например, из автоматически выбранной по текущей культуре сателлитной сборки.
VD>Хотя конечно можно сделать макрос который и такое разрулит. Вот только надо ли?
Еще раз: придумай, как решить проблему локализации. Это было бы очень круто. А возможность слеплять строчки малоинтересна, т.к. она не дает ничего нового по сравнению с:
"Имя: "+name+"Фамилия: "+lastname;

Особенно заметно это станет, если ты попробуешь при помощи своего макроса вывести что-то без пробелов. Что-то мне подсказывает, что парсер споткнется на этом:
$"Имя:$nameФамилия:$lastname"
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: Vermicious Knid  
Дата: 23.02.06 04:08
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

S>
S>$"Имя:$nameФамилия:$lastname"
S>


Для таких случаев есть вот что:
$"Имя:$(name)Фамилия:$lastname"
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.06 07:08
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>А если я хочу атрибут навесить на геттер? Упс?


Значит обяви свойство явно. Или создай свой метаатрибут который навесит что захочешь.

Надо правильно понимать метаатрибуты. Это возможность задать некоторые паттерны декларативно. Именно паттерны! Если у тебя свой паттерн, то или вазись вручную, или создай свой метаатрибут описывающий этот паттрн.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 23.02.06 07:25
Оценка: +1
Здравствуйте, VladD2, Вы писали:

IT>>А если я хочу атрибут навесить на геттер? Упс?


VD>Значит обяви свойство явно. Или создай свой метаатрибут который навесит что захочешь.


Боюсь, этим скорее всго и закончится.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.02.06 08:14
Оценка: +1
Здравствуйте, vdimas, Вы писали:

V>6. Управляемость и надежность. Мне страшно давать в руки бухгалтера какой-нить JavaScript.Net, потому как он сможет написать программу, которая подключает внешние сборки, которые могут предоставлять абсолютно произвольные возможности навредить компьютеру, программной системе и нервам разработчиков.


CAS спасет отца русской демократии.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[27]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.02.06 08:19
Оценка: -1
Здравствуйте, Oyster, Вы писали:

O>Да я всё понимаю. Я для себя рассматривал эту задачу как пример написания макроса. Опять же, я уже вроде говорил, но повторюсь — мы можем написать функцию, которая возвращает AST.


AST слишком грязный, чтобы его можно было использовать для целей обработки специфичной метаинформации.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[31]: Новая версия макроса
От: vdimas Россия  
Дата: 23.02.06 08:39
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Если сможешь с помощью С++-шаблонов сгенерировать код конструктора и эксесор-методы для полей, то я сниму перед тобой шляпу.


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


VD>Эх. Как бы заставить обратить внимание МС на этот проект?! Ведь сейчас проекту нехватает гарммотного коммерческого подхода. Сейчас нужно было бы произвести ревизию фич, заморозить проект и довести, что назвается, его до релиза! Ведь щастье так близко, но все может погубить отсуствие коммерческой жилки у проекта.


На rsdn наблюдается удивительная плотность MVP в пересчете на квадратный сантиметр ГУИ сайта
Уговори коллег по команде, пусть напишут "шефам" открытое коллективное письмо-обзор этого языка. Перед этим можно накатать статью в журнал для "обкатки" материала.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[29]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.02.06 11:04
Оценка: -1
Здравствуйте, Oyster, Вы писали:

O> Тебе Reflection.Emit больше нравится?


Я его не использую.

O> С XSLT не имеет смысла сравнивать, поскольку тут точно уж лучше макросы.


Он не может быть лучше на данной конкретной задаче, просто потому что для нее макросы не подходят.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 23.02.06 11:06
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Как обычно. Сказать есть что, но тебе это не нравится.


Увы, слова про "хрень" — действительно "как обычно". И, таки так, восхищения у меня они не вызывают.

VD>match заменяет и if, и switch и даже операторы вроде && и ||. Доказательством служит то, что в Нэмерел операторы if реализован на базе match, а switch вообще отсуствует, так как проигрывает match-у в выразительности.


VD>Но это сказать это, все равно что ничего не сказать.

VD>match — это в разы большее мошьная конструкция.
VD>Конечно, все что можно сделать с помощь match можно сэмулировать сочетанием груды if-ов cо switch-ами, плюс прийдется пользоваться хэш-таблицами и писать кучу кода.

Влад, сопостовление с образцом это средство связывания данных с кодом их обрабатывающим, можно сказать средство создания контекста выполнения. Вот тебе пример из A Gentle Introduction to Haskel:

4.1 Pattern-Matching Semantics
A successful match binds the formal parameters in the pattern.
При успешном сопоставлении (данные) связываются с формальными параметрами образца.
/.../
4.3 Case Expressions
Pattern matching provides a way to "dispatch control" based on structural properties of a value.
Сопоставлени с образцом позволяет "передавать управление" в зависимости от структуры значения.


Кроме операторов ветвления if/switch в современных языках есть другие способы как передачи управления, так и связывания кода с данными. Это, известные всем, методы объектов, где код всегда связан с нужными данными. И перегрузка методов в статически типизируемых языках.

И ежу понятно, что сопоставление с образцом более гибко, чем объекты + (виртуальные) методы, потому, что структура объектов более жесткая. Но, поскольку сказано, что пример "наглядно демонстрирует некоторые отличия между Nemerle и C#
Автор: Vermicious Knid
Дата: 20.02.06
", то, корректной была бы программа-образец в которой сравнивались методы + объекты + if/switch с сопоставлением. Использованный пример можно заимплементить даже без if (Что я и показал). Что интересно, достаточно легко выбрать задачу, которая через сопоставление решается "веселее" чем на конструировании объектов/методов/if-ов. Простейший пример — любая задача требующая множественной диспетчеризации (для примера может хватить и двойной).

А уж если сравнивать сопоставление только с if/switch, то нужно было бы взять читый C. Только сомневаюсь, что сравнение Nemerle с С добавит первому очков.

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

VD>Собственно именно это и пытался продемонстрировать Vermicious Knid в обсуждаемом сообщении
Автор: Vermicious Knid
Дата: 20.02.06
.


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

VD>Не приймите, это за наезд или оскорбление, но вам похоже нужно просто по серьезнее изучить match и его возможности. Тогда вам будет очевидно, что match — это намного более универсальная и выразительная вещь чем switch. Ну, а if является более врыазительным в некоторых случаях, но не обеспечивает всего функционала. Куча же if-фов является явно менее выразительной.


А мужики то и не знают, что match нужно сравнивать со switch. А они взяли и написали:

Сопоставление с образцом это способ разложения сложных структур.

И не сказали, что это способ управления потоком выполнения. Нужно написать им баг-репорт, однозначно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[30]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 23.02.06 11:42
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

O>> С XSLT не имеет смысла сравнивать, поскольку тут точно уж лучше макросы.


AVK>Он не может быть лучше на данной конкретной задаче, просто потому что для нее макросы не подходят.


Смотри — ты всё равно в итоге генерируешь код из XML, используя XSLT, на этапе компиляции, правильно? Почему бы не использовать Nemerle вместо XML и макросы вместо XSLT?
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.06 20:02
Оценка: -1
Здравствуйте, vdimas, Вы писали:

V>Ядро его Лиспа написано на С. Все остальное, включая львиную долю самого диалекта этого Лиспа, ядра EMacs-a и всего остального — на Лиспе.


Ну, то что Лисп написан на С, а не на самом себе (все же VM у него нету) конечно прискорбно, но к делу не относится.

А спросил я это так как интересно какой объем исходников у базовой части редактора. Ну, за вычетом разных колореров и интелисенсов. То есть самой основной функциональности. Ведь размер кода Сцинтилы и Rsdn.Editor извесны, так что есть с чем сравнивать. Если Лисп действительно так крут на любых задачах, то код редактора должен быть в разы меньше.

Для сравнения код Сцинтила имеет ~680 кил кода, а Rsdn.Editor ~390.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.06 23:53
Оценка: -1
Здравствуйте, vdimas, Вы писали:

V>Давайте лучше Лисп (а еще лучше — Схему) для дотнет напишем.


Уже давно написаны.

V> А то все то, что есть на сегодняшний момент для дотнет немного сыро и криво.


-1
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: alexeiz  
Дата: 24.02.06 06:42
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Здравствуйте, Воронков Василий, Вы писали:


ВВ>>Иногда мне начинает казаться что у них какой-то стратегический интерес обижать С++ — особенно в плане дизайнеров.


ПК>Да ну... Интерес-то у них как раз обратный: они сами на C++ достаточно плотно сидят (*). Но для C++ по многим причинам инструменты очень сложно писать...


ПК>(*) Впрочем, "они сами" в несколько лучшем положении, т.к. могут использовать внутренние билды, в которых всевозможные новшества VS появляются раньше, чем в тех, что доступны "всем остальным".


Тут ты немного неправ. Да, есть такое понятие — dogfooding. Но оно больше относится к компилятору, чем к среде. Грубо говоря, среда не догфудится. Компилятор — сколько угодно во многих группах.

Да и в проектах на C++ среда используется слабо. В основном, потому что капризная она. Установки требует, зависимостей много. А компилятор он тупой как пробка в этом смысле. Его в репозитории обновил, и вуаля — все сразу пользуются новой версией компилятора. Но даже и с компилятором нужно много чего сделать перед тем, как он станет LKG (Last Known Good). Если интересно, здесь немного есть про этот процесс: http://joncaves.blogspot.com
Re[33]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.02.06 11:22
Оценка: -1
Здравствуйте, Oyster, Вы писали:

O>Да, прочитал ссылку и понял. Ну тогда не знаю — можно пересмотреть дизайн


Хороший совет

O> и ту "другую метаинформацию" хранить отдельно.


Зачем? Если редактируется она совместно? Ты пойми — редактируют не класс, а бизнес-сущность, а куча производных от него классов и интерфейсов суть поддержка этой сущности. Резать метаданные на несколько кусков, а потом склеивать их при деплойменте и в рантайме не лучшая идея.

O>А исходники на Nemerle можно тоже хранить в ресурсах.


И парсить их в рантайме? Спасибо, я лучше XML обойдусь.

AVK>>Неправильно. И на этапе деплоймента тоже.


O>Что тебе мешает таскать с собой компилятор Nemerle?


Видишь ли, не всегда приемлемо распространять код в исходниках.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[32]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.02.06 11:22
Оценка: -1
Здравствуйте, VladD2, Вы писали:

AVK>>Сделаешь хеш-табличку на T-SQL?


VD>Да. Склько заплатишь?


Слив засчитан.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[40]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 24.02.06 13:52
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Для меня, как бы, толи очевидна, толи "философски обоснована" ограниченность возможностей времени компиляции.


Ну во время выполнения у тебя есть reflection, собственно, и он есть даже в C#. В Nemerle макросы потому и придумали, что не было средств метапрограммирования на этапе компиляции, чего так хотелось.
Re[37]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.02.06 15:47
Оценка: -1
Здравствуйте, Oyster, Вы писали:

AVK>>Я уже говорил — для кодогенерации в деплойменте. Еще для настройки O/R Mapper, для автоматического формирования GUI, для привнесения автоматики в ряд стандартных алгоритмов и т.д. Много где, всего и не упомнишь.


O>Ну я понял, в общем. Для того дизайна, что имеется сейчас, Nemerle пролетает.


Да все нормально. Он после генерации исходников на ХСЛТ тоже их компилирует. Ну, будет компилировать Нэмерл, а не C#. Какая разница?

А реализовать чтение модели из ХМЛ — это не проблема.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[34]: Новая версия макроса
От: Oyster Украина https://github.com/devoyster
Дата: 24.02.06 15:58
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Я тоже так понял. Остается узнать будет ли это исправлено и если да, то когда.


Угу... а то сейчас немного коряво. Конечно, для этого один раз пишется функция... но всё равно коряво
Re[43]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.02.06 16:52
Оценка: +1
Здравствуйте, Oyster, Вы писали:

O>Было бы неплохо имхо. По крайней мере, повеселее чем Reflection.Emit и всякие там CodeDom.


В общем, то мне и сейчас никто не мешат нагенерировать код и скомпилировать его в рантайме. Но тут смысл в том, что для его генерации можно будет пользоваться не низкоуровневыми интерфейсами вроде эмита, и не ужасной текстовой конкатинацией, а теми же механизмами которые исползуются в компайлтайм-кодогенерации сейчас.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.02.06 16:52
Оценка: +1
Здравствуйте, Oyster, Вы писали:

O>Вот тут ещё на SourceForge что-то валяется: http://sourceforge.net/projects/ridl


Похоже этот проект мертв. Исходники датируются 2004 годом и содержат старый синтаксис дженериков (с <> вместо []). К тому же это похоже LALR-парсер созданный по стандартной схеме (не как макрос), что представляет мало интереса.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[40]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 24.02.06 16:58
Оценка: +1
Здравствуйте, VladD2, Вы писали:

O>>Но надо ли... Т.е. тут от Nemerle будет небольшая подмога имхо.


VD>Ты ты погляди на этот ужас что присуствует в ХСЛТ? Если объем увеличится, то это будет хаос.


Знаешь, я думаю, что впихнуть использование Nemerle в уже существующий дизайцн будет тяжко... Вот в случае разработки подобного вновь уже можно будет учитывать факт присутствия Nemerle на арене
Re[41]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.02.06 19:52
Оценка: -1
Здравствуйте, Oyster, Вы писали:

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


Не сомненно. Но АВК поднимал вопрос отндь не с целью избавиться от ХСЛТ. Это был аргумент в пенесометрическом споре.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[35]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 25.02.06 04:55
Оценка: +1
Здравствуйте, VladD2, Вы писали:
VD>Ненужны для реализации хэш-таблиц никакие внешние модули. T-SQL — это полноценный императивный язык. Единственная его проблема — это ограничение на рекурсию в процедурах. Но это не является фатальной проблемой. На многих языках (если не ошибаюсь даже на Фортране) тоже первое время нельзя было делать рекурсию. Но писать программы это не мешало.
Извини, Влад, но все-таки — не вполне. В нем нет поддержки никаких динамических структур: нет ни массивов, ни указателей. Это означает невозможность реализовать контейнер. Поэтому ни о каких хеш-таблицах, деревьях, или списках речь на нем идти не может. И это не зависит от того, сколько и кому заплатить. Так что это "полуимперативный" язык: управляющие конструкции для записи алгоритмов в него ввели (ветвления и циклы), а структурные данные — нет.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[38]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.02.06 14:09
Оценка: -1
Здравствуйте, Sinclair, Вы писали:

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

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

Бесспорно не ясно. Просто АВК захотелось вставить свои 5 копеек и он выдумал совершенно бессмысленный пример.

Кстати, о массивах... Их можно эмулировать на базе varbinary и функций типа SUBSTRING(). В свое время на Васике я еще не такое вытворял одной лишь функцией memcpy().

S> Но в принципе да, если разрешить себе пользовать таблицы, то автоматически получается turing-completeness.


Ага. Как говориться ни в чем себе не отказывай.

Я вообще не понял цель замечания АВК. Я приводил пример расширения DSL-я (SQL) императивными корструкциями чтобы позволить людям решать широкий круг задач. И делал это отвечая на вопрос "Т.е. SQL тоже неполноценный язык программирования?
". Тут влез АВК, ни чего не понимая начал заниматься "сливами".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[33]: Снова о Nemerle или профанация не пройдет :)
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 27.02.06 16:32
Оценка: :)
Здравствуйте, Oyster, Вы писали:

O>Вот только потрогать его у меня нету возможности, а ставить 'nix только ради него неохота.


Н-да, очередной праздник кроссплатформенности :\
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 07.03.06 07:24
Оценка: +1
Здравствуйте, Дарней, Вы писали:

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


Кстати, если его ngen-ом обработать, то он компилит довольно быстро: Re[9]: Снова о Nemerle или профанация не пройдет :)
Автор: Vermicious Knid
Дата: 17.02.06
.

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


Посмотри сюда: Re: Микро-аддин для VS 2005
Автор: Oyster
Дата: 06.03.06
. Тут у тебя будут отдельные типы проектов для Nemerle (правда, с расширением .csproj, но это не сильно большая беда имхо, тем более что и это можно исправить).

А для взаимодействия с C# или C++/CLI или чем угодно ещё — добавляешь проект другого типа в солюшен (как всегда, в общем).
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: xhalt Украина  
Дата: 07.03.06 08:29
Оценка: +1
Здравствуйте, Oyster, Вы писали:

O>А чем тебя не устраивают несколько проектов на разных языках в одном solution (в 2003-й и того не было)?

В 2003 таки выло. В одном солюшне смешивал проекты на native C++, уродском mC++, и C# с депендсами между ними.

А так, несколько языков для одного модуля — это конечно лишнее
А вот поддержка в VS многомодульных сборок не помешала бы.
... << RSDN@Home 1.2.0 alpha rev. 0>>


Предлагаю работу в Киеве
Автор:
Дата: 04.05.06
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.03.06 21:12
Оценка: +1
Здравствуйте, Дарней, Вы писали:

Д>сделать отдельный тип проекта — не проблема.


Сделать тип то не проблема. А вот сделать его полноценным совсем не так просто, как кажется.

Д> Надо будет только обработать напильником то, что уже сделал NoiseEHC.


Там обрабатывать нечего. Это просто слегка подрихтованный пример из VS SDK. И вобще, есть мыслб что правильный плагин для Nemerle должен быть написан на Nemerle.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: xhalt Украина  
Дата: 10.03.06 08:13
Оценка: +1
Здравствуйте, Дарней, Вы писали:

X>>А зачем? Какой цели ты хочешь добиться?

Д>чтобы минимизировать работу и не реинвентить велосипед, то бишь реализовывать полностью проекты для немерле
А что тебе мешает это делать сейчас (кроме отсутствия подстветки, IntelliSense и edit&continue) ?

X>>Работай себе с Nemerle-проектами.

Д>а где их взять?
Создай точно так же как ты создаёшь проекты на C#, например, воспользовавшись шаблонами, любезно предоставленными Oyster.
Автор: Oyster
Дата: 06.03.06


X>>В C# и Nemerle нету ни линковки ни раздельной компиляции каждого исходного файла по отдельности.

Д>всё там есть, если есть необходимость. Просто не всегда используется.
AFAIK, линковку, в традиционном смысле этого слова, выполняет уже джитер в рантайме. Но не раздельно по файлам-исходникам, а уже по сборкам/модулям.
... << RSDN@Home 1.2.0 alpha rev. 0>>


Предлагаю работу в Киеве
Автор:
Дата: 04.05.06
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: McSeem2 США http://www.antigrain.com
Дата: 15.02.06 02:54
Оценка:
Здравствуйте, IT, Вы писали:

IT>Но, в любом случае, у MS нет шансов остановить этот процесс.


Ой, не говори так категорично. У MS очень даже есть шансов. Как в свое время Oracle купил People Soft, после чего всех сократил (читай — распылил конкурента).

IT>Через год-два на Nemerle начнут делаться большие проекты, через три-пять функциональщина и макросовщина начнут становиться такой же привычной вещью в мейнстриме, какой 15 лет назад становился ООП. Те, кому выгодна профанация остановить это не смогут. Да и невыгодна она никому.


Дай-то бог, как говорится. Просто я как паренек деревенский, что вижу, то пою.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 03:01
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Ой, не говори так категорично. У MS очень даже есть шансов. Как в свое время Oracle купил People Soft, после чего всех сократил (читай — распылил конкурента).


Тут другой случай — исходнички то вот они
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: McSeem2 США http://www.antigrain.com
Дата: 15.02.06 03:19
Оценка:
Здравствуйте, IT, Вы писали:

MS>>Ой, не говори так категорично. У MS очень даже есть шансов. Как в свое время Oracle купил People Soft, после чего всех сократил (читай — распылил конкурента).


IT>Тут другой случай — исходнички то вот они


Есть в этом поинт. Но с другой стороны, как показывает практика? Как только основная движущая сила удовлетворяет свой желудочный инстинкт, проект постепенно загибается, несмотря ни на какие исходники.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.02.06 08:48
Оценка:
Здравствуйте, eao197, Вы писали:
E>Грамматика из Ворда -- это что?
Это такая штука, которая советует убрать слово "говенный" из деловой переписки, отлавливает несогласованность падежам и прочие грамматические фишки. Ориентирована на помощь в написании текстов.

E>Ух ты! А я и не знал, что vim -- это уже почти готовая IDE. Там еще компиляцию можно запускать, а затем по списку ошибок прыгать.

Совершенно верно. А ты как думал? Integration, Development, и Environment есть, а IDE — нету?
E>В таком, который по возможностям не дальше Notepad -- да, эффективность будет не большой. А если в vim или emacs -- то ты сам поразишься.
Я не поражусь. Я просто намекаю на то, что противники "IDE" на деле работают в IDE. И если их посадить за честный текстовый редактор, то они моментом взвоют.
E>Почему-то меня не точно понимают. Я не против внятных редакторов, наоборот -- двумя руками за! Редакторы для программистов должны быть специализированными и отличаться от, например, текстовых процессоров. Вот только не обязательно редактор должен быть IDE (с отладчиком, редактором ресурсов, дизайнером форм и сотнями настроечных диалогов).
Гм. А где граница между IDE и редактором? Вот редактор диаграмм в vs2005 — он что редактирует? Настроечные диалоги тебя чем так убили? Просто несколько более удобное представление того же csproj файла, чем текст. К тому же никто ведь тебя не заставляет этим пользоваться.

E>Я лишь думаю, что имея хороший редактор (класса vim, emacs, кому-то jedit нравится, ...) и мегафичевый язык (вроде Nemerle), не обязательно ждать появления специализированной под Nemerle IDE.

Я лично предпочитаю трактовать это так:
За неимением специализированной IDE можно попробовать соорудить ее из ориентированного на это редактора. Из ворда ты IDE не сделаешь, хоть убейся.
E>Можно использовать мегафичи языка на полную катушку сразу.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 09:31
Оценка:
Здравствуйте, Sinclair, Вы писали:

E>>Ух ты! А я и не знал, что vim -- это уже почти готовая IDE. Там еще компиляцию можно запускать, а затем по списку ошибок прыгать.

S>Совершенно верно. А ты как думал? Integration, Development, и Environment есть, а IDE — нету?


Ну я в IDE чуть больший смысл вкладываю.
Integration -- это когда ты в одной оболочке я получаю и редактор, и отладчик, и дизайнер, и редактор ресурсов, и класс браузер, и отрывки из помощи. И все это сразу и задаром В vim этого просто не сразу. Некоторые умельцы умудряются подобный комбайн соорудить
Автор: CrystaX
Дата: 08.08.05
(вот еще и еще), но мне такая тесная интеграция просто не нравится.
Environment -- это когда IDE сама за тебя разбирается откуда запускать компилятор, что и где искать. В vim-е, опять же, такого нет. Он наследует environment из той оболочки, откуда его запустили. У меня настроено несколько shell-ов для разных компиляторов и vim использует только то, что я предварительно указал в настройках конкретного shell-а.

S>Настроечные диалоги тебя чем так убили?


О, это старая больная тема, и в данной ветке будет полным оффтопиком.

S>Из ворда ты IDE не сделаешь, хоть убейся.



Году в 96-м, под впечатлением от методологии OMT я сделал в Word-е такую штуку: описываешь класс (в виде текста назначение, в специальной таблице список методов с прототипами и комментариями), затем запускаешь макрос, который из этого дела формирует C++ описание класса (с комментариями) и заглушки для методов, и копирует все это дело в клиборд. Затем переходишь в редактор с кодом и paste-ишь сгенерированный код. Ну типа документация в стиле OMT сразу велась. Даже пользовался несколько недель этой штукой. Молодость, молодость...


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: Дарней Россия  
Дата: 15.02.06 11:15
Оценка:
Здравствуйте, IT, Вы писали:

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


У них на сайте есть фотография, кстати. Core team — это один профессор и трое, вероятно, аспирантов.
Чертовски приятно видеть, что не все занимаются борьбой с ветряными мельницами, как один известный господин В.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 11:35
Оценка:
Здравствуйте, McSeem2, Вы писали:

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


IT>>Но, в любом случае, у MS нет шансов остановить этот процесс.


MS>Ой, не говори так категорично. У MS очень даже есть шансов. Как в свое время Oracle купил People Soft, после чего всех сократил (читай — распылил конкурента).


Открытый проект нельзя купить. Что Linux что Nemerle. Будет форк, будет новая команда разработчиков, всего делов то.
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 11:45
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>5. Когда с его использованием начнут делать большие проекты вылезет какая нибудь доколе неизвестная бяка.


И вполне возможно, что именно одна из его сильнейших сторон, макросы, его же и погубят. Как это произошло с Lisp или TeX (знаю я, что это вполне себе успешные языки/инструменты, но погоду они не делают).


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: Дарней Россия  
Дата: 15.02.06 11:57
Оценка:
Здравствуйте, eao197, Вы писали:

E>И вполне возможно, что именно одна из его сильнейших сторон, макросы, его же и погубят. Как это произошло с Lisp или TeX (знаю я, что это вполне себе успешные языки/инструменты, но погоду они не делают).


Скорее, Лисп погубил его "синтаксис"
а макросы в Немерле использовать никто не заставляет, там и без того есть много вкусного
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 12:17
Оценка:
Здравствуйте, denis_krg, Вы писали:

_>Причем наиболее вероятен исход под номером 4. Вне зависимости от степени крутизны и превосходности языка. Просто может оказаться, что переходить на этот язык индустрии экономически не оправдано. И будет узкий круг энтузиастов на нем лабать всяки мелочи.


Бог его знает. Программисткое коммьютини в эпоху повсеместного интернета штука архинестабильная. Делать прогнозы практически невозможно. Иной раз вылазят поразительнейшие языки навроде того же php, особенно ранних версий.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 12:17
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Nemerle в таком случае может оказаться официальным .NET-языком. Для MS в их бизнес-модели наоборот каждый сторонний

WP>.NET-язык не конкурент, а добрый друг. И сами Microsoft с усами, F# разрабатывают.

Насчет МС все еще интереснее. Им, по большому счету, большинство средств разработки под Windows не конкуренты. Цель Developer Division не столько в зарабатывании денег, сколько в раскручивани Windows. Впрочем, Team System немножко из моей теории выбивается.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 13:00
Оценка:
Здравствуйте, Quintanar, Вы писали:

Q>ТеХ не делает погоды??? Большинство научных статей на нем пишутся. И не надо сравнивать его с Вордом, он разрабатывался для конкретной области и в ней он крайне успешен, а жалкие конкуренты типа MSEquation отдыхают в сторонке.


Про TeX мне не надо рассказывать, я сам совою документацию в LaTeX-е пишу
Только вот сколько их, надстроек над TeX-ом? Мне вот, например, CONTeX больше, чем LaTeX понравился, да только пару лет назад CONTeX вообще с русским языком не дружил, пришлось браться за LaTeX. И даже если потребуется, простым перенос существующих LaTeX-овских текстов в CONTeX простым не будет.

И продолжая ответ. Nemerle может так же стать нишевым языком, как TeX. Но по сравнению с тем объемом кода который будет писаться на C# (TeX vs Word), он погоды делать не будет, имхо.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 13:04
Оценка:
Здравствуйте, eao197, Вы писали:

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


Q>>ТеХ не делает погоды??? Большинство научных статей на нем пишутся. И не надо сравнивать его с Вордом, он разрабатывался для конкретной области и в ней он крайне успешен, а жалкие конкуренты типа MSEquation отдыхают в сторонке.


E>Про TeX мне не надо рассказывать, я сам совою документацию в LaTeX-е пишу

E>Только вот сколько их, надстроек над TeX-ом? Мне вот, например, CONTeX больше, чем LaTeX понравился, да только пару лет назад CONTeX вообще с русским языком не дружил, пришлось браться за LaTeX. И даже если потребуется, простым перенос существующих LaTeX-овских текстов в CONTeX простым не будет.

Но макры это не такое уж однозначное зло. Это мощный инструмент, но в шаловливых ручонках мощный инструмент это страшно. Мощный инструмент нужен мощному человеку, а в шаловливые индийские ручонки надо давать ограниченную со всех сторон Java.

Проблема TeX-а в том, что макры там довольно примитивны, и не предлагается никакой системы и дисциплины их использования, ни Схемской гигиены, ни даже Лисповского gensym.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 13:21
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Открытый проект нельзя купить. Что Linux что Nemerle. Будет форк, будет новая команда разработчиков, всего делов то.


А как же Mono?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 13:22
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Но макры это не такое уж однозначное зло. Это мощный инструмент, но в шаловливых ручонках мощный инструмент это страшно. Мощный инструмент нужен мощному человеку, а в шаловливые индийские ручонки надо давать ограниченную со всех сторон Java.


Дык в том-то и дело. Когда говорят про макросы, у меня сразу возникает аналогия с макросами C (которые на самом деле часто помогают). Но когда приводишь эту аналогию, сразу возражения -- мол в этот раз все будет по другому, не нужно макросов боятся, это в C все было коряво, а здесь все иначе. Сильно смахивает на человека, который первый раз ради интереса пробует сигарету и пытается всех убедить, что ничего страшного, он только попробует и не привыкнет. А опыт миллионов курильщиков даже в расчет не принимается.

Вот Java даже попробовать макросы не дает. И какой эффект!


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 13:47
Оценка:
Здравствуйте, eao197, Вы писали:

E>Вообще, по поводу языков, которые позволяют строить собственные DSL-и, мне кажется, можно привести вот эту цитату:


На Лиспе можно воспроизвести синтаксис ну хотя бы C?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: vitaly_spb Россия  
Дата: 15.02.06 14:41
Оценка:
VK>Никого кстати не удивляет, что такое убожество как VB.NET кем-то используется для коммерческих проектов(о масштабах этого явления и размерах проектов мне прадва ничего не известно)? Я думаю хуже чем VB.NET, Nemerle никак не может быть.

У нас VB.NET используется (после года программинга на C# было даже интересно посмотреть на это N-e чудо света). Но потом привык уже к синтаксису и как нормальный программист не проявляю никаких эмоций (плохих или хороших) к языку. По сути он повторяет то же что и C#, его спец фичи типа if в catch я не использую чтобы потом легче все это было перенести на Nemerle

Насчет проекта — проект пока может быть и не слишком крупный, но для серьезного заказчика и в будущем по планам должен сильно развиться. Выбран VB.NET был т.к. американская сторона не знала .NET и синтаксис VB был для них хоть сколько-то понятен. Так что это тоже может быть причиной, не все готовы бросить все ради нового и удобного языка, но который потребует много времени на разбор его фичей.
...Ei incumbit probatio, qui dicit, non qui negat...
Re[2]: Снова о Nemerle или профанация не пройдет :)
От: vitaly_spb Россия  
Дата: 15.02.06 14:52
Оценка:
GZ>Да никто не будет переходить на Nemerle. Будет узкоспециализированным языком. Потому как нужен маркетинг(в маркетинг Java и С# были вложены огромные средства). Потому как нужны люди которые бы умели фичи пользовать. А таковых единицы.

Интересно, кто-нибудь знает как ситуация с другими языками под .NET? Их же там портировали куеву тучу, а что-то я не видел, чтобы на них какие-то серьезные вещи писали.
...Ei incumbit probatio, qui dicit, non qui negat...
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 15:02
Оценка:
Здравствуйте, IT, Вы писали:

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


WP>> Открытый проект нельзя купить. Что Linux что Nemerle. Будет форк, будет новая команда разработчиков, всего делов то.


IT>А как же Mono?


А что Mono? Никто его не закрыл. Никуда он не денется.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 15:08
Оценка:
Здравствуйте, IT, Вы писали:

IT>Наоборот народ сейчас начинает во всю кричать о DSL'ях, даже JetBrain этим серьёзно увлекается.


Тоже мне "даже". Вот то, что Microsoft к следующей MSVS готовит свой DSL Tool — это уже да, это дело.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 15:11
Оценка:
2Vermicious Knid: Можно узнать с чем ты не согласен? А то я вроде и не утверждал почти ничего, только вопросы задавал.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 15:12
Оценка:
Здравствуйте, IT, Вы писали:

E>>Вообще, по поводу языков, которые позволяют строить собственные DSL-и, мне кажется, можно привести вот эту цитату:


IT>На Лиспе можно воспроизвести синтаксис ну хотя бы C?


Можно. Пример такой методы (к сожалению там только Схема, Лиспа нет, тогда как в Лиспе гораздо более гибкий встроенный парсер С-выражений): http://dslengine.sourceforge.net/
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 15:25
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Тоже мне "даже". Вот то, что Microsoft к следующей MSVS готовит свой DSL Tool — это уже да, это дело.


Почему к следующей? Вполне может быть и к этой. Да и потом — DSL MS имеет ввиду графический, а не текстовый.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 16:13
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP>>> Открытый проект нельзя купить. Что Linux что Nemerle. Будет форк, будет новая команда разработчиков, всего делов то.


IT>>А как же Mono?


WP> А что Mono? Никто его не закрыл. Никуда он не денется.


Вот именно. Но проект теперь под крылом и финансированием Novel.
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 16:16
Оценка:
Здравствуйте, eao197, Вы писали:

E>Говорят, что на Лиспе можно сделать все, что угодно и у него даже собственного синтаксиса нет.


Почему тогда ещё не сделали?

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


Это ты говоришь о проблемах DSL вообще, а не о трудностях их реализации. Их проблемы я пока не собираюсь обсуждать.
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 16:19
Оценка:
Здравствуйте, WinniePoh, Вы писали:

IT>>На Лиспе можно воспроизвести синтаксис ну хотя бы C?


WP> Можно. Пример такой методы (к сожалению там только Схема, Лиспа нет, тогда как в Лиспе гораздо более гибкий встроенный парсер С-выражений): http://dslengine.sourceforge.net/


Гуд. Значит и на Nemerle можно будет. Кстати, JetBrain'овцы поднимают вопрос о гуях к DSL как об одной из самых серьёзных проблем. Так вот если её решить один раз для Nemerle (я не знаю как, не спрашивайте ), то значит она будет решена для всех построенных на нём (ней? кстати, оно какого рода?) DSL'ях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: igna Россия  
Дата: 15.02.06 16:22
Оценка:
Здравствуйте, IT, Вы писали:

WP>> Открытый проект нельзя купить. Что Linux что Nemerle. Будет форк, будет новая команда разработчиков, всего делов то.


IT>А как же Mono?


Кто купил Mono?
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 16:24
Оценка:
Здравствуйте, IT, Вы писали:

E>>Говорят, что на Лиспе можно сделать все, что угодно и у него даже собственного синтаксиса нет.


IT>Почему тогда ещё не сделали?


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

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


IT>Это ты говоришь о проблемах DSL вообще, а не о трудностях их реализации. Их проблемы я пока не собираюсь обсуждать.


Ok. Оказалось, что мы о разных вещах говорим. Только, имхо, чем проще будет реализовывать DSL, тем больше у них будет проблем вообще.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 16:24
Оценка:
Здравствуйте, IT, Вы писали:

WP>> А что Mono? Никто его не закрыл. Никуда он не денется.


IT>Вот именно. Но проект теперь под крылом и финансированием Novel.


И что? Novel-у он не принадлежит при этом.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 16:31
Оценка:
Здравствуйте, eao197, Вы писали:

WP>> Опыт примитивных кодеров никого не интересует. Опыт Грэма или Зибеля гораздо интереснее чем опыт Васаяты Пупапрамабрахмы из солнечной Индии.


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


Так это не проблема. Это правильный подход. Одни набьют шишки и станут Васо Пупидзе, другие станут Грэмами, ван Россумами и прочими Зибелями и Кнутами.

WP>> Отстойный эффект. Вокруг маленького сморщенного кодишки на Жабе наворачивается огромная колбаса из кривенько слева прилепленных макропроцессоров — Ant, Hibernate, JSP.


E>Давай определимся о предмете спора. Как я понимаю, изначально Nemerle предрекали успех и широкое распространение (C++ killer, следующий после C# язык и пр.).


Ни от кого из разработчиков подобного мнения не слышал.

E> Т.е., что по популярности Nemerle начнет тягаться с Java. В это я не верю.


Я тоже. Мне такое и в голову бы не пришло.

E> Если тебе так не кажется, то опиши, почему ты думаешь, что Nemerle ждет широкое распространение. Это интересно, серьезно, без подколок и провокаций.


Зачем ему широкое распространение? Это язык для профессионалов. А профессионалов ничтожно малое количество. Остальным же нужна ограниченная, забитая со всех сторон Java.

E>То, что на Lisp-е можно делать (и делают) что-то удобнее и проще, чем на Java -- да ради бога. Против этого я не возражал. Но факт остается фактом, по популярности Lisp с Java не сравнится (хорошо это или плохо -- другой вопрос, меня вообще больше C++ и Ruby интересуют, так уж сложилось). И я думаю, что при удачном для Nemerle стечении обстоятельств он достигнет той же популярности, что и Lisp. И одной из причин, по которой он не сможет тягаться с популярностью Java или C# -- это как раз макросы.


Я вообще никогда и ни о чём не рассуждаю в терминах популярности. Это для меня новый (и неприятный) стиль мышления.

WP>> Так что вы бы почитали Грэма и Зибеля, полезно очень. Даже если потом всю оставшуюся жизнь на Жабе кодить будете — всё равно ЭТО надо знать.


E>Да у меня тут репутация воинствующего безграммотного чукчи-писателя, а не читателя. У меня больше времени отнимает собственное изобретательство, чем чтение классиков


Зря, зря. Совмещать надо.

E>

E>Вообще интересно, почему представители отдельных направлений (Lisp-оведы, функциональщики, C++ники, некоторые дотнетчики) такие вспыльчивые? Чуть что -- сразу на дыбы...

Программисты — технари. У них lack of social skills. См. соседнюю тему про "курсовую за деньги" — не верят они, что гуманитарные предметы им нужны.

Я то другое дело — я сознательный провоч, сволочь и подлец. Мне можно. А остальные — они ведь и в самом деле вспыльчивые, вот что смешно.

E>Со Smalltalk-еров пример нужно брать -- милейшие люди, никого не обижают


Ни фига. Очень агрессивные. Только среди них много вменяемых гуманитариев, отсюда и имидж.

E>Может это Smalltalk благостному расположению духа так способствует?


Не Smalltalk, но его область применения.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 16:49
Оценка:
Здравствуйте, WinniePoh, Вы писали:

IT>>Наоборот народ сейчас начинает во всю кричать о DSL'ях, даже JetBrain этим серьёзно увлекается.


WP> Тоже мне "даже".


А почему "Тоже мне"? Решарпер к 2003 студии по своим возможностям рвёт рефакторинг от MS в 2005 как тузик грелку. А за IDEA я вообще молчу. Так что кто лучше умеет делать IDE — это очень большой вопрос.
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 16:52
Оценка:
Здравствуйте, WinniePoh, Вы писали:

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


WP> Так это не проблема. Это правильный подход. Одни набьют шишки и станут Васо Пупидзе, другие станут Грэмами, ван Россумами и прочими Зибелями и Кнутами.


Проблема есть: народ все время гонится за успешным опытом, и не замечает отрицательный.

E>>Давай определимся о предмете спора. Как я понимаю, изначально Nemerle предрекали успех и широкое распространение (C++ killer, следующий после C# язык и пр.).


WP> Ни от кого из разработчиков подобного мнения не слышал.


Так ведь с чего тема началась
Автор: IT
Дата: 15.02.06
:

1. Nemerle станет достаточно популярен и отберёт у C# существенную, а со временем возможно и всю нишу. MS будет курить в сторонке.

А до этого еще был крутой топик Nemerle рулит! :)
Автор: VladD2
Дата: 02.02.06
:

Эх, блин, к этому бы языку поддержку IDE с рефакторингом и боюсь лично для меня дни C# были бы сочтены. Хотя почему только C#? С++ бы потерял бы окончательный смысл тоже.


Так что здесь обсуждается то, что говорят посетители RSDN, а не разработчики Nemerle. И я бы сильно удивился, если бы авторы Nemerle вслух называли свое детище C++ killer.

WP> Зачем ему широкое распространение? Это язык для профессионалов. А профессионалов ничтожно малое количество. Остальным же нужна ограниченная, забитая со всех сторон Java.


Какой-то легкий запах снобизма...
Имхо, профессионал -- это тот, кто получает за свою работу деньги и живет с этого. Так вот очень многим профессионалам от программирования Java как раз самое то.
И есть предметные области, где с этим нужно считаться. Например, если мы выпускаем какой-то прикладной софт для заказчика, то мы сами выбираем для себя инструмент. Если мы представляем из себя небольшую, сплоченную команду продвинутых специалистов, то вполне можем выбрать для себя Lisp или OCaml, или Smalltalk. Заказчик платит, нам нужен инструмент, который позволит проще и дешевле выполнять работу нам.
Но если мы хотим выпустить инструмент для разработчиков (IDE к примеру), то на что нам нацеливаться? На небольшой рынок средств разработки для Lisp, OCaml или Smalltalk (где и так конкуренция серьезная). Или же на постоянно растущий рынок мейнстримовых языков? Та же Java, тот же C#. Так уж повелось, что чем больше рынок, тем он привлекательнее. Хотя и не для всех.

WP> Я вообще никогда и ни о чём не рассуждаю в терминах популярности. Это для меня новый (и неприятный) стиль мышления.


Да стиль мышления здесь не при чем. Разговор начался с предположения, что Nemerle посоперничает с популярностью C#. Т.е. разговор изначально был о популярности.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 17:18
Оценка:
Здравствуйте, WinniePoh, Вы писали:

IT>>Вот именно. Но проект теперь под крылом и финансированием Novel.


WP> И что? Novel-у он не принадлежит при этом.


А зарплату кто разработчикам платит?
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 17:56
Оценка:
Здравствуйте, IT, Вы писали:

AVK>>Нет, LINQ не баловство, а промышленное решение, которое можно будет использовать уже сейчас.


IT>Использовать для чего?


Для разработки. Например об SQL, который бы работал в наших терминах, а не в терминах реальных таблиц я думал как об хорошем но отдаленном будущем. Теперь это вполне реально. Ну и эффект от var и лямбд будет виден сразу.

IT>Про штанишки я не в курсе, но уже сейчас интенсивно использую run-time кодогенерацию (примеры я уже неоднократно приводил) и не собираюсь от этого отказываться даже несмотря на некоторые серьёзные недостатки.


Я то же. Но возможность делать подобное легко меня пока пугает. Программы из-за этого непринужденно могут превратиться в нечитаемую кашу. Ну и, если предположить что мы с тобой реально круты, то стоимость рефакторинга решения, которое глубоко насыщено такими макросами. Сдается мне для задач RFD куда больше по идеологии подходит CTR вобще и Phoenix в частности.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: Quintanar Россия  
Дата: 15.02.06 17:59
Оценка:
Здравствуйте, IT, Вы писали:

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


E>>Вообще, по поводу языков, которые позволяют строить собственные DSL-и, мне кажется, можно привести вот эту цитату:


IT>На Лиспе можно воспроизвести синтаксис ну хотя бы C?


Да, можно (написать макрос конвертер, например). Но не сам С, естественно. Прямого доступа в память нет.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: GlebZ Россия  
Дата: 15.02.06 18:11
Оценка:
Здравствуйте, IT, Вы писали:

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


IT>>>По-моему, LINQ — это баловство. Лучше бы они время на что-нибудь другое потратили. Сделали бы лучше макросы и этот LINQ на них можно было бы делать в качестве домашнего задания студентам.

AVK>>Нет, LINQ не баловство, а промышленное решение, которое можно будет использовать уже сейчас.
IT>Использовать для чего?
Посмотри на досуге JSR170. Стандарт у конкурентов.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 18:53
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>>>Нет, LINQ не баловство, а промышленное решение, которое можно будет использовать уже сейчас.


IT>>Использовать для чего?


AVK>Для разработки. Например об SQL, который бы работал в наших терминах, а не в терминах реальных таблиц я думал как об хорошем но отдаленном будущем. Теперь это вполне реально. Ну и эффект от var и лямбд будет виден сразу.


Точно так как тебя беспокоит простота макросов меня беспокоит производительность LINQ запросов. Написание SQL запроса — это не только SQL синтаксис, это ещё и отладка и тюнинг этого запроса. Сейчас в QA при написании запроса можно нажать одну кнопку и получить план запроса, а что нужно будет для этого нажимать в случае LINQ?
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 18:58
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Я то же. Но возможность делать подобное легко меня пока пугает.


И ещё. В VB раньше вообще не было классов, тем не менее ActiveX компоненты, а вместе с ними и ООП можно было использовать. Большинство сегодняшних землекопов понятия не имеют что такое наследование. Тем не менее, это не мешает им использовать плоды ООП. Они даже могут не знать, что это ООП. И не надо им этого знать.
Если нам не помогут, то мы тоже никого не пощадим.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 19:04
Оценка:
Здравствуйте, igna, Вы писали:

I>Кто купил Mono?


http://www.mono-project.com/news/index.html
Обрати внимание на Posted by и e-mail разработчика Mono в углу.
Если нам не помогут, то мы тоже никого не пощадим.
Re[19]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 19:17
Оценка:
Здравствуйте, IT, Вы писали:

WP>> И что? Novel-у он не принадлежит при этом.


IT>А зарплату кто разработчикам платит?


Это не имеет абсолютно никакого значения. Заставят этих разработчиков прекратить работу — другие за дело возьмутся. В этом и есть сила open source, что купить его нельзя вообще, в принципе.

"где же у него кнопка?" (c) Ури
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 19:18
Оценка:
Здравствуйте, Quintanar, Вы писали:

Q>Прямого доступа в память нет.


Вообще-то есть...
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 19:25
Оценка:
Здравствуйте, IT, Вы писали:

IT>Точно так как тебя беспокоит простота макросов меня беспокоит производительность LINQ запросов.


Эта производительность зависит не от LINQ, а от тебя. Как реализуешь так и будет.

IT> Написание SQL запроса — это не только SQL синтаксис, это ещё и отладка и тюнинг этого запроса. Сейчас в QA при написании запроса можно нажать одну кнопку и получить план запроса, а что нужно будет для этого нажимать в случае LINQ?


Если API QA открыто — то же самое.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: GlebZ Россия  
Дата: 15.02.06 19:28
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> А что с ним стало то? Живет он, да чтоб я так жил. Секретное оружие крутых разработчиков.

Именно секретное. Большинство разработчиков, кроме такого слова Lisp, и сказать то ничего не могут. И еще, в Lisp когда-то были вложены большие бабки(Lisp-машины). Но не пошло. Хотя Lisp тогда был немного другим.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 15.02.06 20:22
Оценка:
Здравствуйте, IT, Вы писали:

IT>А почему "Тоже мне"? Решарпер к 2003 студии по своим возможностям рвёт рефакторинг от MS в 2005 как тузик грелку. А за IDEA я вообще молчу. Так что кто лучше умеет делать IDE — это очень большой вопрос.


Ты серьезно думаешь, что рефакторинг в студии такой потому что MS не смогла сделать лучше?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 20:27
Оценка:
Здравствуйте, AndrewVK, Вы писали:

IT>>Точно так как тебя беспокоит простота макросов меня беспокоит производительность LINQ запросов.


AVK>Эта производительность зависит не от LINQ, а от тебя. Как реализуешь так и будет.


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

AVK>Если API QA открыто — то же самое.


А оно открыто?
Если нам не помогут, то мы тоже никого не пощадим.
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 20:29
Оценка:
Здравствуйте, IT, Вы писали:

AVK>>Если API QA открыто — то же самое.


IT>А оно открыто?


ХЗ, не интересовался.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[20]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 20:33
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP>В этом и есть сила open source, что купить его нельзя вообще, в принципе.


Купить нельзя, но забить на него и лишить финансирования можно.
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 15.02.06 20:35
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Ты серьезно думаешь, что рефакторинг в студии такой потому что MS не смогла сделать лучше?


Поведай нам свою версию
Если нам не помогут, то мы тоже никого не пощадим.
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 15.02.06 21:13
Оценка:
Здравствуйте, IT, Вы писали:

IT>Тогда зачем они добавили рефакторинг в 2005?


А зачем они ноутпад в винду добавили? Ведь убожество же полное. А я им кстати частенько пользуюсь.

Вообще рассуждения о том, что MS не смогла/не хватило времени мне кажутся немного странными. Сдается мне что они больше человекочасов потратили на исследование того какой формы должны быть закладки у "доканутых" окошек чем JetBrain на написание рефактора.

Многим хватит и то что есть. А кому не хватит — добро пожаловать в решарпер.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 21:18
Оценка:
Здравствуйте, Gaperton, Вы писали:

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


WP>> Я вообще никогда и ни о чём не рассуждаю в терминах популярности. Это для меня новый (и неприятный) стиль мышления.


G>Философская мысль RSDN на 90% состоит из таких рассуждений. Действительно — о свойствах технологий рассуждать тяжело — читать надо, разбираться, и вообще — знать. Опять же, ляпнешь чего не то — местные пираньи в момент с дерьмом съедят. А о популярности может рассуждать каждый — и умнО, и классиков читать не надо. Удобно, в общем. Вылез очередной умник, а ты ему сразу в лоб — а раз это так хорошо, то почему им индусы не пользуются?! А?!! Захлопает умник глазами, и не найдет чего возразить.


Похоже на правду. Но ведь это не конструктивно! Вроде бы потенциально умные люди собрались, должны бы понимать, что при таком подходе и колеса не изобретёшь, а изобретя — не внедришь (на четвереньках бегать популярнее!).
Re[21]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 21:28
Оценка:
Здравствуйте, IT, Вы писали:

WP>>В этом и есть сила open source, что купить его нельзя вообще, в принципе.


IT>Купить нельзя, но забить на него и лишить финансирования можно.


И тут же появится форк. Такое много раз было.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 15.02.06 21:37
Оценка:
Здравствуйте, IT, Вы писали:

ВВ>>Вообще рассуждения о том, что MS не смогла/не хватило времени мне кажутся немного странными.

IT>А полуживой WinFS, постоянная задержка выхода операционок и других продуктов тебе не кажется странной?

Как раз говорит о том, что если надо — время всегда выделят

IT>Или ты думаешь там сидят боги и горшки обжигают, каждый менеджер мастер спорта по нагибанию девелоперов, а любой из архитекторов спроектировал в этой жизни по дюжине эклипсов?


Да причем тут это. Пусть хоть там одни индусы сидят. Просто все продается.. Борланду вот захотелось поиметь свой two-way-tool и он купил Together. В общем я не вижу здесь проблемы на самом деле. Если бы им было нужно, то рефакторинг в студии рвал бы все что движется. Другой вопрос — зачем? Конкуренция в этой нише и так минимальна (Борланд и то вроде бы прикрыл свой шарп-дебилдер).
А разработку всяких примочек для студии понятное дело надо только поощрять. И все очень красиво надо сказать получается. С одной стороны ты можешь хвалиться что "у нас" в IDEA дескать крутой рефакторинг с незапамятных времен, а "к нашей" студии этот рефакторинг (а вместе с ним еще тонна фич средней полезности) запросто прикручиваются.

ВВ>>Сдается мне что они больше человекочасов потратили на исследование того какой формы должны быть закладки у "доканутых" окошек чем JetBrain на написание рефактора.

IT>Как раз доканутые закладки они купили на стороне. Будешь знать

Я помню было одно весьма интересное обсуждение — без всякого стеба — какой формы должны быть эти закладки. Причем приводилось несколько вариантов реализации. Я, извиняюсь за выражение, просто уссывался
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: WinniePoh  
Дата: 15.02.06 21:40
Оценка:
Здравствуйте, IT, Вы писали:

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


Ну это уж совсем неверный подход — языки по синтаксису оценивать. Синтаксис — ничто, он как темы у новомодных GUI, легко оторвать один и пришить другой. Независимо от языка. Тот же Лисп давно уже с разными синтаксисами встречается — Паскалеподобный R-лисп, например, или Wolfram Mathematica.

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


А зря. По секрету скажу, что опережать мейнстрим на несколько шагов — очень выгодно. И никаких особых интеллектуальных усилий не требуется — достаточно поглядывать, чем академическая Computer Science занимается. Это попадёт в мейнстрим акуурат так лет через 15-20, так что смело смотрим на науку 10-летней давности, устоявшуюся, проверенную, и готовимся к её внедрению в мейнстрим. Пока конкуренты гоняют своих индусиков по тренингам и курсам, на новенькое, "только что изобретённое" переучивать, мы уже полным ходом пользуем давно сделанные в "новой" технологии наработки.

IT>Впрочем, как я сказал в самом начале, если Nemerle уготована судьба всего лишь подтолкнуть разработчиков C# к более радикальным действиям, то меня это тоже вполне устроит


Разработчики C# и без того совсем не глупые люди. И что такое Лисп, и что есть Haskell они знают получше многих прочих.
Re[13]: Снова о Nemerle или профанация не пройдет :)
От: Павел Кузнецов  
Дата: 15.02.06 22:14
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Вообще рассуждения о том, что MS не смогла/не хватило времени мне кажутся немного странными.


Напрасно. В частности, целый ряд возможностей был исключен из релиза Visual Studio 2005 именно по этой причине. Например, class designer для C++:
http://blogs.msdn.com/r.ramesh/archive/2005/03/03/384772.aspx
http://blogs.msdn.com/classdesigner/archive/2005/03/04/384764.aspx
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 16.02.06 01:21
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Перевесят ли достоинства Nemerle то, что на нем можно писать сильно нечитаемый код, пока неясно.


Почему не читаемый, да ещё и сильно?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: Павел Кузнецов  
Дата: 16.02.06 01:48
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Иногда мне начинает казаться что у них какой-то стратегический интерес обижать С++ — особенно в плане дизайнеров.


Да ну... Интерес-то у них как раз обратный: они сами на C++ достаточно плотно сидят (*). Но для C++ по многим причинам инструменты очень сложно писать...

(*) Впрочем, "они сами" в несколько лучшем положении, т.к. могут использовать внутренние билды, в которых всевозможные новшества VS появляются раньше, чем в тех, что доступны "всем остальным".
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 16.02.06 02:01
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Да ну... Интерес-то у них как раз обратный: они сами на C++ достаточно плотно сидят (*). Но для C++ по многим причинам инструменты очень сложно писать...


Ну да, времени на чтобы к VB.NET спеллчекер прикрутить у них хватило, а на С++ уже нет?
В общем приоритет задач ИМХО вполне прослеживается..
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: Воронков Василий Россия  
Дата: 16.02.06 02:02
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Да ну... Интерес-то у них как раз обратный: они сами на C++ достаточно плотно сидят (*). Но для C++ по многим причинам инструменты очень сложно писать...


Кстати, интересный момент.. Когда я целях самообразования писал тестовый проектик на CLI++ мне даже в голову не приходило проверить есть там дизайнер классов или нет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 05:01
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Некоторые и на ровном месте ноги ломают. Что теперь, всем на всякий случай на костылях ходить?



Забавно, что все начинающие курильщики так и думают. По себе знаю
Ну ладно, с этим пора заканчивать.

WP> Нет. Они ремесленники, или лабухи. Если сравнивать маляра Вову Сидорова и Анри Матисса, то профессионалом я первого не назову, пусть он даже любимец всего ЖЭКа.


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

Так ведь Java популярна и широко признана

E>>Но если мы хотим выпустить инструмент для разработчиков (IDE к примеру), то на что нам нацеливаться? На небольшой рынок средств разработки для Lisp, OCaml или Smalltalk (где и так конкуренция серьезная). Или же на постоянно растущий рынок мейнстримовых языков? Та же Java, тот же C#. Так уж повелось, что чем больше рынок, тем он привлекательнее. Хотя и не для всех.


WP> Я глубоко убеждён, что рынка средств разработки вообще не существует. Не место тут рынку.


А разве IDEA -- это бесплатный продукт? Или Visual Studio?
Может быть я ошибаюсь, но разве большинство промышленных средств разработки для Smalltalk не являются коммерческими?
Одна из лучших оконных библиотек для C++, Qt, далеко не бесплатна.
И даже если отдельные продукты распространяются свободно как OpenSource, то это не значит, что за них не приходится затем платить службам техподдержки или за обучение.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: Павел Кузнецов  
Дата: 16.02.06 05:09
Оценка:
Воронков Василий,

> ПК> Да ну... Интерес-то у них как раз обратный: они сами на C++ достаточно плотно сидят (*). Но для C++ по многим причинам инструменты очень сложно писать...

>
> Ну да, времени на чтобы к VB.NET спеллчекер прикрутить у них хватило, а на С++ уже нет?

Это разные команды делали (surprise: VS делается разными командами).

> В общем приоритет задач ИМХО вполне прослеживается..


Выбор в IDE для C++ на тот момент был следующим: либо исправлять intellisence, либо доделывать class designer. Выбрали первое.
Posted via RSDN NNTP Server 2.0
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 06:01
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Ну, это не разработчики, а так, ремесленники. Любители. Разработчики — это кто computer science формально учил, а тут уж мимо Лиспа пройти никак не получится, нет таких программ обучения, где не было бы Лиспа.


Были. Есть. Будут.
На необъятных просторах бывшего СССР не может не быть.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Снова о Nemerle или профанация не пройдет :)
От: EXO Россия http://www.az.inural.ru
Дата: 16.02.06 06:18
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> См. соседнюю тему про "курсовую за деньги" — не верят они, что гуманитарные предметы им нужны.


Где тема??? Не нашел...
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 08:01
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Похоже на правду. Но ведь это не конструктивно! Вроде бы потенциально умные люди собрались, должны бы понимать, что при таком подходе и колеса не изобретёшь, а изобретя — не внедришь (на четвереньках бегать популярнее!).


Изобретательство и внедрение -- это, имхо, ответы на вопросы: Что? Как?

А философия -- это попытка ответить на вопрос "Почему?" (иногда с оттенком "Зачем?").

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 08:55
Оценка:
Здравствуйте, IT, Вы писали:

AVK>>Перевесят ли достоинства Nemerle то, что на нем можно писать сильно нечитаемый код, пока неясно.


IT>Почему не читаемый, да ещё и сильно?


Потому что свои синтаксические конструкции это страшно, намного страшнее чем плюсовые шаблоны.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: Дарней Россия  
Дата: 16.02.06 09:09
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Потому что свои синтаксические конструкции это страшно, намного страшнее чем плюсовые шаблоны.


А если шаблоны, да еще с сишными макросами?
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 09:13
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

VK>
VK>//  примеры использования:
VK>//    var x = 0;
VK>//    var x : int;
VK>macro mutable_definition (body) 
VK>syntax ("var", body) 
VK>{
...
VK>}
VK>


А не напомнишь (подскажешь?) эти макросы каким-нибудь по пространствам имен можно распределить?
К примеру, реализовал кто-то в одной библиотеке макрос declare_stable_attr. А второй разработчик в другой библиотеке сделал такой же макрос.
И вот третьий разработчик пытается использовать две предыдущие библиотеки в своем проекте и оказывается, что ему нужно в одном контексте использовать оба declare_stable_attr. Как он может их индентифицировать (например, lib_one.declare_stable_attr и lib_two.declare_stable_attr) и не будет ли здесь проблем?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Снова о Nemerle или профанация не пройдет :)
От: denis_krg Казахстан  
Дата: 16.02.06 10:34
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

_>>Причем наиболее вероятен исход под номером 4. Вне зависимости от степени крутизны и превосходности языка. Просто может оказаться, что переходить на этот язык индустрии экономически не оправдано. И будет узкий круг энтузиастов на нем лабать всяки мелочи.


VK>Все так. Но не факт, что для энтузиастов это будет "экономически не оправдано". .NET компоненты например это свободный рынок и совершенно все равно на чем ты "слабаешь" эту мелочь. Если "мелочь" будет востребована на рынке и конкурентноспособна, то плевать этим энтузиастам на узкость их круга, лишь бы качество инструментов разработки было достаточно хорошее.


VK>Никого кстати не удивляет, что такое убожество как VB.NET кем-то используется для коммерческих проектов(о масштабах этого явления и размерах проектов мне прадва ничего не известно)? Я думаю хуже чем VB.NET, Nemerle никак не может быть.


VK>А вообще по-поводу "мелочей" и больших проектов. Я наверное всем уже уши прожужжал, но Nemerle self-booting компилятор, т.е. написан на Nemerle и собирает себя сам. Большой ли это проект или нет судить вам, но 1.5mb исходников это компилятор + около 2mb занимает библиотека(в основном встроенные макросы), примеры, тесты. Наверное не настолько большой, чтобы можно было поставить точку на утверждении о "неизвестной бяке", но достаточно большой, чтобы понять в каких проектах "бяки" возникнуть не должно.


Все так. В общем время покажет
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 10:56
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

VK>Если это не расширение синтаксиса, то проблем не будет. С расширениями синтаксиса все несколько сложнее. Если они конфликтуют друг с другом, то совместно их использовать невозможно, а подключать пространства имен можно только на уровне пространств имен/единиц трансляции(так как такие макросы изменяют логику парсера).


Спасибо за развернутый ответ. Меня как раз syntax макросы интересовали.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: Mirrorer  
Дата: 16.02.06 12:16
Оценка:
VD> более дальновидные и умные смогут получить конкурентное приемущество используя Нэмерл в своей разработке для массового рынка использующего в основном C#.

Просто возникла аналогия http://www.nestor.minsk.by/sr/2003/07/30710.html
Re[3]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 12:28
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Все так. Но это не более чем взгяд скептика — перестраховка.


Я вобще то не скептик, на в данном уравнении слишком много неизвестных. Пока нет ни одного мейнстрим-языка, допускающего изменение синтаксиса и как Nemerle поведет себя на реальном спектре проектов не знает никто.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 12:48
Оценка:
Здравствуйте, VladD2, Вы писали:

E>>Ошибаешься, нужны.


VD>Ну, пользуйся кто не дает? Почему при явном приемуществе языка никто не прыгает на него?


Я могу отвечать только за себя. Меня заинтересовала возможность Nemerle по расширению собственного синтаксиса. Плюс вложенные функци и возможность не указывать типы переменных в локальных контекстах.

Но. Язык еще не дорос до версии 1.0. И, поскольку он дотнетовый, а мне нужна кроссплатформенность, то я предпочту посмотреть, что выйдет из Mono или dotGNU. Пока, имхо, все это сырые недолки, которые в production проектах только экстремалы используют.

Почему его не использует кто-то другой -- не мое дело.

E>>Мегафичи и IDE -- это ортогональные понятия (если язык нормальный). А если язык такой, что на нем можно только в супер-пупер IDE мышкой возюкать, тогда да, без IDE никак.


VD>Опять глупые наезды.


Да где же здесь наезды? Я просто говорю, что нормальный язык позволяет нормальные программы и без IDE писать. IDE только добавляют комфорта программисту, но не улучшает самого языка.

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


хинт :)
Автор: eao197
Дата: 13.02.06


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Снова о Nemerle или профанация не пройдет :)
От: IT Россия linq2db.com
Дата: 16.02.06 13:02
Оценка:
Здравствуйте, AndrewVK, Вы писали:

IT>>Почему не читаемый, да ещё и сильно?


AVK>Потому что свои синтаксические конструкции это страшно, намного страшнее чем плюсовые шаблоны.




Так как я много работаю с рефлекшином, то мне в языке наряду с typeof очень хотелось бы поиметь что-то типа memberof. Что страшного, если я это сделаю?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: EXO Россия http://www.az.inural.ru
Дата: 16.02.06 13:17
Оценка:
Здравствуйте, eao197, Вы писали:
E>Все вышесказанное является субъективным ИМХО.

Однако, поддерживаю.
Мне кажется, что столь жакие споры на тему платформ и языков программирования тоже от ленности и падкости на рекламу.
Темы по архитектурам например, обсуждаются куда слабее. Особенно по своим архитектурам, своих реальных проектов.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: EXO Россия http://www.az.inural.ru
Дата: 16.02.06 13:36
Оценка:
Здравствуйте, AndrewVK, Вы писали:
AVK>Обсуждаются, просто форум другой читать нужно.

Да как бы читаю...
Только ведь к "философии программирования" они тоже имею отношение. И даже большее, чем среды разработки и языки.
В "Архитектуре" обсуждаются больше технические вопросы, чем концептуальные.
Зачастую, уже заранее с привязкой к конкретным средам разработки.
Re[6]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.02.06 13:36
Оценка:
Здравствуйте, Mirrorer, Вы писали:

M>Просто слова Влада просто как взяты из статьи Грэхема.. Но только для другой технологии.


Да ты вообще не при чем, ничего личного.
Просто твое письмо стало N+1 упоминанием истории Грэхема на моей памяти. И последней каплей для моего терпения.

В общем, не в том месте, не в то время.



SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, denis_krg, Вы писали:

Предупреждение за оверквотинг.
Свое согласие вообще можно выразить плюсом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, eao197, Вы писали:

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


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

Разница только в одном. В обычном языке ты содашь набор классов предметной области и выражашь с их помощью задачу. При этом мучаешся, так как полноценно классами выразить мысль очень не просто и слишком многословно. А встренный локальный ДСЛ будет выражать твои мысли более понятно. В итоге разница только в том, что вместо кучи классов прийдется выучить ДСЛ. Я лично предпочку второе, так как время на обучение будет примерно одинаковое, а вот дальнейшее восприятие сильно упростится.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, eao197, Вы писали:

E>Говорят, что на Лиспе можно сделать все, что угодно и у него даже собственного синтаксиса нет.


Говорят, что на Ассемблере можно сделать не меньше...

Создать компилятор С на Лиспе конечно можно. Так же как и Лиспа на С. Вопрос насколько это сложно и сколько это займет времени.

Использовать же макросы Лиспа для эмуляции С невозможно, так как умрешь от невнятной диагностики.
Вот именно по этому, так важно иметь лучшие стороны Лиспа в современном и удобном языке. Чтобы не далать сначала на Лиспе нечто что можно потом применять, а всего лишь добавлять то что нехватает в богатом от рождения языке.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Тоже мне "даже". Вот то, что Microsoft к следующей MSVS готовит свой DSL Tool — это уже да, это дело.


К этой. VS 2005 уже вышла.

Вот только МС предлагает не совсем средство для создания DSL. Рельно они предлагают под этой вывиской средство для создания визуальных дизайнеров. Причем реально автоматизируют только их создание. Все что связано с самим языком и механизом его интерпретации/компиляции/трансформации они или вообще опускют, или предлагают очень поверхносные решения.

К тому же МС предлагает средство для создания так называемых внешних DSL.

В Нэмерел же предлагает практически законченную концепцию создания внутренних DSL.

Думаю, что возможно, что в паре с Нэмерел DSL Tools может оказаться куда более мощьным оружием. Так что они не противопоставлют друг-друга, а скорее дополняют.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, WinniePoh, Вы писали:

WP> Без разницы. Те же макры, только простейшие, одноуровневые. Как в Си и Техе.


Какие макросы? Ты хоть понимшь о чем говорить?

Дизайнер классов видел в VS 2005? Вот он как раз на этом самом DSL Tools сделан. Чем он на макросы похож?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, IT, Вы писали:

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


IT>Тогда зачем они добавили рефакторинг в 2005?


Я думаю, что вы оба частично правы.

То что Студия слабее РеШарпера — это следствие давления множетства факторов. Среди них есть и нежелание добить мелких производителей.

Например, МС отказалась от создания UML-продуктов не в малой степени потому, что это главный хлеб Борланда.

Думаю, что у МС действительно одна из задач не пререборщить и оставить возможность заработать мелким конторам. Как в прочем правда и то, что МС сидит на таком количестве стульев, что реализовать все идеально просто не может.

Кстати, РеШарпер для C# 2.0, как я понимаю, до сих пор не работает как следует. И это у конторы специализирующейся на рефакторинге. Боюсь, что МС имеет даже больше шансов сделать поддержку рефакторинга чем ДжэтБрэйнс, но при этом будут завалены все планы. А так как задачи у них явно более глобальные и их больше, то они намерянно ограничивают функциональность продуктов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Напрасно. В частности, целый ряд возможностей был исключен из релиза Visual Studio 2005 именно по этой причине. Например, class designer для C++:

ПК>http://blogs.msdn.com/r.ramesh/archive/2005/03/03/384772.aspx
ПК>http://blogs.msdn.com/classdesigner/archive/2005/03/04/384764.aspx

Вобще-то ты в очередной раз подменяещь причины следствием. МС выбросила поддержку С++ потому, что реализовать ее не просто. Если вообще это возможно сделать на 100%. Борланд был вынужден тоже выбросить поддержку С++ из Тугезы именно по тем же причинам. А ДжетБрэйнс вообще не берется за поддержку С++. Думаю, что причины те же.

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

В обещем, проще перепроектировать язык, чем пытаться сдеать для него хорошую поддержку дизайнеров. Мегаконторы бьются над этим вопросом, но результаты все еще не очень утишительные. Между тем смысла в этом с каждым днем все меньше и меньше.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Ну да, времени на чтобы к VB.NET спеллчекер прикрутить у них хватило, а на С++ уже нет?


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

ВВ>В общем приоритет задач ИМХО вполне прослеживается..


И это тоже. Ведь если дизайнер будет работать с C++ ограниченном хотя бы до C#, то кроме как профанацией такое решение назвать будет нельзя, так как уже сейчас можно пользоваться C# и дизайнерами к нему.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, anton_t, Вы писали:

_>АФАИК грамматика С++ на порядок сложнее грамматики васика, соответственно и спеллчекер прикрутить к нему сложнее.


Это не правда. Именно грамматика у С++ в разы проще чем у C# и наверно VB.NET.

Дело не в сложности грамматики. Дель в том, что грамматика С++ содержит кучу неоднозначностий и не рассчитана на модульность. В сумме препроцессор С++ и неоднозначность грамматики делают процесс анализа действительно не простым. В общем-то создать парсер для С++ не такая уж большая проблема если пользоваться продвинутыми техниками вроде алгоритмов GLR или Eerley. Но винидмо на практике они приводят к нихилым тормозам и реальное решение получается мало пригодным для использования.

Думаю, что проще решить проблемы языка. Хотя бы сделать его модульным отказавшись от #iclude и ограничив #define.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Выбор в IDE для C++ на тот момент был следующим: либо исправлять intellisence, либо доделывать class designer. Выбрали первое.


Жаль не справились и с первым. Intellisence в VS 2005 глючит так же хорошо как и раньше. В прочем глючат все плюсовые intellisence-ы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Кстати, имхо, г-н де Иказа не довёл до ума ни одного проекта. Да и Novel умеет всё просырать не хуже Борланда. Так что вероятность того, что mono вечно будет, но не доделано — есть.


Можно уже зарелизен.

Так что речь можно вести только об отставании от МС.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

Кстати, если не в лом, зайди сюда
Автор: VladD2
Дата: 13.02.06
, плиз, и поделись мыслями если оные возникнут.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Снова о Nemerle или профанация не пройдет :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.06 14:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>2Vermicious Knid: Можно узнать с чем ты не согласен? А то я вроде и не утверждал почти ничего, только вопросы задавал.


Думаю с излишним скепсисом. К тому же наутверждал ты тоже прилично. В общем, см. мой ответ.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Снова о Nemerle или профанация не пройдет :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 15:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Познакомься по ближе со Скалой и Нэмерлом тогда обсудим что там перебор, а что нет.


У меня нет на это времени, и, пока, желания.

AVK>>LINQ вроде бы еще нет.


VD>LINQ — это тупиковая идея. Они делают не универсально то, что можно сделать универсально.


Зато им можно пользоваться сразу, вероятность побочных эффектов не очень велика.

VD>Нэмерл сегодня рвет в клочья то что будет в C# 3.0 через хрен знает сколько времени.


Ничего он не рвет, его пока что еще нет вживую. LINQ вобщем то тоже нет.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[15]: Снова о Nemerle или профанация не пройдет :)
От: Павел Кузнецов  
Дата: 16.02.06 15:14
Оценка:
Здравствуйте, VladD2, Вы писали:

ПК>>Напрасно. В частности, целый ряд возможностей был исключен из релиза Visual Studio 2005 именно по этой причине. Например, class designer для C++:

ПК>>http://blogs.msdn.com/r.ramesh/archive/2005/03/03/384772.aspx
ПК>>http://blogs.msdn.com/classdesigner/archive/2005/03/04/384764.aspx

VD>Вобще-то ты в очередной раз подменяещь причины следствием. МС выбросила поддержку С++ потому, что реализовать ее не просто.


Это абсолютно несущественно в контексте данного обсуждения. Оба положения совершенно эквивалентны в качестве подтверждения ограниченности ресурсов MS, о чем и зашла речь в данной подветке:
  • Microsoft не включили class designer в VS2005, т.к. у MS не хватило ресурсов, т.к. class designer для C++ сложнее реализовать из-за сложности C++.
  • Microsoft не включили class designer в VS2005, т.к. у MS не хватило ресурсов.

    VD> Если вообще это возможно сделать на 100%. Борланд был вынужден тоже выбросить поддержку С++ из Тугезы именно по тем же причинам. А ДжетБрэйнс вообще не берется за поддержку С++. Думаю, что причины те же.


    Естественно.

    VD>Я конечно понимаю, что ты снова сочтешь мои слова за новую потытку унизить С++, но еще раз повторюсь. При разработке С++ его дизайнером небыло уделено внимания важным аспектам вроде модульности и предсказуемости.


    Не так. Не "не было уделено", а "не было реальной возможности сделать по-другому из-за важности совместимости с C". На достаточно ранних этапах разработки C++ Страуструп пытался вносить различные изменения, нарушающие совместимость с C, на что получал множество возражений со стороны пользователей, и был вынужден отменить свои изменения.

    VD>Это делает создание RAD-средств для С++ крайне сложной задачей. Рещение их в лоб слишком сложно с точки зрения трудозатрат. А применение мощьных стредств атоматизации тормозится недостаточной производительностью современного железа.


    Так.

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


    Не вполне так.

    VD>Мегаконторы бьются над этим вопросом, но результаты все еще не очень утишительные. Между тем смысла в этом с каждым днем все меньше и меньше.


    Flamebait. Ignored.
  • Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 15:16
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>В макросах Лиспе этого нет. И стло быть макросы Нэмерла уже шаг вперед.


    В макрах Лиспа этого есть. В них всё есть. У меня там есть и ADT, и pattern matching, и гигиена, и BNF.
    Потому как никто не запрещает делать макры которые генерят макры. Можно расширить сам макроязык до чего угодно,
    и запретить пользоваться низкоуровневыми фичами.

    VD>Ну, и не надо забывать, что программирование на Лиспе — это программирование в AST. Что конечно дает гибкость, но чертовски неудобно.


    Кому как.

    VD> Нэмерл же привносит макросы в язык с полноценным синтаксисом. Хотя тут он тоже не первым. Первым был ОКамловский прероцессор.


    Он тоже не первый. Splice-семантика макросов — дело давно известное, даже для C, C++ и Java такое делалось.

    VD>Лично я не говтов к переходу на ОКамл и темболее Лисп.


    А почему, интересно знать?

    VD> А вот на Нэмерел, при наличии хорошей среды я скорее всего перейду с удовольствием. Ведь при этом я не жертвую ничем. Импиратив в нем не хуже чем в C#.


    А что, в OCaml и Common Lisp оно хуже? С каких пор?

    VD> Читается он тоже очень неплохо.


    Привычно, а не неплохо. А от привычек надо избавляться. Глубо это — быть рабом привычек.

    VD> Возмжности ФП мало чем отличаются от МЛ-ьных. Макросы лучше чем в Схеме. В общем, пока что я вижу кучу плюсов с только одним минусом — нет поддержки хорошей IDE и пожалуй документация еще слабовата. Хотя в общем-то туториалов лично мне хватает.


    Самый большой недостаток — это .NET-only реализация.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 15:18
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    WP>> Без разницы. Те же макры, только простейшие, одноуровневые. Как в Си и Техе.


    VD>Какие макросы? Ты хоть понимшь о чем говорить?




    Те же макросы, что и, например, в dia2code.

    VD>Дизайнер классов видел в VS 2005? Вот он как раз на этом самом DSL Tools сделан. Чем он на макросы похож?


    Тем и похож — что каждый графический элемент (по сути — это ровно то же AST) разворачивается очень примитивным образом (подстановкой) в код.
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 16.02.06 15:24
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    VD>У Лиспа одна проблема. Читать код на нем практически не возможно.


    Только это проблема не Лиспа...
    Влад, мне хватило пары дней что-бы нормально ориентироваться в структуре elisp-программ даже без ИДЕ. Заметь, я даже почти ничего не писал, а только разбирался.

    VD>Языки типа Нэмерала — это попытка переноса приемуществ языков типа Лисп в среду языков завоявавших популярность и применяемых для нужд промышленной разработки софта.


    Да. Есть только один момент, может промышленных разработчиков пугает не синтаксис, а возможности лиспа?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 15:25
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>А философия -- это попытка ответить на вопрос "Почему?" (иногда с оттенком "Зачем?").


    Почему я в вашем "Почему?" вычитал нотки обиды и недоумения?

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


    Если вся философия сводится к "а Киркоров популярнее!", то ну её, такую философию. Я лучше пойду Камю перечитывать.
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 15:26
    Оценка:
    Здравствуйте, EXO, Вы писали:

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


    WP>> См. соседнюю тему про "курсовую за деньги" — не верят они, что гуманитарные предметы им нужны.


    EXO>Где тема??? Не нашел...


    Промазал, не соседняя она. В "О жизни"/"Образование и наука"/"когда курсовые покупают".
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 15:32
    Оценка:
    Здравствуйте, eao197, Вы писали:

    WP>> Ну, это не разработчики, а так, ремесленники. Любители. Разработчики — это кто computer science формально учил, а тут уж мимо Лиспа пройти никак не получится, нет таких программ обучения, где не было бы Лиспа.


    E>Были. Есть. Будут.

    E>На необъятных просторах бывшего СССР не может не быть.

    Ну как я уже сказал, это не разработчики.
    Re[5]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 15:37
    Оценка:
    Здравствуйте, IT, Вы писали:

    WP>> Ну это уж совсем неверный подход — языки по синтаксису оценивать.


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


    Программист — не барышня кисейная, чтоб капризы такие себе позволять.

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

    IT>Может приведёшь нам список таких скорых внедрений?


    Легко: ADT, pattern matching, list comprehensions, annotations (уже есть в примитивном виде — контракты, но грядёт скоро вообще полная щастя), Pi calculus (в свете XBox360 и Cell — мегаактуально, так что скоро всем индусам придётся эту математику изучать), ну и всенародно любимые DSL-и, конечно же. Они и так внедрены, но пока народ не знает, как это называется, и формальными методами не владеет. Скоро завладеют.

    WP>> Разработчики C# и без того совсем не глупые люди. И что такое Лисп, и что есть Haskell они знают получше многих прочих.


    IT>Знать и хотеть, а ещё лучше чувствовать что под тобой стул горит — это разные вещи.


    Советую посмотреть на то, во что превращается Visual Basic. А уж под ними то точно стул не горит...
    Re[7]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 16.02.06 15:40
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Ну как я уже сказал, это не разработчики.


    Ну вот и узнал всю правду о себе

    Хотя я переборщил. Ты же говорил о computer science, а как раз из science у нас была только математика.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 16.02.06 15:44
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Лучшая IDE это Unix.


    +36

    Если не сложно, загляни в эту тему, плиз
    Автор: VladD2
    Дата: 09.02.06
    .


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 15:54
    Оценка:
    Здравствуйте, eao197, Вы писали:

    WP>> Да понимаете ли в чём дело. Я далеко не начинающий. Кстати, курить 2.5 года назад бросил.

    E>А я в 93-м.

    Молодца!!!

    WP>> И мой опыт подсказывает, что макры рулят. А этого опыта очень даже не мало.


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


    Не тяжело. Теория есть, работает. Эмпирические подходы тоже неплохи.

    Лично мой подход — staged AST transforms. Любая макра раскрывается не сразу в код, а в код, содержащий макры более
    низкого уровня, и так для даже простых задач до 10 шагов преобразования. Каждый шаг тривиален, каждый шаг можно отлаживать отдельно, и всегда легко доказать корректность преобразования. Возможным это стало всего то после введения простых макр для реализации ADT и pattern matching.

    E>Завидую.


    Кстати вроде должна быть сейчас как раз экспозиция Матисса в Эрмитаже...

    WP>> Если не нравится конкретно Матисс — заменим на Шагала, или на моего любимого Дали.


    E>Лучше на Дали.


    Ok. Так аналогия более прозрачна?

    Кстати, Дали как раз не брезговал приработкой вполне малярского уровня — вроде оформления витрин магазинов. Совсем профессионал, по всем статьям.

    WP>> Они умрут. Скоро.


    E>Пока есть VladD2 -- не умрут. Они без IDE не сможет.


    Сможет. Вроде не дурак.
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 15:56
    Оценка:
    Здравствуйте, eao197, Вы писали:

    WP>> Ну как я уже сказал, это не разработчики.


    E>Ну вот и узнал всю правду о себе


    Дык разработчики, которые нормальные — те сами изучили.

    А вообще — да. В России Computer Science нет вообще. Была какая-то при Турчине и Ершове, да сплыла.

    E>Хотя я переборщил. Ты же говорил о computer science, а как раз из science у нас была только математика.


    А базовой математики и достаточно чтобы потом всю computer science самостоятельно выучить.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 16.02.06 16:02
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

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


    WP> Не тяжело. Теория есть, работает. Эмпирические подходы тоже неплохи.


    Да я не про это. А про что-то вот-такое
    Автор: eao197
    Дата: 16.02.06
    . Будет здорово, если в Nemerle подобных граблей не окажется.

    WP> Ok. Так аналогия более прозрачна?


    Давай тему живописи свернем. У меня в живописи пиетет только к тем, чьи работы я не смог бы повторить. Хотя бы скопировать. Я понимаю, что это не правильный подход, но так уж сложилось.

    E>>Пока есть VladD2 -- не умрут. Они без IDE не сможет.


    WP> Сможет. Вроде не дурак.


    Он скоро сам выскажет свое отношение к прогнозу о скором вырождении IDE.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 16.02.06 16:03
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    Ребята, я от вас угораю
    Как грамматика английского языка может быть сложнее в С++ там или в выбенет? В васике спеллчекер именно английского языка — прям к ворде, со смартагами, посмотри на досуге
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 16.02.06 16:03
    Оценка:
    Здравствуйте, Павел Кузнецов, Вы писали:

    ПК>Выбор в IDE для C++ на тот момент был следующим: либо исправлять intellisence, либо доделывать class designer. Выбрали первое.


    Ты серьезно считаешь что они "исправили" интеллисенс в С++? Посмотри как он работает в шарпе или в выбенет и сравни.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 16.02.06 16:07
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Почему я в вашем "Почему?" вычитал нотки обиды и недоумения?


    Показалось.
    На самом деле я вот о чем говорил: часто возникает какая-то идея, появляется энтузиазм, идея реализовывается. Но не всегда достигается ожидаемый эффект. И тогда интересно узнать, почему же это произошло. Или наоборот, срабатывает какая-нибудь завалящаяся идейка, который ты не уделял особого внимания. И находясь в рамках своих задач ответ на вопрос "Почему" бывает очень сложно найти -- потому что угол обзора слишком мал, шоры на глазах. А 'Философия программирования' позволяет вырваться из своего тесного мирка.

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


    WP> Если вся философия сводится к "а Киркоров популярнее!", то ну её, такую философию. Я лучше пойду Камю перечитывать.


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


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 16.02.06 16:08
    Оценка:
    Здравствуйте, eao197, Вы писали:

    WP>> Не тяжело. Теория есть, работает. Эмпирические подходы тоже неплохи.


    E>Да я не про это. А про что-то вот-такое
    Автор: eao197
    Дата: 16.02.06
    . Будет здорово, если в Nemerle подобных граблей не окажется.


    Как я уже сказал, на уровне языка такие грабли сложно давить (разве что подход как в Template Haskell или Jatha, где
    макры явно отмечены синтаксически и с другими элементами синтаксиса их не спутать никак). Нужна правильная дисциплина кодирования и проектирования. Я вообще программировать (то есть, кодировать) очень сильно не люблю, стараюсь свести эту часть разработки к минимуму...

    P.S. А тут вообще есть возможность давать нормальные ссылки сразу на тему? Очень сложно искать весь тред по таким ссылкам...
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: little_alex  
    Дата: 16.02.06 16:12
    Оценка:
    Здравствуйте, VladD2, Вы писали:


    VD>Как я понимаю, в макросах Нэмерла два клавных новшества по сравнению с макросами лиспа — 1) ... 2) доступ к семантической информации предоставляемой компилятором и доступ к разным стадиям компиляции.


    Проблема решается тем, что можно достаточно просто и без компилятора проанализировать код. Предопрделенных конструкций(т н специальных форм мало — порядка 25) — остальное функции и макросы.
    То есть сбор необходимой информации можно сделать самостоятельно.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 16.02.06 16:14
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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

    Александреску был вынужден работать с гораздо мение варазительным С++. По этому у него и получились такие страшные вещи...
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 16.02.06 16:19
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:


    WP> Ну, вам виднее, у вас своя кадровая политика, у меня своя... Хрен его знает, чья лучше. У меня тут всё же крутой университет под боком, свежие кадры буквально на дороге валяются.


    Можно позавидовать. Что и делаю.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Stoune  
    Дата: 16.02.06 16:25
    Оценка:
    Здравствуйте, eao197, Вы писали:

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


    E>>>Ух ты! А я и не знал, что vim -- это уже почти готовая IDE. Там еще компиляцию можно запускать, а затем по списку ошибок прыгать.

    S>>Совершенно верно. А ты как думал? Integration, Development, и Environment есть, а IDE — нету?

    E>

    E>Ну я в IDE чуть больший смысл вкладываю.
    E>Integration -- это когда ты в одной оболочке я получаю и редактор, и отладчик, и дизайнер, и редактор ресурсов, и класс браузер, и отрывки из помощи. И все это сразу и задаром В vim этого просто не сразу. Некоторые умельцы умудряются подобный комбайн соорудить
    Автор: CrystaX
    Дата: 08.08.05
    (вот еще и еще), но мне такая тесная интеграция просто не нравится.

    E>Environment -- это когда IDE сама за тебя разбирается откуда запускать компилятор, что и где искать. В vim-е, опять же, такого нет. Он наследует environment из той оболочки, откуда его запустили. У меня настроено несколько shell-ов для разных компиляторов и vim использует только то, что я предварительно указал в настройках конкретного shell-а.

    К сожалению вс' єто работает в теории. Да хорошо иметь выбор, но только когда речь идёт о нескольких скажем до 5 инструментов среди которых можно выбирать. А что получаем на практике, имеет тучу плагинов к тому ж Емакс, 3/4 сходных по назначению которых дублируют одну и ту же функциональность, но каждый немного по разному и ни один не проработан до конца, в результате приходится или самому писать тысячный велосипед или прикручиваеш 10 существующих, которые по ходу нужно сразу изучить, а из них ещё не все между собой совместимые и в конце концов устав от этих ненужных никому и главное неоплачиваемых трудностей я перейду на IDE, а игрушки оставлю их любителям настоящим гуру.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[5]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.02.06 16:26
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>А что в OpenC++ принципиального, чтобы его широко признали?


    Это аналон R# который смог продвинуться еще меньше чем R#.
    Кстати, почитай вот это
    Автор: VladD2
    Дата: 13.02.06
    . Забавно правда?

    IT>По-моему, LINQ — это баловство.


    Ну, это ты зря. Это нужный и дано ожидаемый DSL.

    IT> Лучше бы они время на что-нибудь другое потратили. Сделали бы лучше макросы и этот LINQ на них можно было бы делать в качестве домашнего задания студентам.


    А вот с этим на 100% согласен!
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.02.06 16:26
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>ХЗ, не интересовался.


    Вроде да. Но хрена два ты так просто план получишь. Рельно все превращается в SQL, но возможности влепить в конечный SQL свой хинт вроде бы пока нет. Так что прийдется подождать еще пару лет пока они увидят, что это нужно (если увидят конечно).

    Именно по этому решение на основе открытых макросов мне нравится больше. Ведь я могу поправить все как надо и испльзовать свою специализированную версию.

    В прочем, SQL — это здорово, но я за последние 3 года с ним практически не сталкивался. А вот мест где я мог бы существенно упростить себе жизнь метапрограммированием я видел не мало.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.02.06 16:26
    Оценка:
    Здравствуйте, GlebZ, Вы писали:

    GZ>Посмотри на досуге JSR170. Стандарт у конкурентов.


    А что это?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[2]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.02.06 16:26
    Оценка:
    Здравствуйте, GlebZ, Вы писали:

    GZ>Да никто не будет переходить на Nemerle. Будет узкоспециализированным языком. Потому как нужен маркетинг(в маркетинг Java и С# были вложены огромные средства). Потому как нужны люди которые бы умели фичи пользовать. А таковых единицы.


    Кто делал маркетинг С++?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[4]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.02.06 16:26
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Разработчики C# и без того совсем не глупые люди. И что такое Лисп, и что есть Haskell они знают получше многих прочих.


    Несомненно. Но у них есть страх сделать что-то плохое. И языки вроде Нэмерла могут снять такой страх.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.02.06 16:26
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Но. Язык еще не дорос до версии 1.0. И, поскольку он дотнетовый, а мне нужна кроссплатформенность, то я предпочту посмотреть, что выйдет из Mono или dotGNU. Пока, имхо, все это сырые недолки, которые в production проектах только экстремалы используют.


    Это ничем не обоснованное суждение. Моно 1.0 зарелизен. Нэмерел конечно еще не 1.0, но ты же пока к нему только присматривашся. Кстати, он вроде как неплохо работает на Моно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.02.06 16:26
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>>>Мегафичи и IDE -- это ортогональные понятия (если язык нормальный). А если язык такой, что на нем можно только в супер-пупер IDE мышкой возюкать, тогда да, без IDE никак.


    VD>>Опять глупые наезды.


    E>Да где же здесь наезды? Я просто говорю, что нормальный язык позволяет нормальные программы и без IDE писать. IDE только добавляют комфорта программисту, но не улучшает самого языка.


    Ну, давай построим простую логическую цепочку.

    Я утверждаю, что мне для продуктивной работы нужна поддержка языка в IDE. При этом заявляю, что дял меня Нэмерл — это нармальный язык. Ты же говоришь, что если языку нужна поддержка IDE это язык не нормальный. Ну, и как это расценивать?

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

    Давай догворимся, что ты примишь как данность, что есть люди (и их что самое забавное большинство) для которых понятие "нормальный язык" включает в себя и поддержку хорошей IDE. И не будешь выдавать вот таких суждений.

    Дело в том, что поддержка IDE не важна только лишь для тебя. И не нужно проэцировать это на других.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.02.06 16:26
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Но макры это не такое уж однозначное зло. Это мощный инструмент, но в шаловливых ручонках мощный инструмент это страшно. Мощный инструмент нужен мощному человеку, а в шаловливые индийские ручонки надо давать ограниченную со всех сторон Java.


    Макросы являеются злом только в С/С++. Точно так же именно в этих языках злом можно называть метапрограммирование на шаблонах. И это так не из-за какой-то мифической мегасилы макросов или шаблонов. Это следствие того, что в этих макросах нельзя добиться хорошей читабельности и полноценной диагностики ошибок. Так вот макросы Нэмерла избавлены от оных недостатков. И они просто являются мощным инструментом к злу не относящемуся.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: kwas Россия  
    Дата: 16.02.06 16:30
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Я утверждаю, что мне для продуктивной работы нужна поддержка языка в IDE. При этом заявляю, что дял меня Нэмерл — это нармальный язык. Ты же говоришь, что если языку для продуктивной работы нужна поддержка IDE это язык не нормальный. Ну, и как это расценивать?


    Как-то так.
    If a shark stops swimming, it will die. Don't stop swimming, Mr. Mulder.
    Every epic equalizer is iso (c)
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 16.02.06 16:32
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Я утверждаю, что мне для продуктивной работы нужна поддержка языка в IDE. При этом заявляю, что дял меня Нэмерл — это нармальный язык. Ты же говоришь, что если языку нужна поддержка IDE это язык не нормальный. Ну, и как это расценивать?


    Ключевой момент. Тебе. А не языку. В этом вся разница в наших точках зрения:
    -- ты думаешь, что нормальным языком можно начинать пользоваться только когда для него появляется удобная IDE;
    -- я думаю, что нормальным языком нужно начинать пользоваться сразу, как только в нем появляется заинтересованность. Вне зависимости от наличия для него IDE.

    Все.

    VD>Давай догворимся, что ты примишь как данность, что есть люди (и их что самое забавное большинство) для которых понятие "нормальный язык" включает в себя и поддержку хорошей IDE.


    Ok.

    VD>Дело в том, что поддержка IDE не важна только лишь для тебя. И не нужно проэцировать это на других.


    Как мне представляется, я не одинок
    Автор: WinniePoh
    Дата: 16.02.06
    .


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 16.02.06 16:45
    Оценка:
    Здравствуйте, eao197, Вы писали:

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


    А дебагер тебе нужен например?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 16.02.06 16:48
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

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


    ВВ>А дебагер тебе нужен например?


    Раз или два в месяц, когда какой-нибудь Access Violation проявляется, а я не могу с ходу понять, где именно он возникает.
    А так я даже код в Debug режиме не компилирую.

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


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 16.02.06 17:10
    Оценка:
    Здравствуйте, eao197, Вы писали:

    ВВ>>А дебагер тебе нужен например?


    E>Раз или два в месяц, когда какой-нибудь Access Violation проявляется, а я не могу с ходу понять, где именно он возникает.

    E>А так я даже код в Debug режиме не компилирую.

    Экстремал

    Хорошо я спрошу так — считаешь ли ты что язык достаточного уровня сложности (С++, си-шарп, немерле...) для того чтобы он считался полноценным (т.е. его использование могло бы считаться таковым) необходимо наличие дебагера?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 16.02.06 17:19
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Александреску был вынужден работать с гораздо мение варазительным С++. По этому у него и получились такие страшные вещи...


    А это уже черт его знает. Вполне может быть с точностью до наоборот — виновата гибкость шаблонов.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 16.02.06 17:19
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Именно по этому решение на основе открытых макросов мне нравится больше. Ведь я могу поправить все как надо и испльзовать свою специализированную версию.


    Для добавления хинтов в SQL совсем не обязательно ломать синтаксис языка.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: Programmierer AG  
    Дата: 16.02.06 18:14
    Оценка:
    Здравствуйте, eao197, Вы писали:

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

    Можно пойти еще дальше. Если язык хороший и предназначен для "настоящих индейцев", ему ни компилятор, ни стандартная библиотека не нужны, главное — идея! А если идея хорошая, фанаты и сами все реализуют.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[5]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 16.02.06 18:30
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Copy&Paste. встроенный в язык? Хринеть

    Если Copy&Paste делает компилятор то это уже не Copy&Paste ибо не вызывает проблем Copy&Paste'а.
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 16.02.06 18:31
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

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


    WP> Программист — не барышня кисейная, чтоб капризы такие себе позволять.




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


    Знать всё невозможно. К сожалению. На это просто не хватит времени. Хотя нет, всё же знать очень много можно, если только тем и заниматься, что постоянно изучать всё новое. Но тогда не останется времени на работу. Если же только и делать что работать, то не будешь ничего знать. Как обычно руль посередине

    IT>>Может приведёшь нам список таких скорых внедрений?


    WP> Легко: ADT, pattern matching, list comprehensions, annotations (уже есть в примитивном виде — контракты, но грядёт скоро вообще полная щастя), Pi calculus (в свете XBox360 и Cell — мегаактуально, так что скоро всем индусам придётся эту математику изучать), ну и всенародно любимые DSL-и, конечно же. Они и так внедрены, но пока народ не знает, как это называется, и формальными методами не владеет. Скоро завладеют.


    Многое из этого уже есть и давно широко используется, кое что появляется (в том же Nemerle) и будет скоро широко использоваться. Но всё это мелочи (кроме пожалуй DSL), техники, на технологии и парадигмы никак не тянут. Мир они не перевернут и даже особенного шороха не наделают.

    IT>>Знать и хотеть, а ещё лучше чувствовать что под тобой стул горит — это разные вещи.


    WP> Советую посмотреть на то, во что превращается Visual Basic. А уж под ними то точно стул не горит...


    Значит хотят, именно то, о чём я говорю.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: GlebZ Россия  
    Дата: 16.02.06 22:16
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    GZ>>Посмотри на досуге JSR170. Стандарт у конкурентов.

    VD>А что это?
    Стандарт репозитория с языками запросов. Чрезвычайно полезная штука для offline решений.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[3]: Снова о Nemerle или профанация не пройдет :)
    От: GlebZ Россия  
    Дата: 16.02.06 22:16
    Оценка:
    Здравствуйте, IT, Вы писали:

    GZ>>Насчет LINQ IMHO Самым важным в LINQ не upgrate языка, а то что он представляет конкуренцию стандартам типа JSR1700 Явы. То есть, возможность построения репозитория.

    IT>Вот лично я без понятия что там за стандарты, поэтому, конкурирующая с чем-то мне неизвестным фича меня мало интересует, если она мной не востребована. В LINQ для себя я не вижу серьёзного применения. Красивая игрушка, nice to have, не более того.
    Зря не смотришь. Там очень занятные идеи. К моему сожалению, мир архитектурных решений Java значительно полнее чем в Net. Основная вещь которую я приметил во всей этой шараге это не ОРМ, а построение локальных репозиториев объектов. Сразу признаюсь, что smart client от Microsoft в плане offline клиентов мне очень сильно не нравится. Ни в плане data oriented offline. Ни в плане service oriented offline. А с помощью этой шняги, можно очень продвинутые вещи плодить.

    GZ>>Это юридически сложно сделать.

    IT>Команда Mono работает в Novel, эклипса в IBM (кажись). Что сложного?
    Maybe.

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

    Я думаю основная проблема в том, что в основном используется функциональный стиль. Я тоже его совсем еще недавно сильно непонимал. Да и сейчас он мне мерзопакостен.
    IT>Код на Nemerle я понимаю, по крайней мере в рамках императивности, и это понимание подстёгивает во мне интерес к этому языку, к его заявленным мегафичам. Это понимание и заинтересованность в какой-то момент способны побороть лень и нехватку времени и вот я уже читаю введение в язык, знакомлюсь с примерами. Мне не нравятся такие вещи как def и mutable, я бы предпочйл var, но по прочтении введения я уже к ним привык. Я готов писать на Nemerle и готов его использовать в своих проектах не беспокоясь о том, что мне придётся выкинуть всё, что уже наработано и начинать старую песню о главном в очередной раз. С этого момента вхождение в язык осуществлено, на это мне потребовалось несколько часов.
    Думаю что у OCaml'овцев на это ушло бы меньше времени. Но язык действительно хороший, мне он тоже понравился. Но мы с тобой люди подготовленные C#3.0. Многие концепции языка уже знакомы. IMHO Для среднего сишника(чтобы без свящ. войн выделил), который мало представляет что такое делегат будет не так легко. Они не особо то понимают всю мощность функторов.

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

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

    GZ>>Будет узкоспециализированным языком. Потому как нужен маркетинг(в маркетинг Java и С# были вложены огромные средства). Потому как нужны люди которые бы умели фичи пользовать. А таковых единицы.

    IT>Маркетинг никогда не помешает, тем не менее, существует масса открытых проектов, которые достаточно популярны и обошлись без профессионального пиара.
    Которые были узко специализированы или не имели аналогов.

    IT>Впрочем, как я сказал в самом начале, если Nemerle уготована судьба всего лишь подтолкнуть разработчиков C# к более радикальным действиям, то меня это тоже вполне устроит

    Был бы тоже рад
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[3]: Снова о Nemerle или профанация не пройдет :)
    От: GlebZ Россия  
    Дата: 16.02.06 22:16
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    GZ>>Да никто не будет переходить на Nemerle. Будет узкоспециализированным языком. Потому как нужен маркетинг(в маркетинг Java и С# были вложены огромные средства). Потому как нужны люди которые бы умели фичи пользовать. А таковых единицы.

    VD>Кто делал маркетинг С++?
    ООП апологеты.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:01
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Лучшая IDE это Unix. А IDEA — игрушка. Бесполезная.


    Фанаты идут лесом. (это дивиз такой)

    Кстати, можно узнать, что ты сделал выдающегося в своей жизни, чтобы называть игрушками плоды чужого труда?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:01
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>А это уже черт его знает. Вполне может быть с точностью до наоборот — виновата гибкость шаблонов.


    Вообще-то если шаблоны применяются как средство обобщенного программирования (то есть по назначению), то они выглядят довольно нормально. Одна проблема — диагностика ошибок. Но это снова проблема конкретной реализации.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:01
    Оценка:
    Здравствуйте, GlebZ, Вы писали:

    GZ>Стандарт репозитория с языками запросов. Чрезвычайно полезная штука для offline решений.


    Что значит "репозитория"? И зачем он нужен?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:01
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    VD>>Познакомься по ближе со Скалой и Нэмерлом тогда обсудим что там перебор, а что нет.


    AVK>У меня нет на это времени, и, пока, желания.


    Тогда, плиз, отложи свои коментарии до тех пор когда у тебя найдется время и желание. Не уподабляйся здешним "товарищам" хаящим все что они не поняли.

    VD>>LINQ — это тупиковая идея. Они делают не универсально то, что можно сделать универсально.


    AVK>Зато им можно пользоваться сразу, вероятность побочных эффектов не очень велика.


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

    VD>>Нэмерл сегодня рвет в клочья то что будет в C# 3.0 через хрен знает сколько времени.


    AVK>Ничего он не рвет, его пока что еще нет вживую. LINQ вобщем то тоже нет.


    Еще, раз. Оставь свои коментарии до момента когда хочть чуточку разберешся в воросе. А то снова начинается разговор "о вкусе устриц". А LINQ вообще-то есть. И мы с тобой его уже посмотрели. Возможно это не окончательная версия, но выше крыши МС прыгнуть не в состоянии. Сам подход тпиковый.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:01
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>А ты сам что, возьмешься эту грань определять?


    Я могу делиться своими ощущениями. И то что я уже наблюдаю мне кажется не очень объективным мнением. Возможно я ошибаюсь.

    AVK>>> Пока нет ни одного мейнстрим-языка, допускающего изменение синтаксиса


    VD>>Дык, как бы есть.


    AVK>Чего ж не сказал какой? Неужели LISP. Или ты за таковое шаблоны С++ принимаешь?


    Два ты уже назвал сам. Еще есть ОКамл и Нэмерл.

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


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


    Я ничего не считаю идеалом. Ни C#, ни Nemerle, ни что другое. Я делюсь мнением полученым на базе собственного аналиа. А вот твой скепсис основан на твоем скепсие, ведь у тебя нет времени... Тогда что выражать мнение основанное не на чем? Глядишь разберешся и наши мнения совпадут.

    AVK> Тебе хорошо, ты занимаешься программированием исключительно ради развлечения, мне же приходится им заниматься профессионально. И кидаться из стороны в сторону, не будучи достаточно уверенным, мне нельзя.


    Да, я как бы не призываю всех срочно пересесть на Нэмерел и забросить свои проекты. Если ты заметил я даже не начал переписывать тот же Rsdn.Editor на Нэмерле. Ну, по крайней мере пока.

    Пока что идет речь о изучении языка и вынесении общего мнения.

    Меня настораживает другое. Ты уже начал воспринимать его в штыки даже не поглядев его как следует. Ну, это же явная предвзятость.
    Мот ты и прав, и Нэмерл никуда не годен, или не пойдет в массы из-за косвенных причин, но черт побери хотелось бы четко осознать эти причины. Глядишь не Нэмерл, так R# пройдет к финишу. А так мы ограничиваем просто из-за своего скепсиса. Это не конструтивно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[5]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:01
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    VD>>Ввести var вместо mutable — задача на две минуты. Один простейший макрос. def же нечто большее. Ты можешь определять с его помощью куски кода. Это как бы такой хитрый const замораживющий не только данные, но и куски кода. Так что его не надо трогать. Это одна из вкусностей Нэмерла которой просто нет в C# и вообще в императивных языках. Это то что императивщик не может прочувствовать пока не поварится в соку подходов Нэмерла чуть-чуть.


    AVK>Copy&Paste. встроенный в язык? Хринеть


    Ты все же разобрался бы в вопросе прежде чем что-то говорить. А то просто смешно.
    Какой к чертям копипэст?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[4]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:01
    Оценка:
    Здравствуйте, GlebZ, Вы писали:

    VD>>Кто делал маркетинг С++?

    GZ>ООП апологеты.

    ООП? О, как? А я то думал, что ОО на том же Шарпе получается несколько более чистым.

    Ну, да фиг бы с ним. Главное, что это не некий дядя с тучей денег. Значит более выдающийся язык тоже найдет апологетов и все будет в шоколаде.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:01
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Как грамматика английского языка может быть сложнее в С++ там или в выбенет?


    В С++ грамматика С++, а не английского.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 02:23
    Оценка:
    Здравствуйте, little_alex, Вы писали:

    _>Проблема решается тем, что можно достаточно просто и без компилятора проанализировать код. Предопрделенных конструкций(т н специальных форм мало — порядка 25) — остальное функции и макросы.

    _>То есть сбор необходимой информации можно сделать самостоятельно.

    Это не решение проблемы. Это взваливание на себя очень не простой работы. Не надо забывать, что Нэмерел выводит типы, а Лисп с трудом понимает, что это такое. Ты повесишся пытаясь достичь в Лист то, что практически бесплатно есть в Нэмерл.

    Да, и зачем нужен Лисп если Нэмерл превосходит его по куче параметров? Ради доказательства? Зачем мне самого себя убеждать в чем-то? Что я не получу в Нэмерле, но получу в Лиспе?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 03:10
    Оценка:
    Здравствуйте, eao197, Вы писали:

    VD>>Я утверждаю, что мне для продуктивной работы нужна поддержка языка в IDE. При этом заявляю, что дял меня Нэмерл — это нармальный язык. Ты же говоришь, что если языку нужна поддержка IDE это язык не нормальный. Ну, и как это расценивать?


    E>Ключевой момент. Тебе. А не языку.


    Язык не самоцель. Он тоже нужен мне. И вот без IDE язык мне не очень нужен. Даже чтобы поиграться с Нэмерлом я соорудил микр-IDE из Сцинтилы. Жить сразу стало куда проще.

    E>Как мне представляется, я не одинок
    Автор: WinniePoh
    Дата: 16.02.06
    .


    Э... ты хочешь быть похож на него?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 17.02.06 03:17
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>А что, их нет? Совсем совсем?


    их точно не больше, чем у сишных макросов.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 17.02.06 06:00
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    Расскажи, чем Nemerle защищает от подобных проблем при использовании синтаксических макросов (которые через syntax описываются).


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: little_alex  
    Дата: 17.02.06 08:06
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Это не решение проблемы. Это взваливание на себя очень не простой работы. Не надо забывать, что Нэмерел выводит типы, а Лисп с трудом понимает, что это такое. Ты повесишся пытаясь достичь в Лист то, что практически бесплатно есть в Нэмерл.


    Вообще-то такая фукциональность доступна в виде библиотек. Да и в коммерческих реализициях есть подобная фунциональность.

    VD>Да, и зачем нужен Лисп если Нэмерл превосходит его по куче параметров? Ради доказательства? Зачем мне самого себя убеждать в чем-то? Что я не получу в Нэмерле, но получу в Лиспе?


    Я не утверждал, что Lisp лучше или хуже Нэмерле, но доступ к семантической информации в Lisp точно есть.
    Re[5]: Снова о Nemerle или профанация не пройдет :)
    От: GlebZ Россия  
    Дата: 17.02.06 08:20
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>>>Кто делал маркетинг С++?

    GZ>>ООП апологеты.

    VD>ООП? О, как? А я то думал, что ОО на том же Шарпе получается несколько более чистым.

    В то время не было Шарпа. Он стал популярным благодаря совмещению быстрого С и объектных технологий о которых говорили на каждом углу как о панацее. Кстати — Турбо-Ассемблер был тоже объектно-ориентированным. Правда популярным он не стал. Не пойму почему.

    VD>Ну, да фиг бы с ним. Главное, что это не некий дядя с тучей денег. Значит более выдающийся язык тоже найдет апологетов и все будет в шоколаде.

    Oberon для конца 80-начала 90ых был также хорошим языком. И апологеты есть. Вот в шоколаде, я бы не сказал.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[5]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 17.02.06 08:26
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>>>Кто делал маркетинг С++?

    GZ>>ООП апологеты.

    VD>ООП? О, как? А я то думал, что ОО на том же Шарпе получается несколько более чистым.


    Тогда шарпа не было
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 11:49
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    Вот я и боюсь как бы возможности Nemerle не стали применять не по назначению.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 11:49
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Такие языки принято называть DSL.


    Я в курсе.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: GlebZ Россия  
    Дата: 17.02.06 11:50
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    GZ>>Стандарт репозитория с языками запросов. Чрезвычайно полезная штука для offline решений.

    VD>Что значит "репозитория"? И зачем он нужен?
    Локальное хранилище объектов. База данных для локального хранения избыточна и тормозна. У репозитория не тот объем данных чтобы можно было иметь выйгрыш от использования базы данных, и база данных к тому же хранит объекты в реляционном виде. Репозиторий — держит именно объекты и метаданные к ним. Это небольшая продвинутая объектно-ориентированная база данных.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[7]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 12:09
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>У меня нет на это времени, и, пока, желания.


    VD>Тогда, плиз, отложи свои коментарии до тех пор когда у тебя найдется время и желание.


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

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


    В Hibernate тоже нет такой возможности и ничего, живут. Опять же этокасается исключительно DLinq. Свою реализацию ты волен сделать какой тебе нравится.

    AVK>>Ничего он не рвет, его пока что еще нет вживую. LINQ вобщем то тоже нет.


    VD>Еще, раз. Оставь свои коментарии до момента когда хочть чуточку разберешся в воросе.


    Еще раз — кончай тут рассказывать кому и что тут говорить. Я правила нарушаю? Нет? До свиданья.

    VD> А то снова начинается разговор "о вкусе устриц". А LINQ вообще-то есть. И мы с тобой его уже посмотрели. Возможно это не окончательная версия, но выше крыши МС прыгнуть не в состоянии. Сам подход тпиковый.


    Позволю себе с тобой не согласиться.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 12:13
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>Copy&Paste. встроенный в язык? Хринеть


    VD>Ты все же разобрался бы в вопросе прежде чем что-то говорить. А то просто смешно.

    VD>Какой к чертям копипэст?

    Смайлик видишь? Это была ШУТКА.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 17.02.06 14:05
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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

    AVK>Вот я и боюсь как бы возможности Nemerle не стали применять не по назначению.
    А если "соколы" из смежной комманды в место тебя начнут сервер приложений писать что будет?
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 15:16
    Оценка:
    Здравствуйте, GlebZ, Вы писали:

    GZ>Локальное хранилище объектов. База данных для локального хранения избыточна и тормозна. У репозитория не тот объем данных чтобы можно было иметь выйгрыш от использования базы данных, и база данных к тому же хранит объекты в реляционном виде. Репозиторий — держит именно объекты и метаданные к ним. Это небольшая продвинутая объектно-ориентированная база данных.


    И какое это отношение имеет к чему-то обсуждаемому здесь?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 15:16
    Оценка:
    Здравствуйте, Programmierer AG, Вы писали:

    PA>Да, Влад, примени этот подход к Окамлу с Хаскелем, и снова наступит баланс Силы .


    Понимаш ли в чем дело. С ОКамлом и Хаскелем я пробовал разбираться. В Хаскеле жучков (с моей точки зрения) столько, что для реального дела он не применим. У ОКамла меньше, но все же хватает. Я сделал четкий вывод (для себя) о том что эти языки не станут мэйнстримом никогда. А стало быть тратить на них свои усилия мне не интересно.

    Это не значит, что они ничем не интересны. Спасибо им за привнесенные идеи.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 15:16
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Я буду комметировать что хочу и когда хочу, не надо мне рот затыкать. Что это за мода вобще пошла — третий человек уже за сегодня советует мне на какую тему мне писать не стоит?


    Так может задуматься раз третий?

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

    AVK>Еще раз — кончай тут рассказывать кому и что тут говорить. Я правила нарушаю? Нет? До свиданья.


    Сориться я с тобой не хочу. Я тебе высказал свое мнение. Дальше решай сам.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 15:16
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Ну, как минимум, у других могут быть совсем другие ощущения.


    Ну, дык за чем дело? Пробуем и высказываем свои ощущения.

    AVK>ОКамл я бы мейнстримом не назвал. А Nemerle пока еще на уровне экспериментов и уж точно не мейнстрим.


    Ну, кое-кто Лисп и ОКамл уже считают мэйнстримом. Ну, да могу согласиться. Значит Нэмерел станет первы.

    AVK>Чего же тогда не ответил на вопрос, какие есть недостатки у Nemerle как языка?


    Дык, потому что сам пока его только изучаю. Из того что я уже видел могу назвать довольно медленную загрузку компилятора и отсуствие поддержки IDE. Если из самого языка, то есть те же проблемы, что в C#. То же обобщенное программирование сделано через дженерики. Но это общие для дотнетных языков особенности. К тому же есть макросы решающие проблемы в этой области если что.

    Так же мне показалось странным, что в метод с параметром типа IList<T> нельзя передать массив типа T[]. Приходится выполнять приведение типов. Что странно при таком мощьном механизме вывода типов что есть в языке. Возможно это баг.

    Больше ничего пока не заметил. Надо попробовать написать что-то хоть немного реальное. Пока в глову не приходит что. Писать что-то большое глупо. А маленькое пока нечего не надо.

    AVK>Мое мнение основано на том, что тут приводили


    Это что конкретно?

    VD>> Глядишь разберешся и наши мнения совпадут.


    AVK>А если нет?


    Тогда хотя бы можно будет понять что действительно негативного ты заметил. Возможно это и мое мнение изменит.

    VD>>Меня настораживает другое. Ты уже начал воспринимать его в штыки даже не поглядев его как следует.


    AVK> Я всего лишь не согласен с твоим безудержным оптимизмом.


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

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


    Информации более чем достаточно. Есть и компилятор и нехилые туториалы, и куча кода на нем написанного (он сам на себе и написан). Нет тольк желания и/или возможности сесть и разобраться. Когда нет возможности еще ладно. Но когда начинается бурное обсуждение, но желания изучить обсуждаемый вопрос нет — это явно не конструктивно. Вывод у такого обсуждения может быть тольк один. И он заранее печальный.

    VD>>Мот ты и прав, и Нэмерл никуда не годен


    AVK>Заметь, я такого никогда не говорил.


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

    Если уж в Нэмерле есть реальные недостатки, то неплохо было бы их выявить. А если нет, то о чем тогда вообще говорить?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[7]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 15:16
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>>>Copy&Paste. встроенный в язык? Хринеть


    AVK>Смайлик видишь? Это была ШУТКА.


    Странная шутка.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[4]: Снова о Nemerle или профанация не пройдет :)
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 17.02.06 15:48
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Никого кстати не удивляет, что такое убожество как VB.NET кем-то используется для коммерческих проектов(о масштабах этого явления и размерах проектов мне прадва ничего не известно)? Я думаю хуже чем VB.NET, Nemerle никак не может быть.


    Знаю одну довольно большую систему Enterprise уровня. И 98 процентов кода — VB.NET.
    Собственно, пока что еще я кода на сишарпе (кроме того, что произведено нашей командой) я не видел.
    --
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 17.02.06 16:36
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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

    За молодыми и зелеными нужно в любом случае глаз да глаз. Они и без таких игрушек дров наломать могут буд здоров.
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[3]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 17.02.06 16:52
    Оценка:
    Здравствуйте, _Winnie, Вы писали:

    AVK>>4. Nemerle так и останется известен в очень узком кругу.

    _W>Уже нет.

    "Огласите весь список, пожалуйста" (с)

    AVK>>5. Когда с его использованием начнут делать большие проекты вылезет какая нибудь доколе неизвестная бяка.

    _W>Волков боятся — в лес не ходить.

    соглашусь
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 17.02.06 18:23
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ВВ>>Как грамматика английского языка может быть сложнее в С++ там или в выбенет?

    VD>В С++ грамматика С++, а не английского.

    А в выбенет — английского значит? Ты или шутишь или я уже не знаю что..
    Фича о которой я говорю в выбенет проверяет например грамотность текста написанного в комментариях.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 18:56
    Оценка:
    Здравствуйте, little_alex, Вы писали:

    _>Вообще-то такая фукциональность доступна в виде библиотек. Да и в коммерческих реализициях есть подобная фунциональность.


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

    _>Я не утверждал, что Lisp лучше или хуже Нэмерле, но доступ к семантической информации в Lisp точно есть.


    Да она сама в Лиспе под большим вопросом. Язык то по сути динамически типизированный. Ну, как ты сможешь определить что некий парамерт это получает INT если в него передано сложное выражение?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 17.02.06 19:07
    Оценка:
    Здравствуйте, eao197, Вы писали:

    ВВ>>Извини, но это демагогия.

    E>Не извиню.

    Тогда требую ответных наездов

    E>Можно. Не нужно забывать, что написанная программа дальше может жить без участия программиста. Например, выкачивая tgz какой-нибудь софтины в исходниках я делаю просто:

    E>
    E>./configure
    E>./make
    E>./make install
    E>

    E>и дальше пользуюсь программой. Для этого процесса не нужен ни дебаггер, ни профайлер, ни редактор, ни хелп. Вот тебе применение инструмента. Есть язык (в виде компилятора и стандартной библиотеки) и есть программа на этом языке. Все.

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

    E>Средства разработки нужны разработчикам. Большинству разработчиков. Но не языку.


    А кому нужен язык?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 17.02.06 19:22
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Тогда требую ответных наездов


    Не дождетесь! ((C) Рабинович)


    ВВ>Интересно конечно. А когда ты так делаешь тебе вообще не фиолетово на каком языке это приложение написано?


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

    ВВ>В общем пользоваться программой написанной на неком языке и пользоваться самим языком вещи немножко разные.


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

    E>>Средства разработки нужны разработчикам. Большинству разработчиков. Но не языку.


    ВВ>А кому нужен язык?


    Разработчикам. Но здесь получается достаточно длинная цепочка зависимостей.
    Но моя исходная мысль была в другом. Когда появляется интересный и удобный язык (именно язык), обычно для него нет IDE и продвинутых инструментов (насколько помню, даже с Java у Sun была подобная ситуация). Сначала язык пробуют разработчики-экстремалы (может быть в чем-то типа меня). Если им язык начинает нравится, они приделывают к языку необходимые инструменты. Вокруг языка начинается копошение, интерес, для более широких масс заинтересовавшихся разработчиков требуются более удобные инструменты (чтобы снизить порог вхождения) и вот здесь возникает спрос на IDE. А раз есть спрос -- есть и предложение.

    Пример с C#, имхо, чуть выбивается из общей массы. Но он и не такой уж типичный. Ведь со одной стороны, C# толкала Microsoft со всеми ее возможностями и опытом в средствах разработки. С другой стороны, C# не настолько уж сильно отличается от C++ и Java, что так же способствует более быстрому возникновению спроса на IDE. И, кстати, для C# есть автономная IDE не от MS?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re: Снова о Nemerle или профанация не пройдет :)
    От: pavel_turbin  
    Дата: 17.02.06 19:31
    Оценка:
    Здравствуйте, IT, Вы писали:
    что-то вас языки программирования сильно беспокоят. Вот на Cobol-е и на еще программеры требуются, 1200+ в США:

    http://seeker.dice.com/jobsearch/servlet/JobSearch?op=101&amp;dockey=xml/7/a/7a699556faee88cd572eaf289de59e81@activejobs0&amp;c=1&amp;source=1

    я думаю, они получают раза в два поболее чем Java программеры. Их не трясет что уже C/C++, COM и Java, и C# и давно устарели, как вы утверждали.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 20:15
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Пример с C#, имхо, чуть выбивается из общей массы.


    Да не особо — первые беты C# выкладывались без студии, да и студия была не сильно далеко ушедшей от текстового редактора с подсветкой синтаксиса.

    E> И, кстати, для C# есть автономная IDE не от MS?


    SharpDevelop, C# Builder, Delphi, Eclipse + Improve C# Plugin, X-Develop
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 20:30
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

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

    WH>За молодыми и зелеными нужно в любом случае глаз да глаз. Они и без таких игрушек дров наломать могут буд здоров.

    Глаз вот только всего два. Согласись — последствия запускания козла в огород, в котором на грядки высажен C#, и онного же, но с высаженным C++, разительно отличаются. Вопрос в том куда ближе Nemerle
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 17.02.06 20:43
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Вот интересно получается. О чем вы тогда с Владом спорите?


    Вот о чем. О том, что Влад попробует, ему понравится, но он скажет -- дайте мне IDE, а пока не дадите, я на нем работать не буду.
    А если я увижу, что мне язык нравится, я на нем работать буду. И мне пофигу, когда Влад своей IDE дождется и дождеся ли вообще.

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


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:04
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>Я буду комметировать что хочу и когда хочу, не надо мне рот затыкать. Что это за мода вобще пошла — третий человек уже за сегодня советует мне на какую тему мне писать не стоит?


    VD>Так может задуматься раз третий?


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

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


    Чья бы корова мычала

    VD>Лично я с удовольствием послушел бы тебя если ты действительно попробовал бы и высказал бы реальну критику. А так...


    Я пока что не критикую, потому что пока не ясна ситуация. Я пока СПРАШИВАЮ. Знаки вопросов в исходном топике видишь? Вот они как раз это и означают.

    AVK>>Еще раз — кончай тут рассказывать кому и что тут говорить. Я правила нарушаю? Нет? До свиданья.


    VD>Сориться я с тобой не хочу. Я тебе высказал свое мнение.


    С удовольствием услышал твое мнение о себе. А вот ответов на заданные вопросы не услышал, одни лозунги и заверения, что все будет хорошо.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:04
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>Ну, как минимум, у других могут быть совсем другие ощущения.


    VD>Ну, дык за чем дело? Пробуем и высказываем свои ощущения.


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

    AVK>>ОКамл я бы мейнстримом не назвал. А Nemerle пока еще на уровне экспериментов и уж точно не мейнстрим.


    VD>Ну, кое-кто Лисп и ОКамл уже считают мэйнстримом.


    Пусть считают. Меня их мнение не волнует.

    VD> Ну, да могу согласиться. Значит Нэмерел станет первы.


    Только вот пока не стал. Следовательно никто в этом мире не способен предсказать проблемы языков с изменяемым синтаксисом на тяжелых и долгих приложениях. Даже классической Java понадобилось очень немало времени, чтобы наработать опыт реального применения (хотя заметь, абсолютно новых идей там не было, просто они были необкатаны). Шарпу было проще — он в целом Java соответствовал. С Nemerle же ситуация повторяется — широкого опыта применения использованных технологий нет, никому не известны все взбрыки и проблемы, которые могут возникнуть.
    Знаешь чем мне нравится C# Team — они очень долго обсасывают каждое изменение в языке. Со стороны оно может и кажется тормозами, зато есть определенная степень уверенностит, что после широкого задействования новых фич проект не сложится как карточный домик под собственным весом.

    VD>Дык, потому что сам пока его только изучаю.


    То есть ты сам пока не можешь с уверенностью сказать что это мегарулез без недостатков?

    VD> Из того что я уже видел могу назвать довольно медленную загрузку компилятора и отсуствие поддержки IDE.


    Я специально два раза дописал, что речь о языке. IDE И компилятор меня пока не интересуют, это дело наживное. В языке недостатки есть?

    VD> Если из самого языка, то есть те же проблемы, что в C#. То же обобщенное программирование сделано через дженерики.


    А как надо? Шаблонами? А чем тогда шаблоны лучше макросов?

    VD> Но это общие для дотнетных языков особенности. К тому же есть макросы решающие проблемы в этой области если что.


    Т.е. недостатков в языке ты не видишь?

    VD>Больше ничего пока не заметил. Надо попробовать написать что-то хоть немного реальное.


    Золотые слова.

    AVK>>Мое мнение основано на том, что тут приводили


    VD>Это что конкретно?


    Все топики, посвященные Nemerle или где его сильно затрагивали. Я их все прочел.

    AVK>>А если нет?


    VD>Тогда хотя бы можно будет понять что действительно негативного ты заметил.


    Пока я задаю вопросы. Например — очевидно что язык, в котором ключевых слов много, да еще и их набор может изменяться (в том числе и неявно) значительно сложнее при прочих равных языка с зафиксированным набором ключевых слов. Как с этим бороться? У тебя есть ответ на этот вопрос?
    Я бы, если бы мне пришлось писать проект на Nemerle, зафиксировал бы набор ключевых слов (очень небольшой список) и вводить новые запретил бы под страхом смертной казни, а все макросы бы писал таким образом, чтобы не менять синтаксис. Потому что я не могу как Хейлсберг по полгода оценивать эффект от каждой новой языкофичи.

    AVK>> Я всего лишь не согласен с твоим безудержным оптимизмом.


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


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

    VD>Информации более чем достаточно.


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

    VD> и будем оперировать фактами. Не думаю, что кому-то будет плохо если мы получим в свои руки более мошьный и удобный инструмент. А вот необоснованым скептицизмом можно любую хорошую идею завалить.


    Не думаю что мое мнение как то скажется на судьбе проекта, так что не переживай.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[3]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:15
    Оценка:
    Здравствуйте, _Winnie, Вы писали:

    AVK>>4. Nemerle так и останется известен в очень узком кругу.

    _W>Уже нет.

    Пока да. Вот слово Java знают явно больше 50% прогарммистов. А слово Nemerle? Сдается мне и попроцента не наберется.

    AVK>>5. Когда с его использованием начнут делать большие проекты вылезет какая нибудь доколе неизвестная бяка.

    _W>Волков боятся — в лес не ходить.

    Если рядом с лесом, в котором бродят волки, да и грибы не факт что есть, есть лес, в котором определенно нет волков и грибы тоже наличествуют, то ситуация уже не столь очевидна. Надеюсь моя мысль понятна?
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:15
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>>>Copy&Paste. встроенный в язык? Хринеть


    AVK>>Смайлик видишь? Это была ШУТКА.


    VD>Странная шутка.


    Нормальная. IT вон оценил.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:15
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Дело в том что пока не напишешь using Lib.Macro; ключевые слова из этого пространства имен добавлены не будут.


    Андрей Михалыч, я сейчас говорю не о написании кода, а о его прочтении. При написании как раз проблем нет — я сам контроллирую (хотя конечно и тут проблемы имеются) набор ключевых слов.

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


    Боюсь все же значительно меньшие. Иначе бы в С++ не писали бы одни и те же библиотеки чуть ли не в каждом проекте.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>А в выбенет — английского значит? Ты или шутишь или я уже не знаю что..

    ВВ>Фича о которой я говорю в выбенет проверяет например грамотность текста написанного в комментариях.

    А причем тут орфография?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Вот я и боюсь как бы возможности Nemerle не стали применять не по назначению.


    Пока что этого не видно. А вообще, чтобы что-то узнать надо хотя бы попробовать для начала.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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


    Здесь можно поглядеть на то же метапрограммирование на С++. Особо не заметно, чтобы разные ламеры им занимались. Проблема в основном в потребительских свойствах получаемых решений. То сообщения об ошибке никудышные, то код нечитаемый. В Нэмерле очень похоже на то, что получится избежать подобных проблем.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>>>Согласен. Но вот перевесят ли эти достоинства недостатки синтаксических макросов — вопрос остается открытым.


    VD>>Хм. А они есть?


    AVK>А что, их нет? Совсем совсем?


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

    Покак что я особых недостатков не вижу.

    Oyster здесь
    Автор: Oyster
    Дата: 17.02.06
    очень верно заметил, что макросы приходится на сегодня сравнивать с другими средствами метапрограммирования, а именно с эмитом, разными там CodeDom-ами, КодСмитами, и другими ХСЛТ-ами. И на их фоне макросы — это явный прогресс. Особенно если учесть, что в них можно пользоватья паттерн-матчингом и получать доступ к информации о типах.

    В общем, то что я вижу в коде самого Нэмерла меня очень даже радует. Я с ужасом смотрел на шаблоны С++ или даже на демонстрируемый тобой ХСЛТ. Тут же я вижу понятный и компактный код. Ничего лишнего и огромнейшая мощь.

    AVK>А я про всех и не говорил.


    Тогда уточняй кого устраивает. Я бы лично не отказался от вкусностей Нэмерла.
    И могу сказать, что я получу их или в Нэмерле, или C# x.x, или на худой конец в R#.

    VD>>Недостатков у C# хватает. Они правда не там где их видят С++-ники, но все же есть.


    AVK>Можно тебе задать один вопрос? Спасибо.


    Можно. Причем без этой сценичности. Я и так отвечу.

    AVK> Есть у Nemerle недостатки (я сейчас не говорю о отсутсвии IDE, глюках etc, а только о самом языке)?


    Да откуда же я знаю? Покак все что я вижу не существнно. Недостатков не больше чем в C#. А чтобы найти нечто что не видно на поверхности надо как следует изучить предмет.

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

    AVK>Ну да, всего то лет 30 назад


    Скорее 10. А в том виде в каком они есть в Нэмерле их вообще никде больше нет.

    VD>>Что касается функциональщины, то как видишь она потихоничку проникает в тот же C#.


    AVK>Это хорошо что потихонечку.


    Дык и тут тебя никто не заставляет программировать сразу в ФС. Просто если ты это захочешь, то возможности явно более широкие.

    AVK>Ты чего от меня хочешь? Чтобы я воздал Nemerle хвалу? Или еще что то?


    Нет. Но твой безосновательный скепсис подавляет. Вот и хотелось, бы, чтобы или его было по мнеьше, или чтобы он был хот чем-то обоснован. Причем чтобы это что-то отличалось от того, что Нэмерле делатет не МС.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Я тебе уже сказал — в Nemerle еще ничего нет


    Как нет? Вот же поддержка того самоего всроенного SQL. Только интелисенса нет. Но его и для основного языка нет.

    AVK> и неизвестно когда этот язык использовать можно будет.


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

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


    Хм. Когда в 2001 ты взялся за C# и донет, то ты значит за паравозом не бежел?

    Нэмерл в том состоянии когда его можно изучать и использовать. Библиотеки у него микроскопические. Серьезных изменений уже не будет. Все что делается в последнее время в освном вообще делается на макросах.

    В общем, изучать и осваивать можно уже сейчас. За одно можно будет узнать, что за подводные камни в нем есть.

    AVK>Позволь мне самому определять свои чувства и их причины.


    Не вопрос. А ты позволь мне выражать мнение о чужом скепсисе. ОК?

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


    Как ты там говорил? Не надо затыкать мне рот. Ты варажашь скепсис по поводу Нэмерла. Я по поводу твоего скепсиса.

    VD>>Нда. И в чем по-твоему разница между CTR и макросами Нэмерла?


    AVK>Тем, что CTR не ломает синтаксис языка.


    Да? А ты точно хоношо рассмотрел примеры в обзоре Синулярити? Там свой язык шаблонов. Намного более убогий чем Нэмерел. Считай, что макросы Нэмерал — это и есть CTR, только названое по другому и куда более грамотно продумано. Идея квази-цитирования куда более мощьная вещь чем те текстуальные макросы кторые есть в CTR.

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


    Дык ты волен использовать (или даже не использовать) макросы так как тебе нужно. Если тебе нужен свой внутренинй DSL, то расширяй синтаксис. Если тебе достаточно просто кодогенерации, то тоже нет проблем, атрибуты и макросы без изменения синтаксиса в твоем распоряжении.

    Я даже не представляю как можно сделать лучше. По-моему, это самое красивое решение из виденных мною.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Сравним?

    E>
    E>18w
    E>

    E>это все.

    Ага. Гениально. А 123b будет у нас означать отослать 123 писма по мылу.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Уверяю вас, это вовсе не так. Вам просто не хватило способностей для того чтобы перестроить своё мышление.


    Уверяю тебя моих способностей хватит куда на больше чем на Лисп. Я просто не буду тратить их на него. Потому как найду им лушее применение. А тебе советую в предь не осбуждать чужие способности.

    WP> А уметь перестраивать мышление на любую произвольную парадигму обязан каждый. И не только каждый программист, вообще каждый. Адаптивность — основополагающее свойство интеллекта.


    Громкие слова тоже в лес. И вообще, как соотносятся парадигмы и желание испльзовать Лисп?

    Я лично не против разных парадигм вроде ФП или МП, но я против программирования в AST коим и является Лисп. В общем, я против Лиспа. Причем не навязываю свою волю никому. Если кто-то видит в Липе идильное средство разратбоки, то пусть его использует. Только без обсуждения чужих умственных способностей.

    WP> Кто запретил приделать к Лиспу строгую типизацию? Лично мне никто не запрещал, чем и пользуюсь цинично.


    А зачем мне приделывать к Лиспу то и се, когда я могу просто взять язык где это уже приделано и приделано качество? Я не уверн, что смогу приделать все что мне нужно в разумные сроки. И не понимаю зачем мне этим заниматься.

    Лично за тебя цинично радуюсь. Пользуйся дальше. Я не хочу.

    WP> Профессионалы всегда в меньшенстве. Лабухов-ремесленников гораздо больше.


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

    В общем, мне очень не нравится твой надменный тон. По меньше громких слов, и по больше интересных фактов. Там будет все приятнее.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Те же макросы, что и, например, в dia2code.


    Нет слов. Ну, называй диаграмы хоть горшком. Мне без разницы.

    VD>>Дизайнер классов видел в VS 2005? Вот он как раз на этом самом DSL Tools сделан. Чем он на макросы похож?


    WP> Тем и похож — что каждый графический элемент (по сути — это ровно то же AST) разворачивается очень примитивным образом (подстановкой) в код.


    В DSL Tools вообще не определяется как ты будещь переводить модель и во чето. Есть некоторые средства, но они не обязательны. В конце концов ты волен взять генерируемый дизайнером ХМЛ и делать с ним, что хочешь.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Судя по плюсику, который ты поставил на ответ Vermicious Knid
    Автор: Vermicious Knid
    Дата: 16.02.06
    , ты должен был это видеть:

    E>

    E>Если это не расширение синтаксиса, то проблем не будет. С расширениями синтаксиса все несколько сложнее. Если они конфликтуют друг с другом, то совместно их использовать невозможно, а подключать пространства имен можно только на уровне пространств имен/единиц трансляции(так как такие макросы изменяют логику парсера).


    И что? Если у тебя конфликтуют названия функций, ты тоже их использовать не сможешь. Что же тебя это не огорчает?

    Макросы немерла подчиняются тем же самым ограничениям, что и функции в С.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    Кстати, меня вот один вопрос интересует. Я как-то попытался написать обобщенную версию функции работющей с IList<T>. Ну, что-то вроде:
    def f[T](IList<T> seq)
    {
      seq.Count;
    }

    Так вот, когда я передал в нее массив который вроде бы иреализует интерфейс IList<T>, то компилятор заорал, что мол немогу привести тип.
    Тогда я применил приведение типов :> и все прошло. Но ведь в C# в таких случаях приведение не требуется. Не баг ли это?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 21:19
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Посмотри есть ли у тебя в GAC нэтивный образ Nemerle.Compiler.dll. Я не инсталлировал новую версию, запускал бинарники из дистрибутива исходников(там есть компилятор для осуществления self-бута). У меня он жутко тормозил, пока я через ngen вручную не сгенерировал образы для Nemerle.Compiler.dll и Nemerle.Macros.dll. Правда обрабатывать Nemerle.dll(стандартная библиотека) он вообще отказался. Возможно он JIT'ит его каждый раз при запуске и это сказывается негативно.


    Биг сенкс. Действительно скорость загрузки компилятора резко увеличилась. Хотя задержечка все равно есть. Но уже не столь большая.

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

    VK>Вообще во времена .NET 1.1 и эмуляции дженериков компилятор работал гораздо быстрее. Что изменилось я не в курсе, но оптимизацию(в том числе и кодогенератор улучшить) и профилинг разработчикам делать определенно надо. Еще возможно это из-за того, что разработчики используют преимущественно Mono(т.е. ориентируются на него при оптимизации и т.п.). Насколько мне известно они даже засабмитили несколько патчей в Mono, в том числе связанных с производительностью. Так что это может быть результатом такой вот однобокой оптимизации.


    Да нет. Рельно поддержка дотнета у них на высоте. В Моно с дженириками вообще пока фигово. Но попрофайлить им компилятор не мешало бы. Хотя вроде бы маса компиляци идет быстро. Так что можно сделать кастом-акшон для MSBuild-а который будет кэшировать компилятор и все будет ОК.

    VK>Возможно это пресловутое отсутствие поддержки ковариантности, меня самого жутко раздражает.


    В Шарпе ковариантности для дженериков тоже нет. Но приведение к интерфейсу работате без проблем. Тут явно что-то не то.

    VK>Тут лучше спросить у самих разработчиков. Может к версии 1.0 что-нибудь придумают.


    А где это проще всего сделать (аськой не пользуюсь)?

    VK>И если они не дай бог добьются какого-то признания и начнут напрямую конкурировать с C#, то индустрии можно только посочувствовать. Она перевернется с ног на голову, а вместо Страуструпа и Андерса "как-там его" мировой знаменитостью в области дизайна языков станет Москаль (в прямом смысле этого слова). Если хорошенько подумать, то не очень веселая перспектива.


    Что-то не пойму, а что тут плохого? Или это такой стеб?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:38
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>Вот я и боюсь как бы возможности Nemerle не стали применять не по назначению.


    VD>Пока что этого не видно.


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

    VD> А вообще, чтобы что-то узнать надо хотя бы попробовать для начала.


    У меня сейчас нет времени на что то более менее крупное, а мелкие примерчики на мои вопросы ответа не дадут.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:38
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Погоди, ты говоришь "перевесят ли эти достоинства недостатки синтаксических макросов". Вот я тебя и спрашиваю, а они есть? Как можно обсуждать что перевесит, если еще не ясно есть ли какие-то недостатки?


    Поэтому прежде хотелось послушать о недостатках.

    VD>Покак что я особых недостатков не вижу.


    Плохо. Серебрянных пуль, как ты знаешь, не бывает. За повышенную гибкость и мощность надо платить. Вопрос в том чем.

    VD>Нет. Но твой безосновательный скепсис подавляет.


    Кого?
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:38
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Не понял. А где нужно ломать синтаксис? И что нужно сделать в ЛИНКе для добавления тех самых хинтов?


    Реализовать собственный extension вместо DLINQ.

    VD>Заметь многие восприняли ЛИНК в штыки именно потму, что это довольно не универсальное и не естественное расширение языка. Если лы бы это было сделано на макрсоах, то вряд ли кто стал бы возмущаться. Ведь тогда решение было бы универсальным.


    Я все же продолжаю считать что за универсальность всегда надо платить.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.06 21:38
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>> и неизвестно когда этот язык использовать можно будет.


    VD>А чем его сейчас то использовать нельзя?


    А что, можно? Сам же тут расписывал про глюки кодогенератора.

    VD>Понятно, что для большого проекта его испльзовать пока опасно. Но для многих задач уже очень даже можно.


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

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


    VD>Хм. Когда в 2001 ты взялся за C# и донет, то ты значит за паравозом не бежел?


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

    AVK>>Позволь мне самому определять свои чувства и их причины.


    VD>Не вопрос. А ты позволь мне выражать мнение о чужом скепсисе. ОК?


    Если есть желание заняться демагогией — то конечно. Правилами это не запрещено.

    VD>Как ты там говорил? Не надо затыкать мне рот.


    А я и не затыкаю. Просто намекаю на то что это демагогия.

    AVK>>Тем, что CTR не ломает синтаксис языка.


    VD>Да? А ты точно хоношо рассмотрел примеры в обзоре Синулярити? Там свой язык шаблонов. Намного более убогий чем Нэмерел.


    Я имел ввиду разработчик конкретных расширений не ломает синтаксис языка.

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


    Я не про шаблоны, а про их использование.

    VD>Дык ты волен использовать (или даже не использовать) макросы так как тебе нужно.


    Это пока я как ты, все свои проекты пишу один. А вот как не один, то уже все не так просто.

    VD> Если тебе нужен свой внутренинй DSL, то расширяй синтаксис.


    Вот только мне не нужен такой сложный и навороченный DSL.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 17.02.06 21:48
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Скорее 10. А в том виде в каком они есть в Нэмерле их вообще никде больше нет.

    Кстати давным давно было обсуждение подобных возможностей для С++. Я там
    Автор: WolfHound
    Дата: 26.07.03
    предложил не точтобы совсем макросы Nemerle но что-то довольно похожее.
    Хотя конечто все то что я там написал было импровизацией практически без продумывания.
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 17.02.06 22:12
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>А причем тут орфография?


    А причем тут грамматика С++?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[2]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 22:15
    Оценка:
    Здравствуйте, pavel_turbin, Вы писали:

    _>что-то вас языки программирования сильно беспокоят. Вот на Cobol-е и на еще программеры требуются, 1200+ в США:


    _>http://seeker.dice.com/jobsearch/servlet/JobSearch?op=101&amp;dockey=xml/7/a/7a699556faee88cd572eaf289de59e81@activejobs0&amp;c=1&amp;source=1


    _>я думаю, они получают раза в два поболее чем Java программеры. Их не трясет что уже C/C++, COM и Java, и C# и давно устарели, как вы утверждали.


    И что ты ждешь? Бегом учить Кобол.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:02
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>А причем тут грамматика С++?


    Re[18]: Снова о Nemerle или профанация не пройдет :)
    Автор: VladD2
    Дата: 16.02.06
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:02
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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


    Аргументация точно такая же как противников C#. Они тоже дружно вторят "покажи мне серьезнео приложение...".

    AVK>У меня сейчас нет времени на что то более менее крупное, а мелкие примерчики на мои вопросы ответа не дадут.


    Да за время пока мы трепимся можно было бы что-нить написать и поделиться опытом.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:02
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    VD>>Покак что я особых недостатков не вижу.


    AVK>Плохо.


    Ооочень!

    AVK> Серебрянных пуль, как ты знаешь, не бывает. За повышенную гибкость и мощность надо платить. Вопрос в том чем.


    Ну, тогда если недостатков ненайдем, то прийдется завязать с Нэмерлом. Ведь "Серебрянных пуль, как ты знаешь, не бывает."

    AVK>Кого?


    Окружающих.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:02
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Кстати давным давно было обсуждение подобных возможностей для С++. Я там
    Автор: WolfHound
    Дата: 26.07.03
    предложил не точтобы совсем макросы Nemerle но что-то довольно похожее.

    WH>Хотя конечто все то что я там написал было импровизацией практически без продумывания.

    То-то и оно. Я бы сказал так "мысли в слух" sv. "научная разработка".

    Тебе там осталось сделать чуть-чуть изобретений. Изобрести квази-квотирование. Гигиеничность макросов. Рефлексию времени компиляции.

    В общем, ты обозначил требования, а в Нэмерле предложили реализацию. Причем работающую и очень неплохую.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:02
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Только мне почему то больше нравится решение, когда DSL узок, чисто декларативен и, желательно, в графическом или GUI представлении. Т.е. понимание и пользование его легко даже неспецу, контроль предельно жесткий. Создание DSL на базе большого и гибкого языка не кажется мне бесспорной идеей.


    DSL бывают разные. Бывают внешние к которым применимы твои рассуждения. А бывают внтуреннии. Внутренние предназначены для кларативизации труда программиста. Чтобы сделать код более простым и коротким. Допускать пользователя до кодирования все же не разумно. И тут макросы очень к стати.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:02
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Андрей Михалыч, я сейчас говорю не о написании кода, а о его прочтении. При написании как раз проблем нет — я сам контроллирую (хотя конечно и тут проблемы имеются) набор ключевых слов.


    Скачай Нэмереловские искходники. Зайди в каталог с исходниками и погляди.
    Удивишся, но код читается очень легко даже при том, что ты не изучал глубоко Нэмерл. Достаточно прочесть их курсы.

    По-моему, это говорит о высокой читаемости кода. Возоможно тут заслуга и их умений как программистов, но все же язык тут тоже не последнюю роль играет.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:02
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Реализовать собственный extension вместо DLINQ.


    Всего то? Теперь сравни это с заменой пары строк в макросе, а то и вообще дописыванием еще одного макроса.

    VD>>Заметь многие восприняли ЛИНК в штыки именно потму, что это довольно не универсальное и не естественное расширение языка. Если лы бы это было сделано на макрсоах, то вряд ли кто стал бы возмущаться. Ведь тогда решение было бы универсальным.


    AVK>Я все же продолжаю считать что за универсальность всегда надо платить.


    А за прямолинейность и негикость? В общем, это не аргумент.

    Я вот воспользовался foreach-ем в Нэмерле и ощутил только приемущества перед Шарповским аналогом. А ведь foreach в Нэмереле — это макрос.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:02
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>А что, можно? Сам же тут расписывал про глюки кодогенератора.


    Где? Ты что-то путашь.

    AVK>У меня практически нет таких задач, для которых его можно использовать. Поэтому для меня Nemerle в практическом плане пока не более чем концепция.


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

    VD>>Хм. Когда в 2001 ты взялся за C# и донет, то ты значит за паравозом не бежел?


    AVK>Нет, потому что дотнет львиную долю своих фич взял от джавы.


    А Нэмерл из C#, ML и Схемы. И что?

    AVK> Никаких новых парадигм по сравнению с последней он не вводил.


    А атрибуты?

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


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

    AVK>Я имел ввиду разработчик конкретных расширений не ломает синтаксис языка.


    Синтаксис у CTR свой. Это отдельный и довольно убогий движек текстуальных шаблонов.

    AVK>Это пока я как ты, все свои проекты пишу один. А вот как не один, то уже все не так просто.


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

    VD>> Если тебе нужен свой внутренинй DSL, то расширяй синтаксис.


    AVK>Вот только мне не нужен такой сложный и навороченный DSL.


    Какой сложный? И какой навороченный? Ты не забыл, что каждая команда вольна сама определять все что хочет?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 17.02.06 23:06
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Re[18]: Снова о Nemerle или профанация не пройдет :)
    Автор: VladD2
    Дата: 16.02.06


    Re[16]: Снова о Nemerle или профанация не пройдет :)
    Автор: Воронков Василий
    Дата: 16.02.06
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.02.06 23:13
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    VD>>Re[18]: Снова о Nemerle или профанация не пройдет :)
    Автор: VladD2
    Дата: 16.02.06


    ВВ>Re[16]: Снова о Nemerle или профанация не пройдет :)
    Автор: Воронков Василий
    Дата: 16.02.06


    Я же не тебе отвечал.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 18.02.06 00:57
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Какие у тебя вопросы?


    А ничего если я спрошу? (без тени скепсиса )
    Какие бенефеты ты лично видишь от использования Немерле при разработке бизнес-приложений?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 18.02.06 01:38
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Eclipse + Improve C# Plugin


    ИМХО эта комбинация с уж очень большим трудом тянет на IDE.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[3]: Снова о Nemerle или профанация не пройдет :)
    От: pavel_turbin  
    Дата: 18.02.06 05:56
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    _>>что-то вас языки программирования сильно беспокоят. Вот на Cobol-е и на еще программеры требуются, 1200+ в США:


    VD>И что ты ждешь? Бегом учить Кобол.


    а смысл гоняться за модой?! Мне на C++ очень хорошо.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 18.02.06 06:30
    Оценка:
    Здравствуйте, z00n, Вы писали:

    Z>Как вы понимаете, у нас тоже как-то так:

    Z>
    Z>alt-18 <command>
    Z>


    emacs?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 18.02.06 08:15
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

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


    Кстати совсем не исключено, что до релиза нацеленных на мэйнстрим языков, с которыми Nemerle в основном и будет конкурировать — C# 3.0 и возможно Fortress, в Nemerle появится более fine-grain контроль над синтаксическими расширениями. То, что сейчас есть для этого в Nemerle вполне хватает для нужд разработчиков языка и экспериментаторов, но для широкой публики вполне может появиться что-то более управляемое и интересное(типа JetBrains MPS или Camlp4 например).
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 09:22
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Скачай Нэмереловские искходники. Зайди в каталог с исходниками и погляди.

    VD>Удивишся, но код читается очень легко даже при том, что ты не изучал глубоко Нэмерл. Достаточно прочесть их курсы.

    Так там ничего стороннего не используется, только набор собственных макросов.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 09:22
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>> Серебрянных пуль, как ты знаешь, не бывает. За повышенную гибкость и мощность надо платить. Вопрос в том чем.


    VD>Ну, тогда если недостатков ненайдем, то прийдется завязать с Нэмерлом. Ведь "Серебрянных пуль, как ты знаешь, не бывает."


    Если недостатков не найдем, значит мы их пропустили, следовательно высокие риски сохраняются. Или ты все таки считаешь что серебраные пули есть?
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 09:22
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Классная аргументация. То есть проблема в том, что в С++ не удалось изменить синтаксис как надо?


    А как надо? Ты считаешь что каждый программист способен сделать грамотное изменение синтаксиса языка? ИМХО для этого нужна квалификация и объем работ, на голову больший, нежели разработка API.

    VD>В общем, это смахивает на попытки найти проблемы любой ценой.


    Влад, если ты будешь опять переходить на наезды как только кто то посмеет высказать мнение, не совпадающее с твоим, я буду игнорировать твои топики.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 09:22
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>А что, можно? Сам же тут расписывал про глюки кодогенератора.


    VD>Где? Ты что-то путашь.


    Где в коде с хеш-таблицей вылез никому не нужный Tuple.

    AVK>>У меня практически нет таких задач, для которых его можно использовать. Поэтому для меня Nemerle в практическом плане пока не более чем концепция.


    VD>Что-то не верится. Уверен, что в работе всегда появляются мелкие задачи которые нужно решить максимально быстро.


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

    VD>>>Хм. Когда в 2001 ты взялся за C# и донет, то ты значит за паравозом не бежел?


    AVK>>Нет, потому что дотнет львиную долю своих фич взял от джавы.


    VD>А Нэмерл из C#, ML и Схемы. И что?


    И то, что все товарищи в этом ряду, за исключением шарпа, мейнстримом не являются.

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


    VD>Можно поднять твои посты 2001-2002 годов и убедиться, что скепсиса подбного проявляемому сейчас от тебя слышно не было.


    Подними.

    AVK>>Я имел ввиду разработчик конкретных расширений не ломает синтаксис языка.


    VD>Синтаксис у CTR свой. Это отдельный и довольно убогий движек текстуальных шаблонов.


    Но он один. Его достаточно один раз изучить. Я не увижу в других программах другого синтаксиса.

    AVK>>Это пока я как ты, все свои проекты пишу один. А вот как не один, то уже все не так просто.


    VD>Дык в чем проблема то?


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

    AVK>>Вот только мне не нужен такой сложный и навороченный DSL.


    VD>Какой сложный? И какой навороченный?


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

    VD> Ты не забыл, что каждая команда вольна сама определять все что хочет?


    В том то и дело что не забыл.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 09:22
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    [демагогия поскипана]

    AVK>>Только вот пока не стал. Следовательно никто в этом мире не способен предсказать проблемы языков с изменяемым синтаксисом на тяжелых и долгих приложениях.


    VD>Стоп. Он не стал просто потму, что молод.


    Доказательств у тебя нет.

    VD>Зашибись. А чем же Nemerle тут от Шарпа то отличается? Точно так же привносит новое в уже готовую среду.


    Количество нового несопоставимо.

    AVK>>Знаешь чем мне нравится C# Team — они очень долго обсасывают каждое изменение в языке.


    VD>Знашь чем не они не нравятся? Они очень долго обсасывают каждое изменение.


    Я уже говорил — бег перед паравозом конечно завлекателен, но плохо совместим с коммерческой разработкой софта.

    VD>Ага. Самое надежное решение тут будет ничего не делать. Вон в С++ так и поступают. Промежутон между стандартами более 10 лет...


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

    AVK>>То есть ты сам пока не можешь с уверенностью сказать что это мегарулез без недостатков?


    VD>Не могу. Как не мог сказать этого в 2001 про C#.


    Ну а чего тогда ты от меня этого требуешь?

    VD>Ну, вот в языке все пока что выглядит очень гладно. ОО 1:1 как в C#. И вообще многе из него взято. Функциональщина взята из ML, т.е. тоже проверенное решение. Макросы из Схемы. Рантайм — дотнет. В итоге получается композиция проверенных решений.


    ...

    AVK>>Т.е. недостатков в языке ты не видишь?


    VD>Так чтобы бросались в глаза пока не вижу.


    Т.е. таки серебряная пуля?

    [демагогия поскипана]

    AVK>>Пока я задаю вопросы. Например — очевидно что язык, в котором ключевых слов много,


    VD>Много? А откуда ты это взял? Ключевых слов не больше чем в Шарпе.


    От того что их можно самостоятельно добавлять.

    AVK>> да еще и их набор может изменяться (в том числе и неявно)


    VD>Это как не явно?


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

    AVK>>Читай внимательнее — информации о практической применимости. Много ты знаешь мало мальски долгоживущих проектов на Nemerle окромя его самого?


    VD>А зачем же его самого то исключать? Прокт огромный и сложный.


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

    AVK>> С какими проблемами столнулись их (проектов) создатели? Что выгадали на практике, а не в теории?


    VD>Можно спросить у того же Vermicious Knid. Он вроде бы уже что-то пописал на нем.


    Что? Все что я слышал — какое то мелкое баловство.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 09:22
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>На самом деле твои предпосылки просто неверны. Структура программы — это просто реализация мыслей программиста. В идеале язык должен как можно точнее отражать понятия, которыми оперирует программист (а совсем не наоборот ).


    Вот только чтобы кто то другой прочел это нужно, чтобы все термины этот другой понимал. А вот если программа состоит наполовину из неизвестных терминов, то понять это чужому будет крайне сложно.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 18.02.06 09:39
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>То-то и оно. Я бы сказал так "мысли в слух" sv. "научная разработка".

    VD>Тебе там осталось сделать чуть-чуть изобретений. Изобрести квази-квотирование. Гигиеничность макросов. Рефлексию времени компиляции.
    Вобщето я и это изобрел... только сейчас сообщение найти не могу.

    VD>В общем, ты обозначил требования, а в Нэмерле предложили реализацию. Причем работающую и очень неплохую.

    Ну реализацией надо заниматься...
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 18.02.06 09:56
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Где в коде с хеш-таблицей вылез никому не нужный Tuple.

    Этот тупл устраняется элементарным анализом потока данных. Болие того ни к чему кроме незначительного замедления программы он не может привести в принципе. Так что назвать это серьезной проблемой я не могу.
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 11:10
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Так там ничего стороннего не используется, только набор собственных макросов.


    Дык, я в том числе и о макросах. Они тоже чисты как слеза.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 11:10
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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


    Знашь, то все же смешно. Тогда можно и не начинать их искать. Ведь если найдем, то ясно почему не надо заниматься этим языком. А ести не найдем, то скажем, что это еще хуже.

    В общем, даже не хочу обсуждать это.

    AVK>Или ты все таки считаешь что серебраные пули есть?


    Я вижу явное и существенное превосходство Нэмерла над C# и вижу ниличие в Нэмерле всего того что меня подкупало в C#.

    Является ли Нэмерел панацеей? А является ли ею C#? Нет? Ну, вот и Нэмерел — нет. Что в прочем не мешает ему рвать C# и все остальные языки как тузик грелку.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 11:10
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Вобщето я и это изобрел... только сейчас сообщение найти не могу.


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

    VD>>В общем, ты обозначил требования, а в Нэмерле предложили реализацию. Причем работающую и очень неплохую.

    WH>Ну реализацией надо заниматься...

    Гы. Так для нового, очень компактного языка это не так сложно. Хотя Нэмерл уже пару лет как существует, а все до релиза не добрался. А вот для С++ это очень не просто. ОпенС++ сдох на том, что не смок сделать просто полноценный парсер C++. Мне на парсер C# пришлось убить год с лишним (правда между делом в основном).

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

    Ты погляди на директорию nemerle-0.9.2.99.6088\macros. После изучения ее содержимого начинашь реально понимать всю мощь макросов и прозарливость авторов Нэмерла. Ведь даже операторы &&, +=, ++ и т.п. являются макросами! А о разных if-ах и говорить не приходится. В языке по сути есть только конструкция match. Остальное макросы. И ведь, при этом, хрен подкапашся к качеству и гибкости языка!
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 18.02.06 11:37
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Твои бы слова, да богу в уши. Только позволь тебе не поверить — у тебя тоже нет достаточных данных, чтобы утверждать подобное уверенно. Существующие реализации синтаксических макросов пока что этого не подтверждают. Возможно конечно, что в каждом конкретном случае проблема в чем то своем, но отрицать вероятность того, что проблемы есть и в исходной идее я не могу.


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

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

    Вот на таких размышлениях и основываются мои слова.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 18.02.06 12:17
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>А в чем проблема то? Берешь и пишешь сборку с этими макросам. Потом в отдельном файле пишешь using MyCoolMacroNamespace; и описываешь. Если не написать using MyCoolMacroNamespace; то этих макросов не будет.


    Сборку с реализацией макросов или сборку в которой макросы используются?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 14:25
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Где в коде с хеш-таблицей вылез никому не нужный Tuple.


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

    AVK>Я не могу рисковать из за мелких задач использованием сверхсырого языка.


    Снова наезды. Где ты увидил сверсырые языки? Еще раз напомню. Они свой компилятор полностью на себе поднимают.

    VD>>А Нэмерл из C#, ML и Схемы. И что?


    AVK>И то, что все товарищи в этом ряду, за исключением шарпа, мейнстримом не являются.


    В своей области они самый что ни на есть мэйнстрим. Просто функциональное программирование и макромы вообще не добрались до мэйнстрима. И не доберутся никогда если все идеи будут встречать в штыки.

    VD>>Можно поднять твои посты 2001-2002 годов и убедиться, что скепсиса подбного проявляемому сейчас от тебя слышно не было.


    AVK>Подними.


    ОК.

    Вот твои первые сообщения на нашем сайте:
    , 19749
    Автор: AndrewVK
    Дата: 03.01.02
    , 21957
    Автор: AndrewVK
    Дата: 15.01.02
    , 22759
    Автор: AndrewVK
    Дата: 18.01.02
    , 22891
    Автор: AndrewVK
    Дата: 19.01.02
    , 22921
    Автор: AndrewVK
    Дата: 20.01.02
    , 23062
    Автор: AndrewVK
    Дата: 21.01.02
    , 23064
    Автор: AndrewVK
    Дата: 21.01.02
    , 23477
    Автор: AndrewVK
    Дата: 22.01.02
    , 23479
    Автор: AndrewVK
    Дата: 22.01.02
    , 23481
    Автор: AndrewVK
    Дата: 22.01.02
    , 23482
    Автор: AndrewVK
    Дата: 22.01.02
    , 23483
    Автор: AndrewVK
    Дата: 22.01.02
    , 23536
    Автор: AndrewVK
    Дата: 23.01.02
    , 23537
    Автор: AndrewVK
    Дата: 23.01.02
    , 23539
    Автор: AndrewVK
    Дата: 23.01.02
    , 23872
    Автор: AndrewVK
    Дата: 24.01.02
    , 24179
    Автор: AndrewVK
    Дата: 25.01.02
    , 24180
    Автор: AndrewVK
    Дата: 25.01.02
    , 25202
    Автор: AndrewVK
    Дата: 29.01.02
    , 25599
    Автор: AndrewVK
    Дата: 31.01.02
    , 25602
    Автор: AndrewVK
    Дата: 31.01.02
    , 25603
    Автор: AndrewVK
    Дата: 31.01.02
    , 28288
    Автор: AndrewVK
    Дата: 12.02.02
    , 28497
    Автор: AndrewVK
    Дата: 13.02.02
    , 28521
    Автор: AndrewVK
    Дата: 13.02.02
    , 28559
    Автор: AndrewVK
    Дата: 13.02.02
    , 28561
    Автор: AndrewVK
    Дата: 13.02.02
    , 28884
    Автор: AndrewVK
    Дата: 14.02.02
    , 28888
    Автор: AndrewVK
    Дата: 14.02.02
    , 29088
    Автор: AndrewVK
    Дата: 15.02.02
    , 30252
    Автор: AndrewVK
    Дата: 20.02.02
    , 31780
    Автор: AndrewVK
    Дата: 26.02.02
    , 31852
    Автор: AndrewVK
    Дата: 27.02.02
    , 32176
    Автор: AndrewVK
    Дата: 28.02.02
    , 32193
    Автор: AndrewVK
    Дата: 28.02.02
    , 32195
    Автор: AndrewVK
    Дата: 28.02.02
    , 32196
    Автор: AndrewVK
    Дата: 28.02.02
    , 32295
    Автор: AndrewVK
    Дата: 28.02.02
    , 32296
    Автор: AndrewVK
    Дата: 28.02.02
    , 32303
    Автор: AndrewVK
    Дата: 28.02.02
    , 33757
    Автор: AndrewVK
    Дата: 07.03.02
    , 34476
    Автор: AndrewVK
    Дата: 11.03.02
    , 36167
    Автор: AndrewVK
    Дата: 16.03.02
    , 38048
    Автор: AndrewVK
    Дата: 22.03.02
    , 38522
    Автор: AndrewVK
    Дата: 25.03.02
    , 38529
    Автор: AndrewVK
    Дата: 25.03.02
    , 38536
    Автор: AndrewVK
    Дата: 25.03.02
    , 38538
    Автор: AndrewVK
    Дата: 25.03.02
    , 38753
    Автор: AndrewVK
    Дата: 25.03.02


    что-то не видно, что там сквозил бы скепсис по поводу судбты совсем молодого продукта. Жалоб на отсуствие продуктов написанных на дотнете тоже нет.
    А вот твой первый спор по поводу дотнета:
    Re[6]: Зачатки флейма ".Net vs. Java2" -- не выйдет!
    Автор: AndrewVK
    Дата: 25.03.02

    Какие-то разговоры про объмем библиотек... Но что-то про риски и т.п. ни гу-гу. Шарп тоже априори не рассмартивается как риск.

    VD>>Синтаксис у CTR свой. Это отдельный и довольно убогий движек текстуальных шаблонов.


    AVK>Но он один. Его достаточно один раз изучить.


    Здорово. А сколько раз надо изучать синтаксис макросов Нэмерла?

    AVK>Я не увижу в других программах другого синтаксиса.


    Ага как же? Ты видишь метаязык со всеми вытекающими.

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


    А наличие неизвесных функций в коде тебя не смущает?

    AVK>Сложный и навороченный. Мне не нужно чтобы его использующие сделали что то, отличное от того что я хочу. Если мне нужно DSL, которое содержит только точки и тире, значит ничего другого там нельзя использовать в принципе.


    То каким будет встроенный ДСЛ ты определяешь сам. Сколько раз это нужно повторять? Никто не сможет вставить в твой язык ничто кроме точек и тере если ты этого не позволишь.

    VD>> Ты не забыл, что каждая команда вольна сама определять все что хочет?


    AVK>В том то и дело что не забыл.


    Ну, а тогда в чем проблема? Ты как главный в команде определяшь какие ДСЛ-и, расширения языки, и просто макросы может применять ваша команда. Это выражается в наборе допустимых макро-модулей (сборок). Остальные макро-сборки поключать запрещаешь. Если кто-то из подчиненных хочет зпаолучить новую фичу он приходит к тебе и вы обсуждаете нужна ли она и если нужа делаете.

    В С++ макросы можно сувать на право и на лево. Причем макросы действительно опасны, но тем неменее анархии не начинается. А тут все в шоколаде и под контролем.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 14:25
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>А ничего если я спрошу? (без тени скепсиса )

    ВВ>Какие бенефеты ты лично видишь от использования Немерле при разработке бизнес-приложений?

    Тебе частности или достаточно сказать, что ты сможешь просто писать более краткий и выражительный код?

    Из совсем простых примеров. Как по-твоему что читабелнее:
    const int Count = 10000000;

    или
    def Count = 10_000_000;

    ?

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

    При этом ты можешь программировать на нем как на слегка измененном C#.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 14:25
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Ну и очередная мечта — имхо на Nemerle получилось бы написать неплохую O/R-Mapping tool... Это я говорю как человек, измученный NHibernate Только вот где ж стока времени-то валяется...


    Дык если подсадить на Нэмерел достаточное количество народа, то рано или поздно NHibernate будет написан на Нэемерле и тогда даже будет оправдана первая буква в слове NHibernate.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 14:25
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Вот что-нибудь такое.


    Да будет обязательно разное. Как сейчас есть грязный код без намеков на выравнивание и декомпозицию.
    Вопрос только в том, будет ли это проблемой.
    В С++ к проблемам подталкивает непродуманный дизайн отдельных фич языка. Тут же дизайн продуман и проблемы С++ учтены все как одна. Конечно возможно вылезут новые проблемы. В C# тоже пытались избавиться от всех проблем С++, но ведь умудрились же сделать другие? Например, повторить синтаксис деструктрора С++ для финалайзера и сделать автоматический вызов финалайзера базового класса — это явный просчет дизайнеров языка. К щастью, он не приводит к таким проблемам как в С++. Так вот такие же просчеты наверняка есть и в Нэмереле. Но о них мы узнаем через много лет если будем использовать этот язык достаточно плотно. А сейчас же я вижу невероятно продуманный дизайн языка. Вот этого как раз и не хватает ни в С++, ни в C#. Хотя конечно продуманность дизайна C# намного выше чем С++.

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


    Замем, что атрибуты — это только расширение метаинфрмации. А чтобы метаинформация начала что-то делать нужно создать код читающий ее и делающий что-то. Так вот макросы Нэмерла как раз и позволяют создать такой код. Причем создать в компайлтайме и создать очень просто!
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 14:25
    Оценка:
    Здравствуйте, eao197, Вы писали:

    WH>>А в чем проблема то? Берешь и пишешь сборку с этими макросам. Потом в отдельном файле пишешь using MyCoolMacroNamespace; и описываешь. Если не написать using MyCoolMacroNamespace; то этих макросов не будет.


    E>Сборку с реализацией макросов или сборку в которой макросы используются?


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

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

    Кроче, ждите. Через пару часов будет вам первые впечатления.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 14:25
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>>>Только вот пока не стал. Следовательно никто в этом мире не способен предсказать проблемы языков с изменяемым синтаксисом на тяжелых и долгих приложениях.


    VD>>Стоп. Он не стал просто потму, что молод.


    AVK>Доказательств у тебя нет.


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

    VD>>Зашибись. А чем же Nemerle тут от Шарпа то отличается? Точно так же привносит новое в уже готовую среду.


    AVK>Количество нового несопоставимо.


    Очень даже сопоставимо. Ты можешь писать на Нэмерле как на C#. Единственно, что нельзя изменить — это декларацию типов за переменными. Но думаю, ты с этим легко свыкнешся.

    AVK>Я уже говорил — бег перед паравозом конечно завлекателен, но плохо совместим с коммерческой разработкой софта.


    М сейчас говорим о новом языке который будет использоваться в будущих разработках. C# тоже был новым языком. И ты тоже бежал в переди паравоза когда использовал его в 2001.

    VD>>Ага. Самое надежное решение тут будет ничего не делать. Вон в С++ так и поступают. Промежутон между стандартами более 10 лет...


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


    Тогда ты совершил ошибку и бежишь впереди паравоза. Надо было писать на С++.

    AVK>>>Т.е. недостатков в языке ты не видишь?


    VD>>Так чтобы бросались в глаза пока не вижу.


    AVK>Т.е. таки серебряная пуля?


    AVK>[демагогия поскипана]


    Вот эти две последние строчки очень смешно выглядят. Не то скипал.
    Демагогия — это твои слова про серебрянную пулю.

    Давай от обратного.
    Ты видишь недостатки в C#?
    Нет? Тогда это серебрянная пуля?
    Есть? Но тогда те же недостатки (за редким исключением) ты найдешь и в Нэмерле.

    AVK>От того что их можно самостоятельно добавлять.


    Можно добавить и есть разнве вещи. Не так ли?
    В Шарпе ты тоже можешь добавить глючную библиотеку и получить проблемы. И что же ты его не бросаешь на этом состоянии? Звучит абсурдно? Вот и мне твои слова кажутся абсурдными.

    AVK>Подключаю библиотеку, а там часть макросов документировать забыли.


    Они как код. Они в пространствах имен. Я уже устал повторять, что раницы с кодом тут нет. Ты точно так же в C# можешь подключить модуль переопределяющий функцию которая раньше работала. Даже более того. Если у тебя пересекутся макросы Нэмерла, то тебе выдадут ошибку. А в C# можно создать ситуацию кодга одна функция просто заменит другую и все! Примеры приводились не однократно. Но на практике таких проблем нет.

    AVK>>>Читай внимательнее — информации о практической применимости. Много ты знаешь мало мальски долгоживущих проектов на Nemerle окромя его самого?


    VD>>А зачем же его самого то исключать? Прокт огромный и сложный.


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


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

    VD>>Можно спросить у того же Vermicious Knid. Он вроде бы уже что-то пописал на нем.


    AVK>Что? Все что я слышал — какое то мелкое баловство.


    Твою работу тможе можно назвать мелким балоством если очень захотить. Не стоит за глаза осконрблять человека. Лучше спросим у него.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[4]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 14:25
    Оценка:
    Здравствуйте, pavel_turbin, Вы писали:

    _>а смысл гоняться за модой?! Мне на C++ очень хорошо.


    А какой смысл было учить С++ когда тебе было бы куда лучше на Коболе?

    Тут у Вас, батенька, явная не увязочка. (с)
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 18:08
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Кстати, почитал их макросы поставляемые с компилятором... Оказывается C# содран только на уровне описания классов. Все statments и expressions в основном присуствуют в виде макросов. Я оифигел когда увидел, что даже операторы &&, ++, += и т.п., в общем, осная куча, реализованы в качестве макросов!


    VD>Макросами реализованы и буквально все операторы языка. Даже if/else и то макрос.


    Я не понимаю чем тут восторгаться. Ты Форт выдел? Там то же самое, даже еще круче. И это его и убило.

    VD>Это смешно, но во всем языке есть только пара операторов


    Это, увы, не смешно.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 18:08
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Кстати, использование Reflection.Emit приводит, например, к таким "приятным" мелочам, как создание инстанса только через фабрику.


    С чего бы это?

    O>Необосновано всё это. Вот возьму я шарп и напишу библиотеку, в которой все классы/методы будут начинаться с подчёркивания и включать как можно меньше букв.


    Неужели ты не видишь разницы между библиотеками и синтаксисом языка?

    O>Ну а возможность создать свой синтаксис имхо тоже может пригодиться. Опять же — для уменьшения объёма конечного кода. LINQ же тебя не пугает?


    LINQ не позволяет менять синтаксис.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 18:08
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>Или ты все таки считаешь что серебраные пули есть?


    VD>Я вижу явное и существенное превосходство Нэмерла над C# и вижу ниличие в Нэмерле всего того что меня подкупало в C#.


    А при чем тут C#?
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 18:08
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Серебрянных пуль нет, но более мощные языки существуют.


    Существуют. Но за все надо платить. Мне так до сих пор никто и не сказал — как читать чужой код, учитывая что менять можно все — ключевые слова, операторы. Да еще вон и python-style. Не получится так что каждая команда будет изобретать свой язык?
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 18:08
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    AVK>>Где в коде с хеш-таблицей вылез никому не нужный Tuple.

    WH>Этот тупл устраняется элементарным анализом потока данных.

    Но ведь не устранили? Следовательно генератор кода еще сырой. Андрюш, пойми, в реальных проектах требования к баговатости языка крайне высоки. Ты же прекрасно помнишь проблемы при переходе на 2 фреймворк, при том что он был релизный и МС тестировал его не по децки.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 18:08
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>Не идиотизм. Просто инертность, упрямство и косность мышления.


    Да да. Одни мы тут такие неимоверно талантливые. Извини, но я в повальные недостатки не верю, не бывает так чтобы все кругом в дерьме, один я в белом фраке.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 18:08
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>Если в программе нет никаких неизвестных терминов,


    А если есть?

    Д>Реальный код, который скрывается под неизвестными терминами, можно просто посмотреть рефлектором.


    Вот вот — чтобы разобраться в исходниках нужно изучать рефлектором код макросов.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: agos Россия http://trtrmitya.wordpress.com
    Дата: 18.02.06 18:35
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>В общем, пока всё выглядит в радужном свете. Фактически, дело осталось только за поддержкой IDE. Влад правильно сказал, в нотепаде сегодня такие мегафичи нафик никому не нужны.

    Видимо команда Nemerle так же считает
    http://nemerle.org/svn/vs-plugin
    правда там ещё очень мало, но начало положено
    ... << RSDN@Home 1.2.0 alpha rev. 634>>
    Не переходите улицу на тот свет..
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 19:00
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Какие тебе еще нужны доказательства?


    Убедительные.

    VD> Сам же говоришь, что язык еще не зарелизен.


    И это его недостаток, а отнюдь не достоинство.

    AVK>>Количество нового несопоставимо.


    VD>Очень даже сопоставимо.


    Т.е. Nemerle по совокупности фич отличается от шарпа не больше чем шарп от Java? Браво!

    AVK>>Я уже говорил — бег перед паравозом конечно завлекателен, но плохо совместим с коммерческой разработкой софта.


    VD>М сейчас говорим о новом языке который будет использоваться в будущих разработках. C# тоже был новым языком. И ты тоже бежал в переди паравоза когда использовал его в 2001.


    Я тебе уже объяснил, что ситуация совсем не аналогичная.

    AVK>>Т.е. таки серебряная пуля?


    AVK>>[демагогия поскипана]


    VD>Вот эти две последние строчки очень смешно выглядят. Не то скипал.


    Они друг с другом не связаны.

    VD>Демагогия — это твои слова про серебрянную пулю.


    Обоснуй.

    VD>Давай от обратного.

    VD>Ты видишь недостатки в C#?

    Много разных.

    VD>Есть? Но тогда те же недостатки (за редким исключением) ты найдешь и в Нэмерле.


    Вряд ли. Шарповские недостатки скорее всего отсутствуют.

    VD>Можно добавить и есть разнве вещи. Не так ли?


    Нет, не так. Такое ощущение, что ты все время забываешь, что код приходится не только пичать, но еще и читать. Так вот — невозможно управлять количеством макросов в чужом коде. Это означает буквально, что каждая библиотека будет способна построить свой язык. Как язык можно перекроить так, что мама не узнает, ты это прекрасно продемонстрировал. А если там две библиотеки? Три? Представляешь какой атас может получится от их взаимной комбинации?
    Опять же, Евгений совершенно прав — указатели в С++ тоже напрямую можно не использовать, однако вред от их присутствия в языке это не умаляет.

    VD>В Шарпе ты тоже можешь добавить глючную библиотеку и получить проблемы.


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

    AVK>>Подключаю библиотеку, а там часть макросов документировать забыли.


    VD>Они как код. Они в пространствах имен. Я уже устал повторять, что раницы с кодом тут нет.


    А если разницы нет, то зачем платить больше?

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


    VD>А кто заинтересован?


    Независимые экспериментаторы.

    AVK>>Что? Все что я слышал — какое то мелкое баловство.


    VD>Твою работу тможе можно назвать мелким балоством если очень захотить. Не стоит за глаза осконрблять человека.


    Я не оскорбляю. Он сам писал что то про мелкие утилиты, которые использует только он сам.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 20:39
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>>>Или ты все таки считаешь что серебраные пули есть?


    VD>>Я вижу явное и существенное превосходство Нэмерла над C# и вижу ниличие в Нэмерле всего того что меня подкупало в C#.


    AVK>А при чем тут C#?


    Как ты там говоришь?
    Слив засчитан.

    Я тебе задал вопрос:

    Является ли Нэмерел панацеей? А является ли ею C#? Нет? Ну, вот и Нэмерел — нет. Что в прочем не мешает ему рвать C# и все остальные языки как тузик грелку.

    Ответь на него, и вопросов вроде "А при чем тут C#?" не возникнет.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 20:39
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    [демагогия поскипана, за нее]

    В общем, это обсуждение прератилось в фарс. Аргументов я уже давно не слышу кроме "как бы чего не вышло".

    Будут другие можно будет обсудить. А пока давай завяжем.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 20:39
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Я не оскорбляю. Он сам писал что то про мелкие утилиты, которые использует только он сам.


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

    Дальнейшее обсуждение будет мененуемо перехдить на личности, так как никакх технических аргументов нет. Так что предлагаю закрыть тему. Вернемся к ней позже.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 20:39
    Оценка:
    Здравствуйте, agos, Вы писали:

    A>Видимо команда Nemerle так же считает

    A>http://nemerle.org/svn/vs-plugin
    A>правда там ещё очень мало, но начало положено

    Единственное, что смущеет, так это то, что все файлы на C#.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 20:39
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Существуют. Но за все надо платить. Мне так до сих пор никто и не сказал — как читать чужой код, учитывая что менять можно все — ключевые слова, операторы. Да еще вон и python-style. Не получится так что каждая команда будет изобретать свой язык?


    Ты можешь вообще ничего не менять. То что сделано разработчиками Нэмерла уже уделывает C# почти по всем параметрам. Запрети использовать все макромодули крое стандатрых и получишь C# 4.0 еже сегодня. А когда наберешся смелости, то потихоничку сможешь приобжиться и к миру макросов. Ну, а не наберешся — все равно ничего не потиряшь по сравнению с C#.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 20:43
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Но ведь не устранили? Следовательно генератор кода еще сырой.


    Вывод замечательный. А если это глюк рефлектора?
    А есть ли гарантия, что таких же проблем нет в генераторе кода C#? Кстати, точно совершенно есть. Буквально недавно ведь обсуждали проблему с неверной генерацией кода для class constrains.

    AVK>Андрюш, пойми, в реальных проектах требования к баговатости языка крайне высоки. Ты же прекрасно помнишь проблемы при переходе на 2 фреймворк, при том что он был релизный и МС тестировал его не по децки.


    Все зависит от того насколько ты перестраховывашся. Если ты дотягивашь проект до релиза ни разу не попробовав перевести его на бэту. То конечно огребешь проблем. А если нет, то эксперементируя с бэтами ты выявишь несовместимые места в своем коде и сможешь зараниее их устранить. У меня переход R#-па прошел без проблем. По крайней мере не сидел по 2 недели.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: agos Россия http://trtrmitya.wordpress.com
    Дата: 18.02.06 20:52
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Единственное, что смущеет, так это то, что все файлы на C#.

    Они только начали, думаю проба пера с использование новых возможностей из VS SDK.
    Наверное потом переделают.
    Судя по истории они только 12-го начали
    ... << RSDN@Home 1.2.0 alpha rev. 634>>
    Не переходите улицу на тот свет..
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 20:57
    Оценка:
    Здравствуйте, agos, Вы писали:

    A>Они только начали, думаю проба пера с использование новых возможностей из VS SDK.

    A>Наверное потом переделают.
    Да ну. Это довольно извращенческий подход — сделать комплит на языке с комплитом, чтобы потом используя этот комплит переписать сделанное на более мощьном языке.
    A>Судя по истории они только 12-го начали
    Вряд ли. Слишком много наколбасили.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 21:00
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Ты можешь вообще ничего не менять.


    Опять я. При чем тут я? Влад, оглянись — 99.(9)% кода написано не мной и не тобой.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 21:00
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Вывод замечательный. А если это глюк рефлектора?


    Ты в это веришь?

    VD>А есть ли гарантия, что таких же проблем нет в генераторе кода C#?


    В определенной степени да.

    VD>Все зависит от того насколько ты перестраховывашся.


    При чем тут перестраховываешься? Это факт — при переходе на 2 фреймворк, который долго и упорно отлаживали, были проблемы из-за его багов, причем весьма серьезные.

    VD> Если ты дотягивашь проект до релиза ни разу не попробовав перевести его на бэту. То конечно огребешь проблем. А если нет, то эксперементируя с бэтами ты выявишь несовместимые места в своем коде и сможешь зараниее их устранить. У меня переход R#-па прошел без проблем. По крайней мере не сидел по 2 недели.


    Потому что твои R# несопоставимо меньше и практически не завязан на окружающий мир.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 18.02.06 21:01
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Плохо. Серебрянных пуль, как ты знаешь, не бывает. За повышенную гибкость и мощность надо платить. Вопрос в том чем.


    Уже заплачено. Многими человеко-годами. Возможно даже многими человеко-веками.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 21:10
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Опять я. При чем тут я? Влад, оглянись — 99.(9)% кода написано не мной и не тобой.


    Да какая разница кого под тобой считать?
    Вася Пупкин устроит?

    Библиотеки ты будешь использовать такие же как и раньше, так что как они написаны тебя не трогает.
    А код разрабатываемый в твоей (моей, Васи Пупкина, ...) команде может иметь любые ограничения.
    Это же ведь не С++ в котором хрен проконтролируешь, что за макросы в коде есть? Тут макросы могут появиться только если ты сам этого захочешь. И увидить их элементарно! Они в списке ссылок видны.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 21:10
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    VD>>Вывод замечательный. А если это глюк рефлектора?


    AVK>Ты в это веришь?


    Это не вопрос веры.

    VD>>А есть ли гарантия, что таких же проблем нет в генераторе кода C#?


    AVK>В определенной степени да.


    А как же факты? Фак в том, что фидбэк забит глюками в компиляторе C#, но ты что-то это игнорируешь. Как же производитель солидный. Ему можно.

    AVK>Потому что твои R# несопоставимо меньше и практически не завязан на окружающий мир.


    Да очень даже он сапостовим. А внешний мир к дотнету отношения не имеет. Он так и останется внешним миром. Тут дело не в том что и кто, а вто "как". Повторяться не буду. Мысль я выразил ясно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 21:18
    Оценка:
    Здравствуйте, agos, Вы писали:

    A>Они только начали, думаю проба пера с использование новых возможностей из VS SDK.

    A>Наверное потом переделают.
    A>Судя по истории они только 12-го начали

    Зря они не сделали плагин открытым проектом. Если они никогда до этого плагины к VS2005 не писали им будет очень тяжко.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 21:23
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>>>Вывод замечательный. А если это глюк рефлектора?


    AVK>>Ты в это веришь?


    VD>Это не вопрос веры.


    Тем не менее, зная устройство Рефлектора, я практически уверен что это не его глюк. Можешь проглядеть IL и убедиться.

    VD>>>А есть ли гарантия, что таких же проблем нет в генераторе кода C#?


    AVK>>В определенной степени да.


    VD>А как же факты? Фак в том, что фидбэк забит глюками в компиляторе C#, но ты что-то это игнорируешь.


    Фидбек может и забит, но я пока ни с одним багом компилятора не столкнулся.

    AVK>>Потому что твои R# несопоставимо меньше и практически не завязан на окружающий мир.


    VD>Да очень даже он сапостовим.


    Ну откуда ты можешь знать? Ну ты бы немножко подумал — не может быть сопоставим проект, который несколько лет писала full-time команда не последних программистов сопоставима с проектом, который писал лично ты в свободное время.

    VD> А внешний мир к дотнету отношения не имеет.


    Агащасблин. И БД сервера это миф. И сеть никому не нужна. И интероп придумали враги. А уж СОМ, так его точно нет, это ж фантастика.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 21:30
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Зря они не сделали плагин открытым проектом. Если они никогда до этого плагины к VS2005 не писали им будет очень тяжко.


    Они и есть отарытый вроде.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 21:30
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Фидбек может и забит, но я пока ни с одним багом компилятора не столкнулся.


    Ну, так пойди почитай фидбэк. А то я вот уже не раз сталкивался.

    VD>> А внешний мир к дотнету отношения не имеет.


    AVK>Агащасблин. И БД сервера это миф. И сеть никому не нужна. И интероп придумали враги. А уж СОМ, так его точно нет, это ж фантастика.


    Ни, что из перечисленного во втором фрэймворке не изменилось.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 21:49
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Они и есть отарытый вроде.


    Я в списке Open projects его не обнаружил. Из относящегося к нему я заметил только комплит.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 22:05
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Я в списке Open projects его не обнаружил. Из относящегося к нему я заметил только комплит.


    А что кроме комплита еще делается?
    Он и делается. И делается как часть основного проекта. А сам проект открытый. Исходники все доступны.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.02.06 22:05
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>ADO.NET изменился, именно с ним мы поймали 2 баги. В интеропе много изменений. В СОМ-интеропе были проблемы, пришлось код править.


    Думаю, что вы просто нали свои старые ошибки. Фрэймворк обратно совместим.

    AVK> Одно из изменений — теперь, при публикации .NET класса публикуются все его базовые типы. У нас базовые типы были не ComVisible — получили глюки и исключения.


    За публикацию в КОМ-е классов, а не интерфейсов нужно вообще было тому кто этим занимался шею намылить.

    В общем, если бы пробовали перейти еще на бэттах, то к релизу проблем бы не осталось. Все именно от того, что начали заниматься проблемой слишком поздно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 23:44
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>ADO.NET изменился, именно с ним мы поймали 2 баги. В интеропе много изменений. В СОМ-интеропе были проблемы, пришлось код править.


    VD>Думаю, что вы просто нали свои старые ошибки. Фрэймворк обратно совместим.


    Обе баги признаны МС. Для первой уже выпущен хотфикс.

    AVK>> Одно из изменений — теперь, при публикации .NET класса публикуются все его базовые типы. У нас базовые типы были не ComVisible — получили глюки и исключения.


    VD>За публикацию в КОМ-е классов, а не интерфейсов нужно вообще было тому кто этим занимался шею намылить.


    Это требование студии.

    VD>В общем, если бы пробовали перейти еще на бэттах, то к релизу проблем бы не осталось. Все именно от того, что начали заниматься проблемой слишком поздно.


    Какая разница когда время терять? Что с бетами, что с релизом. Только с бетами ты геморой почуствовал даже на своем R#. А на реальном проекте мы бы просто зашились по билдам скакать.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 18.02.06 23:44
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>Я в списке Open projects его не обнаружил. Из относящегося к нему я заметил только комплит.


    VD>А что кроме комплита еще делается?


    Плагин к студии.

    VD>Он и делается.


    Нет. В репозитории лежат исходники пакета.

    VD> И делается как часть основного проекта. А сам проект открытый. Исходники все доступны.


    Я имел ввиду не то, что исходники доступны, а то, что его мог бы править кто то кроме них самих. Ты думаешь почему там *.cs? Потому что ребята явно ни разу этого не делали и пользуются семплами и вспомогательным кодом от МС, который, разумеется, на шарпе. Только вот МС, мерзавцы, не предоставили стандартную реализацию проекта, поэтому они там зашьются с пакетом ковыряться, особенно по неопытности.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 19.02.06 05:51
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    E>>Сборку с реализацией макросов или сборку в которой макросы используются?


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


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


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: agos Россия http://trtrmitya.wordpress.com
    Дата: 19.02.06 07:11
    Оценка:
    Здравствуйте, agos, Вы писали:

    http://nemerle.org/Editors#Visual_Studio_2005_VSIP_package
    ... << RSDN@Home 1.2.0 alpha rev. 634>>
    Не переходите улицу на тот свет..
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: agos Россия http://trtrmitya.wordpress.com
    Дата: 19.02.06 07:13
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Да ну. Это довольно извращенческий подход — сделать комплит на языке с комплитом, чтобы потом используя этот комплит переписать сделанное на более мощьном языке.

    А где там комплит? Чего-то его не вижу..

    A>>Судя по истории они только 12-го начали

    VD> Вряд ли. Слишком много наколбасили.
    Да и наколбасили совсем немного
    самый большой файл — TokenProcessor.cs — 13.1 кб
    остальные 10 и меньше, и самих файлов мало
    ... << RSDN@Home 1.2.0 alpha rev. 634>>
    Не переходите улицу на тот свет..
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 07:23
    Оценка:
    Здравствуйте, eao197, Вы писали:

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


    E>Здесь что всеобщий тупизм происходит?


    Ответить на этот вопрос я могу таким красным модераторскым предупреждением. Например,

    Бан на 300 лет за неуставные отношения в особо крупных размерах.



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


    Ты и сам знаешь ответ на этот вопрос. Это будет означать, что тебе крупно не повезло и надо выбросить одну из используемых библиотек. А лучше обе. Та же проблема существует и в других языках. В более современных она решается явным указанием пространства имён. В устаревших не решается никак.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 19.02.06 08:04
    Оценка:
    Здравствуйте, IT, Вы писали:

    E>>Защищаю потому, что заинтересован в его существовании и привлечении в C++ новых толковых людей (диктуется предыдущим пунктом). А так же тем, что наезды на C++ какие-то... оголтелые, что ли.


    IT>Оголтелый означает несдержанный, низкий, крикливый. Ты наверное хотел сказать безосновательный?


    Нет, осований для критики C++ более чем достаточно. Просто сейчас, имхо, слишком часто критикой C++ занимаются те, что либо ушел с C++ на другой язык, либо собирается. И выглядит это не красиво.

    IT>Игрушки — это точно, только с другим знаком. Твоя проблема с main (описываемая тобой несколькими постами выше) просто не может случится в Nemerle. Даже в C++ она надумана. Во-первых, тому кто додумался до такого бреда место на http://www.thedailywtf.com/. А во-вторых, достаточно одной строчки #undef после #include чтобы эту проблему решить.


    Не решилась. Я пробовал. Слишком многими путями этот злополучный ace/OS_main.h в прикладной код подключался (не напрямую).
    Оказалось гораздо проще сменить имя пространства имен.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re: Снова о Nemerle или профанация не пройдет :)
    От: agos Россия http://trtrmitya.wordpress.com
    Дата: 19.02.06 09:26
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>3. MS купит команду Nemerle и конкуренция будут происходить в самой MS.

    А кому принадлежат права на разработки в рамках MS Research?
    Если MS, то и покупать ничего не надо
    http://research.microsoft.com/programs/europe/rotor/2004Projects.aspx
    Хотя может MS просто им денег дала, а права у них же и остаются.
    ... << RSDN@Home 1.2.0 alpha rev. 634>>
    Не переходите улицу на тот свет..
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 13:21
    Оценка:
    Здравствуйте, agos, Вы писали:

    A>А где там комплит? Чего-то его не вижу..


    Стоп, а на что ты только что дал ссылку?

    A>самый большой файл — TokenProcessor.cs — 13.1 кб

    A>остальные 10 и меньше, и самих файлов мало

    Все равно много.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 13:21
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    VD>>А что кроме комплита еще делается?

    AVK>Плагин к студии.

    Это все равно, что ничего не сказать.

    VD>>Он и делается.


    AVK>Нет. В репозитории лежат исходники пакета.


    Ну, а пакет то что делает?

    VD>> И делается как часть основного проекта. А сам проект открытый. Исходники все доступны.


    AVK>Я имел ввиду не то, что исходники доступны, а то, что его мог бы править кто то кроме них самих.


    Ты вот это http://nemerle.org/Open_projects читал?

    AVK> Ты думаешь почему там *.cs? Потому что ребята явно ни разу этого не делали и пользуются семплами и вспомогательным кодом от МС, который, разумеется, на шарпе.


    Дык у них конвертер с Шарпа есть. Правда основан он на кривом парсере взятом с АНТЛР-овского сайта. Но процентов 85 кода он конвретирует.

    Будет время сделаю полноценный конвертер на базе моего парсера.

    AVK> Только вот МС, мерзавцы, не предоставили стандартную реализацию проекта, поэтому они там зашьются с пакетом ковыряться, особенно по неопытности.


    Недеюсь найдутся добрые и знающие люди которые им помогут. По крайней мере на сегодня я бы оценил востребованность комплита как наиболее важную вещь. Сцинтила для больших проктов не пригодна.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 13:21
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Обе баги признаны МС. Для первой уже выпущен хотфикс.


    Ладно. Без разницы какие там у вас были трудности с переходом на другую версию фрэймтворка.
    Главное, что этот опыт не имеет никакого отношения с испльзованием другого языка.
    Ты ведь не будель переводить на другой язык имеющийся код? Фрэймворк будет тот же.

    AVK>Какая разница когда время терять? Что с бетами, что с релизом. Только с бетами ты геморой почуствовал даже на своем R#. А на реальном проекте мы бы просто зашились по билдам скакать.


    Тут ты не прав. Если бы вы пробовали перейти еще на бэтах. То к релизу большинства проблем просто не было бы. И вы бы не сделали кучи ошибок, так как уже знали бы о проблемах.

    Ладно, не важно это все.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 13:21
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Я спрашиваю, что будет если в прикладной сборке, в одном файле, в одной области видимости, мне потребуется использовать два изменяющих синтаксис макроса из разных сборок, но эти макросы конфликтуют между собой?


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

    Кстати, без разницы изменен синтаксис в макросах или нет. Просто для макросов без изменения синтаксиса возможно явное указание пространства имен.

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


    Ну, а что просходит если у тебя появлюятся конфликтующие по имена функции?
    Будель точно так же разрешать конфликт тем или иным способа.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: agos Россия http://trtrmitya.wordpress.com
    Дата: 19.02.06 13:35
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    A>>А где там комплит? Чего-то его не вижу..

    VD>Стоп, а на что ты только что дал ссылку?
    Дал на разрабатываемый плагин, но из твоих слов подумал, что ты там какой-то комплит нашел, я его там не нашел. проехали.
    ... << RSDN@Home 1.2.0 alpha rev. 634>>
    Не переходите улицу на тот свет..
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 14:26
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>В общем, цель всего этого дела была понят для себя, возможны ли подобные проблемы в Nemerle. Оказалось, что возможны. Все, вопросов больше не имею.


    Я вот одного не пойму. О каких именно проблемах ты говоришь? Ты можешь их хотя бы сформулировать или это всё игра на публику?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 14:30
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>Нет. В репозитории лежат исходники пакета.


    VD>Ну, а пакет то что делает?


    Пока что только поддерживает структуру проекта.

    AVK>>Я имел ввиду не то, что исходники доступны, а то, что его мог бы править кто то кроме них самих.


    VD>Ты вот это http://nemerle.org/Open_projects читал?


    Читал. Ни слова про плагин.

    VD>Недеюсь найдутся добрые и знающие люди которые им помогут.


    Так в том то и дело, что пока они сами пытаются.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 14:30
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Тут ты не прав. Если бы вы пробовали перейти еще на бэтах.


    Пробовали.

    VD> То к релизу большинства проблем просто не было бы.


    Однако вот вылезли.

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


    Каких ошибок? Мы никаких ошибок не сделали.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 14:30
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>А run-time генерация сейчас используется всё шире (даже тем же AVK), т.к. это верный способ добиться максимального уровня декларативности и возложить основную часть работы на генератор, который множество раз сделает всё так, как один раз в него заложил разработчик.


    Я тебе даже больше скажу — AVK довольно широко использует и compile-time генерацию кода, можно сказать собаку на этом съел, потому и так настороженно относится к попыткам встраивать это в язык.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 14:36
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Я тебе даже больше скажу — AVK довольно широко использует и compile-time генерацию кода, можно сказать собаку на этом съел, потому и так настороженно относится к попыткам встраивать это в язык.


    compile-time или precompile-time?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 14:42
    Оценка:
    Здравствуйте, IT, Вы писали:

    AVK>>Я тебе даже больше скажу — AVK довольно широко использует и compile-time генерацию кода, можно сказать собаку на этом съел, потому и так настороженно относится к попыткам встраивать это в язык.


    IT>compile-time или precompile-time?


    precompile-time. Это не меняет никак эффект от создания собственных моделей под каждую задачу.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 14:51
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>precompile-time. Это не меняет никак эффект от создания собственных моделей под каждую задачу.


    Это всё меняет кардинально. precompile-time без partial классов вообще штука слабоприменимая. Я в своё время от датасетов отказался в том числе и из-за того, что их нельзя было расширять. Да и с partial классами у precompile-time генерации проблем хватает. А вот compile-time — практически идеальное решение, но пока труднореализуемое.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 14:55
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>compile-time или precompile-time?


    Они исползуют генерацию кода на XSLT из XML-модели.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 15:07
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Они исползуют генерацию кода на XSLT из XML-модели.


    Понятно. Лучше чем ничего, но проблем своих хватает.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 15:20
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Понятно. Лучше чем ничего, но проблем своих хватает.


    Ага. Главные проблемы:
    1. Отсуствие возможности связи с компилятором.
    2. Плохо читаемый код трансформации.
    3. Пригодность только для внешних DSL-ей на сонове синтаксиса XML.

    Но по сравнению с ничем...
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 15:42
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Ага. Главные проблемы:

    VD>1. Отсуствие возможности связи с компилятором.
    VD>2. Плохо читаемый код трансформации.
    VD>3. Пригодность только для внешних DSL-ей на сонове синтаксиса XML.

    VD>Но по сравнению с ничем...


    Это всё цветочки. Настоящие проблемы начинают вылезать при необходимости изменения генератора. Нужно перегенерировать все файлы. А значит вынуть их из VSS. Но если кто-то что-то заблокировал, то начинается беготня и выяснение. Ещё хуже, если между xml файлами есть зависимости. Мы когда-то в xsd схемах датасетов использовали import, чтобы повторно использовать определения таблиц. Закончилось всё тем, что кто-то убил из одного из включаемых файлов таблицу, но всё сразу не перегенерировал и не проверил. Через месяц понадобилось поменять имя одной таблицы. Но из-за того, что таблица в импортируемом файле исчезла, то на вновь сгенерированный код начали сыпаться ошибки. Так как дело было срочное, то пришлось просто восстановить старый cs файл и зменить в нём имя таблицы поиском-заменой. Потом с этой проблемой разбираться никто не стал. И всё из-за того, что студия по понятным причинам проверяет зависимости только между cs файлами и проектами. Всякие там извращения в xsd и xml файлах ей по барабану. При настоящей compile-time генерации такого не может случиться в принципе.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 15:57
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Это всё цветочки. Настоящие проблемы начинают вылезать при необходимости изменения генератора. Нужно перегенерировать все файлы. А значит вынуть их из VSS.


    Их класть туда не нужно, тогда и проблем не будет.

    IT> Но если кто-то что-то заблокировал, то начинается беготня и выяснение.


    Пользуйтесь кошерными VCS, и ваши волосы (на попе) будут длинными и шелковистыми.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 16:59
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Их класть туда не нужно, тогда и проблем не будет.


    Если их туда не класть, то студия будет спрашивать при каждом коммите "А может всё-таки покладём?"

    IT>> Но если кто-то что-то заблокировал, то начинается беготня и выяснение.


    AVK>Пользуйтесь кошерными VCS, и ваши волосы (на попе) будут длинными и шелковистыми.


    Это уж что клиент пожелает. Объяснить ему, что нас не устраивает стандартный VCS из-за precompile-time генерации можно, но выглядит это не как решение проблемы, а как способ запинать её в угол и завалить старыми тряпками чтобы видно не было.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 17:10
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Это всё цветочки. Настоящие проблемы начинают вылезать при необходимости изменения генератора. Нужно перегенерировать все файлы. А значит вынуть их из VSS.


    Это технические трудности которые можно обойти.
    1. В системе контроля версий нужно хранить только мета-код и модель. Тогда и вынимать ничего не нужно будет.
    2. Генерацию нужно сделать фазой предшествующией компиляции.

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

    Далее геморой в неуклюжести синтаксисса ХСЛТ и в том что он не заточен под генерацию кода. Ведь код нужно выравнивать и т.п. А ХСТЛ это делать не умеет.

    Следующий гимор появляется когда ты хочешь что-то посчитать при генерации (точнее перед ней). Даже банальное формирование имен идентификаторов становится гемороем.

    Следующий геморой перекрытие пространств имен. Если ты весь код генерируешь, то еще ничего. Но если ты вынужден вставлять ручные кускти...

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

    В общем, ХСЛТ хорошо до тех пор пока под рукой нет нечто вроде Нэмерла.

    IT>...Через месяц понадобилось поменять имя одной таблицы.


    Тут оно как. Так если уж ты начал генерировать код, то останавливаться нельзя. Нужно определиться с моделью и пытаться никогда не дублировать ее. Так что если модель у тебя в ХМЛ, то и БД ты обязан генерировать по этому ХМЛ-ю. Иначе такой гимор, что "мама дорогая".

    В Нэмерле ты можешь в качестве модели использовать просто БД. Но и в подходе основанном на ХМЛ ты тоже можешь сделать некое приложение которое будет читать модель из БД и генерировать ХМЛ по ней. Ну, а уже по ХМЛ можно будет генерировать код с использованием ХСЛТ. Вот только это лишнии стадии и геморой. Проще уж БД по ХМЛ генерировать.

    IT> При настоящей compile-time генерации такого не может случиться в принципе.


    Тут ты ошибашся. В данном случае геморой из-за непродуманности вопросов кодогенерации и моделирования.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 17:10
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Их класть туда не нужно, тогда и проблем не будет.


    IT>> Но если кто-то что-то заблокировал, то начинается беготня и выяснение.


    AVK>Пользуйтесь кошерными VCS, и ваши волосы (на попе) будут длинными и шелковистыми.


    И все же проблем более чем достатчно. Например:
    1. Если захчется вставлять рукописыный код, то гемороя сразу становися масса, так как для твоего генератора код является простым текстом.
    2. Усложнен поиск ошибок кодогенерации, так как сгенероированный код ничем не связан с шаблонами.
    3. ХСЛТ не полноценный ЯП и если что-то нужно посчитать и т.п., то прийдется делат вставке на другом ЯП, что усложняет процесс.
    4. Отсуствие связие семантической информации приводит к невозможности выдвавать разумную диагностику ошибки становятся не очевидными и выявляются на более поздних стадиях.
    5. Такой подход годится только для генерации обособленных модулей. Он не годится для встраивания микро-DSL-ей в базовый язык. Так например, на макросах Немерла можно встроить в оснвной язык декларативное описание негэкспов, ХМЛ-я и т.п. Ты же вынужден будешь писать такой код на более низком уровне.

    Между тем приемуществ у ХСЛТ подхода по сравнению с Нэмероловским я пока не вижу.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 17:10
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Мне применять удавалось. Но это неважно. Проблемы с интеграцией очевидны и столь же очевидно, что Nemerle их способен решить.


    +1

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


    Дык это очевидное следсвие невыразительности ХМЛ-я. Семантика в твоих ДСЛ-ях хорошая, а синтаксис никакой.

    Помнишь ты прикрутил к CodeAnalizer-у в R# генерацию ХМЛ-я по АСТ? Это действительно было здорово, но читать полученный ХМЛ было еще хуже чем АСТ в виде классов C#. Между тем сам C# читать намного проще нежели АСТ. Это потому, что C# намного более выразителен и краток нежели АСТ или ХМЛ.

    Так что тебе нужно заменить твой ХМЛ на нечто более выразительное. Ты и сам это пыташся сделать делая визуальные средства редактирования ХМЛ-ей для своих ДСЛ-ей. Так вот Нэмерл позволят как использовать ХМЛ в качестве модели, так и просто опредялять текстовый синтаксис долее выразительный нежели ХМЛ или эмуляция в ООП-виде.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 17:10
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    AVK>>И если я их еще правлю вполне эффективно, то другой народ из команды делает это очень неохотно, чаще просят меня что нибудь подправить.

    WH>Ибо долбаться с этим угробищем ака XSLT никто не хочет. Немерле в этом плане значительно дружественней.

    Ну, надо признать, что возиться то приходится не с ХСЛТ, а с ХМЛ. ХМЛ модели конечно значительно проще нежели ХСЛТ его изменяющий. Но и но не достаточно выразителен, чтобы народ хотел править его руками. Отсюда такая потребность в дизайнерах. А была бы возможность задавать свой синтаксис, то глядишь и ндобности в дизайнерах было бы меньше.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 17:38
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Ибо долбаться с этим угробищем ака XSLT никто не хочет. Немерле в этом плане значительно дружественней.


    Если XSLT править это понятно, это в любом случае моя зона ответственности. Я про правку XML.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 17:38
    Оценка:
    Здравствуйте, IT, Вы писали:

    AVK>>Их класть туда не нужно, тогда и проблем не будет.


    IT>Если их туда не класть, то студия будет спрашивать при каждом коммите "А может всё-таки покладём?"


    Отключи интеграцию, спрашивать не будет (тем паче что в Nemerle интеграция еще нескоро появится). Вобщем все сводится к п.2

    AVK>>Пользуйтесь кошерными VCS, и ваши волосы (на попе) будут длинными и шелковистыми.


    IT>Это уж что клиент пожелает.


    Так тоже не проблема — ставишь себе нормальный и настраиваешь автоматический коммит в VSS.

    IT> Объяснить ему, что нас не устраивает стандартный VCS из-за precompile-time генерации можно


    VSS угробище не из-за генерации, а по жизни. Проблемы с генераторами не самая мерзкая его особенность.

    IT>, но выглядит это не как решение проблемы, а как способ запинать её в угол и завалить старыми тряпками чтобы видно не было.


    Ну мучься дальше .
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 17:40
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Помнишь ты прикрутил к CodeAnalizer-у в R# генерацию ХМЛ-я по АСТ? Это действительно было здорово, но читать полученный ХМЛ было еще хуже чем АСТ в виде классов C#. Между тем сам C# читать намного проще нежели АСТ. Это потому, что C# намного более выразителен и краток нежели АСТ или ХМЛ.


    VD>Так что тебе нужно заменить твой ХМЛ на нечто более выразительное. Ты и сам это пыташся сделать делая визуальные средства редактирования ХМЛ-ей для своих ДСЛ-ей. Так вот Нэмерл позволят как использовать ХМЛ в качестве модели, так и просто опредялять текстовый синтаксис долее выразительный нежели ХМЛ или эмуляция в ООП-виде.


    Насчет выразительности ты возможно и прав. Но я совсем не уверен, что проблема в этом.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 18:28
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Насчет выразительности ты возможно и прав. Но я совсем не уверен, что проблема в этом.


    Выражение "ты возможно и прав" у таких людей как мы с тбой означает "почти наверняка прав" .
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 18:28
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Я тоже раньше так думал. И думал что без парсеров и встраивания в язык нормальная кодогенерация невозможна.

    AVK>А потом оказалось что потребность руками что то дописывать в автогенеренный код свидетельствует на некачественном разделении на аспекты.

    Дык это потому, что ты чтобы уйти от геморроя сам ограничил себя. Это нормально учитывая скдность средств, но зачем же себя ограничивать если нужные средства таки пояляются?

    AVK> К примеру добавлять метод WriteXml к объекту графа не есть правильно, потому что завтра понадобится еще куда нибудь сериализовать — что ж, менять публичный интерфейс и генераторы?


    Зависит...
    Если сериализация не затрагивает внутреннего представления, то можно сразу организовать ее в виде внешних процедур. Тогда будет достаточно сделать второй генератор. Или вообще сделать исходный генератор универсальным.
    Если же сериализовать нужно внутренее представление, то прийдется нарацивать публичные интерфейсы. Но все равно изменять что-то прийдется.

    AVK>Disclaimer: все вышесказанное, разумеется, основано на моих задачах. На других задачах все может быть по другому.


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

    VD>>5. Такой подход годится только для генерации обособленных модулей. Он не годится для встраивания микро-DSL-ей в базовый язык.


    AVK>Не годится. Но меня собственно сама идея этих DSL, встроенных в основной языке, смущает.


    А меня нет. Погляди примеры Нэмероловцев и сам убедишся. Они уже сделали кучу классных ДСЛ-ей и мелких улучшений языка.

    Примерами мелких ДСЛ-ей могут служить ДСЛ-и для работы с рекеспами, БД, строками.
    А примерами мелких улучшений операторы вроде <--> меняющих местами значения (причем не только в простых случаях когда значения являются перменными).
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 18:28
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Если их туда не класть, то студия будет спрашивать при каждом коммите "А может всё-таки покладём?"


    IT, в данном случае ты прото используешь кривой сорс-контролв. Прямому вообще не нужна поддежка студии. Да и не нужно генерируемый код в него класть. Тебе же студия не предлагает тестовые проекты в сорс-конрол запихнуть?

    IT>Это уж что клиент пожелает. Объяснить ему, что нас не устраивает стандартный VCS из-за precompile-time генерации можно, но выглядит это не как решение проблемы, а как способ запинать её в угол и завалить старыми тряпками чтобы видно не было.


    И тем неменее это плохой аргумент. Однако и хороших хватает.

    Кстати, возмжность получить исходинки по сгенерированному коду очень полезная возможность. Если бы небыло Рефлектора, то я бы настоятельно желал бы получить возможность генерации развернутой версии проекта (т.е. версии после всех мета-преобразований). Это может резко упростить отладку самих макросов. Однако вроде бы в Нэмерле что-то подобное есть. Да и если даже нет, то не трудно сделать макрос который сделает это. Так что тут опасаться нечего.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.02.06 18:28
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Если XSLT править это понятно, это в любом случае моя зона ответственности. Я про правку XML.


    Кстати, думаю, что твое начальство было бы только радо если бы и другие смогли бы если не править, то хотя бы проще понимать что делает код трансформации. Это и тебе жизнь упростило бы. Ведь вместо туманных описаний что не так, ты бы зачастую получал бы информацию о том, в каком месте макроса проблемы.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 18:58
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>А потом оказалось что потребность руками что то дописывать в автогенеренный код свидетельствует на некачественном разделении на аспекты.


    VD>Дык это потому, что ты чтобы уйти от геморроя сам ограничил себя. Это нормально учитывая скдность средств, но зачем же себя ограничивать если нужные средства таки пояляются?


    Качественное разделение на аспекты, оно в любом случае рулит. Если средство Х позволяет писать кашеобразный код это совсем не означает, что я не пишу такой код только потому что у меня нет средства Х. Скорее наоборот — автогенерация скрадывает подобные косяки. В рукописном коде подобное сразу же по рукам давать начинает за счет появляющегося объема ручной работы при каждом изменении одного из аспектов.

    VD>Если же сериализовать нужно внутренее представление, то прийдется нарацивать публичные интерфейсы.


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

    AVK>>Не годится. Но меня собственно сама идея этих DSL, встроенных в основной языке, смущает.


    VD>А меня нет. Погляди примеры Нэмероловцев и сам убедишся.


    Да глядел я их, глядел. Не убедило.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 19:33
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    IT>>Это уж что клиент пожелает. Объяснить ему, что нас не устраивает стандартный VCS из-за precompile-time генерации можно, но выглядит это не как решение проблемы, а как способ запинать её в угол и завалить старыми тряпками чтобы видно не было.


    VD>И тем неменее это плохой аргумент. Однако и хороших хватает.


    Это — не плохой аргумент. Это — жизнь. В середине проекта, в котором участвует только девелоперов с полсотни, менять VCS из-за проблем с кодогенерацией в одной из шести команд — это безумие. Никто на это не пойдёт. Да и худо бедно до этого работали, пока не начали умничать.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 19:38
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Ну мучься дальше .


    Уже отмучался. Это было полтора года назад. Сейчас я не использую ни VSS, ни датасеты, ни любую другую precompile-time генерацию.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 19:38
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    IT>> При настоящей compile-time генерации такого не может случиться в принципе.


    VD>Тут ты ошибашся. В данном случае геморой из-за непродуманности вопросов кодогенерации и моделирования.


    О продуманности речи не идёт. Там такие баталии на эту тему были, что лучше не упоминать. А вот то, что такое не возможно в случае compile-time генерации — это факт. Проект просто не собрался бы.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: yrashk  
    Дата: 19.02.06 19:39
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    _>>Вообще-то такая фукциональность доступна в виде библиотек. Да и в коммерческих реализициях есть подобная фунциональность.


    VD>Эти библиотеки должны быть по сложности равноценны компилятору. И это при том, что комапиляторы Лиспа сами не обеспечивают даже простого вывода типов. В общем, это больше похоже на сказку.


    _>>Я не утверждал, что Lisp лучше или хуже Нэмерле, но доступ к семантической информации в Lisp точно есть.


    VD>Да она сама в Лиспе под большим вопросом. Язык то по сути динамически типизированный. Ну, как ты сможешь определить что некий парамерт это получает INT если в него передано сложное выражение?


    (declare (type integer arg)) ?
    Re[2]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 19.02.06 19:43
    Оценка:
    Здравствуйте, VladGalkin, Вы писали:

    VG>Ей Богу, откуда такие персонажи беруться?


    Если следовать его логике, то DSL'и — это полный отстой.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[3]: Снова о Nemerle или профанация не пройдет :)
    От: VladGalkin Украина  
    Дата: 19.02.06 19:56
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Если следовать его логике, то DSL'и — это полный отстой.

    Тут же не его логика, тут очень авторитетное и точное высказывание очень известного специалиста: "высказывание одно очень умное. Точнее дословно не помню и автора с хожу не назову".
    Вот, только, все на этом форуме и, только на моей памяти, уже не первый месяц DSL'ями страдают и по ним плачут, эх господа, не понимате вы истинной Красоты и Свободы, ай да все на "ассемлер". Back to the primitive! We're back to set it free!!! (C) Soulfly. Я умывю руки. (надо бы себе смайлик специальный вместо этой фразы завести)
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    ДЭ!
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 19.02.06 20:20
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Это — не плохой аргумент. Это — жизнь. В середине проекта, в котором участвует только девелоперов с полсотни, менять VCS из-за проблем с кодогенерацией в одной из шести команд — это безумие. Никто на это не пойдёт.


    У нас начальник тоже так думал. Долго думал. Но когда на войну с VSS стало уходить по полчаса-часу в день даже он сдался. Сейчас не жалеет совершенно, наоборот сам затеял перетаскивание на SVN бизнес-кодеров, бо он у нас еще еженощными билдами занимается и прочей служебной мракобесией, а там с VSS тоже все весьма неприятно.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 20.02.06 03:11
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Да да. Одни мы тут такие неимоверно талантливые. Извини, но я в повальные недостатки не верю, не бывает так чтобы все кругом в дерьме, один я в белом фраке.


    совсем не все. Вот некоторые действительно зажигают так, что мне аж завидно становится
    А некоторые другие занимаются совсем не тем, чем нужно. И уже довольно скоро загонят свой язык в могилу.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 20.02.06 03:11
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Здравствуйте, Дарней, Вы писали:


    Д>>Если в программе нет никаких неизвестных терминов,


    AVK>А если есть?


    А если сначала прочитать сообщение не "по диагонали", а целиком?

    AVK>Вот вот — чтобы разобраться в исходниках нужно изучать рефлектором код макросов.


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

    А сейчас, чтобы понять работу неизвестной программы, приходится восстанавливать ход мыслей автора по обрывкам документации. Это по твоему лучше?
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 20.02.06 03:11
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    VD>>Ты вот это http://nemerle.org/Open_projects читал?


    AVK>Читал. Ни слова про плагин.


    раньше у них были проблемы с лицензией беты, которая не разрешала распространение любых использующих VS SDK исходников. С релизом проблема порешалась, но проект некоторое время был заброшен. Поэтому проект выложили в открытый доступ совсем недавно. Любая контрибуция приветствуется
    (Похоже, квалификация его разработчика оставляет желать лучшего. Вот эта инструкция:

    3. unzip this file into "C:\Program Files\Visual Studio 2005
    SDK\2005.12\VisualStudioIntegration\Samples\NemerleIntegration"

    наводит на такие мысли )
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 20.02.06 04:23
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Я вот одного не пойму. О каких именно проблемах ты говоришь? Ты можешь их хотя бы сформулировать или это всё игра на публику?


    Есть у меня такой проект, SObjectizer
    Автор: Евгений Охотников
    Дата: 30.12.05
    , в котором требуется делать довольно много метаописаний. В C++ эти метаописания реализуются макросами, но из-за ограниченности плюсовых макросов сделать можно далеко не все. В частности, я могу указать, какой тип сообщений обрабатывает событие, но не могу сразу же сделать автоподписку события. Хотя часто заранее известно, какие сообщения агент будет обрабатывать. Есть и еще более сложные случаи. В C++ я думаю упростить их за счет внешнего (или даже встраиваемого в C++ комментарии) DSL на Ruby с генерацией кода.

    Если заниматься портированием SObjectizer на .NET или в Java, то с метаописаниями так же придется что-то курить. Либо использовать аннотации, либо опять внешний DSL. Но тут поднимается кипишь вокруг Nemerle. По первому впечатлению язык забавный и интересный. Но главное -- это возможность изменения синтаксиса под себя. Т.е. появляется перспектива портирования SObjectizer в .NET с действительно удобным встроенным DSL (за счет расширения синтаксиса Nemerle собственными синтаксическими конструкциями). Но чем больше я обдумывал это дело, тем больше начинал сомневаться в том, что расширение синтаксиса в библиотеке является хорошей идеей. И главная причина сомнений в том, что не контролируемые расширения синтаксиса конфликтуют. И возможность разруливания конфликтов только одна -- нужно давать синтаксическим конструкциям уникальные имена, которые с большой степенью вероятности не будут пересекаться с другими именами. Как это может выглядеть, я показал вот здесь
    Автор: eao197
    Дата: 18.02.06
    .

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

    Вот такой у меня, можно сказать шкурный, интерес был в фичах Nemerle.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 20.02.06 06:23
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:
    Андрей, пользуясь случаем: я в свое время имел дело с кастом тулом для XSLT процессинга. Мощная штука, но меня бесило одно место: хотелось иметь нормальную диагностику ошибок.
    Так вот я так и не нашел способа генерить нормальные директивы #line, т.к. в XSLT процессоре нету доступа к номеру строки входного XML. Ты не знаешь, эта задача имеет решение?
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 20.02.06 06:24
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Я пока не могу сказать насколько далеко могут завести макросы Немерле, но пока остаётся впечатление, что довольно далеко. Так как расширения синтаксиса подключаются включением пространства имён, то особых проблем пересечения в твоём случае быть не должно. Т.е. если твой DSL не будет пересекаться со стандартным расширением, то его вполне можно будет использовать совместно.


    Блин, ну вот опять... Да со стандартными расширениями я свой DSL подружить всегда смогу.
    Но я не смогу органичивать пользователей своего DSL от совместного использования моего DSL с чужими DSL. В одном файле, в одном контексте.
    А когда у пользователей из-за моего DSL возникают проблемы в их коде -- они сделают то, что ты раньше и предлагал -- выбросят мою библиотеку. А вот это уже не допустимый сценарий.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[3]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 20.02.06 06:26
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>Если бы я не знал, что такое Немерле, я бы тоже какую-нибудь гадость написал


    Можно ли узнать, много ли ты реализовал и внедрил проектов на Немерле?

    Или хотя бы много ли проектов ты собираешься делать и внедрять на Немерле в ближайшее время?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 20.02.06 07:19
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Ты наверное хотел сказать пафосно. "Патетичный" означает жалкий, трогательный.


    Ну вообще-то и "трогательно" тоже, т.к. всё-таки не факт, что в итоге из Nemerle таки получится что-то но мне хочется в это верить.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 20.02.06 07:31
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Если тебе это кажется маразмом, то что ты скажешь на то, что передвижение по тексту осуществляется клавишами h, j, k и l? Ты думаещь -- это дико?

    E>На самом деле дико удобно. И это сразу ощущается после небольшой практики.

    Кстати, этими клавишами я пользовался только из-под телнета в Win95. Во всех других терминалах прекрасно работают стрелки.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[4]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 20.02.06 07:50
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Можно ли узнать, много ли ты реализовал и внедрил проектов на Немерле?


    Я так полагаю, это риторический вопрос?

    E>Или хотя бы много ли проектов ты собираешься делать и внедрять на Немерле в ближайшее время?


    собираюсь перевести на него части своего любимого домашнего проекта. Как только у меня появится достаточно свободного времени
    Правда, предварительно нужно будет добить до мало-мальски пригодного состояния плагин для VS. Про всякие автокомплиты и рефакторинги мечтать пока рано, но хотя бы обеспечить возможность редактировать/компилировать/запускать/отлаживать в студии — это обязательно.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[5]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 20.02.06 08:01
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    E>>Можно ли узнать, много ли ты реализовал и внедрил проектов на Немерле?


    Д>Я так полагаю, это риторический вопрос?


    Это чтобы оценить достоверность фразы:

    Если бы я не знал, что такое Немерле



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

    E>>Или хотя бы много ли проектов ты собираешься делать и внедрять на Немерле в ближайшее время?


    Д>собираюсь перевести на него части своего любимого домашнего проекта. Как только у меня появится достаточно свободного времени


    Это всегда так, к сожалению
    Все равно, желаю удачи

    Д>Правда, предварительно нужно будет добить до мало-мальски пригодного состояния плагин для VS. Про всякие автокомплиты и рефакторинги мечтать пока рано, но хотя бы обеспечить возможность редактировать/компилировать/запускать/отлаживать в студии — это обязательно.


    Все таки как-то грусно смотреть на такие вещи... Такая сильная привязанность к VS...


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 20.02.06 08:09
    Оценка:
    Здравствуйте, eao197, Вы писали:

    ...

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


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

    Кстати, насколько я понял, в Nemerle макросы включаются в пространство имён, т.е. ты можешь писать:

    using MyCompany.MacroLibrary;
    
    myMegaMacro;

    А можешь и:

    MyCompany.MacroLibrary.myMegaMacro;

    Как видишь, в таком случае проблем не больше, чем с обычными классами/методами, т.к. это не макросы Си и они не распологаются все в глобальном пространстве имён.

    PS: Я тут не уверен насчёт своих рассуждений — пусть гуру меня поправят, если что.
    Re: Снова о Nemerle или профанация не пройдет :)
    От: VladGalkin Украина  
    Дата: 20.02.06 08:27
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Да прекращай ты народ и самого себя запугивать. Ничего никому не выгодно. Всё течёт и развивается своим естественным путём. Посмотри хоть на проект Nemerle. У этого проекта есть только три варианта развития:


    IT>1. Nemerle станет достаточно популярен и отберёт у C# существенную, а со временем возможно и всю нишу. MS будет курить в сторонке.

    IT>2. MS прекратит баловаться всякими детскими штучками типа LINQ и начнёт развивать C# по взрослому. Тогда будет два конкурента, что есть гуд.
    IT>3. MS купит команду Nemerle и конкуренция будут происходить в самой MS

    Есть еще один вариант развития: Nemerle станет популярен, но в достаточно узком кругу, и чтобы этого не произошло необходимо наличие "change agents", т.е. людей которые готовы внедрять, применять и популяризировать Nemerle на практике, в рамках "change projects". И очень хочеться верить, что этими "change agents" станут люди, ныне обсуждающие/увлекающиеся Nemerle на RSDN.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    ДЭ!
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 20.02.06 08:41
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Имхо, знание языка без большого опыта его использования очень поверхносно.


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

    E>Это всегда так, к сожалению

    E>Все равно, желаю удачи

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


    E>Все таки как-то грусно смотреть на такие вещи... Такая сильная привязанность к VS...


    Просто потому, что это удобно. Я лучше поработаю над плагином, чем буду снова писать код в плоском текстовом редакторе и собирать проект make-файлом
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 20.02.06 09:51
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:
    AVK>Вот только чтобы кто то другой прочел это нужно, чтобы все термины этот другой понимал. А вот если программа состоит наполовину из неизвестных терминов, то понять это чужому будет крайне сложно.
    Ты совершенно прав. Но мне кажется, что эта проблема не намного тяжелее, чем применение сторонних библиотек в банальном сишарпе. Никогда не сталкивался с изобилием реализации DropDownList и TabStrip в асп.нете? А результат получается примерно такой же. Да, язык — один и тот же, но словарный запас шибко различен.
    Или еще можно пользоваться несовместимой системой именования объектов, вместе с экзотическим выравниванием. Сразу получаем "французский акцент".
    Насколько мне известно, как раз в студии начали вводить возможности для архитекторского произвола — типа фиксировать некоторые настройки, и до свидания. Никаких неодобренных библиотек, никаких табов размером в пять с половиной символов. Аналогичное решение можно бы поприменять и для немерле — чтобы в проекте было состряпано конечное количество DSL с четко специфицированными областями применения. А не так, что половина кода пользуется макросами, половина наколбашена вручную, а кто-то все то же из XML кастом тулом генерит.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 20.02.06 09:51
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>наводит на такие мысли )


    Там пути для всяких ctc видимо относительные. Надо было просто скопировать эти утилитки в репозиторий и не страдать фигней. Путь, кстати, свидетельствует о том, что я угадал — это просто подправленный МСовский пример.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 20.02.06 10:12
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

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


    Я кастом тул не очень люблю, у него много ограничений. Проще запускать утилитку перед компиляцией.

    S>Так вот я так и не нашел способа генерить нормальные директивы #line, т.к. в XSLT процессоре нету доступа к номеру строки входного XML. Ты не знаешь, эта задача имеет решение?


    Не знаю. Мне как то не нужно было. Читстых решений однозначно быть не может, потому что источником для преобразования служит XPathNavigator, а у него совсем не обязательно вобще есть такое понятие как номер строчки. Грязноватое и трудоемкое решение — создание своего DOM, содержащего номера строк для каждого узла и XPathNavigator для него. Совсем грязное, но не такое трудоемкое — написать свой загрузчик XmlDocument из XmlTextReader, который параллельно построению документа строит таблицу соответствий между каждым узлом и позицией в тексте.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 20.02.06 10:12
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>>>Если в программе нет никаких неизвестных терминов,


    AVK>>А если есть?


    Д>А если сначала прочитать сообщение не "по диагонали", а целиком?


    Взаимно. Ситуации, когда незнакомых терминов нет меня в контексте данногог вопроса не интересуют.

    AVK>>Вот вот — чтобы разобраться в исходниках нужно изучать рефлектором код макросов.


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


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


    Это останется. Добавится незнакомый синтаксис. Неужели для тебя нет разницы между кодом на незнакомом языке и кодом с использованием незнакомой библиотеки?
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 20.02.06 10:42
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Взаимно. Ситуации, когда незнакомых терминов нет меня в контексте данногог вопроса не интересуют.


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

    AVK>Это останется. Добавится незнакомый синтаксис. Неужели для тебя нет разницы между кодом на незнакомом языке и кодом с использованием незнакомой библиотеки?


    Есть разница. В том, что в первом случае враг сразу виден в лицо. И у программиста не создается ложного впечатления, что он понимает, как всё работает.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: FR  
    Дата: 20.02.06 10:49
    Оценка:
    Здравствуйте, Oyster, Вы писали:

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


    AVK>>Я не понимаю чем тут восторгаться. Ты Форт выдел? Там то же самое, даже еще круче. И это его и убило.


    O>Нет, в Форте не то же самое. Форт — язык интерпретируемый, без строгой типизации. И без синтаксиса — там просто есть слова, работающие с двумя стеками — и всё. А определение нового слова — всего лишь добавление строки в словарик.



    Ну форт не совсем интерпретатор, и в этом он тоже особняком.


    O>В Nemerle совсем не так всё сделано — тут тебе и строгая типизация, и проверка корректности макросов на этапе компиляции, и вменяемые диагностические сообщения... И никакой чехарды со стеком.


    Это не важно, важно то что и форт и лисп и немерли очень гибкие, и эта гибкость очень легко может привести к тому что язык расползется, превратится в кучу трудно совместимых и непонятных непосвященым диалектов.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 20.02.06 10:54
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Ты совершенно прав. Но мне кажется, что эта проблема не намного тяжелее, чем применение сторонних библиотек в банальном сишарпе.


    Ты недооцениваешь возможности Nemerle. Они позволяют, к примеру, эмулировать синтаксис Питона.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 20.02.06 10:55
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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


    VD>>Они и есть отарытый вроде.


    AVK>Я в списке Open projects его не обнаружил. Из относящегося к нему я заметил только комплит.

    Open projects — это которые еще не занятые.
    --
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 20.02.06 11:10
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Не знаю. Мне как то не нужно было.

    А жаль. Вот такие мелочи меня неприятно удивляют. Казалось бы, в чем проблема — живи и пользуйся. Увы. В самых простых случаях — сгенерился, к примеру, duplicate identifier. Это однозначный косяк Xml, в котором надо поправить результат неосторожного copy-paste. Увы, позиционироваться на него способа нет; вместо этого приходится вкусывать текст из .cs и выполнять контекстный поиск...
    AVK>Читстых решений однозначно быть не может, потому что источником для преобразования служит XPathNavigator, а у него совсем не обязательно вобще есть такое понятие как номер строчки.
    Это понятно.
    AVK>Грязноватое и трудоемкое решение — создание своего DOM, содержащего номера строк для каждого узла и XPathNavigator для него. Совсем грязное, но не такое трудоемкое — написать свой загрузчик XmlDocument из XmlTextReader, который параллельно построению документа строит таблицу соответствий между каждым узлом и позицией в тексте.
    Ясно. А может, есть способ доработать напильником загрузчик XmlTextReader, который будет добавлять в каждый элемент документа что-то вроде атрибута? Чтобы это можно было относительно легко пользовать внутри xslt.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 20.02.06 11:26
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>А жаль. Вот такие мелочи меня неприятно удивляют. Казалось бы, в чем проблема — живи и пользуйся. Увы. В самых простых случаях — сгенерился, к примеру, duplicate identifier. Это однозначный косяк Xml, в котором надо поправить результат неосторожного copy-paste. Увы, позиционироваться на него способа нет; вместо этого приходится вкусывать текст из .cs и выполнять контекстный поиск...


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

    S>Ясно. А может, есть способ доработать напильником загрузчик XmlTextReader, который будет добавлять в каждый элемент документа что-то вроде атрибута?


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

    S> Чтобы это можно было относительно легко пользовать внутри xslt.


    Для пользования внутри XSLT все равно придется extension object писать.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 20.02.06 12:23
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Самое забавное в данном обсуждении то, что ярыми защитниками Nemerle являются те, кто на нем еще не пишет (видимо, это способ самовнушения о правильности собственного выбора).


    Значит, по существу вопроса замечаний нет?

    Кстати, твои выводы просто таки блещут логичностью

    E>Насколько я помню, Vermicious Knid (кто реально щупал Nemerle) прогнозов как раз не делает.


    Ну и? Другие люди пусть не делают прогнозы, а я их делать не боюсь.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 20.02.06 12:34
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Значит, по существу вопроса замечаний нет?


    А в чем состояло существо вопроса?

    O>Кстати, твои выводы просто таки блещут логичностью


    Это какие?
    В одной части обсуждения я предполагал, что Nemerle не станет популярным языком, скорее нишевым или аналогом Lisp-а. И в этом мнении я был не одинок, как помнится.
    Во второй части обсуждения я выяснил у Vermicious Knid что будет происходить при расширении синтаксиса. И принял для себя решение. По вопросу, который меня интересовал. Никому ничего не навязывая и не высказывая в адрес Nemerle никаких обвинений. Разве я кого-то призывал не программировать на Nemerle или бросить это занятие?
    Так о каких именно выводах ты говоришь?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 20.02.06 12:43
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>А в чем состояло существо вопроса?


    Вот в чём:

    ... у Nemerle есть синтаксис и он позволяет не писать на "птичьем" языке, в то время как Форт с Лиспом буквально требуют этого — вот отличие. ...


    E>Это какие?


    Цитирую тебя:

    ... (видимо, это способ самовнушения о правильности собственного выбора). ...


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

    E>Во второй части обсуждения я выяснил у Vermicious Knid что будет происходить при расширении синтаксиса. И принял для себя решение. По вопросу, который меня интересовал. Никому ничего не навязывая и не высказывая в адрес Nemerle никаких обвинений. Разве я кого-то призывал не программировать на Nemerle или бросить это занятие?
    E>Так о каких именно выводах ты говоришь?

    Речь о других "выводах" которые меня задели. См. выше.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 20.02.06 13:13
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Я, опять же, поступаю проще. Я рисую для входного XML схему и предварительно ее проверяю. Тем самым отлавливаю большое количество ошибок в схеме.

    Погоди, а как схема поможет от дублирующихся значений атрибутов?
    У меня сейчас нет исходников того проекта, в котором я встревал, но вот примерная иллюстрация идеи:
    <businessEntities namespace="Project.BO">
      <businessEntity className="Person">
          <property type="string" name="Name" />
          <property type="int" name="Age" readonly="true"/>
        </businessEntity>
      <businessEntity className="Person">
        </businessEntity>
    </businessEntitties>

    Скажи мне, какой схемой я смогу проверить уникальность className в пределах неймспейса? Если бы у меня в генеренном коде стояли корректные #line, то студия автоматом ткнула бы меня носом в обе строчки, даже если они в разных xml файлах.
    AVK>И атрибутов никаких в ноду добавить нельзя, и сам загрузчик конфигурированию не поддается. Можно попытаться подписаться на событие NodeInserted, но скорее всего при загрузке оно не вызывается. Хотя чем черт не шутит.
    Именно это останавливает меня от интенсивного применения кодогенерации из Xml Отладка этого барахла в моей жизни занимает довольно много времени. Особенно это сказывается тогда, когда ошибку обнаруживает не тот, кто ее сделал. Порой бывает довольно сложно найти тот файл, из-за которого все сломалось.
    AVK>Для пользования внутри XSLT все равно придется extension object писать.
    Ясно. Спасибо.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 20.02.06 13:19
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Да, против этого возражений нет. Хотя что получится из Nemerle, когда народ начнет макросы ваять в огромных количествах (именно макросы, не только расширения синтаксиса), интересно будет посмотреть.


    Посмотрим. Я верю в лучшее

    O>>

    O>>... (видимо, это способ самовнушения о правильности собственного выбора). ...


    E>Но ведь складывается такое впечатление


    Хм. Я вообще никакого выбора не делал Так что впечатление неверное. Да и аутотренингом не занимаюсь — некогда

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


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

    E>И еще одно впечатление, не только по поводу Nemerle. Для раскрутки языка нужен killer app. Вот еще год назад про Ruby особо и не слышно было. Да, есть что-то типа Perl или Python, не более того. Даже RSS-фиды по Ruby были относительно вяленькие. Но после шумихи вокруг RubyOnRails какое-то помещательство началось (либо это мне, как Rubyist-у так кажется). В основном по поводу RoR, но и Ruby внимания перепадает. Я это к тому, что если бы на Nemerle вышло какое-то killer app, которое бы привлекло внимание к Nemerle (мол, это оказалось возможным только благодаря фишкам Nemerle), это бы более точно выявило реальные достоинства Nemerle и его потенциальную стартовую область применения.


    E>Есть ли такой killer app для Nemerle?


    Был ли такой killer app для C++? А для C?

    А вообще я уже писал, что мне лично хотелось бы увидеть написанным на Nemerle... А именно — O/R-Mapping tool.

    В общем, ты прав — надо начинать что-то писать для себя Сегодня и начну.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 20.02.06 13:53
    Оценка:
    Здравствуйте, Oyster, Вы писали:

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


    O>Тогда уже не так интересно будет обсуждать Сейчас надо пытаться понять, что же в будущем будет с языком, прогнозировать, искать достоинства/недостатки... напрягать извилины, в общем. А через несколько лет естественный отбор уже сделает своё гнусное дело


    Ну так это же самое главное
    Как мне кажется, многие здесь прицеливаются на Nemerle не для того, чтобы проектики "для себя" на нем писать. А чтобы production-системы со временем на нем делать. Лично я с этой точки зрения на Nemerle смотрел. А что может быть лучше, чем когда за тебя грязную работу (по раскрутке или, наоборот, закрутке) Nemerle за тебя другие сделают

    E>>Есть ли такой killer app для Nemerle?


    O>Был ли такой killer app для C++? А для C?


    За C++ не скажу сразу, зато для C был -- Unix.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 20.02.06 13:59
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Ну так это же самое главное

    E>Как мне кажется, многие здесь прицеливаются на Nemerle не для того, чтобы проектики "для себя" на нем писать. А чтобы production-системы со временем на нем делать. Лично я с этой точки зрения на Nemerle смотрел. А что может быть лучше, чем когда за тебя грязную работу (по раскрутке или, наоборот, закрутке) Nemerle за тебя другие сделают

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

    E>За C++ не скажу сразу, зато для C был -- Unix.


    А с Си и Unix разве не была история "язык ради продукта"? Потому что с Ruby история другая, насколько я понимаю: "сначала было слово", а потом уже — RoR.
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 20.02.06 14:06
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    E>>За C++ не скажу сразу, зато для C был -- Unix.


    O>А с Си и Unix разве не была история "язык ради продукта"? Потому что с Ruby история другая, насколько я понимаю: "сначала было слово", а потом уже — RoR.


    Имхо, не важно, что из-за чего явилось. Важно, что C доказал свою привлекательность, когда оказалось, что на нем можно написать Unix и что после этого Unix стало легче портировать на другие архитектуры.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 20.02.06 15:06
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>У меня сейчас нет исходников того проекта, в котором я встревал, но вот примерная иллюстрация идеи:

    S>
    S><businessEntities namespace="Project.BO">
    S>  <businessEntity className="Person">
    S>      <property type="string" name="Name" />
    S>      <property type="int" name="Age" readonly="true"/>
    S>    </businessEntity>
    S>  <businessEntity className="Person">
    S>    </businessEntity>
    S></businessEntitties>
    S>

    S>Скажи мне, какой схемой я смогу проверить уникальность className в пределах неймспейса?

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

    AVK>>И атрибутов никаких в ноду добавить нельзя, и сам загрузчик конфигурированию не поддается. Можно попытаться подписаться на событие NodeInserted, но скорее всего при загрузке оно не вызывается. Хотя чем черт не шутит.

    S>Именно это останавливает меня от интенсивного применения кодогенерации из Xml

    Ну это мелочь. Если бы мне сильно нужно было — давно бы сделал.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 20.02.06 17:28
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Ты сам когда-нибудь пересаживал народ с одной технологии на другую и представляешь себе как это реально делается?


    Кое-какой опыт был

    IT>Чушь. Уж привыкнуть к def — дело пары минут.


    Да в общем коммент про def это было в порядке шутки, а ты уж сразу в штыки

    IT>Гораздо болезненнее будет проходить ломка сознания при переходе от императивного подхода к функциональному. Но вот что забавно, этого не требуется в обязательном порядке. К тому же ты наверняка знаешь, что .NET позволяет легко совмещать языки. В одном солюшине могут быть проекты на VB для более простой работы с COM, на C++/CLI для работы с WinAPI, на Nemerle для замены того, что сейчас генерируется в precompile- и run-time, на C# для всего остального. Для начала Nemerle может прочно занять нишу о которой я говорю, а уже переходить на него или нет полностью покажет время.


    Да, но есть хороший вопрос — а зачем? И вопрос далеко не риторический. Я не думаю — согласно своему опыту, который может быть и не самый показательный — что получение дополнительных наворотов вроде синтаксических макросов является серьезной причиной для перехода. Народ и существующими фичками-то не пользуется. Какие бенефиты даст немерле? Повысится надежность кода? Понизится entry level? А таковы ИМХО на сегодняший день критерии массового распространения.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 17:40
    Оценка:
    Здравствуйте, yrashk, Вы писали:

    Предупреждение за избыточное цитирование.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 17:40
    Оценка:
    Здравствуйте, yrashk, Вы писали:

    VD>>Да она сама в Лиспе под большим вопросом. Язык то по сути динамически типизированный. Ну, как ты сможешь определить что некий парамерт это получает INT если в него передано сложное выражение?


    Y>(declare (type integer arg)) ?


    У макроса тип параметра не может быть integer. У него тип параметра должен быть "векта АСТ". Для Лиспа это будет означать S-выражение.

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

    Насколько мне извесно — это невозможно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 17:40
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Да я о другом немножко. Вот представь ты объясняешь топ-менеджменту зачем нужен Немерле. Макросы там синтаксические и прочее. При этом большая часть штата, которая на настоящий момент пишет на си-шарпе, делает круглые глаза, услышав всякие страшные слова типа "перегрузка операторов".


    А ты разве мэнеджер? Ты вроде как программист справшивал.
    Ответ на этот вопрос для менеджера очень прос. Его программисты смогут делать меньше ошибок и делать работу быстрее чем раньше. А вот детали того почему это так требуют вдумчивого изучения возможностей языка.

    ВВ>Tо, что можно написать "def" вместо "const int" — это конечно мощное преимущество, но представь себе — бедным людям придется еще запоминать что есть такой загадочный "def".


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

    Я же тебе говорил о том, что этот язык можно рассматривать как развите C#. При таком взгяде на вещи любое даже самое маленькое расширение которое упрощает работу является пиемуществом.

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

    Даже приведенный тобой пример с "def" и "const int" является показательным. Ведь "const int" в C# позволяет только лишь определить константу. В отличии от С++ эта константа сама должна основываться только на константакх. В то же время def, как минимум, позволяет задать неизменяемую переменную на основе выражения. Причем как в виде члена класса, так и в виде локальной переменной. Это уже нет в C#. Это конечно есть в С++, но в С++ нет много что есть в C# и в добавок есть море собственных проблем.

    Но "def" не ограничивается введением переменных доступных только для чтения! "def" позволяет описывать локальные функции (которых тоже, кстати, нет в C#). Кроме того "def" позволяет описывать так называемое частичное применение. Это для большинства императивщиктов вообще не понять. Например, это:
    def add5 = _ + 5;

    Приводит к тому, что мы получаем функцию добавляющую 5 к своему аргументу.

    Так вот трудно объяснить неподготовленному человеку какой от этого толк, так как с высоты своих знаний (точнее с их низин) он просто не способен оценить данные возможности. Ведь он просто не поймет как все это можно применить.

    ВВ> Так что есть подозрение что это не окажет решающей роли. А решающую роль как обычно может сыграть бОльшая простота языка с сохранением хороших возможностей, более высокая дуракоустойчивость... — в общем все то, благодаря чему си-шарп "лучше" С++. А вот как у Немерле с этим?


    Нэмерл сам по себе проще C# и скорее всего (без практике утверждать тяжело, но похоже на то) более дуракоустойчивее чем C#. При этом возможности у него куда круче чем у С++. В нем нет пожалуй только небезопасных конструкций. На что лично мне наплевать.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 17:40
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Это — не плохой аргумент. Это — жизнь. В середине проекта, в котором участвует только девелоперов с полсотни, менять VCS из-за проблем с кодогенерацией в одной из шести команд — это безумие. Никто на это не пойдёт. Да и худо бедно до этого работали, пока не начали умничать.


    Не выдумывай. Во-первых, в середине проекта никто не станет прибегать к кодогенерации. Это архитектурное решение.
    Во-вторых, как тебе уже не однократно сказали, генерируемый код не нужно складывать в сорс-контроль. Это скорее является ошибкой менеджеров проекта, нежели проблемой.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 20.02.06 17:47
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Да, но есть хороший вопрос — а зачем? И вопрос далеко не риторический. Я не думаю — согласно своему опыту, который может быть и не самый показательный — что получение дополнительных наворотов вроде синтаксических макросов является серьезной причиной для перехода. Народ и существующими фичками-то не пользуется. Какие бенефиты даст немерле? Повысится надежность кода? Понизится entry level? А таковы ИМХО на сегодняший день критерии массового распространения.


    Например, вот для чего. Первые два класса абстрактные и полностью генерируются в run-time. У большинства методов датааксессоров код типовой и может легко свестись к декларации. Compile- и run-time генерация может сделать эту декларацию расширяемой, т.е. где можно мы оставляем декларацию, где хотим добавляем код по вкусу. Подобного типового кода, который нельзя затолкать в обычные процедуры, но в котором просматриваются чёткие паттерны, обычно навалом в любом проекте, нужно только захотеть поискать. Сейчас это отчасти решается средствами run-time генерации. С этим жить, конечно, можно, но не так прикольно.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 20.02.06 17:47
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    IT>>Это — не плохой аргумент. Это — жизнь. В середине проекта, в котором участвует только девелоперов с полсотни, менять VCS из-за проблем с кодогенерацией в одной из шести команд — это безумие. Никто на это не пойдёт. Да и худо бедно до этого работали, пока не начали умничать.


    VD>Не выдумывай. Во-первых, в середине проекта никто не станет прибегать к кодогенерации. Это архитектурное решение.


    Кодогенерацию начали делать с самого начала. Проблемы вылезли в середине. Что тут непонятного?

    VD>Во-вторых, как тебе уже не однократно сказали, генерируемый код не нужно складывать в сорс-контроль. Это скорее является ошибкой менеджеров проекта, нежели проблемой.


    А ты попробуй это с VSS, потом расскажешь.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 20.02.06 17:57
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>А ты разве мэнеджер? Ты вроде как программист справшивал.


    А ты вспомни свои аргументы против С++. И как кто ты их приводил? Проблемы у С++ начинаются не когда один гуру пишет некий проект, а когда таких гуру несколько. Можно хорошо писать на любом языке, но точно также можно и плохо.
    Если подходить к вопросу только с позиции "как программист" то мне тогда непонятно чем в свое время С-макросы не угодили и почему их нет в си-шарпе. Ведь я-то знаю, что лично я всегда бы использовал макросы только "хорошо" и они не усложнили бы мой код, а только сделали бы его короче и читабельнее.

    VD>Ответ на этот вопрос для менеджера очень прос. Его программисты смогут делать меньше ошибок и делать работу быстрее чем раньше. А вот детали того почему это так требуют вдумчивого изучения возможностей языка.


    Вот что такого в немерле что он позволяет делать меньше ошибок и ускорить работу мне пока не понятно.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 20.02.06 18:09
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Например, вот для чего. Первые два класса абстрактные и полностью генерируются в run-time. У большинства методов датааксессоров код типовой и может легко свестись к декларации. Compile- и run-time генерация может сделать эту декларацию расширяемой, т.е. где можно мы оставляем декларацию, где хотим добавляем код по вкусу. Подобного типового кода, который нельзя затолкать в обычные процедуры, но в котором просматриваются чёткие паттерны, обычно навалом в любом проекте, нужно только захотеть поискать. Сейчас это отчасти решается средствами run-time генерации. С этим жить, конечно, можно, но не так прикольно.


    Игорь, ты прочитай мой исходный вопрос. Что, RFD — это типичный пример бизнес-приложения? Я лично десять раз готов подписаться под тем, что синтаксические макросы это круто, но вопроса это не меняет.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 18:35
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>А вообще я уже писал, что мне лично хотелось бы увидеть написанным на Nemerle... А именно — O/R-Mapping tool.


    IT! Это по твоей части. Слабаешь?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 18:35
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Так что Microsoft ни в коем случае не упускает возможность изучить современные тенденции и недостатка в "исследовательском материале", который можно использовать по назначению у них явно нет. Да и вообще то, что будет представлять из себя C# 3.0 это уже большой прорыв вперед для mainstream языков. Я думаю в Microsoft даже слегка опасаются, что C# 3.0 не поймут и далеко не все новвоведения одобрят.


    Боюсь, что именно из-за этого в C# 2.0 были встроены довольно уродливые анонимные методы вместо аналогичных по функциональности но более красивых лямбд C# 3.0. И из-за этого такие промахи с делегатами.

    В общем, трусость приводитк к разраю вдизайне, а дизайн к ухудшению восприятия.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 18:35
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Да, но есть хороший вопрос — а зачем? И вопрос далеко не риторический. Я не думаю — согласно своему опыту, который может быть и не самый показательный — что получение дополнительных наворотов вроде синтаксических макросов является серьезной причиной для перехода. Народ и существующими фичками-то не пользуется. Какие бенефиты даст немерле? Повысится надежность кода? Понизится entry level? А таковы ИМХО на сегодняший день критерии массового распространения.


    Да, за тем, что сейчас продвинутые программисты вроде АВК вынуждены мучиться с генерацией кода на ХСЛТ (для этого совсем не предназначенном). А так он имел бы мощьный инструмент предназначенный именно для этих задач.

    Ну, а там глядишь и начнется постепенный переход на более продвинутый язык. Ведь никто себе не враг и если он увидит, что те же задачи можно решать проще, то будет решать их проще.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 20.02.06 18:48
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>IT! Это по твоей части. Слабаешь?


    Да я бы и сам поучавствовал... если можно, конечно

    Кстати, действительно можно попробовать замутить такой проект на Nemerle. У меня вот часов 5 в неделю наскребётся свободных, и я уже целый макрос написал Только, боюсь, с первого раза не получится сделать вещь... зато будет на чём тренироваться.
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 19:01
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>А ты попробуй это с VSS, потом расскажешь.


    Я с VSS 5 лет работал. Дерьмо он порядлочное, но к данному вопросу не относящееся. Просто не нужно метакод заливать в него и все. Генерируй сбе на диск и компилируй, или наследуйся от сгенерированного. Это не проблема.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 20.02.06 19:03
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Кстати, действительно можно попробовать замутить такой проект на Nemerle. У меня вот часов 5 в неделю наскребётся свободных, и я уже целый макрос написал Только, боюсь, с первого раза не получится сделать вещь... зато будет на чём тренироваться.


    Хинт. Объявляешь к классу интерфейс с одним методом, который возвращает BLToolkit.Reflection.TypeAccessor. Дальше надо сгенерировать геттеры и сеттеры, набить их в возвращаемый TypeAccessor и готово. В BLToolkit добавляется проверка на наличие такого интерфейса и готово Nemerle в действии, одна run-time генерация устранена.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 19:07
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Легко. Там и нужно-то всего сгенерировать аксессоры для геттеров и сеттеров для обхода рефлекшина. Для остального Nemerle не нужен.


    Ну, наверно при больших возможностях можно сделать лучший результат? Ведь есть большая разница в том на что ты тратиш время. На продумывание функцонала, или на отладку динамически генерируемого мсила.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 19:07
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Да я бы и сам поучавствовал... если можно, конечно


    O>Кстати, действительно можно попробовать замутить такой проект на Nemerle. У меня вот часов 5 в неделю наскребётся свободных, и я уже целый макрос написал Только, боюсь, с первого раза не получится сделать вещь... зато будет на чём тренироваться.


    Проект создать не проблема. Так что если есть желание... За одноу IT будут помоники.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 20.02.06 19:09
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    IT>>А ты попробуй это с VSS, потом расскажешь.


    VD>Я с VSS 5 лет работал. Дерьмо он порядлочное, но к данному вопросу не относящееся. Просто не нужно метакод заливать в него и все. Генерируй сбе на диск и компилируй, или наследуйся от сгенерированного. Это не проблема.


    Ну так ты попробуй не заливать метакод. А потом попробуй закоммитить весь проект. Когда устанешь убирать галочки с метакода при каждом коммите, тогда расскажешь.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 19:13
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Ну так ты попробуй не заливать метакод. А потом попробуй закоммитить весь проект. Когда устанешь убирать галочки с метакода при каждом коммите, тогда расскажешь.


    А какие проблемы? Если у тебя линк, то ВСС ничего вроде не делает.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 20.02.06 19:19
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Я конечно могу обяснить в чем разница между текстукльными макросами и модификацией АСТ на базе квази-цитирования. Но это уже сто раз обсуждалось. Не проще ли сделать поиск?


    Я понимаю в чем разница, вопрос не в этом. Немерле появился сравнительно недавно, си-шарп — уже сравнительно давно. Ты мне веришь, что я могу использовать текстовые макросы только на благо, так сказать, отечества? Когда разрабатывали си-шарп, текстовые макросы решили убрать, хотя мы и потеряли вместе с ними дополнительные возможности. Еще раз — я не сравниваю макросы немерле и макросы С. Я понимаю, в чем недостатки макросов С и чем макросы немерле лучше. Но при этом макросы С тоже могут быть очень удобны и полезны, особенно если — вернемся годика этак на 3 назад, прям в 5ый класс — никакой реальной работающей альтернативы им нет. А теперь собственно вопрос — как ты думаешь, почему сишных макросов все-таки нет в си-шарпе?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 20.02.06 19:22
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>RFD используется в самых что ни на есть типичных бизнес приложениях.


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

    IT>Причём подход, используемый в BLToolkit/RFD способен навсегда закрыть тему DAL и свести разработку этого лэйера к декларативному описанию. Причём к декларативному описанию не в XML или других чуждых форматах, а непосредственно в терминах языка разработки приложения, что позволяет гибко совмещать декларативноть с императивными расширениями.


    Скажи, а как ты видишь реализацию РФД на немерле когда весь бизнес-код на си-шарпе?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 20.02.06 19:42
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    IT>>RFD используется в самых что ни на есть типичных бизнес приложениях.


    ВВ>Подмену понятие чувствуешь?


    Какой смысл мне что-то подменять? Может я не чувствую смысла в твоём вопросе?

    ВВ>Скажи, а как ты видишь реализацию РФД на немерле когда весь бизнес-код на си-шарпе?


    Для того, чтобы использовать RFD из немерле, RFD на немерле переписывать не надо. Так же как и не надо переписывать весь фреймворк. Для устранения проблем run-time генерации нужно написать несколько макросов, которые потом и использовать из приложений, написанных на немерле. Первым делом я бы начал писать на немерле именно те вещи, которые сейчас генерируются в run-time — это тот самый DAL и ObjectModel. Причём, если с первым всё понятно, то со второй я даже не представляю сколько можно нафантазировать.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 20.02.06 19:55
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    Гениально. Как только я до этого не додумался? Nemerle это действительно позволяет — вот и ответ на вопрос о конфликтующих расширениях.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 20.02.06 20:16
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Для того, чтобы использовать RFD из немерле, RFD на немерле переписывать не надо. Так же как и не надо переписывать весь фреймворк. Для устранения проблем run-time генерации нужно написать несколько макросов, которые потом и использовать из приложений, написанных на немерле. Первым делом я бы начал писать на немерле именно те вещи, которые сейчас генерируются в run-time — это тот самый DAL и ObjectModel. Причём, если с первым всё понятно, то со второй я даже не представляю сколько можно нафантазировать.


    Ключевые слова выделены
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: yrashk  
    Дата: 20.02.06 20:17
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>>>Да она сама в Лиспе под большим вопросом. Язык то по сути динамически типизированный. Ну, как ты сможешь определить что некий парамерт это получает INT если в него передано сложное выражение?

    Y>>(declare (type integer arg)) ?

    VD>У макроса тип параметра не может быть integer. У него тип параметра должен быть "векта АСТ". Для Лиспа это будет означать S-выражение.

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

    (defmacro mymacro (a)
    (declare (type integer a))
    `(print ,a))
    => MYMACRO
    (mymacro "1")
    => exception raised
    (mymacro 1)
    =>

    1
    1

    это плод моих галлюцинаций?
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 20.02.06 20:26
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    IT>>Для того, чтобы использовать RFD из немерле, RFD на немерле переписывать не надо. Так же как и не надо переписывать весь фреймворк. Для устранения проблем run-time генерации нужно написать несколько макросов, которые потом и использовать из приложений, написанных на немерле. Первым делом я бы начал писать на немерле именно те вещи, которые сейчас генерируются в run-time — это тот самый DAL и ObjectModel. Причём, если с первым всё понятно, то со второй я даже не представляю сколько можно нафантазировать.


    ВВ>Ключевые слова выделены


    Я правда не понимаю что ты хочешь этим сказать.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 20.02.06 20:35
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Я правда не понимаю что ты хочешь этим сказать.


    Вот сейчас я положим пишу на выбенет а си-шарп не знаю — есть у меня какие-то проблемы при использовании РФД? Думаю, что нет. А если переписать все это добро используя мощные компайл-тайм фичи немерле? Фактически мы начинаем терять ту возможность, о который ты сам только что писал — возможность легко _совмещать_ языки.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 20.02.06 21:08
    Оценка:
    Заметил пару вещей, которые можно было бы улучшить.

    VK>| (_, _) when (otherCurrency == currency) => this

    | _ when (otherCurrency == currency) => this

    VK>prices.Map(fun(junk, price) { (junk, price.ConvertTo(Currency.RUB)) });
    // так возможно будет понятнее
    prices.Map(fun((junk, price)) { (junk, price.ConvertTo(Currency.RUB)) });[/
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 20.02.06 21:46
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    IT>>Я правда не понимаю что ты хочешь этим сказать.


    ВВ>Вот сейчас я положим пишу на выбенет а си-шарп не знаю — есть у меня какие-то проблемы при использовании РФД? Думаю, что нет. А если переписать все это добро используя мощные компайл-тайм фичи немерле? Фактически мы начинаем терять ту возможность, о который ты сам только что писал — возможность легко _совмещать_ языки.


    Ты имеешь ввиду что нельзя будет использовать макросы Немерле из других языков? Ну так это ясный перец. Но результаты работы этих макросов использовать вполне можно будет. Тот же RFD можно доработать таким образом, что он будет либо сам продолжать генерировать необходимые вещи, либо подхватывать то, что сгенерировано Nemerle.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.02.06 23:26
    Оценка:
    Здравствуйте, yrashk, Вы писали:

    Y>это плод моих галлюцинаций?


    Это плод твоего непонимания.

    Речь не о типизации перменных в макросе, а о получении информации о типах передаваемых выражений.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: yrashk  
    Дата: 21.02.06 00:04
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    Y>>это плод моих галлюцинаций?


    VD>Это плод твоего непонимания.

    VD>Речь не о типизации перменных в макросе, а о получении информации о типах передаваемых выражений.

    Подождите, подождите. О каких переменных Вы толкуете?

    "(defmacro mymacro (a)
    (declare (type integer a))
    `(print ,a))"

    Чем Вам A не параметр? Мне передан параметр A, я потребовал, чтобы он был INTEGER. Хотите узнавать а не требовать? TYPE-OF/CLASS-OF к Вашим услугам. Ы?
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 21.02.06 06:12
    Оценка:
    E>Я так понимаю, что до сих пор конфликты между либами от различных производителей на уровне синтаксиса языка были большой редкостью.
    На уровне синтаксиса может и не было. А вот на уровне семантики скорее всего были. Насколько мне известно раньше на C++ коммерческие библиотеки шаблонов были очень распространенным явлением(начало-середина 90х, да и сейчас вроде какие-то остались). Уверен, что проблема совместимости разных библиотек присутствовала.

    А вообще самые плохие конфликты и баги выясняются значительно позже компиляции, и их значительно сложнее отловить и исправить. Но и тут ничего фатального нет. Клиенты продолжают покупать и использовать даже самые глючные компоненты и библиотеки, если они их по функциональности устраивают и саппорт работает нормально.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.02.06 06:17
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>А в плюсах не так, что ли?


    А при чем здесь плюсы? В плюсах вообще нет возможностей, предоставляемых Nemerle.

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

    +1

    Так же к этому предложению я бы добавил прекратить выискивать в данном обсуждении противников Nemerle.

    Д>Другой вариант — это разграничивать область действия макросов в явном виде, когда это необходимо.


    Эти области могут сильно пересекаться и твое решение не будет работать. Так, я пытался приводить пример описания класса агента:
    agent_class LoadBalancer
      message MsgAddNode
        { /* Здесь должно быть описание класса MsgAddNode. */
          // Для описания какой-то части потребовалось воспользоваться средствами другого макропакета.
          autosubscribe NodeListMonitor;
          ...
        }
      event EvtAddNode( m : MsgAddNode )
        {
          // В реализации метода так же могут потребоваться другие макропакеты.
        } autosubscribe MsgAddNode priority 0;


    Д>Есть еще идеи?


    1. Позволять использовать квалифицированное имя для расширений синтаксиса в случае конфликтов:
    agent_class LoadBalancer
      message MsgAddNode
        { /* Здесь должно быть описание класса MsgAddNode. */
          // Для описания какой-то части потребовалось воспользоваться средствами другого макропакета.
          alien.autosubscribe NodeListMonitor;
          ...
        }
      event EvtAddNode( m : MsgAddNode )
        {
          // В реализации метода так же могут потребоваться другие макропакеты.
        } sobjectizer.autosubscribe MsgAddNode priority 0;

    Причем, чтобы достаточно было указать минимально различимое имя (не полное, которое может быть очень длинным).

    В качестве альтернативного синтаксиса для указания квалифицированного имени
    autosubscribe#sobjectizer MsgAddNode ...;


    2. Позволить ввести псевдонимы для ключевых слов.
    alias autosubscribe from Macro.Library.Alien to msg_subscribe;
    alias autosubscribe from SObjectizer.Macro.Library to event_subscribe;
    agent_class LoadBalancer
      message MsgAddNode
        { /* Здесь должно быть описание класса MsgAddNode. */
          // Для описания какой-то части потребовалось воспользоваться средствами другого макропакета.
          msg_subscribe NodeListMonitor;
          ...
        }
      event EvtAddNode( m : MsgAddNode )
        {
          // В реализации метода так же могут потребоваться другие макропакеты.
        } event_subscribe MsgAddNode priority 0;


    И ограничить область действия alias-ов.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 21.02.06 07:15
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>А при чем здесь плюсы? В плюсах вообще нет возможностей, предоставляемых Nemerle.


    но проблемы с библиотеками там в точности такие, как ты описал.


    E>1. Позволять использовать квалифицированное имя для расширений синтаксиса в случае конфликтов:


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

    E>2. Позволить ввести псевдонимы для ключевых слов.


    алиасы — да, тоже неплохой вариант.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.02.06 09:59
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Я не знаю как ты считал строчки кода, но в любом случае, это лучше чем тот кусок спагетти, что привёл ты.


    +1

    Андрей, а ты мог бы этот же пример на Smalltalk написать? Хоть это и оффтопик в данной ветке, но лично мне очень интересно чистое ОО решение увидеть.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[4]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 21.02.06 10:25
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Помогите вывести урода на чистую воду.


    Рекомендую вспомнить про какую-то фичу, о которой забыл сразу, а потом сделать ряд "контрольных" "уточнений" к изначальному заданию.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.02.06 10:42
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>А разница могла бы быть в процессе разработки.


    Интересная ссылочка. Ее бы в тему Проектирование и рефакторинг
    Автор: VladD2
    Дата: 09.02.06
    ...


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 21.02.06 11:53
    Оценка:
    Здравствуйте, eao197, Вы писали:

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


    Просто он изначально разрабатывался не как язык, не как библиотека, и не как ИДЕ, пусть и скриптуемая сама из себя, а как комплексная среда помогающая человеку. То есть вначале принципы, потом язык, стандартные библиотеки классов, оболочка. И всё это цельно увязано друг с другом. Можно писать и на ST без "живой" среды, например в emacs на Gnu ST. Но зачем?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 21.02.06 12:03
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Я же и привёл. Вот его и нужно сравнивать с Nemerle.


    Нет, это не то. К тому же на Nemerle можно это переписать один-в-один. Будет просто чуть короче, но абсолютно не интересно.

    VK>>Подсказка: В Nemerle паттерн-мэтчинг == switch/case.


    ANS>В любом источнике, где объясняется сопоставление с образцом, сказано, что он используется для разложения типа на составляющие.


    На самом деле все гораздо банальнее. Сопоставление с образцом это именно сопоставления значения любого типа(не обязательно алгебраического или другой сложной структуры данных, можно и значения простых типов сопоставлять) с набором образцов. Образцы при этом вполне могут быть литералами. Сопоставление с образцом это в первую очередь абстракция, и в этом свете switch/case это не что иное как частный случай сопоставления с образцом. К тому же в Nemerle, да и в ряде других языков сопоставление с образцом как синтаксическая конструкция это нечто большее и распологает рядом дополнительных возможностей, например можно проверять предварительные условия(guards) или проверять типы(не деконструирую их).

    ANS>Я не спорю, что припомощи набора if & goto можно смоделировать вызов процедур, но это не значит, что вызов процедур == if.


    Нет, ты совершенно ничего не понял. В Nemerle вообще нет switch/case, равно как и if/else(который существует только в виде макроса). Все делается этим самым сопоставлением, при этом какой конкретно код сгенерируется зависит исключительно от случая и компилятора.

    ANS>"На любом языке можно писать как на Фортране" (с).


    Разница только в том, что на Nemerle можно писать в точности как на C#, но не наооборот.

    ANS>Твой пример нормальный. Только его нужно писать с помощью родных средств C#. Вот еще вариант — функциональщики обычно хвастаются с какой лёгкостью делаются деревья на pattern matching. Вот и нужно сделать дерево на простое объектах и на pattern-matching.


    Ну тогда это будет уже абсолютно несправедливо по отношению к C#. На этом примере он полностью сольет Nemerle, даже никакие ухищрения не помогут. Можно было бы простые лексер и парсер написать, но с ними та же история. Nemerle создавался как идеальный язык для написания компиляторов, вообще как язык на котором просто и легко будет написать компилятор самого Nemerle. Первый компилятор Nemerle, написанный на C#, если мне не изменяет память вообще не больше двух-трех месяцев прожил, они его еще до релиза первой публичной версии переписали(причем изначально в функциональном стиле с GADT, списками и прочей ерундой).
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 21.02.06 12:32
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Нет, ты совершенно ничего не понял. В Nemerle вообще нет switch/case, равно как и if/else(который существует только в виде макроса). Все делается этим самым сопоставлением, при этом какой конкретно код сгенерируется зависит исключительно от случая и компилятора.


    Мой point в том, что сравнивать switch с pettern matching это сверхупрощение.

    ANS>>Твой пример нормальный. Только его нужно писать с помощью родных средств C#. Вот еще вариант — функциональщики обычно хвастаются с какой лёгкостью делаются деревья на pattern matching. Вот и нужно сделать дерево на простое объектах и на pattern-matching.


    VK>Ну тогда это будет уже абсолютно несправедливо по отношению к C#. На этом примере он полностью сольет Nemerle, даже никакие ухищрения не помогут.


    ???. один класс с C#2 итератором полностью сольёт?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: yrashk  
    Дата: 21.02.06 12:40
    Оценка:
    Здравствуйте, little_alex, Вы писали:


    Y>>Чем Вам A не параметр? Мне передан параметр A, я потребовал, чтобы он был INTEGER. Хотите узнавать а не требовать? TYPE-OF/CLASS-OF к Вашим услугам. Ы?


    _>Нужно:

    _>
    _>;(mymacro 10) => ok
    _>;(mymacro (+ 1 2)) => ok
    _>;(mymacro "bla-bal") => error (причем во время распахивания макроса)
    _>;(mymacro (substr "bla-bla" :start 0 :end 2)) => error (причем во время распахивания макроса)
    _>;(mymacro (cosh (+ 1 2 3 (* 10 20))) => ok
    _>;(let ((x 10))
    _>;  (declare (type number x))
    _>;    (mymacro x))) => ok
    
    _>;(let ((x "bla-bla"))
    _>;  (declare (type string x))
    _>;    (mymacro x))) => error
    
    _>;

    _>Напишешь такое ?

    Скажите, а чем Вам EVAL не угодил?
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 21.02.06 12:46
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Это не придирки. Это способ показать, что мне не навится предложенное решение.


    У меня складывается впечатление, что тебе хочется любым способом сказать, что "фигня этот ваш Немерле". Лучше бы попробовал какую-нибудь реальную проблему в нём найти. Всем бы полезней было.

    E>Сам же писал недавно про историю, когда в условиях цейтнота на косяки в конфигурации наткнулись. Хотел бы лично ты в таких условиях враперы для каких-то либ писать?


    Если бы проблема решалась раперами, то написал бы как два байта.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.02.06 13:03
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>У меня складывается впечатление, что тебе хочется любым способом сказать, что "фигня этот ваш Немерле". Лучше бы попробовал какую-нибудь реальную проблему в нём найти. Всем бы полезней было.


    Если бы хотел, то сказал. Например, ничего не мешает мне по поводу и без повода говорить "Java must die!".

    Я (думаю, как и AVK), понять не могу, в чем же засада. Ну не бывает языков без недостатков. Даже Влад после восхваления C# теперь уже на Nemerle переключился.

    Потенциально возможные конфликты синтаксических расширений за проблему не принимаются. :zx:
    Ну и ладно. Каждый меряет Nemerle по своим задачам. Тебе было интересно compile-time генерацию посмотреть. Ты для себя проблем не увидел. Вот и здорово.
    Я его по своим меркам посмотрел. Получилось пока не так здорово.

    E>>Сам же писал недавно про историю, когда в условиях цейтнота на косяки в конфигурации наткнулись. Хотел бы лично ты в таких условиях враперы для каких-то либ писать?


    IT>Если бы проблема решалась раперами, то написал бы как два байта.


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


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 21.02.06 13:06
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>???. один класс с C#2 итератором полностью сольёт?


    Да будет тебе известно, что Nemerle это по большому счету надмножество C# 2.0, за минусом небезопасных конструкций и пары других мелочей. Если не пользоваться дополнительными возможностями и всегда указывать типы, то програма на Nemerle от програмы на C# 2.0 семантически отличается мягко говоря мало.

    Приведи мне пример хорошего кода на C# 2.0 с использованием итераторов(ну и дженериков желательно тоже, в общем сложный код) решающий задачу(например задачу представления AST или что-то в этом духе), которую ты имеешь в виду. Тогда посмотрим окажется ли аналогичный(с похожей архитектурой и решающий ту же задачу) код на Nemerle лучше и читабельнее. Пока конкретных предложений я не услышал.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 21.02.06 13:22
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Я (думаю, как и AVK), понять не могу, в чем же засада. Ну не бывает языков без недостатков. Даже Влад после восхваления C# теперь уже на Nemerle переключился.


    Недостатки скорее всего в нём есть. Как же без них? Вопрос перевесят ли его достоинства эти недостатки и недостатки существующих языков.

    E>Потенциально возможные конфликты синтаксических расширений за проблему не принимаются. :zx:


    Я с этим смогу жить, в плюсах и не с таким жил и как видишь пока жив.

    E>Я его по своим меркам посмотрел. Получилось пока не так здорово.


    Расскажи нам что не так здорово? Поделись!

    IT>>Если бы проблема решалась раперами, то написал бы как два байта.


    E>И ты считаешь, что это нормально? Язык провоцирует на подобные вещи,


    Я не заметил никаких явных провокаций. Точно так можно сказать что C провоцирует писать функции с одинаковыми именами, а C++ — классы.

    E>а исправлять их должен суппорт конкретного продукта или сам пользователь?


    Причём тут саппорт вообще? Если я напишу функцию Foo в моём продукте, а ты по случайному недоразумению напишешь такую же, то кому из нас её исправлять?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 21.02.06 13:29
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Я (думаю, как и AVK), понять не могу, в чем же засада. Ну не бывает языков без недостатков. Даже Влад после восхваления C# теперь уже на Nemerle переключился.


    Не бывает. Я даже уверен, что в Nemerle они есть. Но тех недостатков, на которые ты упорно указываешь, я не вижу.

    E>Потенциально возможные конфликты синтаксических расширений за проблему не принимаются. :zx:

    E>Ну и ладно. Каждый меряет Nemerle по своим задачам. Тебе было интересно compile-time генерацию посмотреть. Ты для себя проблем не увидел. Вот и здорово.
    E>Я его по своим меркам посмотрел. Получилось пока не так здорово.

    Напиши код на Nemerle, который, по твоему мнению, может вызвать проблему (проблемы). А то абстрактно все рассуждать мастера, только мало толку. Т.е. я, похоже, не не вижу проблему, а не понимаю, о какой именно проблеме ты постоянно говоришь. О конфликте имён макросов? Так его нет, этого конфликта, — пространства имён всё разрулят
    Автор: Oyster
    Дата: 20.02.06
    .
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.02.06 13:48
    Оценка:
    Здравствуйте, IT, Вы писали:

    E>>Я его по своим меркам посмотрел. Получилось пока не так здорово.


    IT>Расскажи нам что не так здорово? Поделись!


    Игорь, я уже говорил. Но меня здесь на смех поднимают. А роль городского сумашедшего, знаешь ли, не самая для меня привычная.

    IT>Я не заметил никаких явных провокаций. Точно так можно сказать что C провоцирует писать функции с одинаковыми именами, а C++ — классы.

    IT>Причём тут саппорт вообще? Если я напишу функцию Foo в моём продукте, а ты по случайному недоразумению напишешь такую же, то кому из нас её исправлять?

    Это известная проблема в C и раних версиях C++. В C для нее так и не нашли исправления, придумали только workaround в виде префиксования имен функций и макросов (макросы к тому же рекомендуют большими буквами набирать). Но это все рекомендации, соблюдение которых невозможно проконтролировать. И их нарушения, как я проказал в примере с ACE, могут привести к проблемам.
    В C++ эту проблему для функций и классов разрешили путем изменения языка -- добавлением пространств имен. Чтобы случился конфликт имен в разных продуктах от разных производителей при использовании пространств имен нужно постараться. Но с макросами проблема осталась. Если в библиотеке libhttp (если не ошибаюсь от W3C) есть макрос LOG_ERR, то он пересекается с моим макросом LOG_ERR и мне приходится вручную в месте каждого конфликта его разрешать какими-то очередными workaround-ами. И не всегда гарантируется, что я вовремя замечу, что пользуюсь не тем макросом.

    В Nemerle с синтаксическими расширениями (после соответствующей директивы using) ситуация похожа на ситуацию с макросами в C/C++ -- если встречаются два макроса с одинаковыми именами, то разрешение этого конфликта ложится на плечи того, кто с конфликтом встретился. Но в Nemerle ситуация чуть хуже. В C/C++ макросам даже нужно давать длинные корявые имена, чтобы они сразу бросались в глаза. Поэтому в C++ нормальным именем может быть SOL4_EVENT_WITH_INCIDENT_TYPE. Но при расширении синтаксиса в язык добавляются конструкции, которые по-определению будут использоваться часто (иначе их можно было бы не вводить вообще). Поэтому и использование их должно быть удобным. А это значит, что имена новых ключевых слов должны быть короткими, емкими, лаконичными и, вероятно, общеупотребительными. В таких условиях простое event гораздо предпочтительнее, чем sol4_event_with_incident_type. Но, чем короче и общеупотребительнее имя, тем больше верятность конфликта при совместном расширении синтаксиса разными библиотеками.

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

    Просто, если я соберусь делать какую-то библиотеку с расширением синтаксиса, я хочу чтобы мои пользователи имели с ней как можно меньше проблем. Введение в синтаксис таких ключевых слов, как agent, subscribe, message, priority, event конфликты с другими библиотеками может спровоцировать. А значит -- доставить проблемы. Вот и все.

    При этом я не говорю и не подразумеваю, что Nemerle фуфло -- это время решит, а не я. Но вот наличие непосредственно в языке механизма, который бы просто разруливал такие конфликты мне кажется необходимым (крайне желательным, по меньшей мере). Хотябы в таком виде: в месте конфликта уточнять ключевое слово именем макропакета:
    sobjectizer#agent ... sobjectizer#event ... {
      smtp#agent ... smtp#subscribe ...;
    } sobjectizer#subscribe ...


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.02.06 13:56
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Но он обертки писать не хочет и оба расширения хочет использовать одновременно.


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

    VK>Я собственно ему это и сообщил, и примеры давал, просто обсуждение Nemerle слишком разрослось и сложно все сообщения прочитать.


    Как раз таки внимательно читаю. Но мое мнение
    Автор: eao197
    Дата: 21.02.06
    по этому вопросу отличается от твоего (я не думаю, что подобные конфликты должен решать суппорт, здесь не мешало бы иметь поддержку со стороны языка).

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


    ИМХО, этот постулат противоречит убежденности, например, VladD2


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: little_alex  
    Дата: 21.02.06 14:08
    Оценка:
    Здравствуйте, yrashk, Вы писали:

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

    Y>Скажите, а чем Вам EVAL не угодил?
    Ну и как написать mymacro с его помощью?
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: little_alex  
    Дата: 21.02.06 14:09
    Оценка:
    Здравствуйте, Lazy Cjow Rhrr, Вы поставили:

    Если не секрет, что там смешного
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 21.02.06 14:39
    Оценка:
    Здравствуйте, Oyster, Вы писали:

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


    O>Да нет уж. Я уже тут где-то писал, что у Nemerle есть синтаксис и он позволяет не писать на "птичьем" языке, в то время как Форт с Лиспом буквально требуют этого — вот отличие. И вот почему Nemerle не станет кучкой диалектов — потому что у него уже есть основной диалект, который будет только расширяться.


    Насчет Форта немного не так. У него есть "определяющие" слова, т.е. immediate слова. Эти слова — нечто вроде макросов. Их синтаксис и сложность полностью зависит от функциональности определяющего слова, то бишь тела (алгоритма) макроса. У меня была своя либа на Форте, для программирования этих определяющих слов (макросов), которые производили синтаксический разбор последующего потока, т.е. запросто можно было отходить от польской записи и использовать "обычную". ВСЕ управляющие структуры Форта реализованы как определяющие слова, то бишь макросы, и почти все они — вовсе не "польские" по синтаксису.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 21.02.06 14:46
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Просто, если я соберусь делать какую-то библиотеку с расширением синтаксиса, я хочу чтобы мои пользователи имели с ней как можно меньше проблем. Введение в синтаксис таких ключевых слов, как agent, subscribe, message, priority, event конфликты с другими библиотеками может спровоцировать. А значит -- доставить проблемы. Вот и все.


    Совершенно верно. Выходов тут пять:

    1. Забить и использовать (авось)
    2. Испугаться и использовать только внутри своих библиотек (или не использовать вообще — в Nemerle вкусностей хватает и без того)
    3. Использовать макросы-обёртки (как уже предполагалось)
    4. Договориться о правилах именования first tokens (добавлять какой-нить префикс)
    5. Создать коммитет по стандартизации расширений языка

    Всё решаемо.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 21.02.06 14:51
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Хотябы в таком виде: в месте конфликта уточнять ключевое слово именем макропакета:


    А использование пространства имён тебя устроит?
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 21.02.06 14:52
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Насчет Форта немного не так. У него есть "определяющие" слова, т.е. immediate слова. Эти слова — нечто вроде макросов. Их синтаксис и сложность полностью зависит от функциональности определяющего слова, то бишь тела (алгоритма) макроса. У меня была своя либа на Форте, для программирования этих определяющих слов (макросов), которые производили синтаксический разбор последующего потока, т.е. запросто можно было отходить от польской записи и использовать "обычную". ВСЕ управляющие структуры Форта реализованы как определяющие слова, то бишь макросы, и почти все они — вовсе не "польские" по синтаксису.


    Ну и кто будет писать на Форте в таком стиле?

    Это уже вопрос идеологии — никто не будет так писать на Форте, так же как никто не будет писать в императивном стиле на Лиспе (LOOP не в счёт — не всем нравится).
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 21.02.06 14:56
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>
    VD>[Accessor]
    VD>mutable _somePropery : int;
    
    VD>// Эквивалентно следующей конструкции: 
    VD>private mutable _somePropery : int;
    
    VD>public SomePropery : int 
    VD>{
    VD>  get { _somePropery }
    VD>  set { _somePropery = value; }
    VD>}
    VD>


    Придерусь к записи. Макрос Accessor по умолчанию создает только геттер. Чтобы заставить его
    создать сеттер, надо так и сказать [Accessor(WantSetter = true)] (в названии проперти мог ошибиться)
    --
    Re[33]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.02.06 14:59
    Оценка:
    Здравствуйте, IT, Вы писали:

    E>>Хотябы в таком виде: в месте конфликта уточнять ключевое слово именем макропакета:


    IT>А использование пространства имён тебя устроит?


    Можно пример?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[33]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 21.02.06 15:01
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>А использование пространства имён тебя устроит?


    Похоже, что имя пространства имён не получится использовать в качестве квалификатора first token-а, к сожалению. Из доки:

    The syntax keyword is used here to define a list of elements forming the syntax of the macro call. The first token must always be an unique identifier (from now on it is treated as a special keyword triggering parsing of defined sequence). It is followed by tokens composed of operators or identifiers passed as string literals or names of parameters of macro. Each parameter must occur exactly once.


    Также проверено на практике. Т.е. если у нас такие макросы:

    namespace Company1
    {
        macro printer(n)
        syntax ("printer", "-->", n)
        {
            <[ WriteLine("Company1: " + $n.ToString()) ]>
        }
    }
    
    namespace Company2
    {
        macro printer(n)
        syntax ("printer", "-->", n)
        {
            <[ WriteLine("Company2: " + $n.ToString()) ]>
        }
    }

    То вот такой код не прокатит:

    Company1.printer --> 25
    Company2.printer --> 25

    Хотя, может, это я просто пишу неправильно?...

    Зато можно явно задать префикс для первого токена, т.е. пытаться делать имя макросе уникальным. Очевидное и не очень красивое решение.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 21.02.06 15:01
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Я уже тут где-то писал, что у Nemerle есть синтаксис и он позволяет не писать на "птичьем" языке, в то время как Форт с Лиспом буквально требуют этого — вот отличие.


    Офф-топ: Кстати, обычно под словом "птичий" понимают не язык с гибким синтаксисом, а язык с кучей "птичек" и прочих значков в противовес словам. Значение таких значков невозможно понять, а можно только запомнить. Яркий представитель таких языков — перл.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 21.02.06 15:16
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Офф-топ: Кстати, обычно под словом "птичий" понимают не язык с гибким синтаксисом, а язык с кучей "птичек" и прочих значков в противовес словам. Значение таких значков невозможно понять, а можно только запомнить. Яркий представитель таких языков — перл.


    Совершенно верно.
    Re[35]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 21.02.06 15:16
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Тогда и проблемы не будет.


    Да. Чего-то подобного надо, наверное. Если тут подводных камней нету, конечно...
    Re[36]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 21.02.06 15:20
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    WH>>Тогда и проблемы не будет.

    O>Да. Чего-то подобного надо, наверное. Если тут подводных камней нету, конечно...
    Не вижу.
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 21.02.06 15:30
    Оценка:
    Здравствуйте, VladD2, Вы писали:


    VD>К примеру, согласить круто вместо:

    VD>
    VD>string.Formar("Имя: {0} Фамилия: {0}", name, lastname)
    VD>

    VD>писать:
    VD>
    VD>$"Имя: $name Фамилия: $lastname", 
    VD>

    VD>Причем ошибиться нигде нельзя! Если ты впишешь неверное имя переменной в текст, то тебя остановит компилятор! А в C# ты рискушь получить ошибку во время выполнения (неверный форма или еще что).

    Ну, положим, от ошибки неверного формата (кстати, имеет ли это место быть в случае ToString()) этот макрос не спасет. Он всего лишь делает запись короче и не позволяет ошибиться с циферками в скобочках. Всё. После его прохода у компилятора оказывается примерно вот что:.
    // До
    def a = 5; 
    $"var a has value $a, blah-blah-blah";
    
    // После
    def a = 5;
    def tmp = StringBuilder("var a has value ");
    tmp.Append(a.ToString());
    tmp.Append(", blah-blah-blah");
    tmp.ToString();
    --
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 21.02.06 15:40
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

    СТ>Ну, положим, от ошибки неверного формата (кстати, имеет ли это место быть в случае ToString()) этот макрос не спасет.


    Зато спасут макросы из Nemerle.IO: printf, sprintf и fprintf. Естественно эти макросы лишены недостатков своих сишных аналогов. А еще к своему удивлению я только что обнаружил scanf и иже с ним.

    Вообще не знаю как для production кода, но для тестовых приложений эти макросы незаменимы.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: Programmierer AG  
    Дата: 21.02.06 18:16
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>После этого я понял, что придумать язык типа С++ еще тяжелее, чем реализовать.

    +1
    А реализовать его практически невозможно.
    Можно посмотреть на это с точки зрения проблемы представления знаний. Стандарт насчитывает порядка 700 страниц на английском языке. Воды, понятное дело, в стандарте нет. Даже у экспертов C++ случаются разночтения по поводу некоторых сложных моментов. При этом весь этот объем знаний должен быть отражен в компиляторе, на языке, значительно менее выразительном по сравнению с английским — на C.
    Неудивительно, что по хорошему соответствующий стандарту компилятор в природе существует только один (Comeau), да и ему веры нет.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.02.06 18:44
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>В общем, я решил попробовать написать такой макрос.


    Интересно получилось.

    Только вот о вкусах, конечно, можно спорить, но мне этот код красивым не показался. В особенности <[ и ]> -- путаюсь к чему что относится. Вспоминаются слова классика
    Автор: c-smile
    Дата: 21.02.06
    :

    То что технически грамотно должно быть как минимум красиво.



    O>
    O>using Oyster;
    
    O>metaclass TestClass {
    O>    prop1 : int;
    O>    prop2 : string
    O>}
    O>


    Еще одна мысль по поводу compile-time генерации vs precompile-time. В случае precompile-time можно нагенерировать обычный класс с комментариями. Он может быть обработан инструментом типа javadoc и программисту будет предоставлена документация о том, что в TestClass кроме prop1 и prop2 будут еще геттеры-сеттеры. А вот такой DSL как документировать?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 21.02.06 19:20
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Так что тебе нужно заменить твой ХМЛ на нечто более выразительное. Ты и сам это пыташся сделать делая визуальные средства редактирования ХМЛ-ей для своих ДСЛ-ей.


    Ей-богу это уже религия какая-то. Честно говоря, не вижу особой разницы между:

    <EntityName Attribute1="" Attribute2="" />


    и

    EntityName
    {
        Attribute1="";
        Attribute2="";
    }
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 21.02.06 19:25
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>3. ХСЛТ не полноценный ЯП и если что-то нужно посчитать и т.п., то прийдется делат вставке на другом ЯП, что усложняет процесс.


    А XSLT + XPath?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 21.02.06 20:38
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Интересно получилось.


    E>Только вот о вкусах, конечно, можно спорить, но мне этот код красивым не показался. В особенности <[ и ]> -- путаюсь к чему что относится. Вспоминаются слова классика
    Автор: c-smile
    Дата: 21.02.06
    :

    E>

    E>То что технически грамотно должно быть как минимум красиво.

    E>

    Ты прав — о вкусах не спорят. Ну а к <[ и ]> можно привыкнуть — не сильно страшнее скобочек в шаблонах C++. Потом, ты же привык к тому, что надо писать "> > >", а не ">>>", например. Зато оцени, как красиво и элегантно описывается кусок AST — фактически ты пишешь код на Nemerle, только внутри этих самых скобочек. А возможности какие — такое шаблонам и не снилось!

    Кстати, этот корявый код (надеюсь, со временем будет получаться лучше) я налабал чуть больше, чем за час. При этом надо учитывать, что:

    1. Это был мой второй макрос на Nemerle. Первый считал факториал в compile-time, и писал я его тоже около часа
    2. У меня нет никакого опыта функционального программирования — разве что читал на RSDN — поэтому паттерн-матчинг, вывод типов, туплы и списки я юзал чисто интуитивно и прыгая по граблям.
    3. Большую часть времени заняло чтение онлайн-документации и сборок рефлектором, а не написание собственно кода.

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

    Вообще у меня впечатления от кодинга остались самые что ни на есть положительные — чувствуется мощь, элегантность и простота чуть ли не в каждой строчке (может и переборщил чуток, но мощь точно). Даже страшно себе представить, как бы выглядел такой код на Reflection.Emit. Точнее, даже представлять не хочется

    E>Еще одна мысль по поводу compile-time генерации vs precompile-time. В случае precompile-time можно нагенерировать обычный класс с комментариями. Он может быть обработан инструментом типа javadoc и программисту будет предоставлена документация о том, что в TestClass кроме prop1 и prop2 будут еще геттеры-сеттеры. А вот такой DSL как документировать?


    Да ты просто задокументируй сам макрос — делов то. Всё равно дока будет автоматом сгенерирована и полезной информации в ней будет мало. Мне, кстати, генерация в compile-time гораздо больше нравится — нет никакой возни с поддержкой кода, сгенерированного в precompile-time (класть/не класть в VSS/CVS/SVN, как следить за тем, чтобы никто ничего не модифицировал и т.д.).

    Ну а вообще меня в этой связи интересует другой интересный вопрос — а можно ли как-то из куска AST получить код на Nemerle? Типа "распечатать" AST. По идее, даже если стандартная библиотека такой фичи не содержит, это получится дописать самому. Тогда можно в макросе не делать класс, а строить AST класса и выводить его в файл или что-то вроде того. И автокомментарии можно добавить (тут бы не помешало, если бы AST содержал ноды комментариев ).
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.02.06 21:02
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:


    СТ>Ну, положим, от ошибки неверного формата (кстати, имеет ли это место быть в случае ToString()) этот макрос не спасет. Он всего лишь делает запись короче и не позволяет ошибиться с циферками в скобочках. Всё. После его прохода у компилятора оказывается примерно вот что:.


    Как же не спасет, если формата просто нет?! Ты подставляешь имена переменных которые контролируются в во время компиляции. Я кстати, совершенно случайно ошибся когда писал код и мой пример уже неверный!
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.02.06 21:02
    Оценка:
    Здравствуйте, yrashk, Вы писали:

    Y>Скажите, а чем Вам EVAL не угодил?


    EVAL и другая интерпретация идет лесом.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.02.06 21:02
    Оценка:
    Здравствуйте, little_alex, Вы писали:

    _>Если не секрет, что там смешного


    Таварщи программируют на Блабле и стало быть оценивают другие языки с его уровнея. Это не позволяет им оценить приемущества более мощьного языка (с) орла что успешно продал Яху. Вот мы и дожили когда Блаблом стал Лисп, и лисп-программисты стали блабл-программистами смеющимися над тем, что не в силах понять.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.02.06 21:02
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    Цитируй только то на что отвечашь.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.02.06 21:02
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    VK>>Ну тогда это будет уже абсолютно несправедливо по отношению к C#. На этом примере он полностью сольет Nemerle, даже никакие ухищрения не помогут.


    ANS>???. один класс с C#2 итератором полностью сольёт?


    В Нэмерле тоже есть итераторы http://nemerle.org/Yield
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.02.06 21:02
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Может не нужно сразу сложную, а проще что-нибудь, знакомое публике? Например, вот эта задача
    Автор: AndrewVK
    Дата: 13.07.05
    .


    Эту задачу даже решать не надо. Она уже решена.

    E>Причем интересно как с парсингом XML-я (может быть даже в compile-time), так и создание специализированного DSL на макросах специально для этой задачи.


    А какой смысл в данном случае в ХМЛ-е? Хотя конечно можно и ХМЛ читать. Но тут уже писать код прийдется.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 21.02.06 23:42
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    А разве нельзя просто полностью квалифицировать имя макроса? Или там такие фичи не прокатывают?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 00:00
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Ей-богу это уже религия какая-то. Честно говоря, не вижу особой разницы между:


    Это пак пара веток. А когда вместо веток люди начнут видеть кашу, то уже будет поздно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 00:00
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    VD>>3. ХСЛТ не полноценный ЯП и если что-то нужно посчитать и т.п., то прийдется делат вставке на другом ЯП, что усложняет процесс.


    ВВ>А XSLT + XPath?


    XSLT без XPath и не бывает. Я не понял о чем ты.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 00:00
    Оценка:
    Здравствуйте, Programmierer AG, Вы писали:

    PA>Стандарт насчитывает порядка 700 страниц на английском языке. Воды, понятное дело, в стандарте нет.


    Это не так. Как раз часть стандатра относящаяся к описанию самого языка в С++ даже меньше (и значительно) чем в C#. Другое дело, что описывается далеко не все. И слишком часто встречаются неопределенные вещи.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 00:00
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Еще одна мысль по поводу compile-time генерации vs precompile-time. В случае precompile-time можно нагенерировать обычный класс с комментариями. Он может быть обработан инструментом типа javadoc и программисту будет предоставлена документация о том, что в TestClass кроме prop1 и prop2 будут еще геттеры-сеттеры. А вот такой DSL как документировать?


    Ерунда какя-то. Как это обрабатывать сгенерированный класс javadoc-ами? А что на нем будет обрабатываться? Если только вручную что-то написать на сгенерированном коде, так это же идиотизм. Разумно было бы включить раздел документации в сам формат модели. Тогда ее можно было куда нужно генерировать без проблем.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 00:00
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    А можно ли как-то в генерируемом классе использовать другие макросы?
    Ведь реализация свойств по полям уже реализована в макросе Nemerle.Utility.Accessor. А реализация конструктора для всех полей в макросе Record.

    Так что если бы эти макросы можно было бы задействовать, то осталось бы только сформировать класс и список полей. Если при этом вынести в универсальный модуль такую байду как выскребание описания свойств, то код такого макроса был бы совсем небольшим и весьма понятным.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 00:04
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ВВ>>А XSLT + XPath?

    VD>XSLT без XPath и не бывает. Я не понял о чем ты.

    О том, что XSLT неполноценный ЯП. Вся арифметика там вроде есть да и вообще базовый АПИ по возможностям сравним с простенькими виртуалками типа vbcrt к тому же легко расширяется.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 00:04
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ВВ>>Ей-богу это уже религия какая-то. Честно говоря, не вижу особой разницы между:

    VD>Это пак пара веток. А когда вместо веток люди начнут видеть кашу, то уже будет поздно.

    Вот объясни мне, почему ты начинаешь видеть в этом кашу? Почему код с сишным синтаксисом в кашу не превращается? Да, в ХМЛ есть небольшой синтаксический оверхед. В бейсике тоже есть, ты тоже в его коде видишь кашу?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 00:22
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Можно пример?


    Пример же ты сам приводил, просто вместо пространства имен у тебя название макропакета, что сути не меняет.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 00:26
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    WP>> Лучшая IDE это Unix. А IDEA — игрушка. Бесполезная.


    VD>Фанаты идут лесом. (это дивиз такой)


    Керниган и Пайк это тоже фанаты, да?

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


    Мы с вами на брудершафт разве пили, ув. тов. модератор?

    Не важно что сделал я, важно то, что сделали они. Они сделали игрушки. Игрушки — это полезно, игрушки развивают хватательные и прочие навыки у маленьких деток, но после определённого возраста игрушки, как бы, сменить следовало бы, на более сложные...
    Re[7]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 00:33
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    WP>> Но макры это не такое уж однозначное зло. Это мощный инструмент, но в шаловливых ручонках мощный инструмент это страшно. Мощный инструмент нужен мощному человеку, а в шаловливые индийские ручонки надо давать ограниченную со всех сторон Java.


    VD>Макросы являеются злом только в С/С++. Точно так же именно в этих языках злом можно называть метапрограммирование на шаблонах.


    Я бы не назвал Boost злом. Boost это вообще единственное хорошее, доброе и светлое, что есть в мрачном царстве C++.

    VD> И это так не из-за какой-то мифической мегасилы макросов или шаблонов. Это следствие того, что в этих макросах нельзя добиться хорошей читабельности и полноценной диагностики ошибок.


    Точнее сказать — нельзя добится полноценной типизации и самодокументированности.

    VD> Так вот макросы Нэмерла избавлены от оных недостатков. И они просто являются мощным инструментом к злу не относящемуся.


    Увы, не избавленны. Только что проверки ради создал работающую, но абсолютно нечитабельную и отладке не подлежащую макру. Показать?
    Re[5]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 00:34
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    WP>> Разработчики C# и без того совсем не глупые люди. И что такое Лисп, и что есть Haskell они знают получше многих прочих.


    VD>Несомненно. Но у них есть страх сделать что-то плохое. И языки вроде Нэмерла могут снять такой страх.


    Оказалось, они про Nemerle и не слышали. Это уже исправленно. Теперь они радуются.
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 22.02.06 00:49
    Оценка:
    Здравствуйте, eao197, Вы писали:

    IT>>А использование пространства имён тебя устроит?


    E>Можно пример?


    Нельзя. Шашечкой с наскоку махнуть не получилось. Не работает этот подход. Так что пока остаются только раперы.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 01:42
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Вот объясни мне, почему ты начинаешь видеть в этом кашу? Почему код с сишным синтаксисом в кашу не превращается? Да, в ХМЛ есть небольшой синтаксический оверхед. В бейсике тоже есть, ты тоже в его коде видишь кашу?


    Как тебе сказать? Дело в том, что ХМЛ в 10, а то и более раз более пушист нежели конкретный язык. При некотором объеме он бдет сливаться и выглядить как набор скобочек.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 01:42
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>О том, что XSLT неполноценный ЯП.


    И?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 01:42
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>А разве нельзя просто полностью квалифицировать имя макроса? Или там такие фичи не прокатывают?


    Речь о макросах изменяющих синтаксис.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 01:43
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Надеюсь, объяснил доходчиво...


    Обращения к классам можно и маршаллить, соотвественно будешь спокойно отслеживать все вызовы в т.ч. и конструктора и фабрика у тебя может прекрасно работать через new.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 01:48
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Как тебе сказать? Дело в том, что ХМЛ в 10, а то и более раз более пушист нежели конкретный язык. При некотором объеме он бдет сливаться и выглядить как набор скобочек.


    Считаю коммент про 10 раз провокацией
    Из всего синтаксического оверхеда там только небходимость указания полного квалиф. имени элемента при его закрытии. Ну возможно префиксирование каждого элемента по пространству имен. Все. Если описываешь на ХМЛ скажем какие-то бизнес-объекты или там АСТ отличие даже по синтаксису от шарпа или бейсика будет весьма декоративным.

    В общем предлагаю создать тему XSLT vs. Nemerle и серьезно заняться обсуждением этого вопроса
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 01:48
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ВВ>>О том, что XSLT неполноценный ЯП.

    VD>И?

    И чем он неполноценный?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 02:12
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>XSLT без XPath и не бывает. Я не понял о чем ты.


    Кстати говоря, бывает. Вместо XPath можно использовать его сильно упрощенный вариант XSLPattern language.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 02:14
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>И чем он неполноценный?


    Ну, попробуй, например, на нем создать хэш-табличку.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 02:19
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    Кстати, любая ошибка в коде приводит к тому, что компилятор начинает ругаться:
    test-005.n:7:1:7:10: error: you must specify `partial' modifier on all declarations of type `TestClass'
    test-005.n:7:1:7:10: error: first defined here

    К чему бы это? Глюк?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 22.02.06 05:10
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    E>>Только вот о вкусах, конечно, можно спорить, но мне этот код красивым не показался. В особенности <[ и ]> -- путаюсь к чему что относится.


    VK>Ну во-первых нет "правильной" подсветки синтаксиса.


    +1

    Но все равно код уж сильно на Perl-овку смахивает. Это и не нравится.
    C++ шаблоны для меня так же не являются верхом изящества. Поэтому от трехэтажных шаблонов в C++ меня начинает отворачивать уже даже по эстетическим соображениям.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 22.02.06 05:16
    Оценка:
    VD>К чему бы это? Глюк?

    Думаю да, я добавил этот самый partial modifier и вообще произошел ICE. Отправлю-ка я баг-репорт.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 22.02.06 05:36
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>А можно ли как-то в генерируемом классе использовать другие макросы?


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

    VD>Ведь реализация свойств по полям уже реализована в макросе Nemerle.Utility.Accessor. А реализация конструктора для всех полей в макросе Record.


    Record это только для публичных полей(т.е. строго говоря для описания конструкторов структур). Accessor у меня использовать не получилось. Он его почему-то не опознает. Возможно это из-за того, что он обычно выполняется на более раннем этапе компиляции, или по другим причинам. Нужно спросить разработчиков языка.

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


    В универсальный модуль можно вынести. Есть еще пара мест где код можно упростить. Собственно местами я сделал лишнее и не заметил как можно сократить составление списка свойств. Если бы Accessor работал, то код выглядел бы так:
    using Nemerle.Compiler;
    using Nemerle.Collections;
    using Nemerle.Macros;
    
    namespace Oyster
    {
        macro metaclass(className, body)
        syntax ("metaclass", className, body)
        {
            def ctx = ImplicitCTX();
            def builder = ctx.Env.Define(<[ decl: public class $(className.ToString() : usesite) {} ]>);
            mutable constrParams = [];
            mutable constrCode = [];
            match (body)
            {
                | <[ { .. $props } ]> =>
                    foreach(<[ $(n : name) : $(t : name) ]> in props)
                    {
                        builder.Define(<[ decl:
                                            [Nemerle.Utility.Accessor]
                                            mutable $(n : name) : $(t : name) ;
                                       ]>);
                        def paramType = ctx.BindType(<[ $(t : name) ]>);
                        constrParams = <[ parameter: $(n : name) : $(paramType : typed) ]> :: constrParams;
                        constrCode = <[ this.$(n.NewName("_" + n.Id) : name) = $(n : name); ]> :: constrCode;
                    }
                | _ => Message.FatalError($"Invalid metaclass syntax, expected properties definition, got $body");
            }                
            builder.Define(<[ decl: public this(.. $(constrParams.Reverse())) { .. $constrCode } ]>);
            builder.Compile();
            <[ () ]>
        }
    }


    А вообще-то и неупрощенный код это всего полсотни строчек. И учитывая, что он делает работу сразу трех макросов это очень хороший результат. Но насчет выноса частоиспользуемых вещей в универсальный модуль ты пожалуй прав. Я сам думал над этим неоднократно.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 07:28
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Обращения к классам можно и маршаллить, соотвественно будешь спокойно отслеживать все вызовы в т.ч. и конструктора и фабрика у тебя может прекрасно работать через new.


    Отлично. А о перфомансе ты не подумал?
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 22.02.06 07:35
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Привел отрывок какой-то хрени


    Влад, у тебя есть, что сказать или как обычно? Или может ты таким хитрым способом хочеш сказать, что тоже думаеш, что сопоставлением с образцом в Nemerle нужно сравнивать именно с if/switch в C#?

    VD> и делашь далеко идущие выводы.


    Вывод был только один — сравнение не корректно, соответсвенно выводов из него делать нельзя. Вот такой я вывел "далекоидущий" вывод.

    VD> Человек привел аналогичный код. Ты же хрен знает что.


    Если ты так
    Автор: Andrei N.Sobchuck
    Дата: 21.02.06
    пишеш на C# то мне жаль г-на Хелсберга.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 22.02.06 07:41
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Если ты так пишеш на C# то мне жаль г-на Хелсберга.


    Н-да, так розгарячился, что не ту ссылку привёл . Имелся в виду вариант со switch
    Автор: Vermicious Knid
    Дата: 20.02.06
    ес-сно.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 22.02.06 07:49
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Здесь мне кажется есть другой момент — если-таки продолжать гнуть линию партии — как раз касающийся этой самой "тысячи" макросов. Так как появится возможность оформлять функционал в виде макросов, и ей, скажем, начнут активно пользоваться, то перед изучением новых библиотек для сотрудников надо будет проводить специальные психо-трейнинги и убрать на это время из офиса все колюще-режущие предметы. Вот представь себе библиотеку для работы, скажем, с серийным портом всю написанную на макросах. По суть вместо некого КОМ-порт АПИ у нас будет специальный язык под это дело, причем еще не факт что удачного спроектированный. И таких библиотек на большом проекте могут быть десятки. Причем в 90 случаях из 100 эти макросы не будут предлагать ничего по сравнению с обычным АПИ кроме другой формы записи.


    +1

    Можно еще и другой аспект затронуть -- отладка кода, который получился в результате использования макросов. Не кода макросов, а прикладного кода, в котором макросы будут использоваться. Я думаю, что не так уж и редко будут возникать ситуации, когда захочется посмотреть, а что же там внутри с моими параметрами происходит, почему же не работает ни хрена? Многие здесь, я думаю, пользуются пошаговой отладкой. Вот как с ней быть?

    Я хоть отладчиками и не пользуюсь практически (пошаговой отладкой так точно), но в некоторых случаях приходится код отладочными печатями разбавлять. Придется, получается отладочные печати в тела макросов засовывать (всегда ли исходники макросов будут доступны)?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 07:51
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Record это только для публичных полей(т.е. строго говоря для описания конструкторов структур). Accessor у меня использовать не получилось. Он его почему-то не опознает. Возможно это из-за того, что он обычно выполняется на более раннем этапе компиляции, или по другим причинам. Нужно спросить разработчиков языка.


    Может быть, потому, что поле ещё не добавлено в класс? Т.е. в AST есть объявление поля, но перед тем, как отработает Define, поля ещё не будет у класса. Это я на имя класса макроса посмотрел: Accessor_field_postscanMacro.

    Получается, что макросы, модифицирующие тип, вообще не получится использовать при объявлении типа. Хотя звучит это по меньшей мене странно на фоне того, что обычные макросы можно спокойно использовать в теле функции. Странно, но тем не менее немного рационально.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 07:57
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

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


    "Написанную на макросах" != "язык под это дело". Кто мешает пользоваться обычными макросами, которые не расширяют синтаксис? Потом, пихать макросы где только ни попадя не имеет смысла.

    ВВ>И таких библиотек на большом проекте могут быть десятки. Причем в 90 случаях из 100 эти макросы не будут предлагать ничего по сравнению с обычным АПИ кроме другой формы записи.


    Это, конечно, всё вопросы культуры кода. Тут, кстати, кто-то высказывал интересную мысль, что булшитеры не смогут писать макросы из-за их относительной сложности, а те, кто смогут, не будут булшитерами и будут макросы применять аккуратно
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 22.02.06 08:03
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Это, конечно, всё вопросы культуры кода. Тут, кстати, кто-то высказывал интересную мысль, что булшитеры не смогут писать макросы из-за их относительной сложности, а те, кто смогут, не будут булшитерами и будут макросы применять аккуратно


    Тебе не кажется, что где-то такое уже было?
    И не случилось


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: VladGalkin Украина  
    Дата: 22.02.06 08:05
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Думаю да, я добавил этот самый partial modifier и вообще произошел ICE. Отправлю-ка я баг-репорт.


    Не факт, что глюк. Команда Nemerle пишет в Macro Tutorial про Stages of TypeBuilder, и хитрое свойство TypeBuilder.CannotFinalize,
    неправильная установка которого может привести к ICE.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    ДЭ!
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 22.02.06 08:05
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    ANS>>Н-да, так розгарячился, что не ту ссылку привёл . Имелся в виду вариант со switch
    Автор: Vermicious Knid
    Дата: 20.02.06
    ес-сно.


    O>[Офф]

    O>В автомодерилке можно своё сообщение "удалить как ошибочное". Это такой вариант правки сообщений для простых смертных
    O>[/Офф]

    Попробую! А то я пытался остановить отправку но уже было поздно

    Хм. Там есть только "удалить сообщение". Или после появления ответов уже поздняк метаться?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 08:06
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Тебе не кажется, что где-то такое уже было?

    E>И не случилось

    Ты про Лисп? Там именно так и случилось, но только язык популярным не стал.

    Или ты про шаблоны C++? Так их проще педалить, да и предназначены они имхо для совсем иных задач были. Они, собственно, и не позволяют делать всё то, что возможно с помощью макросов Nemerle.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 08:08
    Оценка:
    Здравствуйте, VladGalkin, Вы писали:

    VG>Не факт, что глюк. Команда Nemerle пишет в Macro Tutorial про Stages of TypeBuilder, и хитрое свойство TypeBuilder.CannotFinalize,

    VG>неправильная установка которого может привести к ICE.

    В 0.9.2 CannotFinalize почему-то internal... Наверное, потому, что теперь и без его использования всё работает.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 22.02.06 09:22
    Оценка:
    СТ>Придерусь к записи. Макрос Accessor по умолчанию создает только геттер. Чтобы заставить его
    СТ>создать сеттер, надо так и сказать [Accessor(WantSetter = true)] (в названии проперти мог ошибиться)

    Блин, столько писать... Да проще уже "по-честному" это проперти нарисовать. Можно подумать, что это — принципиально.
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 09:31
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    [bla-bla-bla]

    V>Форт — это некая идеология. Изначально ты имеешь некую среду, затем в процессе нескольких итераций постепенно затачиваешь среду разработки и сам язык под конкретную прикладную область. Затем пишешь программу именно в терминах и на языке (на своем видении языка) целевой прикладной области. Таких сочных, надежных и компактных программ, которые мне удавалось писать на Форте я так и не научился писать ни на одном другом языке программирования (С++ отдаленно позволял приблжаться к терминам прикладной области, но в сравнении с Фортом — слишком отдаленно) . Иногда, читая про Smalltalk, мне кажется, что их идеология близка к только что описанной, с той лишь разницей, что там все с упором не на функциональную, а на объектную декомпозицию.


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

    Резюме: видимо, я так и не научился писать на Форте.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 22.02.06 10:15
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Сергей Туленцев, Вы писали:



    СТ>>Ну, положим, от ошибки неверного формата (кстати, имеет ли это место быть в случае ToString()) этот макрос не спасет. Он всего лишь делает запись короче и не позволяет ошибиться с циферками в скобочках. Всё. После его прохода у компилятора оказывается примерно вот что:.


    VD>Как же не спасет, если формата просто нет?! Ты подставляешь имена переменных которые контролируются в во время компиляции. Я кстати, совершенно случайно ошибся когда писал код и мой пример уже неверный!


    А о каком формате идет речь в твоём примере?
    --
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 22.02.06 11:04
    Оценка:
    Здравствуйте, vdimas, Вы писали:

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


    Exploratory programming. С некоторой натяжкой сюда можно записать юнит-тесты — единственное средство доступное в майнстриме.

    V> Иногда, читая про Smalltalk, мне кажется, что их идеология близка к только что описанной, с той лишь разницей, что там все с упором не на функциональную, а на объектную декомпозицию.


    да.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[30]: Новая версия макроса
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 11:44
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>В C++ для подобных экспериментов изобрели Boost. В .NET-е, похоже, Nemerle с макросами.

    E>Впечатление почему-то от исходников того и другого одинаковое

    Ты ни в коем случае не бери мой код за эталон Мой код — скорее всего неправильный вариант решения проблемы, учитывая тот факт, что мой опыт писания на Nemerle практически равен нулю.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 11:44
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    Это не всегда нужно. Например, параметром макры таки может быть строка (допустим, регулярное выражение). А разворачивается макра в код распознавателя для этого регвыра.

    Когда это нужно — есть тот же самый Хиндли-Милнер, который работает и для Лиспа. Есть несколько реализаций, да и своя пишется на коленке за пол часа.

    VD>Насколько мне извесно — это невозможно.


    Возможно всё. Из Лиспа сделать Nemerle тривиально. Из Nemerle сделать Лисп тривиально.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 11:46
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    Y>>Скажите, а чем Вам EVAL не угодил?


    VD>EVAL и другая интерпретация идет лесом.


    Во время компиляции? За что так?
    Да и не интерпретация это в большинстве современных Лиспов, а компиляция всё равно. Нет там вообще интерпретаторов.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 11:47
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Почему же тогда, к примеру, Пол Грэхэм, один из великих евангелистов Лиспа, считает, что синтаксис таки нужен (в своих размышлениях об Arc)?


    Синтаксис нужен, но не важен. Синтаксис можно какой угодно приделать. Из того же Лиспа можно в несколько строчек сделать язык с любым синтаксисом. Но делать это надо на поздних стадиях, а пока пишутся макры — писать лучше в AST. Так проще и понятней выходит.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 11:50
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Я лично не против разных парадигм вроде ФП или МП, но я против программирования в AST коим и является Лисп. В общем, я против Лиспа. Причем не навязываю свою волю никому. Если кто-то видит в Липе идильное средство разратбоки, то пусть его использует. Только без обсуждения чужих умственных способностей.


    Если не в AST программировать, то многоуровневые макры становятся кошмаром.

    WP>> Кто запретил приделать к Лиспу строгую типизацию? Лично мне никто не запрещал, чем и пользуюсь цинично.


    VD>А зачем мне приделывать к Лиспу то и се, когда я могу просто взять язык где это уже приделано и приделано качество? Я не уверн, что смогу приделать все что мне нужно в разумные сроки. И не понимаю зачем мне этим заниматься.


    Затем что язык, где прикручено много всякого разного — нишевой, узкоспециализированный язык. А метаязык, к которому можно приделать всё, из которого можно сделать любой другой язык — это универсальный язык.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 11:51
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    WP>> Те же макросы, что и, например, в dia2code.


    VD>Нет слов. Ну, называй диаграмы хоть горшком. Мне без разницы.


    Что же тут непонятного? Это — макры. Строго. И на ваши разницы тут наплевать конкретно.

    VD>>>Дизайнер классов видел в VS 2005? Вот он как раз на этом самом DSL Tools сделан. Чем он на макросы похож?


    WP>> Тем и похож — что каждый графический элемент (по сути — это ровно то же AST) разворачивается очень примитивным образом (подстановкой) в код.


    VD>В DSL Tools вообще не определяется как ты будещь переводить модель и во чето. Есть некоторые средства, но они не обязательны. В конце концов ты волен взять генерируемый дизайнером ХМЛ и делать с ним, что хочешь.


    И это тоже будет просто развёртка макр.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 12:02
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Record это только для публичных полей(т.е. строго говоря для описания конструкторов структур). Accessor у меня использовать не получилось. Он его почему-то не опознает. Возможно это из-за того, что он обычно выполняется на более раннем этапе компиляции, или по другим причинам. Нужно спросить разработчиков языка.


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

    VK>В универсальный модуль можно вынести. Есть еще пара мест где код можно упростить. Собственно местами я сделал лишнее и не заметил как можно сократить составление списка свойств. Если бы Accessor работал, то код выглядел бы так:

    VK>
    VK>using Nemerle.Compiler;
    VK>using Nemerle.Collections;
    VK>using Nemerle.Macros;
    
    VK>namespace Oyster
    VK>{
    VK>    macro metaclass(className, body)
    VK>    syntax ("metaclass", className, body)
    VK>    {
    VK>        def ctx = ImplicitCTX();
    VK>        def builder = ctx.Env.Define(<[ decl: public class $(className.ToString() : usesite) {} ]>);
    VK>        mutable constrParams = [];
    VK>        mutable constrCode = [];
    VK>        match (body)
    VK>        {
    VK>            | <[ { .. $props } ]> =>
    VK>                foreach(<[ $(n : name) : $(t : name) ]> in props)
    VK>                {
    VK>                    builder.Define(<[ decl:
    VK>                                        [Nemerle.Utility.Accessor]
    VK>                                        mutable $(n : name) : $(t : name) ;
    VK>                                   ]>);
    VK>                    def paramType = ctx.BindType(<[ $(t : name) ]>);
    VK>                    constrParams = <[ parameter: $(n : name) : $(paramType : typed) ]> :: constrParams;
    VK>                    constrCode = <[ this.$(n.NewName("_" + n.Id) : name) = $(n : name); ]> :: constrCode;
    VK>                }
    VK>            | _ => Message.FatalError($"Invalid metaclass syntax, expected properties definition, got $body");
    VK>        }                
    VK>        builder.Define(<[ decl: public this(.. $(constrParams.Reverse())) { .. $constrCode } ]>);
    VK>        builder.Compile();
    VK>        <[ () ]>
    VK>    }
    VK>}
    VK>


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

    Поясню о чем я говорю... Наверно проще по пунктам.
    1. Формирование параметров и кода конструктора совмещено с формированием полей. Это не верный подход, так как формирование конструктора процесс универсальный (может понадобиться не в одном месте). К тому же строчка:
    def propInfos = Impl.GetPropInfoList(body);
    ...
    DefineCtor(propInfos);

    Значительно более понятно, чем сжатое награмождение кода.
    Так что данный пример, по-моему, должен выглядить как-то так:
    def propInfos = Impl.GetPropInfoList(body);
    def ctx = ImplicitCTX();
    def builder = ctx.Env.Define(<[ decl: public class $(className.ToString() : usesite) { } ]>);
    
    MacroLib.DefineCtor(builder, propInfos);
    MacroLib.DefineProps(builder, propInfos);

    2. Формирование имен надо тоже выносить в библиотеки. Во-первых, это значительно более сложный процесс нежели присутствует в твоем примере. Например свойство может совпадать по имени с ключевым словом или иметь формат отличный от принятого для публичных членов в дотнете.
    3. Нужно делать блее качественные проверки ошибок. Первая версия в этом плане была никакая. Вторая намного лучше. Она хотя бы не вылитит и скажет что-то разумное. Но в реальных приложениях нужна четкая диагностика. Этот варинат кода просто укажет на начало блока и скажет "Invalid metaclass syntax". Правильно было бы конечно ткнуть носом в нужное место. Темболее, что как я понимаю делатется это как-то так (то есть не сложно):
    match (body)
    {
            | <[ { .. $props } ]> =>
                    foreach(prop in props)
                    {    | <[ $(n : name) : $(t : name) ]> =>
                            builder.Define(<[ decl:
                                [Nemerle.Utility.Accessor] mutable $(n : name) : $(t : name););
                            def paramType = ctx.BindType(<[ $(t : name) ]>);
                            constrParams ::= <[ parameter: $(n : name) : $(paramType : typed) ]>;
                            constrCode   ::= <[ this.$(MacroLib.ToFieldName(n)) : name) = $(n : name); ]>;
                        | PExpr => Message.FatalError(prop.Location, $"Invalid metaclass syntax: '$prop'";
                    }
            | _ => Message.FatalError($"Invalid metaclass syntax, expected properties definition, got $body");
    }


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

    VK>А вообще-то и неупрощенный код это всего полсотни строчек. И учитывая, что он делает работу сразу трех макросов это очень хороший результат. Но насчет выноса частоиспользуемых вещей в универсальный модуль ты пожалуй прав. Я сам думал над этим неоднократно.


    И все же "неупрощенный" код слишком сложен для восприятия, поддержки и слишком объемен. Конечно вряд ли на каком-то из языков программирования общего назначения (ЯПОН ) можно на сегодня написать этот код более кратно и понятно, но все же это не оправдание. Ведь XSLT-варинт продемонстрированный АВК
    Автор: AndrewVK
    Дата: 14.07.05
    хотя и запусорен XSLT-конструкциями, но все же относительно краток и прост в поддержке.
    Но у него есть слабое звено, он не очень то универсален и не может выдавать качественной диагностики.
    Код на ЯПОН тем и хорош, что имеет больший контроль над происходящим. А Нэмерел тем, что позволяет вводить мощьные и понятные абстракции (функции/классы).
    В общем, если подходить к напискнию макросов окуратно, то можетм получиться максимально краткое и весма выразительное решение.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 12:02
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Блин... я наконец-то понял Вот как у меня получилось:


    O>
    O>def builder = ctx.Env.Define(<[ decl: [Record] public class $(className : name) { [Nemerle.Utility.Accessor] mutable test : int; } ]>);
    O>

    O>Т.е. все макросы болжны быть в куске AST, переданном в env.Define. А Record не работал потому, что при вызове env.Define у класса ещё не было полей.

    O>Т.е. надо просто собрать AST заранее


    Хм. Когда я эксперементировал у меня не получилось ни использовать [Record], ни даже обявить список свойств и полей как-то так:
    def builder = ctx.Env.Define(<[ decl: [Record] public class $(className : name) { ..$members } ]>);

    Опыта нехватило?
    Попробуй, плиз, создать полную реализацию использующую атрибутные макросы.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 12:05
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Попробуй, плиз, создать полную реализацию использующую атрибутные макросы.


    Re[28]: Новая версия макроса
    Автор: Oyster
    Дата: 22.02.06
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 12:07
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>>>На Лиспе можно воспроизвести синтаксис ну хотя бы C?


    WP>> Можно. Пример такой методы (к сожалению там только Схема, Лиспа нет, тогда как в Лиспе гораздо более гибкий встроенный парсер С-выражений): http://dslengine.sourceforge.net/


    IT>Гуд. Значит и на Nemerle можно будет. Кстати, JetBrain'овцы поднимают вопрос о гуях к DSL как об одной из самых серьёзных проблем.


    Это сугубо их личное мнение, которое мало кого колышет.

    IT> Так вот если её решить один раз для Nemerle (я не знаю как, не спрашивайте ),


    Господи, да чего тут не знать. Тривиально. XML-ных отображений графических языков — полно. Сделать макру, разворачивающую XML в код — тривиально. Я такое для Glade и Common Lisp делал, часов 6-8 где-то потратил на всё, с отладкой и пивом.

    IT> то значит она будет решена для всех построенных на нём (ней? кстати, оно какого рода?) DSL'ях.


    язык — он. языки — они...
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 12:09
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Это сугубо их личное мнение, которое мало кого колышет.


    Ну... ещё оно колышет MS: Microsoft DSL Tools
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 12:12
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    WP>> Синтаксис нужен, но не важен. Синтаксис можно какой угодно приделать. Из того же Лиспа можно в несколько строчек сделать язык с любым синтаксисом. Но делать это надо на поздних стадиях, а пока пишутся макры — писать лучше в AST. Так проще и понятней выходит.


    O>Если синтаксис не важен, то почему Лисп не стал популярным?


    А почему Haskell с его великолепным синтаксисом не стал популярным? Почем не стал популярным ML? Почему стал популярным Perl, не смотря на ужасный синтаксис? Почему стал популярным кривой и страшный PHP? Почему не стал популярным Лисп с синтаксисом Паскаля (R-Lisp)?

    Популярность от качеств технологии не зависит вообще. Популярность — это как мода, трудноанализируемая и иррациональная гадость. Серьёзным людям на популярность наплевать, а обыватели выбирают себе в популярных только тех, кого им хорошо пиарят. Так что мне просто противно когда ту или иную технологию начинают оценивать с позиций популярности. Это ведь ровно то же самое, что опустить себя на уровень серых обывателей, низших слоёв общества. Не боязно вам испачкаться, начиная такие сомнительные штудии о вкусах и предпочтениях серых масс?
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: little_alex  
    Дата: 22.02.06 12:28
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Когда это нужно — есть тот же самый Хиндли-Милнер, который работает и для Лиспа. Есть несколько реализаций, да и своя пишется на коленке за пол часа.


    А ссылку на рабочую библиотеку для CL можно?
    Re[30]: Новая версия макроса
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 12:49
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Ты лучше задай пару вопросов самим разработчикам здесь. Они достаточно быстро отвечают на вопросы.


    Вариант, спасибо за линк.

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


    Согласен — конечно в реальном коде эта функциональность будет выделена.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: Кодёнок  
    Дата: 22.02.06 12:54
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Не, Влад, так — не круто. Приложения должны поддаваться локализации; а это означает переменный порядок "вставленных" слов во фразе. Неслучайно в Delphi/Builder был применен вариант сишного формата, в котором можно было указывать аргументы не в порядке следования. И неслучайно в дотнете единственный необходимый параметр формата — это номер аргумента.


    Для локализации можно построить словарь string name -> string value, а саму строку вынести и затем производить замену в ней имён на значения по словарю. При недостатке или переизбытке аргументов в локализованной строке можем по желанию кидать эксепшн, писать варнинг в лог, или пропускать как есть. При этом задействуем возможность макросов Nemerle взять имена из области видимости.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 22.02.06 13:01
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Я придерживаюсь мнения, что результаты генерации вообще в VCS попадать не должны. Там должны быть только исходники, из которых производится генерация. Например, для yacc-а под контроль версий нужно укладывать .y-файлы, но вот полученные из них .c-файлы помещать под контроль версий смысла нет.


    Всё так. Осталось только это растолковать интеграции VSS с VS.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 22.02.06 13:06
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Всё так. Осталось только это растолковать интеграции VSS с VS.


    А что, VS автоматом все, что подключено в проект, заносит в VSS? Все автоматически генерируемые hpp, cpp, cs файлы?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 22.02.06 13:08
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>В данном случае я согласен с vdimas. Макро для объявления пропертей хотя выглядит и логично, но довольно громоздко и коряво.


    Как ни странно тоже соглашусь. Многие стандартные макросы мне совсем не нравятся. Record и Accessor в частности. Ничего кстати принципиально не мешало реализовать их совсем по другому.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: genre Россия  
    Дата: 22.02.06 13:29
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:


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

    а кто ж такие серьезные люди и обыватели?
    при выборе платформы для реального большого проекта популярность имеет довольно большое значение. а серый обыватель или не серый и его слой общества никакого значения не имеет.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 22.02.06 13:29
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Вот представь себе библиотеку для работы, скажем, с серийным портом всю написанную на макросах. По суть вместо некого КОМ-порт АПИ у нас будет специальный язык под это дело, причем еще не факт что удачного спроектированный. И таких библиотек на большом проекте могут быть десятки. Причем в 90 случаях из 100 эти макросы не будут предлагать ничего по сравнению с обычным АПИ кроме другой формы записи.

    Я правильно понимаю, что речь идет о плохо написанной хорошей библиотеке?
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 22.02.06 13:29
    Оценка:
    Здравствуйте, Кодёнок, Вы писали:
    Кё>Для локализации можно построить словарь string name -> string value, а саму строку вынести и затем производить замену в ней имён на значения по словарю. При недостатке или переизбытке аргументов в локализованной строке можем по желанию кидать эксепшн, писать варнинг в лог, или пропускать как есть. При этом задействуем возможность макросов Nemerle взять имена из области видимости.
    Брр. То ли ты слишком быстро пишешь, то ли я медленно читаю. Ниче не понял, ни про словарь, ни про макросы из области видимости.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 22.02.06 13:35
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Всё так. Осталось только это растолковать интеграции VSS с VS.


    можно один раз добавить эти файлы в VSS, затем удалить, но не делать purge
    тогда, при следующей попытке добавить эти файлы под VSS, будет выдаваться сообщение, что удаленные файлы с такими же именами уже есть — хотите ли вы использовать старые файлы? (yes/no/cancel). На сообщение просто отвечаешь cancel. Это чуть удобнее, чем каждый раз при чек-ине снимать выделение с этих файлов.
    А в 6 студии, если мне не изменяет склероз, можно было просто сказать — "вот эти файлы — не трогать!". Эх, усовершенствовали.....
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 22.02.06 13:38
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Если народ уже теперь жалуется на то, что дотнет, дельфи и ВБ недостаточно сложны для отсечения недоумков, то что же начнется, когда программирование станет еще более простым и автоматизируемым делом?


    Я бы сказал — более автоматизируемым, но и намного более сложным.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 14:06
    Оценка:
    Здравствуйте, IT, Вы писали:

    WP>> Господи, да чего тут не знать. Тривиально. XML-ных отображений графических языков — полно. Сделать макру, разворачивающую XML в код — тривиально. Я такое для Glade и Common Lisp делал, часов 6-8 где-то потратил на всё, с отладкой и пивом.


    IT>Сделай. Заодно и интеллисенс с автокомплитом прикрути. Пиво с меня.


    Не понял — какой такой автокомплит для графического языка?
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: little_alex  
    Дата: 22.02.06 14:23
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Например, вот тута: http://www.cliki.net/TypeL


    Вот только при ее использование по-видимому ВСЯ стандарная библиотека остается не у дел.

    (defun test (a b)
      (declare (type integer a b))
      (typel:typel ((a integer) (b integer))
         (typel:+ a b)))


    Типы приходится объявлять два раза
    Как раз из-за того что тип аргумента в макросе узнать нельзя (стандартно).
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VD>>К чему бы это? Глюк?


    VK>Думаю да, я добавил этот самый partial modifier и вообще произошел ICE.


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

    Кстати, пока баг не поправлен... А нельзя ли как-то определять, что класс с таким именем уже добавлен и, просто не генерировать класс повторно, а обходиться банальной выдачей предупреждения? (в смысле уже сейчас)

    VK>Отправлю-ка я баг-репорт.


    Поделись, плиз, как это делается (баг-репорты отправляются). А то я тоже тут уже на парочку багов наткнулся. Незначительных, но все же...


    ЗЫ

    И еще одно. В рпоцессе возни с макросами я пришел к выводу, что самой большой прооблемой при их написании/отладке является то, что мы не видим генерируемого АСТ. С выражениями все просто, они прекрасно преобразуются в строку и печатаются банальным Console.WriteLine() из тела макроса. А вот с чем-то по сложнее (дкларациями и типами) это не прокатывает. Их ToString() выдает имя класса. Это явная недоработка.

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

    Я занаю, что в компиляторе есть какая-то там диагностика, но это неудобно. Надо иметь возможность программной (т.е. из макросов) печати отдельных ветвей АСТ.

    Посему надо бы послать им запрос на доработку с тем, чтобы все ветви АСТ при выводе их в строку (или вызове некого хитрог метода) выдавали бы код на Нэмерле.

    Так же нужны средства поиска честаей АСТ. В R# мы для этого реализовали призабавшейшую ведь. Мы реализовали поддржку XPath для поиска по АСТ. Причем сделать это довольно просто. Для этого унжно всего лишь реализовать XPathNavigator умеющий работать с АСТ-объектами. Реализацию можно поглядеть в коде R#.

    Думаю, что это еще больше усилио бы мощь неэмерла, ведь его паттерн-матчинг хотя и хорош, но не может делать сложных вложенных запросов, а на XPath — это элементарно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, VladGalkin, Вы писали:

    VG>Здравствуйте, Vermicious Knid, Вы писали:


    VK>>Думаю да, я добавил этот самый partial modifier и вообще произошел ICE. Отправлю-ка я баг-репорт.


    VG>Не факт, что глюк. Команда Nemerle пишет в Macro Tutorial про Stages of TypeBuilder, и хитрое свойство TypeBuilder.CannotFinalize,

    VG>неправильная установка которого может привести к ICE.

    Вопросы реализации не должны волновать пользователей. Факт в том, что банальная печатка в коде находящемся рядом с вызовом этого макроса (то есть даже не связанном с макросом) приводит к дебильнейшому сообщению об ошибке. Это приводит к тому, что лично я не решусь применять макросы в рельной работе если они будут приводить к таким результатам.

    Так что если это не баг, а фича, то — это еще хуже. Так как такие багофичи — это системная проблема.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    Поясню свои слова...

    [Record] съедается компилятором, но вот конструктора у класса не создается (смотрел Рефлектором).
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Вопрос
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Кстати, а можно поинтересоваться — а как предварительно сформировать список полей, а потом его вставить в объявление класса? Я попытался поменять твой код, чтобы использовать макросы внутри. Код, естественно, не работает:


    Та же фигня. Хотя судя по примерам такой подход должен прокатывать.

    Похоже разработчикам Нэмерла не хватает хороших тестеров.
    Дадо подмогнуть товарищам, или вообще взять процесс развития в свои руки сделав брэнч.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Влад, у тебя есть, что сказать или как обычно?


    Как обычно. Сказать есть что, но тебе это не нравится.
    Могу перефразировать свои слова.

    Приведенный "вариант" кода искажает смысл примера и стало быть является банальным банальным подлогом.

    ANS>Или может ты таким хитрым способом хочеш сказать, что тоже думаеш, что сопоставлением с образцом в Nemerle нужно сравнивать именно с if/switch в C#?


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

    Что до сравнение с if/switch, то могу высказаться.

    match заменяет и if, и switch и даже операторы вроде && и ||. Доказательством служит то, что в Нэмерел операторы if реализован на базе match, а switch вообще отсуствует, так как проигрывает match-у в выразительности.

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

    Но основная проблема заключается в том, что при этой эмуляции сильно страдает выразительность.
    Собственно именно это и пытался продемонстрировать Vermicious Knid в обсуждаемом сообщении
    Автор: Vermicious Knid
    Дата: 20.02.06
    .

    Не приймите, это за наезд или оскорбление, но вам похоже нужно просто по серьезнее изучить match и его возможности. Тогда вам будет очевидно, что match — это намного более универсальная и выразительная вещь чем switch. Ну, а if является более врыазительным в некоторых случаях, но не обеспечивает всего функционала. Куча же if-фов является явно менее выразительной.

    VD>> и делашь далеко идущие выводы.


    ANS>Вывод был только один — сравнение не корректно, соответсвенно выводов из него делать нельзя. Вот такой я вывел "далекоидущий" вывод.


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

    ANS>Если ты так
    Автор: Andrei N.Sobchuck
    Дата: 21.02.06
    пишеш на C# то мне жаль г-на Хелсберга.


    Это такая опечаточка по фрэйду и ты хотел реально указать на это
    Автор: Vermicious Knid
    Дата: 20.02.06
    сообщение, или тебе жаль Хелсберга от того как ты лично пишешь код?

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

    Потому автор тебе не раз замечал, что ты можешь написать иделальный C#-пример, а он перепишет его на Нэмерле и ты сам увидишь разницу, раз уж тебе не нравится пример. Этот аргумент ты вообще прогнорировал.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Но все равно код уж сильно на Perl-овку смахивает. Это и не нравится.


    Попробуй написать то же самое на Перли и тогда сравним.

    К тому же код банально не здорово написан. В нем не произведена декомпозиция. Но на любом языке можно свалить все в кучу и получить птичий язык. Это не проблема зяыка.

    E>C++ шаблоны для меня так же не являются верхом изящества. Поэтому от трехэтажных шаблонов в C++ меня начинает отворачивать уже даже по эстетическим соображениям.


    На шаблонах С++ подобные задачи не решаемы. Так что оставим этот разговор.
    Попробуй написать на С++ код который сгенерирует нужный код. Оформь этот генератор в вдие отдельного приложения, чтобы небыло нужды ограничиваться только шаблонами. Потом поглядим во что он превратится.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Я придерживаюсь мнения, что результаты генерации вообще в VCS попадать не должны. Там должны быть только исходники, из которых производится генерация. Например, для yacc-а под контроль версий нужно укладывать .y-файлы, но вот полученные из них .c-файлы помещать под контроль версий смысла нет.


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

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

    Если же есть генерируемые исходники, то можно просто поправить их.

    Работая над R#-ом я пару раз наталкивался на такую проблему. Это очень неприятно, скажу я вам.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Во время компиляции? За что так?


    За медленность и сложность. Метапрограммирование над метапрограммированием — это то что может сорват самую зоровую крышу.

    WP> Да и не интерпретация это в большинстве современных Лиспов, а компиляция всё равно. Нет там вообще интерпретаторов.


    Хм. Динамически компилировать генерируемый код только для того, чтобы один раз его выполнить? А будет ли это быстрее интерпретации?

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

    Напомню, что такие мощьные возможности применяются для решения проблем основного языка. То есть их можно просто не решать. Вот я и не вижу необходимости писать в АСТ и решать подобные проблемы когда есть возможноть иметь прктически тоже самое, но не жертвовать надежностью, простотой и скоростью.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Это не всегда нужно.


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

    WP>Например, параметром макры таки может быть строка (допустим, регулярное выражение). А разворачивается макра в код распознавателя для этого регвыра.


    Может. Но тоже желательно проверить, что это строка или выражение которое может быть во время компиляции приведено к строке.

    WP> Когда это нужно — есть тот же самый Хиндли-Милнер, который работает и для Лиспа. Есть несколько реализаций, да и своя пишется на коленке за пол часа.


    Ну, вот мы и пришли тому с чего начли. Nemerle — это как раз тот самый один из клонов Лиспа с подержкой вывода типов а-ля Хиндли-Милнер, наличием синтаксиса (похожего на смесь C# и ML) и основанном на мошьном рантайме предоставляющем отличную среду выполнению и огромную тучу библиотек.

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

    WP> Возможно всё. Из Лиспа сделать Nemerle тривиально. Из Nemerle сделать Лисп тривиально.


    Тривильно? Ну, так сделай. Если получится, я с удовольствием на нем по программирую. А делать Нэмерл из Лиспа лично я не хочу. Это огномный труд, а не тривильное занятие.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Если не в AST программировать, то многоуровневые макры становятся кошмаром.


    Казалось бы. Но Окамл и Нэмелр вроде как отлично опровергли это утрверждение. Решением оказалось тривиально и от того гениально.

    Просто нужно ввести средство преобразующее куски кода в АСТ и обратно. Квази-цитирование из Схемы оказалось ключем к решению проблемы.

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

    WP> Затем что язык, где прикручено много всякого разного — нишевой, узкоспециализированный язык.


    Хм? Что нишевого в Нэмерле?

    WP> А метаязык, к которому можно приделать всё, из которого можно сделать любой другой язык — это универсальный язык.


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

    Если уж я прекрасно решаю 90% задач на C# в котором метапрограммирования нет (точнее доступно только по средствам рантайм-кодогенерации или создания отдельных кодогенераторов), то в Нэмерле я вообще проблем знать не буду. На крайняк в нем есть возможность получить доступ к токенам и сделать все что хочешь. Но надеюсь прибегать к такому низкому уровню, кстати, в общем-то к Лисп-уровную, я лично очень не хочу. Мне банально жалго свое время.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 14:47
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Что же тут непонятного? Это — макры. Строго. И на ваши разницы тут наплевать конкретно.


    Плюсй. Только что с вопросами тогда лезть?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: genre Россия  
    Дата: 22.02.06 14:59
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    G>>при выборе платформы для реального большого проекта популярность имеет довольно большое значение. а серый обыватель или не серый и его слой общества никакого значения не имеет.


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

    WP> А то, что дворника найти проще и что он дешевле — так это в вас, батенька, жадность играет. Ищете не там, где потеряли, а там, где светлее. Что никак нельзя назвать разумным поведением.
    При чем тут дворник?
    аналогия неверная. мы про инструмент говорим.
    аналогия должна быть примерно такая: если мне нужно убирать мусор, то что надо выбрать — метлу, которая производится легко и дешева в освоении и производстве или супер-пупер пылесос сложный в освоении, дорогой, и с неизвестно какой надежностью?

    WP> Как, продолжим аналогии, или попробуем совместно рассчитать расходы и риски на примере какого либо типичного индустриального софтового проекта?

    вот это уже интереснее. давайте попробуем.
    возьмем типичный индустриальный софтовый проект.
    состоящий из трех частей — база данных, сложный гуи, обработка большого количества данных (то есть с какими-то требованиями по производительности)
    подойдет такой?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: genre Россия  
    Дата: 22.02.06 15:00
    Оценка:
    Здравствуйте, genre, Вы писали:


    WP>> Как, продолжим аналогии, или попробуем совместно рассчитать расходы и риски на примере какого либо типичного индустриального софтового проекта?

    G>вот это уже интереснее. давайте попробуем.
    G>возьмем типичный индустриальный софтовый проект.
    G>состоящий из трех частей — база данных, сложный гуи, обработка большого количества данных (то есть с какими-то требованиями по производительности)
    G>подойдет такой?
    О! может для примера RSDN@Home взять? благо про его разработку известно довольно много.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 22.02.06 15:00
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>[Record] съедается компилятором, но вот конструктора у класса не создается (смотрел Рефлектором).


    Наверное это потому, что Record работает только для публичных полей. В общем нужно писать свой вариант Record.
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 15:02
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    WP>> Вы меня пугаете. Какое такое всё? Это за пару семестров вдалбливается тривиально. А если человек уже отучился, мозги натренировал, то за пару месяцев.

    S>Парадигму на пустом месте не впихнешь. Человек — не машина, ему надо за что-то зацепиться. Заучить конспекты лекций за два семестра — можно.

    Зачем заучить? Учить там вообще всего ничего. Понимать надо больше, чем учить.

    То же лямбда-исчисление — громадная концепция, огромная наука, а выучить надо всего то синтаксис лямбда-терма (тупее и проще которого разве что только предикаты первого порядка) и три примитивных правила редукции. Ну и определение свободных и связанных переменных (и без того абсолютно интуитивное, особенно для тех, кто уже на чём либо ранее программировал).

    Понять — не проблема на самом деле. Достаточно небольшого математического фундамента. Чуть-чуть дискретной математики. Теория множеств, мат. логика, теория графов. Вот и всё! Остальное — приложится. И я уже говорил — людям без минимальнй математической базы делать в программировании нечего, так что тех, кто этой базы не имеет (и получить её не желает) — просто сразу отметаем.


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


    Вот на практику эти два семестра либо два месяца и нужны. На теорию хватит двух дней.

    WP>> Время надо было раньше тратить. Когда оно было.

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

    Ну так что ж вы в программисты пошли, если ваша личность не вмещала в себя науку программирования даже во время обучения? Кстати, я когда учился, всё свободное время бухал и читал художественную литературу, по томику за день. Всю классику сожрал и даже современной пиф-паф-фантастикой не подавился. А computer science выучил уже потом, в процессе работы. В сумме как раз пара месяцев и накопилась. В ВУЗе я и слов то таких не слышал, как "ита-редукция" или "LALR(1)-грамматика"...

    WP>> Как уже тут обсуждалось, работающий студент — пропавший для общества студент. Отработанный материал. Социальный труп...

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

    Только когда работа — часть учебного процесса. Как в системе Физтеха, например.

    WP>> Перевернут. Всё это вместе убьёт индусов. Кодирование станет настолько простым и автоматизируемым делом, что недоучки из программирования вылетят, улицы подметать пойдут или бигмаками торговать. И это будет радость великая!

    S>Забавно. Я лично в это не верю, т.к. исторический опыт показывает обратный эффект.

    Да нет, история показывает орды вышвырнутых на улицу ненужных леммингов. Как например эти толпы веб-кодеров, оставшиеся не при делах после дотком-бума. Will code HTML for food, и всё такое.

    S> Упрощение программирования впустит на этот рынок тех, кто до сих пор не может освоить даже настройку радиоприемника.


    Зачем? Нет программирования ради программирования. Времена Синклера и Атари прошли. Есть программирование конкретных приложений. Которые формулируются заказчиком. Вот заказчиком они и реализуются сразу же, без посредников в виде орд безграмотных индусов. И останется узкая каста настоящих программистов — тех, кто решает нетривиальные задачи, такие, которые не по силам индусу независимо от простоты и удобства средств разработки — просто в силу высокой сложности и наукоёмкости самой предметной области.

    S> Тот миллион индусов, которые сейчас пишут код для нашего с вами развлечения, станут мега-архитекторами в командах их умственно отсталых, и будут по вечерам рассказывать страшные истории, как в 2005 они писали исходные тексты на неподъемно страшно сложном VB.NET!

    S>Если народ уже теперь жалуется на то, что дотнет, дельфи и ВБ недостаточно сложны для отсечения недоумков, то что же начнется, когда программирование станет еще более простым и автоматизируемым делом?


    Вы смотрите не на ту составляющую тренда. Я вижу всю картину, и описанная вами отрицательная составляющая теряется рядом с положительной.
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 15:04
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    S>>Если народ уже теперь жалуется на то, что дотнет, дельфи и ВБ недостаточно сложны для отсечения недоумков, то что же начнется, когда программирование станет еще более простым и автоматизируемым делом?


    Д>Я бы сказал — более автоматизируемым, но и намного более сложным.


    Вот вот, сейчас индусы заменяют собой автоматизацию. Пока это кое где дешевле — посадить сто дрессированных на выполнение простых операций человечков, вместо того, чтобы запрограммировать автоматическое выполнение этих простых операций. Но средства разработки эволюционируют, и с каждым годом всё больше интеллектуальная нагрузка на разработчиков и молотильная нагрузка на средства разработки. Они заменяют собой человечков-молотильщиков.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 15:09
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    WP>> Во время компиляции? За что так?


    VD>За медленность и сложность. Метапрограммирование над метапрограммированием — это то что может сорват самую зоровую крышу.


    У меня не срывает почему-то. Мои макры часто имеют до дюжины уровней вложенности. Но всё прозрачно — на каждом шагу преобразование тривиально, просто получается чуть-чуть более другой язык.

    WP>> Да и не интерпретация это в большинстве современных Лиспов, а компиляция всё равно. Нет там вообще интерпретаторов.


    VD>Хм. Динамически компилировать генерируемый код только для того, чтобы один раз его выполнить? А будет ли это быстрее интерпретации?


    Для выполнить один раз — вообще без разницы, если этот один раз выполняется во время компиляции. Ведь не плачет народ над тем, насколько тормозной и до памяти жадный интерпретатор языка темплейтов в компиляторах C++.

    VD>Одно дело когда код макроса откомпилирован и применяется, а другое, когда он генерируется на ходу. Гибкость конечно выше, но тормоза и проблем куда выше.


    Я уже рассказывал, как этих проблем избежать. Независимо от языка — что в Лиспе, что в Template Haskell, что в Nemerle, что в даже Форте.

    VD>Напомню, что такие мощьные возможности применяются для решения проблем основного языка. То есть их можно просто не решать.


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

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


    Проблемы начинаются в тот момент, когда семантика DSL оказывается чрезмерно далёкой от семантики базового языка. Тогда хочется, чтобы базовый язык был более тупым и низкоуровневым (и соответственно более гибким).

    Я, конечно же, для большинства задач тоже выберу Nemerle или скорее Template Haskell, но и для Common Lisp у меня примений очень немало.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 22.02.06 15:11
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Не понял — какой такой автокомплит для графического языка?


    Слабо?
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 15:13
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    WP>> Это не всегда нужно.


    VD>Всегда, не всегда.. Без этого мы получаем решение более близкое к текстуальным макросам, нежели к расширению компилятора.


    Нет, это тоже расширение компилятора, но на более низком уровне. Более гибкое.

    WP>>Например, параметром макры таки может быть строка (допустим, регулярное выражение). А разворачивается макра в код распознавателя для этого регвыра.


    VD>Может. Но тоже желательно проверить, что это строка или выражение которое может быть во время компиляции приведено к строке.


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

    VD>Ну, вот мы и пришли тому с чего начли. Nemerle — это как раз тот самый один из клонов Лиспа с подержкой вывода типов а-ля Хиндли-Милнер, наличием синтаксиса (похожего на смесь C# и ML) и основанном на мошьном рантайме предоставляющем отличную среду выполнению и огромную тучу библиотек.


    Только сам рантайм имеет ограниченную область применимости, и эта мощная семантика недостаточно адекватно подходит в качестве "ассемблера" для компиляции довольно широкого класса DSL-ей.

    VD>Так зачем мне, спрашивается, старые реализации Лиспа в которых меня коробит уже только то, что я вынужден связываться с тучей скобок и писать код в виде АСТ записывая выражения в полькой натации?


    Кю. Вот уж чего никогда не понимал — что все к этим скобкам прикопались?

    Вы хотя бы прочитали Зибеля? Очень рекомендую. Полезно, независимо от того, будете Лисп использовать или нет.

    WP>> Возможно всё. Из Лиспа сделать Nemerle тривиально. Из Nemerle сделать Лисп тривиально.


    VD>Тривильно? Ну, так сделай. Если получится, я с удовольствием на нем по программирую. А делать Нэмерл из Лиспа лично я не хочу. Это огномный труд, а не тривильное занятие.


    Да ничего огромного. Семантика Немерля довольно примитивная, все алгоритмы — простые и хорошо известные.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 22.02.06 15:19
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


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


    Чего-то у меня с логикой.
    А почему нельзя откатиться к версии генератора boot-а, которая была правильной?


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 22.02.06 15:25
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VK>>Отправлю-ка я баг-репорт.


    VD>Поделись, плиз, как это делается (баг-репорты отправляются). А то я тоже тут уже на парочку багов наткнулся. Незначительных, но все же...


    Тебе .сюды.
    --
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 15:27
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    WP>> Если не в AST программировать, то многоуровневые макры становятся кошмаром.


    VD>Казалось бы. Но Окамл и Нэмелр вроде как отлично опровергли это утрверждение. Решением оказалось тривиально и от того гениально.


    Нет. Сплайс-синтаксис и quotations — не решение. Оно работает идеально для одноуровневых макр. А для многоуровневых, для таких, в которых промежуточный AST фундаментально (N.B.!!!!) отличается от AST базового языка, он работать никак не будет. Точнее, будет, но с синтаксическими преобразованиями посерёдке между макрами. Перед макрой весь нагенерённый AST — в строку, в макре — обратно из строки. Неэффективно.

    Я такого добра нарадовался уже предостаточно и с CamlP4, и с Template Haskell. И меня бесят макры R5RS за свою однопроходность.

    VD>Просто нужно ввести средство преобразующее куски кода в АСТ и обратно. Квази-цитирование из Схемы оказалось ключем к решению проблемы.


    Всё так (только quasiquote есть и в CL, точно так же как в Схеме). Но проблема остаётся — AST недостаточно общий. Нет и не может быть ничего более общего чем двоичное дерево S-выражений. С AST заточенным под один язык с довольно сложным синтаксисом мы не сможем создавать произвольные промежуточные языки, на нас этот сложный синтаксис накладывает непростительно много ограничений.

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


    Маленький совет — постарайтесь отвыкнуть от Сищного синтаксиса. Он избыточен. Он ограничивает. Он просто объективно неоптимален. Посмотрите на Haskell.

    WP>> Затем что язык, где прикручено много всякого разного — нишевой, узкоспециализированный язык.


    VD>Хм? Что нишевого в Нэмерле?


    Скомпилируйте (так, чтоб макра-компилятор была простой и понятной) в нём DSL с семантикой близкой к Прологу. Изобразить тупенькую низкоуровневую машину Уоренна на высокоуровневой сложной семантике Nemerle — это будет героический подвиг. Вами будет гордиться вся страна!

    WP>> А метаязык, к которому можно приделать всё, из которого можно сделать любой другой язык — это универсальный язык.


    VD>Хм. Вся императивная часть Нэмерла написана на его макросах. Так что воде бы как с их помощью можно слелать очень многое. Их ограничение скорее обусловенно не проблемами реализации, а сдерживанием маняков.


    Так низкий уровень всё равно недоступен. Правда, к сожалению, сама семантика CLI недостаточно низкоуровневая. Конечно она лучше чем JVM, но всё равно, тяжко с ней жить. Намучался я, компиляя всякие Прологи, Хаскелли да конечные автоматы с матричными языками в этот CLI. Хорошо хоть хвостовые вызовы есть.

    VD>Если уж я прекрасно решаю 90% задач на C# в котором метапрограммирования нет (точнее доступно только по средствам рантайм-кодогенерации или создания отдельных кодогенераторов),


    Вы уверены, что ваши решения заслуживают эпитета "прекрасно"?

    VD> то в Нэмерле я вообще проблем знать не буду. На крайняк в нем есть возможность получить доступ к токенам и сделать все что хочешь. Но надеюсь прибегать к такому низкому уровню, кстати, в общем-то к Лисп-уровную, я лично очень не хочу. Мне банально жалго свое время.


    Жалко, не жалко — а ведь придётся. Задачи — они разные бывают. Если пойти по этому великолепному и прекрасному пути Language Oriented Programming, то начнут рано или поздно встречаться DSL-и с очень экзотической семантикой.

    Вот вы тут Лисп за низкоуровневость и примитивность ругаете. А мне иногда и он тяжеловат, тогда опускаюсь до уровня Форта.
    Re[31]: Новая версия макроса
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 22.02.06 15:40
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    E>>В C++ для подобных экспериментов изобрели Boost. В .NET-е, похоже, Nemerle с макросами.

    E>>Впечатление почему-то от исходников того и другого одинаковое

    VD>Шаблоны С++, а стло бытьи Буст по этому поводу нервно курит в сторонке.

    VD>Если сможешь с помощью С++-шаблонов сгенерировать код конструктора и эксесор-методы для полей, то я сниму перед тобой шляпу.

    Ну вот опять попытка понять мои слова буквально, не обращая внимания на смайлик.
    Для тех кто в танке (смайлик!):

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

    В Nemerle, имхо, сложится такая же ситуация -- будет группка продвинутых Nemerle-истов (естников), которые будут писать библиотеки макросов и получать от этого удовольствие. А оставшееся большинство будут использовать эти библиотеки даже не пытаясь понять, как же эти библиотеки устроены. И не горя желанием сотворить что-нибудь подобное.

    Именно этим-то Boost community, имхо, будет похоже на Nemerle macros community. Хотя эти community будут писать на разных языках и решать разные задачи, движущая сила у них будет одна и та же.

    VD>ЗЫ


    VD>Эх. Как бы заставить обратить внимание МС на этот проект?! Ведь сейчас проекту нехватает гарммотного коммерческого подхода. Сейчас нужно было бы произвести ревизию фич, заморозить проект и довести, что назвается, его до релиза! Ведь щастье так близко, но все может погубить отсуствие коммерческой жилки у проекта.


    Many programmers and researchers still dream of a general-purpose language that is
    so expressive, elegant, and efficient that it can cover all application areas for
    all kinds of users without significant inconveniences. Some vigorously insists
    that their favorite language actually is such a language. However, no current
    language in major use fits this ambitious profile, and we don’t see a research
    language that could possibly grow into that position in the short-to-medium
    term (e.g., within the next 15 years).

    Интересная статья Страуструпа.
    Автор: Шахтер
    Дата: 13.02.06

    Хотя да, я забыл
    Автор: VladD2
    Дата: 18.01.06
    :

    ...Видимо Страуструп из тех, кто мало понимает в теории построения компиляторов... теоретик...

    он же уже не котируется


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 22.02.06 15:48
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Откровенно говоря очень чешутся руки засунуть свои подлые рученки в их компилятор.


    Ну это желание вполне понятно. Благо исходники то есть.

    VD>Как они смотрят на впускание в проект новых людей? Если мы создадим брэнч в их проекте и покалдуем над ним, они не обидятся? В смысле права дадут?


    Не знаю. Вроде не должны.

    VD>Как варинт, скопировать их проект создать клон у нас. А когда будем находить и исправлять ошибки, или добавлять фичи будем рапортовать орлам, чтобы они тоже вставляли.


    У Nemerle лицензия BSD. С кодом можно делать что угодно, хоть коммерческий компилятор на его базе создавать. Главное чтобы хоть где-то была ссылка и на первоначальных авторов.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 15:51
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>[Record] съедается компилятором, но вот конструктора у класса не создается (смотрел Рефлектором).


    Влад, вот этот макрос у меня работает на ура (билд 0.9.2): Re[28]: Новая версия макроса
    Автор: Oyster
    Дата: 22.02.06
    . И конструктор создаётся. У тебя не работает?
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 16:02
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Наверное это потому, что Record работает только для публичных полей. В общем нужно писать свой вариант Record.


    В той версии, что у меня, он для всех полей делает. Из core.n:

    def instance_flags = BindingFlags.Instance %| BindingFlags.Public %| 
        BindingFlags.NonPublic %| BindingFlags.DeclaredOnly;
    
    // ...
    
    def flds = par.GetFields (instance_flags);
    
    // дальше использование flds

    Вообще непонятно, почему у меня этот код
    Автор: Oyster
    Дата: 22.02.06
    работает, а у остальных конструктор не генерится. Странно...
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 16:09
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Отлично. А о перфомансе ты не подумал?


    Ну во-первых мы же говорим не о перфомансе, а о принципиальной возможности реализовать такую фишку. К тому же нормальный там перфоманс для ряда задач, в число которых вполне можно отнести и работу с бизнес объектами. Все равно оверхед на все эти финтифлюшки будет почти не заметен по сравнению со временем которое будет уходить на БД.
    Собственно чего спорить. Создай ContextBoundObject и сравни. Да, обращения к нему будут порядке на два медленнее чем к обычному классу, но при этом все равно очень быстрыми.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 16:09
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ВВ>>И чем он неполноценный?

    VD>Ну, попробуй, например, на нем создать хэш-табличку.

    Т.е. SQL тоже неполноценный язык программирования? Если я пойду и скажу это нашим базовикам, ты мне припарки делать будешь?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 16:18
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>"Написанную на макросах" != "язык под это дело". Кто мешает пользоваться обычными макросами, которые не расширяют синтаксис? Потом, пихать макросы где только ни попадя не имеет смысла.


    Пользоваться обычными макросами никто не мешает. Точно так же как никто не мешает и необычными тоже пользоваться.

    ВВ>>И таких библиотек на большом проекте могут быть десятки. Причем в 90 случаях из 100 эти макросы не будут предлагать ничего по сравнению с обычным АПИ кроме другой формы записи.

    O>Это, конечно, всё вопросы культуры кода. Тут, кстати, кто-то высказывал интересную мысль, что булшитеры не смогут писать макросы из-за их относительной сложности, а те, кто смогут, не будут булшитерами и будут макросы применять аккуратно

    Тут довольно интересный момент. Немерле в каком-то смысле предлагает беспрецендентные возможности, последствия которых оценить довольно сложно. Сами синтаксические макросы как и любая диковинная новинка по своему очень привлекательны; я вот не считаю себя булшитером, но написать некую библиотеку не в виде АПИ а в виде некоего диалекта было бы весьма интересно.
    Понятно, что можно вводить всякого рода ограничения и гайдлайны для применения макросов, однако сама необходимость подобных гайдлайнов уже немного напрягает.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 16:18
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    ВВ>>Вот представь себе библиотеку для работы, скажем, с серийным портом всю написанную на макросах. По суть вместо некого КОМ-порт АПИ у нас будет специальный язык под это дело, причем еще не факт что удачного спроектированный. И таких библиотек на большом проекте могут быть десятки. Причем в 90 случаях из 100 эти макросы не будут предлагать ничего по сравнению с обычным АПИ кроме другой формы записи.

    S>Я правильно понимаю, что речь идет о плохо написанной хорошей библиотеке?

    А что, на макросах нельзя хорошо написать библиотеку?
    Да если даже и так — что в этом удивительного? Мало ты что ли видел важного/нужного АПИ, которое в то же время было плохо спроектировано? Кстати, тот же самый АПИ для работы с серийным портом из Win32 "жжот" не по-детски.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: Vermicious Knid  
    Дата: 22.02.06 16:20
    Оценка:
    O>В той версии, что у меня, он для всех полей делает. Из core.n:

    Посыпаю голову пеплом. Это мое заблуждение. У меня сейчас творческий кризис, тупею прямо на глазах.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 16:30
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

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

    ВВ>Собственно чего спорить. Создай ContextBoundObject и сравни. Да, обращения к нему будут порядке на два медленнее чем к обычному классу, но при этом все равно очень быстрыми.

    Ну... возможно всё Даже сейчас можно юзать runtime codegeneration на C# вместо макросов. Но это будет неудобнее и медленнее, чем в Nemerle. Так же и с контекстами.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 16:33
    Оценка:
    Здравствуйте, genre, Вы писали:

    G>При чем тут дворник?


    Аналогия такая. Хорошая.

    G>аналогия неверная. мы про инструмент говорим.


    И про тех, кто им будет пользоваться.

    G>аналогия должна быть примерно такая: если мне нужно убирать мусор, то что надо выбрать — метлу, которая производится легко и дешева в освоении и производстве или супер-пупер пылесос сложный в освоении, дорогой, и с неизвестно какой надежностью?


    Нет. Вот это — неверная аналогия. Задача гораздо сложнее, чем убрать мусор — а вы пытаетесь её решать теми же средствами, которыми убирали мусор.

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

    WP>> Как, продолжим аналогии, или попробуем совместно рассчитать расходы и риски на примере какого либо типичного индустриального софтового проекта?

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

    Подойдёт. Сформулируйте поточнее — объём базы, количество элементов ГУИ, вид обработки (какая часть данных вводится человеком, какие данные и в каком виде пользователи должны получать, какое время доступа к данным из GUI).
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 16:33
    Оценка:
    Здравствуйте, genre, Вы писали:

    G>О! может для примера RSDN@Home взять? благо про его разработку известно довольно много.


    Ок, сейчас почитаю. Хорошая идея — взять готовый проект и просчитать, как его сделать эффективнее.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: WinniePoh  
    Дата: 22.02.06 16:37
    Оценка:
    Здравствуйте, IT, Вы писали:

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


    WP>> Не понял — какой такой автокомплит для графического языка?


    IT>Слабо?


    Я не понимаю вообще как оно должно выглядеть. Если вы такое видели — приведите пример. Ну, допустим, автокомплит в каком либо UML-редакторе.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: genre Россия  
    Дата: 22.02.06 17:03
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    G>>О! может для примера RSDN@Home взять? благо про его разработку известно довольно много.

    WP> Ок, сейчас почитаю. Хорошая идея — взять готовый проект и просчитать, как его сделать эффективнее.
    ваш вариант на чем будет сделан?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: genre Россия  
    Дата: 22.02.06 17:03
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Нет. Вот это — неверная аналогия. Задача гораздо сложнее, чем убрать мусор — а вы пытаетесь её решать теми же средствами, которыми убирали мусор.


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

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


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

    WP>>> Как, продолжим аналогии, или попробуем совместно рассчитать расходы и риски на примере какого либо типичного индустриального софтового проекта?

    G>>вот это уже интереснее. давайте попробуем.
    G>>возьмем типичный индустриальный софтовый проект.
    G>>состоящий из трех частей — база данных, сложный гуи, обработка большого количества данных (то есть с какими-то требованиями по производительности)
    G>>подойдет такой?
    WP> Подойдёт. Сформулируйте поточнее — объём базы, количество элементов ГУИ, вид обработки (какая часть данных вводится человеком, какие данные и в каком виде пользователи должны получать, какое время доступа к данным из GUI).
    если с RSDN@Home не получится, по каким-либо причинам, вернемся к этому варианту.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 17:25
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Тут довольно интересный момент. Немерле в каком-то смысле предлагает беспрецендентные возможности, последствия которых оценить довольно сложно. Сами синтаксические макросы как и любая диковинная новинка по своему очень привлекательны; я вот не считаю себя булшитером, но написать некую библиотеку не в виде АПИ а в виде некоего диалекта было бы весьма интересно.

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

    Ну вот ты, я думаю, напишешь такую библиотеку, с которой не будет проблем

    Потом, всё-таки за всё надо платить. Например, за прикольные возможности метапрограммирования в макросах мы платим тем, что макросы сложно писать. За возможность добавления нового синтаксиса пратим уникальностью first token. И т.д. Но это всё та цена, которую я заплатить готов.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 22.02.06 17:28
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Да, это сделано не через макросы. Но! Макросами это сделать возможно, да ещё и тривиально. Hint: ничто не мешает засунуть в макру парсер.


    +1. Правда, не так уж и тривиально. Да и волшебное слово пихать в каждый исходник...
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 22.02.06 18:59
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Имхо один из ключевых недостатков Форта — необходимость постоянно держать стек в мозгу при кодировании (на Форте почти всегда приходится писать состояние стека после операции в комментах к операции, чтобы не запутаться).


    Это одна из причин быстродействия Форта. Посмотри в отладчике ассемблерный код, либо С++ либо дотнетный, где производятся цепочки вызовов методов. Да там около половины кода — это тасовка значений м/у регистрами. Программы на Форте (хорошие программы) от этого избавленны, ибо в хороших программах на Форте практически нет лишних перетасовок данных. Твои слова должны располагаться в таком порядке и иметь такую стековую нотацию, чтобы для вызова следующих слов не нужно было тасовать данные... В общем, это своего рода Дао, типа процесса ручной разводки плат.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 22.02.06 19:12
    Оценка:
    Здравствуйте, Oyster, Вы писали:


    O>Не принципиально. Но проще ли? Сравниваем:

    O>
    O>// Делай раз
    O>[Accessor(WantSetter = true)]
    O>mutable _somePropery : int;
    
    O>// Делай два
    O>private mutable _somePropery : int;
    
    O>public SomePropery : int
    O>{
    O>  get { _somePropery }
    O>  set { _somePropery = value; }
    O>}
    O>


    в блокноте "делай раз" сэкономит десяток символов, в IDE вариант "делай два" нарисовать примерно в 2 раза быстрее с помощью снипетов:
    prop int SomeProperty (тут жмешь назначенный шоткат клавиатуры)


    O>А ещё "делай раз" рефакторить проще. Да и соглашения об именовании соблюдаются автоматически


    Если в решарпере настроил префиксы статических и инстансных филдов, то все тоже соблюдается автоматически при рефакторинге.

    O>А если не нравятся такие соглашения, можно явно указать property name или взять сорсы Accessor и написать свой макрос по мотивам.


    Соглашусь на макрос в виде того снипета, который указал Если еще и область действия ему ограничить только областью определения членов класса, то будет вообще гут.
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 22.02.06 19:28
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Ну... ещё оно колышет MS: Microsoft DSL Tools


    Ты поинтересуйся, куда оно диаграммы сериализует.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> У меня не срывает почему-то.


    Я искренне рад за тебя, но у 99% людей срывает.
    Даже косвенность индекса больше 3 рвет крышу у большинства народа. А уж генерация кода, генериующего код, генериующего код, ... это уж сосвсем не просто.

    WP> Мои макры часто имеют до дюжины уровней вложенности. Но всё прозрачно — на каждом шагу преобразование тривиально, просто получается чуть-чуть более другой язык.


    Здорово. Но лично мне это не нужно. Мне кроме макросов еще много чего делать нужно. Мне нужно решить свои проблемы как можено быстрее и забыть про них.

    WP> Для выполнить один раз — вообще без разницы, если этот один раз выполняется во время компиляции. Ведь не плачет народ над тем, насколько тормозной и до памяти жадный интерпретатор языка темплейтов в компиляторах C++.


    Плачет. Я вот долго плакал. Потом просто забил на С++.

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


    DSL создается исключительно для упрощения решения своих проблем. Это не самоцель.

    WP> Проблемы начинаются в тот момент, когда семантика DSL оказывается чрезмерно далёкой от семантики базового языка. Тогда хочется, чтобы базовый язык был более тупым и низкоуровневым (и соответственно более гибким).


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

    WP> Я, конечно же, для большинства задач тоже выберу Nemerle или скорее Template Haskell, но и для Common Lisp у меня примений очень немало.


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

    Немерл мне тем и импонирует, что это тот язык на который совершенно реально перетянуть среднего мэйнстрим-программиста. Лисп не смог сделать это на протяжения почти 50 лет. Так что и пытаться не хочется.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Нет. Сплайс-синтаксис и quotations — не решение. Оно работает идеально для одноуровневых макр. А для многоуровневых, для таких, в которых промежуточный AST фундаментально (N.B.!!!!) отличается от AST базового языка, он работать никак не будет. Точнее, будет, но с синтаксическими преобразованиями посерёдке между макрами. Перед макрой весь нагенерённый AST — в строку, в макре — обратно из строки. Неэффективно.


    А многим нужны эти многоуровневые решения? Мне лично не очень. Я и так прибегну к макросам только в крайнем случае.

    WP> Я такого добра нарадовался уже предостаточно и с CamlP4, и с Template Haskell. И меня бесят макры R5RS за свою однопроходность.


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

    WP> Всё так (только quasiquote есть и в CL, точно так же как в Схеме).


    Да, несомненно. Но мное но этот вопрос мы уже обсудили. Я с удовольствием повожусь с преобразованием АСТ в хитром макросе, но не хочу писать на нем программы. К тому же одно дело квази-цитирование в Лиспе, а другое в языке с синтаксисом. Его сложнее реализовать, но за-то проще использовать. Заметь! Не гибче, а проще.

    WP> Но проблема остаётся — AST недостаточно общий. Нет и не может быть ничего более общего чем двоичное дерево S-выражений.


    Не вижу разницы с полноценным типизированным АСТ.

    WP> С AST заточенным под один язык с довольно сложным синтаксисом мы не сможем создавать произвольные промежуточные языки, на нас этот сложный синтаксис накладывает непростительно много ограничений.


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

    WP> Маленький совет — постарайтесь отвыкнуть от Сищного синтаксиса. Он избыточен. Он ограничивает. Он просто объективно неоптимален. Посмотрите на Haskell.


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

    VD>>Хм? Что нишевого в Нэмерле?


    WP> Скомпилируйте (так, чтоб макра-компилятор была простой и понятной) в нём DSL с семантикой близкой к Прологу.


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

    Зачем мне Пролог? У меня другие задачи.

    WP> Изобразить тупенькую низкоуровневую машину Уоренна на высокоуровневой сложной семантике Nemerle — это будет героический подвиг. Вами будет гордиться вся страна!


    Мне не нужна гордость страны. Мне унжен удобный инструмент позволяющих решать широкий круг задачь. Потенциально любую задачу можно решить на любом полноценном языке. Собственно самые объемные решения до сих пор написаны в основном на С. Так что впорос не в возможностях, а в простоте их достижения. Я не вижу простоты в Лиспе. Ну, не вижу. Мно раз заставлял себя пописать на этом чуде, но кроме как раздражения ничего не испытывал.

    В общем, мы повторяемся.

    WP> Так низкий уровень всё равно недоступен.


    Ну, и слава богу. Это дотнет в конце концов. Я волен взять C#, С++ или даже писать на MSIL если мне это потребуется. Все эти языки позволяют спуститься на довольно низкий уровень. Но я последние годы легко обходился без спускания на этот низний уровень. Ну, не пишу я менеджеры памяти. И с дравами не общаюсь. Зачем мне это? Кому надо тот пусть и возится с битами.

    WP> Правда, к сожалению, сама семантика CLI недостаточно низкоуровневая.


    Все в ней достаточно. Но предлагаю не перепрыгивать на эту тему.

    WP> Вы уверены, что ваши решения заслуживают эпитета "прекрасно"?


    А надо? Главное, что они есть, они легко модифицируются и развиваются, и они довольно быстро пишутся.

    VD>> то в Нэмерле я вообще проблем знать не буду. На крайняк в нем есть возможность получить доступ к токенам и сделать все что хочешь. Но надеюсь прибегать к такому низкому уровню, кстати, в общем-то к Лисп-уровную, я лично очень не хочу. Мне банально жалго свое время.


    WP> Жалко, не жалко — а ведь придётся. Задачи — они разные бывают. Если пойти по этому великолепному и прекрасному пути Language Oriented Programming, то начнут рано или поздно встречаться DSL-и с очень экзотической семантикой.


    Поживем, увидим.

    WP> Вот вы тут Лисп за низкоуровневость и примитивность ругаете. А мне иногда и он тяжеловат, тогда опускаюсь до уровня Форта.


    Значит мы просто разные люди или у нас совсем разные задачи.

    Кстати, интересно каков объем исходников Емакса? Он ведь на Лиспе написан вроде.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

    СТ>А о каком формате идет речь в твоём примере?

    string.Formar("Имя: {0} Фамилия: {0}", name, lastname)

    vs.
    $"Имя: $name Фамилия: $lastname",
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Не, Влад, так — не круто. Приложения должны поддаваться локализации;


    Хм. И даже если я пишу утилиту командной строки для собственных целей?

    S> а это означает переменный порядок "вставленных" слов во фразе.


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

    S> Неслучайно в Delphi/Builder был применен вариант сишного формата, в котором можно было указывать аргументы не в порядке следования. И неслучайно в дотнете единственный необходимый параметр формата — это номер аргумента.


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

    S>Кстати, я вот еще думал в свое время над синтаксисом типа такого:

    S>
    S>string.Format("Имя: {Name} Фамилия: {LastName} Возраст: {Age}, Место работы: {Employment.CompanyName} ", person);
    S>

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

    И чем, раскажи на милость, это отличается от:
    $"Имя: $(person.Name) Фамилия: $(person.LastName) Возраст: $(person.Age), Место работы: $(person.Employment.CompanyName_ "

    По сути разница толко в том, что ты можешь подсунуть в person все что угодно и вылет будет в рантайме. Хотя конечно можно сделать макрос который и такое разрулит. Вот только надо ли?
    По моему, и так очень неплохо.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>ты посчитай, сколько на идентификаторы приходится всяких скобочек, палочек и долларов. Если ты надеешься, что Nemerle сможет стать мейнстримом и потеснить C#, то представь, что на нем будут делать люди, которые даже в менстримовой Java умудряются выдавать такое: http://thedailywtf.com/forums/61026/ShowPost.aspx


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

    E>Разговор бы не о том, решаема ли на C++ подобная задача или нет. И решаема ли она в других языках. Разговор был о том, насколько читабельны выглядят решения на шаблонах в C++ или реализации макросов в Nemerle.


    Еще раз. Как сравнивать разные вещи? Можно сравнить две строки на ассемблере с огромным C#-файлом и сделать вывод, что C# отстой. Но это же не имеет смысла.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Чего-то у меня с логикой.

    E>А почему нельзя откатиться к версии генератора boot-а, которая была правильной?

    Потому, что ты сделал уже кучу работы. И всю ее нужно будет откатить. Дело в том, что изменненный формакт требует нового генератора. А генератор не верный. Один раз компиляция/генерация проходит. А дальше приплызд.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>В общем, в итоге мне удалось решить Re[28]: Вопрос
    Автор: Oyster
    Дата: 22.02.06
    , но какой ценой...:


    O>
    O>        // Вот тут начался настоящий изврат - делаем новый TypeDeclaration.
    O>        // Может, можно как-то иначе?
    O>        // Правда, этот код можно написать один раз и реюзать...
    O>        def typedecl = <[ decl: [Record] public class $(className.ToString() : usesite) {} ]>;
    O>        def newTopdecl = TopDeclaration.Class(
    O>            typedecl.Location,
    O>            typedecl.name,
    O>            typedecl.modifiers,
    O>            typedecl.td.typarms,
    O>            (typedecl.td :> TopDeclaration.Class).t_extends,
    O>            code.Reverse());
    O>        def builder = ctx.Env.Define(ClassMember.TypeDeclaration(
    O>            typedecl.Location,
    O>            typedecl.name,
    O>            typedecl.modifiers,
    O>            newTopdecl));
    O>        builder.Compile();
    O>


    А в чем проблема то? Почему без этого копирования ничего не работает?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, eao197, Вы писали:

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

    E>Для тех кто в танке (смайлик!):

    Извини, но в данном контексте это выглядит как усмешка, а не как добрая шутка. Потому и реакция соотвествующая.

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


    E>В Nemerle, имхо, сложится такая же ситуация -- будет группка продвинутых Nemerle-истов (естников), которые будут писать библиотеки макросов и получать от этого удовольствие. А оставшееся большинство будут использовать эти библиотеки даже не пытаясь понять, как же эти библиотеки устроены. И не горя желанием сотворить что-нибудь подобное.


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

    E>Именно этим-то Boost community, имхо, будет похоже на Nemerle macros community. Хотя эти community будут писать на разных языках и решать разные задачи, движущая сила у них будет одна и та же.


    Понимаш ли в чем дело. Ты тут споришь с теми С++-никами которые не пожелали влиться в стройные редя Буст-комьюнити. И не пожелали не потому, что тыпы чтобы понять и проникнуться, а наоборот они слишком умны (скромно ) чтобы обрякать себя на возню с половинчатыми и переусложненными решениями. (прошу понять меня, а не видить в моих словах очередной наезд на С++)

    Я люблю чистые решения. И очень страдаю от того, что реальные решения не всегда чисты. Так вот Нэмерел для меня — это шанс страдать меньше.

    E>

    E>Many programmers and researchers still dream of a general-purpose language that is
    E>so expressive, elegant, and efficient that it can cover all application areas for
    E>all kinds of users without significant inconveniences. Some vigorously insists
    E>that their favorite language actually is such a language. However, no current
    E>language in major use fits this ambitious profile, and we don’t see a research
    E>language that could possibly grow into that position in the short-to-medium
    E>term (e.g., within the next 15 years).

    E>Интересная статья Страуструпа.
    Автор: Шахтер
    Дата: 13.02.06

    E>Хотя да, я забыл
    Автор: VladD2
    Дата: 18.01.06
    :

    E>

    E>...Видимо Страуструп из тех, кто мало понимает в теории построения компиляторов... теоретик...

    E>он же уже не котируется

    Это мне напомнило один советский мултфилм. Есл не ошибаюсь про Икара. Сюжет там был такой. Икар с завидным упрямством делает новый вариант крыльев, взбирается на гору, разбегается и прыгает. Рядом сидят умные мужи, то есть кучка скептиков и кидают очередную мудрую фразу (рельно в мутфильме исползовалис древние поговорки). Высказывание превращается (на экране) сначала в эдакий балун, а потом в камень. Икар ударяется об этот камень и падает на землю. Так продолжается очень долго. И когда скепктики задалюываются и пересоют обращать внимание на Икара, тот раз... и полэтел (с). Скептики начинают резко суетиться...

    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

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


    Это, катати, не только не поздно сделать, но и очень даже нужно. Так как выт тут у нас самые продвинутые и ваши знания позволяют другим не биться лбом о все подводные грабли (с).
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>У Nemerle лицензия BSD. С кодом можно делать что угодно, хоть коммерческий компилятор на его базе создавать. Главное чтобы хоть где-то была ссылка и на первоначальных авторов.


    Ладно. Надо разгрестись и попробовать. Как миниуму изучение их компилятора точно пойдет на пользу.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 19:54
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

    VD>>Поделись, плиз, как это делается (баг-репорты отправляются). А то я тоже тут уже на парочку багов наткнулся. Незначительных, но все же...


    СТ>Тебе .сюды.


    А. Это я уже видил. Только так и не понял, что там делать то надо.

    Как туда что-то добавить?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 22.02.06 20:01
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Ты в состоянии читать внимательно? Я просил не приводить советов по улучшению кода, мне это даром не нужно.


    Видишь ли — если ты написал кучу дисклеймеров, что код на C# неправильный, это еще не значит что он от этого станет правильнее. Использовать switch для pattern-matching глупо, а сравнивать тем более. Switch вобще в ручном коде оправдан крайне редко, а уж за тот, что ты привел надо надавать по шапке. Решаются такие задачи совсем не так. А как нибудь так:
    private static readonly Dictionary<CurrencyPair, decimal> _exchangeRate = new Dictionary<CurrencyPair, decimal>();
    
    ...
    
    public Price ConvertTo(Currency otherCurrency)
    {
        if (!_exchangeRate.ContainsKey(otherCurrency))
            throw new Exception(string.Format("Convertion from {0} to {1} not supported!", currency, otherCurrency);
        return new Price(amount * _exchangeRate[new CurrencyPair(currency, otherCurrency)], otherCurrency);
    }


    Так что смысл твоего примера я так и не понял. Если ты хотел показать pattern matching, то пример на редкость неудачный.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 22.02.06 20:18
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Еще одна мысль по поводу compile-time генерации vs precompile-time. В случае precompile-time можно нагенерировать обычный класс с комментариями. Он может быть обработан инструментом типа javadoc и программисту будет предоставлена документация о том, что в TestClass кроме prop1 и prop2 будут еще геттеры-сеттеры. А вот такой DSL как документировать?


    Документация не самое страшное. А вот если понадобится сгенерить SQL или какой нибудь WSDL, то тут уже придется задуматься.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 20:18
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Так оно и есть. Посмотри комментарии к баг-репорту на bugs.nemerle.org, который я отправил.


    Я пока что не могу поянть как совладать с их багтрекилокой. Потом как там отличить твой багрепрот? На него ссылку как-то можно дать?

    VK>Можно. Самый простой способ наверное это Nemerle.Compiler.Macros.IsTypeName.

    VK>
    VK>using Nemerle.Compiler;
    VK>macro test()
    VK>{
    VK>      // False True
    VK>    System.Console.WriteLine($"$(Macros.IsTypeName(<[Test]>)) $(Macros.IsTypeName(<[System.String]>))");
    VK>    <[ ]>
    VK>}
    VK>


    Надо попробовать в ваши варианты вставить его. Может перестанет про partial орать...

    VK>Это несложно добавить. Посмотри Parsing/Parsetree.n. Всего-то нужно реализовать ToString для каждого из вариантов.


    Дык это хорошо бы в сами классы добавить. А то ведь хрен найдешь где эти функции.

    В любом, случае мой опыт работы над R#-ом показывает, что это очень нужно. Упрощает работу офигительно.

    Идеально вообще следать графическую утилиту которая будет показывать АСТ в виде дерева (как в Эксплорере) в разных стадиях преобразования. Ну, и чтобы она естественно код для выделенной ячейки генерировала.

    В общем, если интересно можешь поглядеть CodeAnalizer из R#-а. Вот что-то вроде того.

    VD>>Ну, и хотелось бы иметь возможность распечатать весь сгенерированный код или выборочные его куски (например, класс по имени).


    VK>А вот это можно. Во-первых есть ключ -dt правда работает он на мой взгляд неважно.


    Дык это ведь ключь. А это неудобно. Тут важна интерактивность. Вискивать в тонне сгенерированного текста нужный участок еще та задачка. А вот если можно прмямо по месту, в максрое... это резко снизило бы сложность.

    VK> Еще теоретически можно написать макрос который будет проходиться по всем типам и дампить их код(например в файлах). Единственная проблема заставить этот макрос сработать после выполнения всех остальных макросов. Функцию для итерации по типам я где-то видел.


    Дык не нужно по всем. И не нужно в конце. Нужно контексно, и в нужной точке. Это же как отладка. Думаю ты не раз использовал printf или нечто вроде него для отладки. Вот в макросах должно быть нечто вроде того. Без этго я бы в R#-е зашился бы.

    VK>Во-вторых есть интересный макрос Nemerle.Macros.pretty_print_expr.


    Я его сморел. Это не то. Он печатает то что ему дали. А нужно печатать сдержимое переменной содержащей АСТ.

    VK> Вот пример использования:

    VK>
    VK>using Nemerle.IO;
    VK>using Nemerle.Macros;
    VK>def nums = array[1, 2, 3];
    VK>pretty_print_expr({ foreach(n in nums) printf("%d\n", n) }, true);
    VK>

    VK>А вот что он выведет:
    VK>
    VK>def cached_collection = nums;
    VK>def _N_994 = cached_collection.Length;
    VK>def _N_993 = (0 :> int);
    VK>block (_N_break) :  
    VK>   def []_N_for_1135 () : void {
    VK>    when (<.s (_N_993, _N_994)) {
    VK>      (block (_N_continue) :        
    VK>      match (cached_collection [_N_993]) {
    VK>          | (_) as n =>
    VK>            def _N_1146 = (n : int);
    VK>            System.Console.Write (_N_1146);
    VK>            System.Console.Write ("\n");
    VK>            ()
    VK>          | _ =>
    VK>            ()
    VK>        };
    VK>      ();
    VK>      _N_993 = ++.i4.s (_N_993);
    VK>      _N_for_1135 () : void)
    VK>    }
    VK>  }
    VK>  _N_for_1135 ()
    VK>


    Здорово, но не то. Нужно, чтобы он примерно то же вывел бы в следующем случае:
    def a = <[ foreach(n in nums) printf("%d\n", n) ]>;
    pretty_print_expr(, true);


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


    Понятно. Это хорошо. Но нужно еще и дампить само АСТ, а не только макросы раскрывать. Хотя это тоже приятно.
    Ведь для сгенерированного класса ты это сделать не сможешь.

    Вообще, для подобных вещей конечно нужна поддержка в IDE. Прикинь как было бы здорово, если бы можно было увидит все тоже самое наведя курсор на foreach?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 20:18
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Вообще непонятно, почему у меня этот код
    Автор: Oyster
    Дата: 22.02.06
    работает, а у остальных конструктор не генерится. Странно...


    Хм. "Этот" код не простой. Мы ведь не использовали TopDeclaration.Class(). Может так и прокатит. Сейчас попробую...
    Попробовал. Твой код работат. Но он совсем дургой.

    Ты бы, кстати, объяснил его смысл. Почему ты пришел к такому решению?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 22.02.06 20:42
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Макрос генерит класс в compile-time в соответствии с постановкой задачи. Конструктор вот только пока что не создаётся (уже домой бежать надо — завтра, надеюсь...). Используется макрос вот так:


    O>
    O>using Oyster;
    
    O>metaclass TestClass {
    O>    prop1 : int;
    O>    prop2 : string
    O>}
    O>


    Никоим образом не хочу преуменьшать важность и значимость подхода, который ты привел, но в реальном приложении, из которого взят пример, такой подход не годится. Во-первых там нужна метаинформация в рантайме, для чего xml подцепляется в скомпилированную сборку в виде ресурса. Причем рефлекшен по сгенеренному классу здесь не прокатит, потому что далеко не все, что содержится в метаинформации, используется при генерации исходников. Во-вторых, что еще печальнее, часть кодогенерации выполняется не на этапе компиляции, а на этапе деплоймента, и перенести ее на этап компиляции нельзя, потому что в этом случае используется специфика платформы, в которой производится процедура, на этапе компиляции неизвестная принципиально.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 21:16
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Влад, вот этот макрос у меня работает на ура (билд 0.9.2): Re[28]: Новая версия макроса
    Автор: Oyster
    Дата: 22.02.06
    . И конструктор создаётся. У тебя не работает?


    Так работает. Колись в чем смысл.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 21:16
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

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


    ВВ>>>И чем он неполноценный?

    VD>>Ну, попробуй, например, на нем создать хэш-табличку.

    ВВ>Т.е. SQL тоже неполноценный язык программирования?


    Да. SQL — это классический пример DSL-я. Это язык запросво к реляционным БД.
    Вот T-SQL или PL-SQL как раз полноценные языки, так как это обычные императивные ЯП с встроенным SQL.

    ВВ> Если я пойду и скажу это нашим базовикам, ты мне припарки делать будешь?


    Нет. Не буду, так как они люди грамотные и культурные. Посмеются и забудут.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 21:23
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Кстати, интересно каков объем исходников Емакса? Он ведь на Лиспе написан вроде.


    Вообще-то ядро написано на С.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 21:57
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Например, вот тута: http://www.cliki.net/TypeL


    TypeL is a Common Lisp sublanguage with strong typing and type inference a la ML.


    Не правда ли странно делать выводы для всего Лиспа на базе одного из его клонов?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: WolfHound  
    Дата: 22.02.06 22:00
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Документация не самое страшное. А вот если понадобится сгенерить SQL или какой нибудь WSDL, то тут уже придется задуматься.

    Дык эта... макросы могут делать что угодно... и к базе приконектиться и в фаил писать...
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 22:33
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    VD>>Кстати, интересно каков объем исходников Емакса? Он ведь на Лиспе написан вроде.


    ВВ>Вообще-то ядро написано на С.


    Я слышал, что весь на Лиспе. Может речь о диалекте была...
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 22.02.06 22:33
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP> Ок, сейчас почитаю. Хорошая идея — взять готовый проект и просчитать, как его сделать эффективнее.


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

    ЗЫ

    Тут еже Хоум на чем только не переписывали. Но переписать смогли только на языке. Точнее языком.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 22.02.06 22:45
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    AVK>>Документация не самое страшное. А вот если понадобится сгенерить SQL или какой нибудь WSDL, то тут уже придется задуматься.

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

    В момент компиляции? А нафига?
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 22.02.06 23:03
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Я слышал, что весь на Лиспе. Может речь о диалекте была...


    А ты ознакомься... Емакс — это все-таки в первую очередь настоящий ГНУтый проект, а чтобы в настоящем ГНУтом проекте не было С

    Собственно, ядро емакса — это и есть диалект лиспа, Emacs Lisp, который как раз и написан на С.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 23.02.06 00:48
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    WP>> Я не понимаю вообще как оно должно выглядеть. Если вы такое видели — приведите пример. Ну, допустим, автокомплит в каком либо UML-редакторе.


    ВВ>Ты вместо пива водки с него потребуй, тогда сразу поймешь


    Не вопрос
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 23.02.06 00:53
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Авторы тяготеют к функциональщике. Функциональщика к неизменяемым объектам. Так что не судренно, что по умолчанию самая простая запись для неизменяемых свойств. Для них она проста и логична:


    А если я хочу атрибут навесить на геттер? Упс?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 23.02.06 02:21
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Согласен, это решение. Редкостной извращённости, но решение.


    Увы, иногда других решений нам не оставляют.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 23.02.06 02:28
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    IT>>Согласен, это решение. Редкостной извращённости, но решение.


    Д>Увы, иногда других решений нам не оставляют.


    Ну да, осталось только ещё погордиться этим
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 23.02.06 02:32
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:
    ВВ>А что, на макросах нельзя хорошо написать библиотеку?
    ВВ>Да если даже и так — что в этом удивительного? Мало ты что ли видел важного/нужного АПИ, которое в то же время было плохо спроектировано?
    Из заменяемого — мало. ВинАПИ имеет то "преимущество", что его невозможно выкинуть и заменить. В общем, мне кажется, что ты будешь выбирать ту библиотеку, которая хорошая. Плохая — нафиг не нужна по очевидным причинам, а хорошую вряд ли напишут люди, которые просто хотели другой формы записи. Тем более вряд ли в проект попадут прямо десятки таких уродцев. "Я вчера случайно в шестой раз перечитал вашу книгу и опять плевался".
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[30]: Новая версия макроса
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 07:41
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>А в чем проблема то? Почему без этого копирования ничего не работает?


    Нам надо как-то засунуть список полей, полученный отдельно, в объявление класса, прежде чем скормить объявления методу env.Define() (см. Re[28]: Снова о Nemerle или профанация не пройдет :)
    Автор: Oyster
    Дата: 22.02.06
    ). Так, как я хотел тут — Re[28]: Вопрос
    Автор: Oyster
    Дата: 22.02.06
    — это сделать не получилось. Поэтому я делаю так:

    // Сначала получаю объявление класса без полей.
    // Тут typedecl типа Nemerle.Compiler.Parsetree.ClassMember+TypeDeclaration
    def typedecl = <[ decl: [Record] public class $(className.ToString() : usesite) {} ]>;
    
    // Потом создаю новый typedecl, но в качестве списка чайлдовых ClassMember-ов
    // указываю список полей, полученный на предыдущем шаге.
    // Остальные свойства остаются такими же
    def newTopdecl = TopDeclaration.Class(
        typedecl.Location,
        typedecl.name,
        typedecl.modifiers,
        typedecl.td.typarms,
        (typedecl.td :> TopDeclaration.Class).t_extends,
        code.Reverse());  //  вот он - список полей
    def newTypedecl = ClassMember.TypeDeclaration(
        typedecl.Location,
        typedecl.name,
        typedecl.modifiers,
        newTopdecl);
    
    // И в конце передаю объявление класса уже с полями в Define()
    def builder = ctx.Env.Define(newTypedecl);
    builder.Compile();

    А сделано всё это так "императивненько" потому, что другого, более красивого способа, я не нашёл. Ну а код активации с их форума ещё не пришёл почему-то
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 07:41
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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


    Да я всё понимаю. Я для себя рассматривал эту задачу как пример написания макроса. Опять же, я уже вроде говорил, но повторюсь — мы можем написать функцию, которая возвращает AST. Т.е. делать это из XML на этапе выполнения, но всё равно используя преимущества <[ ]>
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 07:41
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    O>>Имхо один из ключевых недостатков Форта — необходимость постоянно держать стек в мозгу при кодировании (на Форте почти всегда приходится писать состояние стека после операции в комментах к операции, чтобы не запутаться).


    V>Это одна из причин быстродействия Форта. Посмотри в отладчике ассемблерный код, либо С++ либо дотнетный, где производятся цепочки вызовов методов. Да там около половины кода — это тасовка значений м/у регистрами. Программы на Форте (хорошие программы) от этого избавленны, ибо в хороших программах на Форте практически нет лишних перетасовок данных. Твои слова должны располагаться в таком порядке и иметь такую стековую нотацию, чтобы для вызова следующих слов не нужно было тасовать данные... В общем, это своего рода Дао, типа процесса ручной разводки плат.


    Да, тут я согласен. Производительность выше из-за того, что стек используется оптимальней. Но проблема, которую я написал выше, никуды не девается.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 07:44
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Так работает. Колись в чем смысл.


    Re[30]: Новая версия макроса
    Автор: Oyster
    Дата: 23.02.06
    Re[33]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 07:44
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Хм. "Этот" код не простой. Мы ведь не использовали TopDeclaration.Class(). Может так и прокатит. Сейчас попробую...

    VD>Попробовал. Твой код работат. Но он совсем дургой.

    Он простой. Просто надо было докопаться до того, как всунуть список полей в объявление класса — всего и делов Это можно вынести во внешнюю функцию один раз и юзать всегда (если лучшего решения нет).

    VD>Ты бы, кстати, объяснил его смысл. Почему ты пришел к такому решению?


    Re[30]: Новая версия макроса
    Автор: Oyster
    Дата: 23.02.06
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 23.02.06 07:50
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP>>> Возможно всё. Из Лиспа сделать Nemerle тривиально. Из Nemerle сделать Лисп тривиально.


    VD>>Тривильно? Ну, так сделай. Если получится, я с удовольствием на нем по программирую. А делать Нэмерл из Лиспа лично я не хочу. Это огномный труд, а не тривильное занятие.


    WP> Да ничего огромного. Семантика Немерля довольно примитивная, все алгоритмы — простые и хорошо известные.


    Давайте лучше Лисп (а еще лучше — Схему) для дотнет напишем. А то все то, что есть на сегодняшний момент для дотнет немного сыро и криво. А задача эта на порядок проще того же Януса. Официальная спецификация Схемы есть, она очень небольшая (в сравнении со спецификациями других используемых мною языков)

    Заготовки у меня кое-какие уже есть, и даже немного работают, определяются и работают процедуры. Дошел до special forms (это основа макросов, define-ов, и пр., сам синтаксис определения макро — это лишь макрос), но после Нового года не было вообще свободного времени.

    Зачем это надо?
    1. Для задач, где требуется не эмуляция, а реальный скриптинг. Т.е. например мы можем в одном домене дотнета прогонять запросы на вычисления сотен и тысяч разных процедур, модифицировать процедуры, загружать заново и так до бесконечности без побочного эффекта "засорения" домена. Ведь дотнет не поддерживает выгрузки программ. А вся среда Лиспа/Схемы — это данные.

    2. Очень неплохая скорость вычислений. Да и скорость компиляции тоже потрясающая. На Лиспе даже можно будет заниматься прорисовкой графики контролов, вполне должно сносно работать. В интерпретируемом варианте на каждый шаг программы мы имеем потери ценой примерно в одно приведение типов + один виртуальный вызов + один if. Для вызова процедур + еще один. В общем, шустро.

    3. Всякие ОС типа Сингулярити на подходе. В процессы этой ОС невозможно будет подгружать код, только данные. Лисп машина подходит идеально. по скорости должна будет с большим отрывом дрючить плагины, выполненные как отдельные SIP-ы. Для реализации всяких бухгалтерских и пр. бизнес-систем — незаменимое качество.

    4. Механизм Лисп-машины можно использовать как бэк-энд для других скриптовых нужд. Например прямо сейчас заканчиваю парсер ОБЫЧНЫХ (не в Лисповой нотации) выражений для некоего веб-сайта. Эти выражения редактируются из браузера, затем компилятся в структуры Лисп-машины на стороне сервака, и затем запускаются для выполнения расчетов над приличными объемами данных (под гиг).

    5. Очень прост сам способ расширения функциональности Лисп-машины. Публичные статические методы любого класса внешних сборок нетрудно добавить в среду, и они будуи использоваться наряду с "обычными" лисповыми. (Собственно, разработка и началась с поиска этих способов, именно так реализованы базовые примитивы)

    Т.е. сама по себе Лисп-машина уже будет являться неплохой платформой для произвольного скриптового языка (опять же, например некий C# или VB.Net-подобный скриптовый язык для бухгалтерских программ)

    Какие еще есть коссвенные преимущества:
    6. Управляемость и надежность. Мне страшно давать в руки бухгалтера какой-нить JavaScript.Net, потому как он сможет написать программу, которая подключает внешние сборки, которые могут предоставлять абсолютно произвольные возможности навредить компьютеру, программной системе и нервам разработчиков. Напротив в Лисп/Схеме существует понятие "окружение". Этим окруженим можно управлять как угодно (имеется в виду не из Лиспа, а из хост-системы), формировать ограниченный список доступных процедур, например. Т.е. вообще для каждого прикладного объекта можно было бы подавать заточенное именно на "местные" нужды окружение, которое не позволит написать потенциально опасные куски в бухгалтерских программах.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[33]: Новая версия макроса
    От: vdimas Россия  
    Дата: 23.02.06 08:08
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    Не знаю, насколько далеко зайдет этот Немерле, но уделать 10 000 индусов не откажусь!



    (в принципе, может зайти далеко, в MS есть открытый проект оптимизирующего бэк-энда компиляторов для дотнета, насколько я понял Nemerle пока его не юзает, но теоретически ничего не мешает)
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 23.02.06 08:14
    Оценка:
    Здравствуйте, IT, Вы писали:

    ВВ>>Ты вместо пива водки с него потребуй, тогда сразу поймешь


    IT>Не вопрос


    Не соглашайся!
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 08:33
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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


    Тебе Reflection.Emit больше нравится? С XSLT не имеет смысла сравнивать, поскольку тут точно уж лучше макросы.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 23.02.06 08:47
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

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


    V>>6. Управляемость и надежность. Мне страшно давать в руки бухгалтера какой-нить JavaScript.Net, потому как он сможет написать программу, которая подключает внешние сборки, которые могут предоставлять абсолютно произвольные возможности навредить компьютеру, программной системе и нервам разработчиков.


    AVK>CAS спасет отца русской демократии.


    Во-первых, основной мой упор был на аргумент гибкости и "незасоряемости" домена после обновлений кода, без остановки, скажем, сервера приложений (именно так).

    Во-вторых, CAS действует уже в run-time. А значит мы головную боль перекладываем с разработчика системы на разработчика прикладной платформы (то бишь на продвинутого юзера системы). Он будет черепить, выдумывать код, писать его. И этот код даже будет компилироваться без проблем... Но зато этот код не будет работать. И не факт, что ошибка возникнет в таком месте, вышележащий уровень которого не глотает исключения (распространенная манера в прикладных участках). В общем, CAS хорош для разработчиков по организации безопасности разрабатываемых систем, но представляет собой неуправляемый источник головной боли, если вручить его в руки пользователям-прикладникам.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 09:03
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здорово, но не то. Нужно, чтобы он примерно то же вывел бы в следующем случае:

    VD>
    VD>def a = <[ foreach(n in nums) printf("%d\n", n) ]>;
    VD>pretty_print_expr(, true);
    VD>

    Фигня вопрос. Смотрим код макроса (core.n):

    def ctx = if (expand) Some (Macros.ImplicitCTX()) else None ();
    PrettyPrint.PrintExpr (ctx, exp);

    Как видишь, внутри вызов обычной функции — только контекст нужен. Итого: делаем ctx (как в макросе) и пихаем вместе с AST в PrintExpr().
    Re[31]: Новая версия макроса
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 09:31
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Это, катати, не только не поздно сделать, но и очень даже нужно. Так как выт тут у нас самые продвинутые и ваши знания позволяют другим не биться лбом о все подводные грабли (с).


    Для начала хотелось бы услышать ответ от самих разработчиков — может, таки есть вариант покрасивше?... Я уже им на форум запостил — будем ждать.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 23.02.06 10:41
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:
    VK>
    VK>$"Имя:$(name)Фамилия:$lastname"
    VK>

    Круто!
    И тем не менее. Чего бы я хотел — так это типизированных форматных строк.
    То есть мы как бы понимаем, что
    а) передать что попало в форматную строку мы не можем — нарвемся на исключение
    б) использовать что попало в качестве форматной строки мы тоже не можем.

    По идее, если бы я решал все с чистого листа, то вместо string.Format я бы звал что-то типа специализированного метода:
    namespace Resources
    public class Ru
    {
      public string PersonConverter(IPerson person)
        {
            return "Имя: "+person.name+"Фамилия: "+person.lastname;
        }
    }
    ...
    
    {
      PersonTitle.Text = Resources.Ru.PersonConverter(person);
    }

    Таким образом, я был бы застрахован с обоих сторон: и со стороны использования (я не смогу передать ничего, кроме персона в этот конвертер), и со стороны локализации (я не могу использовать ничего, кроме свойств IPerson).
    Увы, такую локализацию мне ни один текрайтер не напишет.
    Здесь, наверное, и можно применить макрос Влада: выкидываем из Resources.Ru все, кроме тел этих методов, записанных как можно более компактно.
    То есть я (как разработчик) объявляю себе класс PersonResources c виртуальными методами, а текрайтерам отдается что-то вроде:
    PersonResources.Ru : PersonResources
    {
      PersonConverter: IPerson => $"Имя:$(name)Фамилия:$lastname";
    }

    В итоге мы получаем тотальный контроль на этапе компиляции, минимум риска сделать ошибку, а в случае удачи — еще и code completion в форматной строке для текрайтеров, которым будет ишшо проще делать вставки. При этом я вполне могу писать основной код на чистом шарпе, для упрощения понимания коллегами, а для сателлитов использовать вот этот специальный диалект.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 23.02.06 11:04
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Во-первых, основной мой упор был на аргумент гибкости и "незасоряемости" домена после обновлений кода, без остановки, скажем, сервера приложений (именно так).


    Я не про основной упор, а про конкретный п.6

    V>Во-вторых, CAS действует уже в run-time. А значит мы головную боль перекладываем с разработчика системы на разработчика прикладной платформы (то бишь на продвинутого юзера системы).


    С чего бы это? CAS сугубо программная технология и забота программиста. Юзер этого не видит.

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


    Зато будет гарантия безопасности, даже если ты внутри служебных функций дырку оставил.

    V>В общем, CAS хорош для разработчиков по организации безопасности разрабатываемых систем, но представляет собой неуправляемый источник головной боли, если вручить его в руки пользователям-прикладникам.


    А в их руки его вручать и не надо.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 23.02.06 11:35
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    И что, у меня будет возможность ЗАПРЕТИТЬ динамически подгружать в домен произвольную сборку?
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 23.02.06 11:55
    Оценка:
    Здравствуйте, WinniePoh, Вы писали:

    WP>И меня бесят макры R5RS за свою однопроходность.


    Интресно, а когда собираются принимать следующий стандарт?
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 23.02.06 12:28
    Оценка:
    Здравствуйте, vdimas, Вы писали:

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


    V>И что, у меня будет возможность ЗАПРЕТИТЬ динамически подгружать в домен произвольную сборку?

    Конечно! CAS на то и CAS, что ежели коду права не дадены, то он никаким чудом их не получит.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 23.02.06 13:32
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Зачем это надо?

    V>1. Для задач, где требуется не эмуляция, а реальный скриптинг.

    V>4. Механизм Лисп-машины можно использовать как бэк-энд для других скриптовых нужд.


    V>5. Очень прост сам способ расширения функциональности Лисп-машины.


    V>Какие еще есть коссвенные преимущества:

    V>6. Управляемость и надежность. Мне страшно давать в руки бухгалтера какой-нить JavaScript.Net

    Дима, глянь, когда будет время на Ruby. Может ничего и писать не придется.
    Не Lisp, конечно, о очень себе pragmatic.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[33]: Новая версия макроса
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 23.02.06 14:07
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Извини, но в данном контексте это выглядит как усмешка, а не как добрая шутка.


    А это и была добрая и ироничная усмешка, но не добрая шутка.

    VD>Понимаш ли в чем дело. Ты тут споришь с теми С++-никами которые не пожелали влиться в стройные редя Буст-комьюнити. И не пожелали не потому, что тыпы чтобы понять и проникнуться, а наоборот они слишком умны (скромно ) чтобы обрякать себя на возню с половинчатыми и переусложненными решениями. (прошу понять меня, а не видить в моих словах очередной наезд на С++)


    Видишь ли, я ведь так же не пожелал влиться в ряды Boost-комьюнити.

    VD>Я люблю чистые решения. И очень страдаю от того, что реальные решения не всегда чисты. Так вот Нэмерел для меня — это шанс страдать меньше.


    Я не вижу принципиальной разници между Boost писателями (которые так же хотят страдать меньше, но в C++) и Nemerle macro писателями. Поскольку и те и другие пишут код низкого уровня, требующий знаний тонкостей языка и особенностей работы компилятора. А результаты их работы будут потреблять другие программисты, которым все эти нюансы по барабану.

    Я понял, что меня сильно смущало в этом обсуждении. Здесь не идет речи о том, как на Nemerle делать конкретный прикладной код. Все разговоры вокруг макросов.
    Хорошо хоть с ними более менее ситуация прояснилась, ну а дальше что?

    И если ты хочешь еще более чистых решений, без суеты вокруг AST, то посмотри в сторону динамических языков. Генерация getter-ов и setter-ов в том же Ruby выглядит вообще элементарно:
    def self.getter_setter_for( a_attribute )
        class_eval %Q{
            def get_#{a_attribute}
                @#{a_attribute}
            end
            def #{a_attribute}( a_value )
                @#{a_attribute} = a_value
            end
        }
    end
    
    # И используются затем:
    getter_setter_for    :decl_file
    getter_setter_for    :impl_file


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

    VD>Это мне напомнило один советский мултфилм. Есл не ошибаюсь про Икара. Сюжет там был такой. Икар с завидным упрямством делает новый вариант крыльев, взбирается на гору, разбегается и прыгает. Рядом сидят умные мужи, то есть кучка скептиков и кидают очередную мудрую фразу (рельно в мутфильме исползовалис древние поговорки). Высказывание превращается (на экране) сначала в эдакий балун, а потом в камень. Икар ударяется об этот камень и падает на землю. Так продолжается очень долго. И когда скепктики задалюываются и пересоют обращать внимание на Икара, тот раз... и полэтел (с). Скептики начинают резко суетиться...


    VD>


    Мне это напомнило какую-то книжку про подготовку спортсменов. Там в главе про психологическую составляющую такую историю рассказывали. Одна спортсменка претендовала на попадание в олимпийскую сборную СССР. И однажды после тренировке она случайно подслушала разговор главного тренера сборной с другим тренером. Главный тренер говорил, что не хочет брать ее в сборную, т.к. она не показывает хороших результатов. Другой вроде соглашался, но говорил, что она очень усердная, самоотдача потрясающая, жалко такие качества терять. В общем они поспорили и решили, что если ситуация с ее результатами на ближайшем сборе не изменится, то ее из команды исключат. Она не на шутку разозлилась, но решила не руганью свое право отстаивать, а более упорными тренировками. Своего она добилась, в сборную попала и олимпиаду выиграла. Но уже после завершения ее спортивной карьеры главный тренер признался ей, что этот разговор был специально подстроен. Что тренеры заметили у нее снижение мотивации и решили, что такой способ стимулирования будет самым эффективным. Так оно и вышло.

    Может мои ироничные подколки сторонников Nemerle только закаляют?



    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[34]: Новая версия макроса
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 14:20
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Я не вижу принципиальной разници между Boost писателями (которые так же хотят страдать меньше, но в C++) и Nemerle macro писателями. Поскольку и те и другие пишут код низкого уровня, требующий знаний тонкостей языка и особенностей работы компилятора. А результаты их работы будут потреблять другие программисты, которым все эти нюансы по барабану.


    Да. Разве что на Nemerle всё-таки проще писать и возможностей больше (Андрюха-то чего мучался со всякими списками типов — ему узких рамок шаблонов не хватало). А так да.

    E>Я понял, что меня сильно смущало в этом обсуждении. Здесь не идет речи о том, как на Nemerle делать конкретный прикладной код. Все разговоры вокруг макросов.

    E>Хорошо хоть с ними более менее ситуация прояснилась, ну а дальше что?

    А дальше как на C# Ну чуть лучше засчёт функциональных фич.

    E>И если ты хочешь еще более чистых решений, без суеты вокруг AST, то посмотри в сторону динамических языков. Генерация getter-ов и setter-ов в том же Ruby выглядит вообще элементарно:


    ...

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


    Интересно. А что-нибудь более сложное там можно проворачивать? Например, точно та же задача, решение для которой на Nemerle я привёл?

    [... история поскипана ...]

    Хорошая история.

    E>Может мои ироничные подколки сторонников Nemerle только закаляют?


    Угу. Мозга всё крепчее и крепчее...


    Хотел добавить, что мне лично ещё нравится в Nemerle. Так вот — мне лично ещё в Nemerle нравится то, что он написан под .NET и органично с ним сочетается. Потому что BCL уж очень нравится — неохота с ней слезать. Да и CLR ничё так. Межъязыковое взаимодействие, опять же — сгенерить часть кода с помощью Nemerle и юзать из C#, например.
    Re[35]: Новая версия макроса
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 23.02.06 14:28
    Оценка:
    Здравствуйте, Oyster, Вы писали:

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


    O>Интересно. А что-нибудь более сложное там можно проворачивать? Например, точно та же задача, решение для которой на Nemerle я привёл?


    Это про исходную
    Автор: Oyster
    Дата: 21.02.06
    , где задаются свойства, а нужно сгенерировать класс с getter-ами и setter-ами?

    O>Хотел добавить, что мне лично ещё нравится в Nemerle. Так вот — мне лично ещё в Nemerle нравится то, что он написан под .NET и органично с ним сочетается. Потому что BCL уж очень нравится — неохота с ней слезать. Да и CLR ничё так. Межъязыковое взаимодействие, опять же — сгенерить часть кода с помощью Nemerle и юзать из C#, например.


    +1
    Это понятно. Это как раз то, чем .NET привлекательнее, чем Java от Sun. Java изначально была моноязыковой средой.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[36]: Новая версия макроса
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 14:39
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Это про исходную
    Автор: Oyster
    Дата: 21.02.06
    , где задаются свойства, а нужно сгенерировать класс с getter-ами и setter-ами?


    Не совсем. Про задачу от AndrewVK
    Автор: AndrewVK
    Дата: 13.07.05
    я. Там ещё и конструктор генерится — типа чуть сложнее. Вот последние решения (их два):

    Re[25]: Снова о Nemerle или профанация не пройдет :)
    Автор: Vermicious Knid
    Дата: 21.02.06

    Re[28]: Новая версия макроса
    Автор: Oyster
    Дата: 22.02.06


    Вообще в исходной задаче надо сгенерить класс на C#, но пусть лучше на Ruby — интересно посмотреть, как у Ruby именно с метапрограммированием.
    Re[37]: Новая версия макроса
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 23.02.06 14:55
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Не совсем. Про задачу от AndrewVK
    Автор: AndrewVK
    Дата: 13.07.05
    я. Там ещё и конструктор генерится — типа чуть сложнее. Вот последние решения (их два):


    Так и я о нем
    Там, кстати еще есть разные
    Автор: eao197
    Дата: 15.07.05
    решения (в том числе и на Ruby , именно исходной задачи, с парсингом XML). А еще и на Erlang-е
    Автор: Gaperton
    Дата: 14.07.05
    .

    Хорошо, попробую найти время. Мне самому уже давно хотелось увидеть, как этот DSL на Ruby будет выглядеть. Только не могу обещать, что это будет сегодня или завтра.

    O>Вообще в исходной задаче надо сгенерить класс на C#, но пусть лучше на Ruby — интересно посмотреть, как у Ruby именно с метапрограммированием.


    Вообще-то, нормально
    Metaprogramming et al: Ruby?
    Автор: eao197
    Дата: 10.08.05
    и пару сообщений ниже. Там же интересные примеры метепрограммирования на Smalltalk.
    И вот реальный проектик, который возможности метапрограммирования Ruby использует: [Ruby,C++] RuCodeGen -- простой фреймворк для кодогенерации
    Автор: eao197
    Дата: 16.11.05
    (я таки остаюсь приверженцом precompile-time генерации).


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 15:05
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Хинт. Объявляешь к классу интерфейс с одним методом, который возвращает BLToolkit.Reflection.TypeAccessor. Дальше надо сгенерировать геттеры и сеттеры, набить их в возвращаемый TypeAccessor и готово. В BLToolkit добавляется проверка на наличие такого интерфейса и готово Nemerle в действии, одна run-time генерация устранена.


    Попробовать можно. Но только ты ж понимаешь, что сам класс должен быть написан на Nemerle в таком случае.

    Другой вариант — генерить наследник TypeAccessor-а по типу (брать инфу о классе прямо из рефлекшна), а в классе (который уже на C#) искать его по имени (ну или по атрибуту, на него нацепленному, — что-то вроде того). Правда, тогда получится гораздо менее удобно.

    Это я так... вдруг начал размышлять о том, как логику оставить в C# (чтобы пользователи твоей тулзы особо не переживали ), а кодогенерацию вынести отдельно в Nemerle. Насколько я тебя понял, ты хочешь поиметь первый вариант.
    Re[33]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 23.02.06 15:54
    Оценка:
    Здравствуйте, Oyster, Вы писали:

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


    Нет, это не сильно отличается от того, что есть сейчас. К тому же можно сгенерировать сборку с аксессорами на пост-билд степе. Я имею ввиду код исключительно на Nemerle.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 23.02.06 16:03
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Нет, это не сильно отличается от того, что есть сейчас. К тому же можно сгенерировать сборку с аксессорами на пост-билд степе. Я имею ввиду код исключительно на Nemerle.


    Ок. В общем, постараюсь — самому интересно (иначе бы и не брался). Времени, времени только маловасто
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 23.02.06 16:09
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Из заменяемого — мало. ВинАПИ имеет то "преимущество", что его невозможно выкинуть и заменить. В общем, мне кажется, что ты будешь выбирать ту библиотеку, которая хорошая.


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

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


    Так ты еще читаешь мои книги?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 23.02.06 17:25
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Смотри — ты всё равно в итоге генерируешь код из XML, используя XSLT


    Я уже говорил — далеко не только код.

    O>, на этапе компиляции, правильно?


    Неправильно. И на этапе деплоймента тоже.

    O> Почему бы не использовать Nemerle вместо XML и макросы вместо XSLT?


    Перечитай
    Автор: AndrewVK
    Дата: 22.02.06
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 23.02.06 17:52
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ВВ>>Вообще-то ядро написано на С.


    VD>Я слышал, что весь на Лиспе. Может речь о диалекте была...


    Ядро его Лиспа написано на С. Все остальное, включая львиную долю самого диалекта этого Лиспа, ядра EMacs-a и всего остального — на Лиспе.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 23.02.06 17:52
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    WH>>Нет это не вопрос вобще...


    VD>До тех пор пока ДжетБрэйнс не доделает РеШарпер для 2005-ой студии еще вопрос. Так как я предочту на сегодня менее навороченный, но стабильный варинт от МС.


    вышла версия 2.19 — вполне стабильна
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 18:38
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Боюсь, этим скорее всго и закончится.


    Обявляй. Я уже задолбался писать 10 строк вместо 1-2. Пол кода в объявлении свойст.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 18:38
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Он простой. Просто надо было докопаться до того, как всунуть список полей в объявление класса — всего и делов Это можно вынести во внешнюю функцию один раз и юзать всегда (если лучшего решения нет).


    Мне кажется это просто баг компилятора. Нужно поговорить с его разработчиками.

    VD>>Ты бы, кстати, объяснил его смысл. Почему ты пришел к такому решению?


    O>Re[30]: Новая версия макроса
    Автор: Oyster
    Дата: 23.02.06


    Ну, и что в этом коде хорошего? По логике языка к подобным приемам (т.е. прямому заданию АСТ) прибегать не нужно. Стало быть если такая необходимость появляется, то это баг.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 20:02
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>А сделано всё это так "императивненько" потому, что другого, более красивого способа, я не нашёл. Ну а код активации с их форума ещё не пришёл почему-то


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

    В варианте приведеном nazgul:
    http://nemerle.org/phpBB/viewtopic.php?t=200
    macro metaclass(className, body) 
    syntax ("metaclass", className, body) 
    { 
            def ctx = ImplicitCTX(); 
            def builder = ctx.Env.Define(<[ decl: [Record] public class $(className.ToString() : usesite) { } ]>); 
            mutable code = []; 
            match (body) 
            { 
                    | <[ { .. $props } ]> => 
                            foreach(<[ $(n : name) : $(t : name) ]> in props) 
                            { 
                                    builder.Define <[ decl: 
                                            [Accessor] 
                                            mutable $(n.NewName("_" + n.Id) : name) : $(t : name) ; 
                                    ]>; 
                            } 
                    | _ => Message.FatalError($"Invalid metaclass syntax, expected properties definition, got $body"); 
            } 
            builder.Compile(); 
            <[ () ]> 
    }

    код выглядит значитально проще чем в XSLT-варианте АВК:
    http://rsdn.ru/Forum/Message.aspx?mid=1272272&amp;only=1
    Автор: AndrewVK
    Дата: 14.07.05

    <stylesheet>
        <template match="/objects">
            <!-- Здесь обычно пишется заголовок файла и неймспейс, но в примере его нет -->
            <apply-templates/>
        </template>
        
        <template match="object">
    public class <value-of select="@name"/>
    {
            <call-template name="make-ctor"/>
            <apply-templates/>
    }
        </template>
        
        <template match="property">
        private <value-of select="@type"/> _<value-of select="@name"/>;
        public <value-of select="@type"/> <value-of select="@name"/>
        {
            get { return _<value-of select="@name"/>; }
        }
        </template>
        
        <template name="make-ctor">
        public <value-of select="@name"/>(
            <for-each select="property">
                <value-of select="@type"/> _<value-of select="@name"/>
                <if test="position() != last()">, </if>
            </for-each>
        )
        {
            <for-each select="property">
                _<value-of select="@name"/> = <value-of select="@name"/>;
            </for-each>
        }
        </template>
    </stylesheet>

    и это без функциональной декомпозиции.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 20:02
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Можешь начинать снимать. Есть такая либа VCF. Там смесь шаблонов и макросов используется для того, что ты сейчас сказал и еще для кучи вещей.


    Пример в студию. И в общем, то сама библиотека не интересна. Интересен компилируемый код.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 20:02
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>(в принципе, может зайти далеко, в MS есть открытый проект оптимизирующего бэк-энда компиляторов для дотнета, насколько я понял Nemerle пока его не юзает, но теоретически ничего не мешает)


    Ты все перепутал. Есть Феникс. Феникс — это бэкэнд, но не оптимизирующий или для дотнета, а общий бэкэнд для всех компиляторов МС. Его можно использовать и для генерации MSIL-а, и для пре- или джит-компиляции готовых дотнетных сборок. Кроме того его можно применять для модификации МСИЛ-а готовых сборок и для генерации кода компиляторами. В частности планируется перевести VС++ на Феникс.

    Пока что Феникс находится в стадии альфы, но уже доступен для скачивания. Ошибок там море. Rsdn.Editor он поднять не смог (вылетел с ошибкой).
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 20:02
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Фигня вопрос. Смотрим код макроса (core.n):


    O>
    O>def ctx = if (expand) Some (Macros.ImplicitCTX()) else None ();
    O>PrettyPrint.PrintExpr (ctx, exp);
    O>

    O>Как видишь, внутри вызов обычной функции — только контекст нужен. Итого: делаем ctx (как в макросе) и пихаем вместе с AST в PrintExpr().

    Хм. Можно пример рабочего кода?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 23.02.06 21:51
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Ну, то что Лисп написан на С, а не на самом себе (все же VM у него нету) конечно прискорбно, но к делу не относится.

    VD>А спросил я это так как интересно какой объем исходников у базовой части редактора.

    Боюсь чтобы это узнать нужно прежде всего выучить Лисп и выкинуть из нескольких десятков метров сурсов все лишнее
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 23:53
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Боюсь чтобы это узнать нужно прежде всего выучить Лисп и выкинуть из нескольких десятков метров сурсов все лишнее


    Дык из Сцинтилы и RE я викинул все лишнее минут за 5.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 23:53
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    VD>>Хм. И даже если я пишу утилиту командной строки для собственных целей?

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

    Синклиер, ты меня извини, но многим, и в том числе мне, не интересны твои заказчики. У меня, например, ни разу в жизни не было не русскоязычных заказчико.
    Так что не нужно уж так категорично. ОК?

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

    VD>>И что мне помешает сделать такой макрос?

    S>Я не знаю. Я пока вообще немерле не смотрел — у меня linq то проверить времени нету.

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

    Одна из сильнейших фич макросов — это возможность исполнять код во время компиляции. Вот этот код может во истину творить чудеса.

    VD>>Ну, а зачем номер?

    S>Чтобы в другом порядке можно было аргументы поставить.

    Порядок, и т.п. — это детали реализации.

    VD>>И чем, раскажи на милость, это отличается от:

    VD>>
    VD>>$"Имя: $(person.Name) Фамилия: $(person.LastName) Возраст: $(person.Age), Место работы: $(person.Employment.CompanyName_ "
    VD>>

    S>Рассказываю: Я могу написать вот так:
    S>
    S>string.Format(Resources.PersonReportHeaderString, person);
    S>


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

    Ответ — в языке нет средств для расширения контроля во время компиляции.
    Твои решения навязаны условностями и ограничниями используемого инструмента.
    Теперь предстваь, что вместо string.Format ты можешь вызвать некий кусок кода который вполнится во время компиляции и сделает все что угодно, от преобразования кода, до создания нового файла.
    Что бы ты мог сделать в таких условиях?

    S>Еще раз: придумай, как решить проблему локализации. Это было бы очень круто.


    См. выше. Вообще вариантов может быть море. Ведь наши возможности расширились. Так что все зависит только от нашей фантазии и от умения мыслить нестандартно.

    S> А возможность слеплять строчки малоинтересна, т.к. она не дает ничего нового по сравнению с:

    S>
    S>"Имя: "+name+"Фамилия: "+lastname;
    S>

    S>Особенно заметно это станет, если ты попробуешь при помощи своего макроса вывести что-то без пробелов. Что-то мне подсказывает, что парсер споткнется на этом:
    S>
    S>$"Имя:$nameФамилия:$lastname"
    S>


    Пробелы не проблема, и тебе это показали рядом. А вот читается твой код с плюсами очень не красиво. Согласись.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 23:53
    Оценка:
    Здравствуйте, IT, Вы писали:


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


    IT>Нет, это не сильно отличается от того, что есть сейчас. К тому же можно сгенерировать сборку с аксессорами на пост-билд степе. Я имею ввиду код исключительно на Nemerle.


    Генерировать код сдредствами C# очень недобно. ХСЛТ еще туда-сюда, но тоже не кайф. Так что даже такой варинт выглядит неплохо.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.02.06 23:56
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Сделаешь хеш-табличку на T-SQL?


    Да. Склько заплатишь?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 24.02.06 01:07
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ВВ>>Боюсь чтобы это узнать нужно прежде всего выучить Лисп и выкинуть из нескольких десятков метров сурсов все лишнее

    VD>Дык из Сцинтилы и RE я викинул все лишнее минут за 5.

    А ты обрати внимание на выделенное
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 24.02.06 01:18
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    IT>>Боюсь, этим скорее всго и закончится.


    VD>Обявляй. Я уже задолбался писать 10 строк вместо 1-2. Пол кода в объявлении свойст.


    С BLToolkit у меня таких проблем нет. Но хочется всё же самого светлого будущего.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 24.02.06 01:23
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    AVK>>Сделаешь хеш-табличку на T-SQL?


    VD>Да. Склько заплатишь?


    А фигли там платить: create temp table
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 24.02.06 07:29
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Вот на сайте Нэмерла в примерах лежит реализация LL-парсера:

    VD>http://nemerle.org/phpBB/viewtopic.php?t=13
    VD>Попробуй переписать его используя "другие способы как передачи управления, так и связывания кода с данными". Птом сравним результат.

    Эта, Влад, Сразу уточни чего ты хочеш, что бы я написал генератор, который используется в твоём пример? Просто в нём за 800 строчек (считал с пустыми). Это уже не "2 метода на 3 класса".
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[35]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 07:42
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Ну, и что в этом коде хорошего? По логике языка к подобным приемам (т.е. прямому заданию АСТ) прибегать не нужно. Стало быть если такая необходимость появляется, то это баг.


    Ну смотри, что мне ответили: http://nemerle.org/forum/viewtopic.php?p=334#334

    Right, you used the "last-resort" way — workaround lack of proper quotation rule by explicitly building parse trees. From what I see the quotation you tried to use is quite intuitive and I guess it should be supported by compiler. Probably adding support for it should be possible (tweak in parser plus new rule at ncc/typing/Macros.n).

    Re[32]: Новая версия макроса
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 07:42
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    VD>В варианте приведеном nazgul:


    [...]

    Они мне ответили, что должно работать как тут: Re[28]: Вопрос
    Автор: Oyster
    Дата: 22.02.06
    — для этого нужен небольшой твик компилятора. Код, приведённый nazgul, не работает и работать не будет (они разворачивают макросы на Define(), а не на Compile()), насколько я понял.
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 07:42
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Я уже говорил — далеко не только код.


    Да, прочитал ссылку и понял. Ну тогда не знаю — можно пересмотреть дизайн и ту "другую метаинформацию" хранить отдельно. Если это, конечно, будет удобней. А я не могу сказать, будет это удобней или нет, потому что не вижу текущего решения.

    А исходники на Nemerle можно тоже хранить в ресурсах.

    AVK>Неправильно. И на этапе деплоймента тоже.


    Что тебе мешает таскать с собой компилятор Nemerle?
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 24.02.06 08:22
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Дима, глянь, когда будет время на Ruby. Может ничего и писать не придется.

    E>Не Lisp, конечно, о очень себе pragmatic.

    Спасибо за совет, я глядел на него уже. Для бухгалтеров хорошо бы взять некий язык, весьма бедный, наподобие 1C или VB (причем последнее — урезать немного). А ruby все-таки немного не такой язык, это все-таки язык для профессионалов-программистов.

    Мне думается, что я постепенно сделаю себе парсер VB-подобного простенького языка. После парсинга можно будет кодогенерировать, например, в backend от Лисп-машины. Вообще-то да, попробую посмотреть на Ruby's backend, и вообще нужно выяснить насчет самой возможности юзать этот backend (может он физически неотделим ).
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 24.02.06 08:54
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    E>>Дима, глянь, когда будет время на Ruby. Может ничего и писать не придется.

    E>>Не Lisp, конечно, о очень себе pragmatic.

    V>Спасибо за совет, я глядел на него уже. Для бухгалтеров хорошо бы взять некий язык, весьма бедный, наподобие 1C или VB (причем последнее — урезать немного). А ruby все-таки немного не такой язык, это все-таки язык для профессионалов-программистов.


    Не смотря на то, что я не почитатель функциональщины, я думаю, что именно для бухгалтеров лучше будет нечто a-la функциональщина. Точнее пресловутое сопоставление с образцом. Императивщина — слишком сложно и, имхо, не соответсвует образу их мысли. afair, в бух.журналах список всяких проводок — в виде таблицы. На сопоставление ложитсся один к одному. Типа, условие — проводка.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 24.02.06 09:39
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    V>>Давайте лучше Лисп (а еще лучше — Схему) для дотнет напишем.


    ГВ>И появится философский вопрос: нафига козе баян, то есть — зачем Лиспу бакенд в виде .Net?


    Не Лиспу, а мне, то бишь девелоперу. Машина Лиспа представляет из себя практически идеальный механизм построения эффективных интерпретаторов. Мне нужно именно последнее, плюс возможность использовать этот интерпретатор в дотнете (не обязательно с Лиспа, почитай ниже мой ответ eao197).
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[33]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 24.02.06 11:22
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>А фигли там платить: create temp table


    Это не оно.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 11:45
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    O>>Да, прочитал ссылку и понял. Ну тогда не знаю — можно пересмотреть дизайн


    AVK>Хороший совет


    Я ж не говорю сейчас (это был бы полный лол), я говорю — учесть в следующий раз.

    O>> и ту "другую метаинформацию" хранить отдельно.


    AVK>Зачем? Если редактируется она совместно? Ты пойми — редактируют не класс, а бизнес-сущность, а куча производных от него классов и интерфейсов суть поддержка этой сущности. Резать метаданные на несколько кусков, а потом склеивать их при деплойменте и в рантайме не лучшая идея.


    Ну а какие ещё данные из этого XML ты используешь и где? Можно вместе подумать, что тут можно сделать лучше Нет, я не настолько наивен, чтобы думать, что я сразу предложу лучшее решение. Просто в момент, когда вы текущее решение принимали, у вас под рукой не было того же Nemerle, например. И дизайн был сделан с учётом его отсутствия, а финальная версия дизайна (та, которая в исходниках отражена) вообще была заточена под хранение в XML и использование XSLT, скорее всего.

    Поэтому я и думаю, что, возможно, тут можно что-то поменять. В будущем.

    O>>А исходники на Nemerle можно тоже хранить в ресурсах.


    AVK>И парсить их в рантайме? Спасибо, я лучше XML обойдусь.


    Почему парсить? Компилировать. Чем хуже натравливания XSLT на XML, в принципе?

    O>>Что тебе мешает таскать с собой компилятор Nemerle?


    AVK>Видишь ли, не всегда приемлемо распространять код в исходниках.


    Таскай его как набор сборок. Кстати, он по лицензии BSD распространяется, так что можно его спокойно использовать — только сослаться в доке на продукт, что используешь.
    Re[33]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 11:47
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>>>Сделаешь хеш-табличку на T-SQL?


    VD>>Да. Склько заплатишь?


    AVK>Слив засчитан.


    Extended stored procedure?
    Re[35]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 24.02.06 11:57
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Ну а какие ещё данные из этого XML ты используешь и где?


    Я уже говорил — для кодогенерации в деплойменте. Еще для настройки O/R Mapper, для автоматического формирования GUI, для привнесения автоматики в ряд стандартных алгоритмов и т.д. Много где, всего и не упомнишь.

    AVK>>И парсить их в рантайме? Спасибо, я лучше XML обойдусь.


    O>Почему парсить? Компилировать.


    Нет именно парсить, потому что метаданные (расширенные!) нужны в рантайме.

    O> Чем хуже натравливания XSLT на XML, в принципе?


    Тяжеловесностью.

    AVK>>Видишь ли, не всегда приемлемо распространять код в исходниках.


    O>Таскай его как набор сборок.


    И что это изменит?

    O> Кстати, он по лицензии BSD распространяется, так что можно его спокойно использовать — только сослаться в доке на продукт, что используешь.


    Да он то пожалуйста. Я говорю про прикладной код.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 24.02.06 11:57
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    AVK>>Слив засчитан.


    O>Extended stored procedure?


    У XSLT .NETовского тоже есть extension objects.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[36]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 12:12
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    O>>Ну а какие ещё данные из этого XML ты используешь и где?


    AVK>Я уже говорил — для кодогенерации в деплойменте. Еще для настройки O/R Mapper, для автоматического формирования GUI, для привнесения автоматики в ряд стандартных алгоритмов и т.д. Много где, всего и не упомнишь.


    Ну я понял, в общем. Для того дизайна, что имеется сейчас, Nemerle пролетает.
    Re[37]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 24.02.06 12:15
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    AVK>>Я уже говорил — для кодогенерации в деплойменте. Еще для настройки O/R Mapper, для автоматического формирования GUI, для привнесения автоматики в ряд стандартных алгоритмов и т.д. Много где, всего и не упомнишь.


    O>Ну я понял, в общем. Для того дизайна, что имеется сейчас, Nemerle пролетает.


    Кстати, занятно. Я хотел сказать, что (как и плюс) минус макросам Nemerle, то что они работают, во время компиляции. Но никак не мог найти повод
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[38]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 12:42
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Кстати, занятно. Я хотел сказать, что (как и плюс) минус макросам Nemerle, то что они работают, во время компиляции. Но никак не мог найти повод


    Совершенно верно — макросы Nemerle работают во время компиляции. Но я не уверен, что это минус, т.к. это вытекает из задачи, которую они решают. Например, не назовёшь же минусом отсутствие Intellisense в Нотепаде

    Т.е. их, конечно, тоже надо использовать адекватно.
    Re[31]: Снова о Nemerle или профанация не пройдет :)
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 24.02.06 13:05
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Сергей Туленцев, Вы писали:


    VD>>>Поделись, плиз, как это делается (баг-репорты отправляются). А то я тоже тут уже на парочку багов наткнулся. Незначительных, но все же...


    СТ>>Тебе .сюды.


    VD>А. Это я уже видил. Только так и не понял, что там делать то надо.


    VD>Как туда что-то добавить?

    Регишься, заходишь. Там будет ссылка в меню, "Report issue"
    --
    Re[40]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 24.02.06 13:10
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    O>>Совершенно верно — макросы Nemerle работают во время компиляции. Но я не уверен, что это минус


    ANS>Для меня, как бы, толи очевидна, толи "философски обоснована" ограниченность возможностей времени компиляции.


    Чем ограничена?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[41]: Снова о Nemerle или профанация не пройдет :)
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 24.02.06 14:12
    Оценка:
    Здравствуйте, IT, Вы писали:

    ANS>>Для меня, как бы, толи очевидна, толи "философски обоснована" ограниченность возможностей времени компиляции.


    IT>Чем ограничена?


    Врядли обосновать это можно двумя словами, а "зуб даю" тебя же не убедит

    С другой стороны, если бы всё можно было сделать во время компиляции, то исполнение программ было бы не нужно. И плавно переходим к следующей мысли — если допустить, что это таки возможно, когда компилятор может заниматься компиляцией неограниченное время, то получим ненужность запуска скомпилированной (прикладной) программы. Вот ST и Lisp просто отбрасывают эту прикладную программу занимаясь бесконечной компиляцией, пока пользователь не согласится с результатом...

    В общем, братия, сегодня пятница, возрадуемся же!!!
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 15:47
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>>>Давайте лучше Лисп (а еще лучше — Схему) для дотнет напишем.


    VD>>Уже давно написаны.


    V>-1


    V>Стоило ли так подставляешься громкими высказываниями, не имея ни малейшего представления о существе вопроса?


    Стоит ли хамить?

    http://www.lsharp.org/
    http://dotlisp.sourceforge.net/dotlisp.htm (Схема)
    http://www.cs.indiana.edu/~jgrinbla/ (Схема)
    C:\Program Files\Microsoft.NET\SDK\v1.1\Tool Developers Guide\Samples\clisp
    http://www.ccs.neu.edu/home/jrm/download.html

    И это далеко не все.

    То что тебя не устраивают разные там диалекты или еще что — это твои личные проблемы. В мире Лиспа это норма.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[33]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 15:47
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Они мне ответили, что должно работать как тут: Re[28]: Вопрос
    Автор: Oyster
    Дата: 22.02.06
    — для этого нужен небольшой твик компилятора. Код, приведённый nazgul, не работает и работать не будет (они разворачивают макросы на Define(), а не на Compile()), насколько я понял.


    Я тоже так понял. Остается узнать будет ли это исправлено и если да, то когда.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 15:47
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    То есть нужно создать обертку над методом Nemerle.Compiler.PrettyPrint.PrintExpr()?
    ОК, попробую.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[22]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 15:47
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Эта, Влад, Сразу уточни чего ты хочеш, что бы я написал генератор, который используется в твоём пример?


    Ага.

    ANS> Просто в нём за 800 строчек (считал с пустыми). Это уже не "2 метода на 3 класса".


    Если твои слова были верны, то данная задача своидилась бы к тупому перекодированию. На самом же деле ты на ней зашьешся так как на C# данная задача становится слишком объемной и сложной, так как на C# ты будешь вынужден обложиться паттернами.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[33]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 15:47
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>>>Сделаешь хеш-табличку на T-SQL?


    VD>>Да. Склько заплатишь?


    AVK>Слив засчитан.


    Без оскорблений на такое ответить нельзя. Так что промолчу.

    Лучше поясню свой ответ.
    Реализовать хэш-таблицу на T-SQL можно. Никаких технических проблем это не вызовет.
    Вот только хэш-таблица — это нехилый объем кода который я не побугу колотить тольк чтобы доказать паре людей то, что они забулждаются.

    За штуку баксов (на спор) я готов написать реализацию хэш-таблицы на T-SQL. Если не страшно можешь поставить свою штуку против моей?

    Ну, что "слив" засчитан?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 15:47
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Extended stored procedure?


    Ненужны для реализации хэш-таблиц никакие внешние модули. T-SQL — это полноценный императивный язык. Единственная его проблема — это ограничение на рекурсию в процедурах. Но это не является фатальной проблемой. На многих языках (если не ошибаюсь даже на Фортране) тоже первое время нельзя было делать рекурсию. Но писать программы это не мешало.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[38]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 15:58
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    O>>Ну я понял, в общем. Для того дизайна, что имеется сейчас, Nemerle пролетает.


    VD>Да все нормально. Он после генерации исходников на ХСЛТ тоже их компилирует. Ну, будет компилировать Нэмерл, а не C#. Какая разница?


    VD>А реализовать чтение модели из ХМЛ — это не проблема.


    Но надо ли... Т.е. тут от Nemerle будет небольшая подмога имхо.
    Re[42]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 15:58
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Если серьезно, Нэмереловцы работают над рантайм-кодогенерацией.


    Было бы неплохо имхо. По крайней мере, повеселее чем Reflection.Emit и всякие там CodeDom.
    Re[35]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 15:58
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>То есть нужно создать обертку над методом Nemerle.Compiler.PrettyPrint.PrintExpr()?

    VD>ОК, попробую.

    Кстати, да. Я сначала подумал, что Nemerle.Macros.ImplicitCTX() это макрос и должен вызываться по месту, но потом вспомнил, что сам-то он изначально юзается в другом макросе (pretty_print_expr), так что проблем с выделением в отдельную функцию вроде быть не должно.
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 24.02.06 15:58
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Вот на сайте Нэмерла в примерах лежит реализация LL-парсера:

    VD>http://nemerle.org/phpBB/viewtopic.php?t=13

    Внушаить. Вот тут ещё на SourceForge что-то валяется: http://sourceforge.net/projects/ridl
    Re[35]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 16:52
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Угу... а то сейчас немного коряво. Конечно, для этого один раз пишется функция... но всё равно коряво


    Ты их дерни там, чтобы они поняли, что дело действительно нужно.
    А мы тебя поддержим.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[39]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 16:52
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    VD>>А реализовать чтение модели из ХМЛ — это не проблема.


    O>Но надо ли... Т.е. тут от Nemerle будет небольшая подмога имхо.


    Ты ты погляди на этот ужас что присуствует в ХСЛТ? Если объем увеличится, то это будет хаос.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[42]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 24.02.06 20:31
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Если серьезно, Нэмереловцы работают над рантайм-кодогенерацией.


    Зачем её делать? Она уже сделана майкрософтом.

    VD>Но лично мне за глаза хватило бы компайл-тайм решений.


    Тем более, что у run-time кодогенерации нет практически ни одного более менее серьёзного преимущества перед compile-time. Всё это от безисходности.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[43]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.02.06 21:53
    Оценка:
    Здравствуйте, IT, Вы писали:

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


    VD>>Если серьезно, Нэмереловцы работают над рантайм-кодогенерацией.


    IT>Зачем её делать? Она уже сделана майкрософтом.


    МС сделали базис. Нэмереловцы делают надстройку.

    VD>>Но лично мне за глаза хватило бы компайл-тайм решений.


    IT>Тем более, что у run-time кодогенерации нет практически ни одного более менее серьёзного преимущества перед compile-time. Всё это от безисходности.


    Есть:
    1. Можно учитывать особенности данных информация о которых появляется только в рантайме.
    2. Можно перегененировать код в зависимост от изменяющейся ситуации.

    Обе этих возможности выходят за пределы современной реальности но через много лет они тоже будут востребованны.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[44]: Снова о Nemerle или профанация не пройдет :)
    От: IT Россия linq2db.com
    Дата: 25.02.06 00:40
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>МС сделали базис. Нэмереловцы делают надстройку.


    Они это делают в рамках разработки компилятора?

    VD>Обе этих возможности выходят за пределы современной реальности но через много лет они тоже будут востребованны.


    Ну ты блин сказанул Сейчас для многих и compile-time генерация выходит за пределы современной реальности
    А если без смеха, то хотелось бы услышать хотя бы гепотетически реальный пример, не высосанный из пальца.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[45]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 25.02.06 15:21
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Они это делают в рамках разработки компилятора?


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

    VD>>Обе этих возможности выходят за пределы современной реальности но через много лет они тоже будут востребованны.


    IT>Ну ты блин сказанул


    Статус форума обязывает.

    IT> Сейчас для многих и compile-time генерация выходит за пределы современной реальности


    Согласен. Но интерес к compiletime-кодогенерации уже нешуточен. Причем многие из тех кому нажна эта фича вынуждены заниматься runtime-кодгенерацией в следствии отсуствия compiletime-кодгенерации и сложностей с ее организацией.

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


    Легко. Например, твоя библиотека (РФД) становится несколько более универсальной, так как может создавать прокси для динамически подгружаемых типов.
    Еще ты можешь иметь медленный алгоритм который можно резко ускорить захардкодив его для частных случаев. Причем количество частных случаев при каждом выполнении прилоежния не вилеко, но они заранее не известны. Имея runtime-кодогенерацию ты можешь прекомпилировать алгоритм при появлении нового варианта.

    В общем, как я уже сказал зависимость от runtime-данных. Случай на сегодня весма редкий и в общем-то учитывая сложности появлющиеся при реализации runtime-кодогенерации обычно уступающий compiletime-решениям с качественным исполенением (а-ля Нэемерел). Но в будущем, с приходом многопроцессорной техники в каждый дом и runtime-решения могут оказаться очень даже востребованны. Хотя и тут в 99% случаев спасет installtime-кодогенерация.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[36]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 25.02.06 15:21
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    VD>>Ненужны для реализации хэш-таблиц никакие внешние модули. T-SQL — это полноценный императивный язык. Единственная его проблема — это ограничение на рекурсию в процедурах. Но это не является фатальной проблемой. На многих языках (если не ошибаюсь даже на Фортране) тоже первое время нельзя было делать рекурсию. Но писать программы это не мешало.

    S>Извини, Влад, но все-таки — не вполне.

    Не извиню.

    S> В нем нет поддержки никаких динамических структур: нет ни массивов, ни указателей.


    Указатели просто ненужны. Массивы с легкосью заменяются временными таблицами.

    ЗЫ

    Я не спорю, что T-SQL убог. Пригоден для написания машины Тьюринга, а значит для любой задачи. Вопрос только в эффективности и удобстве.
    Вот на обычном SQL в следствии отсутсвия рекурсии, циклов и переменных писать универсальный код невозможно в принципе.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 25.02.06 21:00
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    Мне именно такой способ и нужен — без генерации в байт-код. Последний не столь управляем. Я не смогу динамически загружать/выгружать подменять байт-код во время работы, в то время как с програмой-данными — никаких проблем. Скажем, в работающей 24х7 учетной системе мы сможем легко подменять код, исполняющий формулы при вычислении проводок. Мы сможем развивать систему не останавливая ее. Управляемость очень высока всего этого дела. Мы, например, сможем подгрузить некий код (редкого применения, для закрытия периода, скажем), выполнить его, потом выгрузить за ненадобностью.

    Насчет эффективности — речь идет о некоем "клее" высокого уровня, на котором проигрыш в эффективности в 2-5 раз по сравнению с байт-кодом не существеннен. 1С успешно живет уже десяток лет, а их скрипт-машина отстает по скорости от Лиспо-подобной машины.

    V>>Мне нужно именно последнее, плюс возможность использовать этот интерпретатор в дотнете (не обязательно с Лиспа, почитай ниже мой ответ eao197).


    ГВ>Я почитал, но, ИМХО, это неудачное использование Lisp. Я думаю, что лучше было бы генерировать Lisp-машиной исходный текст интерпретатора, который потом скармливать тому же C# и деплоить сборку с готовым к употреблению интепретатором.


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

    ГВ>Даже лучше будет, если учесть, что таким образом ты избавляешься, как минимум, от необходимости писать собственный отладчик Lisp-а, заниматься вопросами интеграции самой Lisp-машины с .Net и решать проблемы с незащищённостью Lisp-кода.


    Вопрос интеграции Лисп-машины с .Net уже решен. Собственно, эксперименты с этого и начались. Заодно посмотрел на потуги других проектов в плане реализации Лиспа для .Net. Понимаешь, интеграция Лиспа с .Net — это не проблема, это и цель и бонус. Мне удалось добиться весьма гладкой стыковки. Причем в наличи есть несколько вариантов различной степени автоматизированности с соответствующей различной эффективностью.

    Вариант #1 — это использоватьбиблиотеку ядра Лиспа и наследовать свои замыкания от объектов Лиспа.
    Вариант #2 — просто указывать интересующие классы и методы (у этого варианта куча опций на любой вкус, + немного аттрибуттов кому надо). Сейчас на вариант #2 генерятся делегаты на интересующие методы, и я получаю 2 лишних уровня индирекции... Когда утрясется, можно будет сделать генерацию кода-связки и обойтись практически без индирекции.

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


    Не вопрос ограничить в языке. Я как раз хотел бы избежать такого подхода. Ограничения должны поступать из хоста. Например, в скрипт-коде ГУИ-формы мне доступен один набор библиотек и ср-в. В обработчике событий сервера — другой и т.д.

    ГВ>Притом обрати внимание, если ты озабочен защитой интерпретатора и среды исполнения от несанкционированого воздействия/чтения и т.п., то всё равно придёшь к необходимости генерировать объектный код в том или ином виде.


    Нет, у Лиспа есть такое понятие, как окружение. Обычно Лисп или Схема-машины не предоставляют ср-в для управления окружением, хотя состав окружения тривиален с технической т.з. Старые версии Лиспа работали только с одним (глобальным) окружением. Почти все новые версии работают с концепцией экземпляров окружений, и передают некое окружение как параметр исполняющему коду. Поэтому для моей задачи достаточно предоставлять соответствующим образом подготовленное окружение, и компилятор (в пи-код) будет способен работать лишь с функциональностью имеющегося окружения.


    В общем, у меня не стоит задача использовать Лисп и только Лисп. Мне просто нравится его механика. Она гораздо более надежная, чем механика Форта, например и VM.Net очень здорово подходит для ее реализации. Если уж упомянул о форте, то озвучу свои эксперименты 2-х годичной давности. Существует серьезное препятствие для реализации Форта на дотнете. Дело в том, что JIT-загрузчик верифицирует код, и банально не пропускает код, в котором указатель стека на выходе метода не равен указателю стека на входе. Поэтому, существующие реализации Форта вместо работы с "родным" стеком работают с его эмулятором. В итоге получилась эффективность ниже плинтуса, и такой Форт серьезно проигрывает даже Лиспу-интерпретатору.

    Есть еще одна известная альтернатива. У нас есть в распоряжении JavaScript.Net. Причем, он так же умеет сохранять программу как данные и прочее и прочее. Но у JavaScript.Net есть тонна недостатков:
    1. недостаточная управляемость. MS сделало сильно закрытую реализацию, реальное применение через некий хост потребует массу секса.
    2. катастрофически низкая скорость "компиляции" скриптов во внутреннее представление, существенно ниже, чем скорость компиляции Лиспа или Форта
    3. тормознутость во время исполнения.

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

    В общем, хочется убить сразу несколько зайцев:
    — иметь "чистый" скриптинг, с возможностью "на лету" подменять код, запускать скрипты без страха "замусорить" рабочий домен.
    — быструю компиляцию скриптов во внутреннее представление.
    — желательно иметь возможность совместимого "повторного использования" наработок в разных слоях, т.е. системный программист может писать куски системы на C#, Схеме, а бухгалтер — на некоем "дружественном" диалекте VB-подобного языка. И все это должно иметь в итоге общие "кишки" и свободно уметь вызывать друг-друга (из ядра такой системы пусть вызываются бухгалтерские формулы и наоборот. бухгалтерские скрипты могут пользовать функциональность ядра).

    Реально эксперимент уже поставлен. Т.е. уже есть вся механика работы для Схемы (нет только ничего относительно макросов пока, вернее не макросов, а специальных синтаксических фомр, частным видом которой являются макросы). Зато есть простой интерпретатор арифметических выражений (в обычном синтаксисе), использующий кишки этой Схемы. Причем, перед выполнением скрипта производится начальная оптимизация и предвычисления. Дело в том, что интерпретатору Схемы доступно все то, что доступно программе (в отличие от компилятора С++, например). Поэтому понятие compile-time вычислений необыкновенно расширяется. В общем, у меня происходит сейчас тривиальная оптимизация, в ходе которой все константные значения предвычисляются и тела процедур подменяются готовыми атомами (Этот процесс итеративный, но сходящийся, разумеется). Более того, вычисляются типы предвычисленных результатов, и многие арифметические операции переводятся в типизированный вид, что делает последующие вычисления весьма эффективными. Для примера, когда закончим, выложу результаты замеров этого подхода в сравнении с кодом, написанным на C#. На кодогенерации исходников С# пришлось отказаться всвязи с переносом задачи на серверную сторону — домен быстро засоряется в процессе пользования системой, т.к. юзвери постоянно меняют и запускают формулы. Каждый новый вариант формулы — это подгрузка вновь скомпиллированной сборки... В общем, такой способ не живет по принципиальным соображениям... А учитывая наше будущее в лице Сингулярити (где вообще нельзя будет подгружать код в процесс), мне кажется, что мы сейчас двигаемся в правильном направлении.

    ГВ>Да и вообще, лучше сначала с самим языком "для бухгалтеров" определиться, бо здесь можно наступить на грабли с большими, тяжелыми и остро заточенными ручками. Такие аспекты, как синтаксис, грамматика и семантика языка по-любому придётся прорабатывать — и в случае DSL, интепретирумого Lisp-ом, и в случае, описанном мной.


    Ну... я думаю об этом уже примерно лет 5 Т.е. примерно представляю себе, что мне хотелось видеть. К тому же в разные годы написал тонны кода на VB/VBA/VBScript. Если этот язык немного доработать напильником, то получится примерно оно.
    Если говорить о VB.Net, то он стал весьма мощным (и даже умеет кое-что недоступное из C#), но потерял всякую "дружественность" перед бедными бухгалтерами.
    Re[24]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 25.02.06 21:27
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Мне именно такой способ и нужен — без генерации в байт-код. Последний не столь управляем. Я не смогу динамически загружать/выгружать подменять байт-код во время работы, в то время как с програмой-данными — никаких проблем.


    Ты же прекрасно знаешь что можешь, если используешь домены. Да, при этом получаем тормоза на пересечении его границы сложными структурами данных, но по сравнению с тормозами интерпретатора это копейки. Коме того, в случае домена, ты получаешь возможность контроллировать весь поток обмена домена с основной программой и более удобно настраивать CAS.
    Если же у тебя сервер полностью stateless, то можно воспользоваться стратегией ASP.NET.

    V> Скажем, в работающей 24х7 учетной системе мы сможем легко подменять код, исполняющий формулы при вычислении проводок. Мы сможем развивать систему не останавливая ее.


    Можем. Сколько таких формул появится до рестарта системы? 100? 200? Для современных серверов это ничтожные копейки.

    V>3. тормознутость во время исполнения.


    Я так думаю этот "тормознутый" JScript.NET на порядок быстрее любого интерпретатора.
    ... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
    AVK Blog
    Re[37]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 26.02.06 05:40
    Оценка:
    Здравствуйте, VladD2, Вы писали:
    VD>Указатели просто ненужны. Массивы с легкосью заменяются временными таблицами.

    А, ну в таком варианте — конечно. Правда, в нем совершенно неясно, зачем делать какие-то хэш-таблицы — табличка уже и есть контейнер. Но в принципе да, если разрешить себе пользовать таблицы, то автоматически получается turing-completeness.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[37]: Новая версия макроса
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 26.02.06 06:08
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Вообще в исходной задаче надо сгенерить класс на C#, но пусть лучше на Ruby — интересно посмотреть, как у Ruby именно с метапрограммированием.


    Вот
    Автор: eao197
    Дата: 26.02.06
    (решил код на Ruby разместить в исходной теме).


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[46]: Снова о Nemerle или профанация не пройдет :)
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 26.02.06 11:00
    Оценка:
    Здравствуйте, VladD2, Вы писали:
    VD>Еще ты можешь иметь медленный алгоритм который можно резко ускорить захардкодив его для частных случаев. Причем количество частных случаев при каждом выполнении прилоежния не вилеко, но они заранее не известны. Имея runtime-кодогенерацию ты можешь прекомпилировать алгоритм при появлении нового варианта.
    Хы-хы-хы! И этот человек месяц назад спорил против Hotspotting
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[47]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 26.02.06 14:09
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    VD>>Еще ты можешь иметь медленный алгоритм который можно резко ускорить захардкодив его для частных случаев. Причем количество частных случаев при каждом выполнении прилоежния не вилеко, но они заранее не известны. Имея runtime-кодогенерацию ты можешь прекомпилировать алгоритм при появлении нового варианта.

    S>Хы-хы-хы! И этот человек месяц назад спорил против Hotspotting

    Hotspotting занимается не своим делом. Он решает в рантайме проблемы которые можно решать в компайлатйме. К тому же он пока что туп как пробка и не в состоянии делать анализ данных меня на базе него алгоритмы. А человек может.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[25]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 26.02.06 15:06
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    V>>Мне именно такой способ и нужен — без генерации в байт-код. Последний не столь управляем. Я не смогу динамически загружать/выгружать подменять байт-код во время работы, в то время как с програмой-данными — никаких проблем.


    AVK>Ты же прекрасно знаешь что можешь, если используешь домены.


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

    Вопрос — каким образом я смогу натравить байт-код формул из одного домена на данные из другого, не потеряв при этом бастродействие в 10-ки раз.

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

    AVK>Да, при этом получаем тормоза на пересечении его границы сложными структурами данных, но по сравнению с тормозами интерпретатора это копейки.


    Это зависит от объема данных и скорости интерпретатора. Лисп-интерпретатор НЕ ОБРАБАТЫВАЕТ исходный текст, он работает по внутреннему представлению (как и Форт), и работает очень быстро.

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


    Ты можешь себе представить сериализацию одного гига данных? Каждый раз мы производим вычисления над ВСЕМ объемом.

    AVK>Если же у тебя сервер полностью stateless, то можно воспользоваться стратегией ASP.NET.


    Полностью stateless, потому как полностью readonly

    Если бы объем данных ограничивался хотя бы сотнями мегабайт, я бы с чистой совестью создавал домены, накачивал данными и не парился бы.

    AVK>Можем. Сколько таких формул появится до рестарта системы? 100? 200? Для современных серверов это ничтожные копейки.


    В конкретном случае о котором идет речь — десятки тысяч вариантов формул до рестарта. Разумеется, подменить сотню формул м/у рестартами — это не означает засорить домен. А я говорил именно о засорении.

    V>>3. тормознутость во время исполнения.


    AVK>Я так думаю этот "тормознутый" JScript.NET на порядок быстрее любого интерпретатора.


    Ну, поэкспериментируй с его eval — увидишь кто реально быстрее на порядок... и нам нужно именно такое применение — без компиляции в байт-код.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: Andir Россия
    Дата: 26.02.06 23:22
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Например, SharpDevelop и отпочковавшийся от него в свое время MonoDeveloper, позицируемый как среда под юникс-системы.


    Откуда это взято? Я вроде как слежу за развитием монодевелопера, но ни разу не слышал о том, что он отпочковался от SharpDevelop ...

    C Уважением, Andir!
    ... << RSDN@Home 1.2.0 alpha rev. 643>>
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 26.02.06 23:39
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Теоретически могу, практически — нет. Вот задача, если предложишь решение — будет тебе большой thanks:

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

    V>Вопрос — каким образом я смогу натравить байт-код формул из одного домена на данные из другого, не потеряв при этом бастродействие в 10-ки раз.


    Я бы сделал так.
    Если данных очень много, а код изменяется редко, то:
    1. Работу с данными осуществлял в том же домене куда грузится код.
    2. После перекомпиляции кода старый не выгружал бы.
    3. Создал бы теневой поток который бы отслеживал сколько ресурсов уходит на неиспользуемые сборки. Если много, то перезагружал бы домен.

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

    В общем, решение сильно зависит от того насколько быстрыми должны быть формулы. Интерпретация минимум в 10 раз медленеее компиляции. Так что если формулы участвуют в интенсивных вычислениях, то и думать не очем. С другой стороны если сами формулы вызываются не часто, но оперируют высокоуровневыми абстракциями (например, приводят к запросам к БД), то можно обойтись интерпретацией, так как при этом затраты на нее будут минимальными.

    Короче, профайлер и здесь может помочь.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[35]: Макрос заместо TypeAccessorBuilder
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 26.02.06 23:39
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    1. Не плохо было бы объяснить суть генерируемого кода. Это не очевидно.
    2. Нужно все же переносить код. Он же у тебя на экнан не влезает.
    3. Хорошо бы следовать правилам форматирования RSDN. Это упрощает восприятие.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[35]: Макрос заместо TypeAccessorBuilder
    От: IT Россия linq2db.com
    Дата: 27.02.06 00:33
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    ITypeAccessorHolder или другой механизм по добычи TypeAccessor из типа нужно переносить в BLToolkit. Тогда это всё будет доступно стандартным средствам библиотеки, а следовательно и её пользователям. Т.е. можно будет делать то, о чём я говорил — использовать Nemerle для задач генерации, а другие части приложения делать на других языках.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[36]: Макрос заместо TypeAccessorBuilder
    От: IT Россия linq2db.com
    Дата: 27.02.06 00:44
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>1. Не плохо было бы объяснить суть генерируемого кода. Это не очевидно.


    Можно я? Спасибо.

    В случае необходимости, для какого-либо типа BLToolkit генерирует и создаёт экземпляр наследника от TypeAccessor. Этот объект предназначен для создания экземпляров изсходного типа и доступа к его членам в обход Reflection. Т.е. в TypeAccessor'е генерируется пара методов CreateInstance, а для каждого члена исходного типа наследник MemberAccessor, который содержит сгенерированные методы GetValue, SetValue и ещё некоторые служебные методы. Далее это используется для маппинга, валидации, баиндинга и прочих вещей, которые требуют динамическое создание и доспут к членам какого-либо объекта.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[36]: Макрос заместо TypeAccessorBuilder
    От: Oyster Украина https://github.com/devoyster
    Дата: 27.02.06 07:25
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>2. Нужно все же переносить код. Он же у тебя на экнан не влезает.


    Ок

    VD>3. Хорошо бы следовать правилам форматирования RSDN. Это упрощает восприятие.


    В смысле правилам форматирования кода? Я, в общем-то, старался использовать правила форматирования кода на Nemerle от создателей Не всегда получалось, правда...
    Re[36]: Макрос заместо TypeAccessorBuilder
    От: Oyster Украина https://github.com/devoyster
    Дата: 27.02.06 07:25
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>ITypeAccessorHolder или другой механизм по добычи TypeAccessor из типа нужно переносить в BLToolkit. Тогда это всё будет доступно стандартным средствам библиотеки, а следовательно и её пользователям. Т.е. можно будет делать то, о чём я говорил — использовать Nemerle для задач генерации, а другие части приложения делать на других языках.


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

    Кстати, а в BLToolkit SVN небось не все имеют право записи?
    Re[26]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 27.02.06 09:14
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Вопрос — каким образом я смогу натравить байт-код формул из одного домена на данные из другого, не потеряв при этом бастродействие в 10-ки раз.


    Суммарное? Да ничего специального не делать. В десятки раз замедляется собственно вызов, а не все. Остается еще время работы самого алгоритма. Если ты хочешь там затюнить все насмерть, то достаточно не мучаться танцами с бубном вокруг выгрузки, а просто изредка рециклить основной домен вместе с сервером, возможно сохраняя твой драгоценный кеш. Но вобще то лучше оцени потери памяти на твои формулы за любой разумный промежуток времени, а потом сравни со своим многогигабайтным кешем.
    И вобще смешно слышать разговоры о быстродействии после предложения использовать интерпретатор и рассказов об 1С.

    AVK>>Да, при этом получаем тормоза на пересечении его границы сложными структурами данных, но по сравнению с тормозами интерпретатора это копейки.


    V>Это зависит от объема данных и скорости интерпретатора. Лисп-интерпретатор НЕ ОБРАБАТЫВАЕТ исходный текст, он работает по внутреннему представлению (как и Форт), и работает очень быстро.


    Может ты не в курсе, но даже бейсик БК-0010 в замшелые времена тоже работал подобным образом. Только это не спасает интерпретатор от чудовищной разности в производительности по сравнению с компилятором. На ее фоне кроссдоменные потери не заметны под микроскопом.

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


    V>Ты можешь себе представить сериализацию одного гига данных?


    Да. А еще я представляю сколько времени с этим гигом будет ковыряться любой интерпретатор.

    AVK>>Можем. Сколько таких формул появится до рестарта системы? 100? 200? Для современных серверов это ничтожные копейки.


    V>В конкретном случае о котором идет речь — десятки тысяч вариантов формул до рестарта.


    Мощные у тебя юзеры, набить десятки тысяч формул, я таких не встречал. В любом случае это все равно копейки.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 27.02.06 09:31
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>В общем, решение сильно зависит от того насколько быстрыми должны быть формулы. Интерпретация минимум в 10 раз медленеее компиляции.


    Да, чистая интерпретация всяко медленнее компиляции. Однако, представим себе, что многие операторы и ф-ии уже вшиты в систему. Реально проигрыш примерно в 2-3 раза у нас (субъективно, точно пока не замеряли).

    Схема вычислений примерно такая (лишнее выкинуто, посмотри и прикинь, действительно ли происходит такой провал в производительности):

        public interface IExpression<T> {
            T Value { get; }
        }
            
        public struct Constant<T> : IExpression<T> {
            T _value;
    
            public Constant(T value) { _value = value; }
    
            public T Value { get { return _value; } }
        }
            
        public abstract class UnaryFunction<RetT, ArgT, ExpT> : Function<RetT>
                        where ExpT : IExpression<ArgT> {
    
            ExpT _exp;
    
            protected UnaryFunction(ExpT exp) { _exp = exp; }
    
            public ExpT Exp { get { return _exp; } }
        }
    
        public abstract class BinaryFunction<RetT, ArgT1, ExpT1, ArgT2, ExpT2>
            : Function<RetT>
            where ExpT1 : IExpression<ArgT1>
            where ExpT2 : IExpression<ArgT2> 
        {
            ExpT1 _exp1;
            ExpT2 _exp2;
    
            protected BinaryFunction(ExpT1 exp1, ExpT2 exp2) {
                _exp1 = exp1;
                _exp2 = exp2;
            }
    
            public ExpT1 Exp1 { get { return _exp1; } }
            public ExpT2 Exp2 { get { return _exp2; } }
        }


    А теперь пара "вшитых" ф-ий:
        public sealed class BinaryPlus_Int32<ExpT1, ExpT2>
            : BinaryFunction<int, int, ExpT1, int, ExpT2>
            where ExpT1 : IExpression<int>
            where ExpT2 : IExpression<int> 
        {
            public BinaryPlus_Int32(ExpT1 arg1, ExpT2 arg2) : base(arg1, arg2) { }
    
            public override int Value {
                get { return Exp1.Value + Exp2.Value; }
            }
        };
    
        public sealed class Factorial<ExpT> 
            : UnaryFunction<int, int, ExpT>
            where ExpT : IExpression<int> {
    
            public Factorial(ExpT arg) : base(arg) {}
    
            public override int Value {
                get { 
                    int prod = 1;
                    for (int i = 2; i <= Exp.Value; i++)
                        prod *= i;
    
                    return prod;
                }
            }
        };


    Наша формула — это "дерево" таких вот вшитых ф-ий. По-сути, формула задает "архитектуру", то бишь параметризированный тип этой прикольной взаимной сцепки.

    Обрати внимание на sealed в классах и override возле Value, ИМХО они должны нивелировать друг-друга. Когда это происходит мы ВООБЩЕ НИЧЕГО НЕ ТЕРЯЕМ в плане производительности. И тем не менее программа продолжает оставаться... данными, а не кодом.

    Вот на такую простейшую формулу: ((Filed1)! + Field2) * min(Field3, Field4)
    Парсер должен создать в памяти экземпляр примерно такого типа:
    BinaryProd_Int32<
            BinaryPlus_Int32<
                    Factorial<GetterField1>, 
                    GetterField2
            >, 
            BinaryMin_Int32<
                    GetterField3, 
                    GetterField4
            > 
    > formula;



    Далее, это еще не все, я тут говорил об оптимизации. Наша оптимизация предвычисляет константные выражения. Причем, сам парсер выражений этим не занимается (!!!). Выражения сами себя предвычисляют и при этом МЕНЯЮТ свою структуру и тип.

    Вот кусок более полного варианта:

        public interface IExpression<T> {
            bool IsConstant { get; }
            T Value { get; }
            IExpression<T> Optimize();
        }
            
        public abstract class UnaryFunction<RetT, ArgT, ExpT> : Function<RetT>
                        where ExpT : IExpression<ArgT> {
    
                    ...
                    
            public override IExpression<RetT> Optimize() {
                if (IsConstant)
                    return new Constant<RetT>(Value);
    
                return this;
            }
                    
            public override bool IsConstant {
                get { return _exp.IsConstant; }
            }
        }


    св-во IsConstant зависит от константности аргументов, таким образом, константность и наши предвычисления как круги по воде распространяются, начиная от константных аргументов. В результате мы получаем "оптимизированное" дерево выражений (которое не AST, потому как слово abstract не подходит ), полностью типизированное и пригодное для агрессивной джит-оптимизации. Когда закончим эту поделку, обязательно выложу сравнительные замеры скорости на многомегабайтных данных.


    VD>С другой стороны если сами формулы вызываются не часто, но оперируют высокоуровневыми абстракциями (например, приводят к запросам к БД), то можно обойтись интерпретацией, так как при этом затраты на нее будут минимальными.


    Нет, формулы вызываются часто, за каждый раз над миллионом записей в оперативной памяти, тем не менее мы решили попробовать построить эффективный интерпретатор.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[27]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 27.02.06 09:59
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Суммарное? Да ничего специального не делать. В десятки раз замедляется собственно вызов, а не все. Остается еще время работы самого алгоритма.


    Стоп, если мне предложили держать формулы в одном домене, а данные — в другом, то как мне передать код из домена формул в домен с данными? Очевидно надо делать наоборот, поэтому я и говорю про сериализацию гига данных.

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


    AVK>И вобще смешно слышать разговоры о быстродействии после предложения использовать интерпретатор и рассказов об 1С.


    У меня стоит двоякая задача:
    1. решить эту конкретную задачу
    2. разжиться эффективным скрипт-движком

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

    AVK>Может ты не в курсе, но даже бейсик БК-0010 в замшелые времена тоже работал подобным образом. Только это не спасает интерпретатор от чудовищной разности в производительности по сравнению с компилятором. На ее фоне кроссдоменные потери не заметны под микроскопом.


    Я в этой же ветке Владу ответил довольно развернуто показав технику, которую использую. Мне интересно так же и твое мнение, где именно в той системе у меня могут быть чудовищные проседания в производительности. Мне кажется, что разница будет раза в 2-3 максимум.

    V>>В конкретном случае о котором идет речь — десятки тысяч вариантов формул до рестарта.


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


    Аналитическая on-line система. Не знаю насчет десяток, но несколько тысяч различных формул в день — запросто. В принципе, посмотрим, если не получим приемлимое быстродействие, то буду периодически выгружать и загружать домен (примерно раз в неделю).
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[35]: Новая версия макроса
    От: vdimas Россия  
    Дата: 27.02.06 09:59
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    V>>(в принципе, может зайти далеко, в MS есть открытый проект оптимизирующего бэк-энда компиляторов для дотнета, насколько я понял Nemerle пока его не юзает, но теоретически ничего не мешает)


    VD>Ты все перепутал. Есть Феникс. Феникс — это бэкэнд, но не оптимизирующий или для дотнета, а общий бэкэнд для всех компиляторов МС. Его можно использовать и для генерации MSIL-а, и для пре- или джит-компиляции готовых дотнетных сборок. Кроме того его можно применять для модификации МСИЛ-а готовых сборок и для генерации кода компиляторами. В частности планируется перевести VС++ на Феникс.


    Мне показалось, что я ничего не перепутал: http://research.microsoft.com/phoenix/faq.aspx

    What is Phoenix?
    Phoenix is a software optimization and analysis framework that is the basis for all future Microsoft compiler technologies. The Phoenix framework is an extensible system that can be adapted to read and write binaries and MSIL assemblies and to represent the input files in an IR, which can be analyzed and manipulated by applications by using the Phoenix API. The code can then be written in binary or JITable form for execution.

    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 27.02.06 12:08
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    AVK>>Суммарное? Да ничего специального не делать. В десятки раз замедляется собственно вызов, а не все. Остается еще время работы самого алгоритма.


    V>Стоп, если мне предложили держать формулы в одном домене, а данные — в другом, то как мне передать код из домена формул в домен с данными? Очевидно надо делать наоборот, поэтому я и говорю про сериализацию гига данных.


    Ну и? Сериализация конечно довольно медленная вещь, но по масштабам скомпилированного кода. И даже ее можно ускорить. Можно реализовать ISerializable, избавившись от львиной доли рефлекшена. А можно вобще свой форматтер специализированный создать, вобще рефлекшен не использующий и работающий с максимальной скоростью.

    V>У меня стоит двоякая задача:

    V>1. решить эту конкретную задачу
    V>2. разжиться эффективным скрипт-движком

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

    V>Я в этой же ветке Владу ответил довольно развернуто показав технику, которую использую.


    Поверь мне, Америку ты не открыл. Без подобных вещей мы вобще получим замедление на несколько порядков. Но и с ними все будет медленно. Фактически любой вызов внешней функции превращается в аналог рефлекшена.

    V> Мне интересно так же и твое мнение, где именно в той системе у меня могут быть чудовищные проседания в производительности. Мне кажется, что разница будет раза в 2-3 максимум.


    Тебе кажется, а я пробовал.

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


    V>Аналитическая on-line система.


    И? Ты всерьез веришь что кто то будет десятки тысяч формул набивать? Да даже если и так — у него фантазии не хватит набить десятки тысяч разных формул. Ну и наконец десять тысяч микроклассов это совсем немного памяти.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[29]: Снова о Nemerle или профанация не пройдет :)
    От: vdimas Россия  
    Дата: 27.02.06 14:36
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Ну и? Сериализация конечно довольно медленная вещь, но по масштабам скомпилированного кода. И даже ее можно ускорить. Можно реализовать ISerializable, избавившись от львиной доли рефлекшена. А можно вобще свой форматтер специализированный создать, вобще рефлекшен не использующий и работающий с максимальной скоростью.


    V>>У меня стоит двоякая задача:

    V>>1. решить эту конкретную задачу
    V>>2. разжиться эффективным скрипт-движком

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


    Ок, попробуем мой вариант vs сериализация. Даже суррогаты свои для сериализации напишу, дабы ускорить это дело... когда баловался ранее с вызовами из другого домена то мне показалось что все это очень медленно.


    AVK>И? Ты всерьез веришь что кто то будет десятки тысяч формул набивать?


    Сотни юзверей в день.

    AVK>Да даже если и так — у него фантазии не хватит набить десятки тысяч разных формул.


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

    В общем, обсуждение откладывается до получения результатов.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 27.02.06 16:23
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>А вообще мне казалось, что это общеизвестный факт. Даже вот на википедии пишут — http://en.wikipedia.org/wiki/MonoDevelop


    К слову — этот самый MonoDevelop вроде имеет какую-то встроенную поддержку Nemerle. Вот только потрогать его у меня нету возможности, а ставить 'nix только ради него неохота.
    Re[30]: Снова о Nemerle или профанация не пройдет :)
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 27.02.06 16:26
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    AVK>>И? Ты всерьез веришь что кто то будет десятки тысяч формул набивать?


    V>Сотни юзверей в день.


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

    V>Кстати, да, ведь формулы можно кешировать Действительно, тогда рост числа вариантов может быть не столь большим.


    Вот вот.
    ... << RSDN@Home 1.2.0 alpha rev. 642>>
    AVK Blog
    Re[33]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 27.02.06 16:33
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>К слову — этот самый MonoDevelop вроде имеет какую-то встроенную поддержку Nemerle. Вот только потрогать его у меня нету возможности, а ставить 'nix только ради него неохота.


    А разве его нельзя запустить под виндой? Поставить Моно и ГТК-шарп.. Мне казалось, можно.
    Вообще учитывая отсутсвие (если конечно ничего не поменялось) нормальной интеграции с дебагером толку от этой поддержки не шибко много.
    Перспективнее ИМХО будет тогда скооперироваться с разработчиками Немерле и шарп-девелопа, чтобы там появилась поддержка Немерле. Благо, #D 2.0 производит уже достаточно функциональное, скажем так, впечатление.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 27.02.06 16:42
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>А разве его нельзя запустить под виндой? Поставить Моно и ГТК-шарп.. Мне казалось, можно.


    Я не знаю, если честно. Можно, говоришь? Тогда я попробую, конечно...

    ВВ>Вообще учитывая отсутсвие (если конечно ничего не поменялось) нормальной интеграции с дебагером толку от этой поддержки не шибко много.

    ВВ>Перспективнее ИМХО будет тогда скооперироваться с разработчиками Немерле и шарп-девелопа, чтобы там появилась поддержка Немерле. Благо, #D 2.0 производит уже достаточно функциональное, скажем так, впечатление.

    А я верю в плагин к студии 2005
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: alive Россия  
    Дата: 27.02.06 20:49
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Перспективнее ИМХО будет тогда скооперироваться с разработчиками Немерле и шарп-девелопа, чтобы там появилась поддержка Немерле. Благо, #D 2.0 производит уже достаточно функциональное, скажем так, впечатление.


    У них в репозитории есть corsavy-addin. Похоже, правда, что давно не обновлялся. И подсветка синтаксиса у меня не работает
    И еще есть Asper — IDE для Nemerle написанная на Nemerle. Бинарники в репозитории для 1.1. А под 2.0 я ее не смог собрать.
    ...<< RSDN@Home 1.2.0 alpha rev. 642>>
    ...Foobar {18 — Рождественская.mp3 [foobar2000 v0.8.3]}
    Keep yourself alive
    Re[32]: Снова о Nemerle или профанация не пройдет :)
    От: Andir Россия
    Дата: 27.02.06 23:18
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    A>>Откуда это взято? Я вроде как слежу за развитием монодевелопера, но ни разу не слышал о том, что он отпочковался от SharpDevelop ...


    ВВ>Честно говоря точно не скажу. Точно попадалось на сайте шарп-девелопера да и на go-mono по-моему было. На icsharpcode.net можно еще вики посмотреть — там помнб была какая-то трогательная история о том, как они хотели сделать шарп-девелоп межплатформенным и что из этого вышло.

    ВВ>А вообще мне казалось, что это общеизвестный факт. Даже вот на википедии пишут — http://en.wikipedia.org/wiki/MonoDevelop

    Вот так вот, век живи — век учись Никогда бы не подумал. Спасибо.

    С Уважением, Andir!
    using( RSDN@Home 1.2.0 alpha rev. 635 ) { /* Работаемс ... */ }
    Re[35]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 28.02.06 01:30
    Оценка:
    Здравствуйте, alive, Вы писали:

    A>У них в репозитории есть corsavy-addin. Похоже, правда, что давно не обновлялся. И подсветка синтаксиса у меня не работает


    Не знаю, мне кажется, что если разработчиков этого самого корсави (он же #D 2.0) заинтересовать немерле, то дело может пойти куда быстрее чем с плагином для студии. Благо, исходники среды полностью открыты.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[37]: Макрос заместо TypeAccessorBuilder
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 01.03.06 00:25
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>В смысле правилам форматирования кода? Я, в общем-то, старался использовать правила форматирования кода на Nemerle от создателей Не всегда получалось, правда...


    Не думаю, что Nemerle стал стандартом, чтобы диктовать стандарты для других. Правила форматирования едены для всех языков донтета. И мы на сайте старамся их придерживаться.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[36]: Новая версия макроса
    От: Oyster Украина https://github.com/devoyster
    Дата: 01.03.06 07:26
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Ты их дерни там, чтобы они поняли, что дело действительно нужно.

    VD>А мы тебя поддержим.

    Дёрнул, так что уже заработает так, как написано тут: Re[28]: Вопрос
    Автор: Oyster
    Дата: 22.02.06
    . Для этого надо забрать последние сорсы из SVN или снапшот от 1 марта и позже.
    Re[36]: Снова о Nemerle или профанация не пройдет :)
    От: alive Россия  
    Дата: 01.03.06 09:48
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>Не знаю, мне кажется, что если разработчиков этого самого корсави (он же #D 2.0) заинтересовать немерле, то дело может пойти куда быстрее чем с плагином для студии. Благо, исходники среды полностью открыты.


    По-моему им не до Nemerle. Они вон уже #D 2.1 (Serralongue) анонсировали.
    ...<< RSDN@Home 1.2.0 alpha rev. 642>>
    ...Foobar {02 — Наполним небо добротой.mp3 [foobar2000 v0.8.3]}
    Keep yourself alive
    Re[28]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 01.03.06 21:46
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Да, чистая интерпретация всяко медленнее компиляции. Однако, представим себе, что многие операторы и ф-ии уже вшиты в систему. Реально проигрыш примерно в 2-3 раза у нас (субъективно, точно пока не замеряли).


    Если сравнивать скорость выполнения кода, то интепретация (любая) будет где-то от 10 раз и выше. Ну, а вызов гтовой функции добротно реализованной на языке с хорошим компилятором конечно может быть не заметен на фоне времени работы этой функции. Это я уже говорил. только о каких 2-3 раза тут можно говорить? Но формулы подразумевают под собой именно вычисления. А раз так, то при интенсивных вычислениях... короче, я повторяюсь.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[37]: Макрос заместо TypeAccessorBuilder
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 01.03.06 21:46
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>В случае необходимости, для какого-либо типа BLToolkit генерирует и создаёт экземпляр наследника от TypeAccessor. Этот объект предназначен для создания экземпляров изсходного типа и доступа к его членам в обход Reflection. Т.е. в TypeAccessor'е генерируется пара методов CreateInstance, а для каждого члена исходного типа наследник MemberAccessor, который содержит сгенерированные методы GetValue, SetValue и ещё некоторые служебные методы. Далее это используется для маппинга, валидации, баиндинга и прочих вещей, которые требуют динамическое создание и доспут к членам какого-либо объекта.


    Это плохой подход. Если в руках есть такой мощьный инструмент как метапрограммирование, лучше не использовать доступ через object-ы, а создавать специальные объекты владеющие информацией о структуре тех объектов с которыми нужно работать. Я не соображу как называется этот паттерн, но он здесь очень кстати.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[36]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 01.03.06 21:46
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    VD>>Ты все перепутал. Есть Феникс. Феникс — это бэкэнд, но не оптимизирующий или для дотнета, а общий бэкэнд для всех компиляторов МС. Его можно использовать и для генерации MSIL-а, и для пре- или джит-компиляции готовых дотнетных сборок. Кроме того его можно применять для модификации МСИЛ-а готовых сборок и для генерации кода компиляторами. В частности планируется перевести VС++ на Феникс.


    V>Мне показалось, что я ничего не перепутал: http://research.microsoft.com/phoenix/faq.aspx


    V>

    V>What is Phoenix?
    V>Phoenix is a software optimization and analysis framework that is the basis for all future Microsoft compiler technologies. The Phoenix framework is an extensible system that can be adapted to read and write binaries and MSIL assemblies and to represent the input files in an IR, which can be analyzed and manipulated by applications by using the Phoenix API. The code can then be written in binary or JITable form for execution.


    Ну, вот и прочти все по внимательнее. И оптимизация, и анализ — это всего лишь фичи.
    Короче говорю открытым текстом. Если уже есть МСИЛ-ные модули, то они и так будут способны компилироваться или модифицироваться с помощью Феникса.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[37]: Новая версия макроса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 01.03.06 21:46
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Дёрнул, так что уже заработает так, как написано тут: Re[28]: Вопрос
    Автор: Oyster
    Дата: 22.02.06
    . Для этого надо забрать последние сорсы из SVN или снапшот от 1 марта и позже.


    Здорово! Быстро реагируют!

    Сейчас раскитась с делами и продолжу разбираться с Немерлом.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[38]: Макрос заместо TypeAccessorBuilder
    От: IT Россия linq2db.com
    Дата: 02.03.06 01:04
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    IT>>В случае необходимости, для какого-либо типа BLToolkit генерирует и создаёт экземпляр наследника от TypeAccessor. Этот объект предназначен для создания экземпляров изсходного типа и доступа к его членам в обход Reflection. Т.е. в TypeAccessor'е генерируется пара методов CreateInstance, а для каждого члена исходного типа наследник MemberAccessor, который содержит сгенерированные методы GetValue, SetValue и ещё некоторые служебные методы. Далее это используется для маппинга, валидации, баиндинга и прочих вещей, которые требуют динамическое создание и доспут к членам какого-либо объекта.


    VD>Это плохой подход.


    Чем он плох?

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


    Так так и делается. TypeAccessor строится для каждого объекта свой.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[39]: Макрос заместо TypeAccessorBuilder
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 02.03.06 22:24
    Оценка:
    Здравствуйте, IT, Вы писали:

    VD>>Это плохой подход.


    IT>Чем он плох?


    Ниже же сказано:

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


    IT>Так так и делается. TypeAccessor строится для каждого объекта свой.


    То что я видел лезет через object. А этого совершенно не нужно.
    Это использование метапрограммирование с менталитетом рефлекшона. Вы пытаетесь создать чуть более быстрый рефлекшон. А надо делать специализированные конверторы которым уже не нужен рефрекшон.

    Какова задача вашего кода? Записать его в БД? Так сделайте переходник:
    ОбъектОпределенногоТипа -> ЗаписьВБД

    Еще что-то? Вот для этого и сделайте переходник.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[40]: Макрос заместо TypeAccessorBuilder
    От: IT Россия linq2db.com
    Дата: 03.03.06 02:33
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>То что я видел лезет через object. А этого совершенно не нужно.

    VD>Это использование метапрограммирование с менталитетом рефлекшона. Вы пытаетесь создать чуть более быстрый рефлекшон.

    Чуть более быстрый — это процентов на 7-8 медленне самого быстрого способа с DataReader и на 25% быстрее датасетов. Реальный рефлекшин сливает датасетам в разы, раза в три минимуми.

    VD> А надо делать специализированные конверторы которым уже не нужен рефрекшон.


    Mapping в BLToolkit — вещь достаточно универсальная. В принципе, можно мапить что угодно во что угодно. Как частный случай для ридера такой вариант сделать можно, хотя и довольно сложно (очень много работы).

    VD>Какова задача вашего кода? Записать его в БД? Так сделайте переходник:

    VD>
    VD>ОбъектОпределенногоТипа -> ЗаписьВБД
    VD>

    VD>Еще что-то? Вот для этого и сделайте переходник.

    К сожалению, на все случаи не напасёшься. Ты фактически предлагаешь разработчику библиотеки делать расширение библиотеки под каждый чих каждого пользователя. Можно сделать частные решения для наиболее частых случаев, но всё покрыть не удастся.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[41]: Макрос заместо TypeAccessorBuilder
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 03.03.06 02:50
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Чуть более быстрый — это процентов на 7-8 медленне самого быстрого способа с DataReader и на 25% быстрее датасетов. Реальный рефлекшин сливает датасетам в разы, раза в три минимуми.


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

    IT>Mapping в BLToolkit — вещь достаточно универсальная. В принципе, можно мапить что угодно во что угодно. Как частный случай для ридера такой вариант сделать можно, хотя и довольно сложно (очень много работы).


    Ееще бы если единственный способ генерировать код — это эмит.

    IT>К сожалению, на все случаи не напасёшься. Ты фактически предлагаешь разработчику библиотеки делать расширение библиотеки под каждый чих каждого пользователя. Можно сделать частные решения для наиболее частых случаев, но всё покрыть не удастся.


    Я предлагаю написать универсальный код который сам напишет все за разработчика. А разработчик только покажет что ему нужно. Причем сделает это незаметно для себя. Я тебе уже присылал вариант локализуемых строк в котором программист может писать %%"Что хочу $s тварю" как буддто хардкодит всю работу со строками, а на выходе получать автоматически локализуемое приложение. Вот примерно так же можно и с БД, толко, естесвенно сложнее.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[42]: Макрос заместо TypeAccessorBuilder
    От: IT Россия linq2db.com
    Дата: 03.03.06 02:57
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Я предлагаю написать универсальный код который сам напишет все за разработчика.


    Усилия могут оказаться неадекватными полученному результату
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[43]: Макрос заместо TypeAccessorBuilder
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 03.03.06 03:23
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Усилия могут оказаться неадекватными полученному результату


    Зависит от средства.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Снова о Nemerle или профанация не пройдет :)
    От: Воронков Василий Россия  
    Дата: 03.03.06 22:20
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Ну, что "слив" засчитан?


    Хэш-таблица — это в принципе хранилище данных + арифметика. Если хранилище данных предоставляет через экстеншины для XSLT то там это тоже сделать можно.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 06.03.06 17:43
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>Отладка получается полноценная — с бреакпойнтаими, просмотром/модификацией переменных и т.п. Ну, разве что, Edit&Continue нету.


    Отладка-то полноценная, но вот сообщения об ошибке у меня получаются какие-то корявые — какая бы ошибка ни была в исходниках, сообщение об ошибке неизменно:

    C:\Program Files\Nemerle\Nemerle.MSBuild.targets(167,9): error MSB6003: The specified task executable could not be run. Could not load file or assembly 'Nemerle, Version=0.9.2.0, Culture=neutral, PublicKeyToken=e080a9c724e2bfcd' or one of its dependencies. The system cannot find the file specified.


    Получается совсем неудобно — попробуй эту ошибку найди потом.

    PS: Как только исправляю ошибку, всё, естественно, билдится на "ура".
    Re[7]: Снова о Nemerle или профанация не пройдет :)
    От: xhalt Украина  
    Дата: 06.03.06 17:54
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Отладка-то полноценная, но вот сообщения об ошибке у меня получаются какие-то корявые — какая бы ошибка ни была в исходниках, сообщение об ошибке неизменно:

    O>

    O>C:\Program Files\Nemerle\Nemerle.MSBuild.targets(167,9): error MSB6003: The specified task executable could not be run. Could not load file or assembly 'Nemerle, Version=0.9.2.0, Culture=neutral, PublicKeyToken=e080a9c724e2bfcd' or one of its dependencies. The system cannot find the file specified.


    Странно. У меня все ошибки и варнинги показываются. Как обычно по клику переход на нужное место в исходниках.
    Как я делаю: <Import> с сишарповыми таргетами заменяю на:
    <Import Project="C:\Program Files\Nemerle\Nemerle.MSBuild.targets" />
    C:\Program Files\Nemerle -- путь куда поставился Nemerle из msi-ки.

    Кстати — стоит проверить на наличие в GAC-е Nemerle.dll Может в этом дело?

    Выскакивает каждый раз правда один лишний глупый вариниг

    Warning 1 assembly `C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll' already loaded NemerlieApp

    но уже успел привыкнуть...
    ... << RSDN@Home 1.2.0 alpha rev. 0>>


    Предлагаю работу в Киеве
    Автор:
    Дата: 04.05.06
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 06.03.06 18:11
    Оценка:
    Здравствуйте, xhalt, Вы писали:

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

    X>Как я делаю: <Import> с сишарповыми таргетами заменяю на:
    X><Import Project="C:\Program Files\Nemerle\Nemerle.MSBuild.targets" />
    X>C:\Program Files\Nemerle -- путь куда поставился Nemerle из msi-ки.

    Да, я так и делал. Оказалось, что у меня не та версия сборки была: Nemerle.MSBuild.Tasks референсила Nemerle версии 0.9.2.0, которой у меня не было (я там сам собирал). Вернул нужную версию — всё вроде заработало.

    X>Выскакивает каждый раз правда один лишний глупый вариниг

    X>

    X>Warning 1 assembly `C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll' already loaded NemerlieApp

    X>но уже успел привыкнуть...

    Ну мне помогло убирание сборки System из References. Она, похоже, референсится по умолчанию.
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 06.03.06 18:33
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>P.S. Кому не лень и свободное время есть — можно сделайть простенький темплейт проекта.


    Я попытался нечто такое набросать: Re: Микро-аддин для VS 2005
    Автор: Oyster
    Дата: 06.03.06
    .
    Re[6]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 07.03.06 07:03
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>P.S. Кому не лень и свободное время есть — можно сделайть простенький темплейт проекта.

    X>Хотя более практичнее было бы помочь основной команде с разработкой плагина.

    Полноценный интеллисенс и реафкторинг нам конечно не светит в ближайшее время, ибо здесь нужен фоновый парсинг, а стандартный парсер немерле слишком медленный.
    Для начала довести бы до ума просто возможность работать в студии без необходимости поминутно потрясать бубном.
    я вот сейчас думаю, как лучше сделать
    отдельный тип проекта для Nemerle — или возможность добавлять файлы Nemerle к существующим проектам C#?
    правда, пока не совсем ясно, как реализовать второй пункт. Надо будет еще поковыряться в SDK.
    Или наоборот — возможность добавлять к проектам немерле файлы C# и C++/CLI?
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[8]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 07.03.06 07:37
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Кстати, если его ngen-ом обработать, то он компилит довольно быстро: Re[9]: Снова о Nemerle или профанация не пройдет :)
    Автор: Vermicious Knid
    Дата: 17.02.06
    .


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

    O>Посмотри сюда: Re: Микро-аддин для VS 2005
    Автор: Oyster
    Дата: 06.03.06
    . Тут у тебя будут отдельные типы проектов для Nemerle (правда, с расширением .csproj, но это не сильно большая беда имхо, тем более что и это можно исправить).


    O>А для взаимодействия с C# или C++/CLI или чем угодно ещё — добавляешь проект другого типа в солюшен (как всегда, в общем).


    сделать отдельный тип проекта — не проблема. Надо будет только обработать напильником то, что уже сделал NoiseEHC.
    Но мне всё-таки хочется иметь возможность помещать исходники для разных языков в пределах одного проекта. Или я хочу слишком странного?
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[9]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 07.03.06 07:42
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>сделать отдельный тип проекта — не проблема. Надо будет только обработать напильником то, что уже сделал NoiseEHC.


    Дык зачем обрабатывать? Я уже всё сделал вроде...

    Кстати, а что сделал NoiseEHC?

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


    Именно что странного ибо студия такого не поддерживает. А чем тебя не устраивают несколько проектов на разных языках в одном solution (в 2003-й и того не было)?
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 07.03.06 08:26
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Дык зачем обрабатывать? Я уже всё сделал вроде...


    прямо-таки всё?

    O>Кстати, а что сделал NoiseEHC?


    слямзил пример из VS SDK и переделал его под немерле

    O>Именно что странного ибо студия такого не поддерживает. А чем тебя не устраивают несколько проектов на разных языках в одном solution (в 2003-й и того не было)?


    тем, что это принуждает группировать файлы не по их логическим связям, а по языку реализации
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 07.03.06 08:39
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>В 2003 таки выло. В одном солюшне смешивал проекты на native C++, уродском mC++, и C# с депендсами между ними.


    Уппс... Я чего-то думал всегда, что нельзя.

    X>А так, несколько языков для одного модуля — это конечно лишнее


    +1

    X>А вот поддержка в VS многомодульных сборок не помешала бы.


    Полностью согласен. Жаль, что её так и нет...
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 07.03.06 08:39
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    O>>Дык зачем обрабатывать? Я уже всё сделал вроде...


    Д>прямо-таки всё?


    Да, со словами надо быть поосторожней...

    O>>Кстати, а что сделал NoiseEHC?


    Д>слямзил пример из VS SDK и переделал его под немерле


    Ух ты, а где это лежит? Я-то просто шаблонов проектов/айтемов понаделал...

    O>>Именно что странного ибо студия такого не поддерживает. А чем тебя не устраивают несколько проектов на разных языках в одном solution (в 2003-й и того не было)?


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


    Да, это есть. Просто у студии в таком случае встаёт вопрос — как компилировать? У неё один проект соответствует одному MSBuild-проекту, соответственно один проект == один build target, насколько я понял.

    Вот поддержка нескольких модулей в сборке — совсем другое дело, как писал xhalt
    Автор: xhalt
    Дата: 07.03.06
    .
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 07.03.06 08:51
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Ух ты, а где это лежит? Я-то просто шаблонов проектов/айтемов понаделал...


    http://nemerle.org/svn/vs-plugin
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 07.03.06 08:55
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>http://nemerle.org/svn/vs-plugin


    А... это я видел. Только ставить не пробовал — я чего-то решил, что там пока что нерабочая версия лежит. Попробую, спасибо.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 07.03.06 09:06
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>А... это я видел. Только ставить не пробовал — я чего-то решил, что там пока что нерабочая версия лежит. Попробую, спасибо.


    да не очень то оно рабочее, да и вообще сделано неряшливо. Но довести до ума наверно все-таки можно.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 09.03.06 02:08
    Оценка:
    Здравствуйте, AndrewVK, Вы писали:

    AVK>Сделать тип то не проблема. А вот сделать его полноценным совсем не так просто, как кажется.


    это верно. Задача намного геморройнее, чем я думал раньше.

    AVK>Там обрабатывать нечего. Это просто слегка подрихтованный пример из VS SDK. И вобще, есть мыслб что правильный плагин для Nemerle должен быть написан на Nemerle.


    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: xhalt Украина  
    Дата: 09.03.06 17:09
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    Д>>>Но мне всё-таки хочется иметь возможность помещать исходники для разных

    Д>>>языков в пределах одного проекта. Или я хочу слишком странного?
    O>>Именно что странного ибо студия такого не поддерживает. А чем тебя не устраивают несколько проектов на разных языках в одном solution (в 2003-й и того не было)?
    VD>Ошибаешся. Студия теперь поддерживает все что хочешь, так как
    VD>компилирует файлы она с помощью MSBuild.
    В этом смысле, она, с тем же успехом, поддерживает полёты на Луну Только дописывать больно много придётся
    VD>На сайте есть моя статья по MSBuild. Прочти ее внимательно и все поймешь.
    Статью, конечно же, читал — это было первое что я прочёл, когда заинтересовался "а что же это за зверь такой MSBuild"
    ... << RSDN@Home 1.2.0 alpha rev. 0>>


    Предлагаю работу в Киеве
    Автор:
    Дата: 04.05.06
    Re[12]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 09.03.06 20:01
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>В этом смысле, она, с тем же успехом, поддерживает полёты на Луну Только дописывать больно много придётся


    Добавить цель (таргет) занятие на 5 минут (если конечно знашь, что делать).

    VD>>На сайте есть моя статья по MSBuild. Прочти ее внимательно и все поймешь.

    X>Статью, конечно же, читал — это было первое что я прочёл, когда заинтересовался "а что же это за зверь такой MSBuild"

    Значит фигово читал.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 10.03.06 03:55
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    а насколько реально приделать компилятор nemerle к C#-проектам в виде custom tool?
    в каком направлении нужно рыть? насколько я понимаю, придется делать сборку в два этапа — сначала компиляция файлов исходников по отдельности, потом линковка (welcome back C++ )
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[10]: Снова о Nemerle или профанация не пройдет :)
    От: anton_t Россия  
    Дата: 10.03.06 04:46
    Оценка:
    Здравствуйте, Oyster, Вы писали:

    O>Именно что странного ибо студия такого не поддерживает. А чем тебя не устраивают несколько проектов на разных языках в одном solution (в 2003-й и того не было)?


    Как это в 2003-й такого не было? Вот сейчас передо мной открыт солюшн в котором есть C# и С++ проекты. Открыт он в 2003 студии и прекрасно билдается.
    Re[11]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 10.03.06 07:21
    Оценка:
    Здравствуйте, anton_t, Вы писали:

    _>Как это в 2003-й такого не было? Вот сейчас передо мной открыт солюшн в котором есть C# и С++ проекты. Открыт он в 2003 студии и прекрасно билдается.


    Уже разобрался, что ошибся
    Автор: Oyster
    Дата: 07.03.06
    .
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: xhalt Украина  
    Дата: 10.03.06 07:42
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>а насколько реально приделать компилятор nemerle к C#-проектам в виде custom tool?

    А зачем? Какой цели ты хочешь добиться?
    Работай себе с Nemerle-проектами. Используй разработанные на Nemerle сборки,
    точно так же, как ты используешь сборки разработанные на любом другом CLR/CLI языке (C#, VB.NET, etc)

    Д>в каком направлении нужно рыть? насколько я понимаю, придется делать сборку в два этапа — сначала компиляция файлов исходников по отдельности, потом линковка (welcome back C++ )

    В C# и Nemerle нету ни линковки ни раздельной компиляции каждого исходного файла по отдельности.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>


    Предлагаю работу в Киеве
    Автор:
    Дата: 04.05.06
    Re[13]: Снова о Nemerle или профанация не пройдет :)
    От: xhalt Украина  
    Дата: 10.03.06 07:59
    Оценка:
    Здравствуйте, VladD2, Вы писали:
    VD>Добавить цель (таргет) занятие на 5 минут (если конечно знашь, что делать).
    VD>>>На сайте есть моя статья по MSBuild. Прочти ее внимательно и все поймешь.
    X>>Статью, конечно же, читал...
    X>>VD>Значит фигово читал.
    VladD2, если у тебя получиться за 5 минут добавить такой target, чтобы в среде VS2005
    создавались многомодульные сборки (хотя бы из двух модулей написанных на C#), причём так, чтобы не была нарушена работа ни IntelliSense (при работе с сырцами одного модуля, взаимодействующего с типами второго), ни отладчика (edit&continue) — думаю тебе буду благодарен не только я за показательный пример...
    ... << RSDN@Home 1.2.0 alpha rev. 0>>


    Предлагаю работу в Киеве
    Автор:
    Дата: 04.05.06
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 10.03.06 08:02
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>А зачем? Какой цели ты хочешь добиться?


    чтобы минимизировать работу и не реинвентить велосипед, то бишь реализовывать полностью проекты для немерле

    X>Работай себе с Nemerle-проектами.


    а где их взять?

    X>В C# и Nemerle нету ни линковки ни раздельной компиляции каждого исходного файла по отдельности.


    всё там есть, если есть необходимость. Просто не всегда используется.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 10.03.06 08:54
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>А что тебе мешает это делать сейчас (кроме отсутствия подстветки, IntelliSense и edit&continue) ?


    люблю удобства

    X>Создай точно так же как ты создаёшь проекты на C#, например, воспользовавшись шаблонами, любезно предоставленными Oyster.
    Автор: Oyster
    Дата: 06.03.06


    посмотрю. Но это далеко не полноценное решение.

    X>AFAIK, линковку, в традиционном смысле этого слова, выполняет уже джитер в рантайме. Но не раздельно по файлам-исходникам, а уже по сборкам/модулям.


    al тогда чем занимается?
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: Oyster Украина https://github.com/devoyster
    Дата: 10.03.06 08:58
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    X>>Создай точно так же как ты создаёшь проекты на C#, например, воспользовавшись шаблонами, любезно предоставленными Oyster.
    Автор: Oyster
    Дата: 06.03.06


    Д>посмотрю. Но это далеко не полноценное решение.


    Там нет "удобств"... Отсутствие Intellisense бесит, конечно, но его сейчас вообще нигде нет для Nemerle. Главное — там есть дебаг.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.03.06 09:28
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>а насколько реально приделать компилятор nemerle к C#-проектам в виде custom tool?


    Месье любитель извращений?

    Д>в каком направлении нужно рыть? насколько я понимаю, придется делать сборку в два этапа — сначала компиляция файлов исходников по отдельности, потом линковка (welcome back C++ )


    Зачем такие извращения. У тебя случаем не тмпература?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[14]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.03.06 09:28
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>VladD2, если у тебя получиться за 5 минут добавить такой target, чтобы в среде VS2005

    X>создавались многомодульные сборки (хотя бы из двух модулей написанных на C#), причём так, чтобы не была нарушена работа ни IntelliSense (при работе с сырцами одного модуля, взаимодействующего с типами второго), ни отладчика (edit&continue) — думаю тебе буду благодарен не только я за показательный пример...

    Добавить не проблема. Думаю, только, что благодарных будут еденицы. На фиг это никому не упало. А сделать сборку многомодульных сборок особых проблем нет. Что касается интелисенса, то вообще не ясно как он относится к сборке. В студии были проблемы с подключением многомодульных сборок в качестве сслок?

    ЗЫ

    Кстати, интересно как твои рассуждения о многомодульных сборках относится к обсуждавшимся вопросам?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 10.03.06 09:50
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Месье любитель извращений?


    как правило, нет. Во всяком случае, не в рабочее время

    VD>Зачем такие извращения. У тебя случаем не тмпература?


    просто мне кажется неестественным разделение типов проектов по используемому языку реализации. Да и вообще, если делать проект для Немерле полностью "как положено", то на это уйдет туева хуча времени (посмотрел я на код плагина, который переделали из примера для IronPython — душераздирающее зрелище )
    Ну ладно, будем считать, что я и правда хотел слишком странных вещей
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.03.06 11:05
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>как правило, нет. Во всяком случае, не в рабочее время


    Тогда зачем тебе убогии custom tool? Они же ведь могут работать только в IDE, только для одного файла, и только при записи файла.

    VD>>Зачем такие извращения. У тебя случаем не тмпература?


    Д>просто мне кажется неестественным разделение типов проектов по используемому языку реализации.


    Вообще-то в MSBuild-проктах (к комим относятся проекты C#) можно компилировать любое количесво файлов. В них вообще можно делать все что душа пожелает.

    Д> Да и вообще, если делать проект для Немерле полностью "как положено", то на это уйдет туева хуча времени (посмотрел я на код плагина, который переделали из примера для IronPython — душераздирающее зрелище )


    Два вопроса.
    1. Можно ссылку?
    2. Насколько он полнофункционален?

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


    Ооочень.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Снова о Nemerle или профанация не пройдет :)
    От: xhalt Украина  
    Дата: 10.03.06 11:05
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    X>>AFAIK, линковку, в традиционном смысле этого слова, выполняет уже джитер в рантайме. Но не раздельно по файлам-исходникам, а уже по сборкам/модулям.

    Д>al тогда чем занимается?
    Создаёт из нескольких модулей одну сборку. Многофайловую.
    Да — буква "l" в al расшифровывается как "linker",
    однако с раздельной компиляцией сырцов и линковкой (как в С++) здеcь нету ничего общего. Имхо.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>


    Предлагаю работу в Киеве
    Автор:
    Дата: 04.05.06
    Re[15]: Снова о Nemerle или профанация не пройдет :)
    От: xhalt Украина  
    Дата: 10.03.06 11:05
    Оценка:
    Здравствуйте, VladD2, Вы писали:
    VD>Кстати, интересно как твои рассуждения о многомодульных сборках
    VD>относится к обсуждавшимся вопросам?
    Ну поднимался вопрос смешивания в одном проекте
    исходников C# и Nemerle — но, поскольку, их вместе скомпилировать в одну сборку нельзя,
    то я высказал предположение о компиляции их в разные модули и объединения их потом в сборке. Впрочем, согласен, что рассуждения малополеные.

    Кстати, если cs2n будет работать стабильно — то можно таки будет смешивать сырцы C# и nemerle и компилировать вместе путём преобразования C#. И VladD2 подтвердит, что на MSBuild это делается элементарно
    ... << RSDN@Home 1.2.0 alpha rev. 0>>


    Предлагаю работу в Киеве
    Автор:
    Дата: 04.05.06
    Re[19]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 10.03.06 11:34
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>Создаёт из нескольких модулей одну сборку. Многофайловую.

    X>Да — буква "l" в al расшифровывается как "linker",
    X>однако с раздельной компиляцией сырцов и линковкой (как в С++) здеcь нету ничего общего. Имхо.

    а кто мешает создать по одному модулю из каждого файла-сырца, а потом слинковать?
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[17]: Снова о Nemerle или профанация не пройдет :)
    От: Дарней Россия  
    Дата: 10.03.06 11:34
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Два вопроса.

    VD>1. Можно ссылку?

    http://nemerle.org/svn/vs-plugin

    VD>2. Насколько он полнофункционален?


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

    VD>Ооочень.


    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[20]: Снова о Nemerle или профанация не пройдет :)
    От: xhalt Украина  
    Дата: 10.03.06 12:05
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    X>>Да — буква "l" в al расшифровывается как "linker",

    X>>однако с раздельной компиляцией сырцов и линковкой (как в С++)
    X>>здеcь нету ничего общего. Имхо.
    Д>а кто мешает создать по одному модулю из каждого файла-сырца, а потом слинковать?
    Например:
    // Node.cs
    public class Node
    {
      Leaf Left;
      Leaf Right;
        //...
    }

    //Leaf.cs.
    public class Leaf
    {
      Node Parent;
        //...
    }
    ... << RSDN@Home 1.2.0 alpha rev. 0>>


    Предлагаю работу в Киеве
    Автор:
    Дата: 04.05.06
    Re[21]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.03.06 17:39
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    Д>>а кто мешает создать по одному модулю из каждого файла-сырца, а потом слинковать?

    X>Например:
    ...

    Ради спроведливости, замечу, что МС++ таки помещает классы в разные объектники.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Снова о Nemerle или профанация не пройдет :)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.03.06 17:39
    Оценка:
    Здравствуйте, xhalt, Вы писали:

    X>Ну поднимался вопрос смешивания в одном проекте

    X>исходников C# и Nemerle — но, поскольку, их вместе скомпилировать в одну сборку нельзя, то я высказал предположение о компиляции их в разные модули и объединения их потом в сборке. Впрочем, согласен, что рассуждения малополеные.

    Хм. Сразу возникает два вопроса:
    1. Зачем делать многомодульную сборку? Ведь достаточно просто скомпилировать две и сделать ссылку из одной на другую.
    2. Почему нельзя перед компиляцией транслировать файлы из C# в Нэмерле и компилировать их вместе с рукописными?

    X>Кстати, если cs2n будет работать стабильно — то можно таки будет смешивать сырцы C# и nemerle и компилировать вместе путём преобразования C#. И VladD2 подтвердит, что на MSBuild это делается элементарно


    VladD2 об этом и говорил. А что до cs2n, то можно взять парсер от R#-а и написать парсер который съест 99.9% исходников. На сегодня в R# только одна недоработка и та легко обходится.

    Можно даже сделать фронтэнд к Немерлу, чтобы он C# штатно кушал.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.