Re[46]: Как скрестить ужа и ежа или статическую и утиные тип
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 23.01.07 11:05
Оценка: +1 -4
Здравствуйте, FR, Вы писали:

VD>>Я про "статический "генератор классов"".


FR>И я тоже, хотел бы чтобы его добавили.


Мне кажется -- все это от лукавого. Здесь тебя втравили в игру на чужом поле, поскольку Nemerle изначально создавался как язык для написания себя самого на себе самом же (посредством макросистемы). Поэтому создание таких AbstractFactory делается в Nemerle его же макросами и в compile time.

D совсем другого поля ягода. И туже самую AbstractFactory для него можно без проблем получить путем precompile time генерации из какого-нибудь DSL (а описание AbstractFactory в анотации есть не что иное как DSL). При этом, по моему мнению, такой подход очень универсален, т.к. позволяет легко масштабироваться от простых DSL (вроде вот таких делараций фабрик) до гораздо более сложных, с собственным синтаксисом и заточенных под специальные задачи (вроде Ragel или, как у меня, для описания сериализации).

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[52]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.01.07 11:25
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>По одной большой причине — Emacs. Не срастаюсь я с ним.


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

Странно это слушать про круть неимоверную, и при этом инструмент не используется.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[33]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.01.07 11:25
Оценка:
Здравствуйте, IT, Вы писали:

IT>В Немерле она решается ещё компактнее чем в плюсах, так что даже не думай. Особенно в N здорово решаются вопросы связянные с обработкой специальных случаев. При правильном дизайне вариантов так компактно, как паттерн матчинг обрабоку таких условий не сделает ни кто.


Ну, на МЛ-клонах это будет точно так же. Да и генераторы парсеров коенчно могут многое. Все же это метапрограммы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[47]: Как скрестить ужа и ежа или статическую и утиные тип
От: FR  
Дата: 23.01.07 11:31
Оценка:
Здравствуйте, eao197, Вы писали:

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


VD>>>Я про "статический "генератор классов"".


FR>>И я тоже, хотел бы чтобы его добавили.


E>Мне кажется -- все это от лукавого. Здесь тебя втравили в игру на чужом поле, поскольку Nemerle изначально создавался как язык для написания себя самого на себе самом же (посредством макросистемы). Поэтому создание таких AbstractFactory делается в Nemerle его же макросами и в compile time.


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


E>D совсем другого поля ягода. И туже самую AbstractFactory для него можно без проблем получить путем precompile time генерации из какого-нибудь DSL (а описание AbstractFactory в анотации есть не что иное как DSL). При этом, по моему мнению, такой подход очень универсален, т.к. позволяет легко масштабироваться от простых DSL (вроде вот таких делараций фабрик) до гораздо более сложных, с собственным синтаксисом и заточенных под специальные задачи (вроде Ragel или, как у меня, для описания сериализации).


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

E>Как обычно, "единственно правильного решения" задачи не существует. Просто аппологеты Nemerle ведут себя так, будто бы они одно такое "единственно правильное" знают, а все остальное для них так -- ошибка эволюции и ее тупиковая ветвь.


Re[53]: Как скрестить ужа и ежа или статическую и утиные тип
От: Cyberax Марс  
Дата: 23.01.07 11:47
Оценка:
VladD2 wrote:
> C>По одной большой причине — Emacs. Не срастаюсь я с ним.
> Ну, ради таких то наворотов в рефакторинге можно был пережить. Темболее,
> что можно испльзовать его было и как вторую утилиту.
Пытался — все равно не получается. Под Емаксом даже нормального
отладчика нет!!!

> Странно это слушать про круть неимоверную, и при этом инструмент не

> используется.
У меня вечные планы по его встраиванию. Руки не доходят все время —
сейчас я не так уж много на С++ пишу, хватает VisualAssist'а, который
постепенно приближается по качеству к XRef.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[27]: Как скрестить ужа и ежа или статическую и утиные тип
От: Left2 Украина  
Дата: 23.01.07 12:18
Оценка:
>> C>Может они имеют в виду, что в пользовательском коде нельзя их смешивать?
>> Вопрос в том — переделали ли они всё АПИ оси, чтобы использовать
>> нормальные исключения? Подозреваю, что нет. Если нет, то пользы от
>> поддержки исключений практически ноль.
C>Похоже, что нет. Поэтому производители Оперы просто написали обертки,
C>бросающие исключения, для всех используемых API.

