Задать вопрос
dollar
@dollar
Делай добро и бросай его в воду.

На каком языке и с применением каких технологий, IDE лучше писать программы для Windows, которые бы занимали минимум оперативной памяти?

Такая программа должна иметь возможность работать с файлами, отслеживать работу других процессов (обращение к диску, к сети), иметь скромный GUI, доступ к сети. В общем, ничего необычного. То есть это не какая-нибудь игра, а простая системная утилита для какой-то специфической функции или отслеживания чего-то, которая незаметно сидит в трее, или вообще работает как служба, или даже является консольной. Главное условие - чтобы занимала минимум оперативной памяти. Без фанатизма, конечно. То есть разницы между 1.9Мб и 2.1Мб нет никакой, а вот разница между 100Кб и 10Мб существенная.

То есть нужен какой-то баланс между удобством и минимализмом, но с перекосом в сторону минимализма. Писать самую маленькую программу в мире не нужно (62 байта). Запихивать 3D игру в 1Кб тоже не нужно (mars). Просто не хотелось бы пихать в билд кучу всего подряд на все случаи жизни, что там будет лежать мертвым грузом и не использоваться (или, что ещё хуже, работать вхолостую).

К примеру, какой примерно размер билда может быть у утилиты, которая просто отслеживает двойной щелчок мыши во всех запущенных приложениях? GUI - просто кнопка "reset" и счетчик нажатий, без красивого оформления, с упором на минимализм. По моим прикидкам даже 100Кб будет много, хотя тянуть с собой стандартную библиотеку не зазорно, но всё же слишком жирно для такой простой задачи. А в оперативной памяти, соответственно, какой-нибудь полноценный сборщик мусора здесь тоже будет явно лишним.

Подразумевается, что таких мелких программ может одновременно работать очень много. К примеру, 20 штук (под разные хотелки). И если каждая будет под 100 Мб, то это как-то не круто. Вспоминаются старые добрые времена, когда всем за глаза хватало 640Кб...
  • Вопрос задан
  • 457 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
HemulGM
@HemulGM Куратор тега Windows
Delphi Developer, сис. админ
Если хотите минимум требований по ОЗУ попробуйте Delphi (RAD Studio). Ни каких фреймворков и сторонних библиотек. Единственный, самодостаточный exe, использование памяти которого контролируете вы сами.

5dff12d6edd12517608015.png
Пример приложения по-дефолту. Имеется возможность и уменьшить потребление, исключив некоторые элементы или изменив настройки компилятора, добавив директивы в проект.
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
index0h
@index0h
PHP, Golang. https://github.com/index0h
Под винду берите c#. То, сколько будет потреблять ресурсов - полностью на вашей совести.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
C#,VB, (NET 3 ) рантайм уже вшит во все операционки.

Если хочется экстремально малого объема используйте mfc / QT или для совсем маленьких WinAPI + WTL.
Сразу предупреждаю сам код не занимает место, основное это ресурсы.

Забавно что упомянули клики, писал такое
https://github.com/vkorotenko/mouse
Ответ написан
Jump
@Jump Куратор тега Windows
Системный администратор со стажем.
С#, С как правило.
Все зависит от того что будете использовать в написании программ.
От языка, технологий это мало зависит, от IDE вообще не зависит.

Вспоминаются старые добрые времена, когда всем за глаза хватало 640Кб..
.Тогда и задачи были немного другими.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Windows
software engineer
Писать самую маленькую программу в мире не нужно (62 байта).

Что-то слишком много как для самой маленькой программы в мире. Есть же гораздо меньше.

К примеру, какой примерно размер билда может быть у утилиты, которая просто отслеживает двойной щелчок мыши во всех запущенных приложениях?
GUI - просто кнопка "reset" и счетчик нажатий, без красивого оформления, с упором на минимализм. По моим прикидкам даже 100Кб будет много, хотя тянуть с собой стандартную библиотеку не зазорно, но всё же слишком жирно для такой простой задачи.

Зависит от того, что за операционная система, и перехватывает ли приложение доступ к мышке. Вы считаете размер файла на диске, или сколько программа будет в памяти занимать, с учетом подгрузки динамических стандартных библиотек?

