Здравствуйте, Сергей Туленцев, Вы писали:
СТ>Угу, как делегаты.
О как. Прям интересно, что это сподвигло Хейлсберга на такое решение. Чем плохо было бы сделать как в том же F# — тип FastFunc<TRet, TArg>, FastFunc2<TRet, TArg1, TArg2> (ну, примерно так, точно не помню) с методом Invoke? Лямбде-то мультикаст зачем?
Здравствуйте, Schade, Вы писали:
S>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>Угу, как делегаты. S>О как. Прям интересно, что это сподвигло Хейлсберга на такое решение. Чем плохо было бы сделать как в том же F# — тип FastFunc<TRet, TArg>, FastFunc2<TRet, TArg1, TArg2> (ну, примерно так, точно не помню) с методом Invoke? Лямбде-то мультикаст зачем?
Я так полагаю, что для бесшовного интегрирования их в язык. Чтобы, напримеер, в функцию SomeCollection.Find(Predicate<T> predicate) можно было передавать лямбду, записав её по месту. Не скажу в каком языке это реализовано как кучка абстрактных джереник классов. Там же и типы функциональных сущностей объявляются по месту (не надо объявлять заранее тип делегата, как в сишарпе). Это же влечет за собой бонус. Если сигнатура одинакова — сущности совместимы. А в сишарпе разные типы делегатов с одинаковой сигнатурой — несовместимы.
Эээ, про что это я? Ах да, "почему так, а не эдак"? Ну, видимо, уже необходимость совместимости дает о себе знать.
Здравствуйте, Schade, Вы писали:
СТ>>Угу, как делегаты. S>О как. Прям интересно, что это сподвигло Хейлсберга на такое решение. Чем плохо было бы сделать как в том же F# — тип FastFunc<TRet, TArg>, FastFunc2<TRet, TArg1, TArg2> (ну, примерно так, точно не помню) с методом Invoke? Лямбде-то мультикаст зачем?
А замыкания как там тогда делаются? Или их там нет?
Здравствуйте, GlebZ, Вы писали:
GZ>А замыкания как там тогда делаются? Или их там нет?
Их не может не есть
Деталей, увы, не помню — на работе компилятора и Рефлектора нет, но вроде бы FastFunc — абстрактный тип, а для замыканий компилятор генерирует его наследника
Здравствуйте, eao197, Вы писали:
E>А теперь к пропаганде добавился еще и извечный русский плач: "Вот были бы у нас деньги, вот мы бы... тогда бы...".
Насколько я помню речь была совсем о другом, о том, что если бы были деньги просто процесс пошел бы намного быстрее. А так процесс ведь идет полным ходом, никто не плачет, не плакал и не собирается плакать.
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Здравствуйте, Kisloid, Вы писали:
K>Здравствуйте, eao197, Вы писали:
E>>А теперь к пропаганде добавился еще и извечный русский плач: "Вот были бы у нас деньги, вот мы бы... тогда бы...".
K>Насколько я помню речь была совсем о другом, о том, что если бы были деньги просто процесс пошел бы намного быстрее. А так процесс ведь идет полным ходом, никто не плачет, не плакал и не собирается плакать.
Спонсируй разработку (хватит где-то .5 мегабакса) и я тебе покажу, что ты не прав.
(мы бы... тогда бы...)
На доводку Немерла до состояния полного конкурента скажем C# нужно не менее $500 000 и год времени. Денег этих у меня нет. Спонсоров тоже на горизонте нет.
(вот были бы у нас...).
Да, это не плач. Это как-то по другому называется. Только термина подобрать не могу.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>Спонсируй разработку (хватит где-то .5 мегабакса) и я тебе покажу, что ты не прав.
E>(мы бы... тогда бы...) E>
E>На доводку Немерла до состояния полного конкурента скажем C# нужно не менее $500 000 и год времени. Денег этих у меня нет. Спонсоров тоже на горизонте нет.
E>(вот были бы у нас...). E>Да, это не плач. Это как-то по другому называется. Только термина подобрать не могу.
Я могу сказать, как называется, то чем ты сейчас занимаешься, вырыванием фраз из контекста.
... << RSDN@Home 1.2.0 alpha rev. 786>>
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
E>>Спонсируй разработку (хватит где-то .5 мегабакса) и я тебе покажу, что ты не прав.
E>>(мы бы... тогда бы...) E>>
E>>На доводку Немерла до состояния полного конкурента скажем C# нужно не менее $500 000 и год времени. Денег этих у меня нет. Спонсоров тоже на горизонте нет.
E>>(вот были бы у нас...). E>>Да, это не плач. Это как-то по другому называется. Только термина подобрать не могу.
K>Я могу сказать, как называется, то чем ты сейчас занимаешься, вырыванием фраз из контекста.
Я дал ссылку на исходное сообщение и ты сам можешь убедиться, что смысл данных фраз совершенно не изменился при их изъятии. И в последних прочитанных мной сообщених VladD2 о судьбе Nemerle так и сквозит: "крут Nermele немеряно, но чтобы задавить C# нужно бабло, которого нет, а нашлось бы ну точно бы задавили, а без бабла хреново".
Ну так вот читать такое после тех хвалебных од, пропетых VladD2 языку Nemerle, с агитацией миграции на этот язык, с развешиванием ярлыков тем, кто не разделял и не разделяет восторгов по поводу этого языка -- это лично мне напоминает анекдот: "У соседа корова сдохла -- пустячек, а приятно". А собственно говоря, о чем раньше думали? Сейчас время такое, компиляторы бесплатно раздаются, всеобщий крен в OpenSource и commodity software. Имхо, очень тяжелые времена для тех, кто хочет на средствах разработки зарабатывать. Хотите за деньги свой язык развивать -- ищите инвесторов. Не можете найти -- ну так и скажите, что мол не можем никому впарить такую крутую штуку. Не хотите искать -- OpenSource перед вами, во всей красе, со всеми издержками и бенефитами. Но тогда и не нужно про бабло заикаться. Суммы конкретные озвучивать, обещать какой-то конкурентный уровень при наличии этих сумм.
Вот об этом-то я и говорю, что смешно это слышать: были бы деньги, был бы продукт не хуже чем.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, FallenGameR, Вы писали:
FGR>>Как считаете, каково будущее .NET функциональных языков типа Nemerle / F# ?
N>У F# — наверняка большое, потому что MS дал бабло, и продолжает набирать в эту команду очень талантливых людей. А как известно, бабло побеждает зло.
Дело тут не только в деньгах. Наблюдаю за F# давно, коллега один из соавторов книги Expert F#. Мои личные ошущения -- Don Syme первый известный мне представитель академической среды, который смог ПРОДАТЬ свой язык. Ресерчеров там полно, и полно языков не хуже F#, тот же Haskell, но именно F# пойдет мэйнстрим. Полагаю политика тут тоже решила, т.к. Don Syme работал с Хейлсбергом одно время.
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Дело тут не только в деньгах. Наблюдаю за F# давно, коллега один из соавторов книги Expert F#. Мои личные ошущения -- Don Syme первый известный мне представитель академической среды, который смог ПРОДАТЬ свой язык. Ресерчеров там полно, и полно языков не хуже F#, тот же Haskell, но именно F# пойдет мэйнстрим.
Его туда будут пихать — возможно. Он там задержится — не уверен. До тех пор пока "мэйнстрим" будет "опираться" на множество дешёвой раб.силы средней квалификации, нежели будет требовать более высокую квалификацию, пусть даже путём удорожания и уменьшения количества этой самой раб.силы.
Здравствуйте, cl-user, Вы писали:
CU>Его туда будут пихать — возможно. Он там задержится — не уверен. До тех пор пока "мэйнстрим" будет "опираться" на множество дешёвой раб.силы средней квалификации, нежели будет требовать более высокую квалификацию, пусть даже путём удорожания и уменьшения количества этой самой раб.силы.
Пока вроде мейнстрим-бизнес успешно хавает кучу рабочей силы самой различной квалификации и добавки просит. Думаю, что если ограничить его диету только высококвалифицированной, то он похудеет.
Здравствуйте, Delight, Вы писали:
D>Пока вроде мейнстрим-бизнес успешно хавает кучу рабочей силы самой различной квалификации и добавки просит. Думаю, что если ограничить его диету только высококвалифицированной, то он похудеет.
Есть надежда, что "мейнстрим-бизнес" могут "попросить" (тем или иным способом) изменить своё отношение к собственной продукции, в результате чего "средняя квалификация" (да-да, по больничке) начнёт таки расти. Пусть даже и за счёт некоторого похудания...
CU>Его туда будут пихать — возможно. Он там задержится — не уверен. До тех пор пока "мэйнстрим" будет "опираться" на множество дешёвой раб.силы средней квалификации, нежели будет требовать более высокую квалификацию, пусть даже путём удорожания и уменьшения количества этой самой раб.силы.
Ну на самом деле мир вокруг нас становится сложнее Поэтому раб сила либо вымрет либо умные дядьки сделают удобные средства для решения более сложных задач. Эра параллельных вычислений вот она, на пороге. Не знаю почему в MS не обращают внимание на Эрланг, но вся эта суета из за функциональщины -- сделать параллельное программирование проще. И то, что мы имеем сейчас, все эти мьютексы с семафорами, эта псевдо-параллельность и многоядерность (как думаете, виста поддерживает многоядерность?) -- уже отмирает. А новой четкой концепции до сих мор МС не предложила (и Хейлсбер в этом открыто признается по сути)
Здравствуйте, Schade, Вы писали:
S>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>Угу, как делегаты. S>О как. Прям интересно, что это сподвигло Хейлсберга на такое решение. Чем плохо было бы сделать как в том же F# — тип FastFunc<TRet, TArg>, FastFunc2<TRet, TArg1, TArg2> (ну, примерно так, точно не помню) с методом Invoke? Лямбде-то мультикаст зачем?
Посмотрите рефлектором код делегатов. Увидите что делегаты обрабатываются рантаймом, там даже специальная проверка есть на обязательное наследование от мультикаста, прямо в коде class loader'a. Посему избавление от мультикаста -- значит нужно менять код CLR, а на это никто сейчас не пойдет.
Здравствуйте, Gaperton, Вы писали:
G>Здравствуйте, lemmure, Вы писали:
L>>В том форуме несколько пользователей (в том числе и я) написали сообщения, которые потом удалили. G>Вероятно, это дело рук тайной секты Немерлистов-фундаменталистов. Ходят слухи, что именно они замешаны в удалении комментов, и, бывает, даже банят людей за критику Немерле.
Здравствуйте, cl-user, Вы писали:
CU>Есть надежда, что "мейнстрим-бизнес" могут "попросить" (тем или иным способом) изменить своё отношение к собственной продукции, в результате чего "средняя квалификация" (да-да, по больничке) начнёт таки расти. Пусть даже и за счёт некоторого похудания...
Мне это представляется проще: умные улучшают рабочую среду для тех, кто попроще. Порог вхождения в большинство сфер постоянно падает и там где раньше требовались "гуры", теперь активно роятся "пионэры". Даже умники сильно выигрывают от различных удобностей. Единственный вариант для повышения квалификации — это значительно поднять планку, что противоречит общей тенденции.
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Посмотрите рефлектором код делегатов. Увидите что делегаты обрабатываются рантаймом, там даже специальная проверка есть на обязательное наследование от мультикаста, прямо в коде class loader'a. Посему избавление от мультикаста -- значит нужно менять код CLR, а на это никто сейчас не пойдет.
Ну я как бы немножко не о том говорил. Сам по себе делегат — мало того что довольно тормозная конструкция, так еще и с такой неприятной особенностью, что разные типы делегатов с одинаковой сигнатурой несовместимы между собой.
И, в общем-то, не обязательно, например, лямбда-выражение реализовывать как делегат, кроме случаев, когда нужно передать это выражение в функцию, принимающую именно делегат. Компилятору все карты в руки — разрулить это. Хотя, наверное, без введения в язык (CLR трогать не обязательно) "честного" функционального типа это невозможно, а к этому C# team, судя по всему, морально не готова
Здравствуйте, Schade, Вы писали:
S>Ну я как бы немножко не о том говорил. Сам по себе делегат — мало того что довольно тормозная конструкция, так еще и с такой неприятной особенностью, что разные типы делегатов с одинаковой сигнатурой несовместимы между собой.
И, в общем-то, не обязательно, например, лямбда-выражение реализовывать как делегат, кроме случаев, когда нужно передать это выражение в функцию, принимающую именно делегат. Компилятору все карты в руки — разрулить это. Хотя, наверное, без введения в язык (CLR трогать не обязательно) "честного" функционального типа это невозможно, а к этому C# team, судя по всему, морально не готова
Немножко не так. Лямбда на уровне CLR — функциональный объект. Но перед применением он оборачивается в делегат. Одна и та же лямбда может быть использована для нескольких делегатов. А делегат — это палка о двух концах. Прежде всего он типобезопасен. CLR — не доверяет языкам верхнего уровня и обеспечивает типобезопасность сам. Поэтому, либо изгаляться и делать самостоятельный функциональный тип с обобщениями, либо делегаты. Но чистую ссылку на функцию как в unmanaged где есть доверие языку — такое невозможно.
Здравствуйте, Delight, Вы писали:
D> Порог вхождения в большинство сфер постоянно падает и там где раньше требовались "гуры", теперь активно роятся "пионэры".