Hi Julian,

I'm totally fine with that ;-)

Chris




Am 29.04.19, 10:43 schrieb "Julian Feinauer" <j.feina...@pragmaticminds.de>:

    Hi Chris,
    Hi Niclas,
    
    @Niclas:
    Basically Chris answered all those questions as I would. I also looked at 
Meta Languages like Haxe but there usually where some drawbacks.
    But what we discussed was the idea to generate the DSL or the AST from 
python code (very limited python code), so that our DSL would be equivalent to 
a subset of Python (which would allow easy and efficient debugging and such).
    
    @Chris:
    I wrote this email rather longish to ensure, that you don’t get me wrong. I 
see both approaches simply as two contenders for the best one, and indeed we 
should evolve both and then discuss (and finally VOTE) which route to follow, 
this is the way to do it.
    And regarding the "in-between" I agree with you. I can imagine that DFDL is 
the way to go for the messages and types and that we replace the SCXML with 
something which comes out of our approach.
    And with "head exploding" we did not mention some of your works but simply 
the thought to develop a SCXML description of a complex protocol, so please 
don’t take this as any offence.
    
    To the two other statements... I do not want to couple project stuff with 
students work its just a possibility to explore things more in depth and e.g. 
develop some tooling which is not strictly necessary but nice to have.
    
    And for the private Repo... It also felt wrong for me to write this. And 
strictly speaking its not a PLC4X Paper but a Paper which "talks about" PLC4X. 
The main reason for the private repo are license concerns as the authors 
usually have to hand over several rights to the Publisher which would not be 
possible in case of the Apache License. You don’t have to like that but that’s 
how it works.
    Currently, I see it as an research engagement of Matthias and myself but 
want to invite everybody to participate but (also for the reason above) would 
not make it a central concern of the project.
    
    I hope you can agree on that?
    
    Julian
    
    Am 29.04.19, 10:05 schrieb "Christofer Dutz" <christofer.d...@c-ware.de>:
    
        Hi All,
        
        to answer Niclas' question first ... yes a lot of tools allow writing 
code in for example Java and have that compiled to c-like programs.
        I had a look at a lot of these options before starting to work on PLC4X 
and continued since then. 
        
        I was never quite happy with the results. While the performance of the 
original is ... well ... 100% you usually have great losses on the cross 
compiled outputs. Also there is the problem that the cross-compiled version 
usually needs quite a lot more resources as the original and especially as the 
native implementation.
        
        For example when writing Raw-Socket code in java, we use some extra 
hoops to do so, in C, C++, C# (maybe even python) we could directly use the 
network hardware. So depending on the language you use and the platform you 
build for the drivers could be quite different. 
        
        And regarding the API: We would be translating an API of one language 
to others ... what would we use for C support? Mapping Java to C isn't trivial 
and the result would be quite evil looking, I bet. The way we were currently 
planning on doing things, would be to manually implement an API module that 
perfectly fits for the language we are targeting and to generate the drivers 
for that language.
        
        Regarding Julian's proposal:
        Well if you wouldn't be spawning new initiatives that bind me with 
