1 |
Hi, |
2 |
|
3 |
On 05 Dec 2003, at 10:58, George Shapovalov wrote: |
4 |
|
5 |
> To reiterate them shortly, Prolog is a really esoteric language and I |
6 |
> am not |
7 |
> sure we will be able to find enough people to feel comfortable about |
8 |
> having |
9 |
> the very core of portage-ng implemented in it. Also there might be |
10 |
> issues of |
11 |
> portability and efficiency.. |
12 |
|
13 |
My biggest concern when reading your small paper is that you chose a |
14 |
deterministic approach to this problem, while in fact the problem is |
15 |
non-determinisitic. Also, your code (which is about 1000 lines long) |
16 |
does -only- a simple dfs and topological ordering, while I can do the |
17 |
same in about 10 lines in prolog and have backtracking for free. I |
18 |
don't see any reasoning about versions, virtuals, constraints, slots, |
19 |
updates, upgrades, downgrades, ... While you claim your code is more |
20 |
portable and efficient, I don't see any substantiated evidence that |
21 |
prolog isn't; neither do I see any evidence that your implementation is |
22 |
correct, while it can be shown that the 'specifications' one declares |
23 |
in prolog are interpreted correctly by prolog, which is -one- of the |
24 |
reasons I preferred prolog. |
25 |
|
26 |
There are more advantages to using prolog. But let me point you at some |
27 |
downsides first. Prolog is logic programming, and people tend to avoid |
28 |
logic (and choose other languages like Ada for instance). However, |
29 |
because of its relation to logic, Prolog is often used in reasoning |
30 |
systems, which is in fact what portage is. |
31 |
|
32 |
I don't want to start a flame war about programming languages. That |
33 |
would be totally useless because the nice thing about programming |
34 |
languages is that they are all somewhat equivalent but some more |
35 |
expressive than the other for a given problem. |
36 |
|
37 |
> I have produced some basic prototyping code to |
38 |
> illustrate what could be expected. The prototype is quite crude, as I |
39 |
> did |
40 |
> this during relatively rare breaks from writing an article (completely |
41 |
> unrelated to CS :)), but it should serve the purpose. Did I say the |
42 |
> code |
43 |
> shoul be readable? So, even though I do not expect many people to be |
44 |
> familiar |
45 |
> with that language I would still suggest trying to look at the code. |
46 |
> You are |
47 |
> in for a one nice surprise ;). |
48 |
|
49 |
Ada is a really nice language, but I don't see any direct relevance for |
50 |
the problem at hand. |
51 |
|
52 |
> (I am not revealing the name of language in this posting deliberately, |
53 |
> because |
54 |
> I want people to read through arguments first). |
55 |
> |
56 |
> The code is available here: |
57 |
> http://dev.gentoo.org/~george/proto_portage-0.7.5.tar.bz2 |
58 |
> but you will probably want to read the text before that. |
59 |
> |
60 |
> In any case, if you want to jump in, just a short install instruction: |
61 |
> run "emerge gnat booch_components " |
62 |
> then untar the package and run make |
63 |
> Although reading INSTALL that comes with the package might be usefull |
64 |
> too ;) |
65 |
> (it has some details in case you experience problems). |
66 |
> |
67 |
> George |
68 |
|
69 |
For my thesis and apprenticeship at the Theoretical Computer science |
70 |
laboratory at the free university of Brussels (tinf.vub.ac.be), I have |
71 |
been looking into these issues. The techique we have developed for |
72 |
reasoning about large software configurations such as a |
73 |
meta-distribution will be presented on a Gentoo meeting in the future, |
74 |
and can be implemented in any language you prefer. I will have a fully |
75 |
functional prototype in prolog, because that language offers some |
76 |
benefits, but the idea itself can be implemented in any other language |
77 |
such as Ada or friends. |
78 |
|
79 |
Pieter |
80 |
|
81 |
|
82 |
-- |
83 |
gentoo-dev@g.o mailing list |