Может ли язык программирования делать что-либо за пределами того, что обеспечивает ОС? - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь получить более целостное, общее и общее понимание программ и языков программирования.

Я хотел бы понять, как они на самом деле функционируют. Я понимаю, что на самом низком уровне находится машинный код, который равен 0 и 1. Тогда у вас есть сборка. Тогда у вас есть другой язык высокого уровня, где каждая инструкция / функция / метод / вызов / подпрограмма, как бы вы ее ни называли, соответствует некоторой инструкции или группе инструкций в сборке, верно? Язык более высокого уровня не может обеспечить или сделать что-либо, кроме того, что обеспечивает правильная языковая сборка более низкого уровня?

Аналогичным образом, поскольку весь код выполняется в ОС, этот код может выполнять только действия, предоставляемые ОС. Код не может сделать что-либо за пределами того, что на самом деле обеспечивает правильная ОС?

1 Ответ

0 голосов
/ 03 января 2019

На компьютере есть набор инструкций, машинный код, который определяет, что можно сделать на компьютере. По сути, ассемблерный код является более удобным представлением этого, поэтому ассемблерный код может делать все, что может делать машина. Язык программирования более высокого уровня должен работать на машине, поэтому он не может делать ничего, что машина не может сделать, хотя вполне может быть в состоянии выразить это более удобно (например, print "foo", а не несколько десятков машинного кода). инструкции). Выбор реализации зависит от того, генерирует ли компилятор для этого языка программирования непосредственно машинный код, или ассемблерный код, или любую другую форму, которая может нуждаться в дальнейшей обработке.

Это подводит нас к вопросу о том, может ли программа (независимо от того, в чем она написана) делать то, что ОС явно не предусматривает. Я нахожу это странным способом выразить это, поскольку цель написания программы - дать вам некоторые возможности, которых у вас не было раньше, поэтому в некотором смысле вы пишете программы только для тех вещей, которые ОС явно вам не предоставляет. Проблема заключается в определении того, что «обеспечивает» ОС. Если это ОС общего назначения, то ее разработчики, вероятно, намереваются «предоставить» вам возможность писать широкий спектр программ. ОС может выбрать предоставление какой-либо удобной функции (например, возможность создавать файлы), но если она не предоставляет такую ​​функцию, вы, возможно, можете сделать это самостоятельно, учитывая подходящую мотивацию (и, для примера создания файла, возможность выполнить дисковый ввод-вывод - возможно, для этого потребуется также написать драйвер диска).

...