preparing the build all the time, I would have a chance to actually work on my 
proposal ;-) (Haven't worked on that for weeks) 
        
        Also didn't I ever have the chance to explain it to anyone yet, so 
calling it a "mind detonator" is a little unfair, cause I think it's a lot 
simpler than our current hand-written drivers. I do agree that a specially 
hand-crafted and well implemented DSL for exactly this use-case will probably 
be easier, but you would have to implement the DSL first and then the tooling 
(Keep in mind with Daffodil/DFDL we get a full blown toolkit to write 
unit-tests and document the protocol). I was trying to use, what's already out 
there, cause I knew that inventing something that achieves 90% of what you are 
doing is super-easy, however to get to 100% you need to put in great efforts.
        
        I would be the last to object in general, but I wouldn't want to rely 
on a student project where we have to wait till someone else finishes something 
and hope that he does. Especially if the key-person in charge of this 
initiative seems to have great problems communicating on this list (Me "waiving 
with a fence pole" here :-P). I would only call it a PLC4X Paper, if it's 
actually done by involving the community ... and doing that in a private repo 
isn't quite the way we do things at Apache. So for this to be a real Apache 
initiative ... do it in public and do discussions on the list.
        
        So if I finally manage to clean up and prepare the build for the 
multi-language part ... please at least give me the chance to work on my 
proposal a little more and at least explain what I had planned. 
        
        I would suggest you work on the other option and then we let the 
community decide which path to take. I am really fond of the DFDL part, but not 
so overwhelmed by the SCXML part of my proposal... perhaps the ideal solution 
would be something in-between.
        
        Chris
        
        
        Am 29.04.19, 08:53 schrieb "Niclas Hedhman" <nic...@hedhman.org>:
        
            Outsider looking in; Many language runtimes allows embedding of 
other
            languages' runtimes within. So why not pick a languages that is 
reasonably
            easy to integrate into other languages, and then write the drivers 
in a
            fully fledged programming language, rather than the DFDL 
abstraction or
            creating a new DSL with a whole slew of consequences later on.
            
            Languages that might be suitable; JavaScript, Lua, Forth, 
microPython or
            even C...
            
            Niclas
            
            On Mon, Apr 29, 2019 at 2:20 PM Julian Feinauer <
            j.feina...@pragmaticminds.de> wrote:
            
            > Hi all,
            >
            > just wanted to sum up some talks and discussions we had off-list 
about the
            > whole topic of driver generation / providing drivers in other 
languages.
            > Currently, there are the following two approaches going on:
            >
            > Driver Generation based on DFDL by Chris:
            > Chris already shared his branch and is working on the generation 
of
            > drivers based on the specification of the messages and a state 
machine.
            > This should then generate Code based on Freemarker Templates.
            >
            > Proxy Drivers by me, Chris and also others:
            > We have a thrift based server / client spec.
            > A simple Java Server is implemented as Interop Server and we work 
on
            > providing client in other languages.
            > This is a separate feature (as Proxy) but in a mode, where the 
Client
            > itself starts the server in the background, this is an 
intermediate
            > solution to already provide other language bindings (although at 
a cost).
            > All work is done in the PLC4X-111 branch and I hope that we will 
be able
            > to Merge that soon (Chris spend a lot of effort to include all 
the new
            > stuff in our build).
            >
            > And there is a new thing coming currently which is mostly Driven 
by
            > Matthias and myself regarding the driver code generation.
            > We went over Chris example code (and the xmls) and our heads 
nearly
            > exploded as it is so abstract.
            > And as Matthias does a lot with model based code generation we 
had a long
            > discussion about using a model based approach (probably with a 
DSL).
            > So we currently try to investigate that a bit but also with a 
focus on
            > research. In fact, we have the potential that we can engage some 
students
            > from his institute to participate at the work.
            > In fact, we even started a private Repo where we prepare a Paper 
to
            > discuss the matter.
            > As this would be our first “PLC4X Paper” everybody is invited to 
join us
            > and should simply ping me (with github credentials), to get repo 
access.
            > If we make it through we will will of course list everybody who
            > contributed as author.
            >
            > To make it clear, this work, the DSL based driver generation 
tries to
            > achieve the same as Chris approach based on DFDL just through 
another way.
            > And right now I’m unable to say which one is better, could be 
better and
            > where are the drawbacks and advantages. So we want to investigate 
that to
            > have a basis for a discussion and decision. In fact, both 
approaches should
            > be equally powerful, so one could be able to translate one to the 
other and
            > vice versa, in theory.
            > I consider it highly important to have a good and easy way to 
develop and
            > maintain drivers as this is the crucial thing for the future of 
PLC4X.
            >
            > So please feel free to comment or discuss, if you feel like : )
            >
            > Julian
            >
            
            
            -- 
            Niclas Hedhman, Software Developer
            http://polygene.apache.org - New Energy for Java
            
        
        
    
    

Reply via email to