Почему же бинарники Дельфи весят так много? Может у Борланд плохие программсты? Нет.Программа, написанная на VB или на VC с применением MFC, занимает гораздо меньше места. Все потому, что великая и ужасная компания Microsoft приложила к этому свою лапу. MFC и runtime-библиотеки в VB весят ничуть не меньше, просто они скомпилены в DLL и входят в поставку Windows, а значит, их код не приходится таскать с собой в программах. В защиту Borland можно сказать, что такая возможность присутствует и в Delphi. Нужно просто в настройках проекта поставить галочку Build with runtime packages, тогда программа значительно уменьшится, но потребует наличия соответствующих runtime-библиотек. Естественно, эти библиотеки в поставку винды не входят, но в этом надо винить не Борланд, а монопольную политику мелкософта.
Значит будем программировать на чистом API ради чистоты эксперимента (каламбур получился ). Итак 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 Кб!!!!!
А что это значит? А это значит, что Дельфи оптимизирует лучше, линкует и компилирует тоже лучше, и надо сказать, быстрее. Майкрософт опять облажалась! Все, в топку её "визуальный" Си, переходим на Борланд Си++
ЗЫ Установил Visual C++ 2005 (типа, самый новый, типа прорыв) попытался скомпилить этот мессагебокс - не получилось, написал "windows.h - не найден".Подумал, что это у меня руки кривые и запустил поиск этого файла в папке с сишкой.И нет его там. Нет и все. Майкрософт опять плюнула в лицо тысячам программистов-сишников, "перейдя на новые технологии", выкинув вообще этот хидер из дистрибутива VC.==> Майкрософт в топку! (еще раз)