[vs2010]what's new in c# and f#

Alexander08

поставил новую vs beta 1. смотрю что нового. кто уже посмотрел - делитесь впечатлениями!

Dmitriy82

dynamic жжот, особенно в свете этого:
http://ironpython.codeplex.com/Release/ProjectReleases.aspx?...

Alexander08

хм, с помощью dynamic теперь можно возвращать из функций любые анонимные типы?
или раньше тоже можно было?

klyv

смотрел я презентацию C# 4.0.
там всю дорогу извинялись, что сразу такого не сделали.

klyv

с помощью dynamic можно вернуть всё, что угодно, реализующее нужный интерфейс.

Alexander08

смотрел я презентацию C# 4.0.
там всю дорогу извинялись, что сразу такого не сделали.
можешь ссыль подкинуть на видео презентахи? я чет потерял и найти не могу...

klyv

можешь ссыль подкинуть на видео презентахи? я чет потерял и найти не могу...
вторая на гугле

Alex28051973

Само IDE процентов на 80 наверное сделано на WPF. Из-за этого шрифты почти всюду довольно размытые - даже в текстовом редакторе. Из-за этого пользоваться не удобно (для меня - невозможно). Если этого не исправят в релизе - будет очень обидно...

6yrop

в самом WPF .NET 4.0 есть режим не размытых шрифтов, может в VS есть переключалка на этот режим?

Alexander08

в конце чувак ад какойто показывает... есть идеи, хотя бы в общих словах, как подобный csharpevaluator написать?

klyv

в конце чувак ад какойто показывает... есть идеи, хотя бы в общих словах, как подобный csharpevaluator написать?
берёшь Mono, тащишь оттуда транслятор, вернее, кусок его, делаешь шелл.

Dasar

в конце чувак ад какойто показывает... есть идеи, хотя бы в общих словах, как подобный csharpevaluator написать?
через c#-компилятор + компиляция в памяти - без проблем, память только хаваться будет, т.к. на каждую строчку будет dll-ка создаваться
а dll-ку потом хрен из памяти выгрузишь.

Alexander08

через c#-компилятор + компиляция в памяти - без проблем, память только хаваться будет, т.к. на каждую строчку будет dll-ка создаваться
а dll-ку потом хрен из памяти выгрузишь.
нашел несколько примеров, т.е. это можно без проблем замутить в любой версии с#? я просто думал как-то дело облегчает dynamic?

Dasar

нашел несколько примеров, т.е. это можно без проблем замутить в любой версии с#? я просто думал как-то дело облегчает dynamic?
Основная проблема будет только с переменными.
чтобы доступ из одной строки был к переменным из другой строки.

klyv

а dll-ку потом хрен из памяти выгрузишь.
dll-ли стоит загружать в отдельные домены, которые уже легко выгружаются.

Dasar

dll-ли стоит загружать в отдельные домены, которые уже легко выгружаются.
а объекты потом маршалить?

bleyman

Ну да, а в чём проблема? MarshalByRef бесплатный же в смысле производительности. Ну и понятно, что от шелла тебе особой производительности не нужно. Или ещё проще загружать в новый домен сам интерпретатор.
Кстати, у меня какая-то вещь в памяти сидит, а вытащить не могу: была какая-то хрень типа что скомпилированные анонимные функции тусуются в каком-то особом глобальном хипе и автоматически выгружаются, когда они больше не нужны. В смысле, сам их код выгружается! Кто-нибудь видел такое и может ли сказать ключевые слова?

Dasar

Ну да, а в чём проблема? MarshalByRef бесплатный же в смысле производительности
в честь чего это он бесплатный?
вместо за-inline-него вызова, будет какая-то мега хрень с запаковкой-распаковкой передаваемых параметров.

klyv

всё-таки, это шелл, и производительность при переходе от строчки к строчке сильно ограничена временем написания комманды ;)

Dasar

всё-таки, это шелл, и производительность при переходе от строчки к строчке сильно ограничена временем написания комманды
смотря что этой одной командой обрабатывать.
если это команда "cd", то да - проблем с производительностью нет, а если этой командой делаются какая-то реальная работа - типа следующего:
ls("*.xml").Select (filename => XElement.Load(filename.SelectMany(xml => xml.XPathSelect("//item".Where(item => item.Attribute("name") == "БОЧ215").Select(item => item.Attribute("address".JoinToString(", ").Write("out.txt")
то все эти MarshalByRef очень и очень сильно посадят производительность.

Alexander08

dynamic жжот, особенно в свете этого:
http://ironpython.codeplex.com/Release/ProjectReleases.aspx?...
да, действительно жжот я питона не знаю, написал такой же пример на шарпе)

namespace DynamicTest
{
public static class DymanimMethodExample
{
public static void Test
{
dynamic dc = new DynamicClass;
Console.WriteLine(dc.WhatTheFuck;
}
}
class DynamicClass : System.Dynamic.DynamicObject
{
public override bool TryInvokeMember(System.Dynamic.InvokeMemberBinder binder, object[] args, out object result)
{
result = binder.Name;
return true;
}
}
}

bleyman

> вместо за-inline-него вызова, будет какая-то мега хрень с запаковкой-распаковкой передаваемых параметров.
Чё? Инлайна не будет, конечно, но какая запаковка-распаковка, о чём ты? Основное отличие общения с аппдомейнами от IPC состоит в том, что границы воображаемые. То есть CLR проверяет типы (при загрузке разнообразные security policies (но если тебе хочется скорости, то у тебя их не будет а дальше реально в другой аппдомейн отдаётся сырой поинтер. В смысле, ссылка. Неважно, GC-то у них общий.
Именно благодаря этой идее и существует Singularity: в случае managed code дополнительные механизмы изоляции (вроде виртуальной памяти) не нужны, поэтому использование микрокернела не влечёт за собой миллион контекстсвитчей на каждый чих.
> смотря что этой одной командой обрабатывать.
А с чего ты взял, что то, что ты написал, исполняется на клиенте? (EDIT: хотя и там оно может исполняться вполне эффективно)

Dasar

Чё? Инлайна не будет, конечно, но какая запаковка-распаковка, о чём ты? Основное отличие общения с аппдомейнами от IPC состоит в том, что границы воображаемые. То есть CLR проверяет типы (при загрузке разнообразные security policies (но если тебе хочется скорости, то у тебя их не будет а дальше реально в другой аппдомейн отдаётся сырой поинтер. В смысле, ссылка. Неважно, GC-то у них общий.
допустим класс помечен как serializable, и мы его передаем через границу домена.
что ты предлагаешь сделать более оптимальное, чем бинарная сериализация?
или другой пример:
в первом домене, есть интерфейс IA и класс A
во втором домене, загружен только интерфейс IA
класс A, как marshalbyref передается из первого домена во второй
что ты предлагаешь сделать более оптимиальное, чем передать прокси (как и должно передаваться)?
причем надо помнить, что первый домен может быть в любой момент быть выгружен, при этом ссылка на A во втором домене должна себя адекватно вести, а не кору дампить.
> А с чего ты взял, что то, что ты написал, исполняется на клиенте?
потому что в реальности там будет некая комбинация из marsshalbyref и serializable, поэтому часть кода будет выполняться на клиенте, часть на сервере - с постоянными перетаскиванием и данных, и вызовов туда и обратно.

Dasar

Именно благодаря этой идее и существует Singularity: в случае managed code дополнительные механизмы изоляции (вроде виртуальной памяти) не нужны, поэтому использование микрокернела не влечёт за собой миллион контекстсвитчей на каждый чих.
мне казалось, что в singularity вообще нет appdomain-ов. все выполняется в одном домене, а разделение делается через code policy.

bleyman

Потестил немножко, почитал всякое и понял: да, я был неправ.

Katya19

А где у нас в сети взять бету новой студии? lair молчит. У кого есть?
Оставить комментарий
Имя или ник:
Комментарий: