Ми дізнаємося, що більшість мов класифікуються як будь-яка з двох, "заснована на стосунках" або "високий рівень".
Ці поняття є ортогональними. "На основі відносин" означає, що семантика мови базується на концепції відношення, тобто асоціації "багато-багато" між двома наборами (відносини є математичною основою за таблицями SQL). "Високий рівень" означає, що мова містить безліч абстракцій, які приховують значну частину основних технічних деталей (таких як місця пам'яті, регістри процесора, доступ до диска, бітові операції тощо). SQL, безумовно, заснований на відносинах, оскільки його основна мета полягає в описі реляційних даних та операцій над ним. SQL також досить високий рівень; він не надає жодних засобів для доступу до байтів на диску і не повідомляє вам деталей про те, як він зберігає свої дані (принаймні, стандартний SQL не робить;
Насправді існує набагато більше осей, за якими можна класифікувати мови програмування (та даних); особливо цікавим є декларативний проти імперативного . Декларативні мови описують те , що що - то є ; імперативні мови описують, як щось робити . DDL частина SQL в основному декларативний, не дивлячись на настійні перспективних ключових слів ( " CREATE TABLE
», " DROP DATABASE
" і т.д.), і навіть маніпулювання даними частина ( SELECT
, UPDATE
, INSERT
, DELETE
) все ще досить декларативним. Дуже цікавою властивістю SQL є те, що він не є Turing завершеним: ви не можете написати без обмеженого циклу в звичайному стандартному ANSI SQL.
Функціональне програмування орієнтується на кілька основних ідей:
- функції - це першокласні громадяни (тобто вони можуть використовуватися як значення, і як вхід до інших функцій, і як вихід з інших функцій)
- функції вищого порядку (функції, що працюють над функціями, або функції, що повертають функції)
- чистота (чиста функція - це така, яка не має побічних ефектів; чиста функція не може робити жодного вводу-виводу, вона не може читати і не змінювати жодного глобального стану, і не може приймати нестандартні аргументи. Чисті функції особливо цікаві, оскільки вони будуть завжди виробляють один і той же вихід з однаковими входами)
SQL, безумовно, не обертається навколо функцій як основного інструменту моделювання речей, але дещо охоплює ідею чистоти - той самий запит, який виконується в одній базі даних, дасть той же результат кожного разу (за винятком замовлення). Викликання SQL "функціональною" мовою - це дещо розтягнення, хоча ІМО.