Очень интересно. Откуда дровишки — ссылкой не поделишься? спасибо заранее.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[30]: Как скрестить ужа и ежа или статическую и утиные тип
От: Left2 Украина  
Дата: 23.01.07 12:18
Оценка: +2 :))
VD>Я помню как С++-ники нападали на Немерле когда о нем телько начали говорить на этом форуме. Аргументы тоже были "железными". Их и сейчас не прошибешь. Это вера. С ней спорить бессмысленно. Очень не многие способны будучи экспертами в одном деле адекватно и беспритрастно оценивать некую конкурирующую технологию.

Влад, если ты завтра увлечёшься языком Brainfuck — через месяц на него тоже будут нападать на здешних форумах Ты просто любой язык который тебе нравится пытаешься идеализировать и защищать с такой же беспощадностью как газета Правда советских времён защищала коммунизм от нападок империализма. Не стоит это такой бури эмоций, а то ведь эффект получается абсолютно противоположным — примерно как у Губанова с Обероном.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[33]: Как скрестить ужа и ежа или статическую и утиные тип
От: Kisloid Мухосранск  
Дата: 23.01.07 12:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Тут есть одно "но". Леворекурсивные парсеры принципиально выдают более разумные сообщения об ошибках. Причина тут в том, что они разбирают код так же как это делает человек. А LR-парсеры делают это совсем иначе. Они сначала накапливают грамматику и только когда ее не удаетя свернуть как надо выдают ошибку. В итоге контекст часто бывает потерян, и LR-ы просто не знаю, что они разбирали.


Хочу лишь добавить, что зато LL(k) парсеры распознают более узкий класс КС грамматик, в то время как LR(1) распознает весь класс КС грамматик. Таким образом выразительная мощность LR(1) выше, чем у LL(k).
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Re[28]: Как скрестить ужа и ежа или статическую и утиные тип
От: Cyberax Марс  
Дата: 23.01.07 12:47
Оценка: 6 (1)
Left2 wrote:
> C>Похоже, что нет. Поэтому производители Оперы просто написали обертки,
> C>бросающие исключения, для всех используемых API.
> Очень интересно. Откуда дровишки — ссылкой не поделишься? спасибо заранее.
Из обзора статьи "Porting Opera to EPOC". Саму статью найти не могу — 404.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[47]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.01.07 13:00
Оценка:
Здравствуйте, eao197, Вы писали:

E>Мне кажется -- все это от лукавого. Здесь тебя втравили в игру на чужом поле, поскольку Nemerle изначально создавался как язык для написания себя самого на себе самом же (посредством макросистемы). Поэтому создание таких AbstractFactory делается в Nemerle его же макросами и в compile time.


+1 Так и есть. Метапрограммирование — это поле Немерла и Лиспа, но не Ди или С++.

E>D совсем другого поля ягода. И туже самую AbstractFactory для него можно без проблем получить путем precompile time генерации из какого-нибудь DSL (а описание AbstractFactory в анотации есть не что иное как DSL). При этом, по моему мнению, такой подход очень универсален,


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

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

Как это называется? Однозначно — двойные стандарты и притягивание за уши.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.01.07 13:00
Оценка:
Здравствуйте, deniok, Вы писали:

D>то грамотность и продуманность архитектуры и библиотек была бы принесена в жертву "удобству для неискушённого пользователя", "релиз на носу, а вы тут возитесь", etc


Это ничем не обоснованное мнение.

D>Кстати о догматичности: в версии Хаскеля до 98 (1.4) comprehension был не только для List, но и для произвольной монады (monad comprehension). Но в стандарт 98 его не включили, чтобы не переусложнять язык. Комитет учёл интересы пользователей, а ты обзываешься нехорошими словами


Они бы учли интересы и убрали сами модады введя вместо этого строгое (не линивое) выполнение. Сделать это можно было пометкой участков кода неким блоком.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[32]: Как скрестить ужа и ежа или статическую и утиные тип
От: Klapaucius  
Дата: 23.01.07 13:01
Оценка: +4 :))
Здравствуйте, FR, Вы писали:

K>>Это без замыкания-то? Ну-ну.

FR>Так я тоже двумя ногами за нормальные замыкания.
FR>Но ты не прав с своими хиханьками и хаханьками, даже без замыканяия лямбда полезна и вкусна, особенно если пользуешся как в D как блоками кода.

Прав я или нет — это вопрос как минимум дискуссионный. Про вкусно — я не спорю, все-таки de gustibus et coloribus non est disputandum. Понятно, что с такой квазилямбдой можно написать простенький фильтр, отображение или еще что-то в этом роде и получить свои десять секунд фана. Но когда дело дойдет до, извините за каламбур, дела — пользователь квазилямбды просто ударится лбом о притолоку.
Я действительно считаю что квазилямбда, в отличие от лямбды, вредна — как раз потому, что это неполноценная лямбда и того, кто знает (или думает что знает), что нужно ожидать от лямбды ждет неприятный сюрприз — это, правда, только мое мнение. Правда, это не страшно, потому что D, как я понял, не нацелен на пользователей лямбд, а нацелен на пользователей LP-горшков из буста. Эти самые пользователи и получают то же самое, только после пластической хирургии — что уже плюс.
Г-н Хропов где-то поблизости отметил, причем совершенно справедливо, что вывод типов для делегатов это очень хорошо. Я с ним согласен. Лямбда в C# 2.0 выглядит страшнее атомной войны. Но есть нюанс. Она работает. А в D она выглядит лучше. Почти как живая. Но она не живая на самом деле. Такие дела.
Вобщем, я опять лезу со своими хиханьками и хаханьками — не смотря на то, что понимаю, что когда смеешься над тем, что кому-то нравится — у этого кого-то может возникнуть желание сказать насмешнику пару неласковых слов или даже пнуть его ногой в живот. Но что поделать — мне просто сдержаться очень сложно.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[29]: Как скрестить ужа и ежа или статическую и утиные тип
От: Left2 Украина  
Дата: 23.01.07 13:04
Оценка: +1
>> C>Похоже, что нет. Поэтому производители Оперы просто написали обертки,
>> C>бросающие исключения, для всех используемых API.
>> Очень интересно. Откуда дровишки — ссылкой не поделишься? спасибо заранее.
C>Из обзора статьи "Porting Opera to EPOC". Саму статью найти не могу — 404.

Спасибо!
Саму статью пока не нашёл, но вот из её аннотации:

It would have been a huge effort to restructure the code and adapt it for EPOC, so it was decided the best approach would be to ?emulate? the Windows API and environment, leaving the Opera base code untouched.

Эх, кабы они поделились этими обёртками... Вот было бы счастье
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[34]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.01.07 13:57
Оценка:
Здравствуйте, Kisloid, Вы писали:

K>Хочу лишь добавить, что зато LL(k) парсеры распознают более узкий класс КС грамматик, в то время как LR(1) распознает весь класс КС грамматик. Таким образом выразительная мощность LR(1) выше, чем у LL(k).


Это не так. С заглядываниями вперед LL(k)-парсеры могут распознавать такие же грамматки если не больше. Да и для большинства компьютерных языков хватает LL(1)-парсеров с нехитрым механизмом заглядывания. LL(*)-парсеры ввообще накрывают прктически любой ЯП. Если вести речь естественных языках то там все сложнее. Там и чистый LR(k) не пригоден. Там надо использовать построители для GLR или Эрли парсеров. Но эффективность у них ниже. И для "почти LL(1)" языков их примененение наверно будет избыточным.

Кстати, интересной идеей является реализация парсера со сменными алгоритмами. Представляете? Задаешь тип алгоритма и смотришь что получилось. Красота!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[31]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.01.07 13:57
Оценка:
Здравствуйте, Left2, Вы писали:

