Платформа 2009

 C#, Microsoft  Комментарии отключены
Фев 212009
 

4–5 Декабря в Москве прошла очередная, десятая ежегодная конференция от Micro$oft - "Платформа 2009. Определяя будущее". Лично на конференциия не присутствовал, но был заинтересован. Очень сильно интриговал тот факт, что на конференцию приедет выступить с докладами сам великий и могучий Марк Руссинович (профиль докладчика).
Особый интерес для меня как для программиста представлял доклад "C#. Взгляд в будущее", рассказывающий историю развития языка C# его зарождения в 1998-м году и появления в 2002-м году первой его версии 1.0, до версии 4.0 которая будет доступна в VisualStudio 2010.
Итак, чтоже такого интересного нас ждет в C# 4.0?
1)
Динамическая типизация объектов.
смысл в том, что мы можем напрямую сообщить компилятору что мы не знаем точного типа объекта, и что привязка к его методам должна быть выполнена в Run-Time. для этого введено новое ключевое слово dynamic :
То что раньше приходилось делать так:

object calc = GetCalculator();
Type calcType = calc.GetType();
object res = calcType.InvokeMember("Add",
BindingFlags.InvokeMethod, null,
new object[] { 10, 20 });
int sum = Convert.ToInt32(res);

Теперь можно сделать так:

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);

Сразу хочу заметить, что тем кто, в связи с Dynamic Dispatch, переживает за производительность, Micro$oft обещает реализовать эффективный Call Site Caching.

2) Параметры по умолчанию и именованные аргументы.
Некоторым это должно быть знакомо. Да! Такое есть в языке Objective-C, так что кто писал под MacOS удивлены не будут. Однако для C# это очень крутое нововведение. Смысл его в том, что можно пропускать дефолтные параметры, а также менять порядок передачи параметров. Вот простейший пример:

можем написать такую функцию

public void M(int x, int y = 5, int z = 7);

и она будет иметь такие варианты вызовов:

M(1, 2, 3); // обычным образом
M(1, 2); // опущен последний параметр z – тоже самое, что вызвать M(1, 2, 7)
M(1); // опущены 2 последних параметра - y и z – тоже самое, что вызвать M(1, 5, 7)

M(1, z: 3); // передача фактического значения по имени формального параметра - z
M(x: 1, z: 3); // передача двух значений по именам параметров - x и z
M(z: 3, x: 1); // аналогично предыдущему

3) Упрощенная работа с COM.
То чего всем так не хватало! Наконец у Micro$oft дошли руки. Встречайте - теперь вместо такой колбасни

object fileName = "Test.docx";
object missing = System.Reflection.Missing.Value;

doc.SaveAs(ref fileName,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);

можем просто написать

doc.SaveAs("Test.docx");

Ура товарищи.

4) Ко-вариантность и контра-вариантность.
Обещают безопасную ко-вариантность. Предлагается статически проверяемая вариантность по месту определения, а также типы значений теперь всегда инвариантны

IEnumerable<int> != IEnumerable<object>

5) Компилятор как сервис.
Еще одна очень интересная штуковина в C#4.0 - это Evaluator - класс для компиляции и исполнения кода в Run-Time! Да здравствует скриптование! Программа во время выполнения может в зависимости от ситуации и параметров генерировать код, компилировать и выполнять его.

CSharpEvaluator ev = new CSharpEvaluator();
ev.Usings.Add("System");
ev.Eval("for (int i = 0; i < 10; ++i) Console.WriteLine(i * i);");

Было много еще всего вкусного. Рекомендую сходить на сайт http://platforma2009.ru и узнать больше.

Attention! Реклама! :)

 статьи, Статья  Комментарии отключены
Фев 202009
 

Сегодня мне выпало немного свободного времени, поэтому я решил наконец заняться своим блогом. Так как я являюсь модератором на форуме портала Сообщество украинских разработчиков игр , то не могу его не отрекламировать :) Надеюсь Раптор не засудит меня :) ) Этот портал - попытка создать Украинский аналог форуму gamedev.ru, который бы объединил наших "вiтчизняних виробникiв" :) .

Также я успел выложить на этом портале 2 свои статьи:

1) Расчет TBN векторов. Да, именно тех самых, которые образуют базис касательного пространства для перевода векторов нужных для расчета освещения (источник света, направление взгляда и т.п.) в пространство текстуры-normalmap'ы.
Статья сопровождается полным исходным кодом на С++.
http://gameworld.com.ua/showthread.php?t=195

2) Пишем GLSL шейдеры в RenderMonkey - Specular Lighting + Heat Haze. Как продолжение предыдущей статьи, эта статья рассказывает о двух технологиях - попиксельное бликовое освещение (в статье используется модель Блинна(Blinn)), и эффект искажения изображения как от горячего воздуха (heat-haze).
Статья сопровождается полным исходным кодом GLSL-шейдеров и готовым проектом для RenderMonkey 1.6
[Внимание! Для просмотра второй статьи Вы должны быть зарегистрированы на форуме и иметь два сообщения]
http://gameworld.com.ua/showthread.php?t=197

 

Наконец в сети выложили первые официальные скриншоты третьей части пошаговой стратегии "Герои Мальгримии"! Эта часть будет переведена в 3D благодаря моему движку - fEngine. Так что эти скрины есть его первая публичная демонстрация.






Полезные ссылки

 Без рубрики  Комментарии отключены
Ноя 072008
 

Буду собирать полезные ссылки =)

Ресурс The Maya Exporter Factfile
http://www.robthebloke.org/research/index.htm

Создан блог!

 Без рубрики  Комментарии отключены
Ноя 062008
 

Сегодня был создан мой блог, в котором я буду вести записи в основе своей посвященные программированию и моему 3D-движку fEngine. Упор будет на С++ и 3D графику (OpenGL).
Также будут рассматриваться языки Asm, C#, Python.

© 2011 3D-Orange.com.ua
e-mail me

3D-Orange.com.ua is proudly powered by WordPress.
Suffusion theme by Sayontan Sinha