Talk:Prolog/Archive 1
This is an archive of past discussions about Prolog. Do not edit the contents of this page. If you wish to start a new discussion or revive an old one, please do so on the current talk page. |
Archive 1 |
Focus
I found one basic flaw : you speak about some side effects caused by predicates. At that point it should be mentioned that the raw Prolog DOES NOT support side-effects predicates, at least it wasn't designed to. When you describe some programming language speak about essensials, not the strange details, i don't know but many of the articels on wiki are similar quality, too many redundant details are attached --- it shouldn't be a proze !!!
- First of all, Prolog is an ISO-standardized programming language, and even plain ISO-Prolog has predicates with side-effects. Second, the article has changed considerably, and I hope your main point (speaking more about essentials) is adequately addressed.
Which of the Prologs are open source and support Unicode?
- Gnu and swi at least should be. Support Unicode where? In strings (probably all), symbols (probably none)? blades
- SWI supports Unicode in strings and symbols. --134.58.253.114 08:27, 27 July 2005 (UTC)
Good article
I just wanted to say, I really like the example-driven style of this article, and I find the intro very accurate. Good work to the editors. Deco 03:27, 17 Nov 2004 (UTC)
- I agree, this article was the best starting point for me picking up this new language, which is nothing like anything I've seen before coming from a C++/Java background. Student 04:20, 15 October 2005 (UTC)
Turing completeness
I have a question: does the fact that Prolog is restricted to Horn clauses have a consequence on its generality, meaning, does it follow that Prolog is not equivalent to a Turing machine? 81.63.124.173 23:58, 2 November 2005 (UTC)
- No, Prolog is Turing-complete. --Saforrest 05:19, 27 January 2006 (UTC)
Opening Wording
I really don't like the implication of part of the opening paragraph: "It was created by Alain Colmerauer and Robert Kowalski around 1972 as an alternative to the American-dominated Lisp programming languages."
Prolog wasn't built as an alternative to Lisp and in definatly not because of American domination of Lisp. The two are simply different languages. Lisp is based around list processing and it's AI uses and Prolog is centered around logical constructs (which may feature lists heavily and also has AI applications), but that doesn't mean they are alternatives or were intentionally built as alternatives. Canderra 20:25, 30 May 2006 (UTC)
GA Consideration
I've decided not to speedy fail the article because I do think you have a good 3-5 days before a reviewer would come to do a full review. However the article currently would not pass Criteria 2b of the WP:WIAGA. I encourage the editors to work on implementing the needed cites so that it has a chance of passing GA consideration. Agne 06:47, 17 October 2006 (UTC)
Reasons for not promoting
Hi all,
I've decided not to promote this article for two reasons:
Firstly, parts of the writing could use improvement. Two phrases in a row in brackets as is the case for, "(especially natural language processing, which it was originally designed for). (The original goal was to provide a tool for computer-illiterate linguists.)", hurts the article's readability.
Secondly, I feel the Data types section is weak. Part of the problem is that readers start to read it without much discussion of what Prolog is but I am also concerned about subsections such as the Numbers one which simply reads, "Most Prolog implementations do not distinguish integers from real numbers."
Cedars 10:05, 17 October 2006 (UTC)
- The data types section was indeed extremely flawed. The ISO standard for Prolog prescribes floats and ints; many implementations go beyond that by providing unbounded integers and rational numbers in addition. I corrected this and several other misconceptions.
Philippe Roussel
Philippe Roussel is described in the reference "The Birth of Prolog" (by Alain Colmerauer and Philippe Roussel) as being the one that choosed the name Prolog as an abbreviation for “PROgrammation en LOGique”. I corrected this in the article where it said PROLOG was taken from the English word "programming in logic". I also added Philippe Roussel as one of the designers of Prolog, since this reference clearly points it to be. --Nuno Morgadinho 12:08, 12 November 2006 (UTC)
Oopsie
Hi all, I just added a 'more interesting' example to the intro. part, but on saving, I realize that the article itself goes on to introduce rules anyway. I suggest that the Programming In Prolog section is revised, maybe trashing the 'Extra-logical' subsection, and maybe the whole 'Programming In Prolog' section as it does seem to be a rather bumpy obstacle to getting into the meat of the article. Sweavo 14:53, 22 June 2007 (UTC)
- Thanks, I've now merged rule and fact explanations and done away with the extra-logical subsection: Only write/1 is extra-logical in that section, not backtracking etc. I've also changed back is_cat/1 to cat/1: Prolog built-in predicates like integer/1 are not called "is_integer/1" either.
Data types section
I cleaned up the data types section so that it is readable to someone who does not already know Prolog. When I first tried to learn Prolog I came to this page, and found myself cursing and swearing at the incomprehensible and grossly incomplete definitions. Now it has better examples and is accurate and understandable, at least to me. Xezlec (talk) 01:12, 25 December 2007 (UTC)
"Too Short" Intro
I've extended the intro in the hopes that someone will see fit to remove the "too short" tag. I'm well aware I didn't do the most amazing job, but it was the best I could do. Please revise and/or comment on it as you see fit. Xezlec (talk) 01:12, 25 December 2007 (UTC)
- Yep, intro's better now. Could do with some additional work on summarising the article, but it's not woefully incomplete now. Chris Cunningham (talk) 12:09, 25 December 2007 (UTC)
- Added more intro, to capture more of the main article, but also to set more context for those entirely unfamiliar with Prolog. The new parts could still use some references, e.g. pointing to entries in the "References" section. Thron7 (talk) 15:26, 7 January 2008 (UTC)
- Thanks. I've trimmed this back a little, so as to present only what is reallyrequired to provide an overview and to avoid some repetition. I've removed the tag. As for references, the Wikipedia Manual of Style does not mandate that article leads contain inline citations so long as the points that it makes are adequately covered (and referenced) in the article body itself. So I think we're okay without them. Chris Cunningham (talk) 15:36, 7 January 2008 (UTC)
functor arity
I agree with the suggestion to remove complicated arities such as "/2". These are an unnecessary complication in an introductory article and are sure to put people off Prolog. Logperson (talk) 17:05, 21 January 2008 (UTC)
- Agreed. We should endeavour not to smother the reader with less essential information. Chris Cunningham (talk) 17:50, 21 January 2008 (UTC)
- I exaggerated when I commented that the use of arities makes the article unreadable. I should have said only that it makes it unnecessarily complicated. Explicit arities are needed when there are ambiguities. I don't see that there are ambiguities here. Also, the use of arities in the current version is not consistent. Why use them in some places and not in others, unless of course there would be ambiguities without them.
- Logperson (talk) 13:06, 22 January 2008 (UTC)
- After some more thought I agree that the arities are not needed and should be removed from the article text. (I don't think that arities are "sure to put people off Prolog", though.) —Tobias Bergemann (talk) 14:23, 22 January 2008 (UTC)
- I disagree completely. The arities are essential, since they are needed to uniquely identify the predicates. For example, conjunction is ,/2, and not ,/3 or ,/4. Also, several built-in predicates are provided with various arities, for example append/3 and append/2 (see SWI-Prolog). It is important and customary to denote predicates this way, and it is also clearly explained in the article. I vote for restoring the original article. 128.131.197.234 (talk) —Preceding comment was added at 16:40, 22 January 2008 (UTC)
Input
I used prolog 20 years ago. Now I can't run any of these programs. The problem is that there's not a simple way to input a string! IMHO, Prolog is a dead language. Albmont (talk) 22:14, 19 July 2008 (UTC)
- read/1? Pgr94 (talk) 02:06, 20 July 2008 (UTC)
- It does not work in swi-prolog. Albmont (talk) 23:57, 20 July 2008 (UTC)
- This is an encyclopaedia. If you are looking for support try the SWI-Prolog mailing list or the comp.lang.prolog newsgroup Pgr94 (talk) 12:25, 22 July 2008 (UTC)
- It does not work in swi-prolog. Albmont (talk) 23:57, 20 July 2008 (UTC)
Parser example accurate?
I think that the parser example is not good: the underlying BNF grammar cannot generate syntax trees with adequate handling of operator precedence relations (i.e., "*" evaluates before "+" - instead it would generate a syntax tree evaluating an expression from the beginning to the end), but the parser source code in prolog does exactly that. I think it would be a better idea to show the parsing strength of prolog by showing a parser that could be derived from the grammar by purely automatic means, with no additional human creativity in programming. --Regenspaziergang !? 19:27, 18 November 2008 (UTC)
Good point, the BNF as stated is ambiguous. I think that since one typically wants the conventional precedences for operators, it is OK to show how it can be done in the Prolog code, and we should better improve the BNF: We could either disambiguate it, or make a short statement that the given BNF allows parse trees that we do not consider valid, and which we have ruled out in the Prolog translation. —Preceding unsigned comment added by 192.35.241.121 (talk) 14:19, 22 November 2008 (UTC)
Argument is ground?
"This kind of negation is sound if its argument is ground." in the negation section. To me, this doesn't make sense (an argument being ground?). I was going to change 'ground' to 'sound', but I thought it was a bit of a stretch of the imagination for it to be a typo. Any ideas? —Preceding unsigned comment added by Aphswarrior (talk • contribs) 11:05, 17 June 2009 (UTC)
"Ground" is correct. It means the negated part, which is the argument of \+/1, does not contain variables. For example, \+ g(a) is sound (it succeeds if and only if g(a) cannot be proved), but \+ g(X) not necessarily: if there is a solution g(b), and g(c) is not a solution, then \+ g(X) will fail although there can be terms that would satisfy it (namely X = c). In this case, you would rather call it "incomplete" than unsound, because it fails to find a solution although there is one, but nevertheless it is usually called "unsound" in Prolog books because unsoundness immediately follows in cases where you use \+/1 twice. If the argument is ground, this problem cannot arrise. —Preceding unsigned comment added by 192.35.241.121 (talk) 13:01, 3 July 2009 (UTC)
Pronunciation?
How is it pronounced? Is it 'prologue' or 'Pro-Log' (pro-lawjh (?) as in "Programming-Logic") or is it something completely different? —Preceding unsigned comment added by 120.138.100.101 (talk) 14:46, 2 August 2009 (UTC)
Make article more accessible: create new article Prolog syntax and semantics
The article goes into great detail about Prolog syntax and semantics that the lay reader might not be interested in. I would like to suggest improving readability by creating a separate article that covers the material in the sections data types, evaluation, loops and recursion, negation, operational considerations (any others?). The main Prolog article would then just briefly mention these points with a link to the more detailed article. I thought I'd check here as it's rather a large change. For similar examples see Python syntax and semantics and Java syntax. pgr94 (talk) 14:19, 26 September 2009 (UTC)
- No-one objected to this suggestion, so I have been bold and gone ahead with the proposed change. There is now a new article Prolog syntax and semantics which is material taken from Prolog. Then I removed much detail from Prolog consolidating it into one section (Programming in Prolog) then for the reader wishing to know more there is link to the syntax and semantics article. This gives the article a little more breathing room for more material while not sacrificing the details. pgr94 (talk) 23:58, 1 October 2009 (UTC)
Criticism
I think it should be mentioned in this section that Prolog is one of the main languages(the others being Lisp and derivatives) in AI research(at least in most European Countries). Being a research tool, there isn't much sense in using industry "standards" of appreciation.193.136.39.100 (talk) 08:53, 20 November 2009 (UTC)
- Thanks. Taking your suggestion into account, I have tried to find a fairer wording for this section (which was not authored by me). --Thüringer ☼ (talk) 15:54, 20 November 2009 (UTC)
Orphan sentence about unit tests
I deleted the following sentence because it was out of place and there doesn't seem to be a good place for it. Perhaps the article could use a section on programing-in-the-large or software engineering and then it could be restored.
All predicates can also be used to perform unit tests: Queries can be embedded in programs and allow for automatic compile-time regression testing.
pgr94 (talk) 00:39, 9 December 2009 (UTC)
ISO standard info outdated or incomplete
The first two sentences of the ISO Prolog section seem to be accurate, but the last two are either incorrect or outdated.
X3J17 is the US Technical Advisory Group for ISO Prolog, but the standard is maintained by WG17 (ISO/IEC JTC1/SC22/WG17). WG17 SC22
ISO/IEC 13211-1 is part one of the standard, covering the general core. Part two, ISO/IEC 13211-2, covers modules.
kmarple1 (talk) 18:44, 26 November 2009 (UTC)
- I've updated the ISO Prolog section to reflect the information in my above post. kmarple1 (talk) 17:37, 15 April 2010 (UTC)
Redirect
I found a new article entitled Prologue language which I redirected here as it appears to be about Prolog. I am not sure there is anything worth merging, but the intial version of the article is here if someone wants to check. Thanks, Jonathan Oldenbuck (talk) 13:07, 1 June 2010 (UTC)
- It would be not good to merge it here. The version in question looks just like this. Mulukhiyya (talk) 18:28, 1 June 2010 (UTC)
- This article seems better so I'd agree with the redirect. pgr94 (talk) 21:11, 1 June 2010 (UTC)
Tabling
Should the section on Tabling be moved to Extensions instead of Implementation? The current wording refers to it as an extension, so it seems out of place.
Also, I couldn't find when the "citation needed" was added, and the intent is a bit unclear. Is the citation desired to show that those implementations use tabling, that it is used as an extensions, that it is used by Prolog implementations at all, or simply what tabling is? The latter case could be resolved by linking to the appropriate Wikipedia page, tabling. —Preceding unsigned comment added by Kmarple1 (talk • contribs) 14:18, 25 July 2010 (UTC)
- It would be good to have a reference that describes what tabling is. The tabling article is about memoization and doesn't even mention the word "tabling" so that is not very satisfactory. If tabling is a synonym for memoization then a reference to back that up would be good. pgr94 (talk) 16:23, 25 July 2010 (UTC)
- You almost convinced me to move this little section to Extensions, but then I realized that Extensions describes extensions to the language. Implementations is the correct place to discuss tabling because it does not add to the language but increases interpreter speed. Regarding the other question, you could say that tabling and memoization are synonyms in the realm of logic programming. It would be better to say that tabling is the result of applying the principle of memoization to logic programming. (This is how I read Neng-Fa Zhou and Taisuke Sato (2003): Efficient Fixpoint Computation in Linear Tabling, In Proceedings of the 5th ACM SIGPLAN Conference on Principles and practice of declaritive programming, pp. 275–283..) --Thüringer ☼ (talk) 20:14, 26 July 2010 (UTC)
- I must have been tired when I looked at the memoization article because I have now noticed that it does in fact mention tabling and logic programming, so I take back what about it not being mentioned. I agree with you about tabling belonging in the Implementation section rather than Extensions. As per WP:BOLD, feel free to make to make changes. pgr94 (talk) 22:44, 26 July 2010 (UTC)
- OK, done. Also removing the references tag from this talk page because it's an eye sore. --Thüringer ☼ (talk) 11:37, 29 July 2010 (UTC)
- I must have been tired when I looked at the memoization article because I have now noticed that it does in fact mention tabling and logic programming, so I take back what about it not being mentioned. I agree with you about tabling belonging in the Implementation section rather than Extensions. As per WP:BOLD, feel free to make to make changes. pgr94 (talk) 22:44, 26 July 2010 (UTC)
Reference to broken DOI
A reference was recently added to this article using the Cite DOI template. The citation bot tried to expand the citation, but could not access the specified DOI. Please check that the DOI doi:10.1007/3-540-16492-8_73 has been correctly entered. If the DOI is correct, it is possible that it has not yet been entered into the CrossRef database. Please complete the reference by hand here. The script that left this message was unable to track down the user who added the citation; it may be prudent to alert them to this message. Thanks, Citation bot 2 (talk) 00:16, 25 August 2010 (UTC)
!
Some example code snippets use the "!", but I'm not sure that it's really explained in the article... AnonMoos (talk) 12:52, 30 December 2010 (UTC)
Prolog Source Syntax Highlighting
I guess there is an error in the source tag, when the language is Prolog. Atom, and thus compound functors, allow underscore in it. But for example:
program_optimized
Is highlighted as if it is an atom and a variable. The _optimized part gets the color of a variable. It would be better when an enhanced rule for highlighting is used. Not sure who to address.
unification is missing
I just wanted to point out that "unification" is missing! Since unification is pretty central concept, someone with strong background, please include in the Evaluation section, how exactly "unification" relates to, for example SLD resolution or substitution, they are not just mere synonyms. I get the basic idea, but there is more to it. i.e. I don't understand point 3 of Unification_(computing)#Unification_in_logic_programming. thanks Ib84 (talk) 09:19, 7 June 2011 (UTC)
":-/2
is an infix operator"
This claim in the section "meta-interpreters and reflection" does not seem to be cited, nor is :-/2
listed as a predicate for either SWI-Prolog or GNU Prolog. Trying to use it as an infix operator gives errors in GNU Prolog (what I have installed) in all the ways I've tried it. Ought it to be removed? Calcdude84se (talk) 02:26, 27 June 2011 (UTC)
(:-)/2 is an infix operator in both SWI and GNU Prolog, and certainly others as well - try the query: ?- current_op(X, xfx, :-). It has nothing to do with predicates except that you can use the operator to write a rule as (Head :- Body) instead of :-(Head, Body), which would otherwise be the only valid notation. — Preceding unsigned comment added by 77.117.88.137 (talk) 00:28, 5 July 2011 (UTC)
MeeGo
Nokia smartphones running MeeGo use Prolog (source code). 77.255.184.223 (talk) 19:40, 11 July 2011 (UTC)
Perfect Number Prolog Code: Author and Origin?
Hi,
In the higher order programming section of the Prolog Wikipedia entry there is a simple Prolog text to compute some perfect numbers. Does this Prolog code have some authorship and origin? Is it copied from some text book, or was it invented for the Wikipedia entry?
Best Regards
Janburse (talk) 16:36, 10 August 2011 (UTC)
P.S.: I just found a reference:
http://groups.google.com/group/comp.lang.prolog/tree/browse_frm/month/1988-12/54b6809382290289
Seems to have been a post by Thomas Sj|land on comp.lang.prolog, dating dec 16, 1988 and titled Christmas pleasure.
Modes and determinacy
Two suggestions:
- The article discusses modes but doesn't give any examples. An example of two explaining +/- etc would be good.
- There is no mention of determinacy though this is quite important.
Running Prolog in batch mode
Prolog is almost always described as an interactive language where the user enters queries at the ?-
prompt. Prolog can of course also be run in batch mode either by a script or as a standalone executable.
Is there any way of describing batch execution in a way that is system-independent, ie. in a way that is not operating system specific or prolog system specific? 185.14.167.6 (talk) 11:26, 4 November 2013 (UTC)
- This is not a programming forum. I suggest you try StackOverflow or some such website. QVVERTYVS (hm?) 23:04, 5 November 2013 (UTC)
- To me, the question seems relevant to the article. The IP editor added information regarding interactive operation of Prolog, it makes sense to also describe batch operation on a general level. pgr94 (talk) 06:38, 6 November 2013 (UTC)
Higher-order programming example
This example is presented with no explanation and is hard to understand. What is "Cont"?
maplist(_Cont, [], []). maplist(Cont, [X1|X1s], [X2|X2s]) :- call(Cont, X1, X2), maplist(Cont, X1s, X2s).
pgr94 (talk) 11:22, 18 March 2014 (UTC)
- It's a predicate. "Cont" probably stood for continuation. I've moved this example to the section that explains higher-order programming and added some clarification to it. QVVERTYVS (hm?) 14:44, 18 March 2014 (UTC)
"Naive sort"
It would be nice if the article showcased sort implemented as "output is a permutation of input and output is sorted" as that would nicely illustrate the language. I have never actually done anything Prolog, so I don't feel qualified to edit this in myself. --82.128.250.221 (talk) 14:12, 6 April 2014 (UTC)
- What would it illustrate, that you can write a horribly suboptimal algorithm in a few lines of code? I'd rather show something more useful, like a small DCG. The algorithm you mean is this:
sort(L, P) :-
permutation(L, P),
sorted(P).
sorted([]).
sorted([_]).
sorted([X,Y|L]) :-
X @< Y,
sorted([Y|L]).
- If
permutation
is a library function (it is in SWI) then this is very short program, but then so is the Python version:
from itertools import permutations
def sort(l):
return next(p for p in permutations(l)
if all(x < y for x, y in zip(p, p[1:]))
- That's even shorter. But no Pythonista will use an O(n!) algorithm for an O(n lg n) problem to illustrate their language. QVVERTYVS (hm?) 21:36, 6 April 2014 (UTC)
- Oh and in Haskell it's even easier to write bad code:
sort = head . filter sorted . permutations
sorted xs = and . zipWith (<) xs $ tail xs
- (Just showing off here ;) QVVERTYVS (hm?) 21:59, 6 April 2014 (UTC)
References on the intro - games and automated answering systems
Every application of PROLOG on the article intro has an reference, except these two: games and automated answering systems.
Anyone can point me to the source of these applications?
--Lucas Gallindo (talk) 01:12, 13 June 2014 (UTC)
- I've removed the games. I'm not sure what "automated answering" even means, so I think I'll remove that too. QVVERTYVS (hm?) 09:38, 13 June 2014 (UTC)
- Please see question answering. For example, you may have heard of IBM Watson, a question answering system that was partially implementd in Prolog. pgr94 (talk) 11:37, 13 June 2014 (UTC)
- I already added a reference to Watson while rewriting the paragraph. The problem is called "question answering", not "automated answering". (I actually thought it had something to do with answering machines.) QVVERTYVS (hm?) 12:24, 13 June 2014 (UTC)
Industrial applications
It would be good to describe a wider range of industrial applications. Toy problems like N-queens get disproportionate coverage.
- NASA's Clarissa: voice-controlled system onboard the International Space Station [1][2]
- "SICStus Prolog is a workhorse in the transport and logistics industries, running systems that handle a third of all airline tickets, and helping railways to operate their trains better." [3]
Any other interesting/significant ones? pgr94 (talk) 17:11, 10 November 2014 (UTC)
- The "workhorse" claim is rather hard to verify, since SICStus doesn't actually disclose its customers. We're actually already citing Logic programming for the real world, which discusses the paucity of real-world applications (in a criticism section). The main other source for this kind of stuff that I've seen is The Practical Application of Prolog (from 1993, reprinted by Dr. Dobbs in 2002); old and an affiliated source since it's written by someone from the "Prolog Vendors Group", but published in a reputable venue.
- If ECLiPSe is considered a Prolog, then that might lead to some applications: it was developed at Cisco, after all. I don't know what they use(d) it for. QVVERTYVS (hm?) 22:54, 10 November 2014 (UTC)
- Oh and Armstrong's works on the history of Erlang describe its use as a prototyping language. QVVERTYVS (hm?) 23:22, 10 November 2014 (UTC)
- I agree the workhorse claim needs a better source. Sources from the 90s are pretty dated now and could use a refresh. Prolog has continued to develop (far more efficient, support for web development, etc). pgr94 (talk) 11:16, 11 November 2014 (UTC)
- Oh and Armstrong's works on the history of Erlang describe its use as a prototyping language. QVVERTYVS (hm?) 23:22, 10 November 2014 (UTC)
- 360º Fares System: "one of the largest and most profitable Prolog applications written."[1] http://symplicity.biz/ (link is dead, what happened? go under or bought out?)
- SecuritEase settlement system for stock and securities.[2] "In the past 10 years New Zealand company Scientific Software and Systems has built, and continues to develop, a core business financial application using Prolog and CHR. The “SecuritEase” stock broking system is now in daily use at ten major brokerages throughout Australia and New Zealand including the 45 billion Euro National Australia Bank.[4]"
- ClioPatria semantic search web-server[3], 70,000 lines of code.
- Re: ClioPatria, that's a nice application, but not an industrial one. It was designed at two universities and this e-culture project is run by a couple of academic/research institutes. (Not saying it shouldn't be listed.) SecuritEase seems like a killer app for Constraint Handling Rules, and can be mentioned there as well. QVVERTYVS (hm?) 11:51, 11 November 2014 (UTC)
Changing the "reasoning with uncertainty" example
Pgr94, I didn't object to your changing the reasoning with uncertainty example from Sterling and Shapiro to use ISO Standard Prolog constructs or readable variable names; far from it. I just think that we should treat code taken from sources as quotations, so clearly state that the code was modified. Regarding the mode declaration: you may call me lazy, but adding a declaration that you know is incorrect is not going to help readers. (In fact, I think mode declarations may be confusing in any case, since they're not even mentioned in the article.)
I suggest we return to your version with min/2
and long variable names, and find some succinct formulation that establishes the code example as a variant of S&S's. QVVERTYVS (hm?) 12:14, 26 November 2014 (UTC)
- Put in any version you wish, Qwertyus, I'm a little tired of spending 90%+ of time in talk pages.
- Modes are covered in the article here.
- Coding guidelines recommending the use of modes are here.
- pgr94 (talk) 13:19, 26 November 2014 (UTC)
- What I meant is that the actual syntax for modes isn't discussed. I've restored the readable version. QVVERTYVS (hm?) 14:23, 26 November 2014 (UTC)
Use in the Buran project
The article currently cites a CIA report which claims that the Buran was programmed in Prolog, and various people on the Internet repeat this claim. The CIA report certainly states this, but is it true?
I did some research using Google Translate, and found two reliable sources which states that the Buran project involved two new programming languages, PROL2 for the flight systems and DIPOL for ground-based testing. I added this information to Buran_programme #Development. There was also a system SAPO PROLOGUE (spelled PROLOG on one webpage), but from the machine translated text it is a bit unclear how this relates to PROL2.
So, did these languages have anything to do with Prolog, or was the CIA analyst just confused by the name? On the face of it, it seems an unlikely choice for a real-time, memory-constrained flight controller. Furthermore, these languages were later developed into DRAKON, which seems very unlike Prolog. (On the other hand, looking at Erlang today you could not really guess that it was originally implemented in Prolog, so I guess there could be some kind of connection.)
Vladimir Parondzhanov (who was involved in the developement of of DRAKON, and has done a lot of work publicising it on the web) has said that it is sheer stupidity to think that PROL2 has anything to do with Prolog (Google Translate). Parondzhanov also has a Wikipedia account, @Владимир Паронджанов:, so maybe he can weigh in here himself.
On the other hand, there is an article (Google Translate) which states "Language PROL2 largely repeats the famous logic language Prolog, but was built on the basis of official Russian words". At the end of the article the author writes, "I was lucky enough to work for a year with one of the programmers landing system Buran, Alexander Y. Sundukova. Article inspired by his stories on lunch breaks."
I guess finding a reliable source for what PROL2 was like 30 years after the fact will be very difficult. On the other hand, the CIA report is not very conclusive either---it's just a single sentence, they clearly do not have any detailed information about the programmer (since they go on to speculate whether the choice of language means that the Buran used AI techniques), and they just cite "open sources" so anything they looked at should in principle be available to us also. If it seems dubious, then we are not required to cite it just because it exists. — Preceding unsigned comment added by Vilhelm.s (talk • contribs) 16:27, 26 March 2015 (UTC)
Prolog was never used in the Buran project
I'm very glad, that you are interested in this history.
The French language Prolog by Alain Colmerauer was not used in Soviet Buran space project. It is wrong information. It is not true.
There was Russian real time imperative language ПРОЛОГ for Russian on-board computer Biser-4. Russian ПРОЛОГ was developed by Victor A. Krjukov (Виктор Алексеевич Крюков) from Keldysh Institute of Applied Mathematics. The second (revised and updated) version of Russian ПРОЛОГ is called ПРОЛ2 (PROL2). To avoid misunderstanding, I use the term PROL2 in my books and never use the word ПРОЛОГ. Thank you for attention. --Владимир Паронджанов (talk) 18:47, 26 March 2015 (UTC)
- Thanks for commenting! For now, I removed the claim from the article. Do you happen to know any published source (e.g. one of your own books) which states that ПРОЛОГ and/or ПРОЛ2 were imperative languages, not logic programming languages? I feel this claim is repeated often enough that someone will put it back into the article, it would be better if we could include a refutation.
- I wonder if we will ever see any of this source code publised? The computer programs for the Apollo Project are available online now, but I guess those are more historically significant... Vilhelm.s (talk) 22:14, 26 March 2015 (UTC)
- See report by Victor Krjukov in Russian here --Владимир Паронджанов (talk) 15:18, 27 March 2015 (UTC)
- По поводу языков Прол2, Диполь и Лакс приведу цитату из "Паронджанов В. Д. Графический синтаксис языка ДРАКОН. — 1995. — Т. 3. — С. 45—62. — (Программирование)".
- See report by Victor Krjukov in Russian here --Владимир Паронджанов (talk) 15:18, 27 March 2015 (UTC)
При создании бортовых и наземных программ орбитального корабля "Буран" использовались языки Прол2, Диполь, Пси Фортран, Лакс, Ассемблер и др. (первые три разработаны в ИПМ РАН). Обобщение опыта работы с этими языками привело к формированию концепции графического языка дракон... Дракон разрабатывается в НПО автоматики и приборостроения совместно с ИПМ РАН и предназначен для создания программ реального времени, а также для обучения программированию[4]
--Владимир Паронджанов (talk) 15:32, 27 March 2015 (UTC)Владимир Паронджанов (talk) 08:54, 26 July 2015 (UTC)
hello — Preceding unsigned comment added by 81.186.30.223 (talk) 11:41, 27 November 2015 (UTC)
Prolog construction software
I stumbled across http://www.meridiansystems.com/products/prolog/overview/. Maybe a disambiguation is necessary? — Preceding unsigned comment added by BartYgor (talk • contribs) 11:04, 26 October 2016 (UTC)
Quicksort algorithm
Surely this is not the quicksort program in the usual sense; it only serves to prove that a list is *already* sorted (and is overly complex for that). If it's going to be quicksort, surely it needs an input and an output, whereas this has only an input. One can find examples of quicksort implemented in Prolog, e.g. in the book "Prolog User's Handbook" by Bogdan Filipic. Mcswell (talk) 16:36, 10 September 2018 (UTC)
Is Prolog a ` ` functional programming language' ' ?
I'm just asking. I had to use it way back in college, and I got it in my head that it was in the same family of languages as LISP. But perhaps not?
Anyway, if it *is* a functional programming language, then obviously I think that should be mentioned / xrefed in the article. But I honestly don't know.
P.S. For my future reference -- is there a better or more preferred way for me to ask these questions than to just kind of hack up the talk page? TIA
PragmaticallyWyrd (talk) 15:54, 26 May 2017 (UTC)
- You can look on Wikipedia! E.g. the infobox in the Programming paradigm article. Usually you'd say that prolog is an example of "logic programming language", and that both functional and logic langauges are variations of "declarative" programming langauges, but you'd not say that Prolog is a function language. (For example, there is no way to define functions...) Vilhelm.s (talk) 19:56, 26 May 2017 (UTC)
- @PragmaticallyWyrd and Vilhelm.s: Logic programming tends to overlap somewhat with functional programming: there are many interpreters for functional programming languages that were originally developed in Prolog, such as Haskell and Erlang. But Prolog does not have a built-in syntax for function definition, so it is usually not classified as a functional logic programming language. Jarble (talk) 14:10, 10 October 2020 (UTC)
- You can look on Wikipedia! E.g. the infobox in the Programming paradigm article. Usually you'd say that prolog is an example of "logic programming language", and that both functional and logic langauges are variations of "declarative" programming langauges, but you'd not say that Prolog is a function language. (For example, there is no way to define functions...) Vilhelm.s (talk) 19:56, 26 May 2017 (UTC)
Prologe Language
What's Prologe Programming Language? 197.47.152.60 (talk) 18:33, 14 February 2023 (UTC)
- ^ doi:10.1007/11562931_4
- ^ http://www.securitease.co.nz/
- ^ http://e-culture.multimedian.nl/software/ClioPatria.shtml
- ^ Parondzhanov V. D. Visual Syntax of the DRAGON Language // Programming and Computer Software, 01 / 1995; Volume 21 (Issue 3): p. 142 - 153. (Here is an incorrect translation. This should be read as "DRAKON language.").