L>Влад, если ты завтра увлечёшься языком Brainfuck — через месяц на него тоже будут нападать на здешних форумах Ты просто любой язык который тебе нравится пытаешься идеализировать и защищать с такой же беспощадностью как газета Правда советских времён защищала коммунизм от нападок империализма. Не стоит это такой бури эмоций, а то ведь эффект получается абсолютно противоположным — примерно как у Губанова с Обероном.


Brainfuck мне точно не понрависят. А защищаю что что-то только когда на это что-то некорректно нападают. Против адекватного сравнения я ничего не имею. Только это видимо область где адекватности ждать не приходится.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[34]: Как скрестить ужа и ежа или статическую и утиные тип
От: IT Россия linq2db.com
Дата: 23.01.07 14:20
Оценка:
Здравствуйте, VladD2, Вы писали:

IT>>В Немерле она решается ещё компактнее чем в плюсах, так что даже не думай. Особенно в N здорово решаются вопросы связянные с обработкой специальных случаев. При правильном дизайне вариантов так компактно, как паттерн матчинг обрабоку таких условий не сделает ни кто.


VD>Ну, на МЛ-клонах это будет точно так же.


За МЛ ничего не скажу.

VD>Да и генераторы парсеров коенчно могут многое. Все же это метапрограммы.


Я говорю как бы о компактности ручного написания.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[47]: Как скрестить ужа и ежа или статическую и утиные тип
От: IT Россия linq2db.com
Дата: 23.01.07 14:31
Оценка:
Здравствуйте, eao197, Вы писали:

E>D совсем другого поля ягода. И туже самую AbstractFactory для него можно без проблем получить путем precompile time генерации из какого-нибудь DSL (а описание AbstractFactory в анотации есть не что иное как DSL).


А комбинацию AbstractFactory и, например, синглетона?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[43]: Как скрестить ужа и ежа или статическую и утиные тип
От: IT Россия linq2db.com
Дата: 23.01.07 14:37
Оценка:
Здравствуйте, FR, Вы писали:

FR>>>В общем держи фабрику, конечно все в статике, но просто.


IT>>Ты уверен, что ты праильно понимаешь суть паттерна?


FR>Конечно, и в этой сути ничего ни говорится о том что нельзя делать статическую (времени комиляции) фабрику, которую я и сделал на D.

FR>Нормальную динамическую попробую позже сделать.

А какой смысл от такой фабрики? Кроме пенисометрии, конечно.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[33]: Как скрестить ужа и ежа или статическую и утиные тип
От: Cyberax Марс  
Дата: 23.01.07 15:03
Оценка:
IT wrote:
> C>А ANTLR пробовал? Мне действительно интересно, скоро парсер для
> нехилого языка придется писать.
> Я в этой вашей потасовке не участвую, но по секрету скажу. На плюсах
> было удобно писать конечные автоматы в основном за счёт локальных
> статических массивов и макросов. Далее один свич для обработки события и
> один для перехода в следущее состояние. В C# эта задача так компактно не
> решается.
Если для парсинга придется руками писать автоматы, то я заранее уже не
хочу это использовать

> В Немерле она решается ещё компактнее чем в плюсах, так что даже не

> думай. Особенно в N здорово решаются вопросы связянные с обработкой
> специальных случаев. При правильном дизайне вариантов так компактно, как
> паттерн матчинг обрабоку таких условий не сделает ни кто.
Это я знаю. С другой стороны, если можно будет обойтись вообще вместо
ручного написания парсера — то мне будет примерно пофиг что там у него
внутри за неонка будет.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[44]: Как скрестить ужа и ежа или статическую и утиные тип
От: WolfHound  
Дата: 23.01.07 15:04
Оценка: +2
Здравствуйте, Andrei N.Sobchuck, Вы писали:

АХ>>Смотря куда. В ядро и драйверы — не стоит!

ANS>emit — скорее всего да ("да" — в смысле "нет, не нужно" А вот без возможности динамической подгрузки модулей (драйверов), такая ОС давным давно никому не нужна.
Еще раз прочитай про сингулярити. Там нельзя загрузить код в уже запущенный процесс. Но никто не мешает во время работы ОС загрузить новые модули, собрать новый образ процесса и запустить этот процесс даже если этот процесс драйвер.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.