Re[10]: Вопрос к Vlad2: Nemerle & R#
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 27.03.06 02:50
Оценка: 18 (1) :)
IT,

IT>Кстати, мне ужасно не нравится его название. Давай обсудим это


Прошу прощения за оффтоп.

What does "Nemerle" mean?

It is inspired by a name of mage Nemmerle from book of Ursula K. Le Guin "A Wizard of Earthsea" (spelling with a single 'm' is a design decision )


А этот маг, был молодцом, например оживил ученика:

...Коснувшись серебристым наконечником посоха сначала груди Геда, потом его губ, Неммерле что-то прошептал. Гед вздрогнул и глубоко вздохнул. Старый маг поднял свой посох, затем поставил его на землю, сложил на рукояти руки и опустил на них голову. У него не осталось сил стоять прямо.


...при этом пожертвовав собой:

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


А птичка на эмблеме, как я понимаю, это ворон мага:

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


Вроде бы с названием всё в порядке... А в остальном поживём-увидим
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[3]: Вопрос к Vlad2: Nemerle & R#
От: ie Россия http://ziez.blogspot.com/
Дата: 27.03.06 03:27
Оценка: -1 :)
Здравствуйте, eao197, Вы писали:

E>

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

E>Re: плохой язык C++ :)
Автор: eao197
Дата: 10.03.06


E>Не страшно, что подобная мультипарадигменность в Nemerle приведет к таким же последствиям, как в C++?


Мультипарадигменность вряд ли, а вот макросы приведут, зуб даю. История произошедшая в пятницу.
Конец рабочей недели, работать естественно уже припарило. Завязался разговор в котором в один прекрасный момент обсуждение перешло на всевозможные ЯП в том числе и на Немерле. Так как всем отделом пишем на C#, простенький код на Nemerle почти ни у кого затруднения не вызвал и уже через 10-20 минут исследований макросов одним из коллег, по ICQ полетел пример программы:

    def x = Parse(ReadLine());
    def y = Parse(ReadLine());

    def nod (x,y)
    {
        def nod2 (x,y) 
        {
            def p = (x,y);
            match (p)
            {
                | (0,y) => y
                | (1,_) => 1
                | _ => nod2(y%x,x)
            }
        }
        preved
            kakdila (x < y) zachet nod2(x,y) nizachet nod2(y,x);
        medved
    }

    voutput($"НОД($x, $y) == $(nod(x,y))");


P.S. за падонковщину просьба не банить, просто вот так вот дурачимся
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Превратим окружающую нас среду в воскресенье.
Re[11]: Вопрос к Vlad2: Nemerle & R#
От: RoloTomasi Смерть хохлопидарам.
Дата: 27.03.06 04:21
Оценка:
Здравствуйте, igna, Вы писали:

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


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


I>

I>

I>template<int m1, int l1, int t1, int m2, int l2, int t2>
I>Physical<m1+m2, l1+l2, t1+t2> operator*(Physical<m1, l1, t1> lhs,
I>                                        Physical<m2, l2, t2> rhs)
I>{
I>    return Physical<m1+m2, l1+l2, t1+t2>::unit*lhs.value()*rhs.value();
I>}
I>


Врое понятно, только почему-то не компилится?
I am Jack's Bugged Code.
Re[4]: Вопрос к Vlad2: Nemerle & R#
От: IT Россия linq2db.com
Дата: 27.03.06 04:46
Оценка: +1 :)))
Здравствуйте, ie, Вы писали:

ie>P.S. за падонковщину просьба не банить, просто вот так вот дурачимся


Я такое же только гораздо покруче на плюсах видел. Там вообще одна подонковщина
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[15]: Вопрос к Vlad2: Nemerle & R#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.03.06 04:58
Оценка:
Здравствуйте, Дарней, Вы писали:

VD>>Склько программистов используют подобные приколы в своем коде?


Д>И еще актуальнее — сколько программистов сможет понять, как это работает и вообще зачем это нужно, без недельного копания в литературе?


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

И встречный вопрос: предложи запись на каком-нибудь языке этой конструкции, чтобы она была более понятна, обрабатывалась в compile-time и, в результате, работала с такой же скоростью, как в C++. А в том, что такие вещи нужны и используются можешь не сомневаться.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[14]: Вопрос к Vlad2: Nemerle & R#
От: FR  
Дата: 27.03.06 05:42
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Мне вот интересно если Мэерс не описал этот прикол, то сколько бы программистов доперли до него?


Достаточно того что он допер. Остальные могут использовать.

VD>Склько программистов используют подобные приколы в своем коде?


Обычно подобный код сидит в библиотеках, а тот же boost уже достаточно массово используется.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Вопрос к Vlad2: Nemerle & R#
От: FR  
Дата: 27.03.06 05:42
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>И еще актуальнее — сколько программистов сможет понять, как это работает и вообще зачем это нужно, без недельного копания в литературе?


