VD>Это заблуждение может быть развеяно только на практике. Простой пример мы на Немерле 1 имели все что есть в C# 7.х еще 10 лет назад. А ресурсов у нас в 1000 раз меньше. И только благодаря макрам (и МП в общем) мы заполучили многие фичи.
То есть были async, await, ValueTask, static async Task<int> Main()
Странно, что проигнорировали
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>То есть были async, await, ValueTask, static async Task<int> Main()
Было еще круче. Было средство на которых они с полпинка делаются. Причем так так это библиотечное решение, то результат получается более гибкий.
Называется это решение Computation Expression macro. Оно не только async позволяет реализовать, но еще и локальные генераторы (yield внутри выражения):
def num = Enumerable.Range(-2, 7);
def sqrt : list[double] = comp list
{
foreach(n in num)
when(n >= 0)
yield Math.Sqrt(n);
}
S> Странно, что проигнорировали
Ничего странного. Пипл хвает пресс-релизы и ориентируется на брэнд.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>>То есть были async, await, ValueTask, static async Task<int> Main()
VD>Было еще круче. Было средство на которых они с полпинга делаются. Причем так так как это библиотечное решение, то результат получается более гибкий.
VD>Называется это решение Computation Expression macro. Оно не только async позволяет реализовать, но еще и локальные генераторы (yield внутри выражения): VD>
VD>def num = Enumerable.Range(-2, 7);
VD>def sqrt : list[double] = comp list
VD>{
VD> foreach(n in num)
VD> when(n >= 0)
VD> yield Math.Sqrt(n);
VD>}
VD>
S>> Странно, что проигнорировали
VD>Ничего странного. Пипл хвает пресс-релизы и ориентируется на брэнд.
а где здесь таски? И yield разве не конструкция .Net? Да на ней сделаны и async и, но там куча вещей для работы с пулом потоков.
Есть разница позволяет и реализовано.
Да и разве в немерле был ref readonly?
вот это нужные конструкции. Но это решение не на базе языка, а платформу.
Кстати в TypeScript поддержка await ов есть и в ES3. Там идет компиляция автомата в JS.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> а где здесь таски?
По ссылке то ходил? Или тебе конкретный объект Task<> нужен? Их, когда делали эту мару, еще не было. Но получилось даже лучше. По ссылке есть пример демонстрирющий переключение в GUI-потом из async-а:
yield — это ключевое слово. В Немерле — это макра.
S>Да на ней сделаны и async и, но там куча вещей для работы с пулом потоков.
Любишь ты мысли не правильно излагать. Не "на ней", а "сходным образом", это если ты хочешь сказать, что и итераторы, и асинки в шарпе сделаны через генерацию конечных автоматов. Но Немерле это не так. В Немерле макра сделана на основе монад.
S> Да и разве в немерле был ref readonly?
В немерле были макры, которыми можно сделать и это тоже.
S>вот это нужные конструкции. Но это решение не на базе языка, а платформу.
Я не знаю кому они нужны. Это оптимизации. А ими должен заниматься компилятор, а не человек. Я считаю, что это путь не туда. Ну, сделали — хорошо. Но мне это не нужно.
S>Кстати в TypeScript поддержка await ов есть и в ES3. Там идет компиляция автомата в JS.
Ну, вот и подумай что это если не просто сахар? А если это сахр, то на фиг его хардкодить в языке? Не лучше ли сделать универсальное решение, которое позволит реализовывать сахар в виде библиотек?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>> а где здесь таски?
VD>По ссылке то ходил? Или тебе конкретный объект Task<> нужен? Их, когда делали эту мару, еще не было. Но получилось даже лучше. По ссылке есть пример демонстрирющий переключение в GUI-потом из async-а:
А говоришь, что в Немерле было всё, что есть в C# 7.Х VD>
Влад я честно оочень уважительно отношусь к вашим разработкам. Прекрасно понимаю, сколько затрачено времени и сил.
Но данное народное творчество, ни в какое сравнение не идет с Тасками. Вот если бы вы по аналогии с TypeScript сделали
бы генерацию автомата, планировщика итд.
А так это небольшой сахар.
то, что ты написал делается без тасков
if (SynchronizationContext.Current == null)
SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext());
Sc = SynchronizationContext.Current;
var task = new WaitCallback (stateInfo=>
{
Thread.Sleep(5000);
Sc.Send(d => label1.Text = "success", null);
}
ThreadPool.QueueUserWorkItem(ThreadProc);
Как говорится почувствуйте разницу. S>>И yield разве не конструкция .Net?
VD>yield — это ключевое слово. В Немерле — это макра.
Угу только за кадром генерится автомат S>>Да на ней сделаны и async и, но там куча вещей для работы с пулом потоков.
VD>Любишь ты мысли не правильно излагать. Не "на ней", а "сходным образом", это если ты хочешь сказать, что и итераторы, и асинки в шарпе сделаны через генерацию конечных автоматов. Но Немерле это не так. В Немерле макра сделана на основе монад.
Насколько я помню, монада нужна для мутабельных значений.
S>> Да и разве в немерле был ref readonly?
VD>В немерле были макры, которыми можно сделать и это тоже.
Можно, только это все через одно место с оверхедом.
S>>вот это нужные конструкции. Но это решение не на базе языка, а платформу.
VD>Я не знаю кому они нужны. Это оптимизации. А ими должен заниматься компилятор, а не человек. Я считаю, что это путь не туда. Ну, сделали — хорошо. Но мне это не нужно.
Ну в скором времени с использованием .Net Native C# вытеснит достаточно приложений на C++. Для этого они и нужны.
S>>Кстати в TypeScript поддержка await ов есть и в ES3. Там идет компиляция автомата в JS.
VD>Ну, вот и подумай что это если не просто сахар? А если это сахр, то на фиг его хардкодить в языке? Не лучше ли сделать универсальное решение, которое позволит реализовывать сахар в виде библиотек?
Вот смотрим твой пример и мой. Какой проще?
Код для ES3 и ES 2017 будет один и тот же, и при этом более читабелен и прост.
Если же вы идете в натив, то как раз многим были бы удобны C# конструкции. Вам так или иначе нужно преобразовывать в C++, по аналогии с TypeScript в JS.
.Net Native тоже где так и поступает. Хотя и не уверен.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, VladD2, Вы писали:
VD>Присоединяйся и дело пойдет быстрее. В ближайших планах типизация немерла и шарпа, а так же замена кодогенерации с немерловой на собственную.
Тут есть одна небольшая проблема. Я, например, над языком бы поработал. Но вот вместе с тобой — ни при каких обстоятельствах.
Здравствуйте, CoderMonkey, Вы писали:
CM>Тут есть одна небольшая проблема. Я, например, над языком бы поработал. Но вот вместе с тобой — ни при каких обстоятельствах.
Чем же я тебе не угодил?
Со мной взаимодействует не мало народа. Еще никто не сказал, что я кому-то не помог или с кем-то был груб. Ты что-то там себе навыдумывал.
Собственно, если речь идет о каком-то твоем языке, то ты можешь заниматься им и без меня. Я могу только консультировать на счет того как и что сделать. Если речь о Nemerle 2 и расширяемом C#, то тут без кооперации никак не обойтись.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Чем же я тебе не угодил?
Ты таки бываешь сильно и беспричинно груб. Да и политические взгляды странноватые, мягко говоря. Но не будет про политику.
VD>Собственно, если речь идет о каком-то твоем языке, то ты можешь заниматься им и без меня. Я могу только консультировать на счет того как и что сделать. Если речь о Nemerle 2 и расширяемом C#, то тут без кооперации никак не обойтись.
Не думаю, что у .NET вообще есть будущее. Мелко-мягкий всё никак не может решиться — то ли трусы надевать, то ли крестик снимать. А винда, начиная с восьмерки — такое впечатление, что они сами себя пытаются в могилу загнать.
Сейчас скорее WebAssembly интересен. Или FPGA, но это совсем уж дальняя перспектива.
Здравствуйте, CoderMonkey, Вы писали:
CM>Ты таки бываешь сильно и беспричинно груб.
Серьезно? Можно хотя бы одну цитату из этого форума?
CM>Да и политические взгляды странноватые, мягко говоря. Но не будет про политику.
А причем тут политика то?
CM>Не думаю, что у .NET вообще есть будущее. Мелко-мягкий всё никак не может решиться — то ли трусы надевать, то ли крестик снимать. А винда, начиная с восьмерки — такое впечатление, что они сами себя пытаются в могилу загнать.
Как раз сейчас у МС появилась внятная политика. Они делают .Net Core как переносимую среду для веб-серверов. Рынок самый широкий из имеющегося. Ну, и Кзамарин для переносимых морд (для девайсов). Вполне себе рабочая иделогия позволяющая выжить компании даже при крахе Винды.
Но какой смысл спорить об МС? Можешь делать язык и для любой другой платформы.
CM>Сейчас скорее WebAssembly интересен. Или FPGA, но это совсем уж дальняя перспектива.
Дык, какие проблемы? Разбирайся в тонкостях этих платформ и делай бэкэнд для них.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Со мной взаимодействует не мало народа.
Странно, ты ж вечно плачешься что чуть не в одиночку всё тащишь, почти никто не помогает.
>Еще никто не сказал, что я кому-то не помог или с кем-то был груб. Ты что-то там себе навыдумывал.
Так ты поспрашивай тех, кто с тобой не хочет взаимодействовать Я вижу что ты много предлагаешь, но почти никто не соглашается
Здравствуйте, Ikemefula, Вы писали:
I>Странно, ты ж вечно плачешься что чуть не в одиночку всё тащишь, почти никто не помогает.
Дык одно дело горы кода писать другое, а другое взаимодействовать по каким-то вопросам. Вот ionoy, например, свой язык на Nitra сделал. Все это время я ему помогал как мог. Он тоже кое что помог в Nitra сделать. Но, к сожалению, не много. Трое ребят просто пробовали Нитру в действии. Все примеры языков сделаны ими.
I>Так ты поспрашивай тех, кто с тобой не хочет взаимодействовать
Вот сам и поспрашивай. Тут народу не мало. Ziaw, ionoy, ifle, NN...
I>Я вижу что ты много предлагаешь, но почти никто не соглашается
Если кто-то делает свой язык — то его дело, что он делает и что он предлагает. Я тут только консультантом по технологии выступают. Если кто-то хочет работать над Nitra или Nemerle, то тут придется делать то, что нужно для продукта, а не творчеством в свободном направлении заниматься.
К сожалению, те кто способен делать что-то сложное не имеют времени, так как заняты другой работой. А те кто неспособен, сотрясают воздух на форуме и еще нахамить/оскорбить пытаются.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Серьезно? Можно хотя бы одну цитату из этого форума?
Ой да ладно. Просто прими как факт, что немало людей считает тебя очень неприятной личностью.
VD>Как раз сейчас у МС появилась внятная политика. Они делают .Net Core как переносимую среду для веб-серверов. Рынок самый широкий из имеющегося. Ну, и Кзамарин для переносимых морд (для девайсов). Вполне себе рабочая иделогия позволяющая выжить компании даже при крахе Винды.
Было это всё уже, .NET Compact и сервелайт. Причем первый был качеством получше, чем замарин. Поигрались и забросили, и на этот раз всё наверняка так же будет.
(Кстати, то, как мелко-мягкий ухитрился просрать рынок смартфонов, на котором они были сильны еще до самого первого айфона и андроида — это вообще просто полная феерия)
VD>Дык, какие проблемы? Разбирайся в тонкостях этих платформ и делай бэкэнд для них.
Здравствуйте, IT, Вы писали:
IT>В шарпе не хватает только ПМ, чтобы о Немерле можно было забыть навсегда.
pattern matching в C# уже есть.
public void IsExpressions(object o)
{
// Alternative way checking for nullif (o is null) Console.WriteLine("o is null");
// Const pattern can refer to a constant valueconst double value = double.NaN;
if (o is value) Console.WriteLine("o is value");
// Const pattern can use a string literalif (o is"o") Console.WriteLine("o is \"o\"");
// Type patternif (o is int n) Console.WriteLine(n);
// Type pattern and compound expressionsif (o is string s && s.Trim() != string.Empty)
Console.WriteLine("o is not blank");
}
CM>>Ты таки бываешь сильно и беспричинно груб.
VD>Серьезно? Можно хотя бы одну цитату из этого форума?
Сегодня просто день открытий. А я думал это принципиальная позиция.
Можно вопрос, и никто никогда в прошлом тебе этого не говорил? Или говорил но отправлялось в игнор?
Здравствуйте, CoderMonkey, Вы писали:
CM>Ой да ладно. Просто прими как факт, что немало людей считает тебя очень неприятной личностью.
Да, я в курсе. Только у меня к этим людям у самого не очень хорошее отношение.
Вообще, я исповедую простой принцип. С людьми говорящими по человечески я общаюсь культурно. Ну, а если кто-то хамит и дерзит, то получает той же монетой.
CM>Было это всё уже, .NET Compact и сервелайт.
Это совсем другое. Сервилатн — это вообще не фреймворк, а библиотека — не до WPF.
.NET Compact это очень урезанный фрейморк, у которого даже джита не было. В общем, совсем не серьезная вещь.
Core же это полноценный фреймворк. Разве что ГУЯ нет. Но как серверная версия — это очень даже серьезно. Там сейчас оптимизации при компиляции куруче чем в виндовом фрэймворке. И вообще на него делается ставка.
CM>Причем первый был качеством получше, чем замарин.
Ты рост не понимаешь, что сравниваешь. Кзамарин — это кросплатформная библиотека и компилятор, которые даже нативный код для iOS и Андроида создает. А Сервилат — это была недо-WPF которая запускалась в броузерах и только на двух платфомах (Винда и МакОСь). На девайсах она не работала. Под Линукс — тоже. Короче — это исходно было недоразумением.
CM>Поигрались и забросили, и на этот раз всё наверняка так же будет.
Я сразу сказал, что Сервилат — это мертворожденный продукт.
Вот только Core — это совсем другое. И Кзамарин — тоже.
CM>(Кстати, то, как мелко-мягкий ухитрился просрать рынок смартфонов, на котором они были сильны еще до самого первого айфона и андроида — это вообще просто полная феерия)
Да. Это был уникальный факап. Опять же я об этом много раз говорил. Многие поклонники МС со мной долго спорили.
Так вот Кор и Кзамарин — это свосем другое дело. Кзамарин просто купленная сторонняя разработка. Реально кросплатформна. МС ее только причесвывает. Сейчас они создали .Net Standard, стандарт на WPF и приводят все свои продукты к ним (чтобы сабсэт интерфейса был одинаковый).
VD>>Дык, какие проблемы? Разбирайся в тонкостях этих платформ и делай бэкэнд для них.
CM>А то ж.
Ну, так если в платформах сейчешь, то сделать язык на нитре для них будет не сложно. Техническую часть связанную с разработкой языка нитра очень сильно упрощает и сильно снижает объем необходимых знаний в области языкостроения.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>С людьми говорящими по человечески я общаюсь культурно.
Это ты так думаешь.
VD>.NET Compact это очень урезанный фрейморк, у которого даже джита не было. В общем, совсем не серьезная вещь.
Тогда и железо было очень сильно урезанное по сравнению с сегодняшним. Никто не мешал его развивать и расширять.
VD>Core же это полноценный фреймворк. Разве что ГУЯ нет. Но как серверная версия — это очень даже серьезно. Там сейчас оптимизации при компиляции куруче чем в виндовом фрэймворке. И вообще на него делается ставка.
Тут будет очень уместна старая копипаста про "историю программных революций от Майкрософт".
Лет 10 назад была надежда, что .NET станет основной платформой для разработки. А сейчас уже ясно, что он не стал основной платформой даже под виндой, так что в лучшем случае — это нишевая технология с сомнительным будущим.
VD>Ну, так если в платформах сейчешь, то сделать язык на нитре для них будет не сложно. Техническую часть связанную с разработкой языка нитра очень сильно упрощает и сильно снижает объем необходимых знаний в области языкостроения.
Нормальной документации нет. И вообще, я с сомнением отношусь к любым фреймворкам, кроме тех, у которых большая пользовательская база и они за счет этого хорошо вылизаны. А с каким-нибудь нишевым фреймворком, начнешь его использовать, потом напорешься на какой-нибудь злой баг, который никто исправлять не собирается. Только время зря потратишь.
Здравствуйте, CoderMonkey, Вы писали:
CM>Это ты так думаешь.
У меня есть довольно большой опыт.
CM>Тогда и железо было очень сильно урезанное по сравнению с сегодняшним. Никто не мешал его развивать и расширять.
Важно не железо, а планы компании и ресурсы вкладываемые в проект. В Core вкладываются огромные ресурсы. Больше чем в виндовый дотнет. Кроме того они сделали его опенсосным и принимают пулреквесты.
CM>Тут будет очень уместна старая копипаста про "историю программных революций от Майкрософт".
Она всегда уместна с МС (да и не только с МС). Но факт остается фактом. Взята стратегия на облака и переносимость Кора. В него вкладываются большие деньги.
CM>Лет 10 назад была надежда, что .NET станет основной платформой для разработки. А сейчас уже ясно, что он не стал основной платформой даже под виндой, так что в лучшем случае — это нишевая технология с сомнительным будущим.
Вообще-то это только тебе ясно. Куча компаний его использует. Для винды он самое то. Вопрос лишь в том, что в мире меняется вектор. Люди просто перестают писать софт для десктопа. Они переходят в интернет, в облака и т.п. И тут, конечно, привязка к платформе сыграла очень плохую роль.
CM>Нормальной документации нет.
Это отмазки. Кое какая имеется. И есть связь с разработчиками, которые помогут во всех сложностях.
CM>И вообще, я с сомнением отношусь к любым фреймворкам, кроме тех, у которых большая пользовательская база и они за счет этого хорошо вылизаны. А с каким-нибудь нишевым фреймворком, начнешь его использовать, потом напорешься на какой-нибудь злой баг, который никто исправлять не собирается. Только время зря потратишь.
В этой области таких фрэймворков нет. Она сама по себе нишевая. Есть только отдельные тулы сокращающие отдельные части вроде разработки парсеров. Но у них есть существенные недостатки и они покрывают малую часть работы.
Разница в трудозатратах слишком большая.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>У меня есть довольно большой опыт.
Ну-ну.
VD>Важно не железо, а планы компании и ресурсы вкладываемые в проект.
Вот именно. В мелкомягком вечно семь пятниц на неделе. Сегодня это "передовой проект", а завтра придумают какой-нибудь очередной Windows-HRENT, который обязательно решит все проблемы, но только сначала надо всё сломать.
VD>Вообще-то это только тебе ясно. Куча компаний его использует. Для винды он самое то.
Я тоже использую. Но перспективы сомнительные, вот в чем проблема.
VD>Вопрос лишь в том, что в мире меняется вектор. Люди просто перестают писать софт для десктопа. Они переходят в интернет, в облака и т.п. И тут, конечно, привязка к платформе сыграла очень плохую роль.
Ага, даешь всё на JS. Тормозит только всё, но это пусть Интел подсуетится
VD>Это отмазки. Кое какая имеется.
Ну и какая есть? Пока что вообще непонятно, какая с этого польза, кроме красивых обещаний.