User loginNavigation |
LtU ForumAsyncFlows: Structured Asynchronous ProgrammingI've just made a public release of AsyncFlows framework 0.1.0 that offers DSL for structured and object-oriented asynchronous programming. Some differences from competing solutions:
I would like feedback on DSL struture and on the thesis that explicit event sending to queues or channels is "go to" of asynchronous programming and that it should be avoided if we try to get understandable code. By const at 2018-09-14 18:41 | LtU Forum | login or register to post comments | other blogs | 3038 reads
Semantic Design with SEDELAI'm working on specifying a language for specifying program design, or 'semantic design', called SEDELA. 'Semantic design' is a program design tool inspired by Conal Elliott's 'denotional design' as presented in "Denotational Design: From Meaning to Programs" here - Currently, I have specified a rough outline of the syntax and semantics here - I am thinking very seriously about writing a parser, type-checker, and a Visual Studio Code editing plug-in for SEDELA. But first, I want to get the community's feedback on the current specification as well as the idea in general. Thank you all once again for any assistance provided in these endeavors! By bryanedds at 2018-08-18 23:56 | LtU Forum | login or register to post comments | other blogs | 2949 reads
How to decrease bugs in the codeAfter couple of years of using a Haskell, I noticed that errors in the code were not decreased (lie, as well as "you will be more productive", "you will write code faster", "code will be smaller" - all of these sentences were a lie), so I thought about it: how to decrease bugs. I know these methods:
The most embarrassing of me circumstance is that, as I understood, most real world errors (not typos and other stupid errors) can not be caught by type system because: 1) they happen in run-time 2) their roots are unexpected behavior of something external 3) often they are logical: some complex business logic is not fully correct but it's difficult to describe it formally even. Also I'm not sure is it possible to qualify anything as some kind of type: types of typical Haskell app are so many, that attempt to use more complex types will lead to something absolutely unreadable and unsupportable. I think Design by Contract can help to cover some of the errors, but I can not find good DbC framework for Haskell. IMHO it can be something like "predicate under monad", because contract, sure, should be executed with side-effects (I'm interesting to verify some external entities, etc). In this case all functions like `f :: a -> b -> IO c` become `f :: Ctr a -> Ctr b -> CtrIO c` or something similar. But I'm not sure here, because I need to check not only pre-/post- conditions but also invariants. How they can look in Haskell where you have only spaghetti code of functions? How to code asserting conditions in those monads? I found work of Andres Loh, Markus Degen, but this does not helps me. Most of articles (Peyton-Jones, Andres Loh, etc) look very shallowly, academically or unpractical (on research/experimental level, sure, as all other in Haskell). What do you use to decrease bugs in Haskell code? Also will be very interesting real success stories! BF Bignum: A Program Synthesis GameBF Bignum is a program synthesis game: the goal is to synthesize a BF program smaller than a given size that outputs the largest integer possible before halting within a given time limit. A synthesizer's score is the value of the target integer divided the total number of BF operations executed in the search for the target program. Bignum is much harder than it sounds, and requires synthesizers to learn modular and hierarchical program representations.
A synthesizer's score is target / work: the number output by the target program divided by the number of BF operations performed during the search. How to generate branch tables from SSA form?I've added this question to StackExchange. I've been wondering if there is any good theory behind making the branch tables when coming from SSA form (which should lose the information that there even existed a switch statement in the source code). Does anybody know any references on that? Lambda calculusI have written a small introduction to untyped lambda calculus. The article contains nothing new, but it has been written to be easy to understand. The article is not only elementary. It contains all essential results of untyped lambda calculus like the Church Rosser theorem and some undecidability theorems. I have tried to use graphic notations to make the content more digestible and closer to intuition. I am especially proud of the proof of the Church Rosser theorem which (hopefully) is more understandable in this article than in many other presentations I have read so far. Higher Order Functions Considered Unnecessary for Higher Order ProgrammingJoseph A. Goguen, Higher Order Functions Considered Unnecessary for Higher Order Programming (1987).
This (old paper) proposes an interesting approach for formulating functional programs. But can this truly subsume all uses of higher order functions? I don't see the paper address how the uses of higher order functions in general can be replaced (not that I have a counterexample in mind). Anyone familiar with the OBJ language? Do other languages share this notion of 'modules', 'theories'? Prior art for reifying lifecycleAre there any prior examples of programming languages that expose the program processing lifecycle as a value or syntax element? By lifecycle, I mean steps like the below which many languages follow (though not necessarily in order):
Does anyone have pointers to designs of languages that allow parts of the program to run at many of these stages *and* explicitly represent the lifecycle stage as a value or syntax element? I'm aware of reified time in hardware description languages like Verilog and in event loop concurrent languages like JavaScript and E, but that's not what I'm after. Background I work in computer security engineering and run into arguments like "we can either ship code with dynamic languages that is hard to reason about the security properties of, or not ship in time." I'm experimenting with ways to enable features like the below but without the exposure to security vulnerabilities or difficulty in bringing sound static analysis to bear that often follows:
I was hoping that by allowing a high level of dynamism before untrusted inputs reach the system I could satisfy most of the use cases that motivate "greater dynamism -> greater developer productivity" while still producing static systems that are less prone to unintended changes in behavior when exposed to crafted inputs. I was also hoping, by not having a single macros-run-now stage before runtime, to allow use cases that are difficult with hygienic macros while still allowing a module to limit how many assumptions about the language another module might break by reasoning about how early in the lifecycle it imports external modules. The end goal would be to inform language design committees that maintain widely used languages. cheers, Upward confluence in the interaction calculusThe lambda calculus is not upward confluent, counterexamples being known for a long time. Now, what about the interaction calculus? Specifically, I am looking for configurations c1 and c2 that have the same normal form with no such c that c →* c1 and c →* c2. Update: a necessary and sufficient condition for strong upward confluence discussed in arXiv:1806.07275v3 which also shows that the condition is not necessary for upward confluence by showing upward confluence for the interaction system of the linear lambda calculus. New DSL for secueityHello,thought I’d share a new DSL by endgame life querying security logs : https://www.endgame.com/blog/technical-blog/introducing-event-query-language It is meant to help reason about security events. Best illustrated in this example: What files were created by non-system users, first ran as a non-system process, and later ran as a system-level process within an hour? I think that there is a lot of improvement that can be had in. languages that help reason about (time) series and it’s a welcome addition to the DSL family. By True Konrads at 2018-06-05 23:31 | LtU Forum | login or register to post comments | other blogs | 2937 reads
|
Browse archives
Active forum topics |
Recent comments
1 day 10 hours ago
2 days 7 hours ago
3 days 12 hours ago
3 days 12 hours ago
1 week 1 day ago
1 week 1 day ago
1 week 1 day ago
4 weeks 2 days ago
5 weeks 14 hours ago
5 weeks 19 hours ago