Go rant

retard re at tard.com.invalid
Tue Dec 22 02:37:46 PST 2009


Tue, 22 Dec 2009 01:43:17 -0800, Walter Bright wrote:

> Daniel de Kok wrote:
>> I do not mind it, it's ok for explaining a concept clearly. Of course,
>> inadequacies should also be discussed. I'd argue that these are also
>> the thinking steps normally involved in designing a solution to a
>> problem: first try to solve it in the obvious way to understand the
>> problem. Then, make a more performant implementation. Of course,
>> performant also depends on the context. I have written a lot of C++
>> code that tries to squeeze the last bit of performance out of the
>> machine in a single-core world, but it is also difficult to
>> parallelize. In a parallel world, the 'slower' solution is sometimes
>> better.
> 
> One of the big problems with the presentations of the functional qsort
> is that it is presented as a shining success of FP, when it is anything
> but. There may be later a footnote or comment that it is not suitable,
> but those appear to be written as afterthoughts and do not clearly lay
> out what the problems are.

Well, in PL research community the terse functional quicksort code isn't 
considered that important. The focus is on completely different kinds of 
systems. I recommend forgetting the whole example for now. The badly 
performing one liner doesn't mean that all functional programming and all 
functional programming languages are toys when solving real world 
problems. There's more diversity in functional languages than in 
mainstream OOP hybrid languages. You can port the same badly performing 
code to D and get - surprise, surprise - badly performing qsort in D!

The discussion here mostly touts imperative languages with the same old 
centuries old arguments like "omg functional languages can't do in-place 
algorithms". "so you need hacks to implement in-place algorithms. that 
must mean that the elegance of fpl is in fact something that cannot be 
achieved in real world".

I've already repeated this many times: abstractions. Let's assume you 
have world class in-place implementation of sort in module 
stdlib.productionquality.collections and a shitty novice implementation 
of buggy bubble sort in stdlib.crappycrap.collections. Now the only 
difference on use site is:

  import sort from stdlib.productionquality.collections

  sort mycollection

vs

  import sort from stdlib.crappycrap.collections

  sort mycollection

Now how does this prove in any way that functional programming is ugly 
and broken. With a decent FFI implementation you can even import a C/C++/
D version of the sort function and use that in your functional code. This 
all works thanks to the universal C ABI. If that C/C++/D code doesn't 
break referential transparency, it means that the functional code also 
retains its reliability even if it calls imperative code.

> 
> Furthermore, an introductory FP programming text should be about how to
> write useful programs in FP, not about how sorting algorithms work.

So all the Haskell/Erlang/ML/Scheme books you've read have been really 
bad? That only means that there's market for good FPL books, then!



More information about the Digitalmars-d mailing list