Live data from Hacker News

Featherweight Go

arxiv.org

31–40 of 169 posts

Re: Featherweight Go

#31
post #23
post #14

Earlier quoted context omitted.

What about the irony of pjmlp dismissing something because it's based on an obscure language going as far back as 2001? :-)

Except that Java isn't obscure and experiments like Featherweight Java contributed to Java generics final design, introduced in November 2009, 3 years before Go 1.0 was released. What about that then?

It only strengthens your point but Java 5 was actually released way earlier, in '04.

Re: Featherweight Go

#32
Thanks for reminding me how the rampant abuse of nearly unreadable mathematical notation for things that can be easily expressed in concise natural language contributed to (voluntarily) shortening my academic career.

But more seriously, it's interesting how this produces publications before actual implementations.

Re: Featherweight Go

#33
post #30

Earlier quoted context omitted.

The thing about C++ compilation time is that if you care you can spend the time to optimize it. Our app takes ~40 seconds to compile and run tests on a decent machine (16 cores).

This is interesting. What techniques are you using? Pimpl? Custom, non-STL containers?

I find headers with templates are always the problem. So external template instantiation and pre compiled headers can solve a lot of first time compilation slowness.

Pimpl is more for reducing how much you have to change headers forcing a recompile during development. It's also really handy for keeping binary compatibility with published dynamic libraries so that you don't have to recompile dependants.

Re: Featherweight Go

#34

Earlier quoted context omitted.

>Don't ever try Scala. Don't ever try C++. I work on a medium-sized low-level C++ application, and every time we need to compile from scratch it takes over two hours on a single core. Even with distributing the compilation out across over a hundred cores the fastest it can get down to is around 20 minutes.

how come hundred cores is only speedup of ~6?

Amdahl's law.

Re: Featherweight Go

#35

Thanks for reminding me how the rampant abuse of nearly unreadable mathematical notation for things that can be easily expressed in concise natural language contributed to (voluntarily) shortening my academic career. But more seriously, it's interesting how this produces publications before actual implementations.

Closer to logic. There is a straightforward rewrite into prolog if you want a program. Or one of the proof assistants.

The notation is abused though. Try looking up some of the work by Guy L. Steele in the recent years.

Re: Featherweight Go

#36
post #25
post #8

Earlier quoted context omitted.

I don't think this is so ironic after all. Featherweight Java is an idealized language, small enough for doing experiments. These experiments often involve the necessity of a formal proof. But being a small language, still capturing the crux of the full language, greatly simplifies the problem space. Featherweight Go serves the same purpose: find the core. Give the core generics. Then you have a good chance at implem…

Except that these kind of experiments contributed to Java generics, being made available 3 years before Go 1.0 was given a green light. Which is why Go had already a good example to learn from on how not to do language design.

I dont think expirements are a way to qualify decades of research that went before.

Second what Sun choose to implement was a smaller subset and not that close to Featherweight Java/pizza compiler. It was only generics, not first class functions at the time, nor algebraic types/pattern matching.

Re: Featherweight Go

#37
post #2

Is that a jab at Haskell in the very first paragraph? > Today [Go] sits at position 12 on the Tiobe Programming > Language Index (Haskell sits at position 41).

Authors wants to bring types to where people are. Simply justifying their work.

Re: Featherweight Go

#38

Earlier quoted context omitted.

>Don't ever try Scala. Don't ever try C++. I work on a medium-sized low-level C++ application, and every time we need to compile from scratch it takes over two hours on a single core. Even with distributing the compilation out across over a hundred cores the fastest it can get down to is around 20 minutes.

how come hundred cores is only speedup of ~6?

Linking in particular. At one stage, due to enabling LTO, our release build alone took over 20 minutes just to link. And linking cannot easily be parallelised (if at all? I'm not familiar with what the state of the art in linkers is).

Re: Featherweight Go

#39

Earlier quoted context omitted.

>Don't ever try Scala. Don't ever try C++. I work on a medium-sized low-level C++ application, and every time we need to compile from scratch it takes over two hours on a single core. Even with distributing the compilation out across over a hundred cores the fastest it can get down to is around 20 minutes.

The thing about C++ compilation time is that if you care you can spend the time to optimize it. Our app takes ~40 seconds to compile and run tests on a decent machine (16 cores).

That only works if you can clean up slow-compiling code faster than other people are writing more slow-compiling code.

Re: Featherweight Go

#40
post #35

Thanks for reminding me how the rampant abuse of nearly unreadable mathematical notation for things that can be easily expressed in concise natural language contributed to (voluntarily) shortening my academic career. But more seriously, it's interesting how this produces publications before actual implementations.

Closer to logic. There is a straightforward rewrite into prolog if you want a program. Or one of the proof assistants. The notation is abused though. Try looking up some of the work by Guy L. Steele in the recent years.

> Closer to logic. There is a straightforward rewrite into prolog if you want a program.

Journal papers usually don't get rewritten into Prolog or fed into proof assistants. They're read by human beings. I've long suspected (and colleagues used to "joke" about it) that excessive use of mathematical notation is just employed to impress and/or confuse peer reviewers into just accepting the paper instead of trying to comprehend it first.

Post reply on HN