Prolog profesyonel olarak yararlı mı?


15

Prolog'u yıllar önce üniversitede öğrendim. Profesyonel yaşamım boyunca, Prolog'u kullanmaya hiç gerek duymadım. Özel bir şey mi kaçırdım?

Hatırladığım kadarıyla Prolog, önde gelen programlama dillerine kıyasla tamamen farklı bir zihniyet gerektiriyor.

Prolog gerçekten profesyonel olarak yararlı bir şeyi uygulamak için kullanılıyor mu?


3
Prolog (ve poplog) AI kodlaması için çok iyidir. Yapay zeka ile ilgili şeyleri profesyonel / ciddi bir şekilde yapmıyorsanız, hiç kullanamayabilirsiniz. Mühendis olmayanların MATLAB'ı asla ciddiye almamaları gibi.
glasnt

1
İyi soru. Prolog, Uni Potsdam'da bilgisayarlı dilbilimde öğretilen ilk programlama dilidir, ancak bundan sonra, bu konuda oldukça iyi olsak bile, çok fazla kullanmayız. Çok yazık. StackOverflow'da "Bir akümülatörü nasıl kullanırım" veya "Tüm olası cevapları nasıl alabilirim" gibi bir soru gördüğümde, gerçek profesyonel kullanıcıların nerede olduğunu merak ediyorum - çoğu şey ödev gibi görünüyor. Ya da belki Prolog uzmanlığı sizi hiç sorusu olmayan bir robota dönüştürür.
Felix Dombek

Bir keresinde Prolog'da yazılmış ve Avusturya'da bir yerde uygulanan bir hata tespit sistemi duydum (Klagenfurt?) Bana söylenenlere göre, ürün oldukça iyiydi ve müşterilere satılıyor. Bu "profesyonel olarak yararlı" düşünüyorsanız, cevap "evet" tir.
Giorgio

Yanıtlar:


12

Bana göre, Prolog'un temellerini öğrenmek, onu gerçek dünyada kullanıp kullanmayacağınıza bakılmaksızın çok faydalıdır. Birleşmenin altında yatan temel fikirleri ve (önemsiz ve verimsiz) bir uygulamanın nasıl ele alınabileceğini anlamak da çok önemlidir.

En iyi bildirim mantığı kullanılarak çözülecek bir sorununuz varsa, bunu ideal olarak tanımalı ve bu iş için doğru araçları kullanmayı bilmelisiniz (eğer seçiminiz varsa).

Bununla birlikte, Prolog'un geleneksel zorunlu dillerden çok farklı bir zihniyete ve ayrıca işlevsel dillerden çok farklı bir zihniyete ihtiyacı olduğunu kabul ediyorum. Belli bir noktanın ötesinde, çok fazla deneyim gerektiriyor gibi görünüyor (tıpkı her şeyde olduğu gibi) ve hatta beynimi kulaklarımdan sallayan birçok "ders kitabı" bilgisi bile var.

Benim izlenimim ... muhtemelen ikimiz de bir dereceye kadar özel bir şeyi kaçırıyoruz, ama gerçek dünya deneyimini geliştirmeye çalışmak yerine, Prolog için makul derecede eksiksiz bir ders kitabı düzeyinde bilgi bile öğrenme zamanını ayırmak pratik olmayacaktır. , olası bir mantık programlama kariyeri düşünmüyorsanız.

Geçenlerde 1989'da yayınlanan yapay zeka ve uzman sistemler üzerine bir kitap okuyorum - ikinci el kitapçıda şanslı bir keşif. Önemli bir kısmı, Lisp ve Prolog hakkında özel bir eğitim. Doğru, kapsadığı şeylerin çoğu uzun süredir etkileyici değil (arama, sezgisel tarama vb.), Ama yine de çok ilginç ve IMO'ya biraz zaman ayırmaya değer bir şey.

Prolog'u spesifik olarak tanımlayan daha yeni kitaplar, dili öğrenmek için daha iyi olurdu, ancak o zaman risk, beyninizin orta ila ileri seviyedeki materyalin bir yerinde kulaklarınızdan dışarı çıkmasıdır.


AI / prolog acemi burada. Önerebileceğiniz çevrimiçi kaynaklar var mı?
yati sagade

@yati - amzi.com/AdventureInProlog/advtop.php adresini deneyin - Bir keresinde Amzi sitesinde hatırladığım kadar iyi görünen bir öğretici ile karşılaştım, ama çok uzun zaman önceydi. Prolog için son zamanlarda (muhtemelen son 5 yıl) baktığım tek şey, bu cevapta bahsettiğim AI kitabı. Yorum yazmak yerine burada bir soru aramalı / sormalısınız, özellikle de temelde uzun vadeli bir acemi olan birinin yazdığı cevaplara eklenen yorumlar. Prolog, nadiren ve çok az derinlemesine baktığım bir şey - yoksa on yıl veya daha önce bir acemi olmayı bırakmıştım.
Steve314

10

Bu ben değildim, ama sorunun "prolog ile ciddi bir şey uyguladı mı?" bu sayılabilir:

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

Watson, Linux çalıştıran 10 raf IBM Power 750 sunucusundan güç alıyor ve 15 terabayt RAM, 2.880 işlemci çekirdeği kullanıyor ve 80 teraflopta çalışabiliyor. Watson çoğunlukla Java'da yazılmıştır, ancak önemli kod parçaları C ++ ve Prolog olarak yazılmıştır, tüm bileşenler UIMA kullanılarak dağıtılır ve entegre edilir.



6

Prolog hızlı bir prototipleme için mükemmeldir. Örneğin, http://www.cri.ensmp.fr/classement/doc/A-381.pdf dosyasında GCC için bir SSA dönüşümü önce Prolog'da, sonra C'de uygulanır.

Prolog'un derleyiciler içinde tür sistemlerinin, belirli optimizasyonların ve semantik kontrollerin hızlı ve kirli bir şekilde uygulanması için kullanıyorum ve Prolog kodunu sadece performansı kabul edilemezse zorunlu bir şeye yeniden yazıyorum.


2

Oldukça hızlı bir şekilde cevapladınız, ancak 90'lı yılların ortalarında Prolog'u, prim oranlarına uyacak belirli müşteri segmentlerini (okuma riski) belirleyecek sigorta oranı hesaplayıcıları tasarlamak için kullandım. Bu, günlük olarak mutlaka göremeyeceğiniz bir şeydir, ancak elbette yıllar içinde P&C primlerinizi etkilemiştir.


2

(Bu SSS) 'ye göre , Jeopardy oynayan IBM makinesi Watson'un 1 Bölümü prolog olarak yazılmıştır. (6. soruya bakınız)


1

Prolog'u (önemli) bir avuç vesileyle (teşhis uzman sistemi; HTML dönüşümü; set üyeliği) profesyonel olarak kullandım. Dil için derin bir sevgim var, bu yüzden evet, burada önyargı var ama Prolog'un ne zaman (daha fazla / aynı) uygun olduğu konusunda objektif olmak kolaydır - gerçekten tekrarlayan yapıları işlemek gerekir ; Verebileceğim en iyi örnek ilişkisel bir veritabanı tablosudur, ancak sayısız başka örnek vardır (rastgele kullanıcı girişi veya (en) matematiksel fonksiyonlar gibi karşı örnekleri sıralamak muhtemelen daha kolaydır (ancak, birçok matematiksel fonksiyonun özyinelemeli bir yapısı vardır ve dolayısıyla mükemmel şekilde uygundur (örneğin ayrık hızlı fourier dönüşümü).

Ancak, elbette, çok az sayıda 'uçtan uca sistemler' yalnızca özyinelemeli yapıların işlenmesi açısından tanımlanabilir (istisna: teorem kanıtlama- ancak bu oldukça akademik bir uygulamadır *) bu nedenle bir prolog sürecinin şanslı olması her türlü farklı teknik kullanılarak 'daha standart bir zorunluluk sürecine' aşılanabilir (bir web-servis arayüzünün muhtemelen genel olarak uygun olduğu önemli değildir); böylece kullanıcı arayüzü ve rastgele olay işleme vb. ile başa çıkabilir ve gerektiğinde teslim edebilirsiniz (karmaşık veritabanı sorguları veya özyinelemeli yapılarınızla yapmak isteyebileceğiniz herhangi bir şey yapmak için). Güzel bir şekilde çalıştığını düşünüyorum - örneğin, LINQ'dan daha iyi.

Yinelemeli yapılarınızı hassas bitlerle yakalayın ve hoş, temiz, zarif, bakımı kolay bir Prolog yazın! :)

PS Prolog kullanmadığımda, C # için geri düşmek

  • Her ne kadar, ticari programların en azından bazı yönlerinin standart bir uygulama olarak doğru olduğu bir gün bekliyorum.

1

En sevdiğiniz dilde bir sudoku çözücü yazmayı deneyin, ardından Prolog'da nasıl yapıldığını kontrol edin. Genel olarak herhangi bir CLP problemi, Prolog gibi bildirici bir dile uygun.

Ayrıca, donanım ve yazılımın resmi olarak doğrulanmasında yaygın olarak kullanılmaktadır (akademik ve muhtemelen profesyonel olarak, ancak şirketlere herhangi bir referansım yok).

Son olarak, Erlang hata toleransı ve eşzamanlılığı göz önünde bulundurarak Prolog'dan derinden etkilenir.


0

ABD'deki ve diğer birçok ülkedeki postanın çoğunu okuyan ve sıralayan yazılım, yüksek düzeyde optimize edilmiş bir derleyici kullanılarak Prolog'da yazılmıştır. Posta adreslerinin sözdizimi, bakımı kolaylaştıran ve okuyucuyu çeşitli ülkelerin ve endüstriyel kullanıcıların kurallarına uyarlamayı basitleştiren belirli yan tümce gramerleriyle yazılmıştır. Posta hizmetleri genellikle yönlendirme adresleri, posta kutuları ve sokak adresleri gibi şeyler hakkında karmaşık kurallara sahiptir ve bu kurallar kolay bakım için Prolog'da da formüle edilmiştir.

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.