Re[15]: Недостатки Nemerle
От: STDray http://stdray.livejournal.com
Дата: 13.07.12 22:48
Оценка:
VE>Что тут читать. Я бы мог вспомнить про правила перезаписи, или про то, что какая-нибудь Agda, имея на руках
VE>
VE>proof : ∀{f g} → map f ∘ map g ≡ map (f ∘ g)
VE>

VE>могла бы проводить оптимизации (те же правила перезаписи, только с док-вом корректности), но ты же это макросами сейчас обзовёшь.

Определение говорит, что map f не изменяет контекст, в котором происходит вычисление. По сути, декларация чистоты map и чистоты f. Это имеет отношение к системе типов, которая содержит информацию, позволяющую компилятору проводить подобные перезаписи. Система типов и макроподсистема ортогональны, на мой взгляд, и могут спокойно сосуществовать в рамках одного языка, потому, сравнение в данном случае некорректно.
Re[17]: Недостатки Nemerle
От: hi_octane Беларусь  
Дата: 13.07.12 23:06
Оценка: 1 (1)
VE>Понимаешь ли, if-else\for\while, например, могут быть реализованы на макросах, но сами по себе не макросы.

Тут готов поспорить. if-else,for,while — привычные, захардкоженные в большинство языков макросы. Ещё более неявный и привычный макрос — оператор доступа к членам '.' в C#, VB.NET, и т.д. Этот оператор ведёт себя совершенно по-разному в зависимости не только от типов стоящих слева и справа от него, но ещё и от реальных значений, если такие подразумеваются. Например в C# он может NullReferenceException кинуть, если слева reference-тип, с значением null. А может вообще ничего не сделать, если слева namespace и справа namespace. Причём за историю C# функциональность этого макроса расширяли, например в C#3 он научился находить Extension-методы, и не кидает NullReferenceException в случае если вызывается именно extension-метод.

Даже если вместо языка высокого уровня взять например ассемблер, то
ADD AX, [BP+2] — тоже сплошь состоит из макросов.

В итоге получается что любой язык программирования это какой-то набор жёстко захардкоженных макросов.
Re[17]: Недостатки Nemerle
От: STDray http://stdray.livejournal.com
Дата: 13.07.12 23:14
Оценка:
VE>Понимаешь ли, if-else\for\while, например, могут быть реализованы на макросах, но сами по себе не макросы.
Из всего этого дела, только if-else — особая форма в энергичном языке. Все остальное сахар, только в одних языках он захардкожен в компилятор, а в других имеются возможности красиво из выразить.
Re[22]: Недостатки Nemerle
От: fddima  
Дата: 13.07.12 23:30
Оценка:
Здравствуйте, VladD2, Вы писали:

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

Это так. Но на фоне "метасвязок" — этот фактор — решающий.
Re[18]: Недостатки Nemerle
От: STDray http://stdray.livejournal.com
Дата: 13.07.12 23:57
Оценка:
_>Даже если вместо языка высокого уровня взять например ассемблер, то
_>ADD AX, [BP+2] — тоже сплошь состоит из макросов.

И приравняли Nemerle к ассемблеру.

_>В итоге получается что любой язык программирования это какой-то набор жёстко захардкоженных макросов.


Ага, а компилятор — это всего лишь один сложный макрос.

Так нельзя, надо иметь четкое определение, что такое макрос или, по крайней мере, что подразумевается под ним применительно к Nemerle. В противном случае бессмыслица и демагогия получаются.
Re[19]: Недостатки Nemerle
От: hi_octane Беларусь  
Дата: 14.07.12 04:39
Оценка:
STD>И приравняли Nemerle к ассемблеру.
Нет. Приравнял ассемблер к транслятору набора захардкоженных макросов в двоичный код какой-то архитектуры. Соответственно Nemerle _может_ быть ассемблером.

_>>В итоге получается что любой язык программирования это какой-то набор жёстко захардкоженных макросов.

STD>Ага, а компилятор — это всего лишь один сложный макрос.
Нет. Обычный компилятор — парсер и транслятор некоторого неизменяемого набора макросов.

STD>Так нельзя, надо иметь четкое определение, что такое макрос или, по крайней мере, что подразумевается под ним применительно к Nemerle. В противном случае бессмыслица и демагогия получаются.

Ну это работа теоретиков, пока я вижу только что любой язык делится на описание типов и макросов. Причём макросы могут создавать новые типы. Соотвественно макросы это не типы
Re[23]: Недостатки Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.12 06:50
Оценка:
Здравствуйте, fddima, Вы писали:

F> Это так. Но на фоне "метасвязок" — этот фактор — решающий.


Кстати, все еще хочется увидеть внятное описание этих метасвязок. Я так и не понял, что это такое.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Недостатки Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.12 06:59
Оценка:
Здравствуйте, STDray, Вы писали:

STD>Из всего этого дела, только if-else — особая форма в энергичном языке. Все остальное сахар, только в одних языках он захардкожен в компилятор, а в других имеются возможности красиво из выразить.


Да и if/else тоже может быть сахаром. В том же немерле это именно так. В немерле базовой конструкцией ветвления является match. Но в приципе ее вообще может не быть, если макрос сможет переписываться в более низкоуровневый язык.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Недостатки Nemerle
От: WolfHound  
Дата: 14.07.12 07:00
Оценка:
Здравствуйте, STDray, Вы писали:

STD>Определение говорит, что map f не изменяет контекст, в котором происходит вычисление. По сути, декларация чистоты map и чистоты f. Это имеет отношение к системе типов, которая содержит информацию, позволяющую компилятору проводить подобные перезаписи. Система типов и макроподсистема ортогональны, на мой взгляд, и могут спокойно сосуществовать в рамках одного языка, потому, сравнение в данном случае некорректно.

А кто сказал, что макросы не могут создавать собственные системы типов?
Н2 вообще будет построен на создании собственных систем типов заточенных под задачу.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: Недостатки Nemerle
От: STDray http://stdray.livejournal.com
Дата: 14.07.12 11:07
Оценка:
STD>>Из всего этого дела, только if-else — особая форма в энергичном языке. Все остальное сахар, только в одних языках он захардкожен в компилятор, а в других имеются возможности красиво из выразить.

VD>Да и if/else тоже может быть сахаром. В том же немерле это именно так. В немерле базовой конструкцией ветвления является match. Но в приципе ее вообще может не быть, если макрос сможет переписываться в более низкоуровневый язык.


Я имел в виду, что необходима конструкция, которая будет отложено вычислять свои аргументы. В Nemerle это матч, потому через него выражают if-else, но могло быть и наоборот. Имея на руках рекурсию и подобную конструкцию, можназделоть все остальные. Если макрос сможет переписываться в более низкоуровневый язык, значит енто компилятор.
Re[17]: Недостатки Nemerle
От: STDray http://stdray.livejournal.com
Дата: 14.07.12 11:20
Оценка:
WH>А кто сказал, что макросы не могут создавать собственные системы типов?
Не знаю. В любом случае, ключевая роль системы типов в данном примере не изменится от того, как эта система была получена.

WH>Н2 вообще будет построен на создании собственных систем типов заточенных под задачу.

В рамках N2 описываются полноценные языки, со своими компиляторами. Макросами их назвать сложно.
Re[20]: Недостатки Nemerle
От: VoidEx  
Дата: 15.07.12 06:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ты палишся. Тебе никто не говорил "ты боишься".


Тебе процитировать, кто и когда мне это сказал пару сообщений назад?
Re[18]: Недостатки Nemerle
От: VoidEx  
Дата: 15.07.12 06:18
Оценка:
Здравствуйте, hi_octane, Вы писали:

VE>>А есть какой-то критерий, как понять, понял я макросы или нет? Ну кроме очевидного "в восторге от них — значит понял".


_>Каждый раз когда применяется какой-то макрос, язык становится немного более DSL.


DSL вон и на C++ пишут. Выглядит это, конечно, уродски, но ставить знак равенства между DSL и макросами несколько ошибочно.
Re[18]: Недостатки Nemerle
От: VoidEx  
Дата: 15.07.12 06:20
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Судя по твоим словам можно предположить, что не понял. Даже можно более сильное утверждение сделать. Ты зачем-то ищешь обоснование для того чтобы не разбираться, что это такое и что это дает.


Прекращай телепатировать, меня WolfHound спросил, я ответил. Ответ вас не устроил и вы теперь убеждаете меня, что я не разобрался, так ещё и ищу основание для того, чтобы не разбираться. У вас уже совсем евангелизм способность читать поел.
Re[18]: Недостатки Nemerle
От: VoidEx  
Дата: 15.07.12 06:26
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Не уверен. Уловил, что скорее всего речь идет о трасформации кода. До ≡ идет паттерн распознающий некое выражение, а после ≡ идет паттерн формирующий переписанное выражение. При этом f и g это аналоги сплайсов в квази-цитатах, т.е. на их месте может быть произвольный код (или произвольная функция, что несколько более примитивно).


Нет.

data _≡_ {a} {A : Set a} (x : A) : A → Set a where
    refl : x ≡ x


Просто тип данных. Можешь сам таких написать с десяток.

VD>Короче на лицо описание трансформации кода.


На лицо твоё непонимание.

VE>> Это, если что, просто декларация значения определённого типа, такая же, как

VE>>
VE>>some :: ∀{a} → maybe a
VE>>some = nothing
VE>>


VD>Да ну? А где же ≡ ? Ой обманываешь ты меня, явно.


VD>Думаю, что все дело в "≡". Без него это будет обычный тип. С ним не обычный.


Ты смешон. Обвиняешь всех огульно в нежелании разбираться, а сам везде видишь паттерны и макросы "вид сбоку".
Re[16]: Недостатки Nemerle
От: VoidEx  
Дата: 15.07.12 06:27
Оценка:
Здравствуйте, STDray, Вы писали:

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


Конечно может, конечно ортогональны, а вот почему это Влад назвал "макросы вид сбоку", это у него спросить надо.
Re[18]: Недостатки Nemerle
От: VoidEx  
Дата: 15.07.12 06:30
Оценка:
Здравствуйте, STDray, Вы писали:

VE>>Понимаешь ли, if-else\for\while, например, могут быть реализованы на макросах, но сами по себе не макросы.

STD>Из всего этого дела, только if-else — особая форма в энергичном языке. Все остальное сахар, только в одних языках он захардкожен в компилятор, а в других имеются возможности красиво из выразить.

Ну вот в agda это просто оператор if_then_else_. Красиво? А я ещё могу в if проверить непустоту списка, а в ветке then использовать функцию head (голова списка), так как в then-ветке известно, что список не пуст и head можно применить. Никаких макросов, просто функции.
Так что не макросами едиными.
Re[18]: Недостатки Nemerle
От: -VaS- Россия vaskir.blogspot.com
Дата: 15.07.12 06:37
Оценка:
VD>Вот только сегодня гугль принес ссылку на новый проект на немерле. Это какая-то студенческая работа из Италии. В ней не было бы ничего интересного кроме того, что по ней можно четко скзать, что человек создавший этот проект использовал Немерл как C#++. Фактически это добротный код C#-код с синтаксисом немерла и использованием готовых макросов (в частности, самый мощный C#-парсер созданный с использованием макроса Nemerle.Peg.

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


Мне эту ссылку принес вчера твиттер И вот что сказал автор по поводу странного использования немерла:

Автор: just migrated http://code.google.com/p/cs2project/ to #nemerle. cool language
Я: Why do you not use any of the Nemerle unique features but just port the code almost line-by-line?
Автор: Simple reason, I first migrated the code as-is, and now I'm starting to learn the language. And liking it so far!
И согодня добавил: Have a look at the current state of the repo,any suggestions are highly appreciated,even if it's my first approach to Nemerle

Так что я бы не судил его строго
Re[19]: Недостатки Nemerle
От: WolfHound  
Дата: 15.07.12 06:43
Оценка: +1
Здравствуйте, VoidEx, Вы писали:

VE>Прекращай телепатировать, меня WolfHound спросил, я ответил. Ответ вас не устроил и вы теперь убеждаете меня, что я не разобрался, так ещё и ищу основание для того, чтобы не разбираться. У вас уже совсем евангелизм способность читать поел.

И твой ответ содержал 0 аргументов.
И все твои последующие сообщения тоже не содержат ни одного аргумента.
Я, честно говоря, вообще не помню твоих сообщений с содержанием по существу. А не трёп с кучей голословных утверждений.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: Недостатки Nemerle
От: hi_octane Беларусь  
Дата: 15.07.12 09:34
Оценка:
VE>DSL вон и на C++ пишут. Выглядит это, конечно, уродски, но ставить знак равенства между DSL и макросами несколько ошибочно.

Считается что нужно иметь очень развитый язык, на котором можно написать любую программу. Но каждый раз когда пишется какая-то программа, реально нужно только то что выражает уникальную логику присущую только этой программе. Утрированно — допустим я пишу математическую функцию, в которой используются только *,+, sin(x). И у меня есть реализация этих операторов на макросах, которая пихает это всё в GPU. Сможешь тут отделить макросы от DSL?

Разделение DSL/макросы это просто привычка, вызванная тем что сначала появились некие зашитые в компилятор "типы, функции, операцации, операторы, и т.п.", а понимание того что они все являются только способами переписывания кода из одной формы в другую пришло сильно позже. Вот макросы и есть переписывание кода из одной формы в другую в чистом виде. Что тогда остаётся в программе кроме макросов и типов?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.