Domain specific language. Sometimes with an E in front for "embedded" 
domain specific language, meaning a DSL embedded within a different 
general-purpose language as opposed to a standalone DSL that only does one 
thing. (not the type of embedded that the rest of this conversation has 
been about)


On Monday, September 15, 2014 3:13:42 AM UTC-7, Uwe Fechner wrote:
>
> Ivory looks interesting. But what does DSL mean (in your post)?
>
> On Monday, September 15, 2014 11:55:03 AM UTC+2, Tony Kelman wrote:
>>
>> The initial goal is packaging up conventional Julia code with the 
>> conventional runtime and GC, so no you don't get determinism from that. 
>> Even with explicit memory management you're unlikely to get true hard 
>> real-time determinism unless your code is running on a specialized RTOS 
>> anyway, and those are very restricted environments where nothing aside from 
>> C or a limited subset of C++ is likely to be allowed anyway. Unless you 
>> want to write at that low level, you'll need a DSL to design the 
>> allocation-free purely computational parts of a controller, and the 
>> communication and synchronization algorithms. Galois has done a lot of work 
>> on this kind of thing hosted in Haskell, see their Ivory and Tower DSL's. I 
>> don't know of anyone doing this kind of work in Julia yet, but it would be 
>> cool to see, and in my non-expert opinion I think it should be feasible.
>>
>>
>> On Monday, September 15, 2014 2:26:41 AM UTC-7, Andrew Wagner wrote:
>>>
>>> Hi Tony and Uwe!
>>>
>>> Sorry, I'm more aware of these issues than I indicated in my post.  Of 
>>> course one or two steps of code generation / specialization is necessary to 
>>> get from human readable to machine executable code.  
>>>
>>> I was actually sitting here reading the thread about the improved 
>>> garbage collector that is in development.   Compared to the stack, RAII, 
>>> and reference counting, this still sounds like a mess if you want 
>>> deterministic timings... 
>>>
>>> Thanks for the info about the standalone executables, Tony; I'll go read 
>>> that too later.  If it's just packing up everything into one executable 
>>> that still has very non-deterministic timings when you run it, it's not a 
>>> win for control, of course, but maybe the plan is to also do more 
>>> aggressive specialization of parts of the code (no gc? static binding? 
>>> stack only?) at the same time; I will go read!
>>>
>>> Thanks for the anecdote about your experience using Python in the loop 
>>> Uwe; that's interesting!
>>>
>>> Cheers,
>>> Andrew
>>>
>>> On Mon, Sep 15, 2014 at 10:45 AM, Tony Kelman <[email protected]> wrote:
>>>
>>>> You don't write in assembly, do you? Every stack is implicitly doing 
>>>> multiple languages and some form of code generation in the process of 
>>>> compilation, you just don't have to know whether it's happening.
>>>>
>>>> "Systems programming" as intended by Rust and as a software engineer 
>>>> would mean the term is a rather different thing than what you want for the 
>>>> purposes of embedded real-time control. There are plenty of embedded 
>>>> environments where if you're allowed to use C++ at all, it's only a 
>>>> limited 
>>>> subset, anything involving exceptions or RTTI is often not supported. It's 
>>>> tough to audit 3rd-party libraries for these kinds of restrictions, and 
>>>> achieve any kind of code reuse or non-trivial complexity.
>>>>
>>>> I'd say reducing the number of mandatory dependencies and making it 
>>>> possible to statically compile Julia code into minimal standalone 
>>>> executables and libraries is absolutely an explicit goal of the main Julia 
>>>> developers, just check the 0.4-projects milestone on Github. It's not 
>>>> there 
>>>> yet, but progress is being made.
>>>>
>>>>
>>>> On Monday, September 15, 2014 1:27:15 AM UTC-7, Andrew Wagner wrote:
>>>>>
>>>>> Hi Tony!
>>>>>
>>>>> I'm a bit burned out on software systems that are pieced together out 
>>>>> of multiple languages, doing code generation, etc... If there's not a 
>>>>> single language that can do everything I need for the project, I would 
>>>>> not 
>>>>> start it yet.  It's really hard for me to tell at this point whether it 
>>>>> is 
>>>>> more likely in the future for Julia to become suitable for systems 
>>>>> programming, or for rust to become suitable for interactive use...  Those 
>>>>> are explicitly non-goals for the main developers of the two languages, so 
>>>>> it's hard to predict.  
>>>>>
>>>>> Cheers,
>>>>> Andrew
>>>>>
>>>>> On Mon, Sep 15, 2014 at 8:27 AM, Tony Kelman <[email protected]> wrote:
>>>>>
>>>>>> Slicot's not ideal from a licensing standpoint, see the earlier 
>>>>>> discussion from February in this thread. There is a GPL-licensed version 
>>>>>> of 
>>>>>> Slicot available from Debian, which works for the sake of a package. 
>>>>>> Long 
>>>>>> term it makes more sense to reimplement the important parts of Slicot 
>>>>>> that 
>>>>>> wrap Lapack to provide Sylvester and Lyapunov and Riccati solvers for 
>>>>>> discrete and continuous time, in base Julia.
>>>>>>
>>>>>> I think Jim Crist spent the summer doing a Python GSoC, so progress 
>>>>>> on control packages for Julia has been mostly stalled.
>>>>>>
>>>>>> Eventually I think Julia could make a fine platform for code 
>>>>>> generation of embedded controllers, hard or soft real time. Array views 
>>>>>> and 
>>>>>> the like will make this easier, but I don't see any reason you couldn't 
>>>>>> refactor Julia code to do the vast majority of allocation up-front and 
>>>>>> end 
>>>>>> up generating more or less the same LLVM IR that Rust's compiler would. 
>>>>>> And 
>>>>>> I doubt Rust will ever be as good of an interactive technical computing 
>>>>>> environment as Julia in terms of REPL, plotting, simulation, 
>>>>>> experimenting, 
>>>>>> etc. Compile-run-tweak cycles are not a convenient way to do control 
>>>>>> design 
>>>>>> (or much of anything, let's be honest).
>>>>>>
>>>>>> Generating embedded controllers in LLVM IR rather than C is currently 
>>>>>> very atypical, but eventually I think it could be made to work. A Julia 
>>>>>> replacement for "realtime workshop" is a good long-term goal.
>>>>>>
>>>>>>
>>>>>> On Sunday, September 14, 2014 12:58:36 PM UTC-7, Andrew Wagner wrote:
>>>>>>>
>>>>>>> Hello again Uwe!  
>>>>>>>
>>>>>>> It's fun running into someone I know on a language geek forum :) 
>>>>>>>  I'm helping one of our bachelor's students implement an LQR controller 
>>>>>>> on 
>>>>>>> our carousel in Freiburg.  It's an ugly hack, but I'm calling an octave 
>>>>>>> script to recompute the feedback gains online.  Octave wraps slicot, so 
>>>>>>> if 
>>>>>>> the licenses are compatible, perhaps wrapping slicot is the way to go 
>>>>>>> for 
>>>>>>> some functions, if the licenses are compatible.
>>>>>>>
>>>>>>> Personally, I have a burning desire for a better language we can 
>>>>>>> actually do control in (rust?).  I doubt Julia qualifies due to the 
>>>>>>> garbage 
>>>>>>> collection, but does anyone know if Julia has some sort of way to JIT 
>>>>>>> Julia 
>>>>>>> expressions to code that does ~not have any garbage collection?  If so, 
>>>>>>> is 
>>>>>>> there a way to export them as object files and link against them from 
>>>>>>> C? 
>>>>>>>  Then you'd still have to write glue code in a systems language, but at 
>>>>>>> least the implementation of the controller wouldn't have to cross a 
>>>>>>> language boundary...  
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Andrew
>>>>>>>
>>>>>>> On Thursday, February 20, 2014 10:56:20 PM UTC+1, Uwe Fechner wrote:
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> I could not find any control system library for Julia yet. Would 
>>>>>>>> that make sense?
>>>>>>>> There is a control system library available for Python:
>>>>>>>> http://www.cds.caltech.edu/~murray/wiki/index.php/Python-control
>>>>>>>>
>>>>>>>> Perhaps this could be used as starting point? I think that 
>>>>>>>> implementing this in Julia
>>>>>>>> should be easier and faster than in Python.
>>>>>>>>
>>>>>>>> Any comments?
>>>>>>>> Should I open a feature request?
>>>>>>>>
>>>>>>>> Uwe Fechner, TU Delft, The Netherlands
>>>>>>>>
>>>>>>>
>>>>>
>>>

Reply via email to