8 ms·
Computer program fixes old code faster than expert engineers
- cscurmudgeon 11y agoThe MIT PR machine has perfected the press cycle eclipsing good research. http://www.phdcomics.com/comics.php?n=1174 http://www.phdcomics.com/comics.php?n=1174
- thrownaway2424 11y agoThe amount of meaningless verbiage in this press release is indeed disturbing. What does it mean for the program to become "less effective"? A program is either effective or isn't. And a "billion dollar problem?" Adobe doesn't even spend a billion dollars on R&D entirely.
- birdman3131 11y agoLess effective meaning that the program does its job slower. From the way I read this it sounds like the original programmers used optimizations that worked well on older processors but not newer ones. For instance you might optimize one way for a pentium 4 but differently for an i7. It is not that the code for the P4 will not work on the i7 but the code is optimized for an older processor. Now this can be mitigated by the fact that the i7 is much improved over the P4 but you can get greater improvements by actually modifying the program source code as done by the software here. As for the billion dollar problem I would guess it (Bit rot) is that or more over the entire software industry.
- CmonDev 11y agoTitle correction: "Computer program optimizes the speed of image filters".
- deleted 11y ago[deleted]
- IceyEC 11y agoAnd general programs like MS Word...
- chucksmash 11y agoWhere do you see that? I saw mention of using it on one other program - an image viewer, Microsoft Windows IrfanView.
- jaawn 11y agoThe confusion arises from the apostrophe that implied that IrfanView somehow belongs to Microsoft Windows (it doesn't). I almost made the same mistake while reading quickly.
- bentcorner 11y agoI believe MS Word (or some components in office) already has some sort of PGO applied to it: http://llvm.1065342.n5.nabble.com/Capabilities-of-Clang-s-PGO-e-g-improving-code-density-td81760.html http://llvm.1065342.n5.nabble.com/Capabilities-of-Clang-s-PG...
- notacoward 11y agoWell, the technique could be applied in other areas, but optimizing is still not the same as fixing. The headline implies a solution to a much larger and more difficult problem than the researchers were actually trying to address, so it's effectively clickbait. I for one would not have clicked through if the headline had been accurate.
- mafribe 11y agothe technique could be applied in other areas The optimisations used in the paper are tightly coupled to a certain approach to image-processing.
- jaawn 11y agoI'd have to agree with this. Low-level "close to the metal" programming is something I have very little experience with, but based on my understanding, this research has extremely limited scope. The technique relied on what is essentially prior knowledge of the implementation. This doesn't mean it isn't very useful for companies like Adobe...it is. However, it does not look like anyone intended for this to be broadly applicable.
- mafribe 11y agoQuestion: What's the most important algorithmic technique? Answer: Understand the problem domain better.
- notacoward 11y agoThe optimizations themselves are pretty domain-specific, but the techniques used to instrument and modify the target program are - as you yourself point out in another comment - pretty widely applicable. That's where the real innovation lies.
- mafribe 11y agoI agree that the framework and the general idea of program rejuvenation is applicable in general.
- nickpsecurity 11y agoExactly...
- r4um 11y agoRelevant paper http://dl.acm.org/citation.cfm?id=2737974&CFID=526962266&CFTOKEN=68864296 http://dl.acm.org/citation.cfm?id=2737974&CFID=526962266&CFT...
- aaronkrolik 11y agoThanks! and the project source: http://projects.csail.mit.edu/helium/ http://projects.csail.mit.edu/helium/
- akkartik 11y agoOddly enough, there's another group at MIT working on rewriting binaries that was recently discussed on HN: https://news.ycombinator.com/item?id=9804036 https://news.ycombinator.com/item?id=9804036
- jakozaur 11y agoBlack swan event in 2020: AI replaces 80% of software engineers. </fiction></joke>
- prof_hobart 11y agoI know you're joking, but the reality is that software has been replacing huge chunks of developers' work for years, whether through optimising compilers, common libraries, CI/CD tools, web APIs, IDEs or whatever. I've been involved in development for over quarter of a century. Back in the late 80s, we had a dev team dedicated for years building some mapping software. Their entire product could probably be put together in a couple of hours using Google Maps and a bit of JavaScript. All this automation has happened, yet I see no slowdown in the amount of development that still happens. They can just concentrate on more bespoke, more value-adding work these days.
- pjc50 11y agomore bespoke, more value-adding work these days A software version of the Jevons paradox: making software cheaper increases the demand for software.
- Fede_V 11y agoYeah, the paper in itself is interesting, not sure why they had to give it that completely misleading title.
- plaes 11y agoDid they lose original source code?
- cognivore 11y agoNo, I don't think they did. I think they're just taking their old awful unmaintainable source, adding more to the hot heap of slag, and then using some clever compiler optimizations to make it run better. No love for the actual programmers. You get to keep working on the nightmare code (3 months to make changes...). Now, color me impressed if the thing output the same language as the original source, all spruced up. As it is, they'll just have a code base that will eventually transform into the anti-christ cause management will always be like, "Hey, don't ever fix the code, just run that see-saw whatever thing on it afterwards."
- mafribe 11y agoI think what the paper does is a variant of profile-guided optimisation (PGO) [1], an old approach to optimising compilers, where the binary is annotated and run to produce information about runs that is then feed back to the compiler so as to allow better optimisation the next time the compiler is run. The most well-know off-shoot of PGO are tracing JIT compilers. The first (well-known) tracing JIT compiler was Dynamo [2], and indeed, the system under discussion here uses DynamoRIO [3], a descendant of Dynamo to instrument a compiled binary. The instrumented binary is then executed multiple times to generate execution traces that allow the optimiser to find hot code, which is then analyses to adapt the code to the new architecture, e.g. change buffer sizes. [1] https://en.wikipedia.org/wiki/Profile-guided_optimization https://en.wikipedia.org/wiki/Profile-guided_optimization [2] http://www.cs.virginia.edu/kim/courses/cs771/papers/bala00dynamo.pdf http://www.cs.virginia.edu/kim/courses/cs771/papers/bala00dy... [3] http://www.dynamorio.org/ http://www.dynamorio.org/
- aaronkrolik 11y agoInteresting. So what would you say is novel/noteworthy about this research?
- mafribe 11y agoI have not had time to study this paper in detail, so please take what I say here with a grain of salt. Dynamic instrumentation is powerful, I think Google is using DynamoRIO heavily. Optimising compilers for DSLs is a trendy topic because 1. We are beginning to understand well how canonically to embed DSLs in general purpose languages, and have to build compilers for languages. 2. DSLs typically work on much more restricted domains than general purpose languages, so optimisation is much easier, and more powerful. The Pochoir compiler for stencil computations is an example of this. There are many open questions about compilation of DSLs other than optimisation, for example automatic generation of operational and axiomatic semantics of DSLs, and associated tooling. Really interesting research field. [1] https://people.csail.mit.edu/yuantang/ https://people.csail.mit.edu/yuantang/
- vmarsy 11y agoIn typical PGO you have access to the source code, the compiler instruments it for you automatically, you run the program with what You consider good input. During that time the instrumentation records a lot of interesting stuff. Then the compiler recompiles your program with that extra knowledge, making much better decisions[1]. For instance the compiler might realize: "Oh, this function is called much more often than I thought, I will now inline it." Here (Link to the paper:[2]) this is different: The authors do NOT have access to the source code, they only have stripped binaries. From these unreadable binary instructions, they are able to identify interesting patterns: they extract the algorithm from the assembly. For this to work, they seem to need run time information. This means, as in conventional PGO, they need to have a wide variety of valuable input. It apparently cannot be done at compile time: "Current state-of-the-art techniques are not capable of extracting the simple algorithms from these highly optimized program." Once the algorithm is figured out, the Helium framework is generating domain specific code in "Halide". Halide compilers knows how to optimize these stencil computation better than old hand written code, which give them these impressive improvements. [1]https://msdn.microsoft.com/en-us/library/e7k32f4k.aspx https://msdn.microsoft.com/en-us/library/e7k32f4k.aspx [2] http://groups.csail.mit.edu/commit/papers/2015/mendis-pldi15-helium.pdf http://groups.csail.mit.edu/commit/papers/2015/mendis-pldi15...
- omarforgotpwd 11y agoThe headline made me think: Imagine the irony if, after years of various human jobs being replaced by software, someone one day completes the cycle by inventing an AI that can develop applications for humans. Far off, but funny to think about.
- sz4kerto 11y agoSoftware development is mostly not about syntax and programming languages, but domain knowledge and understanding humans. If a non-programmer could really describe what he wants, then you could write a compiler for that text. But it's not possible yet, as the AI would need to have a human-like intelligence, and that's very far away.
- raverbashing 11y agoIt's closer than you think You are right about humans knowing about domain knowledge, but you don't need human level AI to have computers writing software Maybe future programmers will be more like spec writers than actual coders
- Qwertious 11y agoI'm pretty sure there's either a Paul Graham or Joel Spolsky essay on the subject, but basically: What's the difference between a sufficiently complete and formalised specification, and a high-level programming language?
- TheOtherHobbes 11y agoDomain specific knowledge? An AI would know how to fill in the gaps when you said "Make me a blog page" or "Make this server scalable." This may sound outrageous, but some very large percentage of coding practice is wheel reinvention. Developers the world over solve the same problems over and over again. One of the first applications for useful AI will be to collect and automate that repetition. There's already a "make me a blog" project, and Bootstrap is so cliched now I'm surprised there aren't more site builders being developed. So this isn't entirely impractical. The hard part is the visual design. It's much harder to automate that in a way that includes some genuine original creativity. Of course web apps != general scientific or business coding. So AI isn't a complete solution. But it doesn't need to be to be useful. (Domain specific, after all.)
- aaronkrolik 11y agoQuestion for clarification: the title uses the word "fix", implying that this new program repairs code that was broken. But in reality, it optimizes repetitive algorithms. Is that the correct takeaway?
- jaawn 11y agoI believe you are correct.
- kenbellows 11y agoI think it "fixes" code in that it makes it work on newer hardware, but the title is still misleading; it suggests that the software is performing bugfixes and correcting code that has failing unit tests, which is totally unrelated.
- burnte 11y agoFix in the sense that it takes a thing that used to work well and no longer does (due to changes in the underlying computing platform) and programmatically changes the methods used to be more efficient on modern platforms, while producing the same output. Fix in the sense of "improve" rather than "make not broken".
- aruggirello 11y agoTitle is misleading; can a computer program step in and fix it, please?
- jnaglick 11y agoWhen people on HN don't bother to read the article, clickbait titles flood the frontpage.
- brudgers 11y agoThe article is interesting because it is about the potential disruption of an industry and is based on work done at an institution with a reputation for research that disrupts technical industries, e.g. Chomsky's formal grammars.
- paulsutter 11y agoI suspect that a valuable application of deep learning will be learning how legacy UIs operate by watching real users, and implement an easier to learn / nice UI / mobile interface on top of the legacy app. Probably with a human UI designer stitching it all together. It might even learn a voice interface by observing call center operators. Could be easier, less risky, and more urgent than learning to recode the whole system.
- lostmsu 11y agoClickbait title
- foofoo55 11y agoFor the love of the human race and all of us still using Windows, I really hope a faster version of Irfanview gets released as a result of this.
- Florin_Andrei 11y agoComputer program generates machine code faster than expert engineers. It's called a compiler.
- mzs 11y agoHere's the paper in PDF: http://groups.csail.mit.edu/commit/papers/2015/mendis-pldi15-helium.pdf http://groups.csail.mit.edu/commit/papers/2015/mendis-pldi15...