Re[8]: [Голосование] Почему я не использую Nemerle
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 09.04.10 12:38
Оценка:
Здравствуйте, seregaa, Вы писали:

ANS>>найн. меня интересует этап выполнения макросов. то что в run-time можно использовать механизмы нижележащей платформы плюс рукописные "метки" и так понятно.


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


S>Если принять эти ограничения, то можно написать макроатрибут, превращающий такие ограниченные макросы из компайлтайм макросов в рантайм макросы. Будет проблема с доступностью апи компилятора, но для райнтайма можно сэмулировать его ограниченное подмножество.


Любая достаточно сложная программа /.../ содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp.

Десятое правило Гринспена
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[9]: [Голосование] Почему я не использую Nemerle
От: seregaa Ниоткуда http://blogtani.ru
Дата: 09.04.10 13:26
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>

ANS>Любая достаточно сложная программа /.../ содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp.

ANS>Десятое правило Гринспена

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

p.s. с оригинальной цитатой я возможно и соглашусь, но с такой обобщенной версией — нет.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[10]: [Голосование] Почему я не использую Nemerle
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 09.04.10 13:32
Оценка: :)
Здравствуйте, seregaa, Вы писали:

S> Вывод то какой?


Вывод я огласил — есть фатальный недостаток, который Влад продаёт как фатальное преимущество.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[10]: [Голосование] Почему я не использую Nemerle
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 09.04.10 13:34
Оценка:
Здравствуйте, seregaa, Вы писали:

S>p.s. с оригинальной цитатой я возможно и соглашусь, но с такой обобщенной версией — нет.


Кстати, а почему? Как на счет применения патерна "Интерпретатор"?
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[11]: [Голосование] Почему я не использую Nemerle
От: seregaa Ниоткуда http://blogtani.ru
Дата: 09.04.10 13:58
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Кстати, а почему? Как на счет применения патерна "Интерпретатор"?


Потому что можно поспорить с определением реализации как "неспецифированой, глючной и медленной".

Кстати, о какой программе мы говорим? О компиляторе Немерле? Или о гипотетической программе, написанной на Немерле?

Если первый случай, то возможно что CL больше подошел бы на роль языка реализации компилятора (кстати, как у него обстоят дела с интеропом с .net?), но это было бы стратегически неправильно — писать компилятор на языке, отличном от компилируемого. Тем более никто не гооворит о том, что немерле — самый подходщий кандидат для этого. И тем более неправильно распространять "недостатки" компилятора немерле на саму идею языка и все программы, на нем написанные.

А если речь о гипотетической программе, то причем здесь интерпретатор?
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[11]: [Голосование] Почему я не использую Nemerle
От: seregaa Ниоткуда http://blogtani.ru
Дата: 09.04.10 14:03
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Вывод я огласил — есть фатальный недостаток, который Влад продаёт как фатальное преимущество.

Этот "фатальный недостаток" обусловлен ограничениями платформы, а не "десятым правилом". Если тебе не нравится платформа, так и скажи, что на язык то наезжать ))
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[12]: [Голосование] Почему я не использую Nemerle
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 09.04.10 14:11
Оценка:
Здравствуйте, seregaa, Вы писали:

ANS>>Вывод я огласил — есть фатальный недостаток, который Влад продаёт как фатальное преимущество.

S>Этот "фатальный недостаток" обусловлен ограничениями платформы

нет!
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[13]: [Голосование] Почему я не использую Nemerle
От: seregaa Ниоткуда http://blogtani.ru
Дата: 09.04.10 14:15
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


ANS>>>Вывод я огласил — есть фатальный недостаток, который Влад продаёт как фатальное преимущество.

S>>Этот "фатальный недостаток" обусловлен ограничениями платформы

ANS>нет!


да!
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[4]: [Голосование] Почему я не использую Nemerle
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 09.04.10 16:17
Оценка: +1
Здравствуйте, FR, Вы писали:

V>>Языкам с легкой организацией REP-loop вроде как IDE не особо нужна, в отличие от статически типизируемых с выводом типов.

FR>Языки OCaml и Haskell очень жестко статически типизированы и с выводом типов, при этом у обоих вполне нормальный REPL.

Забыл более похожий на Nemerle Scala — он тоже статически типизированный с выводом типов, и та-дам! с REPL-ом.
Re[5]: [Голосование] Почему я не использую Nemerle
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 09.04.10 16:25
Оценка: +1
Здравствуйте, VladD2, Вы писали:

FR>>Языки OCaml и Haskell очень жестко статически типизированы и с выводом типов, при этом у обоих вполне нормальный REPL.

VD>... и IDE качества ниже плинтуса. Собственно популярность этих языков тоже не блещет. А возраст у них куда старше.

