Предварительный обзор Visual Studio .NET 2005 Beta 1

Вышла первая бета VS 2005
http://lab.msdn.microsoft.com/vs2005/welcome/default.aspx

Предлагаю здесь делится впечатлением и инофромацией о новом продукте МС. Вот что мне стало известно, вернее самое интересное:

1) Возможность создавать проекты на основе шаблонов или существующих исходников.

2) Появился runtime checks запустив который можно проверить прогу на предмет всяких багов и переполнения буфера.

3) Сильно улучшили ClassView

4) Появился новый синтаксис CLI. В частности синтаксис управления классами:
<!--c1-->
Код
<!--ec1-->
class            N  { /*…*/ };  // native type
ref class        R  { /*…*/ };  // CLR reference type
value class      V  { /*…*/ };  // CLR value type
interface class  I  { /*…*/ };  // CLR interface type
enum class       E  { /*…*/ };  // CLR enumeration type
<!--c2-->
<!--ec2-->

с обычным классом все понятно - живт в области видимости или в куче. Ref класс - может жить только в куче, причем в куче управляемой, тоесть со соброщиком мусора. в этой связи появился оператор gcnew который в отличии от new возращает не указатель на класс, а указатель на хендл класса, который лежит в управляемой куче.

вот как выглядит пременение REF классов
<!--c1-->
Код
<!--ec1-->
// то что есть сейчас
public __gc __sealed class Student
{
   private:
       double m_grade;
       String* m_name;
   public:
       __property double get_Grade() { return m_grade; }
       __property void set_Grade(double newGrade) { m_grade = newGrade; }

       __property String* get_Name() { return m_name; }
       __property void set_Name(String* newName) { m_name = newName; }
}

// то что можно в Vs2005
public ref class Student sealed
{
   private:
       double m_grade;
   public:
       // standard property syntax
       property double Grade
       {
           double get() { return m_grade; }
           void set(double newGrade) { m_grade = newGrade; }
       }

       // trivial property
       // compiler can generate accessors and backing store
       property String^ Name;
}
<!--c2-->
<!--ec2-->

немного отталкивает схожесть с паскалем! Именно так выглядит синтаксис работы с хендлами объектов образованных gcnew. так что путаницы с указателями как сейчас не будет, когда по тексту непонятно это просто указатель или указатель за которым следит "сборщик мусора". Сейчас это может являтся причиной ошибок. Четкое разделение синтаксиса устраняет эту проблему.
<!--c1-->
Код
<!--ec1-->
String^ ReadFirstLineFromFile(String^ path)
{
 StreamReader reader(path);
 return reader.ReadLine();
}
<!--c2-->
<!--ec2-->

для больше дисциплины хендлы нельзя двигать( арифметические операции ), преобразовывать к другим типам, или испоьлзовать оператор[]. Для получение хендла на имеющийся управляемый объект используется префиксный оператор % по аналогии с & для указателей.

5) Далее принципиальный подход к оптимизации. http://msdn.microsoft.com/msdnmag/issues/0...c2005/fig06.gif на рисунке видна схема работы Profile Guided Optimization (POGO). Помимо этого не обошлось без поддержки OpenMP
<!--c1-->
Код
<!--ec1-->
void copy(int a[], int b[], int c[], int length)
{
   #pragma omp parallel
   for(int i=0; i<length; i++)
   {
       c[i] = a[i] + b[i];
   }
}
// для многопроцессорных тачек компилер сгенерит код итерации разбитый на несколько ниток.
<!--c2-->
<!--ec2-->

об остальном завтра напишу - чича пора домой. Удачи в тестах, для публичного скачивания VS2005 доступен здесь
http://lab.msdn.microsoft.com/vs2005/get/d...lt.aspx#express

Еще два факта:
1) Чистый С++( без сборщиков мусора и прочее ) на данный момент в 2005 показывает производительность программ на 25% лучше, чем C#.
2) В MS VC 2005 полностью включена библиотека BOOST

Автор: botfather

Взято с форумов, раздел по обсуждению VS .NET 2005 - http://forums.realcoding.net/index.



Опубликовал admin
22 Июл, Четверг 2004г.



Программирование для чайников.