User loginNavigation |
LtU ForumError reporting strategies during parsingAlthough I've seen lots of great papers on error recovery during parsing, I haven't been able to find much describing how parse errors are reported. A couple of the problems I'm having:
Are there any papers describing error reporting strategies, or parser generators or combinator libraries implementing simple but effective strategies? javascript shift-reduce parserHere is an universal parser in javascript: I've been to hell and back to make it faster, but that's it, shift-reduce can't be much faster. Unfortunately, finding errors in text makes it three times slower. At least it has linear parsing time. parser utilizes a new grammar language borrowed from Synth project. It is a kind of structured BNF language. mobile web apps are slow -- and GC is to blameThe blog post Mobile Web Apps are slow caught my eye. It makes several bold claims: the performance of JavaScript is plateauing, the real problem is memory consumption of web apps, GC performance decreases unless 10 times more memory is available than objects are live, JS memory allocation is too hard to control, GCed languages are unsuited for mobile apps. Unfortunately these claims are only discussed in the context of JS. Does or would FP suffer from the same problem on systems with limited memory? I would be curious to hear from programmers who use Lua or OCaml for iOS applications about the problems mentioned in the blog post and about GC overhead in FP. Addendum: The author of the blog post elaborated his post in a much more detailed article Tools that provide "closed" view of open/extensible abstractions?What is the state of the art in tool support for looking at a codebase composed of open abstractions extended by independent modules, through a "lens" that allows programmers to see the final inter-dependent code as if all the abstractions were closed? I'm thinking of this question in the context of ideas like the "Independently Extensible Solutions to the Expression Problem" paper. Open abstractions are great in that you can add new functionality without disturbing an existing, working codebase. The down-side is that open abstractions can end up obscuring the structure and control flow of the program that actually runs. When it comes time to debug a program, or diagnose performance issues, it really helps to view/treat a system as closed. Coming from a performance-oriented world (real-time rendering, games, and GPU compute), this is a common criticism I hear of virtual functions in C++: you need to know about every possible implementer of a virtual function before you have any idea what actually happens at a call site. You can't even intercept "all calls to this particular virtual function" in your debugger. It almost seems like there is a correspondence between the per-feature modules introduced in something like the "independently extensible" work, and changelists/patches that are shared in a distributed version control system. Each of these approaches allows a discrete feature to be packaged up, and then applied to a codebase. Sometimes you want to see the codebase in terms of a set of composed features/changes, which can be added/removed/reordered easily, and other times you want to see it as a single crystallized artifact that results from "squashing" a set of changes. Another workable UI metaphor would be the way that layers work in, e.g., Photoshop. Your primary view of a document is the composition of all the active layers, but you can still target edits toward particular layers, or toggle their visibility. Quote Safe unquote JVM language?The problem is: running user scripts on your server. Supposing the Java runtime is in use, you'd like to guarantee:
Java can be made pretty 'safe' using the it's built in sandboxing features (SecurityManager, AccessController, and Classloader) but most all JVM languages out there now (JRuby, Jython, Groovy, ...) are dynamic in nature and nearly impossible to 'secure' in the sense of the three items above:
So you might suppose a language that disallows reflection and heap allocation might be a good thing in such an environment. Suppose 'new' was not a keyword, and a convention were adopted such as 'declaration is instantiation' then you could generate bytecode that would simulate stack allocation thus protecting the heap. Disallow recursion by embedding some code to examine the call stack for the current method. Has anyone else considered this use case? Am I talking about Ada here? Crowdsourced Enumeration QueriesFrom "Crowdsourced Enumeration Queries" by Beth Trushkowsky, Tim Kraska, Michael J. Franklin, Purnamrita Sarkar. ICDE 2013 best paper award, and one of my recent favorites.
I've been playing with crowdsourcing function evaluation, and the above line of work shines: different types of human queries suggest different types of semantics. For example, The overall research field intersects many good topics: linguistics / NLP, query planning, language design, etc. Pdf is here. By lmeyerov at 2013-07-08 04:31 | LtU Forum | login or register to post comments | other blogs | 3847 reads
Cryptography DSL.Lifted from a press release issued back in 2008.
http://corp.galois.com/cryptol/ Note: I am not in any way affiliated with Galois inc, and not, myself, a user of the Cryptol language. I'm posting it because I thought LtU might find this an interesting thing to discuss. Harlan (a high level language for general purpose GPU computing)Eric Holk has released the source to Harlan. "We propose a declarative approach to coordinating computation and data movement between CPU and GPU, through a domain-speciï¬c language that we called Harlan" Paper here : http://www.cs.indiana.edu/~eholk/papers/parco2011.pdf Git here : https://github.com/eholk/harlan By simon.stapleton at 2013-07-03 07:21 | LtU Forum | login or register to post comments | other blogs | 4580 reads
Constraint-Based Type Inference and Parametric PolymorphismAn old paper ('94) by Ole Agesen, abstract:
Dynamic inheritance?Consider class C that inherits from class B in a (statically) typed language. I would like to extend, at runtime, an instance of type B to type C:
B b = new B();
Assert(b is B);
b.Method(); // invokes B.Method()
extend b to C(); // partial constructor for C
Assert(b is B);
Assert(b is C);
b.Method(); // invokes C.Method() override
Is there any reason why this should not be allowed in terms of type safety? If not, what is it called and is there any language out there that supports this? |
Browse archives
Active forum topics |
Recent comments
9 weeks 1 day ago
9 weeks 1 day ago
9 weeks 2 days ago
9 weeks 2 days ago
9 weeks 5 days ago
9 weeks 5 days ago
10 weeks 1 hour ago
10 weeks 5 hours ago
10 weeks 6 hours ago
10 weeks 6 hours ago