PDA

Просмотр полной версии : Visual C++.NET и Visual C++6.0



kif
07.01.2005, 07:47
Сейчас учу самостоятельно C++ на Visual C++6.0. В чем основные преимущества Visual C++.NET? Насколько сложно перейти с Visual C++6.0 на Visual C++.NET?


У меня уже есть Visual C++ 6.0 SE (стандартное издание)
Поставил себе Microsoft Visual Studio .NET 2003. Смотрю там всё совсем по другому. Даже консольное приложение создается как-то не так(добавляются новые странные файлы). Стандарт ANSI ушел вообше в небытие.
Можно ли с помощью Visual C++.NET 2003 построить приложение не .NET т.е. чтобы оно хорошо работало без .NET Framework?
И при одной мысли, что умрет WinAPI и традиционное программирование, у меня перед глазами словно рушится мир. Фактически то, что сейчас учишь - всё история, всё напрасно. Не уйдет ли C++ со схоих лидирующих позиций, не станет ли он историей.

Да я слышал, что теперь нет необходимости заботится о высвобождении памяти, но ведь мы знаем, что прошлые попытки этой идее приводили к менее эффективным приложениям. И на кокой черт сдалась эта "виртуальная машина", ведь связь между разными языками можно было бы реализовать по другому-->Сначала генерируется некий байт-код, независимый от платформы, а уж потом он преобразуется в машинный код конкретной системы, т.е. наши файлы *.exe уже будут как и раньше в машинных кодах и запускаться напрямую.

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

В общем, все эти мысли наводят на меня грусть, тоску. Может кто-то объяснит, что .NET - это не плохо, это даже, наоборот, очень хорошо, что от этого выиграют все и очень много?

Честно сказать, самое главное, что меня беспокоит( возможно только оно одно и есть), это то, что наши программы будут не в машинных кодах, а в кокой-то фигне, которую будет выполнять среда .NET. Поэтому, пожалуйста, ответьте можно ли с помощью Visual C++.NET 2003 построить приложение не .NET?

Kolinus
10.01.2005, 18:47
можно.
там исправлено много багей в реализации Стандартной библиотеки.
говорят также что компилятор лучше - я на себе не ощутил, поэтому ничего от себя добавит не могу.
А по поводу байт кода - кто-то что-то придумал
а как же майкрософт стерпит что у него нет такого - он напишет "свое но только круче"
http://fog.od.ua/humor/istoriya_programmnyh_revoluciy_ot - в дополнение :)
вообще идея байт кода берет свое начало в скриптовых языках (имхо)
только там шла переносимость на уровне исходного кода, а в нет и яве - на уровне компилированного кода, что по идее повышает производительность по сравнению со скриптовыми языками, но снижает по сравнению с обычными.
С++ как и С на мой взгляд никуда не денется - ядра осей то надо на чем-то писать, да и сервера, сетевое и системное ПО тоже писать надо на чем-то.
Вдобавок есть класс задач, где за производительность борятся всевозможными путями - там и яве и нет дорога заказана (имхо).
Но лично мое мнение что многие современные типичные бизнес проекты намного проще делать на яве (нет - не знаю не юзал)

Absurd
11.01.2005, 11:56
Template Partial Specialization там есть? И как оно?
Loki собирает?

Kolinus
11.01.2005, 17:50
без понятия там поправилитакие баги как (убедился на собственном опыте)
передача листов, карт и т.д. (речь идет о STL) из длл в основную программу и наоборот - в 6 передавался только первый элемент и прога падала

Absurd
11.01.2005, 18:25
без понятия там поправилитакие баги как (убедился на собственном опыте)
передача листов, карт и т.д. (речь идет о STL) из длл в основную программу и наоборот - в 6 передавался только первый элемент и прога падала
Ясен перец - в длл одна С++ куча, а основной проге - другая.
Если надо - можно написать свой аллокатор, который работает через HeapAlloc().
Тогда контейнер, использующий этот аллокатор будет складировать данные в win32 куче.

Kolinus
11.01.2005, 18:34
Возможно.
о это была именно МС грабля - потому как в том проекте взяли реализацию stlport и все встало на свои места.
И нет студия - тоже все собрала и запустила корректно уже на своей родной STL реализации

Plastic
06.12.2005, 14:16
что вообще за бред - "а в нет и яве - на уровне компилированного кода, что по идее повышает производительность по сравнению со скриптовыми языками, но снижает по сравнению с обычными. "???
Человек спрашивал про Visual Studio .NET в составе которого есть мало чем отличающиеся от 6-й версии Ся!!!
Перешел с VC6 на .NET и никакой разницы не заметил, при том что пишу (на С++ в составе .NET) довольнотаки требовательные к скорости приложения - игры.
А про Яву ессно и так все понятно... :) она для того и создавалась.

Absurd
06.12.2005, 16:29
void setBit(unsigned char *buff, unsigned __int64 pos, bool val) {
const size_t offset = static_cast<size_t>(pos >> 3);
if (val) {
*(buff + offset) |= 1 << (pos & 0x7);
} else {
*(buff + offset) &= ~(1 << (pos & 0x7));
}
}

Попробуй скомпилировать этот код 6-кой и 7-кой с генерацией ASM-файлов. Разница кардинальная. Шестерка генерит совешенно уродский код с парой вызовов библиотечных функций.