• =?UTF-8?Q?Re:_Did_Lifeware_Kill_Scryer_Prolog_CLP=28Z=29_=3f_=28Was?= =

    From Mild Shock@21:1/5 to Mild Shock on Fri Jul 26 15:41:07 2024
    Hi,

    What killed Scryer Prolog exactly? Except
    maybe this mess of >270 issues?

    https://github.com/mthom/scryer-prolog/issues

    There are open issues back to 2019.
    Its quite an amazing showcase.

    Bye

    Mild Shock schrieb:
    Hi,

    Did Lifeware Kill Scryer Prolog CLP(Z) ?

    Sounds interesting:

    Pack modeling a SWI-Prolog pack for mathematical
    modellng with constraints on subscripted variables,
    developed by François Fages. François Fages. A
    Constraint-based Mathematical Modeling Library in
    Prolog with Answer Constraint Semantics. https://lifeware.inria.fr/wiki/Main/Software

    In 17th International Symposium on Functional and
    Logic Programming, FLOPS 2024, volume 14659 of LNCS.
    Springer-Verlag, 2024. [ preprint ]
    https://arxiv.org/abs/2402.17286

    Does it perform?

    Bye

    Mild Shock schrieb:
    Especially since good old FORTRAN has
    made a new appearance:

    TIOBE Index for May 2024
    I have received a lot of questions why Fortran entered the top 10
    again after more than 20 years. The TIOBE index just publishes
    what has been measured.
    https://www.tiobe.com/tiobe-index/

    Why Fortran is back in TIOBE’s top 10
    First, Fortran is especially good at numerical analysis and
    computational mathematics. Numerical and mathematical
    computing is growing because interest in artificial intelligence
    is growing, Jansen told TechRepublic in an email.
    https://www.techrepublic.com/article/tiobe-index-may-2024/


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mild Shock@21:1/5 to Mild Shock on Sat Jul 27 11:36:57 2024
    Hi,

    I do not exclude a turn-around possibility
    for Scryer Prolog. But with errors like this,
    that are at the core of some ideas behind

    Scryer Prolog, like the glorious char based
    double quoted lists, which have special data
    structure support:

    ?- [X,Y] = [e,foo], Z is X.
    X = e, Y = foo, Z = 2.718281828459045.

    ?- [X,Y] = [e,f], Z is X.
    error(type_error(evaluable,e),(is)/2).

    But I doubt that any such list/array ideas,
    especially when they try to share subarrays
    are even a good idea. Trealla Prolog tries

    something similar. But initial Java had for
    example a sharing substring() method. But they
    abandoned that over the time. So their

    strings are not sharing anymore, and code that
    relied on sharing got broken. You can have
    sharing through other interfaces, but Strings

    are not anymore sharing. Any idea why?

    Bye

    Mild Shock schrieb:
    Hi,

    Question is what happened to academic artificial
    intelligence. The golden years are over where
    longer projects over 10 years or so produced

    tangible results. Industry with Facebook, OpenAI
    has taken over. And there is a residual research
    which is basically a camp for geriatric

    unemployeds cauched in fancy role names:

    Example:

    DIVERSITY AND INCLUSION CHAIRS
    WORKFLOW MANAGERS
    https://www.ecai2024.eu/

    Automatizing the watering can, is probably the
    next step:

    Improving the Buurtbudget:
    Can Mathematics and Computer Science? https://www.youtube.com/watch?v=iSX90xJjSAw

    Why not make it a blind lottery. You just get
    money, but you don't have to return something
    in exchange.

    Just like Scryer Prolog, which spent 3 years
    of programming, for nothing.

    Bye

    Mild Shock schrieb:
    Hi,

    What killed Scryer Prolog exactly? Except
    maybe this mess of >270 issues?

    https://github.com/mthom/scryer-prolog/issues

    There are open issues back to 2019.
    Its quite an amazing showcase.

    Bye

    Mild Shock schrieb:
    Hi,

    Did Lifeware Kill Scryer Prolog CLP(Z) ?

    Sounds interesting:

    Pack modeling a SWI-Prolog pack for mathematical
    modellng with constraints on subscripted variables,
    developed by François Fages. François Fages. A
    Constraint-based Mathematical Modeling Library in
    Prolog with Answer Constraint Semantics.
    https://lifeware.inria.fr/wiki/Main/Software

    In 17th International Symposium on Functional and
    Logic Programming, FLOPS 2024, volume 14659 of LNCS.
    Springer-Verlag, 2024. [ preprint ]
    https://arxiv.org/abs/2402.17286

    Does it perform?

    Bye

    Mild Shock schrieb:
    Especially since good old FORTRAN has
    made a new appearance:

    TIOBE Index for May 2024
    I have received a lot of questions why Fortran entered the top 10
    again after more than 20 years. The TIOBE index just publishes
    what has been measured.
    https://www.tiobe.com/tiobe-index/

    Why Fortran is back in TIOBE’s top 10
    First, Fortran is especially good at numerical analysis and
    computational mathematics. Numerical and mathematical
    computing is growing because interest in artificial intelligence
    is growing, Jansen told TechRepublic in an email.
    https://www.techrepublic.com/article/tiobe-index-may-2024/




    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mild Shock@21:1/5 to Mild Shock on Sat Jul 27 11:52:31 2024
    Hi,

    Java had a grace period where it still supported
    sharing through a command line option, but later
    it was ditched completely:

    Restriction: This system property is supported only on Java™ 8. String sharing cannot be enabled on Java 11 and later.

    Start of content that applies only to Java 8 (LTS) Setting this property
    to true avoids sharing a String object when substring() is used to
    subset a String beginning from offset zero. Avoiding sharing is
    compatible with the Oracle HotSpot VM. https://www.ibm.com/docs/en/sdk-java-technology/8?topic=options-djavalangstringsubstringnocopy

    Unfortunately I don't find a document detailing
    the decision. Like some JEP or so. Still searching.
    With substring sharing it was very easy to provoke

    an out of memory error. You could allocate large
    strings. Share a UTF-16 character, i.e. substring of
    length 1, in the middle of the string, and the string

    was not garbage collected anymore. I do not exclude
    that under the hood sharing could be used. But it
    possibly needs to some compilation technique including

    some dedicated analysis that determines that the parent
    string stays reachable, so that the child sharing doesn't
    make the parent string solely reachable, since

    since the parent string is already reachable.

    Bye

    Mild Shock schrieb:
    Hi,

    I do not exclude a turn-around possibility
    for Scryer Prolog. But with errors like this,
    that are at the core of some ideas behind

    Scryer Prolog, like the glorious char based
    double quoted lists, which have special data
    structure support:

    ?- [X,Y] = [e,foo], Z is X.
       X = e, Y = foo, Z = 2.718281828459045.

    ?- [X,Y] = [e,f], Z is X.
       error(type_error(evaluable,e),(is)/2).

    But I doubt that any such list/array ideas,
    especially when they try to share subarrays
    are even a good idea. Trealla Prolog tries

    something similar. But initial Java had for
    example a sharing substring() method. But they
    abandoned that over the time. So their

    strings are not sharing anymore, and code that
    relied on sharing got broken. You can have
    sharing through other interfaces, but Strings

    are not anymore sharing. Any idea why?

    Bye

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mild Shock@21:1/5 to Mild Shock on Sat Jul 27 11:27:47 2024
    Hi,

    Question is what happened to academic artificial
    intelligence. The golden years are over where
    longer projects over 10 years or so produced

    tangible results. Industry with Facebook, OpenAI
    has taken over. And there is a residual research
    which is basically a camp for geriatric

    unemployeds cauched in fancy role names:

    Example:

    DIVERSITY AND INCLUSION CHAIRS
    WORKFLOW MANAGERS
    https://www.ecai2024.eu/

    Automatizing the watering can, is probably the
    next step:

    Improving the Buurtbudget:
    Can Mathematics and Computer Science? https://www.youtube.com/watch?v=iSX90xJjSAw

    Why not make it a blind lottery. You just get
    money, but you don't have to return something
    in exchange.

    Just like Scryer Prolog, which spent 3 years
    of programming, for nothing.

    Bye

    Mild Shock schrieb:
    Hi,

    What killed Scryer Prolog exactly? Except
    maybe this mess of >270 issues?

    https://github.com/mthom/scryer-prolog/issues

    There are open issues back to 2019.
    Its quite an amazing showcase.

    Bye

    Mild Shock schrieb:
    Hi,

    Did Lifeware Kill Scryer Prolog CLP(Z) ?

    Sounds interesting:

    Pack modeling a SWI-Prolog pack for mathematical
    modellng with constraints on subscripted variables,
    developed by François Fages. François Fages. A
    Constraint-based Mathematical Modeling Library in
    Prolog with Answer Constraint Semantics.
    https://lifeware.inria.fr/wiki/Main/Software

    In 17th International Symposium on Functional and
    Logic Programming, FLOPS 2024, volume 14659 of LNCS.
    Springer-Verlag, 2024. [ preprint ]
    https://arxiv.org/abs/2402.17286

    Does it perform?

    Bye

    Mild Shock schrieb:
    Especially since good old FORTRAN has
    made a new appearance:

    TIOBE Index for May 2024
    I have received a lot of questions why Fortran entered the top 10
    again after more than 20 years. The TIOBE index just publishes
    what has been measured.
    https://www.tiobe.com/tiobe-index/

    Why Fortran is back in TIOBE’s top 10
    First, Fortran is especially good at numerical analysis and
    computational mathematics. Numerical and mathematical
    computing is growing because interest in artificial intelligence
    is growing, Jansen told TechRepublic in an email.
    https://www.techrepublic.com/article/tiobe-index-may-2024/



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mild Shock@21:1/5 to Mild Shock on Sat Jul 27 11:56:52 2024
    Hi,

    But such a criteria is not satisfied in parsing,
    especially if you use the more advanced last call
    optimization and not only tail recursion optimization.

    As soon as parsing is deterministic, you can
    leave behind the string part that you already parsed.
    So you would need a special sharing that is kind of

    a weak sharing that can free some head part. There is
    no such problem of freeing the head part, if you use
    proper cons cell based lists for parsing.

    But naive substring sharing doesn't work for Prolog.
    It will unnecessarely lock the whole string always.
    Whereas a cell based parser can drop

    already parsed parts.

    Bye

    Mild Shock schrieb:
    Hi,

    Java had a grace period where it still supported
    sharing through a command line option, but later
    it was ditched completely:

    Restriction: This system property is supported only on Java™ 8. String sharing cannot be enabled on Java 11 and later.

    Start of content that applies only to Java 8 (LTS) Setting this property
    to true avoids sharing a String object when substring() is used to
    subset a String beginning from offset zero. Avoiding sharing is
    compatible with the Oracle HotSpot VM. https://www.ibm.com/docs/en/sdk-java-technology/8?topic=options-djavalangstringsubstringnocopy


    Unfortunately I don't find a document detailing
    the decision. Like some JEP or so. Still searching.
    With substring sharing it was very easy to provoke

    an out of memory error. You could allocate large
    strings. Share a UTF-16 character, i.e. substring of
    length 1, in the middle of the string, and the string

    was not garbage collected anymore. I do not exclude
    that under the hood sharing could be used. But it
    possibly needs to some compilation technique including

    some dedicated analysis that determines that the parent
    string stays reachable, so that the child sharing doesn't
    make the parent string solely reachable, since

    since the parent string is already reachable.

    Bye

    Mild Shock schrieb:
    Hi,

    I do not exclude a turn-around possibility
    for Scryer Prolog. But with errors like this,
    that are at the core of some ideas behind

    Scryer Prolog, like the glorious char based
    double quoted lists, which have special data
    structure support:

    ?- [X,Y] = [e,foo], Z is X.
        X = e, Y = foo, Z = 2.718281828459045.

    ?- [X,Y] = [e,f], Z is X.
        error(type_error(evaluable,e),(is)/2).

    But I doubt that any such list/array ideas,
    especially when they try to share subarrays
    are even a good idea. Trealla Prolog tries

    something similar. But initial Java had for
    example a sharing substring() method. But they
    abandoned that over the time. So their

    strings are not sharing anymore, and code that
    relied on sharing got broken. You can have
    sharing through other interfaces, but Strings

    are not anymore sharing. Any idea why?

    Bye

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mild Shock@21:1/5 to Mild Shock on Sat Jul 27 12:04:55 2024
    Hi,

    Whats then more disturbing, if you try picking subparts
    of the parsing string, and integrate them in the
    parse tree, i.e. your AST.

    You then definitively lock the whole parsing source. But
    the parsing source might be a couple of predicate
    definitions, with constant arguments as found in Datalog:

    foo(bar, baz) :- ....
    ...

    The old school non sharing approach would be to have
    an atom table and you have then deduplicated foo, bar,
    baz, etc... in one place and the source doesn't get

    locked. There is a also a new school, which I started
    with Jekejeke Prolog and continued with Dogelog Player.
    You don't share and you don't atom table.

    If you don't use atom table, you might have copies
    in your code of foo, bar, baz etc.. But this is only
    a small factor, the used memory is still lower than

    locking the whole source. And some Java versions have
    string deduplication garbage collection under the hood now.
    I am not sure what Python and JavaScript do.

    But so far I think the small factor of extra memory
    usage is not an issue.

    Bye

    Mild Shock schrieb:
    Hi,

    But such a criteria is not satisfied in parsing,
    especially if you use the more advanced last call
    optimization and not only tail recursion optimization.

    As soon as parsing is deterministic, you can
    leave behind the string part that you already parsed.
    So you would need a special sharing that is kind of

    a weak sharing that can free some head part. There is
    no such problem of freeing the head part, if you use
    proper cons cell based lists for parsing.

    But naive substring sharing doesn't work for Prolog.
    It will unnecessarely lock the whole string always.
    Whereas a cell based parser can drop

    already parsed parts.

    Bye

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mild Shock@21:1/5 to Mild Shock on Sat Jul 27 12:09:38 2024
    Hi,

    The factor is smaller if the source has anyway a
    diversity of strings. If the source has a lot of
    redundant strings the factor is higher. You

    can explore Prolog compilation techniques that further
    deduplicate, but these compilation technqiques are
    best appplied by a more broader view, i.e. sharing

    numbers and compounds as well. Only looking at strings
    is possibly not worth the effort. But if you
    cross compile you don't have to do anything anyway.

    If I cross compile Dogelog Player to Java, the
    Jave byte code class format has a constant pools, so
    the Java compiler does the deduplication of strings for you.

    A cross compiled Datalog with a lot of foo, bar, baz, ..-

    foo(bar, baz) :- ....
    ...

    Will have a compilation output that uses a constant pool,
    and the strings in itself foo, bar, baz, etc.. will
    be shared. So the factor is again very low for

    cross compiled artefacts. Not sure what Python and JavaScript
    do, they might do a constant pooling as well. The constant
    pooling is very known for Java byte code class format the

    output of Java compilers, it was already there in the beginning.

    Bye

    Mild Shock schrieb:
    Hi,

    Whats then more disturbing, if you try picking subparts
    of the parsing string, and integrate them in the
    parse tree, i.e. your AST.

    You then definitively lock the whole parsing source. But
    the parsing source might be a couple of predicate
    definitions, with constant arguments as found in Datalog:

    foo(bar, baz) :- ....
    ...

    The old school non sharing approach would be to have
    an atom table and you have then deduplicated foo, bar,
    baz, etc... in one place and the source doesn't get

    locked. There is a also a new school, which I started
    with Jekejeke Prolog and continued with Dogelog Player.
    You don't share and you don't atom table.

    If you don't use atom table, you might have copies
    in your code of foo, bar, baz etc.. But this is only
    a small factor, the used memory is still lower than

    locking the whole source. And some Java versions have
    string deduplication garbage collection under the hood now.
    I am not sure what Python and JavaScript do.

    But so far I think the small factor of extra memory
    usage is not an issue.

    Bye

    Mild Shock schrieb:
    Hi,

    But such a criteria is not satisfied in parsing,
    especially if you use the more advanced last call
    optimization and not only tail recursion optimization.

    As soon as parsing is deterministic, you can
    leave behind the string part that you already parsed.
    So you would need a special sharing that is kind of

    a weak sharing that can free some head part. There is
    no such problem of freeing the head part, if you use
    proper cons cell based lists for parsing.

    But naive substring sharing doesn't work for Prolog.
    It will unnecessarely lock the whole string always.
    Whereas a cell based parser can drop

    already parsed parts.

    Bye

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mild Shock@21:1/5 to Mild Shock on Sat Jul 27 12:54:47 2024
    Hi,

    Or to put it differently:

    substring sharing could turn a
    library(pio) into a memory nightmare.

    Bye

    Mild Shock schrieb:
    Hi,

    The factor is smaller if the source has anyway a
    diversity of strings. If the source has a lot of
    redundant strings the factor is higher. You

    can explore Prolog compilation techniques that further
    deduplicate, but these compilation technqiques are
    best appplied by a more broader view, i.e. sharing

    numbers and compounds as well. Only looking at strings
    is possibly not worth the effort. But if you
    cross compile you don't have to do anything anyway.

    If I cross compile Dogelog Player to Java, the
    Jave byte code class format has a constant pools, so
    the Java compiler does the deduplication of strings for you.

    A cross compiled Datalog with a lot of foo, bar, baz, ..-

    foo(bar, baz) :- ....
    ...

    Will have a compilation output that uses a constant pool,
    and the strings in itself foo, bar, baz, etc.. will
    be shared. So the factor is again very low for

    cross compiled artefacts. Not sure what Python and JavaScript
    do, they might do a constant pooling as well. The constant
    pooling is very known for Java byte code class format the

    output of Java compilers, it was already there in the beginning.

    Bye

    Mild Shock schrieb:
    Hi,

    Whats then more disturbing, if you try picking subparts
    of the parsing string, and integrate them in the
    parse tree, i.e. your AST.

    You then definitively lock the whole parsing source. But
    the parsing source might be a couple of predicate
    definitions, with constant arguments as found in Datalog:

    foo(bar, baz) :- ....
    ...

    The old school non sharing approach would be to have
    an atom table and you have then deduplicated foo, bar,
    baz, etc... in one place and the source doesn't get

    locked. There is a also a new school, which I started
    with Jekejeke Prolog and continued with Dogelog Player.
    You don't share and you don't atom table.

    If you don't use atom table, you might have copies
    in your code of foo, bar, baz etc.. But this is only
    a small factor, the used memory is still lower than

    locking the whole source. And some Java versions have
    string deduplication garbage collection under the hood now.
    I am not sure what Python and JavaScript do.

    But so far I think the small factor of extra memory
    usage is not an issue.

    Bye

    Mild Shock schrieb:
    Hi,

    But such a criteria is not satisfied in parsing,
    especially if you use the more advanced last call
    optimization and not only tail recursion optimization.

    As soon as parsing is deterministic, you can
    leave behind the string part that you already parsed.
    So you would need a special sharing that is kind of

    a weak sharing that can free some head part. There is
    no such problem of freeing the head part, if you use
    proper cons cell based lists for parsing.

    But naive substring sharing doesn't work for Prolog.
    It will unnecessarely lock the whole string always.
    Whereas a cell based parser can drop

    already parsed parts.

    Bye


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)