Твой софтовый форум > Тематические форумы > Программирование

Визуал С++ в топку!!!

,

МС опять облажались!

Дата публикации: 24.01.2009 - 19:59
Pages: 1, 2
ZaHack
Всем, конечно, давно прожужжали уши насчет того что, Си круче Дельфи из-за размера получающихся ЕХЕшников.Этот аргумент был одним из самых важных в HollyWar'ах пасквилянтов и сишников.Но так ли это на самом деле? Я, от нечего делать решил проверить.
Почему же бинарники Дельфи весят так много? Может у Борланд плохие программсты? Нет.Программа, написанная на VB или на VC с применением MFC, занимает гораздо меньше места. Все потому, что великая и ужасная компания Microsoft приложила к этому свою лапу. MFC и runtime-библиотеки в VB весят ничуть не меньше, просто они скомпилены в DLL и входят в поставку Windows, а значит, их код не приходится таскать с собой в программах. В защиту Borland можно сказать, что такая возможность присутствует и в Delphi. Нужно просто в настройках проекта поставить галочку Build with runtime packages, тогда программа значительно уменьшится, но потребует наличия соответствующих runtime-библиотек. Естественно, эти библиотеки в поставку винды не входят, но в этом надо винить не Борланд, а монопольную политику мелкософта.
Значит будем программировать на чистом API ради чистоты эксперимента (каламбур получился smile.gif ). Итак VC++ 7, поехали. Нашел классический АПИшный Hello World на Си (плохо знаю эту среду, так что юзал гуугль):
#include
int WINAPI WinMain(HINSTANCE,HINSTANCE,PTSTR,int)
{
MessageBox(0,'Hello World', 'test', 0);
return 0;
}

Скомпильнул. 21 Кб - неплохо, очень неплохо, если вспомнить, сколько занимают дельфийские, даже пустые проекты.Средний размер пустой формы с кнопкой - 360 кб.
Теперь черед Delphi 7. Его я знаю лучше, так что функции смог задать более грамотно:

program Project1;
function MessageBox(hWnd: LongWord;lpText, lpCaption: PChar;uType: LongWord): Integer;stdcall;external 'user32.dll' name 'MessageBoxA';

procedure ExitProcess(uExitCode: LongWord);stdcall; external 'kernel32.dll' name 'ExitProcess';
begin
MessageBox(0, 'Hello World', 'test', 0);
ExitProcess(0);
end.

Естественно я делал через File-New-Console Application, а не, из автосоздаваемой формы. Компилируем, смотрим размер,и...делайте ваши ставки, господа...файл весит всего 13,5 Кб!!!!!
А что это значит? А это значит, что Дельфи оптимизирует лучше, линкует и компилирует тоже лучше, и надо сказать, быстрее. Майкрософт опять облажалась! Все, в топку её "визуальный" Си, переходим на Борланд Си++ wink.gif
ЗЫ Установил Visual C++ 2005 (типа, самый новый, типа прорыв) попытался скомпилить этот мессагебокс - не получилось, написал "windows.h - не найден".Подумал, что это у меня руки кривые и запустил поиск этого файла в папке с сишкой.И нет его там. Нет и все. Майкрософт опять плюнула в лицо тысячам программистов-сишников, "перейдя на новые технологии", выкинув вообще этот хидер из дистрибутива VC.==> Майкрософт в топку! mad.gif (еще раз)
ZaHack
Надыбал Visual Studio 6, а в ней этот мессагебокс занимает аж 150 Кб! Пламенный привет Биллу Гейтсу! mad.gif
Штуцер
А я пользуюсь Борландом С++ 5.02 с 1999г. Одно удовольствие. Правда, оптимизация по времени не отчень. Зато менее педантичный - матюгаеться меньше визюла, а результат тотже. По оптимизации Интел рулит, для Интел-процов, конечно. Но это же не мелкософт! Вот только почему Боря не делает новые версии С++? 5.02 и все...
ZaHack
Штуцер, можешь дать пару ссылок на учебники по Борланду С++ 5.02? А то все учебники, которые у меня есть начинаются так: "Запустим Visual C++" sad.gif Монополия Майкрософта, будь он неладен....
Memphis04
ZaHack, если хочешь научиться програмить на Борланде, то возь книжку для Делфи (Борланд Си понимает паскалевские функции, но... синтаксис разный sad.gif )
Хотя, если знаешь синтаксис Си и Паскаля- это не проблема.
Сам я сначала програмил на Делфи, а сейчас перешел на Си - без всяких книжек по Си
devmstr
Ох. Ну блин. Ну не зачем обсырать то, что не знаешь.
Рассказываю для тех, кто в танке!
В VC есть понятие Debug version и Realize version.
Debug стоит по умолчанию. Естессно при компиляции туда суется куча мусора. И файл весит очень много. Но если выбрать Realize, то ситуация резко меняется. Все очень просто.
Если еще поколдовать с найстройками, то можно добится размера предложенной программы - 5 kb.
И зачем спорить, что лучше, что хуже. У этих сред немного разные ниши рынка
devmstr
ZaHack,
>попытался скомпилить этот мессагебокс - не получилось, >Подумал, что это у меня руки кривые
Абсолютно правильно подумали. Действительно кривые. Только не обижайтесь, вы сами это написали.
Программа это прекрасно скомпилится и под VC2005.У меня у самого она стоит. Просто вы в множестве вариантов проектов выбрали не тот.
ZaHack
QUOTE(devmstr @ 11.05.2006 - 0:06)
ZaHack,
>попытался скомпилить этот мессагебокс - не получилось, >Подумал, что это у меня руки кривые
Абсолютно правильно подумали. Действительно кривые. Только не обижайтесь, вы сами это написали.
Программа это прекрасно скомпилится и под VC2005.У меня у самого она стоит. Просто вы в множестве вариантов проектов выбрали не тот.
*