А вот для Scala есть IDE выше плинтуса — и Eclipse и IDEA его поддерживают, а я пишу в vim-е. Есть мнение, что потребность в IDE возникает у определенных коммьюнити. Т.е. дело не в языке. Могу предположить, что если народ повалит с Java на Haskell, то создаст замечательную IDE на базе Eclipse.
Re[5]: [Голосование] Почему я не использую Nemerle
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 09.04.10 16:27
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Не знаю насчет OCaml, но у т.н. "интерпретатора" Haskell никакой он не нормальный. В окне непосредственного исполнения ты можешь использовать ограниченное подмножество языка. Все остальное надо оформлять в файл и вскармливать среде.


В REPL можно запускать только выражения. Задавать, скажем, типы нельзя
Re[6]: [Голосование] Почему я не использую Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.04.10 20:14
Оценка:
Здравствуйте, lomeo, Вы писали:

L>А вот для Scala есть IDE выше плинтуса — и Eclipse и IDEA его поддерживают, а я пишу в vim-е. Есть мнение, что потребность в IDE возникает у определенных коммьюнити. Т.е. дело не в языке. Могу предположить, что если народ повалит с Java на Haskell, то создаст замечательную IDE на базе Eclipse.


Возможно. Осталось дождаться этого счастливого момента.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: [Голосование] Почему я не использую Nemerle
От: vdimas Россия  
Дата: 10.04.10 01:45
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Что касается Nemerle, то, как я уже когда-то упоминал, у него фатальный недостаток — вся его машинерия работает только в compile-time.


А как иначе в строго-статически-типизируемом языке? Ты хоть понял что сказал?


ANS>Кстати, рефлексия хоть какая-то по макросам возможна? Или потребности и в такой колбасе нет?


ЗАЧЕМ? Буде нужен скриптовый язык (а твои намеки исключительно в эту сторону, даже если ты сам этого не осознаешь) — бери себе и спокойно хости в своей программе тот же JScript (.Net), и делай в рантайме чего хошь.
Re[6]: [Голосование] Почему я не использую Nemerle
От: vdimas Россия  
Дата: 11.04.10 07:53
Оценка:
Здравствуйте, lomeo, Вы писали:


L>В REPL можно запускать только выражения. Задавать, скажем, типы нельзя


Именно что... Обобщенное программирование в repl — это сложновато в реализации, потому как плохо понятно, что делать с уже инстанциированными типами при изменении их шаблонов.
Re[7]: [Голосование] Почему я не использую Nemerle
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 11.04.10 10:53
Оценка:
Здравствуйте, vdimas, Вы писали:

L>>В REPL можно запускать только выражения. Задавать, скажем, типы нельзя


V>Именно что... Обобщенное программирование в repl — это сложновато в реализации, потому как плохо понятно, что делать с уже инстанциированными типами при изменении их шаблонов.


Инстанциированных типов в Haskell нет, это не С++. Шаблонов тоже нет по той же причине. Или ты что-то другое имеешь в виду? Поясни, пожалуйста. На шаблоны в С++ скорее похожи typeclasses, хотя по сути это сахар для тех же алгебраических типов.
Re[8]: [Голосование] Почему я не использую Nemerle
От: vdimas Россия  
Дата: 12.04.10 02:18
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Инстанциированных типов в Haskell нет, это не С++.


Есть

L>Шаблонов тоже нет по той же причине.




L>Или ты что-то другое имеешь в виду? Поясни, пожалуйста.


List a

List — обычный обобщенный тип, шаблон в терминах С++, где a — тип-параметр.


L>На шаблоны в С++ скорее похожи typeclasses, хотя по сути это сахар для тех же алгебраических типов.


Не в ту степь.

------
Неожиданно от хаскелиста такое "мягко говоря"... Ты бы представлением библиотек Хаскеля поинтересовался.
Re[9]: [Голосование] Почему я не использую Nemerle
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 12.04.10 11:16
Оценка: +1
Здравствуйте, vdimas, Вы писали:

V>List — обычный обобщенный тип, шаблон в терминах С++, где a — тип-параметр.


Я давно не писал на С++. Поправь, если что не так. Для меня шаблон и инстанциирование шаблона — это скорее макрос и его применение, из которого рожаются типы. Недаром, шаблон в С++ должен подключаться исходником.

Тип "List a" в Haskell — не шаблон. Вот, например, у нас есть функция List a -> a -> a, которая возвращает, скажем, первый элемент списка или значение по умолчанию, представленное вторым параметром. В С++ да — нарожается куча функций. В Haskell — нет. Соответственно, говорить об инстанциировании нет смысла, так как его нет. А значит оно не может являться препятствием к заданию типов в GHCi.

В Haskell есть конкретизация типа (List Int), но она работает только в компайл-тайме, ничего не генерит, в отличие от инстанциирования шаблона, и нужна только для тайпчекера. Или ты думаешь, что для каждого конкретного использования генерится cвой объектный код?

Ну, или приведи пример, как можно чинить препятствия REPL-у в случае параметризованных типов. В Scala вон REPL есть, и параметризованные типы задавать там можно. И дальше посмотрим на что больше похож Haskell — на Scala или C++.

L>>На шаблоны в С++ скорее похожи typeclasses, хотя по сути это сахар для тех же алгебраических типов.

V>Не в ту степь.

Единственное, что нашёл схожего с шаблонами. Могу и подробнее.

V>Неожиданно от хаскелиста такое "мягко говоря"... Ты бы представлением библиотек Хаскеля поинтересовался.


Что такое "представление библиотек Хаскеля"?
Re[10]: [Голосование] Почему я не использую Nemerle
От: vdimas Россия  
Дата: 12.04.10 13:23
Оценка:
Здравствуйте, lomeo, Вы писали:

V>>List — обычный обобщенный тип, шаблон в терминах С++, где a — тип-параметр.


L>Я давно не писал на С++. Поправь, если что не так. Для меня шаблон и инстанциирование шаблона — это скорее макрос и его применение, из которого рожаются типы. Недаром, шаблон в С++ должен подключаться исходником.


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

L>Тип "List a" в Haskell — не шаблон. Вот, например, у нас есть функция List a -> a -> a, которая возвращает, скажем, первый элемент списка или значение по умолчанию, представленное вторым параметром. В С++ да — нарожается куча функций. В Haskell — нет. Соответственно, говорить об инстанциировании нет смысла, так как его нет. А значит оно не может являться препятствием к заданию типов в GHCi.


Мде... Вообще-то именно порождается функция для конкретного параметра a.

L>В Haskell есть конкретизация типа (List Int), но она работает только в компайл-тайме, ничего не генерит, в отличие от инстанциирования шаблона, и нужна только для тайпчекера.


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


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


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

L>Ну, или приведи пример, как можно чинить препятствия REPL-у в случае параметризованных типов. В Scala вон REPL есть, и параметризованные типы задавать там можно. И дальше посмотрим на что больше похож Haskell — на Scala или C++.


Ну или покажи мне хоть один интерпретатор Хаскеля, где можно определять типы в REPL. Мало ли кто на что похож...

L>>>На шаблоны в С++ скорее похожи typeclasses, хотя по сути это сахар для тех же алгебраических типов.

V>>Не в ту степь.

L>Единственное, что нашёл схожего с шаблонами. Могу и подробнее.


Это ближе к контрактам, что ортогонально обсуждаемому, хотя интересная фича сама по себе.

V>>Неожиданно от хаскелиста такое "мягко говоря"... Ты бы представлением библиотек Хаскеля поинтересовался.


L>Что такое "представление библиотек Хаскеля"?


Ну открой их каким-нить текстовым редактором да посмотри.
Re[11]: [Голосование] Почему я не использую Nemerle
От: FR  
Дата: 12.04.10 13:55
Оценка:
Здравствуйте, vdimas, Вы писали:


L>>Ну, или приведи пример, как можно чинить препятствия REPL-у в случае параметризованных типов. В Scala вон REPL есть, и параметризованные типы задавать там можно. И дальше посмотрим на что больше похож Haskell — на Scala или C++.


V>Ну или покажи мне хоть один интерпретатор Хаскеля, где можно определять типы в REPL. Мало ли кто на что похож...



У OCaml конечно система типов послабее Хаскельной, но те же параметризованные типы присутствуют, при этом в REPL можно спокойно задавать типы, и в библиотеках не текст а байт или нативный код.
Re[11]: [Голосование] Почему я не использую Nemerle
От: nikov США http://www.linkedin.com/in/nikov
Дата: 12.04.10 14:12
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Конечно, а если он в какой-то реализации совпадает, то лишь по той же причине, почему генерится одинаковый код для генериков или почему шаблонный код в С++ для разных типов "схлопывается" в один и тот же, если бинарные представления типов совпадают. Просто хочу сказать, что переиспользование или генерение идентичного бинарного кода — это внутренности реализации/оптимизации, а ты, как программист, должен считать, что имеешь каждый раз с независимо порожденным кодом из шаблона/обощенного типа/генерика для каждой конкретной комбинации типов-параметров.


Сколько вариантов бинарного кода порождается для такой функции (как должен считать я, как программист) ?
foo :: a -> b
foo x = foo [x]
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.