News for hackers. Stuff that matters.
Re:Brainfuck Optimization Strategies by SCHiM on Wednesday January 07, 2015 @12:03PM (#8851651)
What always strikes me (I also wrote a bf parser a while back) is the pay-off in how simple it is to implement vs how hard it is to write in it. This seems a very obvious and simple thing to notice: the less tokens/rules your language uses the easier it is to write a parser for it, but the harder it is to write a program in that language.

The implications seem more subtle and are more interesting. The very simple phenomenon implies that application development time later can be saved by compiler development time now. If so then what is the most optimal language/compiler? What is the best distribution of time? Is it perhaps so that there exists a language that is trivial to implement, yet also super powerful and expressive to program in (don't say lisp here, though it does almost satisfy the second constraint imo).

Re:Brainfuck Optimization Strategies by jnbiche on Wednesday January 07, 2015 @12:23PM (#8851778)
>Is it perhaps so that there exists a language that is trivial to implement, yet also super powerful and expressive to program in (don't say lisp here, though it does almost satisfy the second constraint imo).

Lisp. Satisfies both constraints.

But seriously, Forth is another interesting language that strikes a good balance between ease of implementation vs ease of use and expressive power. But even more than Lisp, it takes some serious getting used to.

Re:Brainfuck Optimization Strategies by rdc12 on Wednesday January 07, 2015 @10:00PM (#8854807)
The language IO has a very simple grammar[1] and ignoring libraries is a pretty productive language.

I suspect that you are on to something, but instead of the grammer being the guide instead the abstraction that the language gives you, but with a correlation between abstraction and the complexity of the grammar.

[1] http://iolanguage.org/scm/io/docs/IoGuide.html exp ::= { message | terminator } message ::= symbol [arguments] arguments ::= "(" [exp [ { "," exp } ]] ")" symbol ::= identifier | number | string terminator ::= "\n" | ";"

Re:Brainfuck Optimization Strategies by z3t4 on Wednesday January 07, 2015 @03:11PM (#8852954)
Interesting observation. I think, the more abstraction, the more productive you can be.
Re:Brainfuck Optimization Strategies by debacle on Wednesday January 07, 2015 @12:21PM (#8851764)
That's kind of just Greenspun's rule as applied to programming languages.