> On Dec 2, 2017, at 6:02 PM, Xiaodi Wu via swift-evolution
> <[email protected]> wrote:
>
> Instead, we ought to make clear to users both the features and the
> limitations of this API, to encourage use where suitable and to discourage
> use where unsuitable.
I like that you're considering the balance here. I've been lightly following
this thread and want to add my thoughts on keeping crypto and pseudorandomness
out of the name of at least one random API intended for general use.
For someone who doesn't know or care about the subtleties of insecure or
pseudorandom numbers, I'm not sure that the name insecureRandom is effectively
much different than badRandom, at least in terms of the information it conveys
to non-experts. To Greg's point, that's the opposite of the signal that the API
name should suggest because it's what most people should use most of the time.
As you say, this API is being designed for general use.
There's a cost to adding extra complexity to names, too. I don't think it's
far-fetched to suspect that people who find insecureRandom in an autocomplete
listing or search will think "Where's the plain random function?"... and then
go looking for a community extension that will inevitably provide a trivial
alias: func random() { return insecureRandom() }. That's the sort of adoption
I'd expect from something for new programmers, like Swift Playgrounds.
Someone's introduction to randomness in programming should probably involve no
more than a straightforward mapping from the elementary definition, rather than
forcing a teaching moment from more advanced math.
I think there are better places for caveat information than in the API names
themselves; documentation being one clear destination. This is in contrast with
Unsafe*Pointer, where the safety element is critical enough to be elevated to
be more than caveat-level information. You can go really far and create really
cool things before these caveats start to apply. Using randomness as a black
box in an intro programming environment seems like a much more common scenario
than someone attempting to roll their first crypto by only reading API names
and hoping for the best.
-Kyle
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution