Начинающий программист
как сделать вот это? Я только начинаю программировать и меня всегда интересовал вопрос как именно из кода получаются exe файлы. Решение этой проблемы очень бы помогло
Ответы (1 шт):
Начальный этап загрузки компьютера
Когда вы запускаете компьютер, он загружает в память код из BIOS и выполняет его. Этот код проверяет работоспособность оборудования, загружает настройки, применяет их и делает другие необходимые при старте вещи. Дальше он ищет загрузчик, который находится в определенном месте жесткого диска (или другого носителя) и загружает его тоже в память, передавая управление ему (указатель на начало кода и дальше процессор читает инструкции по шагам). Обычно так стартует операционная система, хотя можно под загрузчиком сделать что угодно.
Загрузка операционной системы
Загрузчик ОС загружает в память другие части системы: ядро, драйвера устройств, утилиты и так далее. В конце концов у вас стартует операционная система. Операционная система состоит из множества компонентов, в том числе она умеет читать данные с жесткого диска и рисовать графический интерфейс.
Загрузка программ в память и исполнение
Дальше проще, ваш код как правило представляет из себя обычный файл, который оформлен определенным образом. Операционная система читает заголовок (первые строки) этого файла и понимает, что он из себя представляет. Таким образом она определяет, что файл *.exe и его можно запускать. Или *.msi. Или любой другой файл, который можно выполнить. Переводом кода в инструкции процессора и оформление файла занимаются компиляторы - уже написанные специальные программы.
А дальше просто, ваша система загружает в память этот *.exe и выполняет его с некоторыми ограничениями, поскольку операционная система следит за вызовами и управляет выполнением. Но по факту все так же - указатель на начало и дальше процессор читает по шагам инструкции. Так же вы можете "попросить" операционную систему выполнить некоторую работу. Одна из них - это показать окошко и другие элементы графического интерфейса. Писать самому окошки не приходится.
Можно конечно обойтись без ОС и самому писать графический интерфейс, но тогда вам нужно будет тесно познакомиться с тем, как общаться на низком уровне с железом. По факту - посылать ему команды и получать на выходе результат.
Немного о Java, раз уж она в тегах
Иногда ОС передает файл на выполнение другим программам. К примеру, если вы нажмете на *.txt, то операционная система посмотрит, какому *.exe этот файл передать и вызовет этот *.exe передав файл (тот же блокнот notepad.exe получит файл *.txt и отобразит его содержание). Примерно так же работает программы на Java, они не выполняются напрямую, а выполняются через JVM (виртуальную машину Java). Поэтому на Java вы не встретите *.exe файлов.
Больше информации
Подробнее обо всем этом можно написать книгу, что в принципе уже было сделано: (для примера в магазине Ozon: Эндрю Таненбаум - Архитектура компьютера)
P.S.> Обычно программиста эти детали не волнуют, он пишет код и получает результат. Если нужен графический интерфейс, то смотрят как использовать GUI-библиотеку на языке, на котором пишут.