Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Каков статус managed C++?


Автор: Kurt 26.4.2004, 02:09
Вот смотрю я на все это дело (.NET) и никак не могу понять - каков статус языка C++?
Собственно, почему возник этот вопрос - посмотрите:
1)ASP.NET-страницы на нем не создашь (ну, во всяком случае, это не предлагают при создании проекта);
2)Примеров на Managed C++ в "SDK и компания" гораздо меньше, чем, например, для VB.NET или C#.NET.
3)В студии нету дизайнера под Managed C++. Да, я знаю - есть редактор ресурсов, но он под unmanaged код. (или это у меня студия кривая/старая?..)

Итого - я немножко не понимаю - собирается ли Microsoft дальше работать в направлении Managed C++, если да, то за что такая не милость? Неужели тяжело было дизайнер сделать?

З.Ы. Сории за немного флеймовый вопрос..

Автор: chipset 26.4.2004, 08:41
MC++ только временное средство для переноса проектов на .NET.
Микрософт ставит основную роль C# и VB.NET
Вообще то managed c++ уродливый поэтому лучше не тратить время на его изучение, а учить C#

Автор: stron 26.4.2004, 14:12
Я думаю, что VС.NET - это некий мост, сделанный для совместимости.(Повторяю мысль chipset'а)
Фактически VС.NET - это расширенный и слегка переделанная VC6.(или я не так понял?)
Наверное, это поможет разработчикам перейти на C#.
Тонкая логика, но толковая


Автор: foRaver 26.4.2004, 16:36
Я недумаю что программы, написанные на VB.NET или С# будут работать быстрее чем программы, написанные на VC++.NET. Не будем забывать, что VC++ как использовался, так и дальше будет использоваться, но благодаря C# круг программистов VC++ заметно сузится.

Автор: Kurt 26.4.2004, 21:53
"Просканировал" сайт Microsoft на эту тему.
Как я понял, тока VC++.NET имеет мост с обычным unmanaged code.
Следовательно, только на нем можно писать native библиотеки для .NET - к-е потом будут использовать все остальные. Я убежден, что namespace System etc. написаны на нем.
И еще, проги на VC++.NET самые быстрые из семейства .NET - сама Microsoft использует его для DirectX (см. www.microsoft.com), поэтому, ИМХО, VC++.NET создан НЕ для связки и перехода - это основной язык (самый гибкий и мощный) для приложений, к-м нужна скорость и интеграция с Framework на разных уровнях, в т.ч. и на самом низком..
Мне кажется, он вряд ли исчезнет..

Автор: foRaver 27.4.2004, 00:22
Если мне кто-то скажет, что С++ скоро вымрет, плюну в лицо! (Без обид, это просто выражение wink.gif)

Автор: Kurt 27.4.2004, 01:24
А я уж было хотел заикнуться.. smile.gif
Может, кто-нибудь покажет WindowsForms.NET приложение на VC++.NET?
Че-та не получается..

Автор: chipset 27.4.2004, 01:53
foRaver
Не надо плеваться smile.gif
С++ жил,жив, и жить будет!!!
Но для подсемейства приложений .NET выгоднее юзать C#...

Автор: foRaver 27.4.2004, 03:40
Цитата(Kurt @ 27.4.2004, 01:24)
А я уж было хотел заикнуться.. smile.gif
Может, кто-нибудь покажет WindowsForms.NET приложение на VC++.NET?
Че-та не получается..

main.cpp

Код

#include "main.h"

CApplicationForm::CApplicationForm()
{
 // setting size of form
 Text = S"TextureBrush:7.overloaded, Rectangle, ImageAttributes";
 // setting size of form
 this->ClientSize = System::Drawing::Size(500, 500);
 // setting back ground of form
 this->set_BackColor(Color::White);
 // setting start position of form
 this->StartPosition = FormStartPosition::CenterScreen;
 this->MaximizeBox=false;
 // 3D Form style  
 this->FormBorderStyle=FormBorderStyle::Fixed3D;  
 // Paint event handler
 Paint += new PaintEventHandler(this, OnPaint);
}

void CApplicationForm::OnPaint(Object* sender, PaintEventArgs* e)
{
 // retrieving a device context
 Graphics* dc = e->Graphics;
 /******************************************************************
   System.Drawing.Graphics.TextureBrush Constructor (Image, Rectangle, ImageAttributes)

   public: TextureBrush(
     Image* bitmap  //  TextureBrush object use  the Image object when fill insides
     Rectangle  dstRect  // Bounding rectangle  of TextureBrush object, in Rectangle  structure
     ImageAttributes* imageAttr  // Image attribute info which image color is changing
   );  

 ******************************************************************/
 //
 // defining a string that represent the specified file
 //

 String *strFile = L"Aqua aura.jpg";
 // Create image object
 Image *img = new Bitmap(strFile);
 // Create ImageAttributes
 ImageAttributes* imageAttr = new ImageAttributes();
 // defining gamma correction value
 float gamma=1.5;
 // setting gamma correction value
 imageAttr->SetGamma(gamma);
 // setting wrap mode
 imageAttr->SetWrapMode(WrapMode::TileFlipXY);

 // defining bounding rectangle of TextureBrush object
 Rectangle dstRect(0, 0, 50, 50);
 // create a textured brush
 TextureBrush *txtBrush = new TextureBrush(img, dstRect, imageAttr);
 // filling inside of rectangle with the textured brush
 dc->FillRectangle(txtBrush, 50, 50, 400, 400);
}

int __stdcall WinMain()
{
 // creates  a Form object
 CApplicationForm *FormObject= new CApplicationForm();
 Application::Run(FormObject);
 return 0;
}


main.h
Код

#using <mscorlib.dll>
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Drawing::Drawing2D;
using namespace System::Drawing::Imaging;
using namespace System::Windows::Forms;

// creating CApplicationForm class from the Form class
__gc class CApplicationForm: public Form
{
 public:
   CApplicationForm();
 private:
   void OnPaint(Object* sender, PaintEventArgs* e);
};

user posted image


Цитата(chipset)
foRaver
Не надо плеваться  smile.gif
С++ жил,жив, и жить будет!!!
Но для подсемейства приложений .NET выгоднее юзать C#...


Мне кажется что выражение "С++ был создан для того, чтобы ламеры не становились программистами!" в политике "Прикладное программирование для .NET" самое актуальное...biggrin.gif

Автор: srd 27.4.2004, 10:08
1. В Visual Studio .NET 2003 дизайнер форм доступен и для Managed C++.
2. Managed C++ позволяет смешивать управляемый и неуправляемый код в одном приложении.
3. Сейчас создан комитет по стандартизации расширений языка С++ для создания приложений для платформы .NET. Ссылку на эту новость потерял, если найду - оставлю здесь.

Так что хоронить язык С++ как средство создания приложений для .NET ещё рано.

ЗЫ
Языку Си лет 30. Интересно, сколько раз его за это время пытались закопать? Думаю, тоже будет и с Си++. В крайнем случае, мигрирую на Linux - не хочу писать на гибриде Явы и Паскаля smile.gif Без обид, это шутка.

Автор: Kurt 27.4.2004, 22:07
foRaver, немного не пойму - это ведь СМЕШАННЫЙ код (managed/unmanaged)?

Автор: Kurt 28.4.2004, 00:11
Все. Разобрался. Стормозил как-то..

З.Ы. foRaver, респект за пример!
Добавлено @ 00:20
Единственное, что не могу понять - почему .exe в результате получается такой огромный.
Около 150КБ - пустое окно!
В то же время на C# - около 5 КБ.
В чем дело?

Автор: Kurt 29.4.2004, 23:32
Повозился с разными приложениями Managed C++ - удалось-таки создать полностью managed code. (просто выбирате "пустой managed project" smile.gif)
Все-таки странно. Один и тот же код (просто пустое окно) на всех .NET-языках занимает разный размер.
Казалось бы, ведь это все переводится в IL - почему такие различия? (разница между наибольшей(VB.NET) и наименьшей(C#.NET) сбокой составляет где-то 3КБ - не много, но все-таки..)
Теперь хочу попробовать скорость померять - что-то мне подсказыват, что у Managed C++ она должна быть наибольшей. smile.gif
А можь и нет - но зато точно определится статус Managed C++.
Кто какой тест может предложить? wink.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)