Я думаю что больше чем программистов понимающих например функциональные языки.
Сложные вещи в C++ легко запрятываются в библиотеки и понимать все трюки чтобы ими пользоватся необходимости нет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Вопрос к Vlad2: Nemerle & R#
От: Дарней Россия  
Дата: 27.03.06 06:44
Оценка:
Здравствуйте, eao197, Вы писали:

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


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

E>И встречный вопрос: предложи запись на каком-нибудь языке этой конструкции, чтобы она была более понятна, обрабатывалась в compile-time и, в результате, работала с такой же скоростью, как в C++. А в том, что такие вещи нужны и используются можешь не сомневаться.


Ну во первых, первый критерий исключаем — никакой понятности здесь и близко не было. А во вторых — насколько много таких задач, где оба этих критерия жизненно необходимы?
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[16]: Вопрос к Vlad2: Nemerle & R#
От: Дарней Россия  
Дата: 27.03.06 06:44
Оценка: +1
Здравствуйте, FR, Вы писали:

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


ну во первых — далеко не факт
во вторых, это (пока что) более востребовано

FR>Сложные вещи в C++ легко запрятываются в библиотеки и понимать все трюки чтобы ими пользоватся необходимости нет.


Ага. А потом кодеры сидят и тихо офигевают, глядя на сообщение об ошибке длиной в 5 килобайт. Знаем, видели.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[17]: Вопрос к Vlad2: Nemerle & R#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.03.06 07:01
Оценка: -1
Здравствуйте, Дарней, Вы писали:

E>>И встречный вопрос: предложи запись на каком-нибудь языке этой конструкции, чтобы она была более понятна, обрабатывалась в compile-time и, в результате, работала с такой же скоростью, как в C++. А в том, что такие вещи нужны и используются можешь не сомневаться.


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


Ты уходишь от проблемы. Сколько бы ни была задача маловероятна и редка на практике, если лично тебе или лично мне придется ее решать (это будет нам выгодно), то решать ее придется. И областей, где важна скорость и эффективность не так уж мало: вычисления (предсказания погоды, расчет прочности и износостойкости, моделирование тектонических и геологических процессов, статистика), системы реального времени с необходимостью проведения больших вычислений (радиолокация), системное ПО (СУБД, web-сервера), телекоммуникации (высокоскоростные каналы) и много еще о чем я не знаю...
И понятность там, кстати, была вполне достаточная. Трехэтажного шаблонного метапрограммирования там уж точно не было.

Еще раз: приведи более понятную запись, которая бы не давала overhead-а в run-time (т.е. compile-time обработка) и генерировала бы высокоэффективный код.

Ну и приводившиеся в форумах примеры шаблонов со скалярными параметрами:
Re[12]: Вопрос к Vlad2: Nemerle &amp; R#
Автор: WolfHound
Дата: 25.03.06

Re[40]: плохой язык …
Автор: eao197
Дата: 23.03.06

Re[7]: Compile-time вычисления: а оно вообще надо?
Автор: Dmi_3
Дата: 26.10.05
(пример с классом random).
Обеспечение семантического контроля над размерностями станда...
Автор: CrystaX
Дата: 21.11.05


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[14]: Вопрос к Vlad2: Nemerle & R#
От: igna Россия  
Дата: 27.03.06 07:17
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

VK>А вообще ни C#, ни Nemerle не конкуренты C++ в том классе задач, где нужны подобные возможности. Ни "zero runtime cost", ни "производительность любой ценой", ни тем более "optimize prematurely!" пожалуй не является девизом ни первого, ни второго языка.



Compile-time проверка размерностей не только производительней чем run-time, но и удобнее.


VK>Из "новых" языков пожалуй только D сможет соперничать с C++ в этом вопросе.



Особое спасибо за пример на D.
Re[15]: Вопрос к Vlad2: Nemerle & R#
От: igna Россия  
Дата: 27.03.06 07:24
Оценка: :)
Здравствуйте, Дарней, Вы писали:

Д>И еще актуальнее — сколько программистов сможет понять, как это работает и вообще зачем это нужно, без недельного копания в литературе?



Искренне, не преувеличивая скажу, что приблизительно 100% тех, кому проверка размерностей может быть полезной.
Re[18]: Вопрос к Vlad2: Nemerle & R#
От: Дарней Россия  
Дата: 27.03.06 07:42
Оценка:
Здравствуйте, eao197, Вы писали:

E>Ты уходишь от проблемы. Сколько бы ни была задача маловероятна и редка на практике, если лично тебе или лично мне придется ее решать (это будет нам выгодно), то решать ее придется. И областей, где важна скорость и эффективность не так уж мало: вычисления (предсказания погоды, расчет прочности и износостойкости, моделирование тектонических и геологических процессов, статистика),


Фортран

E>системы реального времени с необходимостью проведения больших вычислений (радиолокация), системное ПО (СУБД, web-сервера), телекоммуникации (высокоскоростные каналы) и много еще о чем я не знаю...


С, ассемблер, С++ (редко)

Напомню еще раз — не бывает универсальных инструментов. А если кто-то говорит, что некий инструмент решает все проблемы одинаково хорошо — значит, на самом деле он решает все эти проблемы одинаково плохо.
Если передо мной возникнет такая задача, как ты описал — я буду решать ее тем инструментом, который окажется удобнее всего. Может быть, в определенных случаях таковым даже окажется С++
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[12]: Вопрос к Vlad2: Nemerle & R#
От: igna Россия  
Дата: 27.03.06 07:48
Оценка:
Здравствуйте, RoloTomasi, Вы писали:

RT>Врое понятно, только почему-то не компилится?



Шаблон класса Physical определен?
Re[19]: Вопрос к Vlad2: Nemerle & R#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.03.06 07:55
Оценка:
Здравствуйте, Дарней, Вы писали:

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


Нужно эти слова к Nemerle для очень горячих голов отнести.

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


Т.е., в данный момент ты не можешь привести более понятной и эффективной записи этого выражения на языке, отличном от C++?

Пока аналог был приведен только для D. Но D, к сожалению, пока столь же экзотичен, как и Nemerle. Будь это не так, я бы с радостью на него перешел из C++


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[19]: Вопрос к Vlad2: Nemerle & R#
От: Cyberax Марс  
Дата: 27.03.06 07:57
Оценка:
Дарней wrote:
> Фортран
Blitz++ с хорошим компилятором догоняет его. А OpenMP+MPI позволяют
намного проще писать параллельные программы.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[20]: Вопрос к Vlad2: Nemerle & R#
От: Дарней Россия  
Дата: 27.03.06 08:05
Оценка: +1
Здравствуйте, eao197, Вы писали:

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


E>Нужно эти слова к Nemerle для очень горячих голов отнести.


а никто такого и не говорил. Вполне очевидно например, что немерле не приспособлен для программирования на низком уровне, равно как и для RTS. Ты можешь привести примеры, где кто-то утверждал обратное?

E>Т.е., в данный момент ты не можешь привести более понятной и эффективной записи этого выражения на языке, отличном от C++?


Конкретно этой задачей я не интересовался, поэтому не скажу.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[19]: Вопрос к Vlad2: Nemerle & R#
От: igna Россия  
Дата: 27.03.06 08:12
Оценка:
Здравствуйте, Дарней, Вы писали:

E>>... областей, где важна скорость и эффективность не так уж мало: вычисления (предсказания погоды, расчет прочности и износостойкости, моделирование тектонических и геологических процессов, статистика),


Д>Фортран



Проверка размерностей в Фортране?


Напомню: В ответ не утверждение "использование констант в качестве параметров типов довольно бессмысленно", я привел пример, как при помощи "констант в качестве параметров типов" можно реализовать проверку размерностей. Далее последовало:

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


Д>... насколько много таких задач, где оба этих критерия жизненно необходимы?


Теперь правда имеем:

Д>Напомню еще раз — не бывает универсальных инструментов.

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

И это хорошо.
Re[21]: Вопрос к Vlad2: Nemerle & R#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.03.06 08:22
Оценка: +1 -1
Здравствуйте, Дарней, Вы писали:

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


E>>Нужно эти слова к Nemerle для очень горячих голов отнести.


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


Легко:
Re[12]: Вопрос к Vlad2: Nemerle &amp; R#
Автор: eao197
Дата: 25.03.06
(мой ответ VladD2)

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

Одинакого хорошо -- это, очень вероятно, на одинаково сером уровне.

и получил в ответ Re[13]: Вопрос к Vlad2: Nemerle &amp; R#
Автор: VladD2
Дата: 25.03.06

E>Одинакого хорошо -- это, очень вероятно, на одинаково сером уровне.

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


Ты конечно, можешь мне возразить, что там речи не было ни о низком уровне, ни о RTS. Но смысла это не изменит. К тому же обсуждавшийся фрагмент кода на C++ со скалярными параметрами шаблонов ни относился ни к низкому уровню, ни к RealTime.

E>>Т.е., в данный момент ты не можешь привести более понятной и эффективной записи этого выражения на языке, отличном от C++?


Д>Конкретно этой задачей я не интересовался, поэтому не скажу.


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

Не на Фортране же программировать в 21-м веке, ей богу.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[21]: Nemerle & RTS
От: SilverCloud Россия http://rodonist.wordpress.com
Дата: 27.03.06 08:26
Оценка: +1
Здравствуйте, Дарней, Вы писали:

Д>Вполне очевидно например, что немерле не приспособлен для программирования на низком уровне,

+
Д> равно как и для RTS.
А вот здесь поспорю. Пока не подходит. Это ограничение текущей реализации платформы, причём явно временное. Ни сам язык, ни спецификация .NET таких ограничений, вроде, не содержит.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.