> What makes an API a second class citizen? If we expose both, and 99% of users ...

Which users count?  99% of programmers do half of the
programming work (*).  The rest do the other half (**).  To
inconvenience 99 out 100 programmers would be a grave error,
To inconvenience the 1% who do the hardest work is worse,
if those are the programmers you hope will use your language.

Most of the 99% won't use Rust under any circumstances; they
will stick with an easier language. The small fraction of the 99%
who do use Rust will, anyhow, amount to most of the Rust users.
The 1% code much like 99%ers when they can. The fraction of the
1% who pick up Rust for difficult work depends strongly on
whether Rust can do what they need, but also on whether enough
of  the 99% have adopted it.

The rule of thumb is "easy things should be easy, hard things should
be possible".  But is it hard because of the problem, or because of the
language? Making hard problems easier might be much of the purpose
of language design, but hard problems have a way of staying that way.
If you can keep easy things easy, and convert enough of what was
hard into something routine and maintainable, you have succeeded.
Too often you can't make it easier, so the best you can do is keep
out of the way.   The 1% might not thank you for a feature meant for
them when they actually need something else.

Most programs start out seeming easy to write in a convenient but
weak language. As they grow you discover the hard parts that may
need a stronger language.  A strong language needs to be (almost) as
convenient as a weak language so that it will be chosen for problems
that seem easy at first.

(*)  True story: Ellemtel had 500 engineers on a crash project, and at
its end half the code was written by one of them.

(**) I have read earnest assertions by influential 99%ers that the rest
don't actually exist.

Nathan Myers
[email protected]
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to