हम सीख रहे हैं कि अधिकांश भाषाओं को "संबंध आधारित" या "उच्च स्तर" दोनों में से एक के रूप में वर्गीकृत किया गया है।
वे अवधारणाएं रूढ़िवादी हैं। "संबंध-आधारित" का अर्थ है कि भाषा का शब्दार्थ एक संबंध की अवधारणा पर आधारित है, अर्थात, दो सेटों के बीच कई-से-कई संबंध (संबंध SQL तालिकाओं के पीछे गणितीय आधार हैं)। "उच्च-स्तरीय" का अर्थ है कि भाषा में बहुत सारे सार हैं जो अंतर्निहित तकनीकी विवरण (जैसे कि मेमोरी लोकेशन, सीपीयू रजिस्टर, डिस्क एक्सेस, बिटवाइज़ ऑपरेशंस इत्यादि) को छिपाते हैं। एसक्यूएल निश्चित रूप से संबंध आधारित है, क्योंकि इसका मुख्य उद्देश्य रिलेशनल डेटा और उस पर संचालन का वर्णन करना है। एसक्यूएल भी काफी उच्च स्तर है; यह सीधे डिस्क पर बाइट्स तक पहुंचने का कोई साधन प्रदान नहीं करता है, और यह आपको कोई विवरण नहीं बताता है कि यह अपने डेटा को कैसे संग्रहीत करता है (कम से कम एसक्यूएल नेटवर्क);
वास्तव में, कई और कुल्हाड़ियाँ हैं जिनके साथ प्रोग्रामिंग (और डेटा) भाषाओं को वर्गीकृत किया जा सकता है; एक विशेष रूप से दिलचस्प एक घोषणात्मक बनाम अनिवार्य है । घोषणात्मक भाषाओं का वर्णन है कि कुछ क्या है ; जरूरी भाषाओं के तरीके का वर्णन करते कुछ। एसक्यूएल की DDL हिस्सा अनिवार्य दिखने कीवर्ड के बावजूद, ज्यादातर कथात्मक है ( " CREATE TABLE
", " DROP DATABASE
", आदि), और यहां तक कि डेटा हेरफेर हिस्सा ( SELECT
, UPDATE
, INSERT
, DELETE
) अभी भी बहुत कथात्मक है। SQL की एक बहुत ही दिलचस्प संपत्ति यह है कि यह ट्यूरिंग पूर्ण नहीं है: आप सादे मानक ANSI SQL में एक अनबाउंड लूप नहीं लिख सकते हैं।
कुछ मुख्य विचारों के आसपास कार्यात्मक प्रोग्रामिंग केंद्र:
- फ़ंक्शंस प्रथम श्रेणी के नागरिक हैं (अर्थात, उन्हें अन्य फ़ंक्शंस के इनपुट के रूप में और अन्य फ़ंक्शंस से आउटपुट के रूप में उपयोग किया जा सकता है)
- उच्च-क्रम फ़ंक्शंस (फ़ंक्शंस जो फ़ंक्शंस पर काम करते हैं, या फ़ंक्शंस जो फ़ंक्शंस लौटाते हैं)
- पवित्रता (शुद्ध कार्य) वह है जिसका कोई साइड इफेक्ट नहीं है; एक शुद्ध कार्य कोई I / O नहीं कर सकता है, यह किसी भी वैश्विक स्थिति को पढ़ या संशोधित नहीं कर सकता है, और यह नॉन-कास्ट संदर्भ तर्क नहीं ले सकता है। शुद्ध कार्य विशेष रूप से दिलचस्प हैं क्योंकि वे दिलचस्प हैं। हमेशा एक ही आउटपुट दिए गए समान इनपुट का उत्पादन करें)
SQL निश्चित रूप से फ़ंक्शंस के इर्द-गिर्द घूमता है, जो मॉडलिंग की चीजों के लिए मुख्य टूल के रूप में है, लेकिन यह कुछ हद तक शुद्धता के विचार को स्वीकार करता है - एक ही डेटाबेस पर चलाए जा रहे क्वेरी समान परिणाम, हर बार (ऑर्डर करने को छोड़कर) प्राप्त करेंगे। SQL को 'फंक्शनल' भाषा कहना थोड़ा खिंचाव का काम है, हालांकि IMO।