або машинну команду. Інтерпретація значення визначається способом його використання. Якщо покажчик наступній машинної команди вказує в процесі виконання машинної команди на деяке слово в пам'яті, то воно і розглядається як команда; якщо адреса слова задано в параметрах команди цілочисельного додавання, то його значення і обробляється як ціле число; і т.д. Одне і те ж слово пам'яті може використовуватися в різних випадках різними способами.
На противагу цьому для сучасних мов програмування характерна строга типізація. Кожна змінна в мові програмування системного рівня повинна бути оголошена із зазначенням конкретного типу, такого як ціле число або покажчик на рядок символів, і потім використовуватися тільки відповідними цього типу способами.
Дані і програмний код розділені; створення нового коду по ходу виконання програми утруднено, якщо взагалі можливо. Змінні можуть об'єднуватися в структури чи об'єкти з чітко визначеною Субструктура і методами маніпулювання своїми компонентами. Об'єкт одного типу не може бути використаний в ситуації, де наказано застосування об'єкт іншого типу.
Мови опису сценаріїв створювалися для зв'язування готових програм. Їх застосування має на увазі наявність достатнього асортименту потужних компонентів, які потрібно тільки об'єднати один з одним.
Типізація дає ряд переваг. По-перше, великі програми стають завдяки їй більш керованими. Чіткість системи типів робить для програміста ясним, для чого призначені ті або інші дані; він легко може розрізняти їх між собою і відповідно використовувати. По-друге, компілятори використовують інформацію про типи для виявлення деяких видів помилок, таких як спроба, використовувати число з плаваючою комою в якості покажчика. По-третє, типізація підвищує продуктивність додатку, дозволяючи компіляторам генерувати більш спеціалізований код. Наприклад, якщо компілятору відомо, що деяка змінна завжди містить цілочисельні значення, він може генерувати для маніпулювання нею цілочисельні інструкції; якщо ж тип зміною компілятору невідомий, то доводитися вставляти додаткові інструкції для перевірки типу під час виконання.
Мови опису сценаріїв
Мови опису сценаріїв, такі як Perl, Python, Rexx, Tcl, Visual Basic і мови оболонок UNIX, припускають стиль програмування, дуже відмінний від характерного для мов системного рівня. Вони призначаються не для написання додатків з нуля, а для комбінування компонентів, набір яких створюється заздалегідь за допомогою інших мов. Наприклад, Tcl, Visual Basic можуть використовуватися для побудови користувацьких інтерфейсів з наявних елементів управління, а мови опису сценаріїв для оболонок UNIX застосовуються для формування конвеєрів обробки потоків даних з набору стандартних фільтрів. Мови опису сценаріїв часто застосовуються і для доповнення готових компонентів новими можливостями; однак ця діяльність рідко охоплює створення складних алгоритмів або структур даних, які вже звичайно бувають вже закладені в компоненти. Іноді мови опису сценаріїв навіть називають сполучними або мовами системної інтеграції.
Як правило, мови опису сценаріїв НЕ типізовані
Для мов опису сценаріїв характерна відсутність типізації, яка тільки ускладнила б завдання з'єднання компонентів. Всі елементи в них виглядають і функціонують однаково і є повністю взаємозамінними. Наприклад, у Tcl або Visual Basic змінна може містити в одній точці програми рядок, а в іншій - ціле число. Код та дані також часто бувають взаємозамінні. Наприклад, Tcl, Visual Basic змінна може містити в одній точці програми рядок, а в іншій - ціле число. Код та дані також часто бувають взаємозамінні, так що програма може генерувати іншу програму - і відразу ж запускати її виконання. Зазвичай мови опису сценаріїв використовують змінні строкових типів, які забезпечують однаковий механізм подання для різних сутностей.
Відсутність в мові поділу змінних на типи спрощує з'єднання компонентів між собою. Немає апріорних обмеженні на те, яким чином може використовуватися той чи інший елемент, а всі компоненти значення представляються в єдиному форматі. Таким чином, компонент або значення можуть бути використані в будь-якій ситуації; будучи спроектовані для одних способів застосування, вони можуть виявитися задіяні зовсім іншими, про які їх творець ніколи не думав. Наприклад, в UNIX - оболонках робота будь-якої програми - фільтра включає читання даних з вхідного потоку і запис їх у вихідний потік. Будь-які дві такі програми можуть бути пов'язані шляхом призначення вихідного потоку одній в якості вхідного потоку інший. Наступна команда оболонки являє систему з трьох фільтрів, підраховують у виділеному фрагменті тексту рядки, що містять слово scipting:
Програма select зчитує текст, виділен...