Вопрос Должны ли языки сценариев более высокого уровня использовать сценарии оболочки для работы?


Я просто узнаю о bash, и когда я увидел, что bash использует «echo», я попытался найти отношения между PHP и bash, и кажется, что люди строят программы, это скрипт bash и скрипты PHP смешиваются.

Нужны ли скриптовые языки, такие как Javascript и PHP, использовать сценарии оболочки? Являются ли интерпретаторы PHP и Javascript каким-либо образом зависимыми от сценариев оболочки?

Разве это не так, когда дело доходит до скомпилированного кода? (Я знаю, что разделение языков сценариев и скомпилированных языков не так уж ясны, поскольку вы можете скомпилировать Javascript и интерпретировать некоторые языки, которые обычно компилируются. Поэтому в этой части вопроса я спрашиваю, есть ли разница, когда он приходит к скомпилированному коду, независимо от языка.)


1
2017-08-15 15:06


происхождения




ответы:


Между «эхом» в bash и «echo» в PHP нет никакого отношения. Они просто используют одно и то же ключевое слово для одного и того же действия, они не зависят друг от друга. Часто дизайн некоторых языков влияет на другие языки, а те, которые разрабатывают новые языковые функции, часто вступают в силу с существующих языков. Вот почему многие языки используют префикс $ для переменных, почему некоторые ключевые слова обычно встречаются на разных языках и почему многие языки используют фигурные скобки для разделения блоков. Хотя они могут копировать синтаксис или общий дизайн функции, они обычно выполняются независимо.

Нужны ли скриптовые языки, такие как Javascript и PHP, использовать сценарии оболочки?   Являются ли интерпретаторы PHP и Javascript каким-либо образом зависимыми от сценариев оболочки?

Нет, они не используют сценарии оболочки для работы. Как оболочка, так и эти языки зависят от интерфейса записи потока операционной системы. Скажем в Linux, если вы хотите печатать на stdout, вам необходимо выполнить системный вызов write () в ядре, вызывая прерывание программного обеспечения с помощью идентификатора syscall для сценария write (), указателя на данные, которые вы хотите write и номер файла для stdout, который равен 1. Будь вы используете оболочку, интерпретируемый язык или скомпилированный язык, все они должны будут вызвать вызов sysall write () для записи в stdout. Некоторые языки могут разрешать вам писать регулярную строку, другие могут предоставлять базовые функции форматирования, но все они получат сбой () syscall.


2
2017-08-15 15:32





Они этого не делают. Кодовая база среды выполнения и библиотеки может использовать сценарии оболочки как клей, но время автономной работы таких языков, как JavaScript и PHP, не зависит от них. Использование таких команд, как echo а также printf являются индикаторами языков, на которые влияли создатели, такие как C и shell. Это также справедливо для скомпилированных языков.

Вернитесь на мгновение и задайтесь вопросом, существует ли наличие таких конструкций, как if а также for а также while означает, что выполнение сценариев оболочки зависит от C или наоборот.


2
2017-08-15 15:34