On 9/30/2017 22:32, Karl Glazebrook wrote:
Interesting. Thanks for launching this discussion Chris. I will have to read 
that Bezanson thesis!

I took a look at the COS, what exactly are the objects implemented? This was 
not clear to me. The README did not say much.

There are papers covering COS and its
features and implementation at

  https://github.com/CObjectSystem/COS/tree/master/doc

In designing PDLNG one has to clear discuss and decide ‘what is it for’ ? I 
think it is fairly obvious that the scipy ecosystem has taken over the world, 
it has passed a critical mass in the last 3 years, and one must view it in that 
context [confession: I use scipy, I have too. All my students and collaborators 
do!].

There could be multiple goals:

- keep existing PDL code working for as long as possible? [this is a very 
conservative goal; on the other hand without refresh there will be bitrot as 
operating systems update]

PDL 2.x is already in stable/bitrot-prevention mode.

- to be able to do all the things that scipy does [graphics, ML libraries, 
jupyter, etc.] but using Perl syntax? [this can be way more efficient and 
flexible, but may not be enough to justify a major effort. Unless there is a 
clever way to plug-and-play the ecosystem? I certainly would be very happy if I 
could write PDL code and call matplotlib in a jupyter notebook]

One goal for the next generation PDL was to be able to
have it callable from any language with a C FFI capability
so that I could be language agnostic and still have PDL
computing capabilities.

- to be able to do something better and new c.f. julia/python/R? [Ambitious. 
What?]

As I mentioned already, Julia maps very well into the new data
language features I was wanting for PDL Next Generation:
- you can call Python including NumPy and matplotlib from julia
- JIT compiling is already there
- I saw data frame support for julia
- iJulia Jupiter notebooks already done (tutorials for julia are written in them)
- julia has a friendly matlab-ish syntax and language

A related question would be where does Perl6 fit in to this? [sigh. If you ask 
me Perl6 killed Perl.]

Between python/numpy, R, and now julia, it seems
clear to me thatperl is not the language most
people look at for scientific and datacomputation.
And, to be honest, the part about the Perl Data
Language that I liked was the *Data Language* and
not specificallyperl which happened to be the
language I was using at the time.

My goals might now be specified as implementing
X-DL whereall the nice data language features
as are found in PDL andnow many languages can
be accessed from other languageswhich would
allow me to work on scientific computations
and collaborate with colleagues independent of
our individuallanguage preferences.

Frankly, Julia as as Data Language minus Julia
the languageand syntax is pretty much exactly
the features I had hopedfor PDL Next Generation.
Maybe thinking of the goals forX-DL from this
point of view is a better way to see next
generation DL capabilities.

I plan to look at Julia more.  If there were a
cygwin Julia implementation (not a win32
cross-compiled one) this would be even more
compelling for my work flow use case.

Cheers,
Chris

cheers,

Karl




On 29 Sep 2017, at 11:18 pm, Chris Marshall <[email protected]> wrote:

Here is a dissertation on how the Julia language was
designed:

  https://github.com/JeffBezanson/phdthesis/blob/master/main.pdf

It was interested to see the development for the abstractions
used and how they made effective technical computation
possible.  The development of the type system could help
guide extended types support for PDL Next Generation as
we go from a fixed set of numeric types to a hierarchy of
types including user defined ones.  Some things of specific
note:

* bitfields as the boolean data (maybe this could be used
  for an alternate implementation of bad data).  We could
  start with https://github.com/noporpoise/BitArray/

* generic functions and multimethod dispatch make it easy
  to support JIT compilation for efficiency when desired.

* COS supports functors and closures which might be
  compatible with the higher order function approaches
  in julia

* Union and UnionAll and the general implementation of
  the type system might be applicable to PDL Next
  Generation.  There may be benefit in implementing
  method types and specifications similar to the ones
  in Julia.

* COS can support types as first class objects

* There is a question of how to support dynamic features
   with COS since it is implemented as a C library.
   Maybe we need to have JIT for this?

Cheers,
Chris

On Thu, Sep 28, 2017 at 10:37 AM, Chris Marshall <[email protected]> wrote:
I recently took a look at the Julia programming language

  https://julialang.org/

with the thought of converting a julia library of interest
into something for PDL/perl computation.  I discovered
that Julia is based on the use of multi-methods which
is the capability provided by the C Object System (COS)

  https://github.com/CObjectSystem/COS

that I have proposed as a basis for a new PDL Next
Generation core architecture.  A look at Julia shows
that we might get some inspiration for our own
development from their language implementation and
use.

--Chris
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
pdl-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pdl-general


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
pdl-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pdl-general

Reply via email to