Bilgisayar biliminde, bildirimsel programlama bir programlama paradigmasıdır. —bilgisayar programlarının yapısını ve öğelerini oluşturma stili— bir hesaplamanın mantığını kontrol akışını tanımlamadan ifade eder.
Bu stili uygulayan birçok dil, programın nasıl gerçekleneceğini programlama bir dizisi olarak tanımlamak yerine programın neyi başarması gerektiğini açısından tanımlayarak en aza indirmeye veya tümüyle ortadan kaldırmaya çalışır. (nasıl'ı temeliyle bağlıdır). Bu, algoritmaları açık adımlarla uygulayan zorunlu programlamanın tersidir.
Bildirimsel programlama, genellikle, programları biçimsel mantığın teorileri ve hesaplamalar —ki bunlar, bu mantık uzayındaki çıkarımlardır— olarak kabul eder. Bildirimsel programlama, paralel programlar yazmayı büyük ölçüde basitleştirebilir.
Yaygın bildirimsel diller, veritabanı sorgulama dillerini (örneğin, SQL, XQuery), düzenli ifadeleri, mantıksal programlamayı, işlevsel programlamayı ve sistemlerini içerir.
Tanım
Bildirime dayalı programlama, genellikle, zorunlu olmayan herhangi bir programlama stili olarak tanımlanır. Bir dizi diğer yaygın tanımlar, onu, zorunlu programlama ile basitçe karşılaştırarak tanımlamaya çalışır. Örneğin:
- Bir hesaplamanın ne yapması gerektiğini açıklayan üst düzey bir program.
- (veya daha spesifik olarak, ) herhangi bir programlama dili.
- Matematiksel mantığa açık bir şekilde karşılık gelen bir dil.
Bu tanımlar büyük ölçüde örtüşmektedir.
Bildirimsel programlama, programların gerçekleştirilmesi gereken komutları veya adımları açıkça listelemeden istenen sonuçları tanımladığı, zorunlu olmayan bir programlama stilidir. İşlevsel ve mantıksal programlama dilleri, bildirimsel bir programlama stili ile karakterize edilir. Mantıksal programlama dillerinde programlar mantıksal deyimlerden oluşur ve program deyimlerin kanıtlarını arayarak yürütülür.
Haskell gibi , tüm işlevler yan etkisizdir ve durum değişiklikleri yalnızca, programda açıkça nesne olarak temsil edilen durumu dönüştüren işlevler olarak temsil edilir. Saf işlevsel diller zorunlu olmasa da, genellikle bir işlevin etkisini bir dizi adım olarak tanımlamak için bir olanak sağlarlar. Lisp, OCaml ve Erlang gibi diğer işlevsel diller, prosedürel ve işlevsel programlamanın bir karışımını destekler.
Prolog gibi bazı mantıksal programlama dilleri ve SQL gibi veritabanı sorgulama dilleri, prensipte bildirimsel olmakla birlikte, prosedürel bir programlama stilini de destekler.
Alt paradigmalar
Bildirimsel programlama, bir dizi daha iyi bilinen programlama paradigmasını içeren bir şemsiye terimdir.
Kısıt programlama
, değişkenler arasındaki ilişkileri hedef çözümün özelliklerini belirleyen kısıtlamalar biçiminde belirtir. Kısıtlar kümesi, çözümün maksimum kısıtlama sayısıyla tutarlı olması için her değişkene bir değer verilerek Kısıtlı programlama genellikle diğer paradigmaları tamamlar: İşlevsel, mantıksal ve hatta zorunlu programlama.
Alana özgü diller
(EAÖD'ler) iyi bilinen örnekleri arasında ayrıştırıcı üreteci giriş dili, , Make derleme belirtim dili, Puppet'ın yapılandırma yönetim dili, normal ifadeler ve bir SQL alt kümesi (örneğin seçim—SELECT—sorguları) bulunur.). EAÖD'ler, olması gerekmese de faydalı olma avantajına sahiptir, bu da bir dilin tamamen bildirimsel olmasını kolaylaştırır.
HTML, , XAML, XSLT veya diğer gibi birçok biçimlendirme dili genellikle bildirimseldir. Örneğin HTML, yalnızca bir web sayfasında neyin görünmesi gerektiğini tanımlar - ne bir sayfanın oluşturulması için ne de sayfanın bir kullanıcıyla olası belirtir.
2013 itibarıyla, bazı yazılım sistemleri,[] geleneksel kullanıcı arabirimi biçimlendirme dillerini (HTML gibi), arka uç sunucu sistemlerinin beyan edilen arabirimi desteklemek için ne (nasıl değil) yapması gerektiğini tanımlayan bildirime dayalı biçimlendirme ile birleştirir. Tipik olarak etki alanına özgü bir kullanan bu tür sistemler, SQL veritabanı sözdiziminin soyutlamalarını veya representational state transfer (REST) ve SOAP kullanan web hizmetlerine parametreli çağrıları içerebilir.[]
Fonksiyonel programlama
Haskell, Scheme ve ML gibi fonksiyonel programlama dilleri, aracılığıyla ifadeleri değerlendirir. İlgili ancak daha zorunlu olan Prosedürel programlama paradigmasının aksine, işlevsel programlama açık sıralamaya çok az önem verir. Örneğin, Scheme'de, birçok alt ifade türünün değerlendirme sırası tanımsızdır veya örtüktür. Bunun yerine, hesaplamalar, G/Ç'ya açık referanslar ve veriler ve mümkün olan her yerde durum mutasyonundan kaçınılan veya çeşitli özyinelemeli uygulaması ve
Hibrit diller
Örneğin, makefile'ler, bağımlılıkları bildirimsel bir tarzda belirtir, ancak yapılması gereken zorunlu bir eylem listesi de içerir. Benzer şekilde, YACC, bildirimsel olarak bağlamdan bağımsız bir dilbilgisi belirtir, ancak genellikle zorunlu olan (C gibi) bir ana bilgisayar dilinden kod parçacıkları içerir.
Mantık programlama
Mantık programlama dilleri, Prolog gibi, ilişkileri tanımlar ve sorgular. Bu sorguların nasıl yanıtlandığına ilişkin ayrıntılar, uygulamaya ve teorem ispatına bağlıdır, ancak tipik olarak bir tür birleştirme biçimini alır. İşlevsel programlama gibi, birçok mantık programlama dili yan etkilere izin verir ve sonuç olarak, kesin olarak bildirimsel değildir.
Modelleme
Fiziksel sistemlerin modelleri veya matematiksel temsilleri, bildirimsel olan bilgisayar kodunda uygulanabilir. Kod, davranışsal ilişkileri tanımlayan (bildirilen) zorunlu atamalar değil, bir dizi denklem içerir. Bu formalizmde bir model ifade edildiğinde, bir bilgisayar çözüm algoritmasını en iyi şekilde formüle etmek için cebirsel işlemleri gerçekleştirebilir. Matematiksel nedensellik tipik olarak fiziksel sistemin sınırlarına dayatılırken, sistemin davranışsal açıklaması bildirimsel veya nedenseldir. Bildirime dayalı ve ortamları arasında , Modelica ve bulunur.
Ayrıca bakınız
Kaynakça
- ^ Practical Advantages of Declarative Programming
- ^ . FOLDOC. 17 Mayıs 2004. 10 Ağustos 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Ocak 2020.
- ^ Concepts of programming languages. Boston: Pearson. 2016. ISBN . OCLC 896687896.
- ^ . Cse.unsw.edu.au. 20 Ocak 2009. 23 Eylül 2008 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Ağustos 2013.
- ^ On the Massively Parallel Execution of Declarative Programs (Doctoral dissertation tez). Technical University of Berlin. 14 Şubat 1997. 23 Eylül 2015 tarihinde kaynağından . Erişim tarihi: 26 Şubat 2015.
In this context, the criterion for calling a programming language declarative is the existence of a clear, mathematically established correspondence between the language and mathematical logic such that a declarative semantics for the language can be based on the model or the proof theory (or both) of the logic.
- ^ (PDF). Scheme Working Group 1. 17 Nisan 2019 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 5 Aralık 2020.
- ^ . Simulistics. 11 Ağustos 2003 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Ağustos 2013.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Bilgisayar biliminde bildirimsel programlama bir programlama paradigmasidir bilgisayar programlarinin yapisini ve ogelerini olusturma stili bir hesaplamanin mantigini kontrol akisini tanimlamadan ifade eder Bu stili uygulayan bircok dil programin nasil gerceklenecegini programlama bir dizisi olarak tanimlamak yerine programin neyi basarmasi gerektigini acisindan tanimlayarak en aza indirmeye veya tumuyle ortadan kaldirmaya calisir nasil i temeliyle baglidir Bu algoritmalari acik adimlarla uygulayan zorunlu programlamanin tersidir Bildirimsel programlama genellikle programlari bicimsel mantigin teorileri ve hesaplamalar ki bunlar bu mantik uzayindaki cikarimlardir olarak kabul eder Bildirimsel programlama paralel programlar yazmayi buyuk olcude basitlestirebilir Yaygin bildirimsel diller veritabani sorgulama dillerini ornegin SQL XQuery duzenli ifadeleri mantiksal programlamayi islevsel programlamayi ve sistemlerini icerir TanimBildirime dayali programlama genellikle zorunlu olmayan herhangi bir programlama stili olarak tanimlanir Bir dizi diger yaygin tanimlar onu zorunlu programlama ile basitce karsilastirarak tanimlamaya calisir Ornegin Bir hesaplamanin ne yapmasi gerektigini aciklayan ust duzey bir program veya daha spesifik olarak herhangi bir programlama dili Matematiksel mantiga acik bir sekilde karsilik gelen bir dil Bu tanimlar buyuk olcude ortusmektedir Bildirimsel programlama programlarin gerceklestirilmesi gereken komutlari veya adimlari acikca listelemeden istenen sonuclari tanimladigi zorunlu olmayan bir programlama stilidir Islevsel ve mantiksal programlama dilleri bildirimsel bir programlama stili ile karakterize edilir Mantiksal programlama dillerinde programlar mantiksal deyimlerden olusur ve program deyimlerin kanitlarini arayarak yurutulur Haskell gibi tum islevler yan etkisizdir ve durum degisiklikleri yalnizca programda acikca nesne olarak temsil edilen durumu donusturen islevler olarak temsil edilir Saf islevsel diller zorunlu olmasa da genellikle bir islevin etkisini bir dizi adim olarak tanimlamak icin bir olanak saglarlar Lisp OCaml ve Erlang gibi diger islevsel diller prosedurel ve islevsel programlamanin bir karisimini destekler Prolog gibi bazi mantiksal programlama dilleri ve SQL gibi veritabani sorgulama dilleri prensipte bildirimsel olmakla birlikte prosedurel bir programlama stilini de destekler Alt paradigmalarBildirimsel programlama bir dizi daha iyi bilinen programlama paradigmasini iceren bir semsiye terimdir Kisit programlama degiskenler arasindaki iliskileri hedef cozumun ozelliklerini belirleyen kisitlamalar biciminde belirtir Kisitlar kumesi cozumun maksimum kisitlama sayisiyla tutarli olmasi icin her degiskene bir deger verilerek Kisitli programlama genellikle diger paradigmalari tamamlar Islevsel mantiksal ve hatta zorunlu programlama Alana ozgu diller EAOD ler iyi bilinen ornekleri arasinda ayristirici ureteci giris dili Make derleme belirtim dili Puppet in yapilandirma yonetim dili normal ifadeler ve bir SQL alt kumesi ornegin secim SELECT sorgulari bulunur EAOD ler olmasi gerekmese de faydali olma avantajina sahiptir bu da bir dilin tamamen bildirimsel olmasini kolaylastirir HTML XAML XSLT veya diger gibi bircok bicimlendirme dili genellikle bildirimseldir Ornegin HTML yalnizca bir web sayfasinda neyin gorunmesi gerektigini tanimlar ne bir sayfanin olusturulmasi icin ne de sayfanin bir kullaniciyla olasi belirtir 2013 itibariyla bazi yazilim sistemleri hangileri geleneksel kullanici arabirimi bicimlendirme dillerini HTML gibi arka uc sunucu sistemlerinin beyan edilen arabirimi desteklemek icin ne nasil degil yapmasi gerektigini tanimlayan bildirime dayali bicimlendirme ile birlestirir Tipik olarak etki alanina ozgu bir kullanan bu tur sistemler SQL veritabani sozdiziminin soyutlamalarini veya representational state transfer REST ve SOAP kullanan web hizmetlerine parametreli cagrilari icerebilir kaynak belirtilmeli Fonksiyonel programlama Haskell Scheme ve ML gibi fonksiyonel programlama dilleri araciligiyla ifadeleri degerlendirir Ilgili ancak daha zorunlu olan Prosedurel programlama paradigmasinin aksine islevsel programlama acik siralamaya cok az onem verir Ornegin Scheme de bircok alt ifade turunun degerlendirme sirasi tanimsizdir veya ortuktur Bunun yerine hesaplamalar G C ya acik referanslar ve veriler ve mumkun olan her yerde durum mutasyonundan kacinilan veya cesitli ozyinelemeli uygulamasi ve Hibrit diller Ornegin makefile ler bagimliliklari bildirimsel bir tarzda belirtir ancak yapilmasi gereken zorunlu bir eylem listesi de icerir Benzer sekilde YACC bildirimsel olarak baglamdan bagimsiz bir dilbilgisi belirtir ancak genellikle zorunlu olan C gibi bir ana bilgisayar dilinden kod parcaciklari icerir Mantik programlama Mantik programlama dilleri Prolog gibi iliskileri tanimlar ve sorgular Bu sorgularin nasil yanitlandigina iliskin ayrintilar uygulamaya ve teorem ispatina baglidir ancak tipik olarak bir tur birlestirme bicimini alir Islevsel programlama gibi bircok mantik programlama dili yan etkilere izin verir ve sonuc olarak kesin olarak bildirimsel degildir Modelleme Fiziksel sistemlerin modelleri veya matematiksel temsilleri bildirimsel olan bilgisayar kodunda uygulanabilir Kod davranissal iliskileri tanimlayan bildirilen zorunlu atamalar degil bir dizi denklem icerir Bu formalizmde bir model ifade edildiginde bir bilgisayar cozum algoritmasini en iyi sekilde formule etmek icin cebirsel islemleri gerceklestirebilir Matematiksel nedensellik tipik olarak fiziksel sistemin sinirlarina dayatilirken sistemin davranissal aciklamasi bildirimsel veya nedenseldir Bildirime dayali ve ortamlari arasinda Modelica ve bulunur Ayrica bakinizKaynakca Practical Advantages of Declarative Programming FOLDOC 17 Mayis 2004 10 Agustos 2015 tarihinde kaynagindan arsivlendi Erisim tarihi 26 Ocak 2020 Concepts of programming languages Boston Pearson 2016 ISBN 978 0 13 394302 3 OCLC 896687896 Cse unsw edu au 20 Ocak 2009 23 Eylul 2008 tarihinde kaynagindan arsivlendi Erisim tarihi 15 Agustos 2013 On the Massively Parallel Execution of Declarative Programs Doctoral dissertation tez Technical University of Berlin 14 Subat 1997 23 Eylul 2015 tarihinde kaynagindan Erisim tarihi 26 Subat 2015 In this context the criterion for calling a programming language declarative is the existence of a clear mathematically established correspondence between the language and mathematical logic such that a declarative semantics for the language can be based on the model or the proof theory or both of the logic PDF Scheme Working Group 1 17 Nisan 2019 tarihinde kaynagindan PDF arsivlendi Erisim tarihi 5 Aralik 2020 Simulistics 11 Agustos 2003 tarihinde kaynagindan arsivlendi Erisim tarihi 15 Agustos 2013