4 ms·
As a software engineer in the industry, what problems am I hoping academic research could investigate. Compilers that work like devs do. Almost every time I co
by lostdog 5y ago
As a software engineer in the industry, what problems am I hoping academic research could investigate.
Compilers that work like devs do. Almost every time I compile, the code is almost exactly the same, but the compiler forgets everything and throws away details from the last compile. Probably all the optimizer's choices are going to be the same this time as last time, so maybe we could cache these?
Better code merging. When my code diverges from the main branch, I typically have to do a bunch of merging work. Would a merging algorithm that understands code semantics be able to do a better job of understanding what I mean during the merge?
Language safety and ergonomics is huge. I very much appreciate Rust's progress, and it's a shining example of academia brought to industry, but can we do more? Jai's idea of making constraints codeable and incremental is pretty cool, and I bet there's a lot of room to improve on it.
Measures of code complexity and modularity. There's a bunch of silly measurements of the "goodness" of code, but maybe it's time for another! Maybe we could describe how "replaceable" components are automatically, and gives a solid idea of the level of real tech debt in the codebase.
How about some project management focused studies? Have a programmer give an estimate for a task, try to force it to be a deadline, and watch as quality of the results drops. Try applying something like scaled agile framework to a real problem and watch as the meeting load snuffs out meaningful development progress.
Or some systems work. Apache airflow is a pretty cool job running agent, but I have yet to see a good error handling workflow for distributed job agents. Can you come up with the "Result" type of job scheduling that's nicely composable?
There's really so much to do.
- UncleMeat 5y agoCached builds are a thing but actual incremental analysis is a very hard problem. Seemingly unrelated changes a pretty common sources of interesting analyses bailing so you get more spooky action at a distance than you might expect. This gets worse with whole program optimization.
- jaimebuelta 5y agoPerhaps a good dependency process would be an interesting research. Knowing what parts change when changing a small bit it’s actually very difficult to know, and it seems like a common problem that could improve things in many areas (for example, compilation, but also knowing what tests to run if some piece of the code changes, for example)
- UncleMeat 5y agoThere are hundreds of papers on incremental analysis. You can find them in PL conferences like POPL, PLDI, and OOPSLA. You can also find this kind of topic analyzed from a less theoretical perspective at conferences like FSE and ICSE. It is a hard problem.
- ghoward 5y agoGood news for you: I'm well on the way to solving the problem of better code merging. Specifically, the algorithms I am developing appear to be able to do a correct merge on both [1] and [2]. They also appear capable of merging binary data. The tradeoff is that people need to write some code to tell the VCS about the format of each binary file type or semantics of each programming language. The biggest problem is that, like Rust, a new VCS has to be well-executed to make its innovation stick. We'll see if I succeed. [1]: https://tahoe-lafs.org/~zooko/badmerge/simple.html https://tahoe-lafs.org/~zooko/badmerge/simple.html [2]: https://tahoe-lafs.org/~zooko/badmerge/concrete-bad-semantics.html https://tahoe-lafs.org/~zooko/badmerge/concrete-bad-semantic...