Re[22]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.02.06 07:57
Оценка: +3
Здравствуйте, VladD2, Вы писали:

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


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

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

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
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[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[21]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 08:07
Оценка: :)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Или после появления ответов уже поздняк метаться?


Именно
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[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[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[31]: Снова о Nemerle или профанация не пройдет :)
От: Oyster Украина https://github.com/devoyster
Дата: 22.02.06 08:23
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>У меня вообще впечатление, что нынешние шаблоны в C++ это только начало длинного пути их превращения во что-то другое.


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

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


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

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

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

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

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

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


Вопрос в количестве выражений с польской или обычной записью далеко не принципиален для Форта, там принципиальны несколько другие вещи.
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[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[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[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
!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.