Да я и не обижаюсь smile.gif Просто " в множестве вариантов проектов выбрали не тот." - этим майкрософт как всегда поражает, "множеством вариантов" и дебильнейшими настройками по умолчанию. Почему в продуктах от Борланда всегда все компилиться с первого раза и там настройки по умолчанию нормальные, то есть установил и начал работать. А у мелких - установил, протра*ался пять часов и только потом начал работать? wink.gif

Добавлено:

Просто интересно, а как надо компилить ту прогу в 2005??
devmstr
Не ну я не говорю, что Ms супер, но я имею довольно большой опыт работы с Delphi и VC. И мне кажется, что последнее время VC стал намного удобнее Delphi. Это выражается даже в том что Borland копирует интерфейс VC. Это не относится к Delphi 7, которую я считаю последней удачной оболочкой от борланд.
Насчет глупых настроек по умолчанию. Все прекрасно работает и в Debug. Просто компиилтся все быстрее в Debug. Да и отладку можно производить только в Debug. Так что для программ сложнее HelloWorld, это самое логичное. А когда выпускается Realize все лишнее удаляется. В Delphi несколько иной принцип. Но все равно если посмотреть acm код Delphi програмы, то некоторые куски отладочной информации есть, и они с нами навсегда, если опять же не поколдовать с компилером.
Ну и в последних Delphi тоже есть множество вариантов, так что выбрать новичку то, что нужно тоже не просто.

Как скомпилить.
Выбираете New project -> Visual C++ Projects->Win32 project.
Я выбираю всегда Empty Project и потом выбрав Аdd file to project добавляю cpp файл, куда это и вставить.
А вообще Вы не гарачитесь. Попробуйте эту среду, только без предвзятости презрения. Возможно, после превыкания вам понравится.

Насчет Borland С++ 5. smile.gif (: Это славный но очень подлый компилер. В нем есть некоторый набор глюков, без знания которых иногда опускаются руки. Так что не советую. Да и устарел он. Не любите Ms. Без проблем. Есть free, opensource, многоплатформеный mingw. Очень приятная штука. Есть к ней и оболочка Dev C++.
Вообщем выбор есть. Удачи Вам в коденге.
P.S. Эти строки я пишу из Gentoo Linux.
Think Difference.
Love.sys
Дамс.. почитал я тут и поянл, ZaHack, ты мало что смыслишь в программировании. Выпремляй руки. Я сам компилел мессаджебокс, на VS2005, ради спортивного интереса. Всё скомпилировалось, размеры меньше чем ты писал. Вывод - статья флуд.
Pages: 1, 2


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке: Визуал С++ в топку!!!
SoftoRooM © 2004-2024