Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 29 Jul 2013 20:35:26 -0500
From: Strake <strake888@...il.com>
To: musl@...ts.openwall.com
Subject: Re: embedded newbies site.

On 29/07/2013, Rob Landley <rob@...dley.net> wrote:
>> Polymorphism: not need to rewrite essentially the same code for each
>> type.
>> Haskell wins at this, but is not quite a systems language (^_~)
>> C at least has void pointers, which work in some cases.
>
> C++ templates don't make you write the same code for each type, instead
> they generate code for each type bloating the executable tremendously
> and making you reverse engineer their code generation when a bug
> happens in the middle of it or you have to trace back through it to
> understand what the code actually did.
>
> Java has a similar failure where they use templates to punch holes in
> their type system and the result is your tools generate buckets of
> template code so one year old java projects with three developers with
> more than a million lines of code are not actually that unusual.
>
> The difinitive (long) Java takedown:
>    http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html

I doubt it not, but I said nil of C++ and Java in that segment.

>> Composability: write functions to do one thing well, and have them
>> call other functions, perhaps passed as arguments, to do other things,
>> or better yet, not do them at all. For example: "Damn, I wish I could
>> define my own comparator/reader/whatever function here!"

> C has had this from day 1 (it's why it has function pointers).

Oh, it's surely possible, but at times forgotten.
Too, (passing pointers, clearing errno, ...) to kludge over C's lack
of (tuples|multiple return values) can break this.

> Nobody ever needed a buzzword for it, because it's not special.

It's not special, but it may be noteworthy, particularly when teaching
or at least telling good practice, as we aim to here.

> unix has this at the command line level.

Yes, but some utilities fail at it. Sort, for example, has insanely
many flags, and nevertheless fails to cover common usage cases. If
rather sort worked thus:

$ sort comparator argu ...

where comparator is some program, and argu ... its arguments, it would
not need those flags.

>> Yes, so that particular library loses, but factorization wins.
>
> "factorization" is a word now?

Yep, modern English has Latin in it.

>> Ah yes, "engineer competence doubles every 18 months" (^_^)
>
> Sometimes the tools get better. But often they go down blind allies,
> and then refuse to back out of their cul-de-sac because they made
> _progress_ for a year or so before encountering the dead end, and they
> refuse to abandon all that work they've done on the properties of
> caloric fluid migrating through the ether.

And sometimes the engineers ignore the tools...

Cheers,
Strake

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.