Як співвідносяться скріптові і об’єктно-орієнтовані мови програмування

Ph.D. student at the GWU CBI

Питання насправді не дуже вірно поставлений, так як порівнюється тепле з м'яким.

ООП - парадигма програмування, в якій основними концепціями є поняття об'єктів і класів (або, в менш відомому варіанті мов з прототіпірованії, - прототипів) (Вікі)

Скриптова мова програмування - мова програмування, розроблений для запису «сценаріїв», послідовностей операцій, які користувач може виконувати на комп'ютері. Прості скриптові мови раніше часто називали мовами (Вікі)

Так ось, ви можете писати в скриптовій мовою програмування (яка не чисте ООП) просто інструкції, які виконуються по ходу роботи програми відразу, без переробки в машинний код заздалегідь. Але ніхто не заважає вам складати більш складні сценарії, які логічно можна розбити на об'єкти, класи, методи, інтерфейси тощо.

Правильніше було б порівнювати компільовані й інтерпретовані мови програмування, і функціональні і ООП мови програмування.

тільки, напевно, не функціональні і ООП, а функціональні і імперативні, або декларативні і імперативні, немає?

Щиро Дякую. Так, приблизно розумію, що порівнювати це не коректно. Тому питав саме про те, як вони співвідносяться. Просто з точки зору сприйняття у мене невеликий бардак в голові склався. Ви допомогли трохи розібратися.

А можна невелике питання? Як в цьому плані відрізняються допустимо Java і Groovy. ООП і той, і той. Але ось грув ще й скриптова. Це означає, що в грув я можу відразу виконувати команди, без створення класів, методів, точки входження програми і т.д. да? Чи є тоді якийсь перевага у чистих ООП перед скриптовими, що не чистими ООП.

Просто запам'ятайте, що скриптові мови не вимагають явної компіляції і (зазвичай) не створюють копії програми на машинній мові. Якщо якийсь бінарник створюється, то це вже не скриптова мова. Втім Python зберігає проміжний байткод на диск.

Так, компільовані мови будуть в рази швидше ніж скріптові, бо машинний код, та ще оптимізація компілятором і т.п. Однак для простеньких задач на кшталт розпарсити логи продуктивності скриптових движків буде цілком достатньо.

console.log ( `You're pulling my leg, right?`);

Є така мова - Boo. Там можна написати код, що не описуючи класи і т.д. але коли скрипт буде запущено, інтерпретатор автоматично і прозоро створить в байт-коді статичний клас і його метод main, який і буде запущений. Тілом же цього методу є те, що ви написали спочатку.

Тобто для програміста це буде чисто скриптовою (у вашому розумінні) мовою, але сувора парадигма ООП буде витримана.