Peter van Hardenberg
05/14/2019, 11:44 PMPeter van Hardenberg
05/14/2019, 11:45 PMPeter van Hardenberg
05/14/2019, 11:47 PMDrewverlee
05/15/2019, 12:42 AMwtaysom
05/15/2019, 1:51 AMDrewverlee
05/15/2019, 3:25 AMwtaysom
05/15/2019, 3:26 AMKartik Agaram
Eventually a declarative model might only become documentation, but it gives us something invaluable throughout, which is clarity of intent.@Drewverlee This is a really great sentence, thank you. The term 'declarative' has historically tended to conflate two concerns: * More concise phrasing. Syntax and so on. * Error checking. The conflating is unfortunate, because when you introduce a new syntax for the declarative model you also restrict what one can say in the lower level imperative substrate. That then prevents the organic "retreat to documentation". Creating a language has prevented you from thinking certain thoughts (or at least blocked on the authors to support your use case). Writing certain programs now requires leaving the declarative model entirely, with all its error checking benefits. All I want is machine code with an extensible DSL for assertions 😄
Drewverlee
05/16/2019, 12:24 PMdenoting high-level programming languages which can be used to solve problems without requiring the programmer to specify an exact procedure to be followed.For example using "map, filter, reduce" is more declarative because they don't specify the flow control. This is useful because, simply put, its one less thing to get wrong. Another example would be Datalog being more declarative then SQL because you dont have to specify the joins. Leading with these examples, i think a big next step could be made by reactive datalog, which would mean the client/browser dow declears its data needs and the rest of the system (from the users perspective) doesn't have to worry about the flow control of how it gets there. This of course, will always break down at some scale, but so does everything, and as i was suggesting, the declarative functions can remain, only their interpretation has to change. This is common practice in our field, make a function, now how it works can change without breaking callers.
All I want is machine code with an extensible DSL for assertionsinteresting, this would seem to be at the opposite end of the spectrum from what i'm describing. I dont have much machine code experience!
Kartik Agaram
shalabh
05/16/2019, 4:26 PMwhat I love most about writing software in Elm (and to a lesser extent React) or SQL is what I don't have to think aboutYes. Until the irrelevant become relevant: mangling an SQL query to make it perform better, fine tuning struct memory layout in C, intertwining layers of caching code to improve performance, etc.
in the end you always have to look inside the boxYeah. I wonder if it's possible that inside the box is also a nice, clean model that looks just like outside the box. Instead of trying to affect performance via 'side effect' (i.e. code munging), what if you could specify the implementation details separately from the higher level description? In most cases it seems the layer of abstraction is too hard. Rather it should be permeable when necessary. I wonder if any systems do this.
Daniel Hines
05/16/2019, 6:06 PMDaniel Hines
05/16/2019, 6:08 PMKartik Agaram
cut
calls polluting your nice declarative program. Other high-level languages have the same problem. You get declarative but have to pay some performance cost at times.
As far as I know there’s no high-level declarative model that also provides an “imperative side channel” independent of the declarative program.