Re[20]: Nemerle через 5 лет - выстрелит или скончается?
От: hi_octane Беларусь  
Дата: 29.09.14 21:19
Оценка: 34 (2) +1
_>>запилить макрос для WinForms, оборачивающий каждый вызов к Control'у из метода вызываемого из Thread в Invoke/BeginInvoke. И такой же аналог для WPF через Dispatcher.
К>Есть очень веские причины, почему так не было сделано.
К>Возможен deadlock двух потоков, message loop может быть занят блокирующим вызовом, проблемы с COM apartments, проблемы с возвращаемым значением, и ещё вагон других.
Ты перечислил проблемы которые относятся к самим Invoke. Это аргумент против использования таких вызовов вообще. Но ни разу не аргумент против оборачивания в макросы именно этих вызовов если они всё-таки есть. Более того, столкнувшись с проблемой ты можешь поменять код макроса, и он будет сам проверять на InvokeRequired, следить за таймаутом, чтобы не зависнуть в блокирующем вызове совсем, и другими способами обойти проблемы. Т.е. код, который собственно лезет в UI, править не придётся + защита от случайного забывания вызвать Invoke. Profit.

К>В случае с foreach я таких тяжких последствий не вижу, он или работает или нет.

Да это пример был. Представь программирование на C# без foreach. Вот это ощущение что ты регулярно пишешь ненужные но обязательные из-за убогости языка куски кода у тебя будет каждый раз когда ты будешь садиться за C# после Nemerle. В C# нет foreach {} else {}, нет foreach(index, element), и т.д. и т.п. — отстутвие каждой такой фича по отдельности вроде как не смертельно. Но когда их нет всех вместе, а особенно нет возможности объявить свою, нужную один раз, но здесь и сейчас, получаешь незабываемое ощущение что убогость языка тебе программировать реально мешает
Re[4]: Nemerle через 5 лет - выстрелит или скончается?
От: novitk США  
Дата: 29.09.14 21:20
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Причина взлёта скалы ровно одна — полнейшая убогость и застой Java. Даже нововведения в Java имеют странности
Автор: Klag
Дата: 29.09.14
. В такой ситуации любая адекватная замена будет подхвачена на ура. Без скалы вся JVM — кобол

Не любая, но в общем верно. Только не совсем понятно какое это имеет отношение к обсуждаемому в ветке вопросу "почему Немерле труп". Мой тезис такой: "в 2014 Немерле не нужен, потому что есть Скала которая лучше во всем". В 2009 это было не так.

_>Ровно таже проблема у C++ — дикая перегруженность синтаксиса и груз обратной совместимости с одной стороны, и никакого выигрыша за эту перегруженность с другой. Именно поэтому все с таким энтузиазмом подхватывают очередную замену C++, будь то Go (можно сказать что уже не взлетело), или Rust (будем посмотреть, может реально что-то нормальное получится).

Это опять же оффтоп, но я придерживаюсь другого мнения. Просто новый язык для системного программирования сложнее интегрировать в экосистему, так как он лежит в фундаменте. Все сильно набравшее популярность последнее время(Python, Scala, Ruby, Clojure, Haskell, Erlang) явно не из этой серии.
Re[21]: Nemerle через 5 лет - выстрелит или скончается?
От: Константин Черногория  
Дата: 29.09.14 21:25
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Кода более чем в два раза меньше.

Убрал usings которые никто не читает, и каменты которые есть только в T4 версии.
T4 3437 байт, Nemerle 2237 байт. Нет, это не "более чем в два раза меньше".

К>>непонятного на Nemerle, со всякими def mods = Modifiers(tb.Attributes, [<[ WrapStaticMethods($(tb.ParsedTypeName), $(symbol : string)) ]>]);

К>>

WH>А ты хоть пытался разобраться?
Разобраться можно даже в скомпилированном коде. Вопрос в целосообразности тратить на это время.

К>>Интересно, с этими вот макросами отладчик дружит, как в случае T4?

WH>С макросами и отладчик и ИДЕ дружат отлично.
Ставлю breakpoint в этом вот макросе и нажимаю "Build project" — breakpoint сработает?
Re[19]: Nemerle через 5 лет - выстрелит или скончается?
От: bazis1 Канада  
Дата: 29.09.14 21:41
Оценка: 1 (1) +2
Здравствуйте, WolfHound, Вы писали:

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


