Dil Paradigmları
Programlama paradigmları, hesaplamanın nasıl ifade edildiğini düzenleyen temel stillerdir; zorunlu durum mutasyonundan işlevsel, mantıksal ve bildirimsel modellere kadar uzanmaktadır.
Tanım
Bir programlama paradigması, bir dil içindeki hesaplamayı düzenlemek için tutarlı bir kavramlar ve yapılandırma ilkeleri kümesidir; bir programın temel birimlerinin (deyimlər, ifadeler, nesneler, ilişkiler) ne olduğunu ve bunların nasıl birleştiğini tanımlamaktadır.
Kapsam
Bu alan, programlama dillerinin başlıca paradigmlarını ve bunları destekleyen hesaplama modellerini kapsamaktadır: değiştirilebilir durum ve mesaj geçişi üzerine kurulu zorunlu ve nesne yönelimli programlama; ifade değerlendirmesi ve yüksek dereceli fonksiyonlar üzerine kurulu işlevsel programlama; ilişkiler ve arama üzerine kurulu mantık ve kısıt programlama; ve programların programları manipüle ettiği meta programlama. Paradigmların dil tasarımını nasıl şekillendirdiğini, barındırdıkları ödünleşimleri ve modern çok-paradigmalı dillerin bunları nasıl birleştirdiğini ele almaktadır.
Alt konular
Temel sorular
- Bir paradigmayı diğerinden ayıran nedir ve bu ayrımlar keskin midir yoksa vurgu farklılıkları mıdır?
- Paradigmlar programın doğruluğunu, modülerliğini ve akıl yürütmesini nasıl etkilemektedir?
- Zorunlu ve bildirimsel stiller birleştirilebilir mi ve bunları karıştırmanın kazancı veya kaybı nedir?
- Temel hesaplama modeli (von Neumann makinesi, lambda kalkülüs, çözümleme) bir paradigmayı nasıl etkilemektedir?
Temel kuramlar
- Programların cebiri olarak işlevsel programlama
- Backus, işlevsel, kombinatör tabanlı programlamanın, programlara akıl yürütme ve dönüşüm için denklemsel yasaların bir cebirini vererek dilleri von Neumann darboğazından kurtardığını öne sürmüştür.
- Algoritma = Mantık + Kontrol
- Kowalski'nin bir problemin mantıksal spesifikasyonunu onu çözmek için kullanılan kontrol stratejisinden ayırması, bildirimsel/mantık paradigmasını temellendirmekte ve onu prosedürel koddan neyin ayırdığını açıklığa kavuşturmaktadır.
- Çok-paradigmalı çekirdek-dil çerçevesi
- Van Roy ve Haridi, paradigmları küçük bir çekirdek dilin artımlı uzantıları olarak sunmakta, durum, eşzamanlılık ve tembellik gibi kavramların her bir paradigmayı geri kazanmak için nasıl eklenebileceğini veya çıkarılabileceğini göstermektedir.
Klinik önem
Paradigma seçimi, yazılım mühendisliği için pratik sonuçlar doğurmaktadır: işlevsel ve bildirimsel stiller, denklemsel akıl yürütmeyi, test edilebilirliği ve paralelleştirmeyi desteklerken, nesne yönelimli ayrıştırma büyük ölçekli modülerliği sağlamaktadır. Modern diller paradigmları giderek daha fazla harmanlamaktadır, bu nedenle ödünleşimlerini anlamak dil seçimi ve idiomatik tasarımı bilgilendirmektedir.
Tarihçe
Zorunlu programlama, depolanmış programlı von Neumann mimarisinden ve Fortran ve Algol gibi erken dillerden gelmektedir. Lisp (1958), lambda kalkülüsüne dayanan işlevsel fikirleri tanıtmıştır. 1970'ler, mantık programlamanın (Prolog) ve yapısal, ardından nesne yönelimli programlamanın (Simula, Smalltalk) yükselişine tanıklık etmiştir. Backus'un 1977 Turing Ödülü dersi, zorunlu stile yönelik işlevsel eleştiriyi somutlaştırmış ve sonraki on yıllar giderek daha fazla çok-paradigmalı diller üretmiştir.
Tartışmalar
- Birincil düzenleyici ilke olarak zorunluya karşı bildirimsel
- Uzun süredir devam eden bir tartışma, zorunlu kodun doğrudanlığını ve performans kontrolünü, bildirimsel ve işlevsel stillerin akıl yürütme ve birleştirilebilirlik avantajlarıyla karşılaştırmaktadır; çoğu modern dil, her ikisini de destekleyerek bu durumu çözmektedir.
Öne çıkan isimler
- John Backus
- Robert Kowalski
- Peter Van Roy
- Harold Abelson
- Gerald Jay Sussman
İlgili konular
Temel eserler
- backus1978
- kowalski1979
- vanroy2004
- abelson1996
Sıkça sorulan sorular
- Nesne yönelimli programlama, zorunlu programlamadan ayrı bir paradigma mıdır?
- Nesne yönelimli programlama genellikle zorunlu paradigma üzerine katmanlanmış bir yapılandırma disiplini olarak ele alınmaktadır: değiştirilebilir durumu, kapsüllenmiş davranışa sahip nesneler halinde düzenler, ancak yine de durum değişikliğine ve sıralamaya dayanmaktadır.
- Paradigmlar karşılıklı olarak birbirini dışlar mı?
- Hayır. Yaygın olarak kullanılan birçok dil çok-paradigmalı olup, işlevsel, nesne yönelimli ve zorunlu özellikleri birleştirerek programcıların her görev için en uygun stili seçmelerine olanak tanımaktadır.