Как восстановить загрузочный раздел manjaro/arch?

Это означает, что сценарии оболочки не компилируются, а интерпретируются: оболочка интерпретирует сценарии по одной команде за раз и каждый раз выясняет, как выполнить каждую команду. Это имеет смысл для shell-скриптов, поскольку они все равно тратят большую часть своего времени на выполнение других программ.

Программы на языке Си, с другой стороны, обычно компилируются: прежде чем их можно запустить, компилятор преобразует их в машинный код полностью, раз и навсегда. В прошлом существовали интерпретаторы Си (например, интерпретатор Си от HiSoft на Atari ST), но они были очень необычными. В настоящее время компиляторы Си очень быстры; TCC настолько быстр, что вы можете использовать его для создания "сценариев Си", с #!/usr/bin/tcc -run shebang, так что вы можете создавать программы на Си, которые выполняются так же, как сценарии оболочки (с точки зрения пользователей).

Некоторые языки обычно имеют и интерпретатор, и компилятор: BASIC - один из примеров, который приходит на ум.

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

Другой способ думать об этом - считать, что возможность интерпретации сценариев в оболочке является расширением возможностей командной строки, что естественно приводит к интерпретируемому подходу. С другой стороны, язык C был разработан для создания автономных двоичных файлов, что приводит к компилируемому подходу. Языки, которые обычно компилируются, тоже склонны к появлению интерпретаторов или, по крайней мере, парсеров командной строки (известных как REPLs, read-eval-print loops; оболочка сама по себе является REPL).

2
19.12.2015, 00:12
0 ответов

Теги

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