B>>Я никогда не копипастю (ну кроме proof-of-concept кода, который пишется на один раз), я просто умею применять стандартные механизмы типа того же наследования, которые позволяют избавится от копипасты без перехода на новый язык. И от людей, рекламирующих новое "средство от копипасты" ожидаю наглядной демонстрации, чем их средство лучше стандартных.

WH> Нука покажи, как ты не будешь копипастить реализацию INotifyPropertyChanged.
Браво, наконец нашли хороший пример. Это шаг в правильном направлении, но одного этого примера мало. Если вы хотите успеха и популярности, вам надо:
1) Найти штук 10 таких примеров
2) Сделать так, чтобы ваш язык работал поверх C#. Т.е. чтобы я мог добавить какой-нибудь хитрый аттрибут в свою C#-программу, который C#-компилятор проигнорирует, потом Nemerle-компилятор его обработает и добавит в мою сборку пару классов/методов. Тогда я (абстрактный потенциальный пользователь):
а) буду знать что в случае проблем я могу всегда переписать руками бойлерплейт и вернуться к обычному C#. Страховка, если хотите.
б) не буду платить за то, чем не пользуюсь. Т.е. для задач, где мне комфортно использовать C# я буду использовать C#. А как только наткнусь на подобный ботлнек, возьму столько немерла, сколько мне нужно.
в) Написать несколько статей не в духе "об оптимальной реализации макросов, Тьюринг-полных на момент компиляции", а в стиле "вот эта фигня, которая на C# делается за 5 минут с нашей перделкой делается в один клик".
г) быть готовым к скептическим вопросам. Например, касательно INotifyPropertyChanged я бы поспорил, что:

1. Имплементация INotifyPropertyChanged лично у заняла меньше 15 минут суммарно за 5 лет разработки на C#. Переходить на новый язык для экономии 15 минут за 5 лет было бы довольно странно.
2. Есть продукты, которые это автоматизируют без риска перехода на новый язык.
3. Если меня одолеет непреодолимая тяга подрочить на фреймворки к экспериментаторству, то я сделаю обертку через Reflection.Emit, которая будет генерить классы-наследники, имплементирующие этот интерфейс, и создавать их через MyStubFactory.Create<MyClass>() наподобие того, как сделан Remoting.

Дополнение: пример с INotifyPropertyChanged был бы в 10 раз убедительней, будь он представлен в течение года после появления WPF. Когда мысль "блин, как же INotifyPropertyChanged достал" возникала в голове у многих людей, осваивающих этот фреймворк. Сейчас каждый эту проблему для себя решил. Кто-то, смирившись, кто-то, наняв кодера за $15/час, кто-то с помощью стороннего продукта, кто-то, написав свой костыль... Поэтому ищите применения среди новых и быстрорастущих технологий. Пример с потолка: язык высокого уровня, который может компилироваться как в .Net-овские сборки, так и в Dalvik VM bytecode для исполнения на Android. ВНЕЗАПНО куча людей, которых не устраивает Mono, будут заинтересованно тыкать палкой в ваш продукт.
Отредактировано 29.09.2014 22:10 bazis1 . Предыдущая версия .
Re[22]: Nemerle через 5 лет - выстрелит или скончается?
От: WolfHound  
Дата: 29.09.14 21:45
Оценка:
Здравствуйте, Константин, Вы писали:

К>T4 3437 байт, Nemerle 2237 байт. Нет, это не "более чем в два раза меньше".

Кручу, верчу запутать хочу... но даже так немерле всё равно значительно опережает.

К>Разобраться можно даже в скомпилированном коде. Вопрос в целосообразности тратить на это время.

Значит, не пытался.

WH>>С макросами и отладчик и ИДЕ дружат отлично.

К>Ставлю breakpoint в этом вот макросе и нажимаю "Build project" — breakpoint сработает?
Да. Если запустить сборку проекта под отладкой.
Ну или просто воткнуть в макрос
System.Diagnostics.Debug.Assert(false);

И присоединится студией, когда вылетит ассерт.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: Nemerle через 5 лет - выстрелит или скончается?
От: Константин Черногория  
Дата: 29.09.14 21:50
Оценка: -1
Здравствуйте, hi_octane, Вы писали:

_>Ты перечислил проблемы которые относятся к самим Invoke. Это аргумент против использования таких вызовов вообще.

