Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/76: Рейтинг темы: голосов - 76, средняя оценка - 4.74
 Аватар для vaistas
6 / 5 / 0
Регистрация: 05.04.2010
Сообщений: 14

В чём писать, в MFC или CLR?

10.04.2010, 23:42. Показов 15387. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В CLR всё более или менее понятно, но приложения написанные в CLR не запускаются на компьютерах в котрых не установлена Visual Studio, MFC для меня пока тёмный лес. Хотелось бы узнать в какой среде пишут гуру нашего форума?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2010, 23:42
Ответы с готовыми решениями:

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

MFC, понятия не имею как писать эту прогу, на с или с++
написать программу, генерирующую на экране разноцветные смайлики, расположенные случайным образом. выражение каждого смайлика должно...

Как лучше учиться: писать консольные приложения или оконные? И если писать оконные, то на чём лучше?
На днях я узнал про Borland c++ builder и хочу воспользоваться им, но можно и писать код, что-бы было оконное приложение, так что-же лучше?...

18
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 00:47
Цитата Сообщение от vaistas Посмотреть сообщение
CLR не запускаются на компьютерах в котрых не установлена Visual Studio
А, может, .NET framework?
Цитата Сообщение от vaistas Посмотреть сообщение
Хотелось бы узнать в какой среде пишут гуру нашего форума?
Зависит от задачи, я предполагаю. Если писать рассчитывая на винду позднее ХР, то .NET framework там уже установлен. Но для него я бы C# выбрал, а не C++.
2
 Аватар для vaistas
6 / 5 / 0
Регистрация: 05.04.2010
Сообщений: 14
11.04.2010, 01:03  [ТС]
в том-то и дело что NET framework стоит, и всё равно не запускается на xP.A почему C# а не С++?

Добавлено через 6 минут
C# не учил, у нас в универе с Pascal'я плавно перешли на C++
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 02:07
Цитата Сообщение от vaistas Посмотреть сообщение
в том-то и дело что NET framework стоит, и всё равно не запускается на xP
Значит, че-то у тебя неправильно .NET фрэймворка достаточно для выполнения программ. Возможно, не та версия.
Цитата Сообщение от vaistas Посмотреть сообщение
A почему C# а не С++?
Просто для меня C# для .NET удобнее, а С++ для этой платформы выглядит коряво, имхо.
1
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
11.04.2010, 02:14
Цитата Сообщение от Vourhey Посмотреть сообщение
а С++ для этой платформы выглядит коряво, имхо.
Не скажи, в нем есть очень много фич, поддерживаемых clr, но которых нет в c#.
И используя комбинацию управляемого и неуправляемого кода, можно добиться еще большей скорости, чем в c#. Жаль что microsoft не развивает его.

vaistas, про mfc забудь. изучив любой .net язык можно писать как обычные программы, так и сайты, и приложения для браузера
1
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 02:18
Цитата Сообщение от HIMen Посмотреть сообщение
Не скажи, в нем есть очень много фич, поддерживаемых clr, но которых нет в c#.
Я для кого писал "имхо"? С++ в .NET терпеть не могу, потому что он кривой. Выглядит ужасно, читается ужасно и вызывает отвращение. На си шарпе функционально все то же самое делается и намного удобнее. Имхо.
Цитата Сообщение от HIMen Посмотреть сообщение
И используя комбинацию управляемого и неуправляемого кода, можно добиться еще большей скорости, чем в c#.
Это неправда. Выполняется не код С++, а IL, а из какого языка он был сгенерен абсолютно не важно.
Цитата Сообщение от HIMen Посмотреть сообщение
vaistas, про mfc забудь
Когда придется написать нормальную win32 программу придется вспомнить.
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
11.04.2010, 02:19
vaistas, поддержу Vourhey, С++/CLI просто не о чем,маловероятно что тебе понадобится его использовать. Под .Net лучший выбор C#.
1
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 02:20
Цитата Сообщение от HIMen Посмотреть сообщение
Жаль что microsoft не развивает его.
майкрософт сами понимают, что с++ .нет никому не нужен, по большому счету.
С++ это просто корявенький порт языка С++ на .нет. А сишарп изначально под него заточен.
1
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
11.04.2010, 02:22
Цитата Сообщение от Vourhey Посмотреть сообщение
Выполняется не код С++, а IL, а из какого языка он был сгенерен абсолютно не важно.
C++, если только сборка не clr:рure
1
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 02:30

Не по теме:

Сори, за вышесказанную грубость )) писал не я, уже исправил :)



Добавлено через 6 минут
Цитата Сообщение от HIMen Посмотреть сообщение
C++, если только сборка не clr:рure
IL, а не С++.
HIMen, если кто-то собирается писать под .NET, то желательно обходиться вообще без обращения к вин32 напрямую. В противном случае смысла использования .NET - 0.
Приведи официальные результаты тестов, чтобы утверждать, что С++ .NET работает быстрее C# .NET. Я думаю, оба компилятора уже давно отлично оптимизированы. И С++, и сишарп.
К тому же, С++ всего лишь порт, повторюсь. Смешивать managed/unmanaged в своей программе - грязь.
1
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
11.04.2010, 02:48
Трудно поверить легко убедиться.
Сортировка пузырьком.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var arr = new int[10000];
var r = new Random();
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = r.Next(int.MinValue, int.MaxValue);
}
var t = DateTime.Now;
for (int i = arr.Length - 1; i > 0; i--)
{
    for (int j = 0; j < i; j++)
    {
        if (arr[j] > arr[j + 1])
        {
            int tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }
    }
}
Console.WriteLine(DateTime.Now - t);
c# безопасный код: среднее время 280, .net 4 client profile, release, компилировал в vs 2010
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
auto arr = gcnew array<int>(10000);
auto r = gcnew Random();
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = r->Next(int::MinValue, int::MaxValue);
}
DateTime t = DateTime::Now;
for (int i = arr->Length - 1; i > 0; i--)
{
    for (int j = 0; j < i; j++)
    {
        if (arr[j] > arr[j + 1])
        {
            int tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }
    }
}
Console::WriteLine(DateTime::Now - t);
C++CLI управляемый код (полностью аналогичный) среднее время 265
.net 3.5, release, настройки оптимизации не трогал, компилировал в vs 2008

..ща найду пример с указателями
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 03:11
HIMen, мне не нужны твои примеры, мне нужны официальные данные. Ты хоть сотню напиши. Я хочу видеть реальные аргументы,
почему для .НЕТ лучше использовать С++, чем сишарп.

Не по теме:

К слову, сортировка у меня выполняется в среднем за одно и то же время.

