Logtalk - Logtalk

günlük konuşma
paradigma Mantıksal programlama , nesne yönelimli programlama , prototip tabanlı programlama
Tarafından dizayn edilmiştir Paulo Moura
İlk ortaya çıktı 1998 ; 23 yıl önce ( 1998 )
kararlı sürüm
3.48.0 / 6 Temmuz 2021 ; 1 gün önce ( 2021-07-06 )
işletim sistemi Çapraz platform
Lisans Sanatsal Lisans 2.0 (2.x) / Apache Lisansı 2.0 (3.01.x)
İnternet sitesi logtalk .org
Tarafından etkilenmiş
Giriş , Küçük Konuşma , Amaç-C

Logtalk , Prolog dilini geniş kapsamlı programlama için uygun bir özellik seti ile genişleten ve güçlendiren nesne yönelimli bir mantık programlama dilidir . Bu desteği sağlar kapsülleme ve veri gizleme , kaygıları ayrılığı ve gelişmiş kod yeniden . Logtalk, birkaç operatör ve yönergenin eklenmesiyle standart Prolog sözdizimini kullanır.

Logtalk dil uygulaması bir açık kaynak lisansı altında dağıtılır ve arka uç derleyici olarak bir Prolog uygulaması (resmi ve fiili standartlarla uyumlu) kullanılarak çalıştırılabilir .

Özellikleri

Logtalk, nesne yönelimli programlama ile mantıksal programlamanın avantajlarını bir araya getirmeyi amaçlar. Nesne yönelimi, ayrı, yeniden kullanılabilir yazılım birimleri geliştirmeyi vurgularken, mantıksal programlama, her nesnenin bilgisini bildirimsel bir şekilde temsil etmeyi vurgular.

Nesne yönelimli bir programlama dili olarak, Logtalk'ın başlıca özellikleri arasında hem sınıflar (isteğe bağlı metasınıflar ile ) hem de prototipler , parametrik nesneler, protokoller ( arayüzler ), kategoriler (bileşenler, yönler , sıcak yamalama ), çoklu kalıtım , genel/korumalı/özel desteği bulunur. kalıtım, olaya dayalı programlama , üst düzey çoklu iş parçacığı programlama, yansıma ve otomatik belge oluşturma.

Prolog programcıları için Logtalk, yüklem ad alanları (hem statik hem de dinamik nesneleri destekler), genel/korumalı/özel nesne yüklemleri, ortak tümevarımsal yüklemler , arayüz ve uygulama arasında ayrım, basit ve sezgisel meta-yüklem semantiği, lambda ifadeleri , kesin özellikleri içeren geniş taşınabilirlik sağlar. yan tümce dilbilgileri , terim genişletme mekanizması ve koşullu derleme. Ayrıca fiili standart çekirdek modül işlevselliğine dayalı bir modül sistemi sağlar (dahili olarak modüller prototip olarak derlenir).

Örnekler

Logtalk'ın sözdizimi Prolog'a dayanmaktadır:

?- write('Hello world'), nl.
Hello world
true.

Bir nesneyi tanımlama:

:- object(my_first_object).

    :- initialization((write('Hello world'), nl)).

    :- public(p1/0).
    p1 :- write('This is a public predicate'), nl.

    :- private(p2/0).
    p2 :- write('This is a private predicate'), nl.

:- end_object.

Nesneyi kullanarak, bir my_first_object.lgt dosyasına kaydedildiğini varsayarsak:

?- logtalk_load(my_first_object).
Hello world
true.

?- my_first_object::p1.
This is a public predicate
true.

Özel yüklemi erişmeye çalışmak bir hata veriyor:

?- my_first_object::p2.
ERROR: error(permission_error(access, private_predicate, p2), my_first_object::p2, user)

Anonim işlevler

Logtalk, anonim yüklemler (lambda ifadeleri) için aşağıdaki sözdizimini kullanır:

{FreeVar1, FreeVar2, ...}/[LambdaParameter1, LambdaParameter2, ...]>>Goal

Serbest değişken içermeyen ve bir liste eşleme yüklemi kullanan basit bir örnek:

| ?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys).
Ys = [2,4,6]
yes

Körleme de desteklenmektedir. Yukarıdaki örnek şu şekilde yazılabilir:

| ?- meta::map([X]>>([Y]>>(Y is 2*X)), [1,2,3], Ys).
Ys = [2,4,6]
yes

Prolog arka uç uyumluluğu

Desteklenen arka uç Prolog derleyicileri arasında B-Prolog , Ciao Prolog , CxProlog , ECLIPSe , GNU Prolog , JIProlog , Quintus Prolog , Scryer Prolog , SICStus Prolog , SWI-Prolog , Tau Prolog , Trealla Prolog , XSB ve YAP bulunur . Logtalk, nesne ve kategoriler içinden arka uç Prolog derleyici kitaplıklarının kullanılmasına izin verir.

Geliştirici araçları

Logtalk, çevrimiçi yardım, bir belgeleme aracı (PDF ve HTML dosyaları oluşturabilen), bir varlık diyagramı oluşturucu aracı, yerleşik bir hata ayıklayıcı (çoğu Prolog derleyicisinde bulunan geleneksel Prosedür Kutusu modelinin genişletilmiş bir sürümüne dayalıdır) içerir. kod kapsamı analizine sahip bir birim test çerçevesi ve ayrıca seçili arka uç Prolog profil oluşturucular ve grafik izleyicilerle uyumludur.

Uygulamalar

Logtalk, ürün imalat bilgilerini değiş tokuş etmek için kullanılan STEP veri modellerini işlemek için kullanılmıştır . Ayrıca tercih muhakemesi ve kısıtlama çözümüne izin veren bir muhakeme sistemi uygulamak için kullanılmıştır .

Ayrıca bakınız

Referanslar

Dış bağlantılar

  • Resmi internet sitesi
  • günlük konuşma blogu
  • Düz Girişten Logtalk Nesnelerine: Etkili Kod Kapsülleme ve Yeniden Kullanım (Davetli Konuşma). Paulo Moura. 25. Uluslararası Mantık Programlama Konferansı (ICLP) Tutanakları, Temmuz 2009. LNCS 5649. Springer-Verlag Berlin Heidelberg". ( Slaytlar )