Мы же оба понимаем, что невозможно их не использовать.

_>столкнувшись с проблемой ты можешь поменять код макроса, и он будет сам проверять на InvokeRequired

Это без макросов прекрасно делается, на Actions/Functions

_>и другими способами обойти проблемы

Почему ты решил, что обходить проблемы в данном случае должна реализация, а не тот кто вызывает?
Я вот наоборот считаю, что тот кто вызывает — поэтому не нужно прятать эту сложность от программиста.
UI не многопоточный, и абстракция что можно просто так взять и поменять UI из любого потока неизбежно обильно протечёт. Иначе бы кстати это встроили в .NET framework.

_>защита от случайного забывания вызвать Invoke.

Она и так есть — runtime бросает MethodAccessException, который элементарно чинится за 2 минуты.

А вот в результате неправильного использования твоего макроса будут странные зависания, исключения почти без call stack которые непонятно даже откуда прилетели, dead locks (их хоть понятно как чинить, debugger показывает что именно остановилось), и т.п.
А потом ты выяснишь, что некоторые методы класса Control не нужно маршалить в GUI поток, причём програмно об этом не узнаешь только документацию читать.
А потом у тебя будут несчисленные проблемы с third-party controls вроде Telerik.
А потом ты столкнёшься с тем, что некоторые API привязаны к потоку, поэтому не все автомагически промаршаленные методы корректно работают.
И т.д., и т.п.

К>>В случае с foreach я таких тяжких последствий не вижу, он или работает или нет.

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

_>Представь программирование на C# без foreach.

А шо такого?
foreach можно один раз реализовать через while(...) и Action<tElement> / Function<tElement, bool> для conditional остановки.
Как и разные "foreach(index, element)": forEach( this IEnumerable<tElement> seq, Action<int, tElment> act )
Re[22]: Nemerle через 5 лет - выстрелит или скончается?
От: hi_octane Беларусь  
Дата: 29.09.14 21:54
Оценка: 6 (1) +1
_>>Да потому что так явная убогость C#/T4 проявляется в полный рост.
К>Чудесно, только для продажи nemerle нужно не убогости C# выискивать, а продемонстрировать, для каких задач ему нет нормальной альтернативы.
Вот каждый раз когда ты пишешь кусок кода, который ты уже писал для идентичной задачи — ты столкнулся со случаем когда реальной альтернативы, кроме как написать этот кусок кода ещё раз, и в следующем файле ещё раз, у тебя нет.

К>В случае с сериализацией/десериализацией нормальные альтернативы есть.

К>Имел в виду reflection не на каком-то их этапов сборки, а в runtime.
Да ну нафиг. Runtime вообще появляются на свет только из-за отсутствия compile-time решений. Спроси у C++ников, они вон буст придумали, лишь бы в рантайм не ходить . И что там было насчёт применимости T4 для задач генерации кода? Ну чего-же проще-то? Взять поля, в одном методе сложить, в другом достать. Опять T4 оказался плохо применим? Я так и думал А уж задачи изменения кода, под конкретную ситуацию, я вообще не касаюсь. Посмотрим на Roslyn, может хоть там что-то приличное появится.

_>>В программировании можно всё, вопрос в том сколько ты потратишь человеко-часов в одном случае и сколько в другом.

К>Ну я вот не вижу преимущества в человеко-часах одного перед другим.
Ну раз уж ты за C#, открой историю форума, почитай споры C# vs Любой Другой Язык. Людям тогда прочно стоявшим на позиции "я в своём языке могу тоже самое, максимум на 2-3 строчки больше писать" — никто ничего доказать не мог. Они цепляются до последнего за свои if и goto, и всегда говорят что на 3-4 строчки больше, это ещё не повод чтобы менять язык. Но на больших проектах это выливается в огромную разницу. Сравни roslyn и nemerle, и прикинь что nemerle внезапно умеет не только себя компилировать но и сорцы на C#, прямо в своих проектах. И там, в этих сорцах C#, работает отладчик, автокомплит, подсветка. Сравни размеры команд работающих над тем и над другим, подумай затратах на то и на другое, о человеко-часах, может увидишь наблюдаемую разницу
Re[23]: Nemerle через 5 лет - выстрелит или скончается?
От: Константин Черногория  
Дата: 29.09.14 22:27
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Вот каждый раз когда ты пишешь кусок кода, который ты уже писал для идентичной задачи — ты столкнулся со случаем когда реальной альтернативы, кроме как написать этот кусок кода ещё раз, и в следующем файле ещё раз, у тебя нет.

Я этого не делаю: всегда можно что-то придумать (например generics, reflection, functional programming, на худой конец T4) и написать этот кусок только один раз.

К>>Имел в виду reflection не на каком-то их этапов сборки, а в runtime.

_>Runtime вообще появляются на свет только из-за отсутствия compile-time решений.
Только в очень узкой области так.
Куча задач вообще лучше подходит для интерпретируемых языков, в которых вообще нет компилятора, а только парсер и рантайм.
Причём C# со своими анонимными типами и dynamics заимствует некоторые вещи оттуда, и вовсе не из-за отсутствия compile-time решений.

_>Спроси у C++ников, они вон буст придумали, лишь бы в рантайм не ходить

Мне не надо ни у кого спрашивать, я сам много лет на C++ программировал. Буст придумывали не для этого.

_>И что там было насчёт применимости T4 для задач генерации кода?

Нормально применим, я использовал, когда было нужно.

_>Сравни размеры команд работающих над тем и над другим, подумай затратах на то и на другое, о человеко-часах, может увидишь наблюдаемую разницу

Разницу в том, что nemerle наколеночное поделие, а за рослиным стоит лидер индустрии разработки ПО?
Со всеми вытекающими обстоятельствами про качество реализации, качество и объем поддержки, маркетинг и обучение разработчиков?
Re[22]: Nemerle через 5 лет - выстрелит или скончается?
От: hi_octane Беларусь  
Дата: 29.09.14 22:31
Оценка: +1
_>>Ты перечислил проблемы которые относятся к самим Invoke. Это аргумент против использования таких вызовов вообще.
К>Мы же оба понимаем, что невозможно их не использовать.
Так это ты начал пугать тем что их лучше не использовать. Я-то понимаю, поэтому предпочитаю вызывать методы и не париться о том что там внутрях .Invoke. Или ты против Remoting/WCF, ведь у них там тоже под капотом не прямой вызов объекта?

_>>столкнувшись с проблемой ты можешь поменять код макроса, и он будет сам проверять на InvokeRequired

К>Это без макросов прекрасно делается, на Actions/Functions
Ага. Отличное решение. Главное никому не забывать, и чтоб не надоедало.

_>>и другими способами обойти проблемы

К>Почему ты решил, что обходить проблемы в данном случае должна реализация, а не тот кто вызывает?
К>Я вот наоборот считаю, что тот кто вызывает — поэтому не нужно прятать эту сложность от программиста.
Потому что иногда оказываюсь в ситуации когда профи пилят непрошибаемое нутро, а простые задачи оставляют людям с квалификацией поменьше. И этих людей неплохо бы и в выборе методов решения ограничить, и соломку где надо подстелить.

К>UI не многопоточный, и абстракция что можно просто так взять и поменять UI из любого потока неизбежно обильно протечёт. Иначе бы кстати это встроили в .NET framework.

Так я не общее решение для .NET Framework продвигаю, а удобство использования конкретных решений под конкретную ситуацию. Наш проект и нам решать, удобно иметь такую обёртку или нет. В другом проекте обойдёмся, главное что возможность выбора в случае Nemerle есть, а в случае C# — Action/Func, отличный выбор

_>>защита от случайного забывания вызвать Invoke.

К>Она и так есть — runtime бросает MethodAccessException, который элементарно чинится за 2 минуты.
Ага. Windows 7, реальный проект, вместо исключений Aero тупо слетал у клиентов раз в неделю, всего-то забыли где-то Invoke. Вот я за язык в котором это невозможно. А ты видимо за сложность.

К>А вот в результате неправильного использования твоего макроса будут странные зависания, исключения почти без call stack которые непонятно даже откуда прилетели, dead locks (их хоть понятно как чинить, debugger показывает что именно остановилось), и т.п.

К>А потом ты выяснишь, что некоторые методы класса Control не нужно маршалить в GUI поток, причём програмно об этом не узнаешь только документацию читать.
К>А потом у тебя будут несчисленные проблемы с third-party controls вроде Telerik.
К>А потом ты столкнёшься с тем, что некоторые API привязаны к потоку, поэтому не все автомагически промаршаленные методы корректно работают.
К>И т.д., и т.п.
Это сейчас мысленный эксперимент был? Так вот реальный опыт показывает что проблем уж точно меньше чем у async/await которые умеют показать что Scheduler задач не осталось, а прога при этом тупо висит, ждёт чего-то. Например макрос на этапе компиляции может вообще ничего не вызывать, а только проверять что его вызывают из класса, которому к GUI обращаться по-определению запрещено, и валить компиляцию. Может предложишь решение на Action/Func для такого случая?

К>>>В случае с foreach я таких тяжких последствий не вижу, он или работает или нет.

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

_>>Представь программирование на C# без foreach.

К>А шо такого?
К>foreach можно один раз реализовать через while(...) и Action<tElement> / Function<tElement, bool> для conditional остановки.
К>Как и разные "foreach(index, element)": forEach( this IEnumerable<tElement> seq, Action<int, tElment> act )
Да ничего. Тут главное что ты представил — без любых фич можно жить, но подтормаживать они тебя будут каждая по чуть-чуть и все вместе вполне конкретно.
Re[12]: Nemerle через 5 лет - выстрелит или скончается?
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.09.14 22:41
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>В преимущества C# нужно добавить наличие полноценных тулов почти на все случаи жизни.


Добавь. Только исходная мысль была о том, что даже их наличие у Шарпа не достаточно чтобы его предпочесть.

I>Раз тебе не хватает только рекламы, то это значит что язык готов для индустрии. Подготовка специалистов "на вырост" это важный аспект индустрии. Покажи как этот аспект работает в Немерле. На этот раз очень желательно без аргументов в духе "не то мироустройство"


Мне еще и этим заняться? Вот раз ты в этом знаешь толк, то и помог бы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Nemerle через 5 лет - выстрелит или скончается?
От: hi_octane Беларусь  
Дата: 29.09.14 22:44
Оценка:
_>>Вот каждый раз когда ты пишешь кусок кода, который ты уже писал для идентичной задачи — ты столкнулся со случаем когда реальной альтернативы, кроме как написать этот кусок кода ещё раз, и в следующем файле ещё раз, у тебя нет.
К>Я этого не делаю: всегда можно что-то придумать (например generics, reflection, functional programming, на худой конец T4) и написать этот кусок только один раз.
foreach{} else{} — давай, придумывай

_>>Спроси у C++ников, они вон буст придумали, лишь бы в рантайм не ходить

К>Мне не надо ни у кого спрашивать, я сам много лет на C++ программировал. Буст придумывали не для этого.
Я тоже настоящий сварщик Но выбирая compile-time или runtime в C++ нужно иметь очень веские основания чтобы выбрать второе.

_>>И что там было насчёт применимости T4 для задач генерации кода?

К>Нормально применим, я использовал, когда было нужно.
Нормально применим только в одном случае — когда у тебя есть готовый источник на базе которого ты будешь генерировать код, и нет никакой необходимости трогать уже сущетсвующий код. Кому-то этого хватает, но с такими ограничениями заявлять что "Для генерации кода есть T4", слишком смело ИМХО.

_>>Сравни размеры команд работающих над тем и над другим, подумай затратах на то и на другое, о человеко-часах, может увидишь наблюдаемую разницу

К>Разницу в том, что nemerle наколеночное поделие, а за рослиным стоит лидер индустрии разработки ПО?
К>Со всеми вытекающими обстоятельствами про качество реализации, качество и объем поддержки, маркетинг и обучение разработчиков?
Смешались в кучу кони-люди А причём тут объём поддержки и обучение разработчиков? Ты кодовую базу сравнивал? На разницу в количестве фич умножал? Желаемую разницу в человеко-часах увидел?
Re[25]: Nemerle через 5 лет - выстрелит или скончается?
От: Константин Черногория  
Дата: 30.09.14 00:58
Оценка:
Здравствуйте, hi_octane, Вы писали:

К>>Я этого не делаю: всегда можно что-то придумать (например generics, reflection, functional programming, на худой конец T4) и написать этот кусок только один раз.

_>foreach{} else{} — давай, придумывай
Вот готовый http://www-jo.se/f.pfleger/.net-for-else но мне никогда не было нужно такого.

_>Я тоже настоящий сварщик Но выбирая compile-time или runtime в C++ нужно иметь очень веские основания чтобы выбрать второе.

В С++ конечно, но в C# уже не так однозначно, т.к. runtime намного более годный.

К>>Нормально применим, я использовал, когда было нужно.

_>Нормально применим только в одном случае — когда у тебя есть готовый источник на базе которого ты будешь генерировать код, и нет никакой необходимости трогать уже сущетсвующий код. Кому-то этого хватает, но с такими ограничениями заявлять что "Для генерации кода есть T4", слишком смело ИМХО.
Во-первых очень надуманное ограничение.
Если очень нужно, вполне можно использовать например CodeDOM.
Но нужно бывает редко, потому что рефлексия + функциональщина; я например могу по пальцам одной руки пересчитать написанные за карьеру T4 templates, а reflection постоянно использую для разного.

К>>Разницу в том, что nemerle наколеночное поделие, а за рослиным стоит лидер индустрии разработки ПО?

К>>Со всеми вытекающими обстоятельствами про качество реализации, качество и объем поддержки, маркетинг и обучение разработчиков?
_>А причём тут объём поддержки и обучение разработчиков?
При том, что продукт это не только исходный код который компилируется, это ещё и поддержка, и обучение пользователей, и сообщество.
Кстати про сообщество: на SO два вопроса с тегом nemerle. Для сравнения, там 500 вопросов с тегом clojure, 4000 вопросов с тегом scala, и 140’000 вопросов с тегом C#. Даже безотносительно вопроса «почему так мало», это говорит о том, что если у меня возникнут по нему вопросы, в мире найдутся очень немного людей, способных мне помочь.
Re[18]: Nemerle через 5 лет - выстрелит или скончается?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.14 02:03
Оценка:
Здравствуйте, bazis1, Вы писали:

VD>>Подробнее читай http://martinfowler.com/dsl.html

B>Опять ты соскакиваешь с темы и предлагаешь мне убить полдня, читая какой-то мутный талмуд. А конкретных примеров, имеющих отношение к Nemerle так и нет.

Извини, что предложил тебе набраться знаний. Тебе, конечно же, некогда. Ведь трясти надо.
  Скрытый текст
Решили как-то сравнить прапорщика с обезьяной. посадили их в две одинаковые комнаты с деревом и бананом на дереве. Обезьяна потрясла, потрясла дерево — банан не падает. видит палка в углу стоит, зацепила банан палкой, сидит и жрёт довольная.

Прапорщик же трясёт пальму трясёт, трясёт, трясёт. Час трясёт, два трясёт. Ему говорят: "товарищ прапорщик, ну вы вокруг посмотрите, подумайте немного.", на что тот отвечает: "Некогда думать! Трясти надо!"


Иди базарь про таргетинг и прочую муру, а сам тем временем "тряси".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 30.09.2014 2:11 VladD2 . Предыдущая версия .
Re[19]: Nemerle через 5 лет - выстрелит или скончается?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.14 02:08
Оценка: 12 (2) -2 :)
Здравствуйте, WolfHound, Вы писали:

WH> Нука покажи, как ты не будешь копипастить реализацию INotifyPropertyChanged.


Он языком больше работник. А на практике он просто говорит себе "так другого способа нет" и копипастит. Потом идет на форум и с пеной у рта рассказывает о своей крутости, таргетинге и том как на дженирках и наследовании все проблемы программирования решать.

Трепачь, короче.

Мартышка к старости слаба глазами стала;
А у людей она слыхала,
Что это зло еще не так большой руки:
Лишь стоит завести Очки.
Очков с полдюжины себе она достала;
Вертит Очками так и сяк:
То к темю их прижмет, то их на хвост нанижет,
То их понюхает, то их полижет;
Очки не действуют никак.
"Тьфу пропасть! — говорит она, — и тот дурак,
Кто слушает людских всех врак:
Всё про Очки лишь мне налгали;
А проку на-волос нет в них".
Мартышка тут с досады и с печали
О камень так хватила их,
Что только брызги засверкали.

___

К несчастью, то ж бывает у людей:
Как ни полезна вещь, — цены не зная ей,
Невежда про нее свой толк все к худу клонит;
А ежели невежда познатней,
Так он ее еще и гонит.

Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Nemerle через 5 лет - выстрелит или скончается?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.14 02:17
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Создание лямбды и её вызов ничтожны по сравнению с асинхронной операцией. Более того — ничтожны даже сравнивая со временем переключения контекста.


Во-первых, это это не так. Блокировки разные бывают. Например, spinlock-и.
Во-вторых, бямбда то создается в коде который полезную работу осуществляет, так что тормозится именно она. Тут еще умник предлагает через рефлексию автоматизацией заниматься. Вас послушать и компилируемый язык превратится в тормоз почище интерпретируемого.
В-третьих, выделение памяти влияет на все приложение, так как дает нагрузку на ЖЦ.
В-четвертрых, это только пример и ситуации в жизни бывает самые разные. Городить кучу лямбд для решения несвойственных им задач приведет к замусориванию кода и деградации производительности.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Nemerle через 5 лет - выстрелит или скончается?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.14 02:24
Оценка:
Здравствуйте, Константин, Вы писали:

VD>>Не очень то наглядно

К>Вкусовщина.

На одном примере еще можно поспорить. Когда вся программа такими "решениями" забита она превращается в говнокод.

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

К>В задачах, настолько критичных к производительности что "создание лямбды и ее вызов" это медленно, противопоказан не только C#, ещё весь .NET.

Не могу согласиться с подобным мнением. Примеров противоречащих ему масса. Например, код VS или ReSharper не могут себе позволить такую роскошь. В по началу понаписали кода с лямбдами, а потом специально сидели его вычищали, так как профайлинг показал, что он втыкает.

Ну, рассуждения детские какие-то. Типа пришел фанат ц++ и всем нос утер. Дотнет давно используется для кучи задач где производительность крайне важна. И терять ее на пустом месте нет никакого смысла. А уж использовать расточительство к ресурсам как оправдание для собственной отсталости — это вообще ни в какие ворота.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Nemerle через 5 лет - выстрелит или скончается?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.14 02:30
Оценка:
Здравствуйте, Константин, Вы писали:

К>Во-первых, добавление фич в язык это ж не бесплатно, например растёт сложность чтения кода.


Ну, да. Ну, да. Вместо:
await withLock( aLock, async () =>
{ 
    await something();
} );

Писать:
await lock (awaitLock)
  await something();

Так усложняет чтение кода...

К>Во-вторых, в тех случаях когда мне нужно генерировать C# код на этапе компиляции, в коробке со студией есть для этого T4 text templates.


Пойди сделай с его помощью тот же await lock. T4 — это примитивная форма метапрограммирования с кучей ограничений. Лучше чем ничего, но с макросами не сравнить по мощности.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Nemerle через 5 лет - выстрелит или скончается?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.14 02:31
Оценка:
Здравствуйте, s22, Вы писали:

s22>2. Часто надо не только генерировать код, а например дополнять или модифицировать.


Скорее встраивать в код на высокоуровневом языке. Ведь ДСЛ-и сами по себе редко бывают полезны. Для них нужен "клей" в виде языка общего назначения.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Nemerle через 5 лет - выстрелит или скончается?
От: bazis1 Канада  
Дата: 30.09.14 02:39
Оценка: +2 :)
Здравствуйте, VladD2, Вы писали:

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


WH>> Нука покажи, как ты не будешь копипастить реализацию INotifyPropertyChanged.


VD>Он языком больше работник. А на практике он просто говорит себе "так другого способа нет" и копипастит. Потом идет на форум и с пеной у рта рассказывает о своей крутости, таргетинге и том как на дженирках и наследовании все проблемы программирования решать.

Да-да-да, когда аргументы кончаются, мы переходим на личности и начинаем додумывать за собеседника. Интересно, почему все мелочные неудачники так похожи?

VD>Трепачь, короче.

Слушай, я человеку выше вполне конкретно ответил. Если у тебя баттхерт от того, что фигню, на которую ты потратил кучу времени, почти никто всерьез не воспринимает, то это твои личные проблемы и к обсуждаемой теме они отношения не имеют.
Re[20]: Nemerle через 5 лет - выстрелит или скончается?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.14 02:49
Оценка:
Здравствуйте, Константин, Вы писали:

К>Ну вы заменили 2 страницы понятного C# кода на полторы страницы непонятного на Nemerle, со всякими def mods = Modifiers(tb.Attributes, [<[ WrapStaticMethods($(tb.ParsedTypeName), $(symbol : string)) ]>]);


Он тебе непонятен только потому, что ты не потрудился АПИ изучить. Лично у меня в нем особо вопросов не возникло. Разве что кое что можно было по короче написать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.