Fonksiyon düzeyinde programlama - Function-level programming

Bilgisayar biliminde, işlev düzeyinde programlama , John Backus tarafından programlar üzerindeki çalışmalarında matematiksel nesneler olarak tanımlanan iki karşıt programlama paradigmasından birini ifade eder , diğeri ise değer düzeyinde programlamadır .

Backus , 1977 Turing Ödülü dersinde, programlama dili tasarımında farklı bir felsefeye geçme ihtiyacı olarak gördüğü şeyi ortaya koydu:

Programlama dillerinin başı dertte gibi görünüyor. Birbirini izleyen her dil, küçük bir temizlikle, öncekilerin tüm özelliklerini artı birkaç tane daha içerir. [...] Her yeni dil, yeni ve modaya uygun özellikler talep ediyor... ancak gerçek şu ki, birkaç dil programlamayı, bunları üretmenin ve kullanmayı öğrenmenin maliyetini haklı çıkarmak için yeterince ucuz veya daha güvenilir kılıyor.

FP'yi , özellikle işlev düzeyinde programlama stilini destekleyen ilk programlama dili olacak şekilde tasarladı .

Bir fonksiyon düzeyinde program değişken içermeyen (bakınız noktası içermeyen programlama , çünkü) programı değişkenlerin değer düzeyinde tanımlarında gerekli olan, işlev seviyesi programlarında gerekli değildir.

Tanıtım

İşlev düzeyinde programlama tarzında, bir program doğrudan başlangıçta verilen programlardan, bunları program oluşturan işlemler veya işlevlerle birleştirerek oluşturulur . Bu nedenle, istenen sonuç değeriyle sonuçlanan bir değerler dizisini oluşturmak için verilen programları değerlere uygulayan değer düzeyi yaklaşımının aksine , işlev düzeyi yaklaşımı, bir programlar dizisini oluşturmak için program oluşturma işlemlerini verilen programlara uygular . istenen sonuç programında doruğa ulaşır.

Sonuç olarak, programlamaya işlev düzeyindeki yaklaşım, program oluşturma operasyonlarının yararlı cebirsel özelliklerini türetmeye çalışan program oluşturma işlemleri altındaki programların uzayını incelemeye davet eder . İşlev düzeyinde yaklaşım , program oluşturma işlemlerinin cebirsel özelliklerini program uzayı üzerinden vurgulayarak, program kümesini matematiksel bir uzay yapma imkanı sunar .

İşlev düzeyinde görünümün bir başka potansiyel avantajı, yalnızca katı işlevleri kullanma ve dolayısıyla hepsinin en basit türü olan aşağıdan yukarıya semantiklere sahip olma yeteneğidir . Yine bir başka olmayan fonksiyon düzeyinde tanımları varlığı kaldırdı (yani kaldırılmış bir mevcut değer düzeyinde bir daha yüksek bir fonksiyon düzeyinde daha düşük bir değer seviyesinden) görüntü: Bu (genellikle kısa ve öz) işlevi düzeyinde tanımlar, değer düzeyinde mevcut olmayan daha güçlü bir programlama stilini temsil eder.

Fonksiyonel programlamaya karşıtlık

Backus, fonksiyon seviyesindeki programlama stilini inceleyip yayınlarken, mesajı çoğunlukla kendi FP'si ve onun halefi FL yerine geleneksel fonksiyonel programlama tarzı dilleri desteklediği şeklinde yanlış anlaşıldı .

Backus, işlevsel programlamayı uygulamalı programlama olarak adlandırır ; onun işlev düzeyinde programlaması özel, kısıtlı bir türdür.

İşlevsel dillerden önemli bir ayrım, Backus'un dilinin aşağıdaki tür hiyerarşisine sahip olmasıdır:

  • atomlar
  • atomları atomlara götüren fonksiyonlar
  • Bir veya iki işlevi işlevlere alan yüksek dereceli işlevler ("işlevsel biçimler" olarak adlandırır)

...ve yeni işlevler oluşturmanın tek yolu, sabit olan işlevsel formlardan birini kullanmaktır: kendi işlevsel formunuzu oluşturamazsınız (en azından FP'de değil; FFP'de ( Formal FP ) yapabilirsiniz).

Bu kısıtlama , FP'deki işlevlerin, işlevsel formların cebiri üzerinde bir modül (yerleşik işlevler tarafından oluşturulan) olduğu ve dolayısıyla cebirsel olarak izlenebilir olduğu anlamına gelir. Örneğin, iki fonksiyonun eşitliği genel sorusu, durma problemine eşdeğerdir ve karar verilemez, ancak iki fonksiyonun eşitliği FP'de sadece cebirde eşitliktir ve bu nedenle (Backus hayal eder) daha kolaydır.

Bugün bile, birçok lambda stili dil kullanıcısı, Backus'un işlev seviyesi yaklaşımını, fiili bir değer seviyesi stili olan lambda stilinin kısıtlayıcı bir çeşidi olarak yanlış yorumlamaktadır . Aslında Backus 'kısıtlayıcı' suçlamaya karşı çıkmazdı: Yapılandırılmış programlamanın programlamayı kısıtlı bir sürümle sınırlama biçimine benzer bir şekilde , tam olarak bu tür kısıtlamalar nedeniyle iyi biçimlendirilmiş bir matematiksel alanın ortaya çıkabileceğini savundu. sade, kısıtlanmamış yapılandırılmamış programlarda mevcut olan tüm kontrol akışı olasılıklarından .

FP'nin değerden bağımsız stili, kartezyen-kapalı bir kategorinin denklem mantığıyla yakından ilişkilidir .

Örnek diller

Kurallı işlev düzeyinde programlama dili FP'dir . Diğerleri arasında FL ve J bulunur .

Ayrıca bakınız

Referanslar

Dış bağlantılar