Всем, конечно, давно прожужжали уши насчет того что, Си круче Дельфи из-за размера получающихся ЕХЕшников.Этот аргумент был одним из самых важных в HollyWar'ах пасквилянтов и сишников.Но так ли это на самом деле? Я, от нечего делать решил проверить. Почему же бинарники Дельфи весят так много? Может у Борланд плохие программсты? Нет.Программа, написанная на 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.==> Майкрософт в топку! (еще раз)
ZaHack, 10.05.2006 - 18:49
Надыбал Visual Studio 6, а в ней этот мессагебокс занимает аж 150 Кб! Пламенный привет Биллу Гейтсу!
Штуцер, 10.05.2006 - 19:40
А я пользуюсь Борландом С++ 5.02 с 1999г. Одно удовольствие. Правда, оптимизация по времени не отчень. Зато менее педантичный - матюгаеться меньше визюла, а результат тотже. По оптимизации Интел рулит, для Интел-процов, конечно. Но это же не мелкософт! Вот только почему Боря не делает новые версии С++? 5.02 и все...
ZaHack, 10.05.2006 - 20:52
Штуцер, можешь дать пару ссылок на учебники по Борланду С++ 5.02? А то все учебники, которые у меня есть начинаются так: "Запустим Visual C++" Монополия Майкрософта, будь он неладен....
Memphis04, 10.05.2006 - 22:31
ZaHack, если хочешь научиться програмить на Борланде, то возь книжку для Делфи (Борланд Си понимает паскалевские функции, но... синтаксис разный ) Хотя, если знаешь синтаксис Си и Паскаля- это не проблема. Сам я сначала програмил на Делфи, а сейчас перешел на Си - без всяких книжек по Си
devmstr, 10.05.2006 - 22:51
Ох. Ну блин. Ну не зачем обсырать то, что не знаешь. Рассказываю для тех, кто в танке! В VC есть понятие Debug version и Realize version. Debug стоит по умолчанию. Естессно при компиляции туда суется куча мусора. И файл весит очень много. Но если выбрать Realize, то ситуация резко меняется. Все очень просто. Если еще поколдовать с найстройками, то можно добится размера предложенной программы - 5 kb. И зачем спорить, что лучше, что хуже. У этих сред немного разные ниши рынка
devmstr, 10.05.2006 - 23:06
ZaHack, >попытался скомпилить этот мессагебокс - не получилось, >Подумал, что это у меня руки кривые Абсолютно правильно подумали. Действительно кривые. Только не обижайтесь, вы сами это написали. Программа это прекрасно скомпилится и под VC2005.У меня у самого она стоит. Просто вы в множестве вариантов проектов выбрали не тот.
ZaHack, 10.05.2006 - 23:14
QUOTE(devmstr @ 11.05.2006 - 0:06)
ZaHack, >попытался скомпилить этот мессагебокс - не получилось, >Подумал, что это у меня руки кривые Абсолютно правильно подумали. Действительно кривые. Только не обижайтесь, вы сами это написали. Программа это прекрасно скомпилится и под VC2005.У меня у самого она стоит. Просто вы в множестве вариантов проектов выбрали не тот.
Да я и не обижаюсь Просто " в множестве вариантов проектов выбрали не тот." - этим майкрософт как всегда поражает, "множеством вариантов" и дебильнейшими настройками по умолчанию. Почему в продуктах от Борланда всегда все компилиться с первого раза и там настройки по умолчанию нормальные, то есть установил и начал работать. А у мелких - установил, протра*ался пять часов и только потом начал работать? Добавлено: Просто интересно, а как надо компилить ту прогу в 2005??
devmstr, 11.05.2006 - 0:32
Не ну я не говорю, что 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. (: Это славный но очень подлый компилер. В нем есть некоторый набор глюков, без знания которых иногда опускаются руки. Так что не советую. Да и устарел он. Не любите Ms. Без проблем. Есть free, opensource, многоплатформеный mingw. Очень приятная штука. Есть к ней и оболочка Dev C++. Вообщем выбор есть. Удачи Вам в коденге. P.S. Эти строки я пишу из Gentoo Linux. Think Difference.
Love.sys, 11.05.2006 - 23:44
Дамс.. почитал я тут и поянл, ZaHack, ты мало что смыслишь в программировании. Выпремляй руки. Я сам компилел мессаджебокс, на VS2005, ради спортивного интереса. Всё скомпилировалось, размеры меньше чем ты писал. Вывод - статья флуд.
ZaHack, 12.05.2006 - 22:36
Блина, ошибочка вышла! Оказывается, у меня Visual C Express Edition! То-то я удивлялся, что дистрибутив так мало весит...Это рекламная версия Студии от мелких, так что большинства функций там нет или урезаны. PS Все остальное - правда.Могу выложить видеоролик, с компиляцией и потом заценить размер ЕХЕшника.
ZaHack, 12.05.2006 - 22:53
QUOTE(Гражданин @ 12.05.2006 - 0:44)
ВыпрЕмляй руки. Я сам компилел мессаджебокс, на VS2005, ради спортивного интереса.
Выпрямляй правописание!
Выкладываю "хэлловорлды" чтобы все могли убедиться, что я не вру, как думают некоторые _http://rudn007.hut1.ru/C.rar
Ghost99, 24.01.2009 - 19:59
Цитата | Quote(ZaHack @ 12.05.2006 - 23:53)
Цитата | Quote(Гражданин @ 12.05.2006 - 0:44)
ВыпрЕмляй руки. Я сам компилел мессаджебокс, на VS2005, ради спортивного интереса.
Выпрямляй правописание!
Выкладываю "хэлловорлды" чтобы все могли убедиться, что я не вру, как думают некоторые _http://rudn007.hut1.ru/C.rar
Наткнулся случайно на топик. Вот вам пример на VS 2003 C++ размер 2 килобайта