0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
11.04.2010, 03:13
Во. Пирамидальная сортировка.
Параметры компиляторов те же.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class SortingAlgorithm
{
    public static void HeapSort(int[] arr)
    {
        for (int i = (arr.Length >> 1) - 1; i >= 0; i--)
        {
            BuildHeap(arr, i, arr.Length - 1);
        }
        int temp;
        for (int i = arr.Length - 1; i > 0; i--)
        {
            temp = arr[i];
            arr[i] = arr[0];
            arr[0] = temp;
            BuildHeap(arr, 0, i - 1);
        }
    }
    static void BuildHeap(int[] arr, int k, int n)
    {
        int new_elem = arr[k];
        int child;
        while (k <= (n >> 1))
        {
            child = k << 1;
            if (child < n && arr[child] < arr[child + 1])
            {
                child++;
            }
            if (new_elem >= arr[child])
            {
                break;
            }
            arr[k] = arr[child];
            k = child;
        }
        arr[k] = new_elem;
    }
}
.........
var arr = new int[1000000];
var r = new Random();
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = r.Next(int.MinValue, int.MaxValue);
}
var t = DateTime.Now;
SortingAlgorithm.HeapSort(arr);
Console.WriteLine(DateTime.Now - t);
среднее время 480
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class SortingAlgorithm
{
    public unsafe static void UnsafeHeapSort(int[] arr)
    {
        fixed (int* ptr = arr)
        {
            HeapSort(ptr, arr.Length);
        }
    }
    public unsafe static void HeapSort(int* arr, int length)
    {
        for (var i = (length >> 1) - 1; i >= 0; i--)
        {
            BuildHeap(arr, i, length - 1);
        }
        int temp;
        for (int i = length - 1; i > 0; i--)
        {
            temp = arr[i];
            arr[i] = arr[0];
            arr[0] = temp;
            BuildHeap(arr, 0, i - 1);
        }
    }
    unsafe static void BuildHeap(int* arr, int k, int n)
    {
        int new_elem = arr[k];
        int child;
        while (k <= (n >> 1))
        {
            child = k << 1;
            if (child < n && arr[child] < arr[child + 1])
            {
                child++;
            }
            if (new_elem >= arr[child])
            {
                break;
            }
            arr[k] = arr[child];
            k = child;
        }
        arr[k] = new_elem;
    }    
}
......
var arr = new int[1000000];
var r = new Random();
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = r.Next(int.MinValue, int.MaxValue);
}
var t = DateTime.Now;
SortingAlgorithm.UnsafeHeapSort(arr);
Console.WriteLine(DateTime.Now - t);
Использование указателей поправляет дело, среднее время 460
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public ref class SortingAlgorithm
{
public:
    static void HeapSort(array<int>^ arr)
    {
        pin_ptr<int> ptr = &arr[0];
        pinHeapSort(ptr, arr->Length);      
    }
private:
    static void pinBuildHeap(int* ptr, int k, int n)
    {
        int new_elem = ptr[k];
        int child;
        while (k <= (n >> 1)) 
        {
            child = k << 1; 
            if (child < n && ptr[child] < ptr[child + 1])
            {
                child++;
            }
            if (new_elem >= ptr[child])
            {
                break;
            }
            ptr[k] = ptr[child]; 
            k = child;
        }
        ptr[k] = new_elem;
    }
    static void pinHeapSort(int* ptr, int length)
    {
        for (int i = (length >> 1) - 1; i >= 0; i--)
        {
            pinBuildHeap(ptr, i, length - 1);
        }            
        int temp;
        for (int i = length - 1; i > 0; i--)
        {
            temp = ptr[i];
            ptr[i] = ptr[0];
            ptr[0] = temp;
            pinBuildHeap(ptr, 0, i - 1);
        }         
    }
};
.....
auto arr = gcnew array<int>(1000000);
auto  r = gcnew Random();
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = r->Next(int::MinValue, int::MaxValue);
}
auto t = DateTime::Now;
SortingAlgorithm::HeapSort(arr);
Console::WriteLine(DateTime::Now - t);
с++cli с указателями. среднее время 450
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 03:14
см. выше
C++
1
auto arr = gcnew array<int>(1000000);
Фу, даже выглядит тошнотворно. C# куда элегантней. И в среднем не медленнее С++.
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
11.04.2010, 03:18
Цитата Сообщение от Vourhey Посмотреть сообщение
мне нужны официальные данные. Ты хоть сотню напиши. Я хочу видеть реальные аргументы
Кто для тебя официальное лицо? Microsoft? Станут ли они опускать свой основной язык?
Я вот наглядно вижу, где С++CLI обгоняет C#
Цитата Сообщение от Vourhey Посмотреть сообщение
IL, а не С++
Какой IL соответствует этому?
C++
1
int* i = new int[33];
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 03:20
Цитата Сообщение от HIMen Посмотреть сообщение
Кто для тебя официальное лицо? Microsoft? Станут ли они опускать свой основной язык?
А кто для меня индикатор достоверных данных? Ты? Стану ли я...
Цитата Сообщение от HIMen Посмотреть сообщение
Я вот наглядно вижу, где С++CLI обгоняет C#
У меня вровень.
Цитата Сообщение от HIMen Посмотреть сообщение
Какой IL соответствует этому?
Я-то откуда знаю, я на линухе скомпиляй да посмотри.
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
11.04.2010, 11:49
Фу, даже выглядит тошнотворно.
То же скажу что не ах. Но привыкают же как то люди.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
11.04.2010, 12:06
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Genius Ignat Посмотреть сообщение
То же скажу что не ах. Но привыкают же как то люди.
Вот именно, что не ах. Да, я изначально против С++ в .NET ничего не имею. Я просто говорю за себя, что я бы не стал его выбирать, так как, мне удобнее под .NET писать в C#. А противостояние С++ и сишарпа в .NET это из разряда священных войн - каждый выбирает, что ему удобно.
0
0 / 0 / 0
Регистрация: 26.12.2014
Сообщений: 1
26.12.2014, 11:33
HIMen схитрил в с++ компилировал под FrameWork 3.5, а c# под FrameWork 4.0. Вот и получил незначительную разницу в пару процентов. Скорость между неуправляемым и управляемым кодом отличается в десятки раз. И действительно нет хороших инструментов разработки под Win32 (x64).
А с управляемым кодом существует проблеме еще и версий виртуальных машин (Майкрософт их называет FrameWork-ами).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2014, 11:33
Помогаю со студенческими работами здесь

На чем лучше писать игры - Java, C++ или C#?
Приветствую... Передо мною стоит выбор - изучать Java, C++ или C#? Хотел бы заняться игростроем.

clr,mfc,windows forms
на чем лучше всего создавать оконный проект в MSVS2010? и как его собрать в 1 exe исполняемый файл ? и чтобы этот 1 exe можно было...

Есть определенная задача. На чем лучше писать, C++ или C#
Прошу не пинать ногами, отличия C# от C++ я уже изучил. Интересует ваше мнение. Сам привык работать в Visual C++. Есть определенная задача:...

В чем лучше писать базу данных MySql или accec
В чем лучше писать базу данных MySql или accec. Хочу спросить MySql тоже можно без сервера оперировать на C# (вин формс) или без сервера...

Haml+SCSS или простой html+css, на чем писать?
Здравствуйте. Около трех часов назад изучил основы haml, а также чуть, чуть SCSS, появился вопрос, на чем, собственно, лучше, быстрее и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru