Neden mantıksal programlama (değil)?


13

Yazılım endüstrisinde herhangi bir mantıksal programlama dilinin (Prolog gibi) herhangi bir kullanımını henüz duymadım ve bunun hobi programlama veya açık kaynak projelerinde kullanımını bilmiyorum. Yine de (Prolog) bir dereceye kadar akademik bir dil olarak kullanılır (neden akademide kullanılır?).

Bu beni meraklandırıyor, neden mantık programlamasını kullanmalısınız, neden olmasın? Neden algılanabilir endüstri kullanımı sağlanmıyor?

Yanıtlar:


8

Akademi dışında ... AI'da, bazen oyunlarda daha çok kullanıldığını duydum (AI'yı Black & White serisinde sürdüğünü duydum). Ayrıca bazı işletmeler ve ekonomik simülasyonlar için kural motorları çalıştırmak için kullanılan varyasyonları duydum.

Yaygın evlat edinme eksikliğine ilişkin tahminlerim:

  • Garip - çoğu insan programlamaya alışkın değil ve diğer dillerde ihtiyaç duyduklarını yapabilirler.
  • Satıcı desteği eksikliği - Microsoft birdenbire Prolog #'u (.NET kitaplığının ve araç setinin tam ağırlığı ve arkasındaki resmi destek ile) Sonraki Büyük Şey olarak itmeye başladıysa - ve sonra IBM ve Oracle rekabet edecek bir şey buldular Gördüğünü gördüm!
  • Entegrasyon eksikliği - Prolog için hangi kütüphanelerin mevcut olduğunu bilmiyorum - son olarak çok fazla grafik veya ağ kütüphanesi olmadığını kontrol ettim, yani bir Prolog "uygulaması" nın geri kalanıyla etkileşime giren başka bir uygulamaya sarılması gerektiği anlamına gelir. dünya.

"Bir Prolog" uygulaması "dünyanın geri kalanıyla etkileşime giren başka bir uygulamaya sarılmalıdır." Aslında bu bizim için bir özellikti. Prolog bitlerini daha kolay izole edebiliriz, çünkü onun arayüzü çok basitti.
S.Lott

@ S.Lott: Tamam, bunu da olumlu görebiliyorum, ancak okuldayken ve aslında Prolog ile bir uygulama yapmak istediğimde , parçalar arasındaki sıhhi tesisat ve kablolamayı büyük bir meydan okuma ve engel olarak buldum.
FrustratedWithFormsDesigner

5

Ayrıştırıcılar oluşturmak için kullandık. Çalışmak lex / yacc'den daha kolaydı.

Neden algılanabilir endüstri kullanımı sağlanmıyor?

Bu cevapsız. "Algılanabilir" ne anlama geliyor? Kimler tespit notu almalı?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

Gerçekleri istiyorsanız Meridian Software'e prolog tekliflerini sorun.

Ancak, girişte yaşadığım bazı engeller var.

İlk olarak, prolog yavaş olabilir. Çok fazla aday kural olduğunda ve arama alanını kısıtlamak için basit bir kesim işlemi olmadığında, bir şeylerin yapılması biraz zaman alabilir.

İkincisi, prolog prosedürel veya işlevsel değildir, bu yüzden birçok programcı onu kullanmaktan kaçınır. (İlginç bir şekilde, bazı programcılar da SQL'i kullanmaya devam ediyorlar. Bu nedenle, bazı programcılar isteksizce SQL'i kullanacak ve birleştirme işlemlerinden kaçınmak ya COUNT(*)da sihirli olarak verimsiz olduğunu iddia etmek gibi garip şeyler yapacaklar .)

Üçüncüsü, prolog, çeşitli vakaların ne olduğu hakkında oldukça net bir düşünce gerektirir. Prosedürel programlama özensiz olabilir ve yine de güvenilir şekilde çalışabilir. Yürütülebilir olmayan ifadeler kabul edilebilir.

Çoğu çevrede aşağıdakiler kabul edilebilir.

b = a + 1
if a > b: # always False

Bu tür bulanık düşünme sizi prologda belaya sokar.


2

Bir sorun, Prolog'un aslında hesaplama açısından zor olan birinci dereceden yüklem mantığında programlamamasıdır (ne ölçüde hatırlamıyorum, ancak NP'de değil ve eğer ona aritmetik eklerseniz, resmi olarak karar verilemez). Bu nedenle, bu bir basitleştirme.

Mantıkta, bir teklifin doğru olduğu, yanlış olduğu kanıtlanabilir veya her iki şekilde kanıtlanamaz. Prolog sadece kanıtlanmış ve kanıtlanmamıştır, "kanıtlanmamış" tipik olarak yanlış anlamına gelir. Ayrıca, Prolog cümleciklerinin sırası, mantıklı hükümler için geçerli olmayan yürütmeyi etkileyebilir. Kullandığım derste, Prolog'u mantıksal bir dilden çok kalıp eşleme dili olarak düşünmeye başladım.

Bu nedenle, Prolog programlama, Prolog dilinin kendisi kadar mantıksal doğruluğa bağlı değildir. Bazı açılardan faydalı bir dildir, ancak ana akımın yakınında değildir ve C ++ gibi bir dilin araç ve topluluk yararlarına sahip değildir.

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.