Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.76
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
#1

Как создают маленькие приложения? (размером до ~50-70Кб) - C++

17.08.2012, 15:07. Просмотров 3174. Ответов 38
Метки нет (Все метки)

Доброго времени суток! Этот вопрос (Subject) меня интересует уже достаточно давно. Мне постоянно попадаются разнообразные оконные приложения, например:

1. FreeMemory
2. Разнообразные модули инсталляторов
3. Модули самораспаковывающихся архивов
4. И множество других приложений

Всех их объединяют 2 факта:
1. Они используют оконные интерфейсы (так же, не редко умеют "показывать картинки", распаковывать архивы, и выполнять множество прочих функций)
2. При этом занимают 30-70Кб
3. Не требуют "дополнительных" библиотек, то есть, грубо говоря, запускаются на Windows вплоть до версии Win9x без необходимости "доустановки" чего-то ещё.

Конечно, наиболее рациональный вариант, это писать на "голом Win32 API" и так далее. Но, лично мне вериться с трудом в то, что авторы всех этих программ методично и муторно использовали "голый" Win32 API (и, если следовать этой логике. то некоторые, ещё и написали свои собственные "контролы").

Размер готовых приложений, тестировал буквально во всем (везде), что (где) мог найти (всяческие компиляторы + разнообразные примеры, разнообразные IDE и прочие "плюшки").

Собственно, под "проверку" попали:
1. Visual Studio (разные версии)
2. CodeBlocks + MinGW + разнообразные оконные фреймворки
3. QT Creator
4. Borland C++ Builder

Ничего из выше перечисленного, почему-то не генерирует .EXE, со статической линковкой (даже после сжатия каким-нибудь UPX'ом), который бы занимал не более 70Кб и при этом обладал хотя бы частью функционала описанного выше. В лучшем случае, удаётся сжать программу килобайт эдак в 200.

Собственно, вопрос. На чем (как) пишутся подобные программы? Какая используется при этом IDE, компилятор и пр. "плюшки"? То есть, как можно уместить "де-архиватор" + штуковину, отображающую картинку в качестве заставки (сплэш-скрин) и ещё кучу всякого функционала (работа с реестром, ини-файлы, и пр.) в 50Кб? Ассемблер+WinAPI наше всё?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2012, 15:07     Как создают маленькие приложения? (размером до ~50-70Кб)
Посмотрите здесь:
Как создают современные компьютерные игры? C++
C++ WinAPI Создать окно приложения размером в одну шестнадцатую площади экрана с заголовком
Как получить большие и маленькие символы C++
Геттеры создают объекты C++
C++ Builder Определить какую фигуру создают точки
C++ Из заданной матрицы A размером N*M получить матрицу В размером K*3 по правилу: первый столбец состоит из полож
C++ Builder Из матрицы размером n получить матрицу размером n-1 путем удаления строки и столбца на пересечении max элемент
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
17.08.2012, 16:18  [ТС]     Как создают маленькие приложения? (размером до ~50-70Кб) #16
Цитата Сообщение от Vourhey Посмотреть сообщение
К чему все это?
Это так, к слову. Крик души
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
18.08.2012, 13:04     Как создают маленькие приложения? (размером до ~50-70Кб) #17
Цитата Сообщение от wolfalone
Но, к хорошему привыкаешь быстро
В советские времена было очень мало автомобильных сервисов и были они сравнительно дорогими. Поэтому 99.9% автомобилистов разбирались во внутренностях автомобиля и понимали, как он устроен. Сейчас очень много иномарок и зарубежных сервисных центорв, где всё тебе сделают культурно и хорошо, а тебе остаётся только ковырять в носу и заплатить деньги за сервис. Удобно? Несомненно. Только теперь приличная доля автомобилистов вообще не разбирается в автомобилях.

С IDE vs редактор/консоль всё ровно то же самое. В IDE работать удобно.Только основная масса тех, кто работает в IDE, вообще не понимают, хотя бы как устроен процесс компиляции, не говоря уж о более сложных вещах. И твои вопросы (особенно в части упоминания ассемблера) довольно наглядно это подтверждают
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
18.08.2012, 23:00  [ТС]     Как создают маленькие приложения? (размером до ~50-70Кб) #18
Evg, не совсем написанным выше, я согласен. Как утроен процесс компиляции я прекрасно знаю, хотя принципиально не пишу в консоли в виду собственных идеологических убеждений. Так же как и не езжу на работу на велосипеде по тому, что это намного полезнее для здоровья и окружающий среды, нежели удобная комфортная иномарка с круиз-контролем и кучей электроники которая думает за водителя не давая совершать ему опрометчивых решений.

Хотя, в том, что я не разбираюсь в деталях на уровне "дизассемблирования её кода с целью последующего патчинга" - Вы бесспорно правы. И не разбираюсь я в этом не потому, что мне лень или что-то подобное, а по тому, что время НЕ потраченное на ремонт машины - я посвящаю развитию в других областях. К тому же, в отличии от машин того времени (да и вообще российского автопрома, пожалуй) моя машине не ломается в самый не подходящий момент, заставляя тем самым тратить время на её ремонт. К тому же, именно спрос рождает предложение, а не наоборот. Эти самые "сервисы" появились, так как на них появился спрос, который обусловлен повышением уровня жизни населения.

Так же: я НЕ:
1. Пеку себе хлеб (покупаю его в магазине)
2. Шью себе носки и прочие элементы одежды (для этого так же, есть магазин)
3. Не занимаюсь сборкой и ремонтом сотовых телефонов (магазин)
4. Пытаюсь заменить самому себе традиционных врачей и хирургов в том числе, самостоятельно вырезая себе аппендицит или вырвать зубы обусловив это тем, что раньше наши предки хорошо знали собственную анатомию и поступали именно так (для этого есть терапевты, стоматологи, хирурги и прочие специалисты своего дела)

Думаю, список можно не продолжать, так как моя мысль и точка зрения уже должны прояснится.

Так же, хочу заметить что я (видимо тут стоит добавить слово "тоже") выходец из старой школы программистов, где программировали ещё под "Агаты" и "Векторы" и кроме консоли ничего лучше не знали, да и сравнивать её собственно было не с чем. И программирование мыло настолько мутерным, и мало производительным, что передать это словами невозможно. "И создал Бог землю, и была она ни большой ни маленькой, так как сравнить её было не с чем" (с) Какой-то фильм. Хотя, на то были конечно и свои причины. Когда у компьютера оперативная память измеряется килобайтами, а вместо винчестера - 5,25" дискета... Сложно себе представить современные технологии в рамках подобной машины.

На счёт замечания про "ассемблер", честно говоря не совсем понял. Случаи, когда программа написанная грамотным программистом на ассемблере сопоставима по размеру с программой написанной грамотным программистом C/C++, крайне редки.

Так же, не могу не вспомнить слова одного из преподавателей бизнес школы, курса "Молодой руководитель". Эти слова были для меня буквально пророческими, несколько лет: "Идеальных трудовых ресурсов не бывает, вам придётся работать с тем, что есть". Это я к тому, что, к сожалению, не все мои коллеги, подчиненные и прочие люди с которыми мне приходилось работать были выходцами из старой школы, и могли писать программы в консоли порой вообще без редактора (что уж там говорить про IDE). Я даже больше скажу, многие из них вообще плохо представляли, что такое консоль. Но, это нисколько не мешало им делать качественные программные продукты, удовлетворяющие всем требованиям заказчика.


Цитата Сообщение от Evg Посмотреть сообщение
С IDE vs редактор/консоль всё ровно то же самое. В IDE работать удобно.
Тут я согласен на все 100%. IDE vs Console это то же самое, что сравнивать российский автопром, который выпускает машины для: мало обеспеченных слоёв населения, а так же водителей-экстрималов, любителей "ремонтировать машины", вместо того, что бы ездить на них и прочих энтузиастов. Как ЭТО вообще можно сравнивать с машиной сделанной "людьми для людей", для того что бы "ездить" (а не заниматься ремонтом) - я не понимаю. Я вообще, с ужасом вспоминаю, российскую машину тех времён когда 99.9% водителей было "шофёрами" и знали свою машину буквально "до болтика". Это незабываемое чувство экстрима, когда на скорости 90км/ч машина постепенно начинает терять управление. Особенно, при вождении подобных автомобилей, меня вдохновлял тот факт, что при аварии со "столбом", на скорости 60км/ч, от водителя, в большинстве случаев остаются только голова и ноги. Это во истину уроки именно "старой школы", которые можно обозначит никак иначе, кроме как: "стань асом или умри". Но, мир не может состоять только лишь из гениев и мёртвых... как бы нам этого не хотелось. Он будет слишком скучный. Мир давно стал цветным и уже не похож на старый бабушкин телевизор.

Так же, хочу не согласиться с тем, что "большинство не знает...". Есть то большинство, которое не хочет знать. И IDE к этому, порой имеет достаточно косвенное отношение. Лично я не вижу ничего зазорного в том, что большинство параметров компилятора можно единожды указать в "свойствах проекта", единожды и сохранить их, там, не вбивая их каждый раз в консоли, тем самым сэкономить время и нервы, благодаря, тому факту, что все последующие сборки можно пустить с этими настройками, путём сохранения этих параметров компиляции вместе с проектом в системе контроля версий и автоматическим обновлением этих параметров у коллег.

К тому же, я не разделяю Вашего мнения о том, что "99.9% программистов сейчас уже не те "что раньше". Так как же и НЕ считаю, что 99.9% девушек зашедших в бордель и попросивших стакан воды - шлюхи, только по тому, что они зашли в бордель. Хотя, в чем-то Вы правы. При СССР и колбаса была вкуснее и люди добрее и молоко жирнее было... и есть было нечего. И людей расстреливали массово, ликвидируя "среднюю прослойку населения" как таковую. Оставались только крайности: крестьяне и "НЕ крестьяне" (бедные и богатые), ничего "посередине" в принципе, не было.

Я хотел ещё много чего добавить к выше сказанному, но решил отвлечься и пойти выпить "палёного" молока (так как не держу свою корову, не смотря на то, что умышленно переехал в загородный дом [в строительстве которого принимал активное участие] и пить, "правильное" парное молоко, у меня к сожалению нет возможности), которое произвёл кто-то из тех самых 99.9% которые мало что в "этом" понимают. К тому же, мне кажется, нам всё-таки стоит сменить либо ракурс разговора, либо саму тему вообще (то есть, продолжить обсуждать наши личные доводы) в другой теме, либо всё-таки вернуться к вопросу, который звучит примерно так: "Использование "голых" WinAPI - это единственный способ написать приложение, которое после сжатия можно уместить в 40-70Кб, при условии того, что оно использует windows-окна и обладает, например функцией распаковки архивов?".

Добавлено через 10 минут
P.S. Постоянно задаюсь себе вопросом: почему нет консольной версии программы "1с бухгалтерия"? Почему нет "Need for Speed" и прочих популярных игр с управлением из командной строки? И зачем вообще придумали все эти "удобства", типа "графического интерфейса", "подсветки синтаксиса", "авто завершения кода", динамического анализа кода прямо во время разработки, IDE и прочие "ненужности". Ведь гораздо проще всё было свести к единому стандарту: экран - чёрный, шрифт - белый (серый). Представляете, какая была экономия машинных ресурсов, трафика и времени на изучения всего этого "изобилия" кошерных технологий? Бухгалтер, сис. админ, программист и про-геймер мог бы быть одним человеком! ***Если есть желающие рьяно подискутировать на эту тему - я прошу Вас создать отдельную ветку (тему) в форуме и дать ссылку.
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
18.08.2012, 23:59     Как создают маленькие приложения? (размером до ~50-70Кб) #19
wolfalone, ты почему-то воспринимаешь сказнное мной как претензию. А это не претензия, а объяснение на пальцах того, что IDE'шники в основной своей массе плохо разбираются в устройстве. То, что им не нужно, я и не пытаюсь оспаривать. Не нужно - ну и не надо. Но вот если вдруг стало нужно, то значит настала пора научиться работать без IDE. По другому понять будет сложно. Либо работать под линуксом или с бесплатными библиотеками под виндами, потому что в этом случае е$ля будет обеспечена и придётся постоянно ковыряться в гугле, что обязательно повлечёт за собой новые и полезные знания

Цитата Сообщение от wolfalone Посмотреть сообщение
На счёт замечания про "ассемблер", честно говоря не совсем понял
В контексте "работать на winapi" программа, написанная на ассемблере или любом другом языке программирования будет иметь примерно одинаковый размер. И пусть они будут отличаться в 2 или в 3 раза. Но это не на 2 и не на 3 порядка, как это получается при попытке работать через любую мало-мальски приличную надстройку над winapi в виде библиотеки классов

Цитата Сообщение от wolfalone Посмотреть сообщение
Лично я не вижу ничего зазорного в том, что большинство параметров компилятора можно единожды указать в "свойствах проекта", единожды и сохранить их
Да я не о настройках компилятора говорил, а об общем понимании процесса компиляции, устройства компилятора, устройства библиотек, о разнице между программированием на ассемблере и программирования на языке и т.п. Твои непонятки в постановке вопроса данной темы растут именно от непонимания всего этого процесса. Если тебя реально интересует заданный тобой вопрос, то тебе придётся научиться. Если вопрос задан с целью просто поболтать и получить дежурный ответ - в этом тоже нет ничего плохого. Поверхностного понимания во многих случаях более, чем достаточно

Цитата Сообщение от wolfalone Посмотреть сообщение
Постоянно задаюсь себе вопросом: почему нет консольной версии программы "1с бухгалтерия"?
Подобные попытки острить в очередной раз показывают, что тебе попросту не хватает опыта, чтобы понимать, зачем вообще люди работают в консоли, ибо в IDE кажется, что всё намного проще
wolfalone
В экстазе
145 / 129 / 28
Регистрация: 05.08.2012
Сообщений: 680
Записей в блоге: 3
19.08.2012, 01:29  [ТС]     Как создают маленькие приложения? (размером до ~50-70Кб) #20
Цитата Сообщение от Evg Посмотреть сообщение
зачем вообще люди работают в консоли, ибо в IDE кажется, что всё намного проще
Всё сугубо относительно. В IDE намного проще программировать, особенно когда работаешь с другими людьми, не зависимо от того нравятся они тебе (в смысле, мне) или нет. Например, мне буквально ежедневно приходиться настраивать разнообразные Linux-сервера (в меру своих навыков), для веб-разработок, установки/настройки очередного репозитория кода и прочих внутренних нужд. Хотя, это должен делать системный администратор, на мой взгляд. Но, мой взгляд в данном контексте не учитывается, так как с некоторых пор я прекратил предпринимательскую деятельно и перестал быть "сам себе хозяин", уйдя работать в крупную фирму. И... скажу Вам, "да!", консоль это круто, без сомнений. Всё совершенно под рукой, особенно радуют редакторы заточенные под правку всячески конфигов, коих постоянно приходиться править массы.

В контексте же программирования, мне (*лично!) гораздо удобнее (проще), подстроиться под других, нежели в очередной раз пытаться устроить революцию и научить всех "делать как надо". "Под других", это значит, "писать в IDE", в моём случае. Спустя несколько лет, это перерастает в привычку или даже более того. К тому же, само понятие "консоль", в IDE никто не отменял. Не знаю, как сейчас (думаю, ничего не изменилось), но раньше, например в NetBeans при разработке на PHP Symfony (web) была такая архиудобная штука, как командная строка и т.н. "консоль управления", прямо в самой IDE. Нечто аналогичное было и для большинства других языков/платформ/разработок в рамках NetBeans.

Лично для себя, не вижу ни одной объективной причины, писать именно код и именно в консоли, в данный момент времени (то бишь, сейчас).


Цитата Сообщение от Evg Посмотреть сообщение
это не претензия
Это просто праздник какой-то! Я уж было подумал, что имею честь общаться с очередным ярым фанатом "linux наше фсё", "фортачки ф топку", "DOS спасёт мир", и "в DOS ничё ни зависало". Собственно, спасибо.


Цитата Сообщение от Evg Посмотреть сообщение
я не о настройках компилятора говорил, а об общем понимании процесса компиляции, устройства компилятора, устройства библиотек
В чём-то, Вы правы. Я уже не помню всех досконально тонкостей процесса компиляции, из за давности лет и изменения профиля программирования в целом, а так же, других жизненных изменений. Дипломную (или иную) работу, типа "написать свой компилятор С++" мне тоже делать не приходилось, а делать её, "что бы делать" я не находил целесообразным. Устройство библиотек (в т.ч. стандартных для C/++) мы изучали, но сейчас я тоже вряд ли смогу похвастаться их знаниями. Хотя, с другой стороны, я не пытаюсь выставить себя профессиональным C++ программистом. Минимум 5 лет, отсутствия всякой практики - дают о себе знать.


Цитата Сообщение от Evg Посмотреть сообщение
И пусть они будут отличаться в 2 или в 3 раза. Но это не на 2 и не на 3
С этим я тоже не могу поспорить. Я даже больше скажу, мне прекрасно известна причина, почему программы наипсанные на ассемблере занимают меньше, нежели программы написанные на C++. Так же, мне хорошо известно как всеми нами любимое ООП порой "раздувает" код (я имею в виду, машинный) до значительных размеров, сокращает быстродействие программы и так далее.

Если вернуться к вопросу, об ассемблере, то, давайте я попробую уточнить вопрос.

У нас есть программа, написанная на C++ Builder, которая в сжатом виде занимает ~200Кб. У программы есть окно и класс (или функция) для распаковки ZIP-архивов. Если программу написать на ассемблере, с учётом, что
Цитата Сообщение от Evg Посмотреть сообщение
они будут отличаться в 2 или в 3 раза
то, получиться как раз около 70Кб.

Это я конечно утрирую. Так как, в реале 70Кб там совсем не получиться, по той простой причине, что C++ Builder использует VCL, и как раз именно VCL-library из-за множественного наследования раздувает код до подобных размеров. Сам компилятор тут не причём, проверено.

Если говорить о Visual Studio, QT(Creator) и прочих "плюшек" - при статической линковке, ситуация примерно аналогичная.

Собственно, отсуда и подобный вопрос: как авторам программ (для примера возьмём модули инсталляторов или самораспаковывающихся архивов), удаётся достичь столь мирезных размеров приложения? Они используют чистый WinAPI?

*для ещё большей наглядности, я прикладываю файл-пример, в виде самораспаковывающегося архива. Сам модуль-распаковщик занимает ~40Кб, вместе с функционалом распаковки. При этом, модуль сам по себе не сжат. Сжатый модуль, занимал бы ~20Кб. Для достижения подобных результатов можно использовать WinAPI only? Никаких готовых библиотек, а ещё лучше готовых комплектов (IDE+Lib's, аля QTCreator, Visual Studio, etc) нет?
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
19.08.2012, 11:50     Как создают маленькие приложения? (размером до ~50-70Кб) #21
wolfalone, разговор начинает напоминать разговор слепого с глухим. Я тебе об одном, а ты о другом. Давай чтобы не распространяться я покажу конкретный пример и задам конкретный вопрос. Я не программирую под виндами, а потому попросту не знаю, как этот вопрос сформулировать в контексте винды и любой их IDE. Вопрос ставится в контексте линукса, тем более, что с ним ты знаком

Имеется пример:

C
#include <string.h>
 
int main (void)
{
  int x = 0;
 
  if (x)
    strcasestr(0, 0);
 
  return 0;
}
Компилируем его в режиме с оптимизациями и без оптимизаций. В обоих случаях используем статическую линковку, чтобы итоговый бинарник не зависел от внешних библиотек. Далее сравниваем размеры, полученные в обоих случаях

Bash
$ gcc t.c -static
$ ls -l a.out
... 586230 ...
$ gcc -O2 t.c -static
$ ls -l a.out
... 577892 ...
Вопрос N1. Почему включение оптимизаций для исходника из трёх строк размер бинарника уменьшился аж на 8 килобайт?

Вопрос N2. Почему при замене strcasestr на strstr данный эффект не проявляется?

Ну и скажу сразу, в хидерах оба интерфейса описаны как функции, но не макросы, из-за чего мог бы возникнуть такой эффект

Цитата Сообщение от wolfalone Посмотреть сообщение
Собственно, отсуда и подобный вопрос: как авторам программ (для примера возьмём модули инсталляторов или самораспаковывающихся архивов), удаётся достичь столь мирезных размеров приложения? Они используют чистый WinAPI?
Причина в том, что они НЕ используют сторонних библиотек. Библиотеки, как правило, никаких новых принципиальных возможностей не дают, а просто делают программирование более удобным, поскольку winapi неудобен для программирования. Возможно ты когда-нибудь обращал внимание на то, что программы, написанные на чистом винапи, как правило, являются очень топорными с точки зрения удобства пользования (либо слишком примитивными, а потому удобный пользовательский интерфейс там и не нужен). Всё это растёт от того, что чистый винапи неудобен для программирования, особенно больших приложений

Добавлено через 22 минуты
Ну и добавлю, что причины, по которым использование библиотек (типа VCL) раздувает бинарник, примерно те же самые, что и причины в моём примере. И в основе всего лежит одна и та же штука: в полученном бинарнике много кода, который твоя программа никогда не исполнит, но который пришлось прилинковать к бинарнику
ExeiLj
9 / 9 / 1
Регистрация: 02.08.2012
Сообщений: 128
23.08.2012, 17:23     Как создают маленькие приложения? (размером до ~50-70Кб) #22
Почитал тему - довольно интересно.
Так может кто скажет, как настроить Embarcadero RAD Studio, чтобы компилить малые проги (пусть даже только с WinAPI)?
Когда я копилю пустую прогу в VCL Form Application, то получается 300+ кб, в Консоли 7кб. А я читал, что прога (пустая) может весить 1кб! Как этого добиться?

PS: интересно мнение программистов: у меня прога выполняет банальное чтение данных с реестра и при компиляции ехе весит 3мб - Этож блин дофига!!! (VCL Form Application)
Дак вот стоит ли переделывать все на чистый ВинАПИ, в консоли писать вручную окна, чтобы она весила килобайты? или это глупое задротство?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
23.08.2012, 17:32     Как создают маленькие приложения? (размером до ~50-70Кб) #23
ExeiLj, А зачем? Сейчас винты на террабайты, а вы о 3 мб беспокоитесь.
ExeiLj
9 / 9 / 1
Регистрация: 02.08.2012
Сообщений: 128
23.08.2012, 17:40     Как создают маленькие приложения? (размером до ~50-70Кб) #24
Цитата Сообщение от ForEveR Посмотреть сообщение
ExeiLj, А зачем? Сейчас винты на террабайты, а вы о 3 мб беспокоитесь.
Просто мне это кажется...ммм...не знаю, не по-трукодерски, что такой маленький функционал и такой вес программки
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
23.08.2012, 18:40     Как создают маленькие приложения? (размером до ~50-70Кб) #25
Цитата Сообщение от ExeiLj Посмотреть сообщение
Когда я копилю пустую прогу в VCL Form Application
Вот это и есть ключевое слово. У тебя есть библиотека. При этом линкер не знает, будешь ты оттуда что-то использовать, или не будешь, а потому по общим правилам прилинкует. Именно в этом причина вопроса N1 из поста #21 - у тебя номинально в коде присутствует вызов, а потому библиотека с данной функцией будет подцеплена. И не важно, что реально до этой функции исполнение не дойдёт.

Когда ты используешь VCL, то у тебя аналогичным образом цепляется целый паровоз всякого барахла, зацепленный, условно говоря, за какую-нибудь одну функцию инициализации. Да и в моём примере на Си было то же самое - пустой main, а код получился на 500 килобайт, только вместо VCL там имеется целый паровоз всяких инициализаций системной библиотеки glibc
quadrathell
1 / 1 / 0
Регистрация: 24.10.2009
Сообщений: 22
23.08.2012, 18:41     Как создают маленькие приложения? (размером до ~50-70Кб) #26
Одно дело вызвать библиотеку рисующую окна и использовать 5% её возможностей, а остальное просто балласт.
Другое дело создать своё окно по методам линий и заливок.
Третье, разобрать библиотеку и повырезать всё ненужное, оставить только под свои нужды...

Да и вообще, знать низкоуровневое программирование это хорошо, но если ваша задача состоит в какой-то дурне или безделушке которых в интернете полно, то будь оно проклято, сидеть месяцами и ломать голову из за маленького веса проги, да пусть оно хоть 3 мб. весит лишбы выполняло свою работу. Просто в написании кода на любом языке используйте правильно переменные и упрошайте сводя программу к минимум строк.

На счёт больших весов, встречал программы которые вырезают из ехе - шников, лишние куски (резервные копии исходников, неиспользуемые Dll ки и прочий мусор который раздувает программу.)
Как называются не помню.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.08.2012, 18:45     Как создают маленькие приложения? (размером до ~50-70Кб) #27
Цитата Сообщение от quadrathell Посмотреть сообщение
Просто в написании кода на любом языке используйте правильно переменные и упрошайте сводя программу к минимум строк.
код программы должен быть написан ДЛЯ людей, а на зажимать килобайты исходников с вашим "минимум строк"
quadrathell
1 / 1 / 0
Регистрация: 24.10.2009
Сообщений: 22
23.08.2012, 18:57     Как создают маленькие приложения? (размером до ~50-70Кб) #28
Цитата Сообщение от Jupiter Посмотреть сообщение
код программы должен быть написан ДЛЯ людей, а на зажимать килобайты исходников с вашим "минимум строк"
Начнём с того что у каждой команды есть приоритет в скорости её работы, а так же объём в памяти и обработке компилятором.
Для того чтобы код был написан для людей, пишите комментарии к строкам, это пригодится вам и тем кому попадёт исходник.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
23.08.2012, 19:55     Как создают маленькие приложения? (размером до ~50-70Кб) #29
quadrathell, Это не правильно. Код должен быть самодокументирован и без комментариев в очевидных местах + должен быть легко читаем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2012, 20:44     Как создают маленькие приложения? (размером до ~50-70Кб)
Еще ссылки по теме:
Подскажите, как скрыть окно приложения из Диспетчер задач -> Приложения? C++ WinAPI
C++ Можно ли коробку размером a\b\c упаковать в посылку размером r\s\t ?
Как убрать из одного числа другие маленькие числа? C++
Из заданной матрицы A размером получить матрицу В размером по правилу: первый столбец состоит из положительных элементов, второй – из отрицате C++
Определить взаимное расположение трех точек на плоскости (совпадают, на одной прямой, создают треугольник) C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
23.08.2012, 20:44     Как создают маленькие приложения? (размером до ~50-70Кб) #30
Цитата Сообщение от quadrathell Посмотреть сообщение
а так же объём в памяти
Когда есть приоритеты по объёму в памяти (если вдруг такое и вправду бывает), то речь идёт никак не о том, чтобы полмега сэкономить на том, что программа из простой и понятной превращается в геморройную и трудновкуриваемую
Yandex
Объявления
23.08.2012, 20:44     Как создают маленькие приложения? (размером до ~50-70Кб)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru