Hacker Newsnew | past | comments | ask | show | jobs | submit | more buttproblem's commentslogin

There's a lot of work going on in this field; if it were really scalable it would be awesome.

The slides call it academic but it is (barely) moving into industry. One of the, often cited, commercial uses is in one of the products coming out of Microsoft Research and into Excel, flash fill.

Another interesting application is synthesizing countermeasures for side channel attacks in crypto code [1]. They are automatically, based on the specification, guaranteed secure.

If you can find a good application, like deobfuscation, you can create some fun stuff.

[1] http://www.ece.vt.edu/chaowang/pubDOC/EldibW14CAV.pdf


We've been moving in this direction for a while now, decades even. Focussing on the desired behaviour over implementation, this is especially true for low level code (managed languages, ORM's, even reducing or picking algorithms, like the flashfill you mentioned).

Where I think the biggest innovation for this area is the big picture; the architecture. This is where most of the developers time and effort is spent today isn't writing new code, it's managing the complexity as software and systems grow.

Developers should only have to worry about expressing their intent and the system should take care of optimisation/ partitioning to make the most of the available systems, memory, IO and CPU. Devop's is ripe to be heavily automated with self tuning systems.

Going as far to fix legacy software is harder. Nobody sets out to write legacy code (I've yet to see a legacy system that was untouched because it was perfect). Making a legacy/ obfuscated system easy to work with and maintain is the holy grail of such software.


The author of this article and the food industry seem to know what the people want:

> Ingredients that give the impression that they originated in a grandmother’s kitchen and have not been processed too harshly are of great appeal to consumers.

The common convenience food route minimize price and maximize flavour but ignores nutrition. They are so optimized flavor-wise that they are literally addicting. On the other hand, "natural" foods maximize "healthy sounding" ingredients. What if advancements in the food industry were used in healthy food too? For example, what if we could create a spinach salad that is as addictive as dorritos?

As an example from the article, the scientists were able to transform potato protein into something that tastes like "butter, cream, and eggs." There's no mention of the nutritional value of this stuff but imagine if it was a powder with no nutritional value (like Splenda) which you could sprinkle over your previously bland and healthy food to make it taste buttery?

Industrial processes are slowly making their way into the mainstream with books like Modernist Cuisine. As an example from the book, the common "grandmother" way to thicken gravies and other sauces is to use flour or corn starch. However, these thickeners require (1) a large amount of starch, and (2) have a large particle size. The result is that the flavour in the food decreases (perhaps now you need to add more salt), and the mouthfeel becomes gritty. Scary commercial chemicals such as N-Zorbit (Tapioca Maltodextrin) don't have this problem.


> LLVM doesn't have an intermediate representation comparable to Gimple: LLIR seems to be at the level of the registers rather than the nice abstract Gimple

LLVM variables are sometimes called registers but they are machine independent. The bit width is arbitrary (e.g., you can create a 129-bit integer). The use of the term register is a misleading analogy; often LLVM-IR is compared to assembly language so the use of the term register was also used.

I do not know GIMPLE and couldn't find a good description of the IR instructions. But, it seems that LLVM IR is somewhat similar to low GIMPLE.


Will have to take another look, but it still sounds to me like LLVM IR is more comparable to RTL (https://gcc.gnu.org/onlinedocs/gccint/RTL.html#RTL).

Gimple variables have types comparable with C types - you get pointers, arrays.

For example:

  int sum10(int values[10]) {
    int i;
    int sum = 0;
    for(i=0;i<10;++i) { sum += values[i]; }
    values[0] = 342;
    return sum;
  }
is compiled down to:

  sum10 (int * values)
  {
    long unsigned int D.1598;
    long unsigned int D.1599;
    int * D.1600;
    int D.1601;
    int D.1602;
    int i;
    int sum;

    sum = 0;
    i = 0;
    goto <D.1595>;
    <D.1594>:
    D.1598 = (long unsigned int) i;
    D.1599 = D.1598 * 4;
    D.1600 = values + D.1599;
    D.1601 = *D.1600;
    sum = D.1601 + sum;
    i = i + 1;
    <D.1595>:
    if (i <= 9) goto <D.1594>; else goto <D.1596>;
    <D.1596>:
    *values = 342;
    D.1602 = sum;
    return D.1602;
  }


As far as I know, LLVM does exactly the same thing; the LLVM representation of that code would have a different syntax of course, but semantically would be exactly equivalent to the Gimple version you've presented.


While I am curious too about your question, Vapnik was previously working in industry at NEC Labs in New Jersey.


Good point. But I do wonder about Facebook's journal publishing policy.


One way of testing/verifying concurrent programs is to build a model of the program, and then see if the model satisfies certain properties. This is fairly tedious and does not scale very well. However, while it wont prove anything, it can be useful to build some kind of model; it can often point out some flaws in the design that you missed.

All in all, I think its sort of like a programmer learning the basics of discrete math. You're not actually learning how to program but it can change the way you think. Obviously, if you go to deep (which perhaps CSP is) you might get a bit off track.


The most useful education I got on reading function pointers is the spiral rule:

http://c-faq.com/decl/spiral.anderson.html

(I accidentally deleted my reply)


I wonder if someone could shed some light on this (from type composition straight and curly quotes):

> Computer sci­en­tists and doc­u­men­ta­tion writ­ers, take note: straight quotes and back­ticks in soft­ware code should nev­er be con­vert­ed to curly quotes. Those marks are, of course, part of the func­tion­al syn­tax of the code and must be re­pro­duced lit­er­al­ly. While fans of LaTeX have of­ten writ­ten me to trum­pet its type­set­ting su­pe­ri­or­i­ty, I’ve nev­er seen any LaTeX-cre­at­ed doc­u­men­ta­tion that’s got­ten this right.

As a LaTeX user (and not a very good one) I'm not too sure what I've been doing wrong.


It's very common to see ”Hello World” in LaTeX-written documents. The problem in my eyes is often that well-meaning people tell others that LaTeX will automagically make your document look good and professional, yet neglect to point out that you still have to know the details to achieve that. Proper quotes, proper usage of non-breaking spaces, proper hyphenation when the default breaks down, etc. are all things you have to consider regardless of the application. LaTeX may have nicer default styles and a few superiour algorithms (e.g. line breaking for justified text), but overall result quality for people without any clue is in my experience not higher than with Word.


If you have been doing this:

  \usepackage{listings}
  \usepackage{textcomp}
  ... upquote=true ...
You have been doing nothing wrong.


Also make sure you read Eddie Kohler's LaTeX usage notes:

  http://www.read.seas.harvard.edu/~kohler/latex.html


I see how this is interesting but I can't get over how the author says, "When contrasting this with Eric's video", but "Eric's video" is a different program than the novice programmer. Maybe this is me being too pedantic.


Not just a different program, a better one, and easier to understand.

It especially annoyed me when he praised Eric for going back to understand the function first, when that function isn't even present in the novice's program.


> I think if users _have_ to have something different they will seriously consider OSX and Linux. One is more polished on better hardware for people who have money and want the best. The other is free for people who don't care.

I use Linux and I care, probably too much, about it.


I would love to take the plunge but need photoshop. Gimp is a long way behind.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: