Lambda hesabını çalışma ile ilgili yapan nedir?


10

Önümüzdeki sonbaharda lisans bilgisayar bilimi dersine başlıyorum, ancak fonksiyonel programlama bağlamında λ-hesabını gerçekten anlayamıyorum. Bunu tamamen yanlış yorumlayabilirim, ancak Stanford Felsefe Ansiklopedisi'nin bu tanımına dayanarak, işlevler için sadece bir başka gösterim.

O takdirde ise sadece, neden algoritma çalışma süresini hesaplamak için düzenli fonksiyon gösterimler aşırı kalkülüs λ kullanmak avantajlı olduğunu?


5
"Fonksiyonlar için sadece başka bir gösterim" değil, "fonksiyonlar için ilk gösterim".
Andrej Bauer

Öneri için teşekkürler, @Kaveh. Gelecek mesajlar için bunu aklımda tutacağım, ancak mhelvens'in cevabı mükemmel, bu yüzden bir crosspost'a gerek yok.

Resmi olarak tanımlanmış bir nesne gövdesi. Senin sorununun ne olduğunu anlamıyorum.
Raphael

Ben terminolojiyi veya şeylerin neden yapıldığını gerçekten anlamadım, lambda hesabı öğrenene kadar fonksiyonel programlamada yapıldılar. Yazılım yapılarının çok daha az keyfi görünmesini sağlar.
dansalmo

Yanıtlar:


13

Bilgisayar biliminde kaynak kodunu matematiksel titizlikle analiz etmek ve anlamak istiyoruz. İlginç özellikleri (fesih gibi) kesin olarak kesin olarak kanıtlamanın tek yolu budur. Bunun için her yapı için çok iyi tanımlanmış bir dile ihtiyacımız var.

λ

λ

λλ


3
imo, bazı bilgisayar bilimleri kaynak kodunu anlamakla ilgili olabilir, ama bunun genel olarak doğru olduğunu söylemek fiziğin matematik titizliği ile roketleri anlamak olduğunu söylemek gibi. bilgisayar bilimi hesaplama ile ilgilidir. İlgili bir şikayet dilinin verimi olmasıdır yapar sen verimliliği ve iyi biçimli kaynak kodunu incelemek istiyorsanız meselesi. Bu anlamda, TM'leri zorunlu bir dil modelinden ziyade verimliliği düşünmenin bir yolu olarak düşünmek daha iyidir (ve her iki amaç için de-RAM kelimesi daha iyi bir seçim olabilir)
Sasho Nikolov

Btw ne yukarıda yazdım yok değil :) Cevabını sevmiyorum demek
Sasho Nikolov

Kabul. ;-) Sabit.
mhelvens

1
Turing makinaları zorunlu kodu hakkında akıl yürütme de iğrenç, bir basit gibi bir oyuncak dil kullanmak çok daha kolay iken tip dilinde. stackoverflow.com/questions/507310/the-while-language . Turing makineleri, karmaşıklık teorisindeki içgörüler için çok yararlıdır.
cody

1

λλ

O takdirde ise sadece, neden algoritma çalışma süresini hesaplamak için düzenli fonksiyon gösterimler aşırı kalkülüs λ kullanmak avantajlı olduğunu?

Lisp veya fonksiyonel programlama kullanmanın ve algoritma çalışma zamanını hesaplamanın birçok avantajı vardır (bunun için bir referans belirtmeniz yararlı olsa da). Zaten işlevsel gösterimde olduğu için, bazen indüksiyon veya rekürrens ilişkileri yoluyla çalışma süresi için formülleri belirlemek, orijinal kodla daha güçlü veya daha açık bir ilişkiye sahip olabilir. algoritmanın diğer analiz türleri de basitleştirilmiştir.

bir diğer ana avantaj sözdizimsel sadeliktir. diğer diller için ayrıştırıcılar çok karmaşıktır ancak Lisp ayrıştırıcılar çok basittir. bu yüzden Lisp, ayrıştırma teorisini incelemek için harika bir dildir.

diğer bir önemli özellik ise yazılımı "bilgisayar-bilimsel" bir perspektiften ziyade mantıklı veya matematiksel bir mercek / görünümden analiz etmektir .

diğer yanıtın da belirttiği gibi, Lisp tamamen yineleme yerine özyineleme ile ilgilidir ve özyineleme CS'nin kalbinde çok fazladır.

λ

[1] Bilgisayar programlarının yapısı ve yorumu, Abelson & Sussman

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.