Portal:SmalltalkProlog
We say that Alan Kay has said somewhere that Smalltalk might have benefited from contact with the contemporaneous developers of Prolog in Europe. Now there are languages appearing which are closer to the Actor Model from which Smalltalk distanced itself and languages which demonstrate the evolution of logic programming. But we still have few places to demonstrate in opensource that here Prolog contributed these features which Smalltalk alone would not have with any ease and here a Smalltalk-like language complements a logic paradigm.
Perhaps oz/Mozart could have evolved - or might yet evolve - beyond emacs. GNU might yet evolve beyond configure and make. Or not.
These pages link to distinctive efforts to marry two paradigms: hierarchical/class-based message passing and Horn clauses or the like with backtracking. Or Smalltalk with constraints. And the early role of constraints in the software of Borning and others. And looks at Logtalk and the type, prototype, class and object frameworks appearing in Prolog.
This is not an academic portal. It is a portal for software developers who have permission to use the language best suited to the task. And we look at some neat ways of having useful rules without an actual rule engine. And we look at domain specific languages as they relate to this topic. And meta-programming, traits and Aspects and such as they relate to this topic.
If the platypus could evolve, if bats could evolve, if penguins and whales could evolve, then a multi-paradigm language with roots in Smalltalk and Prolog might yet evolve. And it might not be a language as such, but more of a component and service framework.
This is not an academic portal. This not a portal for a debate on woulda-coulda-shoulda. This is not lambda-the-ultimate. These are intended as links for developers with solutions to design or problems to solve or issues to clarify. Or practical tips on how best to proceed to leverage rules within a messaging paradigm. Or practical gains to be obtained from meta-programming. From a theoretical standpoint, these concerns with evolving Smalltalk and Prolog may all be trivial. In practice though, just making some difference may be enough for competitive advantage.
We were taught that genes were the mechanism of bio evolution. Now we are being told that the meaningless DNA is key to activation and suppression of genes and the apparent transmission of phenotype. That's a very practical matter. Many now think that evolution has an explanatory role in galactic cosmology. And at least one programming language hopes to be a language which evolves.
If evolution is not a meaningful way to grasp interrelations between the logic paradigm and the O-O messaging paradigm - if the advent of logtalk does not lead to new adaptations - then this portal will not likely have a niche and will not likely evolve further.
This is one of the articles on Declarative Meta-Programming which is one of the places where Prolog intersects with Smalltalk. The result has been the SOUL framework for VisualWorks Smalltalk which can be found at the Cincom Smalltalk public repository. Here you have the article that aroused attention: a role for Prolog in the vision of a Semantic Web: Prolog and RDF. And like the classic Byte issues on Smalltalk and Prolog, there was a classic Byte article for developers by Dick Pountain.
This is the site of the Declarative Meta-programming project.
Here is a link to a Prolog implementation found in Smalltalk/X and elsewhere.
There appears to be no cross-fertilization or cross-pollination occurring with GNU Prolog and GNU Smalltalk. But GNU Prolog works very well with the Logtalk prototype/object/class framework and its reflective options.
Cincom Smalltalk (aka VisualWorks) offers a non-commercial download which can be used to load SOUL as a Prolog within Smalltalk designed to permit reasoning about the Smalltalk host image.
Meta-programming is a common theme to both Prolog and Smalltalk as evidenced by the following links: (incomplete)
Both Prolog and Smalltalk are emerging as important options for the evolving internet and its web application server software infrastructure. YProlog. XSB. Seaside/Pier. PSP.
An outstanding 'rules' success story is ILOG Rules.
Prolog with java can be found in Kernel Prolog at Binnetcorp, YProlog and Prolog+CG among others.
Of course the point is not to implement a Prolog variant in java for its own sake: that might be more sensible in C or C++ or Cecil. The point is to determine, to elucidate, to adumbrate, what Prolog with its facilities for meta-programming might add to java with its facilities for reflection. Or to facilate implementing Domain Specific languages for the JVM. But not for the implemntation of Prolog in and of itself. And the point here is not research: the point is to facilitate building components and/or services that otherwise would be awkward to implement or difficult to maintain or to evolve (with emphasis, hopefully, on the latter.)
Here is a google on the key term CLP that being the acronym for Constraint Logic Programming. This is one direction in which Prolog has evolved.
Another useful term is CHR that being the acronym for Constraint Handling Rules in an important open source implementation of Prolog called SWI_Prolog and an important academic and commercial Prolog in Sweden, SICSTUS.
Logtalk is the name of an opensource project perhaps best described at wikipedia.
Prolog/V is the name of Mike Teng's Prolog first associated with Digitalk's Smalltalk/V.
SOUL is the acronym for the Smalltalk Open Unification Language project in Belgium which is arguably the most advanced opensource integration of Prolog in Smalltalk.
BackTalk, a Constraint Satisfaction framework first released for VisualWorks Smalltalk by Pierre Roy and François Pachet, is now returning to Squeak Smalltalk.
OPS5 had once been available in PDC Prolog; a useful discussion can be found in D'Hondt's thesis.
CLIPS, or C Language Interface to PS is available for java in the form of JESS.
Object-Oriented Prolog, or Prolog with Objects and Classes, has sprung up in variants within AMZI!, SICSTUS and PDC Visual Prolog.
One variant of PDC Prolog which merged with another language is EZY Prolog with its extensive use of AutoCads's DCL as discussed in this tutorial.
Yet another twist is Actor Prolog as evidenced at Alexei A. Morozov's web site.
Here is Prolog implemented in Rebol
TuProlog integrates very nicely with Groovy which appreciates constraints.
Perhaps the latest Smalltalk twist is Io, the language, with the actor model and the Smalltalk syntax. But Io shares a great deal with Self and Javascript. It was Carl Hewitt's Actor Model which begat Scheme.
And perhaps a final twist: Smalltalk with LISP, a recurring theme for many years, and most recently in VistaSmalltalk.NET
Last comes Hermes whose distributed computing vision did not survive to influence either Smalltalk or Prolog, let alone bring the two language paradigms together.
Oh yes, Aufhebung, which Wikipedia translates as 'sublation'; a term for what might happen when seemingly incompatible alternatives overcome their differences to emerge as neither one nor the other. Something new.
And one last evolutionary appendix: a project no longer evolving at UW Constraints although Alan Borning was important to the first meeting of constraints and Smalltalk in ThingLab.
Or does this page continue to evolve? Can a programming language evolve? Trans author Jeff Wunderlich answers in the affirmative.
There are at least two ruminations on Scala which are worth a read: [1] and [2]. I suggest this because Scala competes quite directly with Oz/Mozart and there is a beginning of a Prolog for Scala.
The other Prolog for an unusual language is the Prolog for Rebol.
In Mercury ( the typed-prolog which played a role in the evolution of Oz ) there are three levels of determinism:
This is the English version of the site of Prologia home to Prolog in France. And this is the site of of what was once Borland Turbo Prolog: Prolog Development Centerin Denmark. As you can see, both are focussed on applications for specific industries. This is Prolog quietly demonstrating competitive advantage. The picture is very similar for Smalltalk.
Wikipedia has an excellent Prolog page.
The wikipedia Smalltalk page is also a good starting point. That page include as link to Avi Bryant's Seaside web framework but has no link to SOUL, Roel Wuyt's Smalltalk Open Unification Language or to Backtalk. It does include mention of the Actor Model. It does not (070522) have a link to meta-programming in the MetaclassTalk Project.