Çoğu dilin "ilişki temelli" veya "üst düzey" olarak sınıflandırıldığını öğreniyoruz.
Bu kavramlar dikeydir. "İlişkiye dayalı", dilin anlambiliminin bir ilişki kavramına, yani iki küme arasındaki çoktan çoğa ilişkiye dayandığı anlamına gelir (ilişkiler SQL tablolarının arkasındaki matematiksel temeldir). "Yüksek seviye", dilin, temeldeki teknik ayrıntıların çoğunu (bellek konumları, CPU kayıtları, disk erişimi, bitsel işlemler vb.) Gizleyen birçok soyutlama içerdiği anlamına gelir. Temel amacı ilişkisel verileri ve üzerindeki işlemleri tanımlamak olduğundan SQL kesinlikle ilişki tabanlıdır. SQL de oldukça yüksektir; doğrudan diskteki baytlara erişmek için herhangi bir yol sağlamaz ve size verilerini nasıl sakladığı hakkında herhangi bir ayrıntı vermez (en azından standart SQL vermez;
Aslında, programlama (ve veri) dillerinin sınıflandırılabileceği daha birçok eksen vardır; özellikle ilginç olan bir şey bildirimsel ve zorunludur . Bildirici diller bir şeyin ne olduğunu tanımlar ; Emir Kipi , bir şeyin nasıl yapılacağını açıklar . SQL DDL bölüme (" zorunlu görünümlü anahtar kelimeler rağmen çoğunlukla bildirimsel CREATE TABLE
", ' DROP DATABASE
', vs.) ve hatta veri manipülasyon parçası ( SELECT
, UPDATE
, INSERT
, DELETE
) hala oldukça bildirim olduğunu. SQL'in çok ilginç bir özelliği, Turing tamamlanmamış olmasıdır: düz standart ANSI SQL'de sınırsız bir döngü yazamazsınız.
İşlevsel programlama birkaç temel fikir etrafında odaklanır:
- işlevler birinci sınıf vatandaşlardır (yani, değer olarak, diğer işlevlere girdi olarak ve diğer işlevlerden çıktı olarak kullanılabilirler)
- üst düzey işlevler (işlevlerde çalışan işlevler veya işlev döndüren işlevler)
- saflık (saf işlev yan etkisi olmayan bir işlevdir; saf işlev herhangi bir G / Ç yapamaz, herhangi bir küresel durumu okuyamaz veya değiştiremez ve sabit olmayan referans argümanları alamaz. Saf işlevler özellikle ilginçtir çünkü her zaman aynı girdilerle aynı çıktıyı üretir)
SQL, şeyleri modellemek için ana araç olarak işlevler etrafında dönmüyor, ancak saflık fikrini bir şekilde kucaklıyor - aynı veritabanında aynı sorgu çalışması her seferinde (sipariş hariç) aynı sonucu verecektir. SQL'i 'işlevsel' bir dil olarak adlandırmak, IMO'ya rağmen biraz esnektir.