Нужна ли интерпретируемым языкам операционная система для работы? - PullRequest
0 голосов
/ 26 февраля 2019

Нужна ли интерпретируемым языкам, таким как Java и Python, операционная система для работы?

Например, на чистом ARM-микроконтроллере можно ли установить интерпретатор так, чтобы мы могли иметь оба скомпилированных кода, таких какC, и интерпретируемый код, такой как Python, работающий вместе, или нужна ОС для поддержки этого?

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019

Конечно, вы можете написать интерпретатор, который работает на голом железе, просто, если у платформы нет ОС, какая-либо поддержка во время выполнения, то язык должен быть частью интерпретатора.В той степени, в которой в некоторых случаях такой интерпретатор может быть, по сути, ОС.То есть, если он предоставляет услуги для работы системы , его можно назвать операционной системой.

Возможно, это не так просто, как интерпретировать и компилировать.Например, Java работает на виртуальной машине и «компилируется» в байт-код .Байт-код интерпретируется (или компилируется точно в срок), а не напрямую в исходный код Java.Во встроенной системе возможно, что вы будете использовать кросс-скомпилированный байт-код на цели, а не на источнике.Конечно, однако, JVM существуют для голого металла.Некоторые поддерживают многопоточность через стороннюю ОСРВ, другие либо имеют встроенную поддержку, либо вообще не поддерживают многопоточность.

Существуют интерпретаторы для сокращенных подмножеств JavaScript и Python, которые работают на голомметаллические микроконтроллеры.Я не уверен насчет полной реализации, но технически это возможно при условии достаточной поддержки во время выполнения, даже если это явно не реализовано.Для полной поддержки некоторых из этих языков наряду со всеми стандартными и сторонними библиотеками и инфраструктурами, которые может ожидать разработчик, может потребоваться так много поддержки и ресурсов во время выполнения, что ее проще развернуть и использовать ОС, поэтому реализации для систем с ограниченными ресурсамичасто являются подмножествами или имеют ограниченные библиотеки.

0 голосов
/ 26 февраля 2019

Нет.См., Например, picoJava , который является одним из нескольких решений для естественного запуска Java.Вы не можете быть ближе к голому металлу, чем запускать байт-код на процессоре.

0 голосов
/ 26 февраля 2019

Java нужна виртуальная машина.Не интерпретируется, но выполняет байт-код .Интерпретация означала бы получение исходного кода во время выполнения, как это происходит, например, BASIC.

Когда в 2000 году Java была новой и интересной, все думали, что это будет следующий большой язык общего назначения, заменивший C ++.Синтаксис был таким чистым, это был «чистый ОО», а не какой-то «грязный гибрид».

Это было главное модное слово того времени.Школы перестали преподавать C и C ++.Производители микроконтроллеров начали выпускать чипы с Java VM в аппаратном обеспечении.Microsoft сделала свой собственный Java "стандартным".Все были в восторге от ажиотажа на Java.

Затем, когда в 2002 году шумиха вокруг Интернета рухнула в целом, она увлеклась ажиотажем на Java.В результате трезвого похмелья люди начали понимать, что такие вещи, как байт-код, виртуальные машины и сборка мусора, вероятно, не относятся к системам с «голым железом».

Они вернулись к использованию скомпилированного C для аппаратного программирования.Или на самом деле они никогда не останавливались, поскольку Java так и не добралась до этого, за исключением некоторых странных экзотических архитектур.

Java продолжала использоваться только в тех областях, где она была подходящей, а именно для веб-разработки, разработки приложений для ПК и мобильных устройств.И вот наступил второй золотой век, когда шумиха вокруг смартфона началась примерно в 2010 году.

0 голосов
/ 26 февраля 2019

Нет.Некоторые 8-битные компьютеры интерпретировали языки в ПЗУ, несмотря на то, что они не имели ничего похожего на современную операционную систему. Apple 2 является одним из примеров.Вы можете загрузить систему без каких-либо дисков или лент, и она сразу перейдет к подсказке BASIC, где вы сможете писать базовые (без каламбура) программы.

Обратите внимание, что операционная система - это несколько неопределенный термин.если говорить об этих днях, то на этих 8-битных компьютерах был установлен некоторый уровень прошивки 1006 *, и эта прошивка обеспечивала некоторые функциональные возможности типа ОС, такие как доступ к базовым периферийным устройствам.В наши дни то, что мы теперь знаем как ОС, чаще называлось «DOS» - операционная система Disk .MS-DOS является одним из них, а также Apple ProDOS.Эти DOS превратились в наших современных операционных систем (например, Windows 95 была основана на MS-DOS, в то время как современные версии Windows происходят из отдельной ветви, которая была в значительной степени повторно реализована с использованием более современных технологий),так что можно утверждать, что их предки ближе всего к тому, что мы сейчас называем ОС.

Но что такое интерпретатор, кроме программного обеспечения?

Вв более теоретическом смысле интерпретатор - это просто программное обеспечение - программа, которая принимает данные и производит результаты.Предположим, вы внедрили настраиваемую твердотельную машину Тьюринга 1018 *.В этом случае ваш «ввод» будет интерпретируемой программой, а «вывод» будет поведением программы.Если «программное обеспечение» может работать без операционной системы, то переводчик может.

Эта модель немного упрощена?Конечно.Разница в степени, а не в природе.Добавьте очень простые пользовательские возможности ввода и вывода (например, TTY), и у вас есть основа для реализации всех или почти всех основных функций языка, таких как байт-код Java, Python или BASIC.Главное, чего вам не хватало бы, - это библиотеки и тому подобное, которые зависят от таких вещей, как манипуляции с экраном, многопроцессорность и работа в сети, но вы можете справиться и со временем.

...