points by Arjuna 8 years ago

This is the part... John discusses his functional programming adventures in Haskell at QuakeCon 2013.

"So what I set out to do was take the original Wolfenstein 3D, and re-implement it in Haskell."

[...]

"I've got a few conclusions coming from it. One of them is that, there's still the question about static vs dynamic. I know that there was a survey just coming out recently where the majority of programmers are still really not behind static typing. I know that there's the two orthogonal axes about whether types are strong or weak, and whether it's static or dynamic. I come down really pretty firmly, all my experience continues to push me towards this way, that strong, static typing has really significant benefits. Sometimes it's not comfortable, sometimes you have to build up a tight scaffolding to do something that should be really easy, but there are real, strong wins to it."

https://www.youtube.com/watch?v=Uooh0Y9fC_M#t=4876

(Starts at approximately 1:21:16 in case the direct link doesn't work correctly.)

meta_AU 8 years ago

Another great quote from that same talk is akong the lines of

"Any syntactically valid code, that the compiler will accept, will eventually make it into your code base."

AndrewOMartin 8 years ago

This is great when you're re-implementing Wolfenstein.

Not so much when you're doing exploratory computer science, or blue-sky prototyping. To build upon his analogy, scaffolding is most helpful when you have a reasonable knowledge of the shape of the building.

"It depends on the context" isn't exactly a shocking discovery however.

I love Carmack, love his presentation style, and when he talks from experience, I listen.

  • the_af 8 years ago

    > Not so much when you're doing exploratory computer science

    I'm not sure. The following experiment is outdated (I'd love to see it redone more rigorously and with modern languages) and has several methodology flaws, but "An Experiment In Software Prototyping Productivity" (1994, Paul Hudak et al) shows that Haskell and static types are actually great for rapid prototyping and exploratory programming, even in the face of vague or incomplete requirements. This runs contrary to common sense, which is why the experiment was fascinating.

hellofunk 8 years ago

Thanks very much for sharing this. Awesome.