[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MirageOS-devel] How to implement protocols?

many modularisation abstractions can be overused - either coz excess abstraction is done (there just aren't that many really different types/cases of use) or coz it turns into an efficiency killer (or both) - this showed up in a big open source router project called Xorp at berkeley where they made the dubious decision to use C++ - talk to people about the nightmare of coding conventions they ended up with - dunno if it was written up anywhere but people that tried re-purposing the code (a primary test of the appropriateness of an abstraction or modular decision) ended up re-writing it....oops (and I mean that most linguistically)

On Fri, Nov 13, 2015 at 3:22 PM, Hannes Mehnert <hannes@xxxxxxxxxxx> wrote:
On 11/13/2015 12:00, Daniel BÃnzli wrote:
> "Abstraction should be used where needed, keeping in mind that every abstraction is a burden on the reader of the program (e.g. yourself in 5 years)."
> WTF. Abstraction is what makes it easier to read and understand the program. That's precisely what I see missing from people doing system programming in OCaml. Lack of decomposition of your problem into well-defined denotational structures and functions. Lack of decomposition of the functions themselves into well defined and *named* subexpressions. etc.

I may have phrased it wrongly: my intention is that you shouldn't
abstract over all potential modules (such as IO), but rather provide a
simple interface (exposing intended actions).

I personally find the cohttp and TCP/IP code hard to read due to the use
of lots of functors / module abstractions, which are not necessarily
needed IMHO.

> Other than that the document feels like unstructured, poorly written [1], random rumblings.



MirageOS-devel mailing list

MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.