Подразумевается, что таких мелких программ может одновременно работать очень много. К примеру, 20 штук (под разные хотелки). И если каждая будет под 100 Мб, то это как-то не круто. Вспоминаются старые добрые времена, когда всем за глаза хватало 640Кб...

Так напишите одну программу с 20-ю хотелками и все.

В старые добрые времена 640 кб никому не хватало. Вдобавок в те времена, windows была совсем не многозадачной и не умела все то, что сейчас происходит. Даже банально работа с графикой - есть разница между 320x200x256 и 1920x1024x65536.

По языкам - не суть важно. На самом деле на каждом языке можно писать с умом и оптимизацией. Но для ваших задач - нет смысла сейчас выбирать специализацию. Ваши программы очень простые. Попробуйте написать их на c++, на C# и на java/kotlin и посмотрите потом, какой язык вам больше подходит. Не бросайте все три после первой же программы. Попробуйте все-таки развиваться некоторое время во всех трех. Так поймете больше разных концепций, и собственно почему инструмент выбирают под задачу.
Ответ написан
mindtester
@mindtester Куратор тега Windows
http://iczin.su/hexagram_48
самый компактный и быстрый код - ассемблер
самая компактная "IDE" - notepad. хотя и это не предел. есть консольные редакторы. даже под винду

вы уж определитесь с хотелками. под винду нет инструмента лучше Visual Studio (а современный инсталятор отлично выбирает хотелки). если у вас слишком слабый комп - очень интересный инструмент Visual Studo Code (вот только исользует node.js и засирает систему кучами кешей npm, даже для собственного функционирования) зато наверное уже давно рекордсмен по количеству поддерживаемых языков (но плагины как правило и являются модулями npm)

ps на сколько мне известно, это последняя версия официального ассемлера МС - https://www.masm32.com/ там даже какая то своя IDE есть
но на masm свет клином не сошелся - https://www.nasm.us/
и для nasm есть даже очень легковестная ide, ссылка в гугл, по тому что там еще и статься с хабра вылетает - https://www.google.com/search?client=firefox-b-d&e...
.. и вообще, ассемблеров, как собак не резаных.. в чем глубинные отличия, кроме библиотек макросов, что логично, мне как правило даже и не понятно ))

pps Visual Studio Community редакция абсолютно бесплатна, по окончании 30 дневного трила, если не ошибаюсь, надо просто зарегистрироваться. лицензия (довльно дешевая) требуется для публикации приложений в "магазин" МС. она у меня есть давно, по этому что делать тем у кого ее нет - не подскажу

Visual Studo Code, а так же подавляющее большинство плагинов к ней, беспалтны абсолютно
Ответ написан
@res2001
Developer, ex-admin
Для реализации требуемого функционала можно вообще не использовать никаких библиотек - все обеспечивает ОС API (для никсов GUI - не входит в API, предоставляемое ядром, но это не играет роли).
Максимально маленький размер exe и потребляемой памяти можно получить на С/С++. Си чуть более компактен и быстр.
Писать на голом ОС API достаточно долго и трудоемко, и код будет максимально далек от кросс-платформенности (хотя в вопросе про это речь не идет). Но это будет очень хороший опыт и это достаточно интересно на небольших проектах.
Поэтому, если все же есть какие-то сроки, то следует использовать библиотеки, ускоряющие разработку. Конечно, библиотеки - это прослойка между ОС API и приложением и это увеличивает и объем исполняемого файла и объем потребляемой памяти. Но тут всегда нужно принимать какой-то компромис.
Для GUI под винду можно использовать WTL - это компактная ООП надстройка над виндовым GUI, разработана микрософт предоставляется в исходниках (по крайней мере когда я последний раз имел с ней дело). WTL - это по любому С++. Хватает и других библиотек для GUI.

На счет IDE - можно использовать любую - это не влияет на количество потребляемой приложением памяти.

Я тут не говорю про ассемблер, потому что нет смысла погружаться на этот уровень без очень веских причин. Использование ассемблера еще более увеличит время разработки.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Delphi7 - 7кб консольный exe-шник.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы