т.е. пока обещают только async и compiler as service?
и то, и другое полезно — но мало меняет ситуацию.
первое, и так уже можно худо-бедно эмулировать через yield-ы, второе тоже есть, но через сторонние утилиты
Здравствуйте, DarkGray, Вы писали:
DG>т.е. пока обещают только async и compiler as service?
Пока что CaaS — это дальняя перспектива. Они вроде как не укладываются к релизу VS 2012 (и это, имхо, хорошо — там работы явно не на 2 года). Кстати, на февральских слайдах, что запостил QrystaL, Roslyn идёт в роадмапе для 6го шарпа.
DG>первое, и так уже можно худо-бедно эмулировать через yield-ы.
Не-не-не, Async-это очень классная задумка. Фактически, это CPS-движок, встроенный прямо в язык.
Вместо того, чтобы "вкладывать" делегаты друг в друга аля
var syncContext = CurrentContext;
var arg = "aaa";
web.DownloadAndInvoke("about:blank", downloadResult=>
{
syncContext.Post(()=>ProcessOnDownloaded(downloadResult, arg));
});
мы пишем обычный код и оставляем сохранение состояний на компилятор:
var arg = "aaa";
var downloadResult = await web.DownloadAsync("about:blank");
ProcessOnDownloaded(downloadResult, arg);
Одним махом МС добавляют сахар для асинхронности, синхронизации многопоточного кода, лёгких workflow и реактивного программирования. Велкам, Rx
Офф: лучшее введение в async из всего, что я видел — это вот эта презентация. Async разжёван с кучей деталей и у Липперта, и у Джо Скита, но в обоих сериях уделено крайне внимания самому подходу/типовым решаемым задачам.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Sorc17, Вы писали:
S>>Что там, кстати, скоро ли PowerShell будет как bash?
L>Он уже на голову выше его.
Я в bash перенаправляю ввод вот так command < command. А чем может похвастаться PowerShell?
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
S>Не-не-не, Async-это очень классная задумка. Фактически, это CPS-движок, встроенный прямо в язык.
это важно стратегически, так же как и CasS.
а по сравнению с yield-ами — это лишь добавление сахара, и доведение до ума того, что было.
сравни это
IEnumerable<TaskStep> F()
{
var arg = "aaa";
var asyncResult = web.BeginDownload("about:blank");
yield return new Wait(asyncResult);
var downloadResult = web.EndDownload();
ProcessOnDownloaded(downloadResult, arg);
}
с этим
var arg = "aaa";
var downloadResult = await web.DownloadAsync("about:blank");
ProcessOnDownloaded(downloadResult, arg);
причем первое доступно уже года 3 и его можно крутить в том числе и в однопоточном режиме без необходимости следить за синхронизацией, а вот что так можно со вторым сделать — я не уверен.
в итоге, async не сильно упрощает написание кода, потому что все равно приходится в рукопашную следить за правильностью синхронизации каждой запятой.
1)базовые сервисы (сборщик мусора, работа с памятью, портами, прерываниями) на ассемблере их корректность автоматически доказана статически с помощью Boogie, это если они не ошиблись с аннотациями
2)Ядро на C#, который компилируется в TAL (typed assembly language) и также верифицируется автоматически
3)Программ на C#, который также компилируется в .NET
То есть по сути почти вся система на C# с мощными статическими проверками.
Здравствуйте, Sorc17, Вы писали:
L>>Он уже на голову выше его.
S>Я в bash перенаправляю ввод вот так command < command. А чем может похвастаться PowerShell?
а почему бы просто не воспользоваться поиском?
если вы не знаете, по каким ключевым словам искать, то воспользуйтесь "command substitution powershell"
Здравствуйте, DarkGray, Вы писали:
DG>а по сравнению с yield-ами — это лишь добавление сахара, и доведение до ума того, что было.
Оно было, но использовалось так же часто, как и yield до linq.
DG>сравни это
Ну это же совсем не то — пассивный итератор, отсутствие шедулинга, грабли с комбинацией итераторов... Вот тут есть неплохой пример.
Разница та же, что и между IEnumerable|IObservable. По сути, Await — это и есть yield для Rx.
DG>причем первое доступно уже года 3 и его можно крутить в том числе и в однопоточном режиме без необходимости следить за синхронизацией, а вот что так можно со вторым сделать — я не уверен. Элементарно — там полный аналог с синтаксической привязкой linq/foreach: достаточно, чтобы у аргумента await был разрешим метод GetAwaiter(), а у того — методы Begin/EndAwait
DG>в итоге, async не сильно упрощает написание кода, потому что все равно приходится в рукопашную следить за правильностью синхронизации каждой запятой.
Async — это целиком и полностью сахар для continuation passing. Я не могу представить, какие там могут быть проблемы с синхронизацией
S> достаточно, чтобы у аргумента await был разрешим метод GetAwaiter(), а у того — методы Begin/EndAwait
вот если бы они сделали, чтобы такая возможность(дернуть метод по имени, но с резолвингом на этапе компиляции и с поддержкой статической типизации) была доступна для любой библиотеки, а не только для await — вот это было бы круто!... и дало бы толчок для появления кучи интересных библиотек
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Sorc17, Вы писали:
L>>>Он уже на голову выше его.
S>>Я в bash перенаправляю ввод вот так command < command. А чем может похвастаться PowerShell?
L>а почему бы просто не воспользоваться поиском? L>если вы не знаете, по каким ключевым словам искать, то воспользуйтесь "command substitution powershell"
Не увиливайте. Я вам задал вполне конкретный вопрос. От того как он решен в PowerShell, просто глаза с кровью вытекают. Очевидно поэтому вы и пытаетесь "отослать в гугл", но зря. Я-то в гугл ходил и работал с PowerShell. После попытки написать на нем что-то посложнее элементарного установочного скрипта у меня навсегда отпало желание использовать PowerShell. Даже cmd был лучше. cmd позволял делать простые вещи легко, но не позволял делать сложные вещи. PowerShell позволяет делать сложные вещи, но простые вещи теперь делаются так же сложно как и сложные. Шаг вперёд для майкрософт? Да. Стали ближе к bash? Да. Догнали или превзошли bash? Нет. Выбора-то у вас нет Сделал микрософт кактус? Все его едят. Поэтому мне вас и жаль.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Здравствуйте, Sorc17, Вы писали:
L>>а почему бы просто не воспользоваться поиском? L>>если вы не знаете, по каким ключевым словам искать, то воспользуйтесь "command substitution powershell"
S>Не увиливайте. Я вам задал вполне конкретный вопрос.
А я вам дал вполне конкретный ответ. Ссылок — тыщи, зачем мне тут повторяться?
S>От того как он решен в PowerShell, просто глаза с кровью вытекают. Очевидно поэтому вы и пытаетесь "отослать в гугл", но зря. Я-то в гугл ходил и работал с PowerShell.
Я видимо чего-то недогоняю. Опыта большого ни с тем, ни с тем у меня нет, все как-то по мелочам.
Не могли бы вы привести пример няшного bash-скрипта c substitution-ом, который у вас не получатся воспроизвести в PS?
S>После попытки написать на нем что-то посложнее элементарного установочного скрипта у меня навсегда отпало желание использовать PowerShell. Даже cmd был лучше. cmd позволял делать простые вещи легко, но не позволял делать сложные вещи. PowerShell позволяет делать сложные вещи, но простые вещи теперь делаются так же сложно как и сложные. Шаг вперёд для майкрософт? Да. Стали ближе к bash? Да. Догнали или превзошли bash? Нет. Выбора-то у вас нет Сделал микрософт кактус? Все его едят. Поэтому мне вас и жаль.
Одни эмоции и никаких фактов. Типичный юниксоид со стажем.
Здравствуйте, DarkGray, Вы писали:
DG>вот если бы они сделали, чтобы такая возможность(дернуть метод по имени, но с резолвингом на этапе компиляции и с поддержкой статической типизации) была доступна для любой библиотеки, а не только для await — вот это было бы круто!... и дало бы толчок для появления кучи интересных библиотек
Оно не имеет смысла без произвольного расширения синтаксиса языка и поддержки сторонних реврайтеров, а это, по мнению Хейлсберга, too big gun. Впрочем, Липперт на что-то такое намекал с месяц назад
Здравствуйте, Sinix, Вы писали:
DG>>а по сравнению с yield-ами — это лишь добавление сахара, и доведение до ума того, что было. S>Оно было, но использовалось так же часто, как и yield до linq.
Ты забыл добавить "мной" (т.е. тобой).
Я как-то его сразу использовал и довольно часто.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, DarkGray, Вы писали:
S>> достаточно, чтобы у аргумента await был разрешим метод GetAwaiter(), а у того — методы Begin/EndAwait
DG>вот если бы они сделали, чтобы такая возможность(дернуть метод по имени, но с резолвингом на этапе компиляции и с поддержкой статической типизации) была доступна для любой библиотеки, а не только для await — вот это было бы круто!... и дало бы толчок для появления кучи интересных библиотек
Да, не вопрос. В Nemerle и F# это уже давно есть.
ЗЫ
Ну, а вы ждите от моря погоды .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Sinix, Вы писали:
S>Оно не имеет смысла без произвольного расширения синтаксиса языка и поддержки сторонних реврайтеров, а это, по мнению Хейлсберга, too big gun. Впрочем, Липперт на что-то такое намекал с месяц назад
Про биг-ган — это были слова о синтаксических макросах. В прочем, похоже с тех пор его мнение немного пообмякло.
Тут же достаточно F#-ного решения — билдеров для монойдов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Abyx, Вы писали:
8>>Несколько раз от разных людей за последнее время слышал, что Майкрософт собирается хоронить .NET. Не могу понять, откуда ветер дует и что будет вместо .NET'a?
A>нативный немерле будет.
Мечтать не вредно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, gandjustas, Вы писали:
G>Для справки: G>1) Весь Web Stack Microsoft работает на .NET G>2) Windows Azure работает в основном на .NET G>3) MS Exchange на .NET G>4) MS SharePoint на .NET G>5) Семейство Dynamics на .NET, не полностью, но все же G>6) SQl Server имеет множество компонентов на .NET G>7) Windows Phone 7 на .NET G>9) Средства разработки на .NET
+1
G>Теперь подумай сам во что выльется Microsoft отказ от .NET, И не задавай глупых вопросов.
А вот с этим не согласен! Задавать глупые вопрос можно и нужно. Среди ни иногда проскакивают революционные идеи.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Я как-то его сразу использовал и довольно часто.
Не, я тоже игрался, но в продакшн, да ещё и в таком объёме, как linq — без лямбд и extension-ов выглядело извратом.
Здравствуйте, Sorc17, Вы писали:
S>Здравствуйте, Lloyd, Вы писали:
L>>Здравствуйте, Sorc17, Вы писали:
S>>>Что там, кстати, скоро ли PowerShell будет как bash?
L>>Он уже на голову выше его.
S>Я в bash перенаправляю ввод вот так command < command.
Это че значит?
S>А чем может похвастаться PowerShell?
1) Как минимум тем что я могу встроить в свое приложение скриптинг на Power Shell с помощь десятка строк
2) Тем что есть автозавершение по tab, причем не только путей и команд, но и параметров этих команд
3) тем что в комплекте с windows идет вполне достойная IDE с поддержкой repl для powershell
4) Тем что можно красиво работать с xml (через точку)
5) Вот таким и подобными репозитариями
6) И тем что PowerShell может использовать всю мощь библиотеки .NET