Em português há uma diferença diminuta de sentido entre "diferenciável" e "derivável" (na Análise Matemática mesmo), mas não recordo mais qual.
O inglês sendo o idioma mutante que é, talvez acabe absorvendo essa diferença de nomenclaturas dessa forma: derivable x differentiable.
That's a linguistic question, not a mathematics one.
In Portuguese there's a very small difference between "differentiable" and "derivable" (in the context of Math Analysis), but I don't recall it.
English being a mutable language, may end up absorbing the difference between nomenclatures in that way (??): derivable x differentiable.
Just using gradient based descent can not achieve much with non-convex functions.
Yes, while optimizing both might still be NP-hard (e.g. an ILP vs. an arbitrary polynomial, say, both of which are non-convex), we usually don't have nearly as much problem optimizing differentiable programs of the same size as some combinatorial optimization problems simply because the structure allowed by the differentiable one is so much nicer and we can find local minima without a problem (which is usually enough for most practical cases).
But most importantly, this can't be applied to arbitrary computer functions that you can't have a closed formula for.
Also finding a library that does optimization where I can pass a function pointer is usually easy to find in any language.
Maybe I'm wrong, but as far as I'm concerned